bfg-common 1.5.19 → 1.5.21

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 (229) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/scss/common/normalize.scss +339 -361
  7. package/assets/scss/common/utilities.scss +1 -1
  8. package/components/atoms/TheIcon3.vue +50 -50
  9. package/components/atoms/autocomplete/Autocomplete.vue +3 -3
  10. package/components/atoms/collapse/CollapseNav.vue +165 -165
  11. package/components/atoms/combobox/Combobox.vue +1 -1
  12. package/components/atoms/datepicker/Datepicker.vue +1 -1
  13. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  14. package/components/atoms/list/dragDropList/DragDropList.vue +1 -1
  15. package/components/atoms/loader/Loader.vue +1 -1
  16. package/components/atoms/loader/PreLoader.vue +1 -1
  17. package/components/atoms/modal/Modal.vue +2 -2
  18. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  19. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +1 -1
  20. package/components/atoms/perPage/PerPage.vue +58 -58
  21. package/components/atoms/popover/Popover.vue +1 -1
  22. package/components/atoms/popup/SimplePopup.vue +1 -1
  23. package/components/atoms/select/TheSelect.vue +1 -1
  24. package/components/atoms/stack/StackBlock.vue +185 -185
  25. package/components/atoms/table/compact/Compact.vue +5 -5
  26. package/components/atoms/table/dataGrid/DataGrid.vue +4 -4
  27. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  28. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  29. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  30. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  31. package/components/atoms/tooltip/Signpost.vue +1 -1
  32. package/components/atoms/tooltip/Text.vue +1 -1
  33. package/components/atoms/tooltip/Tooltip.vue +1 -1
  34. package/components/atoms/tooltip/TooltipError.vue +1 -1
  35. package/components/atoms/wizard/Wizard.vue +2 -2
  36. package/components/common/accordion/Accordion.vue +1 -1
  37. package/components/common/accordion/Recursion.vue +222 -222
  38. package/components/common/adapterManager/AddAdapterModal.vue +1 -1
  39. package/components/common/browse/BrowseNew.vue +237 -237
  40. package/components/common/browse/BrowseOld.vue +217 -217
  41. package/components/common/browse/blocks/Container.vue +1 -1
  42. package/components/common/browse/blocks/contents/Files.vue +37 -37
  43. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  44. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  45. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  46. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  47. package/components/common/browse/lib/models/interfaces.ts +5 -5
  48. package/components/common/chartOptionsModal/counters/timespan/form/Form.vue +97 -97
  49. package/components/common/chartOptionsModal/counters/timespan/form/Form.vue~ +281 -0
  50. package/components/common/context/Context.vue +111 -111
  51. package/components/common/context/lib/models/interfaces.ts +31 -31
  52. package/components/common/context/recursion/Recursion.vue +87 -87
  53. package/components/common/context/recursion/RecursionNew.vue +238 -238
  54. package/components/common/context/recursion/RecursionOld.vue +228 -228
  55. package/components/common/details/DetailsItem.vue +109 -109
  56. package/components/common/diagramMain/DiagramMain.vue +897 -897
  57. package/components/common/diagramMain/Header.vue +214 -214
  58. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  59. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  60. package/components/common/diagramMain/lib/models/types.ts +21 -21
  61. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  62. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  63. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  64. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  65. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  66. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  67. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  68. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  69. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  70. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  71. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  72. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  73. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  74. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  75. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  76. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  77. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  78. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  79. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  80. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  81. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  82. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  83. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +1 -1
  84. package/components/common/diagramMain/port/Ports.vue +47 -47
  85. package/components/common/feedback/Buttons.vue +1 -1
  86. package/components/common/feedback/Feedback.vue +1 -1
  87. package/components/common/feedback/Message.vue +3 -3
  88. package/components/common/graph/Graph.vue +104 -104
  89. package/components/common/help/navbar/left/Left.vue +1 -1
  90. package/components/common/layout/theHeader/TheHeaderNew.vue +1 -1
  91. package/components/common/layout/theHeader/TheHeaderOld.vue +1 -1
  92. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  93. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  94. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  95. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +336 -336
  96. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  97. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  98. package/components/common/monitor/advanced/graphView/GraphViewOld.vue +1 -1
  99. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/CountersNew.vue +1 -1
  100. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  101. package/components/common/monitor/resourceAllocation/resourceAllocation.vue +1 -1
  102. package/components/common/pages/home/StatusContent.vue +49 -49
  103. package/components/common/pages/home/headline/Headline.vue +45 -45
  104. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  105. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  106. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  107. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  108. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  109. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  110. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  111. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  112. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  113. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  114. package/components/common/pages/packages/Packages.vue +208 -208
  115. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  116. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  117. package/components/common/pages/tasks/Tasks.vue +1 -1
  118. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  119. package/components/common/portlets/tag/Portlet.vue +433 -433
  120. package/components/common/recursionTree/RecursionTree.vue +223 -223
  121. package/components/common/select/button/ButtonDropdown.vue +108 -108
  122. package/components/common/spiceConsole/Drawer.vue +370 -370
  123. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  124. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  125. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  126. package/components/common/split/vertical/Vertical.vue +160 -160
  127. package/components/common/split/vertical/VerticalNew.vue +2 -2
  128. package/components/common/split/vertical/VerticalOld.vue +1 -1
  129. package/components/common/tools/Actions.vue +188 -188
  130. package/components/common/vm/actions/add/Add.vue +622 -622
  131. package/components/common/vm/actions/clone/Clone.vue +639 -639
  132. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  133. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  134. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  135. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  136. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  137. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  148. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  149. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  150. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  151. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  152. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  153. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  154. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  155. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  156. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  157. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  158. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  159. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  160. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  161. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  162. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  163. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  164. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  165. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  166. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  167. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  168. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  169. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  170. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  171. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  172. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  173. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  174. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  175. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  176. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  177. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  178. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  179. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  180. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  181. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  182. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  183. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  184. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  185. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  186. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  187. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  188. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  189. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  190. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  191. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  192. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  193. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  194. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  195. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  196. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  197. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  198. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  199. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  200. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  201. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  202. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  203. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  204. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  205. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  206. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  207. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  208. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  209. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  210. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/DeletePopover.vue +1 -1
  211. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  212. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/graphicTooltip/graphicTooltip.vue +1 -1
  213. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  214. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  215. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  216. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  217. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  218. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  219. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  220. package/composables/productNameLocal.ts +30 -30
  221. package/composables/useAppVersion.ts +21 -21
  222. package/package.json +2 -2
  223. package/plugins/date.ts +233 -233
  224. package/plugins/directives.ts +24 -24
  225. package/public/spice-console/lib/images/bitmap.js +203 -203
  226. package/public/spice-console/network/spicechannel.js +383 -383
  227. package/store/main/mutations.ts +7 -7
  228. package/store/main/state.ts +7 -7
  229. package/store/tasks/mappers/recentTasks.ts +64 -64
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.19",
4
+ "version": "1.5.21",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",
@@ -35,7 +35,7 @@
35
35
  "@vueuse/components": "^10.1.2",
