@dropi/ui 0.1.50 → 0.1.52

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 (290) hide show
  1. package/dist/cjs/dropi-date-picker-range.cjs.entry.js +210 -31
  2. package/dist/cjs/dropi-date-picker.cjs.entry.js +140 -55
  3. package/dist/cjs/dropi-drawer.cjs.entry.js +2 -2
  4. package/dist/cjs/dropi-empty-state.cjs.entry.js +1 -1
  5. package/dist/cjs/dropi-favorite-button.cjs.entry.js +1 -1
  6. package/dist/cjs/dropi-file-upload-progress-bar.cjs.entry.js +1 -1
  7. package/dist/cjs/dropi-file-upload.cjs.entry.js +1 -1
  8. package/dist/cjs/dropi-image-miniature.cjs.entry.js +1 -1
  9. package/dist/cjs/dropi-input_3.cjs.entry.js +2 -2
  10. package/dist/cjs/dropi-logo.cjs.entry.js +1 -1
  11. package/dist/cjs/dropi-navbar.cjs.entry.js +2 -2
  12. package/dist/cjs/dropi-otp-send-code.cjs.entry.js +2 -2
  13. package/dist/cjs/dropi-phone-input.cjs.entry.js +2 -2
  14. package/dist/cjs/dropi-progress-bar.cjs.entry.js +1 -1
  15. package/dist/cjs/dropi-radio-button.cjs.entry.js +1 -1
  16. package/dist/cjs/dropi-read-more.cjs.entry.js +1 -1
  17. package/dist/cjs/dropi-select.cjs.entry.js +1 -1
  18. package/dist/cjs/dropi-switch.cjs.entry.js +1 -1
  19. package/dist/cjs/dropi-tag-type-product.cjs.entry.js +1 -1
  20. package/dist/cjs/dropi-tooltip.cjs.entry.js +1 -1
  21. package/dist/cjs/dropi-ui.cjs.js +1 -1
  22. package/dist/cjs/dropi-youtube-lazy-video.cjs.entry.js +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/collection/components/dropi-date-picker/dropi-date-picker.css +119 -72
  25. package/dist/collection/components/dropi-date-picker/dropi-date-picker.js +169 -62
  26. package/dist/collection/components/dropi-date-picker-range/dropi-date-picker-range.css +223 -81
  27. package/dist/collection/components/dropi-date-picker-range/dropi-date-picker-range.js +251 -37
  28. package/dist/collection/components/dropi-drawer/dropi-drawer.js +2 -2
  29. package/dist/collection/components/dropi-empty-state/dropi-empty-state.js +1 -1
  30. package/dist/collection/components/dropi-favorite-button/dropi-favorite-button.js +1 -1
  31. package/dist/collection/components/dropi-file-upload/dropi-file-upload.js +1 -1
  32. package/dist/collection/components/dropi-file-upload-progress-bar/dropi-file-upload-progress-bar.js +1 -1
  33. package/dist/collection/components/dropi-image-miniature/dropi-image-miniature.js +1 -1
  34. package/dist/collection/components/dropi-logo/dropi-logo.js +1 -1
  35. package/dist/collection/components/dropi-navbar/dropi-navbar.js +2 -2
  36. package/dist/collection/components/dropi-otp-send-code/dropi-otp-send-code.js +2 -2
  37. package/dist/collection/components/dropi-paginator/dropi-paginator.js +2 -2
  38. package/dist/collection/components/dropi-phone-input/dropi-phone-input.js +2 -2
  39. package/dist/collection/components/dropi-progress-bar/dropi-progress-bar.js +1 -1
  40. package/dist/collection/components/dropi-radio-button/dropi-radio-button.js +1 -1
  41. package/dist/collection/components/dropi-read-more/dropi-read-more.js +1 -1
  42. package/dist/collection/components/dropi-select/dropi-select.js +1 -1
  43. package/dist/collection/components/dropi-switch/dropi-switch.js +1 -1
  44. package/dist/collection/components/dropi-tag-type-product/dropi-tag-type-product.js +1 -1
  45. package/dist/collection/components/dropi-tooltip/dropi-tooltip.js +1 -1
  46. package/dist/collection/components/dropi-youtube-lazy-video/dropi-youtube-lazy-video.js +1 -1
  47. package/dist/components/dropi-card-section.js +1 -1
  48. package/dist/components/dropi-date-picker-range.js +1 -1
  49. package/dist/components/dropi-date-picker.js +1 -1
  50. package/dist/components/dropi-drawer.js +1 -1
  51. package/dist/components/dropi-empty-state.js +1 -1
  52. package/dist/components/dropi-favorite-button.js +1 -1
  53. package/dist/components/dropi-file-upload-progress-bar.js +1 -1
  54. package/dist/components/dropi-file-upload.js +1 -1
  55. package/dist/components/dropi-image-miniature.js +1 -1
  56. package/dist/components/dropi-logo.js +1 -1
  57. package/dist/components/dropi-navbar.js +1 -1
  58. package/dist/components/dropi-otp-send-code.js +1 -1
  59. package/dist/components/dropi-paginator.js +1 -1
  60. package/dist/components/dropi-phone-input.js +1 -1
  61. package/dist/components/dropi-progress-bar.js +1 -1
  62. package/dist/components/dropi-radio-button.js +1 -1
  63. package/dist/components/dropi-read-more.js +1 -1
  64. package/dist/components/dropi-select.js +1 -1
  65. package/dist/components/dropi-switch.js +1 -1
  66. package/dist/components/dropi-table.js +1 -1
  67. package/dist/components/dropi-tag-type-product.js +1 -1
  68. package/dist/components/dropi-tooltip.js +1 -1
  69. package/dist/components/dropi-youtube-lazy-video.js +1 -1
  70. package/dist/components/p-34gP610W.js +1 -0
  71. package/dist/components/p-BfQEGsBq.js +1 -0
  72. package/dist/components/p-BieZ2Zwa.js +1 -0
  73. package/dist/components/p-Ckpdx21D.js +1 -0
  74. package/dist/components/p-CqTImUhL.js +1 -0
  75. package/dist/components/p-D76mTEoh.js +1 -0
  76. package/dist/components/p-DdM0zO53.js +1 -0
  77. package/dist/components/p-eusoHxve.js +1 -0
  78. package/dist/docs.json +93 -18
  79. package/dist/dropi-ui/dropi-accordion-item.entry.js +1 -1
  80. package/dist/dropi-ui/dropi-accordion.entry.js +1 -1
  81. package/dist/dropi-ui/dropi-alert-legacy.entry.js +1 -1
  82. package/dist/dropi-ui/dropi-alert-modal.entry.js +15 -9
  83. package/dist/dropi-ui/dropi-alert-modal.entry.js.map +1 -1
  84. package/dist/dropi-ui/dropi-alert.entry.js +1 -1
  85. package/dist/dropi-ui/dropi-avatars.entry.js +1 -1
  86. package/dist/dropi-ui/dropi-badge-legacy.entry.js +1 -1
  87. package/dist/dropi-ui/dropi-badge.entry.js +1 -1
  88. package/dist/dropi-ui/dropi-banner-external.entry.js +1 -1
  89. package/dist/dropi-ui/dropi-breadcrumb.entry.js +1 -1
  90. package/dist/dropi-ui/dropi-button.entry.js +1 -1
  91. package/dist/dropi-ui/dropi-card-checkbox.entry.js +2 -2
  92. package/dist/dropi-ui/dropi-card-checkbox.entry.js.map +1 -1
  93. package/dist/dropi-ui/dropi-card-product.entry.js +1 -1
  94. package/dist/dropi-ui/dropi-card-section.entry.js +2 -2
  95. package/dist/dropi-ui/dropi-card-section.entry.js.map +1 -1
  96. package/dist/dropi-ui/dropi-carousel.entry.js +1 -1
  97. package/dist/dropi-ui/dropi-checkbox-selection-list.entry.js +2 -2
  98. package/dist/dropi-ui/dropi-checkbox-selection-list.entry.js.map +1 -1
  99. package/dist/dropi-ui/dropi-checkbox.entry.js +4 -4
  100. package/dist/dropi-ui/dropi-checkbox.entry.js.map +1 -1
  101. package/dist/dropi-ui/dropi-chips.entry.js +1 -1
  102. package/dist/dropi-ui/dropi-city-selector.entry.js +1 -1
  103. package/dist/dropi-ui/dropi-color-picker.entry.js +1 -1
  104. package/dist/dropi-ui/dropi-country-flags.entry.js +1 -1
  105. package/dist/dropi-ui/dropi-country-selector.entry.js +4 -4
  106. package/dist/dropi-ui/dropi-country-selector.entry.js.map +1 -1
  107. package/dist/dropi-ui/dropi-date-picker-range.entry.js +211 -32
  108. package/dist/dropi-ui/dropi-date-picker-range.entry.js.map +1 -1
  109. package/dist/dropi-ui/dropi-date-picker.entry.js +104 -57
  110. package/dist/dropi-ui/dropi-date-picker.entry.js.map +1 -1
  111. package/dist/dropi-ui/dropi-drawer.entry.js +3 -3
  112. package/dist/dropi-ui/dropi-dropdown.entry.js +2 -2
  113. package/dist/dropi-ui/dropi-dropdown.entry.js.map +1 -1
  114. package/dist/dropi-ui/dropi-empty-state.entry.js +88 -11
  115. package/dist/dropi-ui/dropi-empty-state.entry.js.map +1 -1
  116. package/dist/dropi-ui/dropi-favorite-button.entry.js +2 -2
  117. package/dist/dropi-ui/dropi-file-upload-progress-bar.entry.js +2 -2
  118. package/dist/dropi-ui/dropi-file-upload.entry.js +2 -2
  119. package/dist/dropi-ui/dropi-icon.entry.js +295 -24
  120. package/dist/dropi-ui/dropi-icon.entry.js.map +1 -1
  121. package/dist/dropi-ui/dropi-ilustration-icon.entry.js +11 -7
  122. package/dist/dropi-ui/dropi-ilustration-icon.entry.js.map +1 -1
  123. package/dist/dropi-ui/dropi-image-miniature.entry.js +2 -2
  124. package/dist/dropi-ui/dropi-image-overlay.entry.js +1 -1
  125. package/dist/dropi-ui/dropi-input.entry.js +8 -6
  126. package/dist/dropi-ui/dropi-input.entry.js.map +1 -1
  127. package/dist/dropi-ui/dropi-languages-selector.entry.js +1 -1
  128. package/dist/dropi-ui/dropi-logo.entry.js +2 -2
  129. package/dist/dropi-ui/dropi-lottie-loader.entry.js +2 -2
  130. package/dist/dropi-ui/dropi-lottie-loader.entry.js.map +1 -1
  131. package/dist/dropi-ui/dropi-media-player.entry.js +1 -1
  132. package/dist/dropi-ui/dropi-modal.entry.js +1 -1
  133. package/dist/dropi-ui/dropi-navbar.entry.js +3 -3
  134. package/dist/dropi-ui/dropi-otp-send-code.entry.js +4 -4
  135. package/dist/dropi-ui/dropi-otp-send-code.entry.js.map +1 -1
  136. package/dist/dropi-ui/dropi-paginator.entry.js +3 -3
  137. package/dist/dropi-ui/dropi-phone-input.entry.js +4 -4
  138. package/dist/dropi-ui/dropi-phone-input.entry.js.map +1 -1
  139. package/dist/dropi-ui/dropi-progress-bar.entry.js +2 -2
  140. package/dist/dropi-ui/dropi-radio-button.entry.js +4 -4
  141. package/dist/dropi-ui/dropi-radio-button.entry.js.map +1 -1
  142. package/dist/dropi-ui/dropi-radio-selection-list.entry.js +1 -1
  143. package/dist/dropi-ui/dropi-read-more.entry.js +2 -2
  144. package/dist/dropi-ui/dropi-search.entry.js +2 -2
  145. package/dist/dropi-ui/dropi-search.entry.js.map +1 -1
  146. package/dist/dropi-ui/dropi-select.entry.js +3 -3
  147. package/dist/dropi-ui/dropi-select.entry.js.map +1 -1
  148. package/dist/dropi-ui/dropi-sidebar.entry.js +1 -1
  149. package/dist/dropi-ui/dropi-simple-stepper.entry.js +1 -1
  150. package/dist/dropi-ui/dropi-skeleton.entry.js +1 -1
  151. package/dist/dropi-ui/dropi-steps.entry.js +1 -1
  152. package/dist/dropi-ui/dropi-switch.entry.js +3 -3
  153. package/dist/dropi-ui/dropi-switch.entry.js.map +1 -1
  154. package/dist/dropi-ui/dropi-table.entry.js +4 -4
  155. package/dist/dropi-ui/dropi-table.entry.js.map +1 -1
  156. package/dist/dropi-ui/dropi-tabs.entry.js +1 -1
  157. package/dist/dropi-ui/dropi-tag-type-product.entry.js +2 -2
  158. package/dist/dropi-ui/dropi-tag.entry.js +1 -1
  159. package/dist/dropi-ui/dropi-text-area.entry.js +8 -8
  160. package/dist/dropi-ui/dropi-text-area.entry.js.map +1 -1
  161. package/dist/dropi-ui/dropi-time-line.entry.js +1 -1
  162. package/dist/dropi-ui/dropi-toast.entry.js +1 -1
  163. package/dist/dropi-ui/dropi-tooltip-v2.entry.js +1 -1
  164. package/dist/dropi-ui/dropi-tooltip.entry.js +2 -2
  165. package/dist/dropi-ui/dropi-ui.esm.js +1 -1
  166. package/dist/dropi-ui/dropi-ui.esm.js.map +1 -1
  167. package/dist/dropi-ui/dropi-vertical-steps.entry.js +1 -1
  168. package/dist/dropi-ui/dropi-youtube-lazy-video.entry.js +2 -2
  169. package/dist/dropi-ui/index-CPacpXAJ.js +4625 -0
  170. package/dist/dropi-ui/index-CPacpXAJ.js.map +1 -0
  171. package/dist/dropi-ui/p-0190a96b.entry.js +1 -0
  172. package/dist/dropi-ui/p-02e0f8cc.entry.js +1 -0
  173. package/dist/dropi-ui/p-0551c30a.entry.js +1 -0
  174. package/dist/dropi-ui/p-05541247.entry.js +1 -0
  175. package/dist/dropi-ui/p-07cc280c.entry.js +1 -0
  176. package/dist/dropi-ui/p-094ab555.entry.js +1 -0
  177. package/dist/dropi-ui/p-0d3cabe9.entry.js +1 -0
  178. package/dist/dropi-ui/p-0d8ff50d.entry.js +1 -0
  179. package/dist/dropi-ui/p-11833072.entry.js +1 -0
  180. package/dist/dropi-ui/p-119a353b.entry.js +1 -0
  181. package/dist/dropi-ui/p-13ae29ad.entry.js +1 -0
  182. package/dist/dropi-ui/p-149c92ba.entry.js +1 -0
  183. package/dist/dropi-ui/p-17133bc1.entry.js +1 -0
  184. package/dist/dropi-ui/p-181b2d76.entry.js +1 -0
  185. package/dist/dropi-ui/p-1976985d.entry.js +1 -0
  186. package/dist/dropi-ui/p-1a874d9f.entry.js +1 -0
  187. package/dist/dropi-ui/p-1cc30188.entry.js +1 -0
  188. package/dist/dropi-ui/p-267fda26.entry.js +1 -0
  189. package/dist/dropi-ui/p-26c997a4.entry.js +1 -0
  190. package/dist/dropi-ui/p-280c5731.entry.js +1 -0
  191. package/dist/dropi-ui/p-287a3a81.entry.js +1 -0
  192. package/dist/dropi-ui/p-29e4dacf.entry.js +1 -0
  193. package/dist/dropi-ui/p-2af47f62.entry.js +1 -0
  194. package/dist/dropi-ui/p-2d1a6f05.entry.js +1 -0
  195. package/dist/dropi-ui/p-2f6b96de.entry.js +1 -0
  196. package/dist/dropi-ui/p-32512758.entry.js +1 -0
  197. package/dist/dropi-ui/p-32c71a16.entry.js +1 -0
  198. package/dist/dropi-ui/p-34f2e28d.entry.js +1 -0
  199. package/dist/dropi-ui/p-3769ad78.entry.js +1 -0
  200. package/dist/dropi-ui/p-3a9cd930.entry.js +1 -0
  201. package/dist/dropi-ui/p-3b1bb32e.entry.js +1 -0
  202. package/dist/dropi-ui/p-4390c849.entry.js +1 -0
  203. package/dist/dropi-ui/p-492f9d36.entry.js +1 -0
  204. package/dist/dropi-ui/p-4f498d26.entry.js +1 -0
  205. package/dist/dropi-ui/p-4f4b4a39.entry.js +1 -0
  206. package/dist/dropi-ui/p-51a44cdc.entry.js +1 -0
  207. package/dist/dropi-ui/p-59caf3ac.entry.js +1 -0
  208. package/dist/dropi-ui/p-5e0b54e3.entry.js +1 -0
  209. package/dist/dropi-ui/p-63356807.entry.js +1 -0
  210. package/dist/dropi-ui/p-64dd3db0.entry.js +1 -0
  211. package/dist/dropi-ui/p-65e31926.entry.js +1 -0
  212. package/dist/dropi-ui/p-66cf3dbe.entry.js +1 -0
  213. package/dist/dropi-ui/p-6a6171ba.entry.js +1 -0
  214. package/dist/dropi-ui/p-6aaf5a93.entry.js +1 -0
  215. package/dist/dropi-ui/p-6d9b61a9.entry.js +1 -0
  216. package/dist/dropi-ui/p-71ad00c8.entry.js +1 -0
  217. package/dist/dropi-ui/p-788b7388.entry.js +1 -0
  218. package/dist/dropi-ui/p-7a78e38d.entry.js +1 -0
  219. package/dist/dropi-ui/p-7a9628df.entry.js +1 -0
  220. package/dist/dropi-ui/p-7be214a0.entry.js +1 -0
  221. package/dist/dropi-ui/p-7ce74f7f.entry.js +1 -0
  222. package/dist/dropi-ui/p-7e0783d3.entry.js +1 -0
  223. package/dist/dropi-ui/p-7f6f757b.entry.js +1 -0
  224. package/dist/dropi-ui/p-7f85578a.entry.js +1 -0
  225. package/dist/dropi-ui/p-81e8b29e.entry.js +1 -0
  226. package/dist/dropi-ui/p-83fa5e18.entry.js +1 -0
  227. package/dist/dropi-ui/p-870846af.entry.js +1 -0
  228. package/dist/dropi-ui/p-87167578.entry.js +1 -0
  229. package/dist/dropi-ui/p-8adb80a4.entry.js +1 -0
  230. package/dist/dropi-ui/p-92879d0d.entry.js +1 -0
  231. package/dist/dropi-ui/p-964ba5de.entry.js +1 -0
  232. package/dist/dropi-ui/p-97de6718.entry.js +1 -0
  233. package/dist/dropi-ui/p-9b7810f9.entry.js +1 -0
  234. package/dist/dropi-ui/p-9bfd53be.entry.js +1 -0
  235. package/dist/dropi-ui/p-9c9c6274.entry.js +1 -0
  236. package/dist/dropi-ui/p-a0a87272.entry.js +1 -0
  237. package/dist/dropi-ui/p-a1471797.entry.js +1 -0
  238. package/dist/dropi-ui/p-a469a6d4.entry.js +1 -0
  239. package/dist/dropi-ui/p-ad7ea336.entry.js +1 -0
  240. package/dist/dropi-ui/p-b063716d.entry.js +1 -0
  241. package/dist/dropi-ui/p-b4e9dba6.entry.js +1 -0
  242. package/dist/dropi-ui/p-b66d88bf.entry.js +1 -0
  243. package/dist/dropi-ui/p-b801e55f.entry.js +1 -0
  244. package/dist/dropi-ui/p-bb6b09b7.entry.js +1 -0
  245. package/dist/dropi-ui/p-c6c40748.entry.js +1 -0
  246. package/dist/dropi-ui/p-c72650a6.entry.js +1 -0
  247. package/dist/dropi-ui/p-d104c97d.entry.js +1 -0
  248. package/dist/dropi-ui/p-d6ab011e.entry.js +1 -0
  249. package/dist/dropi-ui/p-d7d7b98b.entry.js +1 -0
  250. package/dist/dropi-ui/p-d9f7e521.entry.js +1 -0
  251. package/dist/dropi-ui/p-e0641dc8.entry.js +1 -0
  252. package/dist/dropi-ui/p-e0d43ef4.entry.js +1 -0
  253. package/dist/dropi-ui/p-e2413d09.entry.js +1 -0
  254. package/dist/dropi-ui/p-e3339048.entry.js +1 -0
  255. package/dist/dropi-ui/p-eac3194d.entry.js +1 -0
  256. package/dist/dropi-ui/p-eed4f130.entry.js +1 -0
  257. package/dist/dropi-ui/p-f03f0bf3.entry.js +1 -0
  258. package/dist/dropi-ui/p-f1457004.entry.js +1 -0
  259. package/dist/dropi-ui/p-f50b982c.entry.js +1 -0
  260. package/dist/dropi-ui/p-f87589c0.entry.js +1 -0
  261. package/dist/dropi-ui/p-fce82770.entry.js +1 -0
  262. package/dist/esm/dropi-date-picker-range.entry.js +211 -32
  263. package/dist/esm/dropi-date-picker.entry.js +140 -55
  264. package/dist/esm/dropi-drawer.entry.js +2 -2
  265. package/dist/esm/dropi-empty-state.entry.js +1 -1
  266. package/dist/esm/dropi-favorite-button.entry.js +1 -1
  267. package/dist/esm/dropi-file-upload-progress-bar.entry.js +1 -1
  268. package/dist/esm/dropi-file-upload.entry.js +1 -1
  269. package/dist/esm/dropi-image-miniature.entry.js +1 -1
  270. package/dist/esm/dropi-input_3.entry.js +2 -2
  271. package/dist/esm/dropi-logo.entry.js +1 -1
  272. package/dist/esm/dropi-navbar.entry.js +2 -2
  273. package/dist/esm/dropi-otp-send-code.entry.js +2 -2
  274. package/dist/esm/dropi-phone-input.entry.js +2 -2
  275. package/dist/esm/dropi-progress-bar.entry.js +1 -1
  276. package/dist/esm/dropi-radio-button.entry.js +1 -1
  277. package/dist/esm/dropi-read-more.entry.js +1 -1
  278. package/dist/esm/dropi-select.entry.js +1 -1
  279. package/dist/esm/dropi-switch.entry.js +1 -1
  280. package/dist/esm/dropi-tag-type-product.entry.js +1 -1
  281. package/dist/esm/dropi-tooltip.entry.js +1 -1
  282. package/dist/esm/dropi-ui.js +1 -1
  283. package/dist/esm/dropi-youtube-lazy-video.entry.js +1 -1
  284. package/dist/esm/loader.js +1 -1
  285. package/dist/types/components/dropi-date-picker/dropi-date-picker.d.ts +22 -9
  286. package/dist/types/components/dropi-date-picker-range/dropi-date-picker-range.d.ts +27 -8
  287. package/dist/types/components.d.ts +40 -36
  288. package/hydrate/index.js +390 -117
  289. package/hydrate/index.mjs +390 -117
  290. package/package.json +1 -1
