bfg-common 1.4.799 → 1.4.800

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 (146) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +31 -14
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-4.svg +6 -1
  4. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  5. package/assets/img/icons/icons-sprite-light-1.svg +30 -13
  6. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  7. package/assets/img/icons/icons-sprite-light-4.svg +6 -1
  8. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  9. package/assets/localization/local_be.json +33 -8
  10. package/assets/localization/local_en.json +33 -8
  11. package/assets/localization/local_hy.json +33 -8
  12. package/assets/localization/local_kk.json +34 -9
  13. package/assets/localization/local_ru.json +43 -18
  14. package/assets/localization/local_zh.json +33 -8
  15. package/assets/scss/clarity/local_ar.json +6 -3
  16. package/assets/scss/common/icons/icons-1.scss +4 -4
  17. package/components/atoms/autocomplete/Autocomplete.vue +68 -12
  18. package/components/atoms/select/TheSelect.vue +10 -1
  19. package/components/atoms/table/dataGrid/DataGrid.vue +12 -4
  20. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +4 -1
  21. package/components/atoms/table/dataGrid/lib/utils/export.ts +13 -13
  22. package/components/atoms/tabs/VerticalTabs.vue +11 -6
  23. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  24. package/components/common/browse/lib/models/interfaces.ts +5 -5
  25. package/components/common/chartOptionsModal/counters/timespan/form/Form.vue +544 -544
  26. package/components/common/chartOptionsModal/counters/timespan/form/lib/config/dateForm.ts +116 -116
  27. package/components/common/context/Context.vue +16 -4
  28. package/components/common/context/recursion/Recursion.vue +2 -1
  29. package/components/common/context/recursion/RecursionNew.vue +57 -31
  30. package/components/common/context/recursion/RecursionOld.vue +33 -19
  31. package/components/common/diagramMain/Header.vue +211 -211
  32. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  33. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  34. package/components/common/diagramMain/lib/models/types.ts +21 -21
  35. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  36. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  37. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  38. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  39. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  40. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  41. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  42. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  44. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +7 -7
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  47. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  48. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  49. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  50. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  51. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  57. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  58. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  59. package/components/common/diagramMain/port/Ports.vue +47 -47
  60. package/components/common/feedback/Buttons.vue +2 -2
  61. package/components/common/feedback/Message.vue +1 -0
  62. package/components/common/feedback/VisitPortal.vue +5 -1
  63. package/components/common/layout/theHeader/feedback/new/New.vue +29 -14
  64. package/components/common/layout/theHeader/feedback/new/additionalDetails/AdditionalDetails.vue +34 -9
  65. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +17 -6
  66. package/components/common/layout/theHeader/feedback/new/description/Description.vue +1 -0
  67. package/components/common/layout/theHeader/feedback/new/email/Email.vue +1 -1
  68. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +22 -6
  69. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +17 -15
  70. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +1 -1
  71. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +3 -2
  72. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +1 -1
  73. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +1 -1
  74. package/components/common/monitor/advanced/tools/chartOptionsModal/Notification.vue +7 -7
  75. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +95 -95
  76. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +1 -1
  77. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +463 -456
  78. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +389 -387
  79. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +8 -0
  80. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/Counters.vue +94 -94
  81. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/timespan/Timespan.vue +66 -66
  82. package/components/common/pages/home/headline/Headline.vue +3 -2
  83. package/components/common/pages/home/headline/HeadlineNew.vue +1 -1
  84. package/components/common/pages/home/headline/HeadlineOld.vue +5 -0
  85. package/components/common/pages/home/widgets/vms/VmsNew.vue +1 -1
  86. package/components/common/pages/packages/Packages.vue +208 -0
  87. package/components/common/pages/packages/lib/config/actions.ts +59 -0
  88. package/components/common/pages/packages/lib/models/types.ts +8 -0
  89. package/components/common/pages/packages/tableView/TableView.vue +120 -0
  90. package/components/common/pages/packages/tableView/lib/config/configTable.ts +136 -0
  91. package/components/common/pages/packages/tableView/lib/config/tableKey.ts +14 -0
  92. package/components/common/pages/packages/tableView/lib/models/types.ts +12 -0
  93. package/components/common/pages/shortcuts/Shortcuts.vue +1 -1
  94. package/components/common/pages/tasks/Tasks.vue +23 -8
  95. package/components/common/pages/tasks/table/Table.vue +66 -16
  96. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +27 -10
  97. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +28 -12
  98. package/components/common/pages/tasks/table/lib/config/config.ts +11 -11
  99. package/components/common/select/radio/RadioGroup.vue +3 -3
  100. package/components/common/selectLanguage/SelectLanguage.vue +29 -25
  101. package/components/common/selectLanguage/lib/config/config.ts +1 -0
  102. package/components/common/split/horizontal/HorizontalNew.vue +42 -24
  103. package/components/common/split/horizontal/HorizontalOld.vue +43 -13
  104. package/components/common/vm/actions/add/Add.vue +6 -1
  105. package/components/common/vm/actions/clone/Clone.vue +8 -3
  106. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +4 -0
  107. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +6 -4
  108. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +26 -10
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +12 -4
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +6 -3
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +4 -2
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +6 -4
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +9 -3
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +3 -2
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -2
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +87 -24
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +14 -8
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +9 -7
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +0 -4
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +43 -12
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +50 -25
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +5 -7
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +64 -28
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +60 -19
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options.ts +11 -4
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +16 -1
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +59 -8
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +60 -7
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +1 -1
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionOld.vue +1 -1
  131. package/components/common/vm/actions/common/lib/config/capabilities.ts +1 -1
  132. package/components/common/vm/actions/editSettings/EditSettings.vue +4 -0
  133. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -0
  134. package/components/common/vm/actions/editSettings/new/New.vue +2 -0
  135. package/components/common/wizards/datastore/add/Add.vue +4 -4
  136. package/components/common/wizards/datastore/add/lib/config/steps.ts +14 -14
  137. package/components/common/wizards/datastore/add/lib/validations.ts +9 -9
  138. package/components/common/wizards/datastore/add/nfs/Nfs.vue +6 -9
  139. package/components/common/wizards/vm/migrate/Migrate.vue +12 -12
  140. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +1 -1
  141. package/composables/useLocal.ts +3 -1
  142. package/composables/useLocalStorage.ts +1 -1
  143. package/lib/models/store/vm/interfaces.ts +11 -0
  144. package/lib/models/table/interfaces.ts +1 -0
  145. package/package.json +3 -3
  146. package/store/tasks/actions.ts +2 -1
