dashboard-shell-shell 3.0.5-test.6 → 3.0.5-test.61

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 (353) hide show
  1. package/assets/brand/csp/favicon.png +0 -0
  2. package/assets/brand/harvester/favicon.png +0 -0
  3. package/assets/brand/suse/favicon.png +0 -0
  4. package/assets/icons/demo.css +539 -0
  5. package/assets/icons/demo.css:Zone.Identifier +0 -0
  6. package/assets/icons/demo_index.html +1131 -0
  7. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.css +219 -0
  9. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  10. package/assets/icons/iconfont.js +1 -0
  11. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  12. package/assets/icons/iconfont.json +324 -0
  13. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  14. package/assets/icons/iconfont.ttf +0 -0
  15. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  16. package/assets/icons/iconfont.woff +0 -0
  17. package/assets/icons/iconfont.woff2 +0 -0
  18. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  19. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  20. package/assets/iconsNew/demo.css +539 -0
  21. package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
  22. package/assets/iconsNew/demo_index.html +303 -0
  23. package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
  24. package/assets/iconsNew/iconfont.css +43 -0
  25. package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
  26. package/assets/iconsNew/iconfont.js +1 -0
  27. package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
  28. package/assets/iconsNew/iconfont.json +44 -0
  29. package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
  30. package/assets/iconsNew/iconfont.ttf +0 -0
  31. package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
  32. package/assets/iconsNew/iconfont.woff +0 -0
  33. package/assets/iconsNew/iconfont.woff2 +0 -0
  34. package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
  35. package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
  36. package/assets/images/API.svg +3 -0
  37. package/assets/images/action.svg +6 -0
  38. package/assets/images/login/password.svg +20 -0
  39. package/assets/images/login/user.svg +6 -0
  40. package/assets/images/login-bg.png +0 -0
  41. package/assets/images/login-left.png +0 -0
  42. package/assets/images/login-logo.svg +44 -0
  43. package/assets/images/logo.png +0 -0
  44. package/assets/images/logo.svg +47 -0
  45. package/assets/images/pl/dark/logo.png +0 -0
  46. package/assets/images/pl/half-logo.svg +2 -23
  47. package/assets/images/pl/harvester.png +0 -0
  48. package/assets/images/pl/logo.png +0 -0
  49. package/assets/images/promp-yellow.svg +5 -0
  50. package/assets/images/user.png +0 -0
  51. package/assets/styles/all.scss +83 -0
  52. package/assets/styles/app.scss +5 -0
  53. package/assets/styles/base/_basic.scss +2 -2
  54. package/assets/styles/base/_helpers.scss +1 -1
  55. package/assets/styles/base/_mixins.scss +1 -1
  56. package/assets/styles/base/_typography.scss +2 -1
  57. package/assets/styles/base/_variables.scss +14 -7
  58. package/assets/styles/fonts/_icons.scss +3 -2
  59. package/assets/styles/global/_button.scss +44 -26
  60. package/assets/styles/global/_columns.scss +3 -1
  61. package/assets/styles/global/_form.scss +46 -13
  62. package/assets/styles/global/_labeled-input.scss +54 -26
  63. package/assets/styles/global/_layout.scss +8 -3
  64. package/assets/styles/global/_select.scss +25 -17
  65. package/assets/styles/global/_table.scss +7 -1
  66. package/assets/styles/global/_tooltip.scss +60 -8
  67. package/assets/styles/themes/_dark.scss +3 -0
  68. package/assets/styles/themes/_light.scss +69 -46
  69. package/assets/styles/vendor/vue-select.scss +24 -10
  70. package/assets/translations/en-us.yaml +92 -4
  71. package/assets/translations/zh-hans.yaml +668 -206
  72. package/components/ActionDropdown.vue +2 -1
  73. package/components/ActionMenu.vue +2 -2
  74. package/components/ActionMenuShell.vue +2 -0
  75. package/components/AppModal.vue +46 -5
  76. package/components/BrandImage.vue +1 -0
  77. package/components/ButtonDropdown.vue +28 -4
  78. package/components/ButtonMultiAction.vue +1 -0
  79. package/components/ClusterIconMenu.vue +2 -2
  80. package/components/CodeMirror.vue +26 -10
  81. package/components/ConsumptionGauge.vue +24 -5
  82. package/components/ContainerResourceLimit.vue +2 -2
  83. package/components/CopyToClipboard.vue +15 -0
  84. package/components/CruResource.vue +12 -10
  85. package/components/CruResourceFooter.vue +2 -2
  86. package/components/DashboardOptions.vue +29 -17
  87. package/components/DotState.vue +84 -0
  88. package/components/Drawer/Chrome.vue +2 -2
  89. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  90. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  91. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  92. package/components/ExplorerMembers.vue +28 -4
  93. package/components/ExplorerProjectsNamespaces.vue +19 -5
  94. package/components/GlobalRoleBindings.vue +23 -4
  95. package/components/GrafanaDashboard.vue +4 -4
  96. package/components/GrowlManager.vue +3 -1
  97. package/components/HardwareResourceGauge.vue +39 -3
  98. package/components/IndentedPanel.vue +4 -10
  99. package/components/InfoBox.vue +3 -3
  100. package/components/InputOrDisplay.vue +28 -2
  101. package/components/LabelValue.vue +20 -1
  102. package/components/ModalWithCard.vue +12 -3
  103. package/components/PodSecurityAdmission.vue +2 -2
  104. package/components/PromptModal.vue +1 -1
  105. package/components/PromptRemove.vue +53 -12
  106. package/components/RelatedResources.vue +3 -0
  107. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  108. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  109. package/components/Resource/Detail/Metadata/index.vue +3 -1
  110. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  111. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  112. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  113. package/components/Resource/Detail/TitleBar/index.vue +125 -27
  114. package/components/ResourceDetail/Masthead/index.vue +1 -1
  115. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  116. package/components/ResourceDetail/Masthead/legacy.vue +183 -39
  117. package/components/ResourceDetail/legacy.vue +47 -29
  118. package/components/ResourceList/Masthead.vue +222 -54
  119. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  120. package/components/ResourceTable.vue +40 -2
  121. package/components/SideNav.vue +74 -20
  122. package/components/SingleClusterInfo.vue +2 -1
  123. package/components/SortableTable/THead.vue +79 -4
  124. package/components/SortableTable/index.vue +1053 -464
  125. package/components/SortableTable/paging.js +26 -16
  126. package/components/SortableTable/selection.js +2 -2
  127. package/components/Tabbed/Tab.vue +3 -3
  128. package/components/Tabbed/index.vue +53 -30
  129. package/components/YamlEditor.vue +0 -1
  130. package/components/auth/Principal.vue +51 -19
  131. package/components/auth/RoleDetailEdit.vue +69 -14
  132. package/components/auth/SelectPrincipal.vue +1 -0
  133. package/components/breadcrumb/index.vue +119 -0
  134. package/components/form/ArrayList.vue +177 -152
  135. package/components/form/ArrayListGrouped.vue +13 -3
  136. package/components/form/ArrayListSelect.vue +1 -1
  137. package/components/form/BannerSettings.vue +64 -59
  138. package/components/form/ChangePassword.vue +5 -5
  139. package/components/form/ClusterAppearance.vue +4 -3
  140. package/components/form/ColorInput.vue +32 -8
  141. package/components/form/Command.vue +4 -5
  142. package/components/form/Conditions.vue +15 -1
  143. package/components/form/Footer.vue +12 -8
  144. package/components/form/HealthCheck.vue +0 -2
  145. package/components/form/HookOption.vue +87 -58
  146. package/components/form/InputWithSelect.vue +8 -4
  147. package/components/form/KeyValue.vue +66 -8
  148. package/components/form/LabeledSelect.vue +216 -242
  149. package/components/form/Labels.vue +4 -4
  150. package/components/form/MatchExpressions.vue +28 -11
  151. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  152. package/components/form/Members/ClusterPermissionsEditor.vue +61 -43
  153. package/components/form/Members/MembershipEditor.vue +4 -4
  154. package/components/form/Members/ProjectMembershipEditor.vue +1 -1
  155. package/components/form/NameNsDescription.vue +62 -22
  156. package/components/form/Networking.vue +6 -9
  157. package/components/form/NodeAffinity.vue +29 -28
  158. package/components/form/Password.vue +16 -7
  159. package/components/form/PodAffinity.vue +24 -25
  160. package/components/form/Probe.vue +15 -11
  161. package/components/form/ProjectMemberEditor.vue +66 -48
  162. package/components/form/ResourceQuota/Namespace.vue +4 -4
  163. package/components/form/ResourceQuota/NamespaceRow.vue +26 -23
  164. package/components/form/ResourceQuota/Project.vue +4 -4
  165. package/components/form/ResourceQuota/ProjectRow.vue +38 -35
  166. package/components/form/ResourceSelector.vue +1 -1
  167. package/components/form/SecretSelector.vue +24 -23
  168. package/components/form/Security.vue +1 -3
  169. package/components/form/Select.vue +12 -3
  170. package/components/form/ServiceNameSelect.vue +2 -5
  171. package/components/form/ServicePorts.vue +149 -75
  172. package/components/form/SimpleSecretSelector.vue +29 -9
  173. package/components/form/Taints.vue +2 -1
  174. package/components/form/Tolerations.vue +13 -9
  175. package/components/form/UnitInput.vue +8 -3
  176. package/components/form/ValueFromResource.vue +110 -96
  177. package/components/form/WorkloadPorts.vue +143 -123
  178. package/components/formatter/BadgeStateFormatter.vue +8 -5
  179. package/components/formatter/LiveDate.vue +3 -3
  180. package/components/formatter/WorkloadHealthScale.vue +4 -3
  181. package/components/nav/Favorite.vue +5 -1
  182. package/components/nav/Group.vue +139 -99
  183. package/components/nav/Header.vue +138 -164
  184. package/components/nav/HeaderPageActionMenu.vue +1 -0
  185. package/components/nav/NamespaceFilter.vue +34 -36
  186. package/components/nav/TopLevelMenu.vue +62 -25
  187. package/components/nav/Type.vue +73 -43
  188. package/composables/useClickOutside.ts +1 -1
  189. package/config/menuRouteMap.js +10 -0
  190. package/config/private-label.js +14 -11
  191. package/config/product/auth.js +17 -7
  192. package/config/product/explorer.js +32 -10
  193. package/config/product/manager.js +28 -17
  194. package/config/product/settings.js +19 -9
  195. package/config/product/uiplugins.js +13 -10
  196. package/config/router/navigation-guards/index.js +61 -3
  197. package/config/settings.ts +28 -0
  198. package/config/table-headers.js +3 -2
  199. package/detail/node.vue +28 -23
  200. package/dialog/AddCustomBadgeDialog.vue +17 -9
  201. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  202. package/dialog/RollbackWorkloadDialog.vue +1 -1
  203. package/dialog/ScalePoolDownDialog.vue +2 -2
  204. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  205. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  206. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  207. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  208. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  209. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  210. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  211. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  212. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  213. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  214. package/edit/configmap.vue +4 -0
  215. package/edit/logging-flow/index.vue +1 -2
  216. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
  217. package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
  218. package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
  219. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
  220. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
  221. package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
  222. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
  223. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
  224. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
  225. package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
  226. package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
  227. package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
  228. package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
  229. package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
  230. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
  231. package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
  232. package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
  233. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
  234. package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
  235. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
  236. package/edit/management.cattle.io.user.vue +17 -4
  237. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  238. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +50 -26
  239. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  240. package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +32 -0
  241. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  242. package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +52 -0
  243. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  244. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  245. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  246. package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +45 -0
  247. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  248. package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +31 -0
  249. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  250. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  251. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  252. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  253. package/edit/namespace.vue +1 -2
  254. package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
  255. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  256. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  257. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  258. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  259. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  260. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  261. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  262. package/edit/persistentvolume/index.vue +3 -1
  263. package/edit/persistentvolumeclaim.vue +2 -0
  264. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +1 -1
  265. package/edit/secret/index.vue +2 -2
  266. package/edit/service.vue +4 -1
  267. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  268. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  269. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  270. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  271. package/edit/token.vue +31 -12
  272. package/edit/workload/Job.vue +31 -34
  273. package/edit/workload/Upgrading.vue +5 -5
  274. package/edit/workload/index.vue +22 -18
  275. package/edit/workload/storage/Mount.vue +1 -0
  276. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  277. package/edit/workload/storage/azureDisk.vue +14 -10
  278. package/edit/workload/storage/azureFile.vue +9 -7
  279. package/edit/workload/storage/csi/index.vue +6 -9
  280. package/edit/workload/storage/emptyDir.vue +7 -5
  281. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  282. package/edit/workload/storage/hostPath.vue +7 -5
  283. package/edit/workload/storage/nfs.vue +8 -6
  284. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  285. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  286. package/edit/workload/storage/secret.vue +9 -6
  287. package/edit/workload/storage/vsphereVolume.vue +11 -7
  288. package/initialize/app-extended.js +7 -1
  289. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
  290. package/list/management.cattle.io.setting.vue +22 -13
  291. package/list/management.cattle.io.user.vue +7 -3
  292. package/list/namespace.vue +3 -0
  293. package/list/provisioning.cattle.io.cluster.vue +6 -7
  294. package/mixins/brand.js +17 -0
  295. package/mixins/create-edit-view/impl.js +10 -0
  296. package/models/provisioning.cattle.io.cluster.js +19 -18
  297. package/models/workload.js +2 -2
  298. package/package.json +1 -1
  299. package/pages/account/index.vue +93 -58
  300. package/pages/account/pri.vue +229 -0
  301. package/pages/auth/login.vue +216 -51
  302. package/pages/auth/setup.vue +175 -33
  303. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  304. package/pages/c/_cluster/auth/roles/index.vue +83 -8
  305. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  306. package/pages/c/_cluster/explorer/index.vue +2 -1
  307. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  308. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  309. package/pages/c/_cluster/settings/banners.vue +174 -102
  310. package/pages/c/_cluster/settings/brand.vue +350 -302
  311. package/pages/c/_cluster/settings/performance.vue +61 -38
  312. package/pages/home.vue +119 -37
  313. package/pages/prefs.vue +27 -25
  314. package/pkg/tsconfig.json +9 -9
  315. package/pkg/vue.config.js +1 -1
  316. package/plugins/dashboard-store/actions.js +1 -1
  317. package/plugins/dashboard-store/resource-class.js +28 -27
  318. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  319. package/public/index.html +4 -4
  320. package/rancher-components/BadgeState/BadgeState.vue +38 -55
  321. package/rancher-components/Banner/Banner.vue +25 -9
  322. package/rancher-components/Card/Card.vue +7 -8
  323. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  324. package/rancher-components/Form/LabeledInput/LabeledInput.vue +42 -3
  325. package/rancher-components/Form/Radio/RadioButton.vue +35 -11
  326. package/rancher-components/Form/Radio/RadioGroup.vue +22 -6
  327. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  328. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -0
  329. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +41 -4
  330. package/rancher-components/RcDropdown/RcDropdown.vue +35 -7
  331. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  332. package/rancher-components/RcDropdown/RcDropdownMenu.vue +12 -6
  333. package/rancher-components/RcDropdown/types.ts +1 -0
  334. package/rancher-components/StringList/StringList.vue +1 -1
  335. package/scripts/build-pkg.sh +18 -23
  336. package/scripts/publish-shell.sh +1 -1
  337. package/static/favicon.ico +0 -0
  338. package/static/favicon.png +0 -0
  339. package/static/loading-indicator.html +3 -3
  340. package/store/i18n.js +6 -2
  341. package/store/modal.ts +3 -3
  342. package/store/prefs.js +11 -4
  343. package/store/type-map.js +30 -2
  344. package/types/shell/index.d.ts +86 -97
  345. package/utils/error.js +109 -8
  346. package/utils/errorTranslate.json +1740 -0
  347. package/utils/errorTranslateNew.json +39 -0
  348. package/utils/roleFiltering.js +33 -0
  349. package/utils/router.js +21 -0
  350. package/utils/select.js +26 -3
  351. package/utils/string.js +8 -5
  352. package/utils/title.ts +1 -1
  353. package/vue.config.js +1 -1
