vueless 0.0.3 → 0.0.5

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 (525) hide show
  1. package/.browserslistrc +4 -0
  2. package/.editorconfig +12 -0
  3. package/.eslintignore +7 -0
  4. package/.eslintrc.js +59 -0
  5. package/.storybook/configs/main.config.js +20 -0
  6. package/.storybook/decorators/vue3SourceDecorator.js +119 -0
  7. package/.storybook/main.js +20 -0
  8. package/.storybook/manager-head.html +10 -0
  9. package/.storybook/manager.js +6 -0
  10. package/.storybook/preview-head.html +72 -0
  11. package/.storybook/preview.js +50 -0
  12. package/.storybook/themes/vueless.docs.theme.js +41 -0
  13. package/.storybook/themes/vueless.theme.js +45 -0
  14. package/.web-types-gen/lib/config.js +32 -0
  15. package/LICENSE +21 -0
  16. package/README.md +174 -0
  17. package/index.pcss +3 -0
  18. package/package.json +53 -36
  19. package/postcss.config.js +9 -0
  20. package/public/images/logo.png +0 -0
  21. package/{composable.ui → src/composable.ui}/index.js +4 -1
  22. package/src/library.web-types-gen/index.js +17 -0
  23. package/src/library.web-types-gen/lib/build.js +252 -0
  24. package/src/library.web-types-gen/package.json +3 -0
  25. package/{plugin.vite → src/plugin.vite}/services/iconResolver.service.js +1 -1
  26. package/{plugin.vite → src/plugin.vite}/services/tailwindSafelist.service.js +0 -2
  27. package/{service.tailwind → src/service.tailwind}/index.js +2 -0
  28. package/{service.ui → src/service.ui}/index.js +1 -1
  29. package/{ui.button-toggle-item → src/ui.button}/Docs.mdx +1 -1
  30. package/{ui.button → src/ui.button}/composables/attrs.composable.js +2 -2
  31. package/{ui.button → src/ui.button}/configs/default.config.js +1 -0
  32. package/{ui.button → src/ui.button}/index.stories.js +5 -5
  33. package/{ui.button → src/ui.button}/index.vue +3 -4
  34. package/{ui.button-toggle → src/ui.button-link}/Docs.mdx +1 -1
  35. package/{ui.button-link → src/ui.button-link}/composables/attrs.composable.js +2 -2
  36. package/{ui.button-link → src/ui.button-link}/configs/default.config.js +2 -2
  37. package/{ui.button-link → src/ui.button-link}/index.stories.js +4 -4
  38. package/{ui.button-link → src/ui.button-link}/index.vue +3 -3
  39. package/{ui.button-link → src/ui.button-toggle}/Docs.mdx +1 -1
  40. package/{ui.button-toggle → src/ui.button-toggle}/composables/attrs.composable.js +1 -1
  41. package/{ui.button-toggle → src/ui.button-toggle}/index.stories.js +5 -5
  42. package/{ui.button-toggle → src/ui.button-toggle}/index.vue +2 -2
  43. package/{ui.button → src/ui.button-toggle-item}/Docs.mdx +1 -1
  44. package/{ui.button-toggle-item → src/ui.button-toggle-item}/composables/attrs.composable.js +2 -2
  45. package/{ui.button-toggle-item → src/ui.button-toggle-item}/index.stories.js +3 -3
  46. package/{ui.button-toggle-item → src/ui.button-toggle-item}/index.vue +2 -2
  47. package/{ui.container-accordion → src/ui.container-accordion}/composables/attrs.composable.js +2 -2
  48. package/{ui.container-accordion → src/ui.container-accordion}/index.stories.js +4 -4
  49. package/{ui.container-accordion → src/ui.container-accordion}/index.vue +2 -2
  50. package/src/ui.container-card/Docs.mdx +16 -0
  51. package/{ui.container-card → src/ui.container-card}/composable/attrs.composable.js +2 -2
  52. package/{ui.container-card → src/ui.container-card}/index.stories.js +7 -7
  53. package/{ui.container-card → src/ui.container-card}/index.vue +3 -3
  54. package/src/ui.container-divider/Docs.mdx +16 -0
  55. package/{ui.container-divider → src/ui.container-divider}/composables/attrs.composable.js +2 -2
  56. package/{ui.container-divider → src/ui.container-divider}/index.stories.js +3 -3
  57. package/{ui.container-divider → src/ui.container-divider}/index.vue +1 -1
  58. package/src/ui.container-group/Docs.mdx +16 -0
  59. package/{ui.container-group → src/ui.container-group}/composables/attrs.composable.js +2 -2
  60. package/{ui.container-group → src/ui.container-group}/index.stories.js +4 -4
  61. package/{ui.container-group → src/ui.container-group}/index.vue +3 -3
  62. package/src/ui.container-groups/Docs.mdx +16 -0
  63. package/{ui.container-groups → src/ui.container-groups}/composables/attrs.composable.js +1 -1
  64. package/{ui.container-groups → src/ui.container-groups}/index.stories.js +4 -4
  65. package/src/ui.container-modal/Docs.mdx +16 -0
  66. package/{ui.container-modal → src/ui.container-modal}/composables/attrs.composable.js +2 -2
  67. package/{ui.container-modal → src/ui.container-modal}/index.stories.js +9 -9
  68. package/{ui.container-modal → src/ui.container-modal}/index.vue +4 -4
  69. package/src/ui.container-modal-confirm/Docs.mdx +16 -0
  70. package/{ui.container-modal-confirm → src/ui.container-modal-confirm}/composable/attrs.composable.js +3 -2
  71. package/{ui.container-modal-confirm → src/ui.container-modal-confirm}/configs/default.config.js +3 -0
  72. package/{ui.container-modal-confirm → src/ui.container-modal-confirm}/index.stories.js +6 -6
  73. package/{ui.container-modal-confirm → src/ui.container-modal-confirm}/index.vue +5 -19
  74. package/src/ui.container-page/Docs.mdx +16 -0
  75. package/{ui.container-page → src/ui.container-page}/composables/attrs.composable.js +2 -2
  76. package/{ui.container-page → src/ui.container-page}/index.stories.js +10 -10
  77. package/{ui.container-page → src/ui.container-page}/index.vue +1 -1
  78. package/src/ui.container-row/Docs.mdx +16 -0
  79. package/{ui.container-row → src/ui.container-row}/composables/attrs.composable.js +2 -2
  80. package/{ui.container-row → src/ui.container-row}/index.stories.js +3 -3
  81. package/{ui.container-row → src/ui.container-row}/index.vue +1 -1
  82. package/{ui.data-list → src/ui.data-list}/composables/attrs.composable.js +2 -2
  83. package/{ui.data-list → src/ui.data-list}/index.stories.js +3 -3
  84. package/{ui.data-list → src/ui.data-list}/index.vue +3 -3
  85. package/src/ui.data-table/Docs.mdx +16 -0
  86. package/{ui.data-table → src/ui.data-table}/composables/attrs.composable.js +10 -10
  87. package/{ui.data-table → src/ui.data-table}/configs/default.config.js +6 -0
  88. package/{ui.data-table → src/ui.data-table}/index.stories.js +8 -8
  89. package/{ui.data-table → src/ui.data-table}/index.vue +20 -35
  90. package/{ui.data-table-cell → src/ui.data-table-cell}/composables/attrs.composable.js +2 -2
  91. package/{ui.data-table-cell → src/ui.data-table-cell}/index.vue +1 -1
  92. package/src/ui.dropdown-badge/Docs.mdx +16 -0
  93. package/{ui.dropdown-badge → src/ui.dropdown-badge}/composables/attrs.composable.js +2 -2
  94. package/{ui.dropdown-badge → src/ui.dropdown-badge}/index.stories.js +4 -4
  95. package/{ui.dropdown-badge → src/ui.dropdown-badge}/index.vue +4 -4
  96. package/src/ui.dropdown-button/Docs.mdx +16 -0
  97. package/{ui.dropdown-button → src/ui.dropdown-button}/composables/attrs.composable.js +2 -2
  98. package/{ui.dropdown-button → src/ui.dropdown-button}/index.stories.js +5 -5
  99. package/{ui.dropdown-button → src/ui.dropdown-button}/index.vue +5 -5
  100. package/src/ui.dropdown-item/Docs.mdx +16 -0
  101. package/{ui.dropdown-item → src/ui.dropdown-item}/composables/attrs.composable.js +1 -1
  102. package/{ui.dropdown-item → src/ui.dropdown-item}/index.stories.js +2 -2
  103. package/src/ui.dropdown-link/Docs.mdx +16 -0
  104. package/{ui.dropdown-link → src/ui.dropdown-link}/composables/attrs.composable.js +2 -2
  105. package/{ui.dropdown-link → src/ui.dropdown-link}/index.stories.js +4 -4
  106. package/{ui.dropdown-link → src/ui.dropdown-link}/index.vue +4 -4
  107. package/src/ui.dropdown-list/Docs.mdx +16 -0
  108. package/{ui.dropdown-list → src/ui.dropdown-list}/composables/attrs.composable.js +4 -2
  109. package/{ui.dropdown-list → src/ui.dropdown-list}/configs/default.config.js +6 -0
  110. package/{ui.dropdown-list → src/ui.dropdown-list}/index.stories.js +3 -3
  111. package/{ui.dropdown-list → src/ui.dropdown-list}/index.vue +9 -25
  112. package/{ui.form-calendar → src/ui.form-calendar}/Docs.mdx +2 -2
  113. package/{ui.form-calendar → src/ui.form-calendar}/components/DayView.vue +39 -1
  114. package/{ui.form-calendar → src/ui.form-calendar}/composables/attrs.composable.js +21 -2
  115. package/{ui.form-calendar → src/ui.form-calendar}/configs/default.config.js +12 -2
  116. package/{ui.form-calendar → src/ui.form-calendar}/constants/index.js +2 -0
  117. package/{ui.form-calendar → src/ui.form-calendar}/index.stories.js +11 -2
  118. package/{ui.form-calendar → src/ui.form-calendar}/index.vue +155 -45
  119. package/{ui.form-calendar → src/ui.form-calendar}/services/calendar.service.js +3 -15
  120. package/src/ui.form-calendar/services/date.service.js +282 -0
  121. package/src/ui.form-checkbox/Docs.mdx +16 -0
  122. package/{ui.form-checkbox → src/ui.form-checkbox}/composables/attrs.composable.js +2 -2
  123. package/{ui.form-checkbox → src/ui.form-checkbox}/configs/default.config.js +1 -1
  124. package/{ui.form-checkbox → src/ui.form-checkbox}/index.stories.js +5 -5
  125. package/{ui.form-checkbox → src/ui.form-checkbox}/index.vue +3 -3
  126. package/src/ui.form-checkbox-group/Docs.mdx +16 -0
  127. package/{ui.form-checkbox-group → src/ui.form-checkbox-group}/composables/attrs.composable.js +1 -1
  128. package/{ui.form-checkbox-group → src/ui.form-checkbox-group}/index.stories.js +2 -2
  129. package/{ui.form-checkbox-group → src/ui.form-checkbox-group}/index.vue +3 -3
  130. package/src/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  131. package/{ui.form-checkbox-multi-state → src/ui.form-checkbox-multi-state}/composables/attrs.composable.js +1 -1
  132. package/{ui.form-checkbox-multi-state → src/ui.form-checkbox-multi-state}/index.stories.js +3 -3
  133. package/{ui.form-checkbox-multi-state → src/ui.form-checkbox-multi-state}/index.vue +1 -1
  134. package/{ui.form-color-picker → src/ui.form-color-picker}/composables/attrs.composable.js +2 -2
  135. package/{ui.form-color-picker → src/ui.form-color-picker}/index.stories.js +3 -3
  136. package/{ui.form-color-picker → src/ui.form-color-picker}/index.vue +1 -1
  137. package/{ui.form-date-picker → src/ui.form-date-picker}/Docs.mdx +3 -3
  138. package/{ui.form-date-picker → src/ui.form-date-picker}/composables/attrs.composable.js +1 -1
  139. package/{ui.form-date-picker → src/ui.form-date-picker}/configs/default.config.js +0 -1
  140. package/{ui.form-date-picker → src/ui.form-date-picker}/index.stories.js +4 -4
  141. package/{ui.form-date-picker → src/ui.form-date-picker}/index.vue +2 -3
  142. package/src/ui.form-date-picker-range/composables/attrs.composable.js +100 -0
  143. package/src/ui.form-date-picker-range/configs/default.config.js +172 -0
  144. package/src/ui.form-date-picker-range/constants/index.js +23 -0
  145. package/src/ui.form-date-picker-range/index.stories.js +135 -0
  146. package/src/ui.form-date-picker-range/index.vue +929 -0
  147. package/src/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  148. package/src/ui.form-date-picker-range/services/validation.service.js +22 -0
  149. package/src/ui.form-input/Docs.mdx +16 -0
  150. package/{ui.form-input → src/ui.form-input}/composables/attrs.composable.js +2 -2
  151. package/{ui.form-input → src/ui.form-input}/index.stories.js +5 -5
  152. package/{ui.form-input → src/ui.form-input}/index.vue +2 -2
  153. package/{ui.form-input-file → src/ui.form-input-file}/composables/attrs.composable.js +2 -2
  154. package/{ui.form-input-file → src/ui.form-input-file}/configs/default.config.js +9 -1
  155. package/{ui.form-input-file → src/ui.form-input-file}/index.stories.js +4 -4
  156. package/{ui.form-input-file → src/ui.form-input-file}/index.vue +14 -47
  157. package/src/ui.form-input-money/Docs.mdx +16 -0
  158. package/{ui.form-input-money → src/ui.form-input-money}/composables/attrs.composable.js +1 -1
  159. package/{ui.form-input-money → src/ui.form-input-money}/index.stories.js +4 -4
  160. package/{ui.form-input-money → src/ui.form-input-money}/index.vue +2 -2
  161. package/src/ui.form-input-number/Docs.mdx +16 -0
  162. package/{ui.form-input-number → src/ui.form-input-number}/composables/attrs.composable.js +2 -2
  163. package/{ui.form-input-number → src/ui.form-input-number}/index.stories.js +3 -3
  164. package/{ui.form-input-number → src/ui.form-input-number}/index.vue +1 -1
  165. package/{ui.form-input-rating → src/ui.form-input-rating}/composables/attrs.composable.js +2 -2
  166. package/{ui.form-input-rating → src/ui.form-input-rating}/index.stories.js +3 -3
  167. package/{ui.form-input-rating → src/ui.form-input-rating}/index.vue +2 -2
  168. package/{ui.form-input-search → src/ui.form-input-search}/composables/attrs.composable.js +1 -1
  169. package/{ui.form-input-search → src/ui.form-input-search}/index.stories.js +4 -4
  170. package/{ui.form-input-search → src/ui.form-input-search}/index.vue +1 -2
  171. package/src/ui.form-label/Docs.mdx +16 -0
  172. package/{ui.form-label → src/ui.form-label}/composables/attrs.composable.js +2 -2
  173. package/{ui.form-label → src/ui.form-label}/index.stories.js +5 -5
  174. package/{ui.form-label → src/ui.form-label}/index.vue +1 -1
  175. package/src/ui.form-radio/Docs.mdx +16 -0
  176. package/{ui.form-radio → src/ui.form-radio}/composables/attrs.composable.js +2 -2
  177. package/{ui.form-radio → src/ui.form-radio}/index.stories.js +3 -3
  178. package/{ui.form-radio → src/ui.form-radio}/index.vue +1 -1
  179. package/src/ui.form-radio-card/Docs.mdx +16 -0
  180. package/{ui.form-radio-card → src/ui.form-radio-card}/composables/attrs.composable.js +8 -3
  181. package/{ui.form-radio-card → src/ui.form-radio-card}/configs/default.config.js +1 -1
  182. package/{ui.form-radio-card → src/ui.form-radio-card}/index.stories.js +3 -3
  183. package/{ui.form-radio-card → src/ui.form-radio-card}/index.vue +11 -21
  184. package/{ui.form-radio-card → src/ui.form-radio-card}/services/variant.service.js +1 -1
  185. package/src/ui.form-radio-group/Docs.mdx +16 -0
  186. package/{ui.form-radio-group → src/ui.form-radio-group}/composables/attrs.composable.js +2 -2
  187. package/{ui.form-radio-group → src/ui.form-radio-group}/index.stories.js +3 -3
  188. package/{ui.form-radio-group → src/ui.form-radio-group}/index.vue +1 -1
  189. package/src/ui.form-select/Docs.mdx +16 -0
  190. package/{ui.form-select → src/ui.form-select}/composables/attrs.composable.js +2 -2
  191. package/{ui.form-select → src/ui.form-select}/configs/default.config.js +7 -0
  192. package/{ui.form-select → src/ui.form-select}/index.stories.js +4 -4
  193. package/{ui.form-select → src/ui.form-select}/index.vue +38 -72
  194. package/{ui.form-switch → src/ui.form-switch}/composables/attrs.composable.js +2 -2
  195. package/{ui.form-switch → src/ui.form-switch}/configs/default.config.js +4 -0
  196. package/{ui.form-switch → src/ui.form-switch}/index.stories.js +4 -4
  197. package/{ui.form-switch → src/ui.form-switch}/index.vue +3 -23
  198. package/{ui.form-switch → src/ui.form-switch}/services/variant.service.js +1 -1
  199. package/src/ui.form-textarea/Docs.mdx +16 -0
  200. package/{ui.form-textarea → src/ui.form-textarea}/composables/attrs.composable.js +2 -2
  201. package/{ui.form-textarea → src/ui.form-textarea}/index.stories.js +5 -5
  202. package/{ui.form-textarea → src/ui.form-textarea}/index.vue +2 -2
  203. package/{ui.image-avatar → src/ui.image-avatar}/composables/attrs.composable.js +2 -2
  204. package/{ui.image-avatar → src/ui.image-avatar}/index.stories.js +3 -3
  205. package/{ui.image-avatar → src/ui.image-avatar}/index.vue +1 -1
  206. package/src/ui.image-icon/Docs.mdx +16 -0
  207. package/{ui.image-icon → src/ui.image-icon}/composables/attrs.composable.js +2 -2
  208. package/{ui.image-icon → src/ui.image-icon}/index.stories.js +3 -3
  209. package/{ui.image-icon → src/ui.image-icon}/index.vue +1 -1
  210. package/{ui.image-logo → src/ui.image-logo}/composables/attrs.composable.js +2 -2
  211. package/{ui.image-logo → src/ui.image-logo}/index.stories.js +3 -3
  212. package/{ui.image-logo → src/ui.image-logo}/index.vue +1 -1
  213. package/src/ui.loader-rendering/index.vue +72 -0
  214. package/src/ui.loader-rendering/store/index.js +17 -0
  215. package/src/ui.loader-top/components/TopProgress.vue +277 -0
  216. package/src/ui.loader-top/index.vue +221 -0
  217. package/src/ui.loader-top/store/index.js +59 -0
  218. package/{ui.navigation-pagination → src/ui.navigation-pagination}/composables/attrs.composable.js +2 -2
  219. package/{ui.navigation-pagination → src/ui.navigation-pagination}/index.stories.js +2 -2
  220. package/{ui.navigation-pagination → src/ui.navigation-pagination}/index.vue +2 -2
  221. package/{ui.navigation-stepper → src/ui.navigation-stepper}/composables/attrs.composable.js +1 -1
  222. package/{ui.navigation-stepper → src/ui.navigation-stepper}/index.stories.js +2 -2
  223. package/{ui.navigation-stepper → src/ui.navigation-stepper}/index.vue +2 -2
  224. package/{ui.navigation-tab → src/ui.navigation-tab}/composables/attrs.composable.js +2 -2
  225. package/{ui.navigation-tab → src/ui.navigation-tab}/index.stories.js +3 -3
  226. package/{ui.navigation-tab → src/ui.navigation-tab}/index.vue +1 -1
  227. package/{ui.navigation-tabs → src/ui.navigation-tabs}/composables/attrs.composable.js +2 -2
  228. package/{ui.navigation-tabs → src/ui.navigation-tabs}/index.stories.js +2 -2
  229. package/{ui.navigation-tabs → src/ui.navigation-tabs}/index.vue +2 -2
  230. package/src/ui.notify/index.stories.js +102 -0
  231. package/src/ui.notify/index.vue +248 -0
  232. package/src/ui.notify/services/index.js +87 -0
  233. package/{ui.other-dot → src/ui.other-dot}/composables/attrs.composable.js +2 -2
  234. package/{ui.other-dot → src/ui.other-dot}/index.stories.js +3 -3
  235. package/{ui.other-dot → src/ui.other-dot}/index.vue +1 -1
  236. package/{ui.other-loader → src/ui.other-loader}/composables/attrs.composable.js +2 -2
  237. package/{ui.other-loader → src/ui.other-loader}/index.stories.js +3 -3
  238. package/{ui.other-loader → src/ui.other-loader}/index.vue +1 -1
  239. package/{ui.text-alert → src/ui.text-alert}/composables/attrs.composable.js +2 -2
  240. package/{ui.text-alert → src/ui.text-alert}/configs/default.config.js +1 -1
  241. package/{ui.text-alert → src/ui.text-alert}/index.stories.js +3 -3
  242. package/{ui.text-alert → src/ui.text-alert}/index.vue +2 -2
  243. package/src/ui.text-badge/Docs.mdx +16 -0
  244. package/{ui.text-badge → src/ui.text-badge}/composables/attrs.composable.js +2 -2
  245. package/{ui.text-badge → src/ui.text-badge}/index.stories.js +5 -5
  246. package/{ui.text-badge → src/ui.text-badge}/index.vue +1 -1
  247. package/{ui.text-block → src/ui.text-block}/composables/attrs.composable.js +2 -2
  248. package/{ui.text-block → src/ui.text-block}/index.stories.js +3 -3
  249. package/{ui.text-block → src/ui.text-block}/index.vue +1 -1
  250. package/src/ui.text-empty/Docs.mdx +16 -0
  251. package/{ui.text-empty → src/ui.text-empty}/composables/attrs.composable.js +2 -2
  252. package/{ui.text-empty → src/ui.text-empty}/index.stories.js +5 -5
  253. package/{ui.text-empty → src/ui.text-empty}/index.vue +1 -1
  254. package/{ui.text-file → src/ui.text-file}/composables/attrs.composable.js +2 -2
  255. package/{ui.text-file → src/ui.text-file}/index.stories.js +2 -2
  256. package/{ui.text-file → src/ui.text-file}/index.vue +3 -3
  257. package/{ui.text-files → src/ui.text-files}/composables/attrs.composable.js +1 -1
  258. package/{ui.text-files → src/ui.text-files}/index.stories.js +2 -2
  259. package/{ui.text-files → src/ui.text-files}/index.vue +2 -2
  260. package/src/ui.text-header/Docs.mdx +16 -0
  261. package/{ui.text-header → src/ui.text-header}/composables/attrs.composable.js +2 -2
  262. package/{ui.text-header → src/ui.text-header}/index.stories.js +3 -3
  263. package/{ui.text-header → src/ui.text-header}/index.vue +1 -1
  264. package/src/ui.text-money/Docs.mdx +16 -0
  265. package/{ui.text-money → src/ui.text-money}/composables/attrs.composable.js +2 -2
  266. package/{ui.text-money → src/ui.text-money}/index.stories.js +6 -6
  267. package/{ui.text-money → src/ui.text-money}/index.vue +1 -1
  268. package/src/ui.viewport/index.vue +78 -0
  269. package/src/ui.viewport/store/index.js +47 -0
  270. package/tailwind.config.js +69 -0
  271. package/vite.config.mjs +39 -0
  272. package/vueless.config.js +7 -0
  273. package/web-types.json +7187 -0
  274. package/library.vue-tailwind-3/TDatepicker/components/t-date-trigger.js +0 -257
  275. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-navigator.js +0 -600
  276. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-time-selector.js +0 -522
  277. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-days-day.js +0 -289
  278. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-days.js +0 -236
  279. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar-headers.js +0 -64
  280. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-calendar.js +0 -159
  281. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-months-month.js +0 -106
  282. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-months.js +0 -97
  283. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-years-year.js +0 -117
  284. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view-years.js +0 -104
  285. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views-view.js +0 -294
  286. package/library.vue-tailwind-3/TDatepicker/components/t-datepicker-views.js +0 -212
  287. package/library.vue-tailwind-3/TDatepicker/components/t-toggle.js +0 -323
  288. package/library.vue-tailwind-3/TDatepicker/index.js +0 -1051
  289. package/library.vue-tailwind-3/base/Component.js +0 -126
  290. package/library.vue-tailwind-3/base/HtmlInput.js +0 -38
  291. package/library.vue-tailwind-3/base/TextInput.js +0 -102
  292. package/library.vue-tailwind-3/index.js +0 -7
  293. package/library.vue-tailwind-3/l10n/ar.js +0 -27
  294. package/library.vue-tailwind-3/l10n/at.js +0 -29
  295. package/library.vue-tailwind-3/l10n/az.js +0 -40
  296. package/library.vue-tailwind-3/l10n/be.js +0 -35
  297. package/library.vue-tailwind-3/l10n/bg.js +0 -41
  298. package/library.vue-tailwind-3/l10n/bn.js +0 -39
  299. package/library.vue-tailwind-3/l10n/bs.js +0 -28
  300. package/library.vue-tailwind-3/l10n/cat.js +0 -59
  301. package/library.vue-tailwind-3/l10n/cs.js +0 -35
  302. package/library.vue-tailwind-3/l10n/cy.js +0 -68
  303. package/library.vue-tailwind-3/l10n/da.js +0 -31
  304. package/library.vue-tailwind-3/l10n/de.js +0 -30
  305. package/library.vue-tailwind-3/l10n/default.js +0 -54
  306. package/library.vue-tailwind-3/l10n/eo.js +0 -31
  307. package/library.vue-tailwind-3/l10n/es.js +0 -32
  308. package/library.vue-tailwind-3/l10n/et.js +0 -46
  309. package/library.vue-tailwind-3/l10n/fa.js +0 -41
  310. package/library.vue-tailwind-3/l10n/fi.js +0 -50
  311. package/library.vue-tailwind-3/l10n/fo.js +0 -40
  312. package/library.vue-tailwind-3/l10n/fr.js +0 -48
  313. package/library.vue-tailwind-3/l10n/ga.js +0 -36
  314. package/library.vue-tailwind-3/l10n/gr.js +0 -33
  315. package/library.vue-tailwind-3/l10n/he.js +0 -41
  316. package/library.vue-tailwind-3/l10n/hi.js +0 -39
  317. package/library.vue-tailwind-3/l10n/hr.js +0 -41
  318. package/library.vue-tailwind-3/l10n/hu.js +0 -46
  319. package/library.vue-tailwind-3/l10n/id.js +0 -30
  320. package/library.vue-tailwind-3/l10n/index.js +0 -127
  321. package/library.vue-tailwind-3/l10n/is.js +0 -40
  322. package/library.vue-tailwind-3/l10n/it.js +0 -31
  323. package/library.vue-tailwind-3/l10n/ja.js +0 -42
  324. package/library.vue-tailwind-3/l10n/ka.js +0 -35
  325. package/library.vue-tailwind-3/l10n/km.js +0 -45
  326. package/library.vue-tailwind-3/l10n/ko.js +0 -41
  327. package/library.vue-tailwind-3/l10n/kz.js +0 -34
  328. package/library.vue-tailwind-3/l10n/lt.js +0 -41
  329. package/library.vue-tailwind-3/l10n/lv.js +0 -37
  330. package/library.vue-tailwind-3/l10n/mk.js +0 -30
  331. package/library.vue-tailwind-3/l10n/mn.js +0 -42
  332. package/library.vue-tailwind-3/l10n/ms.js +0 -28
  333. package/library.vue-tailwind-3/l10n/my.js +0 -42
  334. package/library.vue-tailwind-3/l10n/nl.js +0 -48
  335. package/library.vue-tailwind-3/l10n/no.js +0 -31
  336. package/library.vue-tailwind-3/l10n/pa.js +0 -27
  337. package/library.vue-tailwind-3/l10n/pl.js +0 -31
  338. package/library.vue-tailwind-3/l10n/pt.js +0 -36
  339. package/library.vue-tailwind-3/l10n/ro.js +0 -29
  340. package/library.vue-tailwind-3/l10n/ru.js +0 -48
  341. package/library.vue-tailwind-3/l10n/si.js +0 -40
  342. package/library.vue-tailwind-3/l10n/sk.js +0 -32
  343. package/library.vue-tailwind-3/l10n/sl.js +0 -32
  344. package/library.vue-tailwind-3/l10n/sq.js +0 -27
  345. package/library.vue-tailwind-3/l10n/sr-cyr.js +0 -29
  346. package/library.vue-tailwind-3/l10n/sr.js +0 -30
  347. package/library.vue-tailwind-3/l10n/sv.js +0 -30
  348. package/library.vue-tailwind-3/l10n/th.js +0 -43
  349. package/library.vue-tailwind-3/l10n/tr.js +0 -32
  350. package/library.vue-tailwind-3/l10n/uk.js +0 -28
  351. package/library.vue-tailwind-3/l10n/uz.js +0 -35
  352. package/library.vue-tailwind-3/l10n/uz_latn.js +0 -48
  353. package/library.vue-tailwind-3/l10n/vn.js +0 -41
  354. package/library.vue-tailwind-3/l10n/zh-tw.js +0 -41
  355. package/library.vue-tailwind-3/l10n/zh.js +0 -41
  356. package/library.vue-tailwind-3/services/date.service.js +0 -294
  357. package/library.vue-tailwind-3/services/formatting.service.js +0 -205
  358. package/library.vue-tailwind-3/services/vueTailwind.service.js +0 -41
  359. package/library.vue-tailwind-3/t-alert.js +0 -151
  360. package/library.vue-tailwind-3/t-button.js +0 -243
  361. package/library.vue-tailwind-3/t-card.js +0 -98
  362. package/library.vue-tailwind-3/t-checkbox.js +0 -292
  363. package/library.vue-tailwind-3/t-dropdown.js +0 -322
  364. package/library.vue-tailwind-3/t-radio.js +0 -301
  365. package/ui.container-card/Docs.mdx +0 -16
  366. package/ui.container-divider/Docs.mdx +0 -16
  367. package/ui.container-group/Docs.mdx +0 -16
  368. package/ui.container-groups/Docs.mdx +0 -16
  369. package/ui.container-modal/Docs.mdx +0 -16
  370. package/ui.container-modal-confirm/Docs.mdx +0 -16
  371. package/ui.container-page/Docs.mdx +0 -16
  372. package/ui.container-row/Docs.mdx +0 -16
  373. package/ui.data-table/Docs.mdx +0 -16
  374. package/ui.dropdown-badge/Docs.mdx +0 -16
  375. package/ui.dropdown-button/Docs.mdx +0 -16
  376. package/ui.dropdown-item/Docs.mdx +0 -16
  377. package/ui.dropdown-link/Docs.mdx +0 -16
  378. package/ui.dropdown-list/Docs.mdx +0 -16
  379. package/ui.form-calendar/services/date.service.js +0 -121
  380. package/ui.form-checkbox/Docs.mdx +0 -16
  381. package/ui.form-checkbox-group/Docs.mdx +0 -16
  382. package/ui.form-checkbox-multi-state/Docs.mdx +0 -16
  383. package/ui.form-input/Docs.mdx +0 -16
  384. package/ui.form-input-money/Docs.mdx +0 -16
  385. package/ui.form-input-number/Docs.mdx +0 -16
  386. package/ui.form-label/Docs.mdx +0 -16
  387. package/ui.form-radio/Docs.mdx +0 -16
  388. package/ui.form-radio-card/Docs.mdx +0 -16
  389. package/ui.form-radio-group/Docs.mdx +0 -16
  390. package/ui.form-select/Docs.mdx +0 -16
  391. package/ui.form-textarea/Docs.mdx +0 -16
  392. package/ui.image-icon/Docs.mdx +0 -16
  393. package/ui.text-badge/Docs.mdx +0 -16
  394. package/ui.text-empty/Docs.mdx +0 -16
  395. package/ui.text-header/Docs.mdx +0 -16
  396. package/ui.text-money/Docs.mdx +0 -16
  397. /package/{library.web-types-gen → .web-types-gen}/index.js +0 -0
  398. /package/{library.web-types-gen → .web-types-gen}/lib/build.js +0 -0
  399. /package/{library.web-types-gen → .web-types-gen}/package.json +0 -0
  400. /package/{_readme → readme}/README.md +0 -0
  401. /package/{_readme → readme}/UGroup.md +0 -0
  402. /package/{_readme → readme}/UNotify.md +0 -0
  403. /package/{_readme → readme}/UPage.md +0 -0
  404. /package/{_readme → readme}/UTopLoader.md +0 -0
  405. /package/{_readme → readme}/customization.md +0 -0
  406. /package/{_readme → readme}/installation.md +0 -0
  407. /package/{_readme → readme}/storybook-pages/Customisation.mdx +0 -0
  408. /package/{_readme → readme}/storybook-pages/Installation.mdx +0 -0
  409. /package/{library.web-types-gen → src/library.web-types-gen}/lib/config.js +0 -0
  410. /package/{plugin.vite → src/plugin.vite}/index.js +0 -0
  411. /package/{plugin.vite → src/plugin.vite}/services/svgLoader.service.js +0 -0
  412. /package/{plugin.vite → src/plugin.vite}/services/unpluginComponentsResolver.js +0 -0
  413. /package/{service.storybook → src/service.storybook}/index.js +0 -0
  414. /package/{ui.button → src/ui.button}/constants/index.js +0 -0
  415. /package/{ui.button-link → src/ui.button-link}/constants/index.js +0 -0
  416. /package/{ui.button-toggle → src/ui.button-toggle}/configs/default.config.js +0 -0
  417. /package/{ui.button-toggle → src/ui.button-toggle}/constants/index.js +0 -0
  418. /package/{ui.button-toggle-item → src/ui.button-toggle-item}/configs/default.config.js +0 -0
  419. /package/{ui.button-toggle-item → src/ui.button-toggle-item}/constants/index.js +0 -0
  420. /package/{ui.container-accordion → src/ui.container-accordion}/configs/default.config.js +0 -0
  421. /package/{ui.container-accordion → src/ui.container-accordion}/constants/index.js +0 -0
  422. /package/{ui.container-card → src/ui.container-card}/configs/default.config.js +0 -0
  423. /package/{ui.container-card → src/ui.container-card}/constants/index.js +0 -0
  424. /package/{ui.container-divider → src/ui.container-divider}/configs/default.config.js +0 -0
  425. /package/{ui.container-divider → src/ui.container-divider}/constants/index.js +0 -0
  426. /package/{ui.container-group → src/ui.container-group}/configs/default.config.js +0 -0
  427. /package/{ui.container-group → src/ui.container-group}/constants/index.js +0 -0
  428. /package/{ui.container-groups → src/ui.container-groups}/configs/default.config.js +0 -0
  429. /package/{ui.container-groups → src/ui.container-groups}/index.vue +0 -0
  430. /package/{ui.container-modal → src/ui.container-modal}/configs/default.config.js +0 -0
  431. /package/{ui.container-modal → src/ui.container-modal}/constants/index.js +0 -0
  432. /package/{ui.container-modal-confirm → src/ui.container-modal-confirm}/constants/index.js +0 -0
  433. /package/{ui.container-page → src/ui.container-page}/configs/default.config.js +0 -0
  434. /package/{ui.container-page → src/ui.container-page}/constants/index.js +0 -0
  435. /package/{ui.container-row → src/ui.container-row}/configs/default.config.js +0 -0
  436. /package/{ui.container-row → src/ui.container-row}/constants/index.js +0 -0
  437. /package/{ui.data-list → src/ui.data-list}/configs/default.config.js +0 -0
  438. /package/{ui.data-list → src/ui.data-list}/constants/index.js +0 -0
  439. /package/{ui.data-table → src/ui.data-table}/constants/index.js +0 -0
  440. /package/{ui.data-table → src/ui.data-table}/services/table.service.js +0 -0
  441. /package/{ui.data-table-cell → src/ui.data-table-cell}/configs/default.config.js +0 -0
  442. /package/{ui.data-table-cell → src/ui.data-table-cell}/constants/index.js +0 -0
  443. /package/{ui.dropdown-badge → src/ui.dropdown-badge}/configs/default.config.js +0 -0
  444. /package/{ui.dropdown-badge → src/ui.dropdown-badge}/constants/index.js +0 -0
  445. /package/{ui.dropdown-button → src/ui.dropdown-button}/configs/default.config.js +0 -0
  446. /package/{ui.dropdown-button → src/ui.dropdown-button}/constants/index.js +0 -0
  447. /package/{ui.dropdown-item → src/ui.dropdown-item}/configs/default.config.js +0 -0
  448. /package/{ui.dropdown-item → src/ui.dropdown-item}/index.vue +0 -0
  449. /package/{ui.dropdown-link → src/ui.dropdown-link}/configs/default.config.js +0 -0
  450. /package/{ui.dropdown-link → src/ui.dropdown-link}/constants/index.js +0 -0
  451. /package/{ui.dropdown-list → src/ui.dropdown-list}/composables/usePointer.js +0 -0
  452. /package/{ui.dropdown-list → src/ui.dropdown-list}/constants/index.js +0 -0
  453. /package/{ui.form-calendar → src/ui.form-calendar}/components/MonthView.vue +0 -0
  454. /package/{ui.form-calendar → src/ui.form-calendar}/components/YearView.vue +0 -0
  455. /package/{ui.form-calendar → src/ui.form-calendar}/services/formatting.service.js +0 -0
  456. /package/{ui.form-checkbox → src/ui.form-checkbox}/constants/index.js +0 -0
  457. /package/{ui.form-checkbox-group → src/ui.form-checkbox-group}/configs/default.config.js +0 -0
  458. /package/{ui.form-checkbox-group → src/ui.form-checkbox-group}/constants/index.js +0 -0
  459. /package/{ui.form-checkbox-multi-state → src/ui.form-checkbox-multi-state}/configs/default.config.js +0 -0
  460. /package/{ui.form-checkbox-multi-state → src/ui.form-checkbox-multi-state}/constants/index.js +0 -0
  461. /package/{ui.form-color-picker → src/ui.form-color-picker}/configs/default.config.js +0 -0
  462. /package/{ui.form-color-picker → src/ui.form-color-picker}/constants/index.js +0 -0
  463. /package/{ui.form-date-picker → src/ui.form-date-picker}/constants/index.js +0 -0
  464. /package/{ui.form-input → src/ui.form-input}/assets/fonts/text-security-disc.woff +0 -0
  465. /package/{ui.form-input → src/ui.form-input}/configs/default.config.js +0 -0
  466. /package/{ui.form-input → src/ui.form-input}/constants/index.js +0 -0
  467. /package/{ui.form-input-file → src/ui.form-input-file}/constants/index.js +0 -0
  468. /package/{ui.form-input-money → src/ui.form-input-money}/composables/useFormatCurrency.js +0 -0
  469. /package/{ui.form-input-money → src/ui.form-input-money}/configs/default.config.js +0 -0
  470. /package/{ui.form-input-money → src/ui.form-input-money}/constants/index.js +0 -0
  471. /package/{ui.form-input-money → src/ui.form-input-money}/services/format.service.js +0 -0
  472. /package/{ui.form-input-number → src/ui.form-input-number}/configs/default.config.js +0 -0
  473. /package/{ui.form-input-number → src/ui.form-input-number}/constants/index.js +0 -0
  474. /package/{ui.form-input-rating → src/ui.form-input-rating}/configs/default.config.js +0 -0
  475. /package/{ui.form-input-rating → src/ui.form-input-rating}/constants/index.js +0 -0
  476. /package/{ui.form-input-search → src/ui.form-input-search}/configs/default.config.js +0 -0
  477. /package/{ui.form-input-search → src/ui.form-input-search}/constants/index.js +0 -0
  478. /package/{ui.form-label → src/ui.form-label}/configs/default.config.js +0 -0
  479. /package/{ui.form-label → src/ui.form-label}/constants/index.js +0 -0
  480. /package/{ui.form-radio → src/ui.form-radio}/configs/default.config.js +0 -0
  481. /package/{ui.form-radio → src/ui.form-radio}/constants/index.js +0 -0
  482. /package/{ui.form-radio-card → src/ui.form-radio-card}/constants/index.js +0 -0
  483. /package/{ui.form-radio-group → src/ui.form-radio-group}/configs/default.config.js +0 -0
  484. /package/{ui.form-radio-group → src/ui.form-radio-group}/constants/index.js +0 -0
  485. /package/{ui.form-select → src/ui.form-select}/constants/index.js +0 -0
  486. /package/{ui.form-select → src/ui.form-select}/services/select.service.js +0 -0
  487. /package/{ui.form-switch → src/ui.form-switch}/constants/index.js +0 -0
  488. /package/{ui.form-textarea → src/ui.form-textarea}/configs/default.config.js +0 -0
  489. /package/{ui.form-textarea → src/ui.form-textarea}/constants/index.js +0 -0
  490. /package/{ui.image-avatar → src/ui.image-avatar}/configs/default.config.js +0 -0
  491. /package/{ui.image-avatar → src/ui.image-avatar}/constants/index.js +0 -0
  492. /package/{ui.image-avatar → src/ui.image-avatar}/default-avatar.png +0 -0
  493. /package/{ui.image-icon → src/ui.image-icon}/configs/default.config.js +0 -0
  494. /package/{ui.image-icon → src/ui.image-icon}/constants/index.js +0 -0
  495. /package/{ui.image-logo → src/ui.image-logo}/configs/default.config.js +0 -0
  496. /package/{ui.image-logo → src/ui.image-logo}/constants/index.js +0 -0
  497. /package/{ui.navigation-pagination → src/ui.navigation-pagination}/configs/default.config.js +0 -0
  498. /package/{ui.navigation-pagination → src/ui.navigation-pagination}/constants/index.js +0 -0
  499. /package/{ui.navigation-stepper → src/ui.navigation-stepper}/configs/default.config.js +0 -0
  500. /package/{ui.navigation-stepper → src/ui.navigation-stepper}/constants/index.js +0 -0
  501. /package/{ui.navigation-tab → src/ui.navigation-tab}/configs/default.config.js +0 -0
  502. /package/{ui.navigation-tab → src/ui.navigation-tab}/constants/index.js +0 -0
  503. /package/{ui.navigation-tabs → src/ui.navigation-tabs}/configs/default.config.js +0 -0
  504. /package/{ui.navigation-tabs → src/ui.navigation-tabs}/constants/index.js +0 -0
  505. /package/{ui.other-dot → src/ui.other-dot}/configs/default.config.js +0 -0
  506. /package/{ui.other-dot → src/ui.other-dot}/constants/index.js +0 -0
  507. /package/{ui.other-loader → src/ui.other-loader}/configs/default.config.js +0 -0
  508. /package/{ui.other-loader → src/ui.other-loader}/constants/index.js +0 -0
  509. /package/{ui.text-alert → src/ui.text-alert}/constatns/index.js +0 -0
  510. /package/{ui.text-badge → src/ui.text-badge}/configs/default.config.js +0 -0
  511. /package/{ui.text-badge → src/ui.text-badge}/constants/index.js +0 -0
  512. /package/{ui.text-block → src/ui.text-block}/configs/default.config.js +0 -0
  513. /package/{ui.text-block → src/ui.text-block}/constatns/index.js +0 -0
  514. /package/{ui.text-empty → src/ui.text-empty}/configs/default.config.js +0 -0
  515. /package/{ui.text-empty → src/ui.text-empty}/constants/index.js +0 -0
  516. /package/{ui.text-file → src/ui.text-file}/configs/default.config.js +0 -0
  517. /package/{ui.text-files → src/ui.text-files}/configs/default.config.js +0 -0
  518. /package/{ui.text-files → src/ui.text-files}/constants/index.js +0 -0
  519. /package/{ui.text-header → src/ui.text-header}/configs/default.config.js +0 -0
  520. /package/{ui.text-header → src/ui.text-header}/constants/index.js +0 -0
  521. /package/{ui.text-money → src/ui.text-money}/assets/credit.svg +0 -0
  522. /package/{ui.text-money → src/ui.text-money}/assets/debit.svg +0 -0
  523. /package/{ui.text-money → src/ui.text-money}/configs/default.config.js +0 -0
  524. /package/{ui.text-money → src/ui.text-money}/constants/index.js +0 -0
  525. /package/{ui.text-money → src/ui.text-money}/services/money.services.js +0 -0