@@ -322,7 +322,7 @@
322
322
  "createStandardSwitch": "创建标准交换机",
323
323
  "createTag": "创建标签",
324
324
  "creationDate": "创建日期",
325
- "currentDisplayLimited": "当前设置限制显示不超过 200 条记录。",
325
+ "currentDisplayLimited": "当前设置限制显示不超过 {0} 条记录。",
326
326
  "currentEvcMode": "当前 EVC 模式",
327
327
  "currentPassword": "当前密码",
328
328
  "currentSettings": "当前设置",
@@ -1575,19 +1575,19 @@
1575
1575
  "usedSpace": "可用空间",
1576
1576
  "useExistingDisk": "使用现有磁盘",
1577
1577
  "useExplicitFailoverOrder": "使用明确的故障转移顺序",
1578
- "useGrayEraser": "使用灰色橡皮擦",
1578
+ "useGrayEraser": "灰色橡皮擦",
1579
1579
  "useKerberosAuthenticationIntegrity": "使用 Kerberos 进行身份验证和数据完整性 (krb5i)",
1580
1580
  "useKerberosAuthenticationKrb5": "仅使用 Kerberos 进行身份验证 (krb5)",
1581
1581
  "useManualSettings": "使用手动设置",
1582
1582
  "useNetworkLabelsToIdentifyMigrationCompatibleTwoHosts": "使用网络标签来标识两个或多个主机共有的迁移兼容连接。",
1583
1583
  "useNetworkTimeProtocolFallbackWhenThePtpServiceDoesNotWork": "当 PTP 服务不工作时,启用使用网络时间协议作为回退。",
1584
1584
  "useNetworkTimeProtocolNTPToSynchronizeTheSystemTime": "使用网络时间协议 (NTP) 来同步系统时间。",
1585
- "useOurExternalIdeasPortal": "使用我們由 Aha! 提供支持的外部創意門戶。您將能夠看到所有其他已提交的創意並對其進行投票,或創建一個新創意。",
1585
+ "useOurExternalIdeasPortal": "使用我們由 {0}! 提供支持的外部創意門戶。您將能夠看到所有其他已提交的創意並對其進行投票,或創建一個新創意。",
1586
1586
  "usePrecisionTimeProtocolPtpPrimaryServiceSynchronizeTheSystemTime": "使用精确时间协议 (PTP) 作为同步系统时间的主要服务。",