@@ -109,9 +109,9 @@ export default defineComponent({
109
109
 
110
110
  .status-icon {
111
111
  position: absolute;
112
- right: 30px;
113
- top: $input-padding-lg;
114
- z-index: z-index(hoverOverContent);
112
+ right: 5px;
113
+ top: 10px;
114
+ z-index: 3;
115
115
  }
116
116
 
117
117
  @mixin tooltipColors($color) {
@@ -120,11 +120,19 @@ export default defineComponent({
120
120
  }
121
121
  }
122
122
 
123
+ &.null {
124
+
125
+ .status-icon {
126
+ top: 8px !important;
127
+ right: 25px !important;
128
+ }
129
+ }
130
+
123
131
  &.error {
124
132
  @include tooltipColors(var(--error));
125
133
 
126
134
  .status-icon {
127
- top: 7px;
135
+ top: 9px !important;
128
136
  right: 5px;
129
137
  }
130
138
  }
@@ -138,6 +146,35 @@ export default defineComponent({
138
146
  }
139
147
  }
140
148
 
149
+ .labeled-select{
150
+ .labeled-tooltip{
151
+ &.null {
152
+ .status-icon {
153
+ top: 10px !important;
154
+ right: 25px !important;
155
+ }
156
+ }
157
+
158
+ &.error {
159
+
160
+ .status-icon {
161
+ top: 9px !important;
162
+ right: 20px;
163
+ }
164
+ }
165
+ }
166
+ }
167
+ .labeled-input{
168
+ .labeled-tooltip{
169
+ &.null {
170
+ .status-icon {
171
+ top: 10px !important;
172
+ right: 10px !important;
173
+ }
174
+ }
175
+ }
176
+ }
177
+
141
178
  // Ensure code blocks inside tootips don't look awful
142
179
  .v-popper__popper.v-popper--theme-tooltip {
143
180
  .v-popper__inner {
@@ -52,7 +52,7 @@ const {
52
52
 
53
53
  provideDropdownContext();
54
54
 
55
- const popperContainer = ref(null);
55
+ // const popperContainer = ref(null);
56
56
  const dropdownTarget = ref(null);
57
57
 
58
58
  useClickOutside(dropdownTarget, () => showMenu(false));
@@ -71,16 +71,30 @@ const applyShow = () => {
71
71
  :triggers="[]"
72
72
  :shown="isMenuOpen"
73
73
  :auto-hide="false"
74
- :container="popperContainer"
74
+ append-to-body
75
75
  :placement="placement"
76
76
  :distance="distance"
77
77
  @apply-show="applyShow"
78
+ popper-class="custom-dropdown"
78
79
  >
79
80
  <slot name="default">
80
81
  <!--Empty slot content Trigger-->
81
82
  </slot>
82
83
 
83
84
  <template #popper>
85
+ <!-- <div
86
+ ref="dropdownTarget"
87
+ class="dropdownTarget"
88
+ tabindex="-1"
89
+ role="menu"
90
+ aria-orientation="vertical"
91
+ dropdown-menu-collection
92
+ :aria-label="ariaLabel || 'Dropdown Menu'"
93
+ @keydown="handleKeydown"
94
+ @keydown.down.prevent="setFocus('down')"
95
+ @keydown.up.prevent="setFocus('up')"
96
+
97
+ > -->
84
98
  <div
85
99
  ref="dropdownTarget"
86
100
  class="dropdownTarget"
@@ -92,6 +106,8 @@ const applyShow = () => {
92
106
  @keydown="handleKeydown"
93
107
  @keydown.down.prevent="setFocus('down')"
94
108
  @keydown.up.prevent="setFocus('up')"
109
+ @keydown.tab="showMenu(false)"
110
+ @keydown.escape="returnFocus"
95
111
  >
96
112
  <slot name="dropdownCollection">
97
113
  <!--Empty slot content-->
@@ -99,14 +115,13 @@ const applyShow = () => {
99
115
  </div>
100
116
  </template>
101
117
  </v-dropdown>
102
- <div
118
+ <!-- <div
103
119
  ref="popperContainer"
104
120
  class="popperContainer"
105
121
  @keydown.tab="showMenu(false)"
106
122
  @keydown.escape="returnFocus"
107
123
  >
108
- <!--Empty container for mounting popper content-->
109
- </div>
124
+ </div> -->
110
125
  </template>
111
126
 
112
127
  <style lang="scss" scoped>
@@ -115,7 +130,8 @@ const applyShow = () => {
115
130
  &:deep(.v-popper__popper) {
116
131
 
117
132
  .v-popper__wrapper {
118
- box-shadow: 0px 6px 18px 0px rgba(0, 0, 0, 0.25), 0px 4px 10px 0px rgba(0, 0, 0, 0.15);
133
+ box-shadow: 0 5px 20px var(--shadow);
134
+ /* box-shadow: 0px 6px 18px 0px rgba(0, 0, 0, 0.25), 0px 4px 10px 0px rgba(0, 0, 0, 0.15); */
119
135
  border-radius: var(--border-radius-lg);
120
136
 
121
137
  .v-popper__arrow-container {
@@ -124,7 +140,9 @@ const applyShow = () => {
124
140
 
125
141
  .v-popper__inner {
126
142
  overflow: unset;
127
- padding: 10px 0 10px 0;
143
+ /* padding: 10px 0 10px 0; */
144
+ padding: 0px;
145
+ /* min-width: 145px; */
128
146
  }
129
147
  }
130
148
  }
@@ -138,4 +156,14 @@ const applyShow = () => {
138
156
  outline: none;
139
157
  }
140
158
  }
159
+
160
+ .custom-dropdown{
161
+ .v-popper__wrapper{
162
+ .v-popper__inner {
163
+ padding: 0px;
164
+ }
165
+ }
166
+ }
167
+
141
168
  </style>
169
+
@@ -52,8 +52,8 @@ const handleClick = (e: MouseEvent) => {
52
52
  display: flex;
53
53
  gap: 8px;
54
54
  align-items: center;
55
- padding: 9px 8px;
56
- margin: 0 9px;
55
+ padding: 8px 10px;
56
+ min-width: 145px;
57
57
  border-radius: 4px;
58
58
 
59
59
  &:hover {
@@ -11,6 +11,8 @@ import IconOrSvg from '@shell/components/IconOrSvg';
11
11
  withDefaults(defineProps<RcDropdownMenuComponentProps>(), {
12
12
  buttonRole: 'primary',
13
13
  buttonSize: undefined,
14
+ isDetail: false,
15
+ showIcon: false
14
16
  });
15
17
 
16
18
  const emit = defineEmits(['update:open', 'select']);
@@ -31,7 +33,10 @@ const hasOptions = (options: DropdownOption[]) => {
31
33
  :data-testid="dataTestid"
32
34
  :aria-label="buttonAriaLabel"
33
35
  >
34
- <i class="icon icon-actions" />
36
+ <div v-if="showIcon">
37
+ <i data-v-5db2c2c7="" class="icon icon-actions" alt="More actions icon"></i>
38
+ </div>
39
+ <a v-else href="javascript:;">操作</a>
35
40
  </rc-dropdown-trigger>
36
41
  <template #dropdownCollection>
37
42
  <template
@@ -42,7 +47,7 @@ const hasOptions = (options: DropdownOption[]) => {
42
47
  v-if="!a.divider"
43
48
  @click="(e: MouseEvent) => emit('select', e, a)"
44
49
  >
45
- <template #before>
50
+ <!-- <template #before>
46
51
  <IconOrSvg
47
52
  v-if="a.icon || a.svg"
48
53
  :icon="a.icon"
@@ -50,18 +55,19 @@ const hasOptions = (options: DropdownOption[]) => {
50
55
  class="icon"
51
56
  color="header"
52
57
  />
53
- </template>
58
+ </template> -->
54
59
  {{ a.label }}
55
60
  </rc-dropdown-item>
56
- <rc-dropdown-separator
61
+ <!-- <rc-dropdown-separator
57
62
  v-else
58
- />
63
+ /> -->
59
64
  </template>
60
65
  <rc-dropdown-item
61
66
  v-if="!hasOptions(options)"
62
67
  disabled
63
68
  >
64
- No actions available
69
+ <!-- No actions available -->
70
+ 暂无可执行的操作。
65
71
  </rc-dropdown-item>
66
72
  </template>
67
73
  </rc-dropdown>
@@ -46,4 +46,5 @@ export type RcDropdownMenuComponentProps = {
46
46
  buttonAriaLabel?: string;
47
47
  dropdownAriaLabel?: string;
48
48
  dataTestid?: string;
49
+ showIcon?: Boolean;
49
50
  }
@@ -633,7 +633,7 @@ export default defineComponent({
633
633
  }
634
634
 
635
635
  :deep() {
636
- .labeled-input INPUT.no-label,
636
+ // .labeled-input INPUT.no-label,
637
637
  .labeled-input INPUT:hover.no-label,
638
638
  .labeled-input INPUT:focus.no-label {
639
639
  padding: 1px 0px 0px 0px;
@@ -2,7 +2,6 @@
2
2
 
3
3
  SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
4
4
  BASE_DIR="$( cd $SCRIPT_DIR && cd ../.. & pwd)"
5
- SHELL_DIR=$BASE_DIR/shell/
6
5
  EXIT_CODE=0
7
6
  FORMATS="umd-min"
8
7
 
@@ -19,12 +18,18 @@ done
19
18
 
20
19
  shift $((OPTIND-1))
21
20
 
22
- # Use shell folder in node modules when we have @rancher/shell installed as a node module
23
- # rather than the use-case of the mono-repo with the shell folder at the top-level
24
- if [ ! -d ${SHELL_DIR} ]; then
25
- SHELL_DIR=$BASE_DIR/node_modules/@rancher/shell/
26
- SHELL_DIR=$(cd -P ${SHELL_DIR} && pwd)
21
+ # ---- 修改这里 ----
22
+ # 优先使用顶级 shell 文件夹,如果不存在则使用 node_modules/dashboard-shell-shell
23
+ SHELL_DIR=$BASE_DIR/shell/
24
+ if [ ! -d "${SHELL_DIR}" ]; then
25
+ SHELL_DIR=$BASE_DIR/node_modules/dashboard-shell-shell/
26
+ if [ ! -d "${SHELL_DIR}" ]; then
27
+ echo "Error: dashboard-shell-shell not found in node_modules"
28
+ exit 1
29
+ fi
27
30
  fi
31
+ # 转为绝对路径,防止符号链接循环
32
+ SHELL_DIR=$(cd -P "${SHELL_DIR}" && pwd)
28
33
 
29
34
  CREATE_TARBALL=${2}
30
35
 
@@ -46,18 +51,14 @@ if [ -d "${BASE_DIR}/pkg/${1}" ]; then
46
51
 
47
52
  pushd pkg/${1}
48
53
 
49
- # Check that the .shell link exists and points to the correct place
50
- if [ -e ".shell" ]; then
51
- LINK=$(readlink .shell)
52
- if [ "${LINK}" != "${SHELL_DIR}" ]; then
53
- echo ".shell symlink exists but does not point to expected location - please check and fix"
54
- popd
55
- exit -1
56
- fi
57
- else
58
- ln -s ${SHELL_DIR} .shell
54
+ # 删除旧的 .shell,防止循环
55
+ if [ -L ".shell" ] || [ -e ".shell" ]; then
56
+ rm -rf .shell
59
57
  fi
60
58
 
59
+ # 创建新的符号链接
60
+ ln -s "${SHELL_DIR}" .shell
61
+
61
62
  FILE=index.js
62
63
  if [ -f ./index.ts ]; then
63
64
  FILE=index.ts
@@ -72,7 +73,7 @@ if [ -d "${BASE_DIR}/pkg/${1}" ]; then
72
73
  cp -f ./package.json ${PKG_DIST}/package.json
73
74
  node ${SCRIPT_DIR}/pkgfile.js ${PKG_DIST}/package.json
74
75
  rm -rf ${PKG_DIST}/*.bak
75
- rm .shell
76
+ rm -rf .shell
76
77
 
77
78
  popd
78
79
  fi
@@ -81,22 +82,16 @@ if [ $EXIT_CODE -ne 0 ]; then
81
82
  exit $EXIT_CODE
82
83
  fi
83
84
 
84
-
85
85
  if [ -n "${CREATE_TARBALL}" ]; then
86
86
  echo $COMMIT $COMMIT_BRANCH > ${PKG_DIST}/version-commit.txt
87
87
 
88
88
  TARBALL=${NAME}.tar.gz
89
89
 
90
90
  pushd ${PKG_DIST}
91
-
92
91
  rm -f ../$TARBALL
93
-
94
92
  echo "Compressing to ${TARBALL}..."
95
-
96
93
  tar -czf ../${TARBALL} .
97
-
98
94
  popd
99
-
100
95
  fi
101
96
 
102
97
  exit $EXIT_CODE
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
3
  # 执行命令示例:
4
- # TAG=shell-pkg-v3.0.2-rc.105 ./shell/scripts/publish-shell.sh
4
+ # TAG=shell-pkg-v3.0.5-test.61 ./shell/scripts/publish-shell.sh
5
5
 
6
6
  set -euo pipefail
7
7
 
Binary file
Binary file
@@ -15,14 +15,14 @@
15
15
  animation: initial-load-animate 1s infinite linear;
16
16
  background-color: transparent;
17
17
  box-sizing: border-box;
18
- border: 5px solid #008ACF;
18
+ border: 5px solid #1890FF;
19
19
  border-radius: 50%;
20
- border-top-color: #00B2E2;
20
+ border-top-color: transparent;
21
21
  display: inline-block;
22
22
  height: 80px;
23
23
  margin: 0 auto;
24
24
  width: 80px;
25
- }
25
+ }}
26
26
 
27
27
  @keyframes initial-load-animate {
28
28
  0% {
package/store/i18n.js CHANGED
@@ -18,7 +18,7 @@ export const state = function() {
18
18
  // const available = translationContext.keys().map(path => path.replace(/^.*\/([^\/]+)\.[^.]+$/, '$1'));
19
19
  // Using require.context() forces them to all be in the same webpack chunk name... just hardcode the list for now so zh-hans
20
20
  // gets generated as it's own chunk instead of being loaded all the time.
21
- const available = [DEFAULT_LOCALE, 'zh-hans'];
21
+ const available = ['zh-hans', DEFAULT_LOCALE];
22
22
 
23
23
  const out = {
24
24
  default: DEFAULT_LOCALE,
@@ -108,6 +108,7 @@ export const getters = {
108
108
  ...args
109
109
  };
110
110
 
111
+ moreArgs['count'] = moreArgs['count'] !== undefined ? moreArgs['count'] : 1
111
112
  return formatter.format(moreArgs);
112
113
  } else {
113
114
  return '?';
@@ -229,8 +230,11 @@ export const actions = {
229
230
  const exists = !!state.available.find((loc) => loc === selected);
230
231
 
231
232
  if ( !selected || !exists) {
232
- selected = state.default;
233
+ selected = 'zh-hans';
233
234
  }
235
+
236
+ // selected = 'none'
237
+ selected = 'zh-hans'
234
238
 
235
239
  return dispatch('switchTo', selected);
236
240
  },
package/store/modal.ts CHANGED
@@ -17,7 +17,7 @@ const state = (): ModalState => ({
17
17
  componentProps: {},
18
18
  resources: [],
19
19
  closeOnClickOutside: false,
20
- modalWidth: '600px',
20
+ modalWidth: '610px',
21
21
  modalSticky: false
22
22
  });
23
23
 
@@ -45,7 +45,7 @@ const mutations: MutationTree<ModalState> = {
45
45
  state.componentProps = payload.componentProps || {};
46
46
  state.resources = Array.isArray(payload.resources) ? payload.resources : (payload.resources ? [payload.resources] : []);
47
47
  state.closeOnClickOutside = payload.closeOnClickOutside ?? false;
48
- state.modalWidth = payload.modalWidth || '600px';
48
+ state.modalWidth = payload.modalWidth || '610px';
49
49
  state.modalSticky = payload.modalSticky ?? false;
50
50
  },
51
51
 
@@ -55,7 +55,7 @@ const mutations: MutationTree<ModalState> = {
55
55
  state.componentProps = {};
56
56
  state.resources = [];
57
57
  state.closeOnClickOutside = false;
58
- state.modalWidth = '600px';
58
+ state.modalWidth = '610px';
59
59
  state.modalSticky = false;
60
60
  }
61
61
  };
package/store/prefs.js CHANGED
@@ -57,14 +57,14 @@ export const PINNED_CLUSTERS = create('pinned-clusters', [], { parseJSON });
57
57
  export const GROUP_RESOURCES = create('group-by', 'namespace');
58
58
  export const DIFF = create('diff', 'unified', { options: ['unified', 'split'] });
59
59
  export const THEME = create('theme', 'auto', {
60
- options: ['light', 'auto', 'dark'],
60
+ options: ['light'],
61
61
  asCookie,
62
62
  parseJSON,
63
63
  mangleRead: (x) => x.replace(/^ui-/, ''),
64
- mangleWrite: (x) => `ui-${ x }`,
64
+ mangleWrite: (x) => `ui-light`, // 接口同时修改为 白色
65
65
  });
66
66
  export const PREFERS_SCHEME = create('pcs', '', { asCookie, asUserPreference: false });
67
- export const LOCALE = create('locale', 'en-us', { asCookie });
67
+ export const LOCALE = create('locale', 'zh-hans', { asCookie });
68
68
  export const KEYMAP = create('keymap', 'sublime', { options: ['sublime', 'emacs', 'vim'] });
69
69
  export const ROWS_PER_PAGE = create('per-page', 100, { options: [10, 25, 50, 100], parseJSON });
70
70
  export const LOGS_WRAP = create('logs-wrap', true, { parseJSON });
@@ -149,6 +149,11 @@ export const getters = {
149
149
 
150
150
  const def = clone(definition.def);
151
151
 
152
+ if (key === THEME) {
153
+ // 无论 state 里存的是什么,都强制返回 light
154
+ return 'light';
155
+ }
156
+
152
157
  return def;
153
158
  },
154
159
 
@@ -470,7 +475,9 @@ export const actions = {
470
475
  try {
471
476
  value = JSON.parse(value);
472
477
  } catch (err) {
473
- console.error('Error parsing server pref', key, value, err); // eslint-disable-line no-console
478
+ // 容错处理:如果后端返回 map[...] 这样的字符串,直接忽略或重置为空
479
+ console.warn(`Pref ${ key } has invalid JSON, resetting`, value);
480
+ value = definition.defaultValue || null;
474
481
  continue;
475
482
  }
476
483
  }
package/store/type-map.js CHANGED
@@ -395,6 +395,7 @@ export function productsLoaded() {
395
395
 
396
396
  export const state = function() {
397
397
  return {
398
+ actionsWidth: 0,
398
399
  products: [],
399
400
  virtualTypes: {},
400
401
  spoofedTypes: {},
@@ -464,6 +465,8 @@ export const getters = {
464
465
  };
465
466
  },
466
467
 
468
+ actionsWidth: (state) => state.actionsWidth,
469
+
467
470
  // Turns a group name into a display label (e.g. management.cattle.io.v3.cluster -> Cluster)
468
471
  groupLabelFor(state) {
469
472
  return (schemaOrName) => {
@@ -509,6 +512,12 @@ export const getters = {
509
512
  return state.basicTypes?.[product]?.[schemaId];
510
513
  };
511
514
  },
515
+
516
+ groupsForVirTypes(state) {
517
+ return (product, name) => {
518
+ return state?.virtualTypes?.[product]?.find(item => item.name === name)?.icon;
519
+ };
520
+ },
512
521
 
513
522
  optionsFor(state, getters, rootState, rootGetters) {
514
523
  const def = {
@@ -661,7 +670,18 @@ export const getters = {
661
670
 
662
671
  const label = typeObj.labelKey ? rootGetters['i18n/t'](typeObj.labelKey) || typeObj.label : typeObj.label;
663
672
 
664
- let labelDisplay = highlightLabel(label, count, typeObj.schema);
673
+ const virtual = !!typeObj.virtual;
674
+ let icon = typeObj.icon;
675
+
676
+ if ( (!virtual || typeObj.isSpoofed ) && !icon ) {
677
+ if ( namespaced ) {
678
+ icon = 'folder';
679
+ } else {
680
+ icon = 'globe';
681
+ }
682
+ }
683
+
684
+ let labelDisplay = highlightLabel(label, icon, count, typeObj.schema);
665
685
 
666
686
  // If we did not match on just the label, add the schema name and see if that matches
667
687
  if (!labelDisplay && typeObj.schema?.attributes) {
@@ -778,7 +798,7 @@ export const getters = {
778
798
  return group;
779
799
  }
780
800
 
781
- function highlightLabel(original, count, schema) {
801
+ function highlightLabel(original, icon, count, schema) {
782
802
  let label = escapeHtml(original);
783
803
 
784
804
  if ( searchRegex ) {
@@ -802,6 +822,10 @@ export const getters = {
802
822
  }
803
823
  }
804
824
 
825
+ if ( icon ) {
826
+ label = `<i class="icon icon-fw icon-${ icon }"></i>${ label }`;
827
+ }
828
+
805
829
  return label;
806
830
  }
807
831
  };
@@ -1471,6 +1495,10 @@ export const getters = {
1471
1495
  };
1472
1496
 
1473
1497
  export const mutations = {
1498
+ setActionsWidth(state, width) {
1499
+ state.actionsWidth = width
1500
+ },
1501
+
1474
1502
  schemaChanged(state) {
1475
1503
  state.schemaGeneration = state.schemaGeneration + 1;
1476
1504
  },