@@ -0,0 +1,929 @@
1
+ <template>
2
+ <div>
3
+ <UInput
4
+ v-if="isVariant.input"
5
+ :id="id"
6
+ v-model="userFormatDate"
7
+ :label="label"
8
+ :placeholder="placeholder"
9
+ :error="error"
10
+ :description="description"
11
+ readonly
12
+ :disabled="disabled"
13
+ :size="size"
14
+ v-bind="inputAttrs"
15
+ @focus="activate"
16
+ >
17
+ <template #left>
18
+ <slot name="left" />
19
+ </template>
20
+
21
+ <template #right-icon>
22
+ <slot name="right-icon" />
23
+ </template>
24
+
25
+ <template #right>
26
+ <slot name="right" />
27
+ </template>
28
+ </UInput>
29
+
30
+ <div v-if="isVariant.button" v-bind="buttonWrapperAttrs">
31
+ <UButton
32
+ :disabled="disabled"
33
+ :size="size"
34
+ v-bind="shiftRangeButtonAttrs"
35
+ @click="onClickShiftRange('prev')"
36
+ >
37
+ <UIcon interactive size="sm" :name="config.prevIconName" v-bind="prevIconAttrs" />
38
+ </UButton>
39
+
40
+ <UButton
41
+ :id="id"
42
+ :disabled="disabled"
43
+ :size="size"
44
+ :label="userFormatDate"
45
+ v-bind="buttonAttrs"
46
+ @click="activate"
47
+ />
48
+
49
+ <UButton
50
+ :disabled="disabled"
51
+ :size="size"
52
+ v-bind="shiftRangeButtonAttrs"
53
+ @click="onClickShiftRange('next')"
54
+ >
55
+ <UIcon interactive size="sm" :name="config.nextIconName" v-bind="nextIconAttrs" />
56
+ </UButton>
57
+ </div>
58
+
59
+ <Transition v-bind="config.menuTransition">
60
+ <div
61
+ v-if="isShownMenu"
62
+ ref="menuRef"
63
+ tabindex="-1"
64
+ v-bind="menuAttrs"
65
+ @blur="onBlur"
66
+ @keydown.esc="deactivate"
67
+ @mouseleave="onMouseoutMenu"
68
+ >
69
+ <div v-bind="periodsRowAttrs">
70
+ <div
71
+ v-for="periodButton in periods"
72
+ :key="periodButton.name"
73
+ v-bind="periodButtonAttrs(getPeriodButtonsClasses(periodButton.name))"
74
+ @click="onClickPeriodButton(periodButton.name)"
75
+ >
76
+ {{ periodButton.title }}
77
+ </div>
78
+ </div>
79
+
80
+ <div v-bind="periodsRowAttrs">
81
+ <div
82
+ v-if="customRangeButton.range.to && customRangeButton.range.from"
83
+ v-bind="periodButtonAttrs(getPeriodButtonsClasses(PERIOD.custom))"
84
+ @click="onClickCustomRangeButton"
85
+ >
86
+ {{ customRangeButton.label }}
87
+ <span v-if="customRangeButton.description" v-text="customRangeButton.description" />
88
+ </div>
89
+
90
+ <div
91
+ v-bind="periodButtonAttrs(getPeriodButtonsClasses(PERIOD.ownRange))"
92
+ @click="onClickOwnRange"
93
+ >
94
+ <UIcon name="apps" size="xs" />
95
+
96
+ {{ locale.ownRange }}
97
+ </div>
98
+ </div>
99
+
100
+ <template v-if="!isPeriod.ownRange && !isPeriod.custom">
101
+ <div v-bind="rangeSwitchWrapperAttrs">
102
+ <UIcon
103
+ interactive
104
+ color="grayscale"
105
+ size="sm"
106
+ :name="config.prevIconName"
107
+ v-bind="prevIconAttrs"
108
+ @click="onClickShiftDatesList('prev')"
109
+ />
110
+
111
+ <div v-bind="rangeSwitchTitleAttrs">
112
+ {{ rangeSwitchTitle }}
113
+ </div>
114
+ <UIcon
115
+ interactive
116
+ class="icon"
117
+ size="sm"
118
+ :name="config.nextIconName"
119
+ v-bind="nextIconAttrs"
120
+ @click="onClickShiftDatesList('next')"
121
+ />
122
+ </div>
123
+
124
+ <div v-bind="periodDateListAttrs(getPeriodDateListClasses())">
125
+ <button
126
+ v-for="date in periodDateList"
127
+ :key="date.title"
128
+ :disabled="isDatePeriodOutOfRange(date)"
129
+ v-bind="periodDateAttrs(getPeriodDateClasses(date))"
130
+ @click="selectDate(date), toggleMenu()"
131
+ >
132
+ {{ date.title }}
133
+ </button>
134
+ </div>
135
+ </template>
136
+
137
+ <div v-if="isPeriod.ownRange" v-bind="rangeInputWrapperAttrs">
138
+ <UInput
139
+ ref="rangeInputStartRef"
140
+ v-model="rangeStart"
141
+ :error="inputRangeStartError"
142
+ v-bind="rangeInputAttrs"
143
+ :name="rangeInputName"
144
+ @input="onInputRangeInput($event, INPUT_RANGE_TYPE.start)"
145
+ @blur="onBlurRangeInput"
146
+ />
147
+
148
+ <UInput
149
+ ref="rangeInputEndRef"
150
+ v-model="rangeEnd"
151
+ :error="inputRangeEndError"
152
+ v-bind="rangeInputAttrs"
153
+ :name="rangeInputName"
154
+ @input="onInputRangeInput($event, INPUT_RANGE_TYPE.end)"
155
+ @blur="onBlurRangeInput"
156
+ />
157
+ </div>
158
+
159
+ <div v-bind="inputRangeErrorAttrs">
160
+ {{ inputRangeEndError || inputRangeStartError }}
161
+ </div>
162
+
163
+ <UCalendar
164
+ v-if="isPeriod.ownRange"
165
+ v-model="calendarValue"
166
+ :min-date="minDate"
167
+ :max-date="maxDate"
168
+ v-bind="calendarAttrs"
169
+ :date-format="RANGE_INPUT_FORMAT"
170
+ range
171
+ @mouseenter="onMouseoverCalendar"
172
+ />
173
+ </div>
174
+ </Transition>
175
+ </div>
176
+ </template>
177
+
178
+ <script setup>
179
+ import { computed, watch, ref, nextTick } from "vue";
180
+
181
+ import {
182
+ addDays,
183
+ gmtToUTC,
184
+ getUnixTimestampFromDate,
185
+ addMonths,
186
+ addYears,
187
+ getDateFromUnixTimestamp,
188
+ getSortedLocale,
189
+ utcToGMT,
190
+ getEndOfMonth,
191
+ getEndOfQuarter,
192
+ getEndOfWeek,
193
+ getEndOfYear,
194
+ getStartOfMonth,
195
+ getStartOfQuarter,
196
+ getStartOfWeek,
197
+ getStartOfYear,
198
+ getDatesDifference,
199
+ } from "../ui.form-calendar/services/date.service";
200
+ import {
201
+ getWeekDateList,
202
+ getYearDateList,
203
+ getQuartersDateList,
204
+ getMonthsDateList,
205
+ } from "./services/dateRange.service";
206
+ import { wrongDateFormat, wrongMonthNumber, wrongDayNumber } from "./services/validation.service";
207
+ import {
208
+ dateIsOutOfRange,
209
+ formatDate,
210
+ parseDate,
211
+ } from "../ui.form-calendar/services/calendar.service";
212
+ import UIService, { getRandomId } from "../service.ui";
213
+
214
+ import useAttrs from "./composables/attrs.composable";
215
+ import { useStore } from "vuex";
216
+
217
+ import { LOCALE_TYPE } from "../ui.form-calendar/constants";
218
+ import defaultConfig from "./configs/default.config";
219
+ import {
220
+ UDatePickerRange,
221
+ DATE_PICKER_BUTTON_TYPE,
222
+ DATE_PICKER_INPUT_TYPE,
223
+ PERIOD,
224
+ RANGE_INPUT_FORMAT,
225
+ INPUT_RANGE_TYPE,
226
+ } from "./constants";
227
+
228
+ defineOptions({ name: "UDatePickerRange" });
229
+
230
+ const props = defineProps({
231
+ /**
232
+ * Dater picker range value as object with from and to keys (timestamp).
233
+ */
234
+ modelValue: {
235
+ type: Object,
236
+ default: () => ({
237
+ from: null,
238
+ to: null,
239
+ }),
240
+ },
241
+
242
+ /**
243
+ * Custom range button.
244
+ */
245
+ customRangeButton: {
246
+ type: Object,
247
+ default: () => UIService.get(defaultConfig, UDatePickerRange).default.customRangeButton,
248
+ },
249
+
250
+ /**
251
+ * The variant of the date picker.
252
+ * @values button, input
253
+ */
254
+ variant: {
255
+ type: String,
256
+ default: UIService.get(defaultConfig, UDatePickerRange).default.variant,
257
+ },
258
+
259
+ /**
260
+ * Min date in format date string or Date.
261
+ */
262
+ minDate: {
263
+ type: [String, Date],
264
+ default: UIService.get(defaultConfig, UDatePickerRange).default.minDate,
265
+ },
266
+
267
+ /**
268
+ * Max date in format date string or Date.
269
+ */
270
+ maxDate: {
271
+ type: [String, Date],
272
+ default: UIService.get(defaultConfig, UDatePickerRange).default.maxDate,
273
+ },
274
+
275
+ /**
276
+ * Datepicker size.
277
+ * @values sm, md, lg
278
+ */
279
+ size: {
280
+ type: String,
281
+ default: UIService.get(defaultConfig, UDatePickerRange).default.size,
282
+ },
283
+
284
+ /**
285
+ * Label text for input type.
286
+ */
287
+ label: {
288
+ type: String,
289
+ default: "",
290
+ },
291
+
292
+ /**
293
+ * Input placeholder for input type.
294
+ */
295
+ placeholder: {
296
+ type: String,
297
+ default: "",
298
+ },
299
+
300
+ /**
301
+ * Datepicker description for input type.
302
+ */
303
+ description: {
304
+ type: String,
305
+ default: "",
306
+ },
307
+
308
+ /**
309
+ * Error message for input type.
310
+ */
311
+ error: {
312
+ type: String,
313
+ default: "",
314
+ },
315
+
316
+ /**
317
+ * Disable component.
318
+ */
319
+ disabled: {
320
+ type: Boolean,
321
+ default: UIService.get(defaultConfig, UDatePickerRange).default.disabled,
322
+ },
323
+
324
+ /**
325
+ * Unique element id.
326
+ * @ignore
327
+ */
328
+ id: {
329
+ type: String,
330
+ default: () => getRandomId(),
331
+ },
332
+
333
+ /**
334
+ * Component ui config object.
335
+ */
336
+ config: {
337
+ type: Object,
338
+ default: () => ({}),
339
+ },
340
+
341
+ /**
342
+ * Data-cy attribute for automated testing.
343
+ */
344
+ dataCy: {
345
+ type: String,
346
+ default: "",
347
+ },
348
+ });
349
+
350
+ const emit = defineEmits(["update:modelValue"]);
351
+
352
+ const isShownMenu = ref(false);
353
+
354
+ const {
355
+ config,
356
+ calendarAttrs,
357
+ inputAttrs,
358
+ menuAttrs,
359
+ periodsRowAttrs,
360
+ periodButtonAttrs,
361
+ rangeSwitchWrapperAttrs,
362
+ nextIconAttrs,
363
+ prevIconAttrs,
364
+ periodDateAttrs,
365
+ periodDateListAttrs,
366
+ rangeSwitchTitleAttrs,
367
+ buttonWrapperAttrs,
368
+ buttonAttrs,
369
+ shiftRangeButtonAttrs,
370
+ rangeInputAttrs,
371
+ rangeInputWrapperAttrs,
372
+ inputRangeErrorAttrs,
373
+ } = useAttrs(props, { isShownMenu });
374
+ const store = useStore();
375
+
376
+ const calendarValue = ref(props.modelValue);
377
+ const activeDate = ref(
378
+ props.modelValue.from !== null ? getDateFromUnixTimestamp(props.modelValue.from) : new Date(),
379
+ );
380
+ const period = ref(PERIOD.ownRange);
381
+ const periodDateList = ref(null);
382
+ const rangeStart = ref("");
383
+ const rangeEnd = ref("");
384
+ const inputRangeStartError = ref("");
385
+ const inputRangeEndError = ref("");
386
+ const isHoverEvent = ref(false);
387
+
388
+ const menuRef = ref(null);
389
+ const rangeInputStartRef = ref(null);
390
+ const rangeInputEndRef = ref(null);
391
+
392
+ const localValue = computed({
393
+ get: () => props.modelValue,
394
+ set: (value) => {
395
+ emit("update:modelValue", value);
396
+
397
+ activeDate.value = getDateFromUnixTimestamp(value.from || new Date());
398
+ },
399
+ });
400
+
401
+ const isMobileDevice = computed(() => store.getters["breakpoint/isMobileDevice"]);
402
+
403
+ const rangeInputName = computed(() => `rangeInput-${props.id}`);
404
+
405
+ const locale = computed(() => {
406
+ const currentLocale = props.config.i18n || config.value.i18n;
407
+ const formattedLocale = {
408
+ ...currentLocale,
409
+ months: {
410
+ shorthand: getSortedLocale(currentLocale.months.shorthand, LOCALE_TYPE.month),
411
+ longhand: getSortedLocale(currentLocale.months.longhand, LOCALE_TYPE.month),
412
+ },
413
+ weekdays: {
414
+ shorthand: getSortedLocale(currentLocale.weekdays.shorthand, LOCALE_TYPE.day),
415
+ longhand: getSortedLocale(currentLocale.weekdays.longhand, LOCALE_TYPE.day),
416
+ },
417
+ };
418
+
419
+ return formattedLocale;
420
+ });
421
+
422
+ const periods = computed(() => [
423
+ {
424
+ name: PERIOD.week,
425
+ title: locale.value.week,
426
+ },
427
+ {
428
+ name: PERIOD.month,
429
+ title: locale.value.month,
430
+ },
431
+ {
432
+ name: PERIOD.quarter,
433
+ title: locale.value.quarter,
434
+ },
435
+ {
436
+ name: PERIOD.year,
437
+ title: locale.value.year,
438
+ },
439
+ ]);
440
+
441
+ const isPeriod = computed(() => {
442
+ return {
443
+ week: period.value === PERIOD.week,
444
+ month: period.value === PERIOD.month,
445
+ quarter: period.value === PERIOD.quarter,
446
+ year: period.value === PERIOD.year,
447
+ ownRange: period.value === PERIOD.ownRange,
448
+ custom: period.value === PERIOD.custom,
449
+ };
450
+ });
451
+
452
+ const rangeSwitchTitle = computed(() => {
453
+ if (isPeriod.value.month || isPeriod.value.quarter) {
454
+ return String(activeDate.value.getFullYear());
455
+ }
456
+
457
+ if (isPeriod.value.year) {
458
+ return `${periodDateList.value.at(0).title} – ${periodDateList.value.at(-1).title}`;
459
+ }
460
+
461
+ if (isPeriod.value.week) {
462
+ return `${locale.value.months.longhand[activeDate.value.getMonth()]} ${activeDate.value.getFullYear()}`;
463
+ }
464
+
465
+ return "";
466
+ });
467
+
468
+ const isVariant = computed(() => ({
469
+ button: props.variant === DATE_PICKER_BUTTON_TYPE,
470
+ input: props.variant === DATE_PICKER_INPUT_TYPE,
471
+ }));
472
+
473
+ const userFormatDate = computed(() => {
474
+ if ((!localValue.value.from && !localValue.value.to) || !localValue.value.from) return "";
475
+
476
+ let title = "";
477
+
478
+ const isDefaultTitle = isPeriod.value.week || isPeriod.value.custom || isPeriod.value.ownRange;
479
+
480
+ const from = getDateFromUnixTimestamp(localValue.value.from);
481
+ const to = localValue.value.to !== null ? getDateFromUnixTimestamp(localValue.value.to) : null;
482
+
483
+ if (isDefaultTitle) {
484
+ let startMonthName = locale.value.months.longhand[from.getMonth()];
485
+ let startYear = from.getFullYear();
486
+ let endMonthName = locale.value.months.longhand[to?.getMonth()];
487
+ let endYear = to?.getFullYear();
488
+
489
+ if (startMonthName === endMonthName && endMonthName === endYear) {
490
+ startMonthName = "";
491
+ }
492
+
493
+ if (startYear.year === endYear) {
494
+ startYear = "";
495
+ }
496
+
497
+ const fromTitle = `${from.getDate()} ${startMonthName} ${startYear}`;
498
+ const toTitle = to ? `${to.getDate()} ${endMonthName} ${endYear}` : "";
499
+
500
+ title = `${fromTitle} – ${toTitle}`;
501
+ }
502
+
503
+ if (isPeriod.value.month) {
504
+ const startMonthName = locale.value.months.longhand[from.getMonth()];
505
+ const startYear = from.getFullYear();
506
+
507
+ title = `${startMonthName} ${startYear}`;
508
+ }
509
+
510
+ if (isPeriod.value.quarter || isPeriod.value.year) {
511
+ const startMonthName = locale.value.months.longhand[from.getMonth()];
512
+ const endMonthName = locale.value.months.longhand[to?.getMonth()];
513
+ const endYear = to?.getFullYear();
514
+
515
+ const fromTitle = `${from.getDate()} ${startMonthName}`;
516
+ const toTitle = to ? `${to.getDate()} ${endMonthName} ${endYear}` : "";
517
+
518
+ title = `${fromTitle} – ${toTitle}`;
519
+ }
520
+
521
+ if (isMobileDevice.value && !isPeriod.value.month && isVariant.value.button) {
522
+ const startDay = String(from.getDate()).padStart(2, "0");
523
+ const endDay = String(to?.getDate())?.padStart(2, "0");
524
+ const startMonth = String(from.getMonth()).padStart(2, "0");
525
+ const endMonth = String(to?.getMonth())?.padStart(2, "0");
526
+
527
+ const fromTitle = `${startDay}.${startMonth}`;
528
+ const toTitle = to ? `${endDay}.${endMonth} / ${to.getFullYear}` : "";
529
+
530
+ title = `${fromTitle} – ${toTitle}`;
531
+ }
532
+
533
+ return title;
534
+ });
535
+
536
+ watch(
537
+ calendarValue,
538
+ () => {
539
+ localValue.value = {
540
+ from:
541
+ calendarValue.value.from === null
542
+ ? calendarValue.value.from
543
+ : getUnixTimestampFromDate(gmtToUTC(getDateFromUnixTimestamp(calendarValue.value.from))),
544
+ to:
545
+ calendarValue.value.to === null
546
+ ? calendarValue.value.to
547
+ : getUnixTimestampFromDate(gmtToUTC(getDateFromUnixTimestamp(calendarValue.value.to))),
548
+ };
549
+
550
+ nextTick(() => menuRef.value?.focus());
551
+ },
552
+ { deep: true },
553
+ );
554
+
555
+ watch(
556
+ () => props.modelValue,
557
+ () => {
558
+ if (props.modelValue.to !== calendarValue.value.to) {
559
+ calendarValue.value.to = props.modelValue.to;
560
+ }
561
+
562
+ if (props.modelValue.from !== calendarValue.value.from) {
563
+ calendarValue.value.from = props.modelValue.from;
564
+ }
565
+
566
+ rangeStart.value = props.modelValue.from
567
+ ? formatDate(
568
+ getDateFromUnixTimestamp(props.modelValue.from),
569
+ RANGE_INPUT_FORMAT,
570
+ locale.value,
571
+ )
572
+ : "";
573
+
574
+ rangeEnd.value = props.modelValue.to
575
+ ? formatDate(getDateFromUnixTimestamp(props.modelValue.to), RANGE_INPUT_FORMAT, locale.value)
576
+ : "";
577
+
578
+ inputRangeStartError.value = "";
579
+ inputRangeEndError.value = "";
580
+ },
581
+ { deep: true, immediate: true },
582
+ );
583
+
584
+ watch(period, () => {
585
+ activeDate.value =
586
+ localValue.value.from !== null ? getDateFromUnixTimestamp(localValue.value.from) : new Date();
587
+ });
588
+
589
+ function onClickPeriodButton(periodName) {
590
+ const localDate =
591
+ localValue.value.from !== null ? getDateFromUnixTimestamp(localValue.value.from) : new Date();
592
+
593
+ if (periodName === PERIOD.week) {
594
+ periodDateList.value = getWeekDateList(localDate, config.value.i18n.months.shorthand);
595
+
596
+ period.value = PERIOD.week;
597
+ }
598
+
599
+ if (periodName === PERIOD.month) {
600
+ periodDateList.value = getMonthsDateList(localDate, locale.value.months.longhand);
601
+
602
+ period.value = PERIOD.month;
603
+ }
604
+
605
+ if (periodName === PERIOD.quarter) {
606
+ periodDateList.value = getQuartersDateList(localDate, locale.value.quarter);
607
+
608
+ period.value = PERIOD.quarter;
609
+ }
610
+
611
+ if (periodName === PERIOD.year) {
612
+ periodDateList.value = getYearDateList(localDate);
613
+
614
+ period.value = PERIOD.year;
615
+ }
616
+
617
+ selectDate(periodDateList.value.at(0));
618
+ }
619
+
620
+ function onClickOwnRange() {
621
+ period.value = PERIOD.ownRange;
622
+ }
623
+
624
+ function selectDate(date) {
625
+ localValue.value = {
626
+ from: date.startRange,
627
+ to: date.endRange,
628
+ };
629
+ }
630
+
631
+ function toggleMenu() {
632
+ isShownMenu.value = !isShownMenu.value;
633
+ }
634
+
635
+ function onClickCustomRangeButton() {
636
+ selectCustomRange();
637
+
638
+ isShownMenu.value = false;
639
+ period.value = PERIOD.custom;
640
+ }
641
+
642
+ function selectCustomRange() {
643
+ const from =
644
+ typeof props.customRangeButton.range.from === "number"
645
+ ? getDateFromUnixTimestamp(props.customRangeButton.range.from)
646
+ : props.customRangeButton.range.from;
647
+
648
+ const to =
649
+ typeof props.customRangeButton.range.to === "number"
650
+ ? getDateFromUnixTimestamp(props.customRangeButton.range.to)
651
+ : props.customRangeButton.range.to;
652
+
653
+ localValue.value = {
654
+ from: getUnixTimestampFromDate(gmtToUTC(from)),
655
+ to: getUnixTimestampFromDate(gmtToUTC(to)),
656
+ };
657
+ }
658
+
659
+ function isDatePeriodOutOfRange(datePeriod) {
660
+ return (
661
+ dateIsOutOfRange(
662
+ getDateFromUnixTimestamp(datePeriod.startRange),
663
+ props.minDate,
664
+ props.maxDate,
665
+ locale.value,
666
+ RANGE_INPUT_FORMAT,
667
+ ) ||
668
+ dateIsOutOfRange(
669
+ getDateFromUnixTimestamp(datePeriod.endRange),
670
+ props.minDate,
671
+ props.maxDate,
672
+ RANGE_INPUT_FORMAT,
673
+ )
674
+ );
675
+ }
676
+
677
+ function onClickShiftDatesList(action) {
678
+ const defaultRange = action === "prev" ? -1 : 1;
679
+ const yearRange = action === "prev" ? -12 : 12;
680
+
681
+ if (isPeriod.value.week) {
682
+ activeDate.value = addMonths(activeDate.value, defaultRange);
683
+ periodDateList.value = getWeekDateList(activeDate.value, config.value.i18n.months.shorthand);
684
+ }
685
+
686
+ if (isPeriod.value.month) {
687
+ activeDate.value = addYears(activeDate.value, defaultRange);
688
+ periodDateList.value = getMonthsDateList(activeDate.value, locale.value.months.longhand);
689
+ }
690
+
691
+ if (isPeriod.value.quarter) {
692
+ activeDate.value = addYears(activeDate.value, defaultRange);
693
+ periodDateList.value = getQuartersDateList(activeDate.value, locale.value.quarter);
694
+ }
695
+
696
+ if (isPeriod.value.year) {
697
+ activeDate.value = addYears(activeDate.value, yearRange);
698
+ periodDateList.value = getYearDateList(activeDate.value);
699
+ }
700
+ }
701
+
702
+ function getPeriodButtonsClasses(periodName) {
703
+ return period.value === periodName ? [config.value.periodButtonActive] : [];
704
+ }
705
+
706
+ function getPeriodDateClasses(date) {
707
+ return localValue.value.from === date.startRange ? [config.value.periodDateActive] : [];
708
+ }
709
+
710
+ function getPeriodDateListClasses() {
711
+ if (isPeriod.value.ownRange) return [];
712
+ if (isPeriod.value.week) return [config.value.periodDateWeekList];
713
+ if (isPeriod.value.month) return [config.value.periodDateMonthList];
714
+ if (isPeriod.value.quarter) return [config.value.periodDateQuarterList];
715
+ if (isPeriod.value.year) return [config.value.periodDateYearList];
716
+ }
717
+
718
+ function activate() {
719
+ isShownMenu.value = true;
720
+
721
+ nextTick(() => menuRef.value.focus());
722
+ }
723
+
724
+ function deactivate() {
725
+ isShownMenu.value = false;
726
+
727
+ isHoverEvent.value = false;
728
+ }
729
+
730
+ function onBlur(event) {
731
+ const { relatedTarget } = event;
732
+
733
+ if (!menuRef.value.contains(relatedTarget)) {
734
+ deactivate();
735
+ }
736
+ }
737
+
738
+ function onBlurRangeInput(event) {
739
+ const { relatedTarget } = event;
740
+
741
+ menuRef.value.focus();
742
+
743
+ if (!menuRef.value.contains(relatedTarget) && !isHoverEvent.value) {
744
+ deactivate();
745
+ }
746
+
747
+ isHoverEvent.value = false;
748
+ }
749
+
750
+ function onInputRangeInput(value, type) {
751
+ const isInvalidDateFormat = !wrongDateFormat(value);
752
+ const isInvalidMonthNumber = !wrongMonthNumber(value);
753
+ const isInvalidDayNumber = !wrongDayNumber(value);
754
+
755
+ let error = "";
756
+
757
+ if (isInvalidDateFormat && value) {
758
+ error = locale.value.dateFormatWithDot;
759
+ } else if (isInvalidMonthNumber && value) {
760
+ error = locale.value.notCorrectMonthNumber;
761
+ } else if (isInvalidDayNumber && value) {
762
+ error = locale.value.notCorrectDayNumber;
763
+ }
764
+
765
+ if (type === INPUT_RANGE_TYPE.start) {
766
+ inputRangeStartError.value = error;
767
+ }
768
+
769
+ if (type === INPUT_RANGE_TYPE.end) {
770
+ inputRangeEndError.value = error;
771
+ }
772
+
773
+ const parsedValue = gmtToUTC(parseDate(value || new Date(), RANGE_INPUT_FORMAT, locale.value));
774
+ const unixTimeValue = getUnixTimestampFromDate(parsedValue);
775
+ const isOutOfRange = dateIsOutOfRange(
776
+ parsedValue,
777
+ props.minDate,
778
+ props.maxDate,
779
+ locale.value,
780
+ RANGE_INPUT_FORMAT,
781
+ );
782
+ const isToLessThanFrom = unixTimeValue <= localValue.value.from;
783
+
784
+ if (type === INPUT_RANGE_TYPE.start && !error && !isOutOfRange) {
785
+ localValue.value.from = value ? unixTimeValue : "";
786
+ }
787
+
788
+ if (type === INPUT_RANGE_TYPE.end && !error && !isOutOfRange && !isToLessThanFrom) {
789
+ localValue.value.to = value ? unixTimeValue : "";
790
+ }
791
+ }
792
+
793
+ setDefaultPeriodForButton();
794
+
795
+ function setDefaultPeriodForButton() {
796
+ const from = utcToGMT(getDateFromUnixTimestamp(props.modelValue.to || new Date()));
797
+ const to = utcToGMT(getDateFromUnixTimestamp(props.modelValue.from || new Date()));
798
+
799
+ const isWeekPeriod =
800
+ String(from) === String(getStartOfWeek(from, { weekStartsOn: 1 })) &&
801
+ String(to) === String(getEndOfWeek(to, { weekStartsOn: 1 }));
802
+ const isMonthPeriod =
803
+ String(from) === String(getStartOfMonth(from)) &&
804
+ String(to) === String(getEndOfMonth(to)) &&
805
+ from.getMonth() === to.getMonth();
806
+ const isQuarterPeriod =
807
+ String(from) === String(getStartOfQuarter(from)) && String(to) === String(getEndOfQuarter(to));
808
+ const isYearPeriod =
809
+ String(from) === String(getStartOfYear(from)) && String(to) === String(getEndOfYear(to));
810
+
811
+ if (!props.modelValue.from && !props.modelValue.to) {
812
+ period.value = PERIOD.ownRange;
813
+ } else if (isYearPeriod) {
814
+ period.value = PERIOD.year;
815
+ } else if (isMonthPeriod) {
816
+ period.value = PERIOD.month;
817
+ } else if (isQuarterPeriod) {
818
+ period.value = PERIOD.quarter;
819
+ } else if (isWeekPeriod) {
820
+ period.value = PERIOD.week;
821
+ } else {
822
+ period.value = PERIOD.ownRange;
823
+ }
824
+ }
825
+
826
+ function onClickShiftRange(action) {
827
+ if (isPeriod.value.custom) {
828
+ period.value = PERIOD.ownRange;
829
+ }
830
+
831
+ const millisecondsPerSecond = 1000;
832
+ const secondsPerMinute = 60;
833
+ const minutesPerHour = 60;
834
+ const hoursPerDay = 24;
835
+
836
+ const millisecondsPerDay =
837
+ millisecondsPerSecond * secondsPerMinute * minutesPerHour * hoursPerDay;
838
+
839
+ const from = getDateFromUnixTimestamp(localValue.value.from);
840
+ const to = localValue.value.to ? getDateFromUnixTimestamp(localValue.value.to) : addDays(from, 1);
841
+ const daysDifference = Math.ceil(Math.abs(getDatesDifference(from, to)) / millisecondsPerDay);
842
+
843
+ if (action === "next") {
844
+ if (isPeriod.value.ownRange) {
845
+ const nextDate = {
846
+ to: getUnixTimestampFromDate(addDays(to, daysDifference)),
847
+ from: getUnixTimestampFromDate(addDays(from, daysDifference)),
848
+ };
849
+
850
+ if (isDatePeriodOutOfRange(nextDate)) return;
851
+
852
+ localValue.value = nextDate;
853
+ } else {
854
+ let nextDate = periodDateList.value.find((item) => item.endRange > localValue.value.to);
855
+
856
+ if (!nextDate) {
857
+ onClickShiftDatesList(action);
858
+
859
+ nextDate = periodDateList.value.find((item) => item.endRange > localValue.value.to);
860
+ }
861
+
862
+ if (isDatePeriodOutOfRange(nextDate)) return;
863
+
864
+ localValue.value = {
865
+ from: nextDate.startRange,
866
+ to: nextDate.endRange,
867
+ };
868
+ }
869
+ } else {
870
+ if (isPeriod.value.ownRange) {
871
+ const previousDate = {
872
+ to: getUnixTimestampFromDate(gmtToUTC(addDays(to, daysDifference * -1))),
873
+ from: getUnixTimestampFromDate(gmtToUTC(addDays(from, daysDifference * -1))),
874
+ };
875
+
876
+ if (isDatePeriodOutOfRange(previousDate)) return;
877
+
878
+ localValue.value = previousDate;
879
+ } else {
880
+ const reverseDatesList = [...periodDateList.value].reverse();
881
+
882
+ let previousDate = reverseDatesList.find((item) => item.endRange < localValue.value.to);
883
+
884
+ if (!previousDate) {
885
+ onClickShiftDatesList(action);
886
+
887
+ const reverseDatesList = [...periodDateList.value].reverse();
888
+
889
+ previousDate = reverseDatesList.find((item) => item.endRange < localValue.value.to);
890
+ }
891
+
892
+ if (isDatePeriodOutOfRange(previousDate)) return;
893
+
894
+ localValue.value = {
895
+ from: previousDate.startRange,
896
+ to: previousDate.endRange,
897
+ };
898
+ }
899
+ }
900
+ }
901
+
902
+ function onMouseoverCalendar() {
903
+ const isRangeInputFocus = document.activeElement.name === rangeInputName.value;
904
+
905
+ if (isRangeInputFocus || !rangeInputStartRef.value || !rangeInputEndRef.value) return;
906
+
907
+ if ((rangeStart.value && rangeEnd.value && !inputRangeEndError.value) || !rangeStart.value) {
908
+ rangeInputStartRef.value.input.focus();
909
+
910
+ return;
911
+ }
912
+
913
+ if (rangeStart.value && !rangeEnd.value && !inputRangeStartError.value) {
914
+ rangeInputEndRef.value.input.focus();
915
+
916
+ return;
917
+ }
918
+ }
919
+
920
+ function onMouseoutMenu() {
921
+ const isRangeInputFocus = document.activeElement.name === rangeInputName.value;
922
+
923
+ if (isRangeInputFocus) {
924
+ isHoverEvent.value = true;
925
+
926
+ document.activeElement.blur();
927
+ }
928
+ }
929
+ </script>