1587
1587
  "user": "用户",
1588
1588
  "userAndGroup": "用户和组",
1589
1589
  "userDefinedPowerManagementPolicy": "用戶定義的電源管理策略",
1590
- "useRedMarker": "使用紅色標記",
1590
+ "useRedMarker": "红色标记",
1591
1591
  "userGroup": "用户/组",
1592
1592
  "userName": "用户名",
1593
1593
  "usernamePasswordRequired": "需要用户名和密码",
@@ -2291,7 +2291,27 @@
2291
2291
  "searchHere": "在这里搜索。。。",
2292
2292
  "columns": "列",
2293
2293
  "exportSelected": "选择导出",
2294
- "exportAll": "全部出口"
2294
+ "exportAll": "全部出口",
2295
+ "present": "现在",
2296
+ "notPresent": "不在场",
2297
+ "supported": "支持",
2298
+ "viewHost": "查看主机",
2299
+ "viewCluster": "视图集群",
2300
+ "viewDatacenter": "查看数据中心",
2301
+ "viewDatastore": "查看数据存储",
2302
+ "viewFolder": "查看文件夹",
2303
+ "viewDatastoreCluster": "查看数据存储集群",
2304
+ "viewHostProfile": "查看主机配置文件",
2305
+ "viewNetwork": "查看网络",
2306
+ "viewResourcePool": "查看资源池",
2307
+ "viewVApps": "查看Vapp",
2308
+ "viewVirtualMachine": "查看虚拟机",
2309
+ "viewVMTemplate": "查看VM模板",
2310
+ "viewBucket": "查看容器",
2311
+ "emailAddressOptional": "电子邮件地址(可选)",
2312
+ "permissionDeleteMsg": "您确定要删除\"{subject}\"的权限吗?",
2313
+ "editPermission": "编辑权限",
2314
+ "userGroupNameIsInvalid": "用户或组名无效!"
2295
2315
  },
2296
2316
  "auth": {
2297
2317
  "welcomeTo": "欢迎来到",
@@ -2728,7 +2748,8 @@
2728
2748
  "storageReservationDetails": "储存预约详情",
2729
2749
  "totalCapacity": "总容量",
2730
2750
  "usedReservation": "已使用的预订",
2731
- "availableCapacity": "可用容量"
2751
+ "availableCapacity": "可用容量",
2752
+ "dateTimeIsoFormat": "日期和时间为ISO 8601格式"
2732
2753
  },
2733
2754
  "inventoryTabs": {
2734
2755
  "summary": "概括",
@@ -2758,7 +2779,8 @@
2758
2779
  },
2759
2780
  "storageDevice": {
2760
2781
  "repeatCount": "重复计数",
2761
- "relativeThroughput": "相对吞吐量"
2782
+ "relativeThroughput": "相对吞吐量",
2783
+ "valueMustBeBetween": "值必须在{0}和{1}之间"
2762
2784
  },
2763
2785
  "scheduledTasks": {
2764
2786
  "chooseFrequency": "选择频率",
@@ -2859,7 +2881,9 @@
2859
2881
  "inactive": "不活跃",
2860
2882
  "activateAll": "全部激活",
2861
2883
  "confirmMetricsActivation": "确认指标激活",
2884
+ "confirmMetricsDeactivation": "确认指标停用",
2862
2885
  "confirmMetricsActivationDescription": "您确定要激活 Zabbix 服务器“{0}”中的所有指标吗?",
2886
+ "confirmMetricsDeactivationDescription": "您确定要停用Zabbix服务器中的所有指标“{0}”?",
2863
2887
  "cpuMetrics": "CPU指标",
2864
2888
  "baseCount": "基础 ({0})",
2865
2889
  "coreCount": "核心 ({0})",
@@ -2911,6 +2935,7 @@
2911
2935
  "additionalDetailsTooltip": "有关更多详细信息,您可以截取屏幕截图或上传 .png 或 .jpeg 格式的图像。",
2912
2936
  "annotate": "注释",
2913
2937
  "annotateScreenshot": "注释屏幕截图",
2914
- "annotateImage": "注释图像"
2938
+ "annotateImage": "注释图像",
2939
+ "selectType": "选择类型"
2915
2940
  }