@@ -2,8 +2,14 @@
2
2
 
3
3
  var index = require('./index-DKMSaf7l.js');
4
4
 
5
- const dropiDatePickerRangeCss = () => `:host{display:block;width:100%;max-width:380px}*,*::before,*::after{box-sizing:border-box}.date-picker-range{width:100%;font-family:inherit}.label{font-size:11px;font-weight:var(--font-weight-medium);color:#7b8190;margin-bottom:8px}.inputs-row{display:flex;align-items:flex-end;gap:8px}.input-group{flex:1;display:flex;flex-direction:column;gap:4px}.input-label{font-size:var(--font-size-xs, 11px);color:var(--Gray-Gray-500, #69738c);font-weight:var(--font-weight-medium, 500)}.date-input{width:100%;height:40px;padding:0 10px;border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-2, 8px);background:var(--Neutral-White, #ffffff);color:var(--Gray-Gray-600, #475066);font-size:13px;font-family:inherit;outline:none;cursor:pointer;transition:border-color 0.15s ease}.date-input:focus{border-color:var(--Primary-Primary-500, #f49a3d)}.separator{padding-bottom:8px;color:var(--Gray-Gray-400, #858ea6);font-size:var(--font-size-m)}.shortcuts{display:flex;flex-direction:column;gap:2px;margin-top:10px;border-left:1px solid var(--Gray-Gray-100, #e6eaf2);padding-left:10px}.shortcut-btn{background:transparent;border:none;padding:4px 6px;font-size:13px;font-family:inherit;color:var(--Gray-Gray-700, #32394d);cursor:pointer;text-align:left;border-radius:5px;transition:background 0.1s ease;font-weight:var(--font-weight-regular)}.shortcut-btn:hover{background:var(--Gray-Gray-50, #f5f6f8)}.shortcut-btn.active{background:var(--Gray-Gray-50, #f5f6f8);font-weight:var(--font-weight-semibold)}.warning-box{margin-top:8px;padding:4px 8px;border:1px solid var(--Warning-Warning-400);border-radius:4px;background:var(--Warning-Warning-50)}.warning-message{color:#495057;font-size:var(--font-size-xxs);line-height:16px}@keyframes shimmer{0%{background-position:-468px 0}100%{background-position:468px 0}}.skeleton{height:40px;width:100%;min-width:180px;border-radius:6px;animation:shimmer 1s linear infinite;background:linear-gradient(to right, #f5f6f8 8%, #e3e7ef 28%, #f5f6f8 77%);background-size:800px 104px}@media screen and (max-width: 480px){.inputs-row{flex-direction:column}.separator{display:none}.shortcuts{flex-direction:row;flex-wrap:wrap;border-left:none;padding-left:0;border-top:1px solid var(--Gray-Gray-100, #e6eaf2);padding-top:8px}}`;
5
+ const dropiDatePickerRangeCss = () => `:host{display:block;width:100%;position:relative}*,*::before,*::after{box-sizing:border-box}.dpr-label{display:block;font-size:var(--font-size-xs, 10px);font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-600, #475066);margin-bottom:8px}.dpr-trigger{width:100%;height:40px;display:flex;align-items:center;gap:var(--Size-2, 8px);padding:0 var(--Size-3, 12px);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-2, 8px);background:var(--Neutral-White, #ffffff);cursor:pointer;font-family:inherit;transition:border-color 0.2s}.dpr-trigger:hover:not(:disabled){border-color:var(--Info-Info-500, #50a5f1)}.dpr-trigger--disabled{background:var(--Gray-Gray-50, #f7f8fa);cursor:not-allowed;opacity:0.6}.dpr-trigger__value{flex:1;text-align:left;font-size:var(--font-size-xs, 12px);color:var(--Gray-Gray-700, #32394d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dpr-trigger__placeholder{color:var(--Gray-Gray-400, #858ea6)}.dpr-popup{position:absolute;top:calc(100% + 8px);left:0;display:flex;flex-direction:row;background:var(--Neutral-White, #ffffff);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-3, 12px);box-shadow:0 4px 16px rgba(0,0,0,0.08);z-index:300;overflow:hidden}.dpr-calendar{padding:var(--Size-4, 16px);width:300px;flex-shrink:0}.dpr-divider{width:1px;background:var(--Gray-Gray-100, #e6eaf2);flex-shrink:0}.dpr-shortcuts{padding:var(--Size-4, 16px) var(--Size-3, 12px);display:flex;flex-direction:column;gap:2px;min-width:140px}.shortcut-btn{background:transparent;border:1px solid transparent;padding:6px 10px;font-size:13px;font-family:inherit;color:var(--Gray-Gray-700, #32394d);cursor:pointer;text-align:left;border-radius:6px;transition:background 0.1s ease;font-weight:var(--font-weight-regular);white-space:nowrap}.shortcut-btn:hover{background:var(--Gray-Gray-50, #f5f6f8)}.shortcut-btn--active{border-color:var(--Gray-Gray-200, #c3c9d9);font-weight:var(--font-weight-semibold);background:var(--Gray-Gray-50, #f5f6f8)}.warning-box{margin-top:8px;padding:4px 8px;border:1px solid var(--Warning-Warning-400);border-radius:4px;background:var(--Warning-Warning-50)}.warning-message{color:#495057;font-size:var(--font-size-xxs);line-height:16px}.dp-month-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:8px}.dp-month-cell{padding:10px 4px;font-size:var(--font-size-s, 14px);font-family:inherit;font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-700, #32394d);background:transparent;border:1px solid transparent;border-radius:var(--Border-2, 8px);cursor:pointer;text-align:center;transition:background 0.15s, border-color 0.15s}.dp-month-cell:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-month-cell--selected{border-color:var(--Info-Info-500, #50a5f1);font-weight:var(--font-weight-semibold, 600)}.dp-month-cell--current{background:var(--Gray-Gray-100, #e6eaf2)}.dp-year-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:8px}.dp-year-cell{padding:10px 4px;font-size:var(--font-size-s, 14px);font-family:inherit;font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-700, #32394d);background:transparent;border:1px solid transparent;border-radius:var(--Border-2, 8px);cursor:pointer;text-align:center;transition:background 0.15s, border-color 0.15s}.dp-year-cell:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-year-cell--selected{border-color:var(--Info-Info-500, #50a5f1);font-weight:var(--font-weight-semibold, 600)}.dp-year-cell--current{background:var(--Gray-Gray-100, #e6eaf2)}.dp-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--Size-4, 16px);padding-bottom:var(--Size-3, 12px);border-bottom:1px solid var(--Gray-Gray-100, #e6eaf2)}.dp-nav__btn{background:none;border:none;padding:0;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background 0.15s}.dp-nav__btn:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-nav__title{background:none;border:none;font-size:var(--font-size-s, 14px);font-weight:var(--font-weight-bold, 700);color:var(--Gray-Gray-700, #32394d);display:flex;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--Border-1, 4px);font-family:inherit;transition:background 0.15s}.dp-nav__title:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-grid{display:grid;grid-template-columns:repeat(7, 1fr);row-gap:6px;column-gap:2px}.dp-day-header{font-size:var(--font-size-s, 14px);color:var(--Gray-Gray-700, #32394d);text-align:center;padding:6px 0;font-weight:var(--font-weight-bold, 700)}.dp-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs, 12px);font-family:inherit;border:none;cursor:pointer;background:transparent;color:var(--Gray-Gray-600, #475066);width:100%;position:relative;z-index:1;padding:0}.dp-cell::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;transition:background 0.15s;z-index:-1;background:transparent}.dp-cell::before{content:"";position:absolute;top:0;bottom:0;z-index:-2;background:transparent}.dp-cell:hover:not(:disabled)::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--other-month{color:var(--Gray-Gray-300, #a0a9c0)}.dp-cell--today{font-weight:var(--font-weight-bold, 700)}.dp-cell--today::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--selected{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--selected::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--range-start,.dp-cell--range-end{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--range-start::after,.dp-cell--range-end::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--in-range{color:var(--Orange-orange-500, #f49a3d);font-weight:var(--font-weight-bold, 700)}.dp-cell--in-range::before{left:-1px;right:-1px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start::before{left:50%;right:-1px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-end::before{left:-1px;right:50%;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start.dp-cell--range-end::before{background:transparent}.dp-cell--disabled{opacity:0.35;cursor:not-allowed}@keyframes shimmer{0%{background-position:-468px 0}100%{background-position:468px 0}}.skeleton{height:40px;width:100%;border-radius:8px;animation:shimmer 1s linear infinite;background:linear-gradient(to right, #f5f6f8 8%, #e3e7ef 28%, #f5f6f8 77%);background-size:800px 104px}`;
6
6
 