36
36
  "date-fns": "^2.29.3",
37
37
  "bfg-nuxt-3-graph": "1.0.21",
38
- "bfg-uikit": "1.0.377",
38
+ "bfg-uikit": "1.0.378",
39
39
  "html2canvas": "^1.4.1",
40
40
  "prettier-eslint": "^15.0.1"
41
41
  }
package/plugins/date.ts CHANGED
@@ -1,233 +1,233 @@
1
- import { defineNuxtPlugin } from '#app'
2
- import {
3
- format,
4
- // differenceInYears,
5
- // differenceInMonths,
6
- // differenceInDays,
7
- // differenceInHours,
8
- // differenceInMinutes,
9
- // differenceInSeconds,
10
- } from 'date-fns'
11
- import * as localizations from 'date-fns/locale'
12
- import type { UI_T_DateFormat } from '~/lib/models/plugins/date/types'
13
- import type { UI_I_Dateformat } from '~/lib/models/plugins/date/interfaces'
14
- import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
15
-
16
- export default defineNuxtPlugin(() => {
17
- // Проверяем переданое является датой
18
- const isDate = (date: string | number) => {
19
- return new Date(date).toString() !== 'Invalid Date'
20
- }
21
-
22
- // Проверяем формат времени браузера равно 24h
23
- const isBrowserLocale24h = () =>
24
- !new Intl.DateTimeFormat(undefined, { hour: 'numeric' })
25
- .format(0)
26
- .match(/AM/)
27
-
28
- // Получаем переводы для даты
29
- const getDateLocalization = (lang?: string) => {
30
- const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
31
- const { be, enUS, hy, kk, ru, zhCN } = localizations
32
- let localization
33
-
34
- switch (currentLanguage) {
35
- case 'be_BY':
36
- localization = be
37
- break
38
- case 'en_US':
39
- localization = enUS
40
- break
41
- case 'hy_AM':
42
- localization = hy
43
- break
44
- case 'kk_KZ':
45
- localization = kk
46
- break
47
- case 'ru_RU':
48
- localization = ru
49
- break
50
- case 'zh_CHS':
51
- localization = zhCN
52
- break
53
- }
54
-
55
- return localization
56
- }
57
-
58
- // Получаем формат даты
59
- const getDateFormat = (lang?: string): UI_T_DateFormat => {
60
- const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
61
- const dateFormats: UI_I_Dateformat = {
62
- be_BY: 'yyyy-MM-dd',
63
- en_US: 'MM-dd-yyyy',
64
- hy_AM: 'yyyy-MM-dd',
65
- kk_KZ: 'dd/MM/yyyy',
66
- ru_RU: 'dd/MM/yyyy',
67
- zh_CHS: 'yyyy-MM-dd',
68
- }
69
-
70
- const dateFormat = ref(dateFormats[currentLanguage])
71
-
72
- window.addEventListener('timeFormatStorageChanged', function handler() {
73
- dateFormat.value = dateFormats[lang || useLocalStorage('lang') || 'en_US'] // TODO нужно проверить когда будем работать без useLocalStorage
74
-
75
- window.removeEventListener('timeFormatStorageChanged', handler)
76
- })
77
-
78
- return dateFormat.value
79
- }
80
-
81
- // Получаем формат времени
82
- const getTimeFormat = (hasSeconds: boolean, timeFormat?: string) => {
83
- let appTimeFormat = timeFormat || useLocalStorage('timeFormat') || 'DEFAULT'
84
- let timeFormatLocal = ''
85
-
86
- if (appTimeFormat === 'DEFAULT') {
87
- const isBrowserTimeFormat24 = isBrowserLocale24h()
88
-
89
- appTimeFormat = isBrowserTimeFormat24 ? '24H' : appTimeFormat
90
- }
91
-
92
- if (appTimeFormat === '24H') {
93
- timeFormatLocal = 'HH:mm'
94
- } else {
95
- timeFormatLocal = 'h:mm aa'
96
- }
97
-
98
- hasSeconds && (timeFormatLocal = timeFormatLocal.replace(':mm', ':mm:ss'))
99
-
100
- return timeFormatLocal
101
- }
102
-
103
- // Форматирование даты из английского в стандартный
104
- const enFormatToStandardFormat = (date: string): string => {
105
- const splitDate = date.split('-')
106
- return [splitDate[2], splitDate[0], splitDate[1]].join('/')
107
- }
108
- const getUnixByDate = (dateTime: string, lang?: string): number => {
109
- const currentFormat: UI_T_DateFormat = getDateFormat(lang)
110
-
111
- const [date, time] = dateTime.split(' ')
112
-
113
- let standardDate = ''
114
- switch (currentFormat) {
115
- case 'dd/MM/yyyy':
116
- standardDate = date.split('/').reverse().join('/')
117
- break
118
- case 'yyyy-MM-dd':
119
- standardDate = date.replaceAll('-', '/')
120
- break
121
- case 'MM-dd-yyyy':
122
- standardDate = enFormatToStandardFormat(date)
123
- break
124
- }
125
-
126
- const standard = time ? standardDate + ' ' + time : standardDate
127
- return new Date(standard).getTime()
128
- }
129
-
130
- // Форматирование даты без временим
131
- const formattedDate = (
132
- date: number | string | Date,
133
- formatDate = '',
134
- lang?: string
135
- ) => {
136
- const formatDateLocal = formatDate || getDateFormat(lang)
137
-
138
- return format(new Date(date), formatDateLocal, {
139
- locale: getDateLocalization(lang),
140
- })
141
- }
142
- // Форматирование временим
143
- const formattedTime = (
144
- date: number | string | Date,
145
- formatDate = '',
146
- hasSeconds = false,
147
- timeFormat?: string
148
- ) => {
149
- const formatDateLocal = formatDate || getTimeFormat(hasSeconds, timeFormat)
150
-
151
- return format(new Date(date), formatDateLocal)
152
- }
153
-
154
- // Форматирование даты с временим
155
- const formattedDatetime = (
156
- date: number | string | Date,
157
- formatDate = '',
158
- hasSeconds = false,
159
- lang?: string,
160
- timeFormat?: string
161
- ) => {
162
- const formatDateLocal = ref(formatDate || getDateFormat(lang))
163
- const formatDatetime = ref(
164
- formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
165
- )
166
-
167
- window.addEventListener('timeFormatStorageChanged', function handler() {
168
- formatDatetime.value =
169
- formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
170
-
171
- window.removeEventListener('timeFormatStorageChanged', handler)
172
- })
173
-
174
- return format(new Date(date), formatDatetime.value, {
175
- locale: getDateLocalization(lang),
176
- })
177
- }
178
-
179
- const correctRuUnit = (value: number, type: string): string => {
180
- let result = ''
181
-
182
- const forms: UI_I_ArbitraryObject<string[]> = {
183
- second: ['Секунда', 'Секунды', 'Секунд'],
184
- minute: ['Минута', 'Минуты', 'Минут'],
185
- hour: ['Час', 'Часа', 'Часов'],
186
- day: ['День', 'Дня', 'Дней'],
187
- week: ['Неделя', 'Недели', 'Недель'],
188
- month: ['Месяц', 'Месяца', 'Месяцев'],
189
- year: ['Год', 'Года', 'Лет'],
190
- }
191
-
192
- const isFirstType = value % 10 === 1 && value % 100 !== 11
193
- const isSecondType =
194
- [2, 3, 4].includes(value % 10) && ![12, 13, 14].includes(value % 100)
195
-
196
- if (isFirstType) {
197
- result = forms[type][0]
198
- } else if (isSecondType) {
199
- result = forms[type][1]
200
- } else {
201
- result = forms[type][2]
202
- }
203
-
204
- return result
205
- }
206
-
207
- // Определяем сколько времени осталось
208
- // time = seconds
209
- const timeToTimeLeft = (time: number): number[] => {
210
- const seconds = Math.floor(time % 60)
211
- const minutes = Math.floor((time / 60) % 60)
212
- const hours = Math.floor((time / 60 / 60) % 24)
213
- const days = Math.floor((time / 60 / 60 / 24) % 30)
214
- const months = Math.floor((time / 60 / 60 / 24 / 30) % 12)
215
- const years = Math.floor(time / 60 / 60 / 24 / 30 / 12)
216
-
217
- return [years, months, days, hours, minutes, seconds]
218
- }
219
-
220
- return {
221
- provide: {
222
- isDate,
223
- getTimeFormat,
224
- getDateFormat,
225
- formattedTime,
226
- formattedDate,
227
- formattedDatetime,
228
- getUnixByDate,
229
- correctRuUnit,
230
- timeToTimeLeft,
231
- },
232
- }
233
- })
1
+ import { defineNuxtPlugin } from '#app'
2
+ import {
3
+ format,
4
+ // differenceInYears,
5
+ // differenceInMonths,
6
+ // differenceInDays,
7
+ // differenceInHours,
8
+ // differenceInMinutes,
9
+ // differenceInSeconds,
10
+ } from 'date-fns'
11
+ import * as localizations from 'date-fns/locale'
12
+ import type { UI_T_DateFormat } from '~/lib/models/plugins/date/types'
13
+ import type { UI_I_Dateformat } from '~/lib/models/plugins/date/interfaces'
14
+ import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
15
+
16
+ export default defineNuxtPlugin(() => {
17
+ // Проверяем переданое является датой
18
+ const isDate = (date: string | number) => {
19
+ return new Date(date).toString() !== 'Invalid Date'
20
+ }
21
+
22
+ // Проверяем формат времени браузера равно 24h
23
+ const isBrowserLocale24h = () =>
24
+ !new Intl.DateTimeFormat(undefined, { hour: 'numeric' })
25
+ .format(0)
26
+ .match(/AM/)
27
+
28
+ // Получаем переводы для даты
29
+ const getDateLocalization = (lang?: string) => {
30
+ const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
31
+ const { be, enUS, hy, kk, ru, zhCN } = localizations
32
+ let localization
33
+
34
+ switch (currentLanguage) {
35
+ case 'be_BY':
36
+ localization = be
37
+ break
38
+ case 'en_US':
39
+ localization = enUS
40
+ break
41
+ case 'hy_AM':
42
+ localization = hy
43
+ break
44
+ case 'kk_KZ':
45
+ localization = kk
46
+ break
47
+ case 'ru_RU':
48
+ localization = ru
49
+ break
50
+ case 'zh_CHS':
51
+ localization = zhCN
52
+ break
53
+ }
54
+
55
+ return localization
56
+ }
57
+
58
+ // Получаем формат даты
59
+ const getDateFormat = (lang?: string): UI_T_DateFormat => {
60
+ const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
61
+ const dateFormats: UI_I_Dateformat = {
62
+ be_BY: 'yyyy-MM-dd',
63
+ en_US: 'MM-dd-yyyy',
64
+ hy_AM: 'yyyy-MM-dd',
65
+ kk_KZ: 'dd/MM/yyyy',
66
+ ru_RU: 'dd/MM/yyyy',
67
+ zh_CHS: 'yyyy-MM-dd',
68
+ }
69
+
70
+ const dateFormat = ref(dateFormats[currentLanguage])
71
+
72
+ window.addEventListener('timeFormatStorageChanged', function handler() {
73
+ dateFormat.value = dateFormats[lang || useLocalStorage('lang') || 'en_US'] // TODO нужно проверить когда будем работать без useLocalStorage
74
+
75
+ window.removeEventListener('timeFormatStorageChanged', handler)
76
+ })
77
+
78
+ return dateFormat.value
79
+ }
80
+
81
+ // Получаем формат времени
82
+ const getTimeFormat = (hasSeconds: boolean, timeFormat?: string) => {
83
+ let appTimeFormat = timeFormat || useLocalStorage('timeFormat') || 'DEFAULT'
84
+ let timeFormatLocal = ''
85
+
86
+ if (appTimeFormat === 'DEFAULT') {
87
+ const isBrowserTimeFormat24 = isBrowserLocale24h()
88
+
89
+ appTimeFormat = isBrowserTimeFormat24 ? '24H' : appTimeFormat
90
+ }
91
+
92
+ if (appTimeFormat === '24H') {
93
+ timeFormatLocal = 'HH:mm'
94
+ } else {
95
+ timeFormatLocal = 'h:mm aa'
96
+ }
97
+
98
+ hasSeconds && (timeFormatLocal = timeFormatLocal.replace(':mm', ':mm:ss'))
99
+
100
+ return timeFormatLocal
101
+ }
102
+
103
+ // Форматирование даты из английского в стандартный
104
+ const enFormatToStandardFormat = (date: string): string => {
105
+ const splitDate = date.split('-')
106
+ return [splitDate[2], splitDate[0], splitDate[1]].join('/')
107
+ }
108
+ const getUnixByDate = (dateTime: string, lang?: string): number => {
109
+ const currentFormat: UI_T_DateFormat = getDateFormat(lang)
110
+
111
+ const [date, time] = dateTime.split(' ')
112
+
113
+ let standardDate = ''
114
+ switch (currentFormat) {
115
+ case 'dd/MM/yyyy':
116
+ standardDate = date.split('/').reverse().join('/')
117
+ break
118
+ case 'yyyy-MM-dd':
119
+ standardDate = date.replaceAll('-', '/')
120
+ break
121
+ case 'MM-dd-yyyy':
122
+ standardDate = enFormatToStandardFormat(date)
123
+ break
124
+ }
125
+
126
+ const standard = time ? standardDate + ' ' + time : standardDate
127
+ return new Date(standard).getTime()
128
+ }
129
+
130
+ // Форматирование даты без временим
131
+ const formattedDate = (
132
+ date: number | string | Date,
133
+ formatDate = '',
134
+ lang?: string
135
+ ) => {
136
+ const formatDateLocal = formatDate || getDateFormat(lang)
137
+
138
+ return format(new Date(date), formatDateLocal, {
139
+ locale: getDateLocalization(lang),
140
+ })
141
+ }
142
+ // Форматирование временим
143
+ const formattedTime = (
144
+ date: number | string | Date,
145
+ formatDate = '',
146
+ hasSeconds = false,
147
+ timeFormat?: string
148
+ ) => {
149
+ const formatDateLocal = formatDate || getTimeFormat(hasSeconds, timeFormat)
150
+
151
+ return format(new Date(date), formatDateLocal)
152
+ }
153
+
154
+ // Форматирование даты с временим
155
+ const formattedDatetime = (
156
+ date: number | string | Date,
157
+ formatDate = '',
158
+ hasSeconds = false,
159
+ lang?: string,
160
+ timeFormat?: string
161
+ ) => {
162
+ const formatDateLocal = ref(formatDate || getDateFormat(lang))
163
+ const formatDatetime = ref(
164
+ formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
165
+ )
166
+
167
+ window.addEventListener('timeFormatStorageChanged', function handler() {
168
+ formatDatetime.value =
169
+ formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
170
+
171
+ window.removeEventListener('timeFormatStorageChanged', handler)
172
+ })
173
+
174
+ return format(new Date(date), formatDatetime.value, {
175
+ locale: getDateLocalization(lang),
176
+ })
177
+ }
178
+
179
+ const correctRuUnit = (value: number, type: string): string => {
180
+ let result = ''
181
+
182
+ const forms: UI_I_ArbitraryObject<string[]> = {
183
+ second: ['Секунда', 'Секунды', 'Секунд'],
184
+ minute: ['Минута', 'Минуты', 'Минут'],
185
+ hour: ['Час', 'Часа', 'Часов'],
186
+ day: ['День', 'Дня', 'Дней'],
187
+ week: ['Неделя', 'Недели', 'Недель'],
188
+ month: ['Месяц', 'Месяца', 'Месяцев'],
189
+ year: ['Год', 'Года', 'Лет'],
190
+ }
191
+
192
+ const isFirstType = value % 10 === 1 && value % 100 !== 11
193
+ const isSecondType =
194
+ [2, 3, 4].includes(value % 10) && ![12, 13, 14].includes(value % 100)
195
+
196
+ if (isFirstType) {
197
+ result = forms[type][0]
198
+ } else if (isSecondType) {
199
+ result = forms[type][1]
200
+ } else {
201
+ result = forms[type][2]
202
+ }
203
+
204
+ return result
205
+ }
206
+
207
+ // Определяем сколько времени осталось
208
+ // time = seconds
209
+ const timeToTimeLeft = (time: number): number[] => {
210
+ const seconds = Math.floor(time % 60)
211
+ const minutes = Math.floor((time / 60) % 60)
212
+ const hours = Math.floor((time / 60 / 60) % 24)
213
+ const days = Math.floor((time / 60 / 60 / 24) % 30)
214
+ const months = Math.floor((time / 60 / 60 / 24 / 30) % 12)
215
+ const years = Math.floor(time / 60 / 60 / 24 / 30 / 12)
216
+
217
+ return [years, months, days, hours, minutes, seconds]
218
+ }
219
+
220
+ return {
221
+ provide: {
222
+ isDate,
223
+ getTimeFormat,
224
+ getDateFormat,
225
+ formattedTime,
226
+ formattedDate,
227
+ formattedDatetime,
228
+ getUnixByDate,
229
+ correctRuUnit,
230
+ timeToTimeLeft,
231
+ },
232
+ }
233
+ })
@@ -1,24 +1,24 @@
1
- import type { DirectiveBinding } from '@vue/runtime-core'
2
-
3
- export default defineNuxtPlugin((nuxtApp) => {
4
- nuxtApp.vueApp.directive('development', {
5
- mounted(el: HTMLElement, binding: DirectiveBinding) {
6
- if (!binding.value) return
7
-
8
- el.setAttribute('title', 'In development')
9
- el.setAttribute('disabled', 'true')
10
- el.style.opacity = '0.6'
11
- el.style.cursor = 'not-allowed'
12
-
13
- el.addEventListener(
14
- 'click',
15
- (e: MouseEvent) => {
16
- e.preventDefault()
17
- e.stopPropagation()
18
- return false
19
- },
20
- true
21
- )
22
- },
23
- })
24
- })
1
+ import type { DirectiveBinding } from '@vue/runtime-core'
2
+
3
+ export default defineNuxtPlugin((nuxtApp) => {
4
+ nuxtApp.vueApp.directive('development', {
5
+ mounted(el: HTMLElement, binding: DirectiveBinding) {
6
+ if (!binding.value) return
7
+
8
+ el.setAttribute('title', 'In development')
9
+ el.setAttribute('disabled', 'true')
10
+ el.style.opacity = '0.6'
11
+ el.style.cursor = 'not-allowed'
12
+
13
+ el.addEventListener(
14
+ 'click',
15
+ (e: MouseEvent) => {
16
+ e.preventDefault()
17
+ e.stopPropagation()
18
+ return false
19
+ },
20
+ true
21
+ )
22
+ },
23
+ })
24
+ })