2916
2941
  }
@@ -322,7 +322,7 @@
322
322
  "createStandardSwitch": "إنشاء محول قياسي",
323
323
  "createTag": "إنشاء علامة",
324
324
  "creationDate": "تاريخ الإنشاء",
325
- "currentDisplayLimited": "الإعدادات الحالية تحد من العرض إلى 200 إدخال كحد أقصى.",
325
+ "currentDisplayLimited": "الإعدادات الحالية تحد من العرض إلى {0} إدخال كحد أقصى.",
326
326
  "currentEvcMode": "وضع EVC الحالي",
327
327
  "currentPassword": "كلمة المرور الحالية",
328
328
  "currentSettings": "الإعدادات الحالية",
@@ -1582,7 +1582,7 @@
1582
1582
  "useNetworkLabelsToIdentifyMigrationCompatibleTwoHosts": "استخدم تسميات الشبكة لتحديد الاتصالات المتوافقة مع الترحيل والمشتركة بين مضيفين أو أكثر.",
1583
1583
  "useNetworkTimeProtocolFallbackWhenThePtpServiceDoesNotWork": "تمكين استخدام بروتوكول وقت الشبكة كبديل عندما لا تعمل خدمة PTP.",
1584
1584
  "useNetworkTimeProtocolNTPToSynchronizeTheSystemTime": "استخدام بروتوكول وقت الشبكة (NTP) لمزامنة وقت النظام.",
1585
- "useOurExternalIdeasPortal": "استخدم بوابتنا الخارجية للأفكار المزوَّدة بواسطة Aha!. يمكنك الاطلاع على جميع الأفكار المقدمة مسبقًا والتصويت عليها أو إنشاء أفكار جديدة.",
1585
+ "useOurExternalIdeasPortal": "استخدم بوابتنا الخارجية للأفكار المزوَّدة بواسطة {0}!. يمكنك الاطلاع على جميع الأفكار المقدمة مسبقًا والتصويت عليها أو إنشاء أفكار جديدة.",
1586
1586
  "usePrecisionTimeProtocolPtpPrimaryServiceSynchronizeTheSystemTime": "استخدام بروتوكول الوقت الدقيق (PTP) كخدمة أساسية لمزامنة وقت النظام.",
1587
1587
  "user": "المستخدم",
1588
1588
  "userAndGroup": "المستخدمون والمجموعات",
@@ -2758,7 +2758,8 @@
2758
2758
  },
2759
2759
  "storageDevice": {
2760
2760
  "repeatCount": "عدد التكرار",
2761
- "relativeThroughput": "الإنتاجية النسبية"
2761
+ "relativeThroughput": "الإنتاجية النسبية",
2762
+ "valueMustBeBetween": "يجب أن تكون القيمة بين {0} و {1}"
2762
2763
  },