7
+ const MONTHS_ES = [
8
+ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
9
+ 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre',
10
+ ];
11
+ const MONTHS_SHORT = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
12
+ const DAYS_ES = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
7
13
  const DropiDatePickerRange = class {
8
14
  constructor(hostRef) {
9
15
  index.registerInstance(this, hostRef);
@@ -18,25 +24,35 @@ const DropiDatePickerRange = class {
18
24
  /** Show "Rango de fechas" label */
19
25
  showLabel = true;
20
26
  /** Input placeholder */
21
- placeholder = '';
27
+ placeholder = 'DD/MM/YYYY – DD/MM/YYYY';
22
28
  /** Show loading skeleton */
23
29
  loading = false;
24
30
  /** Max allowed range in days (0 = unlimited) */
25
31
  maxDaysRange = 0;
26
32
  /** Hide "Hoy" shortcut */
27
33
  hideTodayRangeShortcut = false;
28
- /** Emitted when start date changes */
34
+ /** Disabled state */
35
+ disabled = false;
29
36
  startDateChange;
30
- /** Emitted when end date changes */
31
37
  endDateChange;
32
- /** Emitted with full range when both dates are set */
33
38
  dropiRangeChange;
34
39
  start = '';
35
40
  end = '';
36
41
  activeRange = -1;
37
42
  showWarning = false;
43
+ open = false;
44
+ viewYear = new Date().getFullYear();
45
+ viewMonth = new Date().getMonth();
46
+ hoverDate = '';
47
+ viewMode = 'day';
48
+ get el() { return index.getElement(this); }
38
49
  onStartPropChange(val) { this.start = val; }
39
50
  onEndPropChange(val) { this.end = val; }
51
+ handleDocClick(e) {
52
+ if (this.open && !e.composedPath().includes(this.el)) {
53
+ this.open = false;
54
+ }
55
+ }
40
56
  componentWillLoad() {
41
57
  this.start = this.startDate;
42
58
  this.end = this.endDate;
@@ -59,47 +75,210 @@ const DropiDatePickerRange = class {
59
75
  ];
60
76
  return this.hideTodayRangeShortcut ? all.slice(1) : all;
61
77
  }
62
- selectShortcut(idx) {
63
- const s = this.shortcuts[idx];
64
- this.start = s.start;
65
- this.end = s.end;
66
- this.activeRange = idx;
67
- this.showWarning = false;
68
- this.emit();
69
- }
70
- onStartChange(e) {
71
- this.start = e.target.value;
72
- this.activeRange = -1;
73
- this.checkRange();
78
+ get displayValue() {
79
+ const fmt = (s) => s.split('-').reverse().join('/');
74
80
  if (this.start && this.end)
75
- this.emit();
81
+ return `${fmt(this.start)} – ${fmt(this.end)}`;
82
+ if (this.start)
83
+ return fmt(this.start);
84
+ return '';
76
85
  }
77
- onEndChange(e) {
78
- this.end = e.target.value;
79
- this.activeRange = -1;
80
- this.checkRange();
81
- if (this.start && this.end)
82
- this.emit();
86
+ toggleOpen() {
87
+ if (this.disabled)
88
+ return;
89
+ if (!this.open && this.start) {
90
+ const d = new Date(this.start);
91
+ this.viewYear = d.getFullYear();
92
+ this.viewMonth = d.getMonth();
93
+ }
94
+ this.viewMode = 'day';
95
+ this.open = !this.open;
96
+ }
97
+ get decadeStart() {
98
+ return Math.floor(this.viewYear / 10) * 10;
99
+ }
100
+ get navTitle() {
101
+ if (this.viewMode === 'day')
102
+ return `${MONTHS_ES[this.viewMonth]} ${this.viewYear}`;
103
+ if (this.viewMode === 'month')
104
+ return `${this.viewYear}`;
105
+ return `${this.decadeStart}-${this.decadeStart + 9}`;
106
+ }
107
+ cycleView() {
108
+ if (this.viewMode === 'day')
109
+ this.viewMode = 'month';
110
+ else if (this.viewMode === 'month')
111
+ this.viewMode = 'year';
112
+ }
113
+ prevNav() {
114
+ if (this.viewMode === 'day') {
115
+ if (this.viewMonth === 0) {
116
+ this.viewMonth = 11;
117
+ this.viewYear--;
118
+ }
119
+ else
120
+ this.viewMonth--;
121
+ }
122
+ else if (this.viewMode === 'month') {
123
+ this.viewYear--;
124
+ }
125
+ else {
126
+ this.viewYear = this.decadeStart - 10;
127
+ }
83
128
  }
84
- checkRange() {
85
- if (this.start && this.end && this.maxDaysRange > 0) {
86
- const diff = (new Date(this.end).getTime() - new Date(this.start).getTime()) / 86400000;
87
- this.showWarning = diff > this.maxDaysRange;
129
+ nextNav() {
130
+ if (this.viewMode === 'day') {
131
+ if (this.viewMonth === 11) {
132
+ this.viewMonth = 0;
133
+ this.viewYear++;
134
+ }
135
+ else
136
+ this.viewMonth++;
137
+ }
138
+ else if (this.viewMode === 'month') {
139
+ this.viewYear++;
88
140
  }
89
141
  else {
142
+ this.viewYear = this.decadeStart + 10;
143
+ }
144
+ }
145
+ selectMonth(month) {
146
+ this.viewMonth = month;
147
+ this.viewMode = 'day';
148
+ }
149
+ selectYear(year) {
150
+ this.viewYear = year;
151
+ this.viewMode = 'month';
152
+ }
153
+ toISO(year, month, day) {
154
+ return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
155
+ }
156
+ isInRange(iso) {
157
+ const end = this.end || this.hoverDate;
158
+ if (!this.start || !end)
159
+ return false;
160
+ const [s, e] = this.start <= end ? [this.start, end] : [end, this.start];
161
+ return iso > s && iso < e;
162
+ }
163
+ selectDate(iso) {
164
+ if (!this.start || (this.start && this.end)) {
165
+ this.start = iso;
166
+ this.end = '';
167
+ this.activeRange = -1;
90
168
  this.showWarning = false;
91
169
  }
170
+ else {
171
+ if (iso < this.start) {
172
+ this.end = this.start;
173
+ this.start = iso;
174
+ }
175
+ else {
176
+ this.end = iso;
177
+ }
178
+ this.activeRange = -1;
179
+ if (this.maxDaysRange > 0) {
180
+ const diff = (new Date(this.end).getTime() - new Date(this.start).getTime()) / 86400000;
181
+ this.showWarning = diff > this.maxDaysRange;
182
+ if (this.showWarning)
183
+ return;
184
+ }
185
+ this.open = false;
186
+ this.emit();
187
+ }
188
+ }
189
+ selectShortcut(idx) {
190
+ const s = this.shortcuts[idx];
191
+ this.start = s.start;
192
+ this.end = s.end;
193
+ this.activeRange = idx;
194
+ this.showWarning = false;
195
+ this.open = false;
196
+ this.emit();
92
197
  }
93
198
  emit() {
94
199
  this.startDateChange.emit(this.start);
95
200
  this.endDateChange.emit(this.end);
96
201
  this.dropiRangeChange.emit({ start: this.start, end: this.end });
97
202
  }
203
+ buildDays() {
204
+ const year = this.viewYear;
205
+ const month = this.viewMonth;
206
+ const firstDay = new Date(year, month, 1).getDay();
207
+ const daysInMonth = new Date(year, month + 1, 0).getDate();
208
+ const daysInPrevMonth = new Date(year, month, 0).getDate();
209
+ const cells = [];
210
+ for (let i = firstDay - 1; i >= 0; i--) {
211
+ const d = daysInPrevMonth - i;
212
+ const m = month === 0 ? 11 : month - 1;
213
+ const y = month === 0 ? year - 1 : year;
214
+ cells.push({ iso: this.toISO(y, m, d), day: d, currentMonth: false });
215
+ }
216
+ for (let d = 1; d <= daysInMonth; d++) {
217
+ cells.push({ iso: this.toISO(year, month, d), day: d, currentMonth: true });
218
+ }
219
+ const remaining = 42 - cells.length;
220
+ for (let d = 1; d <= remaining; d++) {
221
+ const m = month === 11 ? 0 : month + 1;
222
+ const y = month === 11 ? year + 1 : year;
223
+ cells.push({ iso: this.toISO(y, m, d), day: d, currentMonth: false });
224
+ }
225
+ return cells;
226
+ }
227
+ renderDayView(today) {
228
+ const days = this.buildDays();
229
+ return (index.h("div", { class: "dp-grid" }, DAYS_ES.map(d => index.h("div", { class: "dp-day-header" }, d)), days.map(({ iso, day, currentMonth }) => {
230
+ const isStart = iso === this.start;
231
+ const isEnd = iso === this.end;
232
+ const inRange = this.isInRange(iso);
233
+ const isToday = iso === today;
234
+ return (index.h("button", { class: {
235
+ 'dp-cell': true,
236
+ 'dp-cell--other-month': !currentMonth,
237
+ 'dp-cell--today': isToday && !isStart && !isEnd,
238
+ 'dp-cell--selected': isStart || isEnd,
239
+ 'dp-cell--range-start': isStart,
240
+ 'dp-cell--range-end': isEnd,
241
+ 'dp-cell--in-range': inRange,
242
+ }, type: "button", onClick: () => this.selectDate(iso), onMouseEnter: () => {
243
+ if (this.start && !this.end)
244
+ this.hoverDate = iso;
245
+ }, onMouseLeave: () => this.hoverDate = '' }, day));
246
+ })));
247
+ }
248
+ renderMonthView() {
249
+ const todayMonth = new Date().getMonth();
250
+ const todayYear = new Date().getFullYear();
251
+ return (index.h("div", { class: "dp-month-grid" }, MONTHS_SHORT.map((name, idx) => {
252
+ const isSelected = idx === this.viewMonth;
253
+ const isCurrent = idx === todayMonth && this.viewYear === todayYear;
254
+ return (index.h("button", { class: {
255
+ 'dp-month-cell': true,
256
+ 'dp-month-cell--selected': isSelected,
257
+ 'dp-month-cell--current': isCurrent && !isSelected,
258
+ }, type: "button", onClick: () => this.selectMonth(idx) }, name));
259
+ })));
260
+ }
261
+ renderYearView() {
262
+ const currentYear = new Date().getFullYear();
263
+ const start = this.decadeStart;
264
+ const years = Array.from({ length: 10 }, (_, i) => start + i);
265
+ return (index.h("div", { class: "dp-year-grid" }, years.map(year => {
266
+ const isSelected = year === this.viewYear;
267
+ const isCurrent = year === currentYear;
268
+ return (index.h("button", { class: {
269
+ 'dp-year-cell': true,
270
+ 'dp-year-cell--selected': isSelected,
271
+ 'dp-year-cell--current': isCurrent && !isSelected,
272
+ }, type: "button", onClick: () => this.selectYear(year) }, year));
273
+ })));
274
+ }
98
275
  render() {
99
- if (this.loading) {
276
+ if (this.loading)
100
277
  return index.h("div", { class: "skeleton" });
101
- }
102
- return (index.h("div", { class: "date-picker-range" }, this.showLabel && index.h("div", { class: "label" }, "Rango de fechas"), index.h("div", { class: "inputs-row" }, index.h("div", { class: "input-group" }, index.h("label", { class: "input-label" }, "Desde"), index.h("input", { type: "date", class: "date-input", value: this.start, max: this.end || this.today, onChange: (e) => this.onStartChange(e) })), index.h("span", { class: "separator" }, "\u2014"), index.h("div", { class: "input-group" }, index.h("label", { class: "input-label" }, "Hasta"), index.h("input", { type: "date", class: "date-input", value: this.end, min: this.start, max: this.today, onChange: (e) => this.onEndChange(e) }))), index.h("div", { class: "shortcuts" }, this.shortcuts.map((s, i) => (index.h("button", { key: i, class: `shortcut-btn${this.activeRange === i ? ' active' : ''}`, onClick: () => this.selectShortcut(i) }, s.label)))), this.showWarning && (index.h("div", { class: "warning-box" }, index.h("span", { class: "warning-message" }, "Solo puedes filtrar en un rango m\u00E1ximo de ", this.maxDaysRange, " d\u00EDas.")))));
278
+ const today = this.today;
279
+ return (index.h("div", { class: "dpr-wrap" }, this.showLabel && index.h("label", { class: "dpr-label" }, "Rango de fechas"), index.h("button", { class: { 'dpr-trigger': true, 'dpr-trigger--disabled': this.disabled }, onClick: () => this.toggleOpen(), disabled: this.disabled, type: "button" }, index.h("dropi-icon", { name: "Calendar", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-400" }), index.h("span", { class: { 'dpr-trigger__value': true, 'dpr-trigger__placeholder': !this.displayValue } }, this.displayValue || this.placeholder)), this.open && (index.h("div", { class: "dpr-popup" }, index.h("div", { class: "dpr-calendar" }, index.h("div", { class: "dp-nav" }, index.h("button", { class: "dp-nav__btn", onClick: () => this.prevNav(), type: "button" }, index.h("dropi-icon", { name: "dropdown-left", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" })), index.h("button", { class: "dp-nav__title", onClick: () => this.cycleView(), type: "button" }, this.viewMode === 'day'
280
+ ? [index.h("span", null, MONTHS_ES[this.viewMonth]), index.h("span", null, this.viewYear)]
281
+ : index.h("span", null, this.navTitle)), index.h("button", { class: "dp-nav__btn", onClick: () => this.nextNav(), type: "button" }, index.h("dropi-icon", { name: "dropdown-right", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" }))), this.viewMode === 'day' && this.renderDayView(today), this.viewMode === 'month' && this.renderMonthView(), this.viewMode === 'year' && this.renderYearView(), this.showWarning && (index.h("div", { class: "warning-box" }, index.h("span", { class: "warning-message" }, "Solo puedes filtrar en un rango m\u00E1ximo de ", this.maxDaysRange, " d\u00EDas.")))), index.h("div", { class: "dpr-divider" }), index.h("div", { class: "dpr-shortcuts" }, this.shortcuts.map((s, i) => (index.h("button", { key: i, class: { 'shortcut-btn': true, 'shortcut-btn--active': this.activeRange === i }, onClick: () => this.selectShortcut(i), type: "button" }, s.label))))))));
103
282
  }
104
283
  static get watchers() { return {
105
284
  "startDate": [{
@@ -2,12 +2,13 @@
2
2
 
3
3
  var index = require('./index-DKMSaf7l.js');
4
4
 
5
- const dropiDatePickerCss = () => `:host{display:block;width:100%;position:relative}*,*::before,*::after{box-sizing:border-box}.dp-label{display:block;font-size:var(--font-size-xxs, 10px);color:var(--Gray-Gray-600, #475066);margin-bottom:4px}.dp-trigger{width:100%;height:44px;display:flex;align-items:center;gap:var(--Size-2, 8px);padding:0 var(--Size-3, 12px);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-2, 8px);background:var(--Neutral-White, #ffffff);cursor:pointer;font-family:inherit;transition:border-color 0.2s}.dp-trigger:hover:not(:disabled){border-color:var(--Info-Info-500, #50a5f1)}.dp-trigger--disabled{background:var(--Gray-Gray-50, #f7f8fa);cursor:not-allowed;opacity:0.6}.dp-trigger__value{flex:1;text-align:left;font-size:var(--font-size-xs, 12px);color:var(--Gray-Gray-700, #32394d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dp-trigger__placeholder{color:var(--Gray-Gray-400, #858ea6)}.dp-popup{position:absolute;top:calc(100% + 8px);left:0;width:320px;background:var(--Neutral-White, #ffffff);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-3, 12px);box-shadow:0 4px 16px rgba(0,0,0,0.08);z-index:300;padding:var(--Size-4, 16px)}.dp-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--Size-4, 16px)}.dp-nav__btn{background:none;border:none;padding:0;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background 0.15s}.dp-nav__btn:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-nav__title{font-size:var(--font-size-s, 14px);font-weight:var(--font-weight-bold, 700);color:var(--Gray-Gray-700, #32394d);display:flex;gap:8px}.dp-grid{display:grid;grid-template-columns:repeat(7, 1fr);row-gap:8px;column-gap:4px}.dp-day-header{font-size:var(--font-size-s, 14px);color:var(--Gray-Gray-700, #32394d);text-align:center;padding:8px 0;font-weight:var(--font-weight-bold, 700)}.dp-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs, 12px);font-family:inherit;border:none;cursor:pointer;background:transparent;color:var(--Gray-Gray-600, #475066);width:100%;position:relative;z-index:1;padding:0}.dp-cell::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;transition:all 0.2s;z-index:-1;background:transparent}.dp-cell::before{content:"";position:absolute;top:0;bottom:0;z-index:-2;border-radius:0;background:transparent}.dp-cell:hover:not(:disabled)::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--other-month{color:var(--Gray-Gray-300, #a0a9c0)}.dp-cell--today{font-weight:var(--font-weight-bold, 700)}.dp-cell--today::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--selected{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--selected::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--range-start,.dp-cell--range-end{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--range-start::after,.dp-cell--range-end::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--in-range{color:var(--Orange-orange-500, #f49a3d);font-weight:var(--font-weight-bold, 700)}.dp-cell--in-range::before{left:-2px;right:-2px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start::before{left:50%;right:-2px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-end::before{left:-2px;right:50%;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start.dp-cell--range-end::before{background:transparent}.dp-cell--disabled{opacity:0.35;cursor:not-allowed}.dp-footer{display:flex;justify-content:space-between;margin-top:var(--Size-3, 12px);border-top:1px solid var(--Gray-Gray-100, #e6eaf2);padding-top:var(--Size-2, 8px)}.dp-footer__clear,.dp-footer__today{background:none;border:none;padding:4px 8px;font-size:var(--font-size-xxs, 10px);font-family:inherit;cursor:pointer;border-radius:var(--Border-1, 4px);transition:background 0.15s}.dp-footer__clear{color:var(--Gray-Gray-500, #69738c)}.dp-footer__today{color:var(--Orange-orange-500, #f49a3d);font-weight:var(--font-weight-bold, 700)}.dp-footer__clear:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-footer__today:hover{background:var(--Orange-orange-50, #fef5ec)}`;
5
+ const dropiDatePickerCss = () => `:host{display:block;width:100%;position:relative}*,*::before,*::after{box-sizing:border-box}.dp-label{display:block;font-size:var(--font-size-xs, 10px);font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-600, #475066);margin-bottom:8px}.dp-trigger{width:100%;height:40px;display:flex;align-items:center;gap:var(--Size-2, 8px);padding:0 var(--Size-3, 12px);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-2, 8px);background:var(--Neutral-White, #ffffff);cursor:pointer;font-family:inherit;transition:border-color 0.2s}.dp-trigger:hover:not(:disabled){border-color:var(--Info-Info-500, #50a5f1)}.dp-trigger--disabled{background:var(--Gray-Gray-50, #f7f8fa);cursor:not-allowed;opacity:0.6}.dp-trigger__value{flex:1;text-align:left;font-size:var(--font-size-xs, 12px);color:var(--Gray-Gray-700, #32394d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dp-trigger__placeholder{color:var(--Gray-Gray-400, #858ea6)}.dp-popup{position:absolute;top:calc(100% + 8px);left:0;display:flex;flex-direction:row;background:var(--Neutral-White, #ffffff);border:1px solid var(--Gray-Gray-200, #c3c9d9);border-radius:var(--Border-3, 12px);box-shadow:0 4px 16px rgba(0,0,0,0.08);z-index:300;overflow:hidden}.dp-calendar{padding:var(--Size-4, 16px);width:300px;flex-shrink:0}.dp-divider{width:1px;background:var(--Gray-Gray-100, #e6eaf2);flex-shrink:0}.dp-shortcuts{padding:var(--Size-4, 16px) var(--Size-3, 12px);display:flex;flex-direction:column;gap:2px;min-width:140px}.shortcut-btn{background:transparent;border:1px solid transparent;padding:6px 10px;font-size:13px;font-family:inherit;color:var(--Gray-Gray-700, #32394d);cursor:pointer;text-align:left;border-radius:6px;transition:background 0.1s ease;font-weight:var(--font-weight-regular);white-space:nowrap}.shortcut-btn:hover{background:var(--Gray-Gray-50, #f5f6f8)}.shortcut-btn--active{border-color:var(--Gray-Gray-200, #c3c9d9);font-weight:var(--font-weight-semibold);background:var(--Gray-Gray-50, #f5f6f8)}.dp-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--Size-4, 16px);padding-bottom:var(--Size-3, 12px);border-bottom:1px solid var(--Gray-Gray-100, #e6eaf2)}.dp-nav__btn{background:none;border:none;padding:0;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;width:32px;height:32px;transition:background 0.15s}.dp-nav__btn:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-nav__title{background:none;border:none;font-size:var(--font-size-s, 14px);font-weight:var(--font-weight-bold, 700);color:var(--Gray-Gray-700, #32394d);display:flex;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--Border-1, 4px);transition:background 0.15s;font-family:inherit}.dp-nav__title:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-grid{display:grid;grid-template-columns:repeat(7, 1fr);row-gap:8px;column-gap:4px}.dp-day-header{font-size:var(--font-size-s, 14px);color:var(--Gray-Gray-700, #32394d);text-align:center;padding:8px 0;font-weight:var(--font-weight-bold, 700)}.dp-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs, 12px);font-family:inherit;border:none;cursor:pointer;background:transparent;color:var(--Gray-Gray-600, #475066);width:100%;position:relative;z-index:1;padding:0}.dp-cell::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;transition:all 0.2s;z-index:-1;background:transparent}.dp-cell::before{content:"";position:absolute;top:0;bottom:0;z-index:-2;border-radius:0;background:transparent}.dp-cell:hover:not(:disabled)::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--other-month{color:var(--Gray-Gray-300, #a0a9c0)}.dp-cell--today{font-weight:var(--font-weight-bold, 700)}.dp-cell--today::after{background:var(--Gray-Gray-100, #e6eaf2)}.dp-cell--selected{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--selected::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--range-start,.dp-cell--range-end{color:var(--Neutral-White, #ffffff);font-weight:var(--font-weight-bold, 700)}.dp-cell--range-start::after,.dp-cell--range-end::after{background:var(--Orange-orange-500, #f49a3d) !important}.dp-cell--in-range{color:var(--Orange-orange-500, #f49a3d);font-weight:var(--font-weight-bold, 700)}.dp-cell--in-range::before{left:-2px;right:-2px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start::before{left:50%;right:-2px;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-end::before{left:-2px;right:50%;background:var(--Orange-orange-50, #fef5ec)}.dp-cell--range-start.dp-cell--range-end::before{background:transparent}.dp-cell--disabled{opacity:0.35;cursor:not-allowed}.dp-month-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:8px}.dp-month-cell{padding:10px 4px;font-size:var(--font-size-s, 14px);font-family:inherit;font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-700, #32394d);background:transparent;border:1px solid transparent;border-radius:var(--Border-2, 8px);cursor:pointer;text-align:center;transition:background 0.15s, border-color 0.15s}.dp-month-cell:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-month-cell--selected{border-color:var(--Info-Info-500, #50a5f1);font-weight:var(--font-weight-semibold, 600)}.dp-month-cell--current{background:var(--Gray-Gray-100, #e6eaf2)}.dp-year-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:8px}.dp-year-cell{padding:10px 4px;font-size:var(--font-size-s, 14px);font-family:inherit;font-weight:var(--font-weight-regular, 400);color:var(--Gray-Gray-700, #32394d);background:transparent;border:1px solid transparent;border-radius:var(--Border-2, 8px);cursor:pointer;text-align:center;transition:background 0.15s, border-color 0.15s}.dp-year-cell:hover{background:var(--Gray-Gray-50, #f7f8fa)}.dp-year-cell--selected{border-color:var(--Info-Info-500, #50a5f1);font-weight:var(--font-weight-semibold, 600)}.dp-year-cell--current{background:var(--Gray-Gray-100, #e6eaf2)}`;
6
6
 
7
7
  const MONTHS_ES = [
8
8
  'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
9
9
  'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
10
10
  ];
11
+ const MONTHS_SHORT = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
11
12
  const DAYS_ES = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
12
13
  const DropiDatePicker = class {
13
14
  constructor(hostRef) {
@@ -26,16 +27,14 @@ const DropiDatePicker = class {
26
27
  internals;
27
28
  /** Name for native form submission */
28
29
  name;
29
- /** Selected date (ISO string, single mode) - matches Angular 'selectedDate' */
30
+ /** Selected date (ISO string, single mode) */
30
31
  selectedDate = '';
31
32
  /** Range start date (ISO string, range mode) */
32
33
  startDate = '';
33
34
  /** Range end date (ISO string, range mode) */
34
35
  endDate = '';
35
- valueChanged() {
36
- this.updateFormValue();
37
- }
38
- /** Enable range selection - matches Angular selectionMode */
36
+ valueChanged() { this.updateFormValue(); }
37
+ /** Enable range selection */
39
38
  selectionMode = 'single';
40
39
  /** Min selectable date (ISO string) */
41
40
  minDate = '';
@@ -47,29 +46,28 @@ const DropiDatePicker = class {
47
46
  placeholder = 'DD/MM/YYYY';
48
47
  /** Disabled */
49
48
  disabled = false;
50
- /** Is invalid state - matches Angular */
49
+ /** Is invalid state */
51
50
  isInvalid = false;
52
- /** Loading state - matches Angular */
51
+ /** Loading state */
53
52
  loading = false;
53
+ /** Hide "Hoy" shortcut */
54
+ hideTodayShortcut = false;
54
55
  open = false;
55
56
  viewYear = new Date().getFullYear();
56
57
  viewMonth = new Date().getMonth();
57
58
  hoverDate = '';
59
+ viewMode = 'day';
60
+ activeShortcut = -1;
58
61
  get el() { return index.getElement(this); }
59
62
  handleDocClick(e) {
60
63
  if (this.open && !e.composedPath().includes(this.el)) {
61
64
  this.open = false;
62
65
  }
63
66
  }
64
- /** Emitted when date selected — matches Angular 'onChangeDate' */
65
67
  dropiChangeDate;
66
- /** Emitted when panel closes — matches Angular 'onClosePanel' */
67
68
  dropiClosePanel;
68
- /** Emitted when range selected */
69
69
  dropiRangeChange;
70
- componentWillLoad() {
71
- this.updateFormValue();
72
- }
70
+ componentWillLoad() { this.updateFormValue(); }
73
71
  updateFormValue() {
74
72
  if (this.selectionMode === 'range') {
75
73
  this.internals.setFormValue(this.startDate && this.endDate ? `${this.startDate},${this.endDate}` : '');
@@ -101,23 +99,96 @@ const DropiDatePicker = class {
101
99
  this.viewYear = d.getFullYear();
102
100
  this.viewMonth = d.getMonth();
103
101
  }
102
+ this.viewMode = 'day';
104
103
  this.open = true;
105
104
  }
106
- prevMonth() {
107
- if (this.viewMonth === 0) {
108
- this.viewMonth = 11;
105
+ get decadeStart() {
106
+ return Math.floor(this.viewYear / 10) * 10;
107
+ }
108
+ get navTitle() {
109
+ if (this.viewMode === 'day')
110
+ return `${MONTHS_ES[this.viewMonth]} ${this.viewYear}`;
111
+ if (this.viewMode === 'month')
112
+ return `${this.viewYear}`;
113
+ return `${this.decadeStart}-${this.decadeStart + 9}`;
114
+ }
115
+ cycleView() {
116
+ if (this.viewMode === 'day')
117
+ this.viewMode = 'month';
118
+ else if (this.viewMode === 'month')
119
+ this.viewMode = 'year';
120
+ }
121
+ prevNav() {
122
+ if (this.viewMode === 'day') {
123
+ if (this.viewMonth === 0) {
124
+ this.viewMonth = 11;
125
+ this.viewYear--;
126
+ }
127
+ else
128
+ this.viewMonth--;
129
+ }
130
+ else if (this.viewMode === 'month') {
109
131
  this.viewYear--;
110
132
  }
111
- else
112
- this.viewMonth--;
133
+ else {
134
+ this.viewYear = this.decadeStart - 10;
135
+ }
113
136
  }
114
- nextMonth() {
115
- if (this.viewMonth === 11) {
116
- this.viewMonth = 0;
137
+ nextNav() {
138
+ if (this.viewMode === 'day') {
139
+ if (this.viewMonth === 11) {
140
+ this.viewMonth = 0;
141
+ this.viewYear++;
142
+ }
143
+ else
144
+ this.viewMonth++;
145
+ }
146
+ else if (this.viewMode === 'month') {
117
147
  this.viewYear++;
118
148
  }
119
- else
120
- this.viewMonth++;
149
+ else {
150
+ this.viewYear = this.decadeStart + 10;
151
+ }
152
+ }
153
+ selectMonth(month) {
154
+ this.viewMonth = month;
155
+ this.viewMode = 'day';
156
+ }
157
+ selectYear(year) {
158
+ this.viewYear = year;
159
+ this.viewMode = 'month';
160
+ }
161
+ get today() {
162
+ return new Date().toISOString().slice(0, 10);
163
+ }
164
+ daysAgo(n) {
165
+ const d = new Date();
166
+ d.setDate(d.getDate() - n);
167
+ return d.toISOString().slice(0, 10);
168
+ }
169
+ get shortcuts() {
170
+ const all = [
171
+ { label: 'Hoy', start: this.today, end: this.today },
172
+ { label: 'Últimos 7 días', start: this.daysAgo(6), end: this.today },
173
+ { label: 'Últimos 15 días', start: this.daysAgo(14), end: this.today },
174
+ { label: 'Últimos 30 días', start: this.daysAgo(29), end: this.today },
175
+ { label: 'Últimos 90 días', start: this.daysAgo(89), end: this.today },
176
+ ];
177
+ return this.hideTodayShortcut ? all.slice(1) : all;
178
+ }
179
+ selectShortcut(idx) {
180
+ const s = this.shortcuts[idx];
181
+ this.activeShortcut = idx;
182
+ if (this.selectionMode === 'range') {
183
+ this.startDate = s.start;
184
+ this.endDate = s.end;
185
+ this.dropiRangeChange.emit({ start: s.start, end: s.end });
186
+ }
187
+ else {
188
+ this.selectedDate = s.end;
189
+ this.dropiChangeDate.emit(s.end);
190
+ }
191
+ this.open = false;
121
192
  }
122
193
  toISO(year, month, day) {
123
194
  return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
@@ -148,7 +219,6 @@ const DropiDatePicker = class {
148
219
  this.dropiChangeDate.emit(iso);
149
220
  return;
150
221
  }
151
- // Range mode
152
222
  if (!this.startDate || (this.startDate && this.endDate)) {
153
223
  this.startDate = iso;
154
224
  this.endDate = '';
@@ -169,23 +239,18 @@ const DropiDatePicker = class {
169
239
  const year = this.viewYear;
170
240
  const month = this.viewMonth;
171
241
  const firstDay = new Date(year, month, 1).getDay();
172
- // Adjust to Sunday-first
173
- const startOffset = firstDay;
174
242
  const daysInMonth = new Date(year, month + 1, 0).getDate();
175
243
  const daysInPrevMonth = new Date(year, month, 0).getDate();
176
244
  const cells = [];
177
- // Previous month filler
178
- for (let i = startOffset - 1; i >= 0; i--) {
245
+ for (let i = firstDay - 1; i >= 0; i--) {
179
246
  const d = daysInPrevMonth - i;
180
247
  const m = month === 0 ? 11 : month - 1;
181
248
  const y = month === 0 ? year - 1 : year;
182
249
  cells.push({ iso: this.toISO(y, m, d), day: d, currentMonth: false });
183
250
  }
184
- // Current month
185
251
  for (let d = 1; d <= daysInMonth; d++) {
186
252
  cells.push({ iso: this.toISO(year, month, d), day: d, currentMonth: true });
187
253
  }
188
- // Next month filler
189
254
  const remaining = 42 - cells.length;
190
255
  for (let d = 1; d <= remaining; d++) {
191
256
  const m = month === 11 ? 0 : month + 1;
@@ -194,15 +259,9 @@ const DropiDatePicker = class {
194
259
  }
195
260
  return cells;
196
261
  }
197
- render() {
262
+ renderDayView(today) {
198
263
  const days = this.buildDays();
199
- const today = new Date().toISOString().slice(0, 10);
200
- return (index.h("div", { key: 'd2f6248ff409e53e916e266ab5d23136e9da76d0', class: "dp-wrap" }, this.label && index.h("label", { key: 'ba51f4091f18437e4449c05378def5b099883acd', class: "dp-label" }, this.label), index.h("button", { key: '88eb474ca75c9b62996765bdb4816a8cfc14bb8e', class: {
201
- 'dp-trigger': true,
202
- 'dp-trigger--disabled': this.disabled,
203
- 'dp-trigger--invalid': this.isInvalid,
204
- 'dp-trigger--loading': this.loading
205
- }, onClick: () => this.open ? this.open = false : this.open_(), disabled: this.disabled || this.loading, type: "button" }, index.h("dropi-icon", { key: '1044cef59317f88cc472d2a466a6937a0c4d58f7', name: "Calendar", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-400" }), index.h("span", { key: '6a7c5687cd06b9b2f42c256bc03ff0f412ca5573', class: { 'dp-trigger__value': true, 'dp-trigger__placeholder': !this.displayValue } }, this.displayValue || this.placeholder), index.h("dropi-icon", { key: '4be1fc67ed6f9ffb5a5d936e3e8d8330bb91fb0b', name: "Arrow-Down-2", iconWidth: "12px", iconHeight: "12px", color: "Gray-Gray-400" })), this.open && (index.h("div", { key: '5ad107e256d62a46b57e4bd1bebead70ecc8e46c', class: "dp-popup" }, index.h("div", { key: 'e3d51afbd24df88867777e43c9bd63dd41c3f542', class: "dp-nav" }, index.h("button", { key: '8819f79389c1d50ec639f719228aab88be4d0335', class: "dp-nav__btn", onClick: () => this.prevMonth(), type: "button" }, index.h("dropi-icon", { key: 'a17004ad24ce40590474d91227a826f46edf50ba', name: "Arrow-Left-2", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" })), index.h("span", { key: 'e91c8a46b963a1e7f0d01c56610c2e4bb6fa3d39', class: "dp-nav__title" }, index.h("span", { key: '214a575cbd83e8c3bafe64ffbd93e914119b09aa' }, MONTHS_ES[this.viewMonth]), index.h("span", { key: '1f71a83e7110bf8a91f7b5e14e0400b09ba28e1a' }, this.viewYear)), index.h("button", { key: '21dbc0fdaabc423bd864bfb33ba314b72ca62d48', class: "dp-nav__btn", onClick: () => this.nextMonth(), type: "button" }, index.h("dropi-icon", { key: 'f248e65855555878afdbda7d1ba9a802d9eae4d5', name: "Arrow-Right-2", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" }))), index.h("div", { key: '4fb29792028bf2132ea78a105c7694cf3806ff05', class: "dp-grid" }, DAYS_ES.map(d => (index.h("div", { class: "dp-day-header" }, d))), days.map(({ iso, day, currentMonth }) => {
264
+ return (index.h("div", { class: "dp-grid" }, DAYS_ES.map(d => index.h("div", { class: "dp-day-header" }, d)), days.map(({ iso, day, currentMonth }) => {
206
265
  const isSelected = this.selectionMode !== 'range'
207
266
  ? iso === this.selectedDate
208
267
  : iso === this.startDate || iso === this.endDate;
@@ -224,22 +283,48 @@ const DropiDatePicker = class {
224
283
  if (this.selectionMode === 'range' && this.startDate && !this.endDate)
225
284
  this.hoverDate = iso;
226
285
  }, onMouseLeave: () => this.hoverDate = '' }, day));
227
- })), index.h("div", { key: '9c670c5ad5a6115b628d5a7bd3a2422c7631e237', class: "dp-footer" }, index.h("button", { key: 'f939595cde989ea0bd462a3d94c6333b5220d1ee', class: "dp-footer__clear", type: "button", onClick: () => {
228
- this.selectedDate = '';
229
- this.startDate = '';
230
- this.endDate = '';
231
- this.open = false;
232
- } }, "Limpiar"), index.h("button", { key: '87b88413962d73229f0cac5a15918b9cd7aebea3', class: "dp-footer__today", type: "button", onClick: () => {
233
- if (this.selectionMode !== 'range') {
234
- this.selectedDate = today;
235
- this.open = false;
236
- this.dropiChangeDate.emit(today);
237
- }
238
- else {
239
- this.startDate = today;
240
- this.endDate = '';
241
- }
242
- } }, "Hoy"))))));
286
+ })));
287
+ }
288
+ renderMonthView() {
289
+ const todayMonth = new Date().getMonth();
290
+ const todayYear = new Date().getFullYear();
291
+ return (index.h("div", { class: "dp-month-grid" }, MONTHS_SHORT.map((name, idx) => {
292
+ const isSelected = idx === this.viewMonth;
293
+ const isCurrent = idx === todayMonth && this.viewYear === todayYear;
294
+ return (index.h("button", { class: {
295
+ 'dp-month-cell': true,
296
+ 'dp-month-cell--selected': isSelected,
297
+ 'dp-month-cell--current': isCurrent && !isSelected,
298
+ }, type: "button", onClick: () => this.selectMonth(idx) }, name));
299
+ })));
300
+ }
301
+ renderYearView() {
302
+ const currentYear = new Date().getFullYear();
303
+ const start = this.decadeStart;
304
+ const years = Array.from({ length: 10 }, (_, i) => start + i);
305
+ return (index.h("div", { class: "dp-year-grid" }, years.map(year => {
306
+ const isSelected = year === this.viewYear;
307
+ const isCurrent = year === currentYear;
308
+ return (index.h("button", { class: {
309
+ 'dp-year-cell': true,
310
+ 'dp-year-cell--selected': isSelected,
311
+ 'dp-year-cell--current': isCurrent && !isSelected,
312
+ }, type: "button", onClick: () => this.selectYear(year) }, year));
313
+ })));
314
+ }
315
+ render() {
316
+ const today = new Date().toISOString().slice(0, 10);
317
+ return (index.h("div", { key: '6ae00de99b93a13faba81ac027c292b9624d0336', class: "dp-wrap" }, this.label && index.h("label", { key: '9282bb57332ebaef9861702d80759d641ea21757', class: "dp-label" }, this.label), index.h("button", { key: '1fe5d5fcd8ce1c0b151381d9c249c401d322f78a', class: {
318
+ 'dp-trigger': true,
319
+ 'dp-trigger--disabled': this.disabled,
320
+ 'dp-trigger--invalid': this.isInvalid,
321
+ 'dp-trigger--loading': this.loading
322
+ }, onClick: () => this.open ? this.open = false : this.open_(), disabled: this.disabled || this.loading, type: "button" }, index.h("dropi-icon", { key: '560cf80eb7652543b9000e375b213a3dba91060b', name: "Calendar", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-400" }), index.h("span", { key: '3bdc45bd4706502af4050475e709c15beebce028', class: { 'dp-trigger__value': true, 'dp-trigger__placeholder': !this.displayValue } }, this.displayValue || this.placeholder)), this.open && (index.h("div", { key: 'e21053dd38d62ab43c01f337fbbeb8b36e70680c', class: "dp-popup" }, index.h("div", { key: 'd6c8fc40ec4bd11bcd5bf3d8b3706c4c62099bbf', class: "dp-calendar" }, index.h("div", { key: 'cf8f21d301592077851a44eb588418302240598f', class: "dp-nav" }, index.h("button", { key: '28702d76d499cec07cd69d7bd23f5eb0369d288f', class: "dp-nav__btn", onClick: () => this.prevNav(), type: "button" }, index.h("dropi-icon", { key: '18b1c6fb2ea5f51b4a4b59592c7d89c5406c6c39', name: "dropdown-left", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" })), index.h("button", { key: '755274772a90deae38d613da369863aefe95e297', class: "dp-nav__title", onClick: () => this.cycleView(), type: "button" }, this.viewMode === 'day'
323
+ ? [index.h("span", null, MONTHS_ES[this.viewMonth]), index.h("span", null, this.viewYear)]
324
+ : index.h("span", null, this.navTitle)), index.h("button", { key: '6442690df1e434f9fb0128327f8f07c3cecbed4c', class: "dp-nav__btn", onClick: () => this.nextNav(), type: "button" }, index.h("dropi-icon", { key: '00525ae2cbe5cc8a881d165141de10ce3d72e439', name: "dropdown-right", iconWidth: "16px", iconHeight: "16px", color: "Gray-Gray-600" }))), this.viewMode === 'day' && this.renderDayView(today), this.viewMode === 'month' && this.renderMonthView(), this.viewMode === 'year' && this.renderYearView()), this.selectionMode === 'range' && [
325
+ index.h("div", { key: '688df97b843c3c3342fc301d6c6c74ec88921d68', class: "dp-divider" }),
326
+ index.h("div", { key: '2c75f7b004812ee1eb18bbc349f03ab55623cd9f', class: "dp-shortcuts" }, this.shortcuts.map((s, i) => (index.h("button", { key: i, class: { 'shortcut-btn': true, 'shortcut-btn--active': this.activeShortcut === i }, onClick: () => this.selectShortcut(i), type: "button" }, s.label))))
327
+ ]))));
243
328
  }
244
329
  static get formAssociated() { return true; }
245
330
  static get watchers() { return {