2763
2764
  "scheduledTasks": {
2764
2765
  "chooseFrequency": "اختر تكرارًا",
@@ -2859,7 +2860,9 @@
2859
2860
  "inactive": "غير نشط",
2860
2861
  "activateAll": "تفعيل الكل",
2861
2862
  "confirmMetricsActivation": "تأكيد تفعيل المقاييس",
2863
+ "confirmMetricsDeactivation": "تأكد من إلغاء تنشيط المقاييس",
2862
2864
  "confirmMetricsActivationDescription": "هل تريد بالتأكيد تفعيل جميع المقاييس في خادم Zabbix \"{0}\"؟",
2865
+ "confirmMetricsDeactivationDescription": "هل أنت متأكد من أنك تريد إلغاء تنشيط جميع المقاييس في خادم Zabbix \"{0}\"؟",
2863
2866
  "cpuMetrics": "مقاييس وحدة المعالجة المركزية",
2864
2867
  "baseCount": "أساسي ({0})",
2865
2868
  "coreCount": "نواة ({0})",
@@ -86,7 +86,7 @@
86
86
  .vsphere-icon-datastore-cluster {
87
87
  background-position: 0 83.5443037975%;
88
88
  }
89
- .storage-ui-icon-datastore_delete {
89
+ .storage-ui-icon-datastore-disconnect {
90
90
  background-position: 0 87.3417721519%;
91
91
  }
92
92
  .storage-ui-icon-register_vm {
@@ -121,7 +121,7 @@
121
121
  .host-ui-icon-certificate,
122
122
  .host-ui-icon-renewCertificate,
123
123
  .vsphere-icon-datastore-cluster,
124
- .storage-ui-icon-datastore_delete,
124
+ .storage-ui-icon-datastore-disconnect,
125
125
  .storage-ui-icon-register_vm,
126
126
  .storage-ui-icon-increase_datastore,
127
127
  .storage-ui-icon-datastore-unmount,
@@ -167,7 +167,7 @@
167
167
  .active .host-ui-icon-certificate,
168
168
  .active .host-ui-icon-renewCertificate,
169
169
  .active .vsphere-icon-datastore-cluster,
170
- .active .storage-ui-icon-datastore_delete,
170
+ .active .storage-ui-icon-datastore-disconnect,
171
171
  .active .storage-ui-icon-register_vm,
172
172
  .active .storage-ui-icon-increase_datastore,
173
173
  .active .storage-ui-icon-datastore-unmount,
@@ -218,7 +218,7 @@
218
218
  .host-ui-icon-certificate,
219
219
  .host-ui-icon-renewCertificate,
220
220
  .vsphere-icon-datastore-cluster,
221
- .storage-ui-icon-datastore_delete,
221
+ .storage-ui-icon-datastore-disconnect,
222
222
  .storage-ui-icon-register_vm,
223
223
  .storage-ui-icon-increase_datastore,
224
224
  .storage-ui-icon-datastore-unmount,
@@ -17,16 +17,32 @@
17
17
  name="search"
18
18
  />
19
19
  </div>
20
- <input
21
- :id="`${props.testId}-search-input`"
22
- v-model.trim="search"
23
- :data-id="`${props.testId}-search-input`"
24
- type="text"
25
- class="search-input"
26
- autocomplete="off"
27
- :placeholder="props.placeholder"
28
- @input="onSearch"
29
- />
20
+
21
+ <div class="clr-error">
22
+ <div class="form-group__input">
23
+ <input
24
+ :id="`${props.testId}-search-input`"
25
+ v-model.trim="search"
26
+ :data-id="`${props.testId}-search-input`"
27
+ type="text"
28
+ class="search-input"
29
+ :class="fieldErrorText && 'clr-input'"
30
+ autocomplete="off"
31
+ :placeholder="props.placeholder"
32
+ @blur="onInitValidation"
33
+ @input="onSearch"
34
+ />
35
+ <div v-show="fieldErrorText" class="form-validate">
36
+ <atoms-the-icon class="is-error tooltip-trigger" name="info" />
37
+ </div>
38
+ </div>
39
+ <div
40
+ v-show="fieldErrorText"
41
+ class="form-group__input-error clr-subtext"
42
+ >
43
+ {{ fieldErrorText }}
44
+ </div>
45
+ </div>
30
46
  </div>
31
47
  <div
32
48
  v-show="isShow"
@@ -50,29 +66,36 @@
50
66
  </template>
51
67
 
52
68
  <script setup lang="ts">
69
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
70
+
53
71
  const props = withDefaults(
54
72
  defineProps<{
55
73
  placeholder: string
56
74
  items: string[]
57
- loading: boolean
75
+ loading?: boolean
58
76
  testId?: string
59
77
  ms?: number
78
+ showValidation?: boolean
60
79
  }>(),
61
80
  {
62
81
  testId: 'ui-autocomplete',
63
82
  ms: 500,
83
+ loading: false,
84
+ showValidation: false,
64
85
  }
65
86
  )
66
-
67
87
  const emits = defineEmits<{
68
88
  (event: 'search', value: string): void
69
89
  (event: 'select', value: string): void
70
90
  }>()
71
91
 
92
+ const localization = computed<UI_I_Localization>(() => useLocal())
93
+
72
94
  const search = ref<string>('')
73
95
 
74
96
  let timer: NodeJS.Timeout
75
97
  const onSearch = (): void => {
98
+ onInitValidation()
76
99
  clearTimeout(timer)
77
100
  timer = setTimeout(
78
101
  (value) => {
@@ -82,7 +105,16 @@ const onSearch = (): void => {
82
105
  search.value
83
106
  )
84
107
  }
108
+ const isInitFieldValidation = ref<boolean>(false)
109
+ const onInitValidation = (): void => {
110
+ isInitFieldValidation.value = true
111
+ }
112
+ const fieldErrorText = computed<string>(() => {
113
+ if (!isInitFieldValidation.value) return ''
85
114
 
115
+ if (!search.value && props.showValidation)
116
+ return localization.value.common.fieldRequired
117
+ })
86
118
  const items = computed<any[]>(() => {
87
119
  return [...props.items].map((text) => {
88
120
  const term = search.value.toLowerCase()
@@ -154,6 +186,13 @@ watch(isHide, (newValue) => {
154
186
  window.removeEventListener('keydown', onKeyDown, true)
155
187
  }
156
188
  })
189
+ watch(
190
+ () => props.showValidation,
191
+ (newValue: boolean) => {
192
+ isInitFieldValidation.value = newValue
193
+ },
194
+ { immediate: true }
195
+ )
157
196
  </script>
158
197
 
159
198
  <style scoped lang="scss">
@@ -238,5 +277,22 @@ watch(isHide, (newValue) => {
238
277
  }
239
278
  }
240
279
  }
280
+ .form-group {
281
+ &__input {
282
+ display: flex;
283
+ .form-validate {
284
+ svg {
285
+ width: 24px;
286
+ height: 24px;
287
+ }
288
+ }
289
+ input {
290
+ width: 100%;
291
+ }
292
+ &-error {
293
+ margin-top: 0;
294
+ }
295
+ }
296
+ }
241
297
  }
242
298
  </style>
@@ -16,7 +16,13 @@
16
16
  />
17
17
  </button>
18
18
  <Teleport to="body">
19
- <ul v-show="open" class="select-menu" :style="selectMenuStyles">
19
+ <ul
20
+ v-show="open"
21
+ @mouseenter="hover = true"
22
+ @mouseleave="hover = false"
23
+ class="select-menu"
24
+ :style="selectMenuStyles"
25
+ >
20
26
  <li
21
27
  v-for="item in props.options"
22
28
  :id="`${props.testId}-item`"
@@ -61,6 +67,7 @@ const select = (value: number | string): void => {
61
67
  if (!selectedItem) return
62
68
 
63
69
  emits('update:model-value', selectedItem.value)
70
+ hideMenu(true)
64
71
  }
65
72
  const showMenu = (): void => {
66
73
  if (open.value) {
@@ -159,6 +166,8 @@ onUnmounted(() => {
159
166
  margin-top: 2px;
160
167
  background-color: var(--global-bg-color);
161
168
  padding: 12px 0;
169
+ max-height: 200px;
170
+ overflow: auto;
162
171
 
163
172
  .select-item {
164
173
  color: var(--global-font-color3);
@@ -527,6 +527,7 @@
527
527
  </template>
528
528
 
529
529
  <script setup lang="ts">
530
+ import { isRtl } from 'bfg-uikit/lib/config/trl'
530
531
  import type {
531
532
  UI_I_HTMLSelectElement,
532
533
  UI_I_Localization,
@@ -969,6 +970,9 @@ const setGrab = (key: number, e: MouseEvent): void => {
969
970
  grabColumn.value = key
970
971
  const currentWidth = parseInt(columnsWidth.value[grabColumn.value][0])
971
972
  grabStartX.value = e.clientX - currentWidth
973
+ if (isRtl.value) {
974
+ grabStartX.value = e.clientX + currentWidth
975
+ }
972
976
  }
973
977
  }
974
978
 
@@ -992,7 +996,10 @@ let mousemove = (e: MouseEvent): void => {
992
996
  resizeObserve.disconnect()
993
997
 
994
998
  const minWidth = parseInt(columnsWidth.value[grabColumn.value][1])
995
- const changeX = Math.max(e.clientX - grabStartX.value, minWidth)
999
+ let changeX = Math.max(e.clientX - grabStartX.value, minWidth)
1000
+ if (isRtl.value) {
1001
+ changeX = Math.max(grabStartX.value - e.clientX, minWidth)
1002
+ }
996
1003
 
997
1004
  columnsWidth.value[grabColumn.value] = [`${changeX}px`, `${minWidth}px`]
998
1005
  }
@@ -1034,11 +1041,12 @@ const setResizeObserveWithInfo = (): void => {
1034
1041
  }
1035
1042
 
1036
1043
  // Export
1037
- const exportItems = computed<UI_I_DropdownButtonItem[]>(
1038
- () => exportItemsFunc(
1044
+ const exportItems = computed<UI_I_DropdownButtonItem[]>(() =>
1045
+ exportItemsFunc(
1039
1046
  localization.value,
1040
1047
  bodyItemsPresent.value.length || 0,
1041
- props.selectedRow?.length || 0
1048
+ props.selectedRow?.length || 0,
1049
+ props.testId || ''
1042
1050
  )
1043
1051
  )
1044
1052
  const onExport = (type: '0' | '1'): void => {
@@ -71,13 +71,15 @@ export const defaultHeadItems = (
71
71
  export const exportItemsFunc = (
72
72
  localization: UI_I_Localization,
73
73
  rows: number,
74
- selectedRows: number
74
+ selectedRows: number,
75
+ testId: string
75
76
  ): UI_I_DropdownButtonItem[] => {
76
77
  return [
77
78
  {
78
79
  text: localization.common.allRowsCount.replace('{0}', '' + rows),
79
80
  type: '0',
80
81
  disabled: false,
82
+ testId: `${testId}-export-all`,
81
83
  },
82
84
  {
83
85
  text: localization.common.selectedRowsCount.replace(
@@ -86,6 +88,7 @@ export const exportItemsFunc = (
86
88
  ),
87
89
  type: '1',
88
90
  disabled: false,
91
+ testId: `${testId}-export-selected`,
89
92
  },
90
93
  ]
91
94
  }
@@ -1,16 +1,16 @@
1
- export const generateCsvAndDownload = (rows: HTMLElement[]): void => {
2
- const content: string[] = []
3
- rows.forEach((row: HTMLElement) => {
4
- content.push(row.innerText.replaceAll('\n', ';'))
5
- })
1
+ export const generateCsvAndDownload = (rows: HTMLElement[]): void => {
2
+ const content: string[] = []
3
+ rows.forEach((row: HTMLElement) => {
4
+ content.push(row.innerText.replaceAll(';', ',').replaceAll('\n', ';'))
5
+ })
6
6
 
7
- const csvContent = 'data:text/csv;charset=utf-8,' + content.join('\n')
7
+ const csvContent = 'data:text/csv;charset=utf-8, sep=;' + content.join('\n')
8
8
 
9
- const encodedUri = encodeURI(csvContent)
10
- const link = document.createElement('a')
11
- link.setAttribute('href', encodedUri)
12
- link.setAttribute('download', 'my_data.csv')
13
- document.body.appendChild(link)
9
+ const encodedUri = encodeURI(csvContent)
10
+ const link = document.createElement('a')
11
+ link.setAttribute('href', encodedUri)
12
+ link.setAttribute('download', 'my_data.csv')
13
+ document.body.appendChild(link)
14
14
 
15
- link.click()
16
- }
15
+ link.click()
16
+ }
@@ -49,23 +49,28 @@ const selectItem = (value: string): void => {
49
49
  }
50
50
  </script>
51
51
 
52
- <style lang="scss" scoped>
52
+ <style>
53
+ :root {
54
+ --vertical-tabs-nav-link: --grey-100;
55
+ --vertical-tabs-bg-color: #fafafa;
56
+ }
53
57
  :root.dark-theme {
54
- .vertical-nav-link:not(.active) {
55
- color: #fff;
56
- }
58
+ --vertical-tabs-nav-link: #ffffff;
59
+ --vertical-tabs-bg-color: transparent;
57
60
  }
61
+ </style>
62
+ <style lang="scss" scoped>
58
63
 
59
64
  .vertical-groups-sidenav {
60
65
  min-height: 94%;
61
- background-color: #fafafa;
66
+ background-color: var(--vertical-tabs-bg-color);
62
67
 
63
68
  .vertical-nav-link {
64
69
  display: inline-block;
65
70
  width: 100%;
66
71
  margin-top: 5px;
67
72
  padding-left: 12px;
68
- color: var(--grey-100);
73
+ color: var(--vertical-tabs-nav-link);
69
74
  border-bottom: 1px solid transparent;
70
75
  text-decoration: none;
71
76
  font-size: 14px;
@@ -1 +1 @@
1
- export type UI_T_BlocksWidth = [number, number, number]
1
+ export type UI_T_BlocksWidth = [number, number, number]
@@ -1,5 +1,5 @@
1
- export interface UI_I_FileInfo {
2
- type: string
3
- title: string
4
- value: string | number
5
- }
1
+ export interface UI_I_FileInfo {
2
+ type: string
3
+ title: string
4
+ value: string | number
5
+ }