dashboard-shell-shell 1.0.10000011122 → 1.6.0-alpha.2

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 (756) hide show
  1. package/assets/brand/csp/favicon.png +0 -0
  2. package/assets/data/aws-regions.json +3 -0
  3. package/assets/icons/demo.css:Zone.Identifier +0 -0
  4. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  5. package/assets/icons/iconfont.css +4 -1
  6. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  10. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  11. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  12. package/assets/images/action.svg +6 -0
  13. package/assets/images/icons/document.svg +3 -0
  14. package/assets/images/key.svg +17 -0
  15. package/assets/images/pl/dark/logo.png +0 -0
  16. package/assets/images/pl/logo.png +0 -0
  17. package/assets/images/providers/sks.svg +1 -0
  18. package/assets/images/vendor/cognito.svg +1 -0
  19. package/assets/styles/all.scss +23 -3
  20. package/assets/styles/app.scss +3 -0
  21. package/assets/styles/base/_basic.scss +10 -0
  22. package/assets/styles/base/_functions.scss +0 -0
  23. package/assets/styles/base/_mixins.scss +1 -1
  24. package/assets/styles/base/_spacing.scss +29 -0
  25. package/assets/styles/base/_variables.scss +21 -15
  26. package/assets/styles/fonts/_icons.scss +3 -2
  27. package/assets/styles/global/_button.scss +23 -16
  28. package/assets/styles/global/_form.scss +3 -2
  29. package/assets/styles/global/_labeled-input.scss +7 -3
  30. package/assets/styles/global/_layout.scss +1 -1
  31. package/assets/styles/global/_select.scss +7 -8
  32. package/assets/styles/global/_table.scss +3 -2
  33. package/assets/styles/global/_tooltip.scss +15 -4
  34. package/assets/styles/themes/_dark.scss +32 -0
  35. package/assets/styles/themes/_light.scss +90 -7
  36. package/assets/styles/vendor/vue-select.scss +4 -2
  37. package/assets/translations/en-us.yaml +881 -107
  38. package/assets/translations/zh-hans.yaml +232 -46
  39. package/chart/__tests__/S3.test.ts +2 -1
  40. package/chart/monitoring/index.vue +1 -1
  41. package/cloud-credential/gcp.vue +9 -1
  42. package/components/ActionDropdown.vue +1 -0
  43. package/components/ActionMenuShell.vue +2 -3
  44. package/components/AppModal.vue +9 -28
  45. package/components/AsyncButton.vue +2 -0
  46. package/components/BrandImage.vue +1 -0
  47. package/components/ButtonDropdown.vue +3 -1
  48. package/components/Certificates.vue +5 -0
  49. package/components/ClusterIconMenu.vue +1 -1
  50. package/components/CodeMirror.vue +10 -7
  51. package/components/CommunityLinks.vue +3 -58
  52. package/components/ConfigMapSettings/Settings.vue +377 -0
  53. package/components/ConfigMapSettings/index.vue +354 -0
  54. package/components/ContainerResourceLimit.vue +2 -2
  55. package/components/CopyToClipboard.vue +15 -0
  56. package/components/CruResource.vue +104 -17
  57. package/components/CruResourceFooter.vue +1 -1
  58. package/components/DetailText.vue +61 -11
  59. package/components/Drawer/Chrome.vue +115 -0
  60. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +64 -0
  61. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  62. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  63. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  64. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  65. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  66. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  67. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  68. package/components/Drawer/ResourceDetailDrawer/index.vue +124 -0
  69. package/components/ExplorerMembers.vue +28 -4
  70. package/components/ExplorerProjectsNamespaces.vue +30 -33
  71. package/components/FilterPanel.vue +156 -0
  72. package/components/FixedBanner.vue +19 -5
  73. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  74. package/components/GlobalRoleBindings.vue +3 -0
  75. package/components/GrowlManager.vue +16 -15
  76. package/components/IconOrSvg.vue +19 -35
  77. package/components/IndentedPanel.vue +4 -10
  78. package/components/KeyValueView.vue +1 -1
  79. package/components/LandingPagePreference.vue +2 -0
  80. package/components/Loading.vue +1 -1
  81. package/components/LocaleSelector.vue +10 -2
  82. package/components/PaginatedResourceTable.vue +53 -1
  83. package/components/PodSecurityAdmission.vue +2 -2
  84. package/components/ProgressBarMulti.vue +1 -0
  85. package/components/PromptModal.vue +38 -7
  86. package/components/PromptRemove.vue +8 -4
  87. package/components/PromptRestore.vue +22 -44
  88. package/components/RelatedResources.vue +7 -12
  89. package/components/Resource/Detail/Additional.vue +46 -0
  90. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  91. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  92. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  93. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  94. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  95. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  96. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  97. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  98. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  99. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  100. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  101. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  102. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  103. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  104. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  105. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  106. package/components/Resource/Detail/Card/index.vue +56 -0
  107. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  108. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  109. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  110. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  111. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  112. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  113. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  114. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +138 -0
  115. package/components/Resource/Detail/Metadata/KeyValue.vue +144 -0
  116. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  117. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  118. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  119. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  120. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  121. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  122. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  123. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  124. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  125. package/components/Resource/Detail/Metadata/index.vue +90 -0
  126. package/components/Resource/Detail/Page.vue +37 -0
  127. package/components/Resource/Detail/PercentageBar.vue +40 -0
  128. package/components/Resource/Detail/ResourceRow.vue +138 -0
  129. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  130. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  131. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  132. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  133. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  134. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  135. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  136. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  137. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  138. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  139. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  140. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  141. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  142. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  143. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  144. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  145. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  146. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  147. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  148. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  149. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  150. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  151. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  152. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  153. package/components/Resource/Detail/SpacedRow.vue +14 -0
  154. package/components/Resource/Detail/StatusBar.vue +59 -0
  155. package/components/Resource/Detail/StatusRow.vue +61 -0
  156. package/components/Resource/Detail/TitleBar/Title.vue +15 -0
  157. package/components/Resource/Detail/TitleBar/Top.vue +16 -0
  158. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  159. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  160. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  161. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  162. package/components/Resource/Detail/TitleBar/composables.ts +61 -0
  163. package/components/Resource/Detail/TitleBar/index.vue +302 -0
  164. package/components/Resource/Detail/Top/index.vue +34 -0
  165. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  166. package/components/Resource/Detail/composables.ts +45 -0
  167. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  168. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  169. package/components/ResourceDetail/Masthead/index.vue +65 -0
  170. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  171. package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +34 -15
  172. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  173. package/components/ResourceDetail/index.vue +75 -560
  174. package/components/{rancherResourceDetail/index.vue → ResourceDetail/legacy.vue} +31 -42
  175. package/components/ResourceList/Masthead.vue +189 -82
  176. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  177. package/components/ResourceList/index.vue +3 -2
  178. package/components/ResourceTable.vue +75 -16
  179. package/components/ResourceYaml.vue +15 -2
  180. package/components/RichTranslation.vue +106 -0
  181. package/components/SideNav.vue +66 -29
  182. package/components/SlideInPanelManager.vue +116 -14
  183. package/components/SortableTable/THead.vue +52 -1
  184. package/components/SortableTable/index.vue +515 -394
  185. package/components/SortableTable/paging.js +15 -16
  186. package/components/SortableTable/selection.js +22 -10
  187. package/components/StateDot/index.vue +28 -0
  188. package/components/StatusBadge.vue +6 -4
  189. package/components/SubtleLink.vue +25 -0
  190. package/components/Tabbed/index.vue +39 -19
  191. package/components/Wizard.vue +16 -3
  192. package/components/YamlEditor.vue +1 -2
  193. package/components/__tests__/AsyncButton.test.ts +39 -0
  194. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  195. package/components/__tests__/CruResource.test.ts +63 -0
  196. package/components/__tests__/FilterPanel.test.ts +81 -0
  197. package/components/__tests__/GrowlManager.test.ts +0 -25
  198. package/components/__tests__/PromptModal.test.ts +146 -0
  199. package/components/__tests__/PromptRestore.test.ts +1 -65
  200. package/components/__tests__/RichTranslation.test.ts +115 -0
  201. package/components/auth/AuthBanner.vue +15 -14
  202. package/components/auth/Principal.vue +44 -15
  203. package/components/auth/RoleDetailEdit.vue +112 -15
  204. package/components/auth/SelectPrincipal.vue +1 -0
  205. package/components/auth/login/ldap.vue +2 -2
  206. package/components/auth/login/oidc.vue +6 -1
  207. package/components/breadcrumb/index.vue +119 -0
  208. package/components/fleet/FleetApplications.vue +174 -0
  209. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  210. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  211. package/components/fleet/FleetClusters.vue +25 -6
  212. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  213. package/components/fleet/FleetHelmOps.vue +123 -0
  214. package/components/fleet/FleetIntro.vue +58 -28
  215. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  216. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  217. package/components/fleet/FleetRepos.vue +37 -80
  218. package/components/fleet/FleetResources.vue +69 -27
  219. package/components/fleet/FleetSummary.vue +26 -51
  220. package/components/fleet/FleetValuesFrom.vue +295 -0
  221. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  222. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  223. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  224. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  225. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  226. package/components/fleet/dashboard/Empty.vue +73 -0
  227. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  228. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  229. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  230. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  231. package/components/form/ArrayList.vue +187 -142
  232. package/components/form/ArrayListGrouped.vue +5 -3
  233. package/components/form/BannerSettings.vue +130 -61
  234. package/components/form/ChangePassword.vue +8 -6
  235. package/components/form/ColorInput.vue +67 -14
  236. package/components/form/Command.vue +4 -5
  237. package/components/form/Conditions.vue +15 -1
  238. package/components/form/FileImageSelector.vue +1 -1
  239. package/components/form/Footer.vue +12 -5
  240. package/components/form/HealthCheck.vue +0 -2
  241. package/components/form/HookOption.vue +87 -58
  242. package/components/form/InputWithSelect.vue +10 -7
  243. package/components/form/KeyValue.vue +138 -55
  244. package/components/form/LabeledSelect.vue +222 -201
  245. package/components/form/Labels.vue +92 -22
  246. package/components/form/MatchExpressions.vue +59 -12
  247. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  248. package/components/form/Members/ClusterPermissionsEditor.vue +32 -30
  249. package/components/form/Members/MembershipEditor.vue +2 -2
  250. package/components/form/NameNsDescription.vue +27 -10
  251. package/components/form/Networking.vue +30 -28
  252. package/components/form/NodeAffinity.vue +29 -28
  253. package/components/form/NotificationSettings.vue +15 -1
  254. package/components/form/Password.vue +6 -2
  255. package/components/form/PodAffinity.vue +23 -23
  256. package/components/form/Probe.vue +15 -11
  257. package/components/form/ProjectMemberEditor.vue +28 -25
  258. package/components/form/ResourceLabeledSelect.vue +22 -8
  259. package/components/form/ResourceQuota/Namespace.vue +4 -4
  260. package/components/form/ResourceQuota/NamespaceRow.vue +23 -18
  261. package/components/form/ResourceQuota/Project.vue +4 -4
  262. package/components/form/ResourceQuota/ProjectRow.vue +36 -31
  263. package/components/form/ResourceSelector.vue +28 -24
  264. package/components/form/ResourceTabs/index.vue +7 -1
  265. package/components/form/SSHKnownHosts/index.vue +14 -11
  266. package/components/form/SecretSelector.vue +18 -2
  267. package/components/form/Security.vue +1 -3
  268. package/components/form/Select.vue +66 -29
  269. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  270. package/components/form/ServiceNameSelect.vue +2 -5
  271. package/components/form/ServicePorts.vue +149 -75
  272. package/components/form/SimpleSecretSelector.vue +17 -4
  273. package/components/form/Taints.vue +23 -3
  274. package/components/form/Tolerations.vue +13 -9
  275. package/components/form/UnitInput.vue +21 -0
  276. package/components/form/ValueFromResource.vue +136 -110
  277. package/components/form/WorkloadPorts.vue +143 -123
  278. package/components/form/__tests__/ArrayList.test.ts +32 -0
  279. package/components/form/__tests__/ColorInput.test.ts +35 -0
  280. package/components/form/__tests__/KeyValue.test.ts +36 -0
  281. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  282. package/components/form/__tests__/Labels.test.ts +360 -0
  283. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  284. package/components/form/__tests__/Networking.test.ts +116 -0
  285. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  286. package/components/form/__tests__/Select.test.ts +37 -1
  287. package/components/form/__tests__/UnitInput.test.ts +23 -1
  288. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  289. package/components/formatter/ClusterLink.vue +5 -8
  290. package/components/formatter/Description.vue +30 -0
  291. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  292. package/components/formatter/FleetApplicationSource.vue +79 -0
  293. package/components/formatter/FleetSummaryGraph.vue +7 -0
  294. package/components/formatter/PodImages.vue +1 -1
  295. package/components/formatter/WorkloadHealthScale.vue +5 -4
  296. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  297. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  298. package/components/google/AccountAccess.vue +209 -0
  299. package/components/google/types/gcp.d.ts +136 -0
  300. package/components/google/types/index.d.ts +101 -0
  301. package/components/google/util/__mocks__/gcp.ts +465 -0
  302. package/components/google/util/formatter.ts +82 -0
  303. package/components/google/util/gcp.ts +134 -0
  304. package/components/google/util/index.d.ts +11 -0
  305. package/components/nav/Favorite.vue +6 -2
  306. package/components/nav/Group.vue +80 -23
  307. package/components/nav/Header.vue +108 -55
  308. package/components/nav/HeaderPageActionMenu.vue +1 -0
  309. package/components/nav/NamespaceFilter.vue +126 -78
  310. package/components/nav/NotificationCenter/Notification.vue +484 -0
  311. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  312. package/components/nav/NotificationCenter/index.vue +148 -0
  313. package/components/nav/TopLevelMenu.helper.ts +55 -34
  314. package/components/nav/TopLevelMenu.vue +73 -25
  315. package/components/nav/Type.vue +62 -14
  316. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  317. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  318. package/components/nav/WindowManager/index.vue +3 -2
  319. package/components/templates/default.vue +0 -3
  320. package/components/templates/plain.vue +0 -3
  321. package/composables/drawer.ts +26 -0
  322. package/composables/focusTrap.ts +3 -3
  323. package/composables/resources.test.ts +63 -0
  324. package/composables/resources.ts +38 -0
  325. package/composables/useClickOutside.ts +1 -1
  326. package/composables/useI18n.ts +12 -11
  327. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  328. package/config/labels-annotations.js +22 -11
  329. package/config/menuRouteMap.js +10 -0
  330. package/config/pagination-table-headers.js +8 -1
  331. package/config/private-label.js +0 -1
  332. package/config/product/auth.js +33 -7
  333. package/config/product/{cis.js → compliance.js} +23 -26
  334. package/config/product/explorer.js +79 -25
  335. package/config/product/fleet.js +77 -17
  336. package/config/product/manager.js +1 -29
  337. package/config/product/settings.js +39 -18
  338. package/config/query-params.js +16 -1
  339. package/config/roles.ts +2 -1
  340. package/config/router/navigation-guards/authentication.js +51 -2
  341. package/config/router/navigation-guards/index.js +16 -20
  342. package/config/router/routes.js +65 -31
  343. package/config/secret.ts +15 -0
  344. package/config/settings.ts +61 -16
  345. package/config/store.js +2 -0
  346. package/config/system-namespaces.js +1 -1
  347. package/config/table-headers.js +91 -30
  348. package/config/types.js +18 -7
  349. package/config/version.js +1 -1
  350. package/core/plugin-helpers.ts +3 -2
  351. package/core/plugin.ts +32 -7
  352. package/core/types.ts +25 -7
  353. package/detail/catalog.cattle.io.app.vue +5 -1
  354. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  355. package/detail/fleet.cattle.io.bundle.vue +70 -6
  356. package/detail/fleet.cattle.io.cluster.vue +28 -15
  357. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  358. package/detail/fleet.cattle.io.helmop.vue +157 -0
  359. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  360. package/detail/management.cattle.io.oidcclient.vue +369 -0
  361. package/detail/namespace.vue +0 -3
  362. package/detail/node.vue +48 -39
  363. package/detail/pod.vue +2 -2
  364. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  365. package/detail/service.vue +10 -2
  366. package/detail/workload/index.vue +48 -39
  367. package/dialog/AddCustomBadgeDialog.vue +17 -10
  368. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  369. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  370. package/dialog/AssignToDialog.vue +176 -0
  371. package/dialog/ChangePasswordDialog.vue +106 -0
  372. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  373. package/dialog/DisableAuthProviderDialog.vue +101 -0
  374. package/dialog/DrainNode.vue +1 -1
  375. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  376. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  377. package/dialog/FeatureFlagListDialog.vue +288 -0
  378. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  379. package/dialog/GenericPrompt.vue +1 -1
  380. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  381. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  382. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  383. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  384. package/dialog/MoveNamespaceDialog.vue +157 -0
  385. package/dialog/OidcClientSecretDialog.vue +117 -0
  386. package/dialog/RedeployWorkloadDialog.vue +164 -0
  387. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  388. package/dialog/ScalePoolDownDialog.vue +1 -1
  389. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  390. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  391. package/dialog/WechatDialog.vue +57 -0
  392. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  393. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  394. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  395. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  396. package/edit/__tests__/service.test.ts +2 -1
  397. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  398. package/edit/auth/ldap/config.vue +24 -0
  399. package/edit/auth/oidc.vue +159 -93
  400. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  401. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  402. package/edit/autoscaling.horizontalpodautoscaler/index.vue +7 -2
  403. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  404. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  405. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  406. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  407. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  408. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  409. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  410. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  411. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  412. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  413. package/edit/configmap.vue +12 -2
  414. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  415. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  416. package/edit/fleet.cattle.io.helmop.vue +786 -0
  417. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  418. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  419. package/edit/logging-flow/index.vue +1 -0
  420. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  421. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
  422. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  423. package/edit/management.cattle.io.oidcclient.vue +162 -0
  424. package/edit/management.cattle.io.project.vue +4 -1
  425. package/edit/management.cattle.io.user.vue +17 -4
  426. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  427. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  428. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  429. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  430. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  431. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  432. package/edit/monitoring.coreos.com.route.vue +1 -0
  433. package/edit/namespace.vue +2 -4
  434. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  435. package/edit/networking.k8s.io.ingress/Certificate.vue +25 -8
  436. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  437. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  438. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  439. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  440. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  441. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +6 -17
  442. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  443. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +69 -73
  444. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  445. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  446. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  447. package/edit/networking.k8s.io.networkpolicy/index.vue +24 -32
  448. package/edit/node.vue +1 -0
  449. package/edit/persistentvolume/index.vue +7 -2
  450. package/edit/persistentvolumeclaim.vue +2 -0
  451. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  452. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  453. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  454. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  455. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  456. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  457. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  458. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  459. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  460. package/edit/resources.cattle.io.restore.vue +1 -1
  461. package/edit/secret/basic.vue +1 -0
  462. package/edit/secret/index.vue +129 -17
  463. package/edit/service.vue +21 -30
  464. package/edit/serviceaccount.vue +4 -1
  465. package/edit/storage.k8s.io.storageclass/index.vue +14 -9
  466. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  467. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  468. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  469. package/edit/token.vue +1 -1
  470. package/edit/workload/Job.vue +31 -34
  471. package/edit/workload/Upgrading.vue +5 -5
  472. package/edit/workload/index.vue +32 -32
  473. package/edit/workload/mixins/workload.js +0 -2
  474. package/edit/workload/storage/Mount.vue +1 -0
  475. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  476. package/edit/workload/storage/azureDisk.vue +14 -10
  477. package/edit/workload/storage/azureFile.vue +9 -7
  478. package/edit/workload/storage/csi/index.vue +6 -9
  479. package/edit/workload/storage/emptyDir.vue +7 -5
  480. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  481. package/edit/workload/storage/hostPath.vue +7 -5
  482. package/edit/workload/storage/nfs.vue +8 -6
  483. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  484. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  485. package/edit/workload/storage/secret.vue +9 -6
  486. package/edit/workload/storage/vsphereVolume.vue +11 -7
  487. package/initialize/app-extended.js +7 -1
  488. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  489. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  490. package/list/fleet.cattle.io.helmop.vue +108 -0
  491. package/list/management.cattle.io.feature.vue +4 -288
  492. package/list/management.cattle.io.oidcclient.vue +108 -0
  493. package/list/management.cattle.io.setting.vue +22 -13
  494. package/list/management.cattle.io.user.vue +7 -3
  495. package/list/namespace.vue +6 -2
  496. package/list/node.vue +2 -0
  497. package/list/projectsecret.vue +345 -0
  498. package/list/provisioning.cattle.io.cluster.vue +6 -7
  499. package/list/secret.vue +109 -0
  500. package/list/workload.vue +6 -2
  501. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  502. package/machine-config/amazonec2.vue +3 -24
  503. package/machine-config/components/GCEImage.vue +374 -0
  504. package/machine-config/google.vue +617 -0
  505. package/machine-config/vmwarevsphere.vue +7 -17
  506. package/mixins/__tests__/brand.spec.ts +170 -0
  507. package/mixins/auth-config.js +8 -1
  508. package/mixins/brand.js +33 -17
  509. package/mixins/create-edit-view/impl.js +10 -1
  510. package/mixins/create-edit-view/index.js +5 -0
  511. package/mixins/preset.js +100 -0
  512. package/mixins/resource-fetch-api-pagination.js +73 -44
  513. package/mixins/resource-fetch.js +18 -8
  514. package/mixins/resource-table-watch.js +45 -0
  515. package/mixins/vue-select-overrides.js +1 -4
  516. package/models/__tests__/chart.test.ts +296 -0
  517. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  518. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  519. package/models/__tests__/node.test.ts +7 -63
  520. package/models/__tests__/workload.test.ts +1 -0
  521. package/models/chart.js +157 -2
  522. package/models/cluster/node.js +2 -1
  523. package/models/cluster.js +32 -2
  524. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  525. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  526. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  527. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  528. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  529. package/models/fleet-application.js +297 -0
  530. package/models/fleet.cattle.io.bundle.js +9 -8
  531. package/models/fleet.cattle.io.cluster.js +21 -4
  532. package/models/fleet.cattle.io.gitrepo.js +46 -382
  533. package/models/fleet.cattle.io.helmop.js +202 -0
  534. package/models/management.cattle.io.authconfig.js +1 -0
  535. package/models/management.cattle.io.cluster.js +0 -20
  536. package/models/management.cattle.io.feature.js +7 -1
  537. package/models/management.cattle.io.fleetworkspace.js +14 -1
  538. package/models/management.cattle.io.node.js +7 -22
  539. package/models/management.cattle.io.nodepool.js +12 -0
  540. package/models/management.cattle.io.oidcclient.js +18 -0
  541. package/models/management.cattle.io.registration.js +3 -0
  542. package/models/management.cattle.io.setting.js +0 -1
  543. package/models/namespace.js +12 -1
  544. package/models/provisioning.cattle.io.cluster.js +79 -115
  545. package/models/secret.js +157 -2
  546. package/models/service.js +28 -9
  547. package/models/storage.k8s.io.storageclass.js +2 -2
  548. package/models/workload.js +91 -51
  549. package/package.json +6 -5
  550. package/pages/about.vue +17 -61
  551. package/pages/account/index.vue +104 -116
  552. package/pages/auth/login.vue +50 -30
  553. package/pages/auth/setup.vue +36 -17
  554. package/pages/auth/verify.vue +13 -1
  555. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  556. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  557. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  558. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  559. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  560. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  561. package/pages/c/_cluster/auth/roles/index.vue +56 -5
  562. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  563. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  564. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  565. package/pages/c/_cluster/explorer/index.vue +14 -3
  566. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  567. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  568. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  569. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  570. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  571. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  572. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  573. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  574. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  575. package/pages/c/_cluster/fleet/index.vue +866 -328
  576. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  577. package/pages/c/_cluster/longhorn/index.vue +5 -2
  578. package/pages/c/_cluster/settings/banners.vue +230 -103
  579. package/pages/c/_cluster/settings/brand.vue +349 -301
  580. package/pages/c/_cluster/settings/performance.vue +68 -64
  581. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  582. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  583. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  584. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  585. package/pages/explorer/resource/detail/configmap.vue +42 -0
  586. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  587. package/pages/explorer/resource/detail/secret.vue +63 -0
  588. package/pages/home.vue +61 -109
  589. package/pages/prefs.vue +25 -24
  590. package/pages/support/index.vue +4 -6
  591. package/plugins/clean-html.js +2 -0
  592. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  593. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  594. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  595. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  596. package/plugins/dashboard-store/actions.js +212 -55
  597. package/plugins/dashboard-store/getters.js +112 -24
  598. package/plugins/dashboard-store/mutations.js +61 -12
  599. package/plugins/dashboard-store/normalize.js +29 -19
  600. package/plugins/dashboard-store/resource-class.js +105 -21
  601. package/plugins/steve/__tests__/getters.test.ts +19 -12
  602. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  603. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  604. package/plugins/steve/actions.js +37 -24
  605. package/plugins/steve/getters.js +47 -12
  606. package/plugins/steve/resourceWatcher.js +10 -3
  607. package/plugins/steve/steve-class.js +5 -0
  608. package/plugins/steve/steve-pagination-utils.ts +225 -43
  609. package/plugins/steve/subscribe.js +418 -53
  610. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  611. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  612. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  613. package/rancher-components/Banner/Banner.test.ts +51 -3
  614. package/rancher-components/Banner/Banner.vue +43 -9
  615. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  616. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  617. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  618. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  619. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  620. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  621. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  622. package/rancher-components/Form/Radio/RadioGroup.vue +90 -39
  623. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  624. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  625. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +32 -2
  626. package/rancher-components/RcButton/RcButton.vue +1 -1
  627. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  628. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  629. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  630. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  631. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  632. package/rancher-components/RcDropdown/index.ts +2 -0
  633. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  634. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  635. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  636. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  637. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  638. package/rancher-components/RcItemCard/index.ts +2 -0
  639. package/rancher-components/StringList/StringList.vue +1 -1
  640. package/scripts/clean +0 -0
  641. package/scripts/extension/bundle +0 -0
  642. package/scripts/extension/helm/scripts/package +0 -0
  643. package/scripts/extension/helm/scripts/patch +0 -0
  644. package/scripts/extension/helm/scripts/version +0 -0
  645. package/scripts/extension/helmpatch +0 -0
  646. package/scripts/extension/parse-tag-name +0 -0
  647. package/scripts/extension/publish +1 -1
  648. package/scripts/publish-shell.sh +86 -60
  649. package/scripts/serve-pkgs +0 -0
  650. package/scripts/sync-shell-deps +0 -0
  651. package/scripts/typegen.sh +44 -28
  652. package/static/loading-indicator.html +1 -1
  653. package/store/action-menu.js +26 -56
  654. package/store/auth.js +3 -0
  655. package/store/catalog.js +85 -25
  656. package/store/features.js +0 -1
  657. package/store/growl.js +97 -8
  658. package/store/i18n.js +9 -5
  659. package/store/index.js +44 -14
  660. package/store/notifications.ts +426 -0
  661. package/store/prefs.js +11 -5
  662. package/store/slideInPanel.ts +6 -0
  663. package/store/type-map.js +35 -18
  664. package/store/type-map.utils.ts +49 -6
  665. package/store/uiplugins.ts +15 -1
  666. package/types/fleet.d.ts +60 -1
  667. package/types/kube/kube-api.ts +34 -0
  668. package/types/notifications/index.ts +74 -0
  669. package/types/resources/fleet.d.ts +43 -0
  670. package/types/resources/pod-security-admission.ts +36 -0
  671. package/types/resources/settings.d.ts +107 -0
  672. package/types/resources/userPreferences.d.ts +13 -0
  673. package/types/shell/index.d.ts +944 -744
  674. package/types/store/dashboard-store.types.ts +57 -4
  675. package/types/store/pagination.types.ts +41 -9
  676. package/types/store/subscribe.types.ts +50 -0
  677. package/utils/__mocks__/tabbable.js +13 -0
  678. package/utils/__tests__/back-off.test.ts +354 -0
  679. package/utils/__tests__/create-yaml.test.ts +235 -0
  680. package/utils/__tests__/fleet.test.ts +148 -0
  681. package/utils/__tests__/kontainer.test.ts +19 -0
  682. package/utils/__tests__/object.test.ts +54 -1
  683. package/utils/__tests__/string.test.ts +273 -1
  684. package/utils/__tests__/time.test.ts +31 -0
  685. package/utils/auth.js +41 -6
  686. package/utils/back-off.ts +176 -0
  687. package/utils/cluster.js +24 -20
  688. package/utils/create-yaml.js +103 -9
  689. package/utils/crypto/encryption.ts +103 -0
  690. package/utils/cspAdaptor.ts +51 -0
  691. package/utils/error.js +7 -6
  692. package/utils/errorTranslate.json +366 -2
  693. package/utils/fleet-types.ts +0 -0
  694. package/utils/fleet.ts +204 -74
  695. package/utils/grafana.js +1 -0
  696. package/utils/kontainer.ts +3 -5
  697. package/utils/object.js +36 -12
  698. package/utils/pagination-utils.ts +50 -3
  699. package/utils/pagination-wrapper.ts +132 -50
  700. package/utils/perf-setting.utils.ts +28 -0
  701. package/utils/release-notes.ts +48 -0
  702. package/utils/selector-typed.ts +210 -0
  703. package/utils/selector.js +29 -6
  704. package/utils/settings.ts +4 -1
  705. package/utils/string.js +24 -0
  706. package/utils/style.ts +39 -0
  707. package/utils/{time.js → time.ts} +25 -6
  708. package/utils/uiplugins.ts +41 -8
  709. package/utils/v-sphere.ts +5 -1
  710. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  711. package/utils/validators/formRules/index.ts +99 -4
  712. package/utils/window.js +11 -7
  713. package/vue.config.js +0 -5
  714. package/.DS_Store +0 -0
  715. package/components/AssignTo.vue +0 -199
  716. package/components/DisableAuthProviderModal.vue +0 -115
  717. package/components/MoveModal.vue +0 -167
  718. package/components/PromptChangePassword.vue +0 -123
  719. package/components/__tests__/ApplicationCard.test.ts +0 -27
  720. package/components/cards/ApplicationCard.vue +0 -145
  721. package/components/fleet/FleetBundleResources.vue +0 -86
  722. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  723. package/components/formatter/RKETemplateName.vue +0 -37
  724. package/components/rancherResourceDetail/Masthead.vue +0 -769
  725. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
  726. package/components/rancherResourceList/Masthead-btn.vue +0 -225
  727. package/components/rancherResourceList/Masthead.vue +0 -375
  728. package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
  729. package/components/rancherResourceList/index.vue +0 -307
  730. package/components/rancherResourceList/resource-list.config.js +0 -7
  731. package/components/rancherResourceTable.vue +0 -783
  732. package/components/rancherSortableTable/THead.vue +0 -561
  733. package/components/rancherSortableTable/actions.js +0 -153
  734. package/components/rancherSortableTable/advanced-filtering.js +0 -272
  735. package/components/rancherSortableTable/debug.js +0 -117
  736. package/components/rancherSortableTable/filtering.js +0 -290
  737. package/components/rancherSortableTable/grouping.js +0 -48
  738. package/components/rancherSortableTable/index.vue +0 -2712
  739. package/components/rancherSortableTable/paging.js +0 -155
  740. package/components/rancherSortableTable/selection.js +0 -629
  741. package/components/rancherSortableTable/sortable-config.ts +0 -4
  742. package/components/rancherSortableTable/sorting.js +0 -129
  743. package/config/product/legacy.js +0 -62
  744. package/config/secret.js +0 -14
  745. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  746. package/models/etcdbackup.js +0 -45
  747. package/pages/auth copy/login.vue +0 -595
  748. package/pages/auth copy/logout.vue +0 -47
  749. package/pages/auth copy/setup.vue +0 -523
  750. package/pages/auth copy/verify.vue +0 -203
  751. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  752. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  753. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  754. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  755. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  756. package/types/cloud-shell/index.d.ts +0 -11014
@@ -27,7 +27,6 @@ import ButtonMultiAction from '@shell/components/ButtonMultiAction.vue';
27
27
  import ActionMenu from '@shell/components/ActionMenuShell.vue';
28
28
  import { useRuntimeFlag } from '@shell/composables/useRuntimeFlag';
29
29
  import ActionDropdownShell from '@shell/components/ActionDropdownShell.vue';
30
- import { harvesterhci2cloud, cloud2harvesterhci } from '@shell/utils/router'
31
30
 
32
31
  // Uncomment for table performance debugging
33
32
  // import tableDebug from './debug';
@@ -382,6 +381,16 @@ export default {
382
381
  type: String,
383
382
  default: ''
384
383
  },
384
+
385
+ /**
386
+ * Usually the manual refresh button is controlled via isTooManyItemsToAutoUpdate
387
+ *
388
+ * However this is singular on page. In some places there's more than one...
389
+ */
390
+ hideManualRefreshButton: {
391
+ type: Boolean,
392
+ default: false
393
+ },
385
394
  isBanner: {
386
395
  // Show isBanner input to filter rows
387
396
  type: Boolean,
@@ -415,33 +424,16 @@ export default {
415
424
 
416
425
  const isLoading = this.loading || false;
417
426
 
418
- console.log(this.$route.path, ' this.$route?.path');
419
-
420
427
  let isCreatable = false;
421
- const lastPath = this.$route?.path?.split('/').pop();
428
+ const lastPath = this.$route?.path.split('/').pop();
422
429
 
423
- console.log(lastPath, ' lastPath-----------------------');
424
-
425
- if (lastPath?.includes('.')) {
430
+ if (lastPath.includes('.')) {
426
431
  isCreatable = this.$store.getters['type-map/optionsFor'](lastPath).isCreatable;
427
432
  } else if (lastPath === 'namespace') {
428
433
  isCreatable = this.$store.getters['type-map/optionsFor'](this.$route.name).isCreatable;
429
434
  }
430
435
 
431
- const resource = this.$route.params.resource;
432
-
433
- let hasEditComponent = false
434
-
435
- if (lastPath?.includes('.')) {
436
- hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](lastPath);
437
- } else if (lastPath === 'namespace') {
438
- hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](this.$route.name);
439
- } else {
440
- hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](resource);
441
- }
442
-
443
436
  return {
444
- hasEditComponent,
445
437
  refreshButtonPhase: isLoading ? ASYNC_BUTTON_STATES.WAITING : ASYNC_BUTTON_STATES.ACTION,
446
438
  expanded: {},
447
439
  searchQuery,
@@ -629,17 +621,22 @@ export default {
629
621
  }
630
622
  };
631
623
 
632
- onMounted(() => {
633
- table.value.addEventListener('keyup', handleEnterKey);
634
- });
635
624
 
636
625
  onBeforeUnmount(() => {
637
- table.value.removeEventListener('keyup', handleEnterKey);
626
+ table.value && table.value.removeEventListener('keyup', handleEnterKey);
638
627
  });
639
628
 
640
629
  const store = useStore();
641
630
  const { featureDropdownMenu } = useRuntimeFlag(store);
642
631
 
632
+ onMounted(() => {
633
+ table.value && table.value.addEventListener('keyup', handleEnterKey);
634
+
635
+ console.log(featureDropdownMenu, ' featureDropdownMenu---------------------');
636
+
637
+
638
+ });
639
+
643
640
  return {
644
641
  table,
645
642
  featureDropdownMenu,
@@ -868,6 +865,25 @@ export default {
868
865
  },
869
866
 
870
867
  methods: {
868
+ // getTableList () {
869
+ // const q = this.eventualSearchQuery;
870
+
871
+ // this.searchQuery = q;
872
+
873
+ // if (!this.hasAdvancedFiltering && this.useQueryParamsForSimpleFiltering) {
874
+ // const route = {
875
+ // name: this.$route.name,
876
+ // params: { ...this.$route.params },
877
+ // query: { ...this.$route.query, q }
878
+ // };
879
+
880
+ // if (!q && this.$route.query?.q) {
881
+ // route.query = {};
882
+ // }
883
+
884
+ // this.$router.replace(route);
885
+ // }
886
+ // },
871
887
  onTableScroll(table, e) {
872
888
  // 记录最后滚动的距离
873
889
  let lastScrollTop = 0;
@@ -1058,12 +1074,22 @@ export default {
1058
1074
  if ( col.labelKey ) {
1059
1075
  return this.t(col.labelKey, undefined, true);
1060
1076
  } else if ( col.label ) {
1061
- return col.label;
1077
+ // 判断 label 是否为中文
1078
+ if (this.isChinese(col.label)) {
1079
+ return col.label;
1080
+ } else {
1081
+ return this.t(`tableHeaders.${col.label.replace(/\s+/g, '').toLowerCase()}`, undefined, true);
1082
+ }
1062
1083
  }
1063
1084
 
1064
1085
  return ucFirst(col.name);
1065
1086
  },
1066
1087
 
1088
+ // 判断字符串是否包含中文
1089
+ isChinese(str) {
1090
+ return /[\u4e00-\u9fa5]/.test(str);
1091
+ },
1092
+
1067
1093
  valueFor(row, col, isLabel) {
1068
1094
  if (typeof col.value === 'function') {
1069
1095
  return col.value(row);
@@ -1241,38 +1267,32 @@ export default {
1241
1267
  ref="container"
1242
1268
  :data-testid="componentTestid + '-list-container'"
1243
1269
  >
1270
+ <!-- 主标题和过滤器区域 -->
1244
1271
  <div
1245
- :class="{'titled': $slots.title && $slots.title.length, 'mb-40': isFilterLabel, 'mb-20': search || isCreatable}"
1246
- class="sortable-table-header "
1247
- :style="{marginTop: search&& !isBanner ? marginTopValue + 'px' : '0px',marginLeft: isCreatable && hasEditComponent ? '100px' : '-10px',maxHeight: '32px'}"
1272
+ :class="{'titled': $slots.title && $slots.title.length, 'mb-40': isFilterLabel }"
1273
+ class="sortable-table-header"
1248
1274
  >
1249
1275
  <slot name="title" />
1276
+
1277
+ <!-- 顶部功能行区域 -->
1250
1278
  <div
1251
1279
  v-if="showHeaderRow"
1252
- class="fixed-header-actions"
1280
+ class="fixed-header-table-actions mb-20"
1253
1281
  :class="{button: !!$slots['header-button'], 'advanced-filtering': hasAdvancedFiltering, }"
1254
1282
  style="display: flex;"
1255
1283
  >
1256
- <!-- <div
1257
- :class="bulkActionsClass"
1258
- class="bulk"
1259
- >
1260
-
1261
- </div> -->
1262
- <div
1263
- v-if="!hasAdvancedFiltering && $slots['header-middle']"
1264
- class="middle"
1265
- style="margin-left: 10px;margin-right: -10px;"
1266
- >
1267
- <slot name="header-middle" />
1268
- </div>
1269
1284
 
1285
+ <!-- 搜索栏、右插槽、刷新按钮、高级筛选等区域 -->
1270
1286
  <div
1271
1287
  v-if="search || hasAdvancedFiltering || isTooManyItemsToAutoUpdate || $slots['header-right']"
1272
1288
  class="search row"
1273
1289
  data-testid="search-box-filter-row"
1274
- style="max-height: 32px;display: contents;"
1290
+ style="max-height: 32px;"
1275
1291
  >
1292
+
1293
+ <slot name="search-main-button" />
1294
+
1295
+ <!-- 已应用的高级筛选 -->
1276
1296
  <ul
1277
1297
  v-if="hasAdvancedFiltering"
1278
1298
  class="advanced-filters-applied"
@@ -1289,14 +1309,9 @@ export default {
1289
1309
  <div class="bg" />
1290
1310
  </li>
1291
1311
  </ul>
1312
+
1292
1313
  <slot name="header-right" />
1293
- <AsyncButton
1294
- v-if="isTooManyItemsToAutoUpdate"
1295
- mode="manual-refresh"
1296
- :size="manualRefreshButtonSize"
1297
- :current-phase="refreshButtonPhase"
1298
- @click="debouncedRefreshTableData"
1299
- />
1314
+
1300
1315
  <div
1301
1316
  v-if="hasAdvancedFiltering"
1302
1317
  ref="advanced-filter-group"
@@ -1352,6 +1367,8 @@ export default {
1352
1367
  </div>
1353
1368
  </div>
1354
1369
  </div>
1370
+
1371
+ <!-- 搜索描述文本(隐藏) -->
1355
1372
  <p
1356
1373
  v-else-if="search"
1357
1374
  id="describe-filter-sortable-table"
@@ -1359,326 +1376,358 @@ export default {
1359
1376
  >
1360
1377
  {{ t('sortableTable.filteringDescription') }}
1361
1378
  </p>
1362
- <slot name="header-button" />
1363
- <input
1364
- v-if="search"
1365
- ref="searchQuery"
1366
- v-model="eventualSearchQuery"
1367
- type="search"
1368
- class="input-sm search-box"
1369
- :aria-label="t('sortableTable.searchLabel')"
1370
- aria-describedby="describe-filter-sortable-table"
1371
- :placeholder="t('sortableTable.search')+searchPlaceholder"
1372
- >
1379
+ <slot name="header-button" />
1380
+
1381
+ <div style="display: flex;">
1382
+ <!-- 搜索输入框 -->
1383
+ <input
1384
+ v-if="search"
1385
+ ref="searchQuery"
1386
+ v-model="eventualSearchQuery"
1387
+ type="search"
1388
+ class="input-sm search-box"
1389
+ :aria-label="t('sortableTable.searchLabel')"
1390
+ aria-describedby="describe-filter-sortable-table"
1391
+ :placeholder="t('sortableTable.search')+searchPlaceholder"
1392
+ >
1393
+ <!-- <button v-if="search" @click="getTableList(eventualSearchQuery)" calss="search-btn role-secondary">
1394
+ 检索
1395
+ </button> -->
1396
+
1397
+ <!-- 手动刷新按钮 -->
1398
+ <AsyncButton
1399
+ v-if="isTooManyItemsToAutoUpdate"
1400
+ mode="manual-refresh"
1401
+ :size="manualRefreshButtonSize"
1402
+ :current-phase="refreshButtonPhase"
1403
+ @click="debouncedRefreshTableData"
1404
+ />
1405
+
1406
+ </div>
1373
1407
 
1374
1408
  </div>
1409
+
1410
+ <div style="display: flex;">
1411
+ <slot name="header-button-left" />
1412
+
1413
+ <!-- 中间区域插槽 -->
1414
+ <div
1415
+ v-if="!hasAdvancedFiltering && $slots['header-middle']"
1416
+ class="middle"
1417
+ style="margin-left: 10px;"
1418
+ >
1419
+ <slot name="header-middle" />
1420
+ </div>
1421
+ </div>
1375
1422
  </div>
1376
1423
  </div>
1424
+
1377
1425
  <div v-if="$slots['banner']">
1378
1426
  <slot name="banner"></slot>
1379
1427
  </div>
1380
- <div class="sort-table-div">
1381
- <table
1382
- ref="table"
1383
- class="sortable-table"
1384
- :class="classObject"
1385
- width="100%"
1386
- role="table"
1387
- >
1388
- <THead
1389
- v-if="showHeaders"
1390
- :label-for="labelFor"
1391
- :columns="columns"
1392
- :group="group"
1393
- :group-options="advGroupOptions"
1394
- :has-advanced-filtering="hasAdvancedFiltering"
1395
- :adv-filter-hide-labels-as-cols="advFilterHideLabelsAsCols"
1396
- :table-actions="tableActions"
1397
- :table-cols-options="columnOptions"
1398
- :row-actions="rowActions"
1399
- :sub-expand-column="subExpandColumn"
1400
- :row-actions-width="rowActionsWidth"
1401
- :how-much-selected="howMuchSelected"
1402
- :sort-by="sortBy"
1403
- :default-sort-by="_defaultSortBy"
1404
- :descending="descending"
1405
- :no-rows="noRows"
1406
- :loading="isLoading && !loadingDelay"
1407
- :no-results="noResults"
1408
- @on-toggle-all="onToggleAll"
1409
- @on-sort-change="changeSort"
1410
- @col-visibility-change="changeColVisibility"
1411
- @group-value-change="(val) => $emit('group-value-change', val)"
1412
- @update-cols-options="updateColsOptions"
1413
- />
1414
1428
 
1415
- <!-- Don't display anything if we're loading and the delay has yet to pass -->
1416
- <div v-if="isLoading && !loadingDelay" />
1429
+ <div class="sort-table-div">
1430
+ <table
1431
+ ref="table"
1432
+ class="sortable-table"
1433
+ :class="classObject"
1434
+ width="100%"
1435
+ role="table"
1436
+ >
1437
+ <THead
1438
+ v-if="showHeaders"
1439
+ :label-for="labelFor"
1440
+ :columns="columns"
1441
+ :group="group"
1442
+ :group-options="advGroupOptions"
1443
+ :has-advanced-filtering="hasAdvancedFiltering"
1444
+ :adv-filter-hide-labels-as-cols="advFilterHideLabelsAsCols"
1445
+ :table-actions="tableActions"
1446
+ :table-cols-options="columnOptions"
1447
+ :row-actions="rowActions"
1448
+ :sub-expand-column="subExpandColumn"
1449
+ :row-actions-width="rowActionsWidth"
1450
+ :how-much-selected="howMuchSelected"
1451
+ :sort-by="sortBy"
1452
+ :default-sort-by="_defaultSortBy"
1453
+ :descending="descending"
1454
+ :no-rows="noRows"
1455
+ :loading="isLoading && !loadingDelay"
1456
+ :no-results="noResults"
1457
+ @on-toggle-all="onToggleAll"
1458
+ @on-sort-change="changeSort"
1459
+ @col-visibility-change="changeColVisibility"
1460
+ @group-value-change="(val) => $emit('group-value-change', val)"
1461
+ @update-cols-options="updateColsOptions"
1462
+ />
1417
1463
 
1418
- <tbody v-else-if="isLoading && !altLoading">
1419
- <slot name="loading">
1420
- <tr>
1421
- <td :colspan="fullColspan">
1422
- <div class="data-loading">
1423
- <i class="icon-spin icon icon-spinner" />
1464
+ <!-- Don't display anything if we're loading and the delay has yet to pass -->
1465
+ <div v-if="isLoading && !loadingDelay" />
1466
+
1467
+ <tbody v-else-if="isLoading && !altLoading">
1468
+ <slot name="loading">
1469
+ <tr>
1470
+ <td :colspan="fullColspan">
1471
+ <div class="data-loading">
1472
+ <i class="icon-spin icon icon-spinner" />
1473
+ <t
1474
+ k="generic.loading"
1475
+ :raw="true"
1476
+ />
1477
+ </div>
1478
+ </td>
1479
+ </tr>
1480
+ </slot>
1481
+ </tbody>
1482
+ <tbody v-else-if="noRows">
1483
+ <slot name="no-rows">
1484
+ <tr class="no-rows">
1485
+ <td :colspan="fullColspan">
1424
1486
  <t
1425
- k="generic.loading"
1426
- :raw="true"
1487
+ v-if="showNoRows"
1488
+ :k="noRowsKey"
1427
1489
  />
1428
- </div>
1429
- </td>
1430
- </tr>
1431
- </slot>
1432
- </tbody>
1433
- <tbody v-else-if="noRows">
1434
- <slot name="no-rows">
1435
- <tr class="no-rows">
1436
- <td :colspan="fullColspan">
1437
- <t
1438
- v-if="showNoRows"
1439
- :k="noRowsKey"
1440
- />
1441
- </td>
1442
- </tr>
1443
- </slot>
1444
- </tbody>
1445
- <tbody v-else-if="noResults">
1446
- <slot name="no-results">
1447
- <tr class="no-results">
1448
- <td
1449
- :colspan="fullColspan"
1450
- class="text-center"
1451
- >
1452
- <t :k="noDataKey" />
1453
- </td>
1454
- </tr>
1455
- </slot>
1456
- </tbody>
1457
- <tbody
1458
- v-for="(groupedRows) in displayRows"
1459
- v-else
1460
- :key="groupedRows.key"
1461
- tabindex="-1"
1462
- :class="{ group: groupBy }"
1463
- >
1464
- <slot
1465
- v-if="groupBy"
1466
- name="group-row"
1467
- :group="groupedRows"
1468
- :fullColspan="fullColspan"
1469
- >
1470
- <tr class="group-row">
1471
- <td :colspan="fullColspan">
1472
- <slot
1473
- name="group-by"
1474
- :group="groupedRows.grp"
1490
+ </td>
1491
+ </tr>
1492
+ </slot>
1493
+ </tbody>
1494
+ <tbody v-else-if="noResults">
1495
+ <slot name="no-results">
1496
+ <tr class="no-results">
1497
+ <td
1498
+ :colspan="fullColspan"
1499
+ class="text-center"
1475
1500
  >
1476
- <div
1477
- v-trim-whitespace
1478
- class="group-tab"
1479
- >
1480
- {{ groupedRows.ref }}
1481
- </div>
1482
- </slot>
1483
- </td>
1484
- </tr>
1485
- </slot>
1486
- <template
1487
- v-for="(row, i) in groupedRows.rows"
1488
- :key="i"
1501
+ <t :k="noDataKey" />
1502
+ </td>
1503
+ </tr>
1504
+ </slot>
1505
+ </tbody>
1506
+ <tbody
1507
+ v-for="(groupedRows) in displayRows"
1508
+ v-else
1509
+ :key="groupedRows.key"
1510
+ tabindex="-1"
1511
+ :class="{ group: groupBy }"
1489
1512
  >
1490
1513
  <slot
1491
- name="main-row"
1492
- :row="row.row"
1514
+ v-if="groupBy"
1515
+ name="group-row"
1516
+ :group="groupedRows"
1517
+ :fullColspan="fullColspan"
1518
+ >
1519
+ <tr class="group-row">
1520
+ <td :colspan="fullColspan">
1521
+ <slot
1522
+ name="group-by"
1523
+ :group="groupedRows.grp"
1524
+ >
1525
+ <div
1526
+ v-trim-whitespace
1527
+ class="group-tab"
1528
+ >
1529
+ {{ groupedRows.ref }}
1530
+ </div>
1531
+ </slot>
1532
+ </td>
1533
+ </tr>
1534
+ </slot>
1535
+ <template
1536
+ v-for="(row, i) in groupedRows.rows"
1537
+ :key="i"
1493
1538
  >
1494
1539
  <slot
1495
- :name="'main-row:' + (row.row.mainRowKey || i)"
1496
- :full-colspan="fullColspan"
1540
+ name="main-row"
1541
+ :row="row.row"
1497
1542
  >
1498
- <!-- The data-cant-run-bulk-action-of-interest attribute is being used instead of :class because
1499
- because our selection.js invokes toggleClass and :class clobbers what was added by toggleClass if
1500
- the value of :class changes. -->
1501
- <tr
1502
- class="main-row"
1503
- :data-testid="componentTestid + '-' + i + '-row'"
1504
- :class="{ 'has-sub-row': row.showSubRow}"
1505
- :data-node-id="row.key"
1506
- :data-cant-run-bulk-action-of-interest="actionOfInterest && !row.canRunBulkActionOfInterest"
1543
+ <slot
1544
+ :name="'main-row:' + (row.row.mainRowKey || i)"
1545
+ :full-colspan="fullColspan"
1507
1546
  >
1508
- <td
1509
- v-if="tableActions"
1510
- class="row-check"
1511
- align="middle"
1512
- >
1513
- {{ row.mainRowKey }}
1514
- <Checkbox
1515
- class="selection-checkbox"
1516
- :data-node-id="row.key"
1517
- :data-testid="componentTestid + '-' + i + '-checkbox'"
1518
- :value="selectedRows.includes(row.row)"
1519
- :alternate-label="t('sortableTable.genericRowCheckbox', { item: row && row.row ? row.row.id : '' })"
1520
- />
1521
- </td>
1522
- <td
1523
- v-if="subExpandColumn"
1524
- class="row-expand"
1525
- align="middle"
1547
+ <!-- The data-cant-run-bulk-action-of-interest attribute is being used instead of :class because
1548
+ because our selection.js invokes toggleClass and :class clobbers what was added by toggleClass if
1549
+ the value of :class changes. -->
1550
+ <tr
1551
+ class="main-row"
1552
+ :data-testid="componentTestid + '-' + i + '-row'"
1553
+ :class="{ 'has-sub-row': row.showSubRow}"
1554
+ :data-node-id="row.key"
1555
+ :data-cant-run-bulk-action-of-interest="actionOfInterest && !row.canRunBulkActionOfInterest"
1526
1556
  >
1527
- <i
1528
- data-title="Toggle Expand"
1529
- :class="{
1530
- icon: true,
1531
- 'icon-chevron-right': !expanded[row.row[keyField]],
1532
- 'icon-chevron-down': !!expanded[row.row[keyField]]
1533
- }"
1534
- @click.stop="toggleExpand(row.row)"
1535
- />
1536
- </td>
1537
- <template
1538
- v-for="(col, j) in row.columns"
1539
- :key="j"
1540
- >
1541
- <slot
1542
- :name="'col:' + col.col.name"
1543
- :row="row.row"
1544
- :col="col.col"
1545
- :dt="dt"
1546
- :expanded="expanded"
1547
- :rowKey="row.key"
1557
+ <td
1558
+ v-if="tableActions"
1559
+ class="row-check"
1560
+ align="middle"
1561
+ >
1562
+ {{ row.mainRowKey }}
1563
+ <Checkbox
1564
+ class="selection-checkbox"
1565
+ :data-node-id="row.key"
1566
+ :data-testid="componentTestid + '-' + i + '-checkbox'"
1567
+ :value="selectedRows.includes(row.row)"
1568
+ :alternate-label="t('sortableTable.genericRowCheckbox', { item: row && row.row ? row.row.id : '' })"
1569
+ />
1570
+ </td>
1571
+ <td
1572
+ v-if="subExpandColumn"
1573
+ class="row-expand"
1574
+ align="middle"
1548
1575
  >
1549
- <td
1550
- v-show="!hasAdvancedFiltering || (hasAdvancedFiltering && col.col.isColVisible)"
1551
- :key="col.col.name"
1552
- :data-title="col.col.label"
1553
- :data-testid="`sortable-cell-${ i }-${ j }`"
1554
- :align="col.col.align || 'left'"
1555
- :class="{['col-'+col.dasherize]: !!col.col.formatter, [col.col.breakpoint]: !!col.col.breakpoint, ['skip-select']: col.col.skipSelect}"
1556
- :width="col.col.width"
1576
+ <i
1577
+ data-title="Toggle Expand"
1578
+ :class="{
1579
+ icon: true,
1580
+ 'icon-chevron-right': !expanded[row.row[keyField]],
1581
+ 'icon-chevron-down': !!expanded[row.row[keyField]]
1582
+ }"
1583
+ @click.stop="toggleExpand(row.row)"
1584
+ />
1585
+ </td>
1586
+ <template
1587
+ v-for="(col, j) in row.columns"
1588
+ :key="j"
1589
+ >
1590
+ <slot
1591
+ :name="'col:' + col.col.name"
1592
+ :row="row.row"
1593
+ :col="col.col"
1594
+ :dt="dt"
1595
+ :expanded="expanded"
1596
+ :rowKey="row.key"
1557
1597
  >
1558
- <slot
1559
- :name="'cell:' + col.col.name"
1560
- :row="row.row"
1561
- :col="col.col"
1562
- :value="col.value"
1598
+ <td
1599
+ v-show="!hasAdvancedFiltering || (hasAdvancedFiltering && col.col.isColVisible)"
1600
+ :key="col.col.name"
1601
+ :data-title="col.col.label"
1602
+ :data-testid="`sortable-cell-${ i }-${ j }`"
1603
+ :align="'left'"
1604
+ :class="{['col-'+col.dasherize]: !!col.col.formatter, [col.col.breakpoint]: !!col.col.breakpoint, ['skip-select']: col.col.skipSelect}"
1605
+ :width="col.col.width"
1563
1606
  >
1564
- <component
1565
- :is="col.component"
1566
- v-if="col.component && col.needRef"
1567
- ref="column"
1568
- :value="col.value"
1607
+ <slot
1608
+ :name="'cell:' + col.col.name"
1569
1609
  :row="row.row"
1570
1610
  :col="col.col"
1571
- :get-custom-detail-link="getCustomDetailLink"
1572
- v-bind="col.col.formatterOpts"
1573
- :row-key="row.key"
1574
- />
1575
- <component
1576
- :is="col.component"
1577
- v-else-if="col.component"
1578
1611
  :value="col.value"
1579
- :row="row.row"
1580
- :col="col.col"
1581
- v-bind="col.col.formatterOpts"
1582
- :row-key="row.key"
1612
+ >
1613
+ <component
1614
+ :is="col.component"
1615
+ v-if="col.component && col.needRef"
1616
+ ref="column"
1617
+ :value="col.value"
1618
+ :row="row.row"
1619
+ :col="col.col"
1620
+ :get-custom-detail-link="getCustomDetailLink"
1621
+ v-bind="col.col.formatterOpts"
1622
+ :row-key="row.key"
1623
+ />
1624
+ <component
1625
+ :is="col.component"
1626
+ v-else-if="col.component"
1627
+ :value="col.value"
1628
+ :row="row.row"
1629
+ :col="col.col"
1630
+ v-bind="col.col.formatterOpts"
1631
+ :row-key="row.key"
1632
+ />
1633
+ <component
1634
+ :is="col.col.formatter"
1635
+ v-else-if="col.col.formatter"
1636
+ :value="col.value"
1637
+ :row="row.row"
1638
+ :col="col.col"
1639
+ v-bind="col.col.formatterOpts"
1640
+ :row-key="row.key"
1641
+ />
1642
+ <template v-else-if="col.value !== ''">
1643
+ {{ col.formatted }}
1644
+ </template>
1645
+ <template v-else-if="col.col.dashIfEmpty">
1646
+ <span class="text-muted">&mdash;</span>
1647
+ </template>
1648
+ </slot>
1649
+ </td>
1650
+ </slot>
1651
+ </template>
1652
+ <td
1653
+ v-if="rowActions"
1654
+ :align="'left'"
1655
+ style="height:60px"
1656
+ >
1657
+ <div style="display: flex;align-items: center;">
1658
+ <slot
1659
+ name="row-actions"
1660
+ :row="row.row"
1661
+ :index="i"
1662
+ >
1663
+ </slot>
1664
+ <template v-if="featureDropdownMenu">
1665
+ <ActionMenu
1666
+ :resource="row.row"
1667
+ :data-testid="componentTestid + '-' + i + '-action-button'"
1668
+ :button-aria-label="t('sortableTable.tableActionsLabel', { resource: row?.row?.id || '' })"
1583
1669
  />
1584
- <component
1585
- :is="col.col.formatter"
1586
- v-else-if="col.col.formatter"
1587
- :value="col.value"
1588
- :row="row.row"
1589
- :col="col.col"
1590
- v-bind="col.col.formatterOpts"
1591
- :row-key="row.key"
1670
+ </template>
1671
+ <template v-else>
1672
+ <ButtonMultiAction
1673
+ :id="`actionButton+${i}+${(row.row && row.row.name) ? row.row.name : ''}`"
1674
+ :ref="`actionButton${i}`"
1675
+ aria-haspopup="true"
1676
+ aria-expanded="false"
1677
+ :aria-label="t('sortableTable.tableActionsLabel', { resource: row?.row?.id || '' })"
1678
+ :data-testid="componentTestid + '-' + i + '-action-button'"
1679
+ :borderless="true"
1680
+ @click="handleActionButtonClick(i, $event)"
1681
+ @keyup.enter="handleActionButtonClick(i, $event)"
1682
+ @keyup.space="handleActionButtonClick(i, $event)"
1592
1683
  />
1593
- <template v-else-if="col.value !== ''">
1594
- {{ col.formatted }}
1595
- </template>
1596
- <template v-else-if="col.col.dashIfEmpty">
1597
- <span class="text-muted">&mdash;</span>
1598
- </template>
1599
- </slot>
1600
- </td>
1601
- </slot>
1602
- </template>
1684
+ </template>
1685
+ </div>
1686
+ </td>
1687
+ </tr>
1688
+ </slot>
1689
+ </slot>
1690
+ <!-- <slot
1691
+ v-if="row.showSubRow"
1692
+ name="sub-row"
1693
+ :full-colspan="fullColspan"
1694
+ :row="row.row"
1695
+ :sub-matches="subMatches"
1696
+ :keyField="keyField"
1697
+ :componentTestid="componentTestid"
1698
+ :i="i"
1699
+ :onRowMouseEnter="onRowMouseEnter"
1700
+ :onRowMouseLeave="onRowMouseLeave"
1701
+ >
1702
+ <tr
1703
+ v-if="row.row.stateDescription"
1704
+ :key="row.row[keyField] + '-description'"
1705
+ :data-testid="componentTestid + '-' + i + '-row-description'"
1706
+ class="state-description sub-row"
1707
+ @mouseenter="onRowMouseEnter"
1708
+ @mouseleave="onRowMouseLeave"
1709
+ >
1710
+ <td
1711
+ v-if="tableActions"
1712
+ class="row-check"
1713
+ align="middle"
1714
+ />
1603
1715
  <td
1604
- v-if="rowActions"
1605
- :align="'left'"
1606
- style="height:60px"
1716
+ :colspan="fullColspan - (tableActions ? 1: 0)"
1717
+ :class="{ 'text-error' : row.row.stateObj.error }"
1607
1718
  >
1608
- <div style="display: flex;align-items: center;">
1609
- <slot
1610
- name="row-actions"
1611
- :row="row.row"
1612
- :index="i"
1613
- >
1614
- </slot>
1615
- <template v-if="featureDropdownMenu">
1616
- <ActionMenu
1617
- :resource="row.row"
1618
- :data-testid="componentTestid + '-' + i + '-action-button'"
1619
- :button-aria-label="t('sortableTable.tableActionsLabel', { resource: row?.row?.id || '' })"
1620
- />
1621
- </template>
1622
- <template v-else>
1623
- <ButtonMultiAction
1624
- :id="`actionButton+${i}+${(row.row && row.row.name) ? row.row.name : ''}`"
1625
- :ref="`actionButton${i}`"
1626
- aria-haspopup="true"
1627
- aria-expanded="false"
1628
- :aria-label="t('sortableTable.tableActionsLabel', { resource: row?.row?.id || '' })"
1629
- :data-testid="componentTestid + '-' + i + '-action-button'"
1630
- :borderless="true"
1631
- @click="handleActionButtonClick(i, $event)"
1632
- @keyup.enter="handleActionButtonClick(i, $event)"
1633
- @keyup.space="handleActionButtonClick(i, $event)"
1634
- />
1635
- </template>
1636
- </div>
1719
+ {{ row.row.stateDescription }}
1637
1720
  </td>
1638
1721
  </tr>
1639
- </slot>
1640
- </slot>
1641
- <!-- <slot
1642
- v-if="row.showSubRow"
1643
- name="sub-row"
1644
- :full-colspan="fullColspan"
1645
- :row="row.row"
1646
- :sub-matches="subMatches"
1647
- :keyField="keyField"
1648
- :componentTestid="componentTestid"
1649
- :i="i"
1650
- :onRowMouseEnter="onRowMouseEnter"
1651
- :onRowMouseLeave="onRowMouseLeave"
1652
- >
1653
- <tr
1654
- v-if="row.row.stateDescription"
1655
- :key="row.row[keyField] + '-description'"
1656
- :data-testid="componentTestid + '-' + i + '-row-description'"
1657
- class="state-description sub-row"
1658
- @mouseenter="onRowMouseEnter"
1659
- @mouseleave="onRowMouseLeave"
1660
- >
1661
- <td
1662
- v-if="tableActions"
1663
- class="row-check"
1664
- align="middle"
1665
- />
1666
- <td
1667
- :colspan="fullColspan - (tableActions ? 1: 0)"
1668
- :class="{ 'text-error' : row.row.stateObj.error }"
1669
- >
1670
- {{ row.row.stateDescription }}
1671
- </td>
1672
- </tr>
1673
- </slot> -->
1674
- </template>
1675
- </tbody>
1676
- </table>
1677
- </div>
1722
+ </slot> -->
1723
+ </template>
1724
+ </tbody>
1725
+ </table>
1726
+ </div>
1678
1727
  <div
1679
1728
  v-if="!noRows && !noResults"
1680
1729
  :class="$route.path=== '/account'? 'chebox-padding':''"
1681
- style="display: flex;justify-content: flex-start;align-content: center;height: 62px;position: sticky;bottom: 0;background-color: var(--header-bg);padding: 15px 20px 0 30px;margin: 0 -20px 0 -20px;z-index:20"
1730
+ style="display: flex;justify-content: flex-start;align-content: center;height: 62px;position: sticky;bottom: 0;background-color: var(--header-bg);padding: 15px 20px 0 30px;margin: 0 -20px 0 -20px;z-index:13"
1682
1731
  >
1683
1732
  <div style="display: flex;justify-content: center;height: 32px;">
1684
1733
  <Checkbox
@@ -1699,7 +1748,7 @@ export default {
1699
1748
  <slot name="title" />
1700
1749
  <div
1701
1750
  v-if="showHeaderRow"
1702
- class="fixed-header-actions"
1751
+ class="fixed-footer-actions"
1703
1752
  :class="{button: !!$slots['header-button'], 'advanced-filtering': hasAdvancedFiltering,}"
1704
1753
  >
1705
1754
  <div
@@ -1725,10 +1774,11 @@ export default {
1725
1774
  @mouseover="setBulkActionOfInterest(act)"
1726
1775
  @mouseleave="setBulkActionOfInterest(null)"
1727
1776
  >
1728
- <i
1777
+ <!-- <i
1729
1778
  v-if="act.icon"
1730
1779
  :class="act.icon"
1731
- />
1780
+ style="line-height: 12px;height: 12px;font-size: 12px;"
1781
+ /> -->
1732
1782
  <span v-clean-html="act.label" />
1733
1783
  </button>
1734
1784
  <template v-if="featureDropdownMenu">
@@ -1804,7 +1854,7 @@ export default {
1804
1854
  class="paging"
1805
1855
  >
1806
1856
  <div style="height: 100%; align-content: center;">
1807
- 共 {{ filteredRows.length }} 条
1857
+ 共 {{ filteredRows ? filteredRows.length : 0 }} 条
1808
1858
  </div>
1809
1859
 
1810
1860
  <button
@@ -1903,7 +1953,7 @@ export default {
1903
1953
 
1904
1954
  <!-- 分页页码切换 -->
1905
1955
  <Select
1906
- :mode="inputPerPage"
1956
+ :mode="inputPerPage"
1907
1957
  :searchable="false"
1908
1958
  :clearable="false"
1909
1959
  :options="perPageOptions"
@@ -2149,7 +2199,7 @@ export default {
2149
2199
  border-collapse: collapse;
2150
2200
  min-width: 400px;
2151
2201
  border-radius: 5px 5px 0 0;
2152
- border-bottom: 1px solid var(--border);
2202
+ border-bottom: 1px solid var(--border) !important;
2153
2203
  /* outline: 1px solid var(--border); */
2154
2204
  background: var(--sortable-table-bg);
2155
2205
  border-radius: 4px;
@@ -2164,77 +2214,36 @@ export default {
2164
2214
  td {
2165
2215
  padding: 8px 5px;
2166
2216
  border: 0;
2167
- background: var(--sortable-table-row-bg);
2217
+ white-space: normal;
2218
+ word-break: break-all;
2219
+ overflow-wrap: break-word;
2168
2220
 
2169
2221
  &:first-child {
2170
2222
  padding-left: 10px;
2171
- position: sticky;
2172
- left: 0;
2173
- z-index: 2;
2174
- }
2175
- &:nth-child(2) {
2176
- padding-left: 10px;
2177
- position: sticky;
2178
- left: 29px;
2179
- z-index: 2;
2180
2223
  }
2181
2224
 
2182
2225
  &:last-child {
2183
2226
  padding-right: 10px;
2184
- position: sticky;
2185
- right: 0;
2186
- z-index: 2;
2187
- /* padding-left: 10px; */
2188
2227
  }
2189
2228
 
2190
2229
  &.row-check {
2191
2230
  padding-top: 12px;
2192
- right: 0;
2193
- position: sticky;
2194
2231
  }
2195
2232
  }
2196
- th {
2197
- padding: 13px 5px;
2198
- border: 0;
2199
- /* height: 50.84px; */
2200
- box-sizing: border-box;
2201
- background: var(--sortable-table-header-bg);
2202
-
2203
- &:first-child {
2204
- padding-left: 10px;
2205
- position: sticky;
2206
- left: 0;
2207
- z-index: 2;
2208
- }
2209
- &:nth-child(2) {
2210
- padding-left: 10px;
2211
- position: sticky;
2212
- left: 29px;
2213
- z-index: 2;
2214
- }
2215
-
2216
- &:last-child {
2217
- padding-left: 10px;
2218
- padding-right: 10px;
2219
- position: sticky;
2220
- right: 0;
2221
- z-index: 2;
2222
- }
2223
2233
 
2224
- }
2225
2234
  tbody {
2226
2235
  tr {
2227
- border-bottom: 1px solid var(--sortable-table-top-divider);
2236
+ border-bottom: 1px solid var(--sortable-table-top-divider) !important;
2228
2237
  background-color: var(--sortable-table-row-bg);
2229
2238
  height: 60px;
2230
2239
 
2231
2240
  &.main-row.has-sub-row {
2232
- /* border-bottom: 0; */
2241
+ border-bottom: 0;
2233
2242
  }
2234
2243
 
2235
2244
  // if a main-row is hovered also hover it's sibling sub row. note - the reverse is handled in selection.js
2236
2245
  &.main-row:not(.row-selected):hover + .sub-row {
2237
- /* background-color: var(--sortable-table-hover-bg); */
2246
+ background-color: var(--sortable-table-hover-bg);
2238
2247
  }
2239
2248
 
2240
2249
  &:last-of-type {
@@ -2287,10 +2296,10 @@ export default {
2287
2296
 
2288
2297
  tr.group-row {
2289
2298
  background-color: initial;
2290
- height: 40px;
2291
2299
 
2292
2300
  &:first-child {
2293
2301
  border-bottom: 2px solid var(--sortable-table-row-bg);
2302
+ height: 40px;
2294
2303
  }
2295
2304
 
2296
2305
  &:not(:first-child) {
@@ -2379,11 +2388,11 @@ export default {
2379
2388
  align-items: center;
2380
2389
  }
2381
2390
  }
2382
- .fixed-header-actions.button{
2391
+ .fixed-footer-actions.button{
2383
2392
  grid-template-columns: [bulk] auto [middle] min-content [search] minmax(min-content, 350px);
2384
2393
  }
2385
2394
 
2386
- .fixed-header-actions {
2395
+ .fixed-footer-actions {
2387
2396
  /* padding: 0 0 20px 0; */
2388
2397
  width: 100%;
2389
2398
  z-index: z-index('fixedTableHeader');
@@ -2499,6 +2508,114 @@ export default {
2499
2508
  }
2500
2509
  }
2501
2510
 
2511
+
2512
+ .fixed-header-table-actions {
2513
+ width: 100%;
2514
+ z-index: z-index('fixedTableHeader');
2515
+ background: transparent;
2516
+ display: flex;
2517
+ justify-content: space-between;
2518
+
2519
+
2520
+ .bulk {
2521
+ $gap: 10px;
2522
+
2523
+ & > BUTTON {
2524
+ display: none; // Handled dynamically
2525
+ }
2526
+
2527
+ & > BUTTON:not(:last-of-type) {
2528
+ margin-right: $gap;
2529
+ }
2530
+
2531
+ .action-availability {
2532
+ display: none; // Handled dynamically
2533
+ margin-left: $gap;
2534
+ vertical-align: middle;
2535
+ margin-top: 2px;
2536
+ }
2537
+
2538
+ .dropdown-button {
2539
+ $disabled-color: var(--disabled-text);
2540
+ $disabled-cursor: not-allowed;
2541
+ li.disabled {
2542
+ color: $disabled-color;
2543
+ cursor: $disabled-cursor;
2544
+
2545
+ &:hover {
2546
+ color: $disabled-color;
2547
+ background-color: unset;
2548
+ cursor: $disabled-cursor;
2549
+ }
2550
+ }
2551
+ }
2552
+
2553
+ .bulk-action {
2554
+ .icon {
2555
+ vertical-align: -10%;
2556
+ }
2557
+ }
2558
+ }
2559
+
2560
+ .middle {
2561
+ white-space: nowrap;
2562
+
2563
+ .icon.icon-backup.animate {
2564
+ animation-name: spin;
2565
+ animation-duration: 1000ms;
2566
+ animation-iteration-count: infinite;
2567
+ animation-timing-function: linear;
2568
+ }
2569
+
2570
+ @keyframes spin {
2571
+ from {
2572
+ transform:rotate(0deg);
2573
+ }
2574
+ to {
2575
+ transform:rotate(360deg);
2576
+ }
2577
+ }
2578
+ }
2579
+
2580
+ .search {
2581
+ text-align: right;
2582
+ justify-content: flex-end;
2583
+ }
2584
+
2585
+ .bulk-actions-dropdown {
2586
+ display: none; // Handled dynamically
2587
+
2588
+ .dropdown-button {
2589
+ background-color: var(--primary);
2590
+
2591
+ &:hover {
2592
+ background-color: var(--primary-hover-bg);
2593
+ color: var(--primary-hover-text);
2594
+ }
2595
+
2596
+ > *, .icon-chevron-down {
2597
+ color: var(--primary-text);
2598
+ }
2599
+
2600
+ .button-divider {
2601
+ border-color: var(--primary-text);
2602
+ }
2603
+
2604
+ &.disabled {
2605
+ border-color: var(--disabled-bg);
2606
+
2607
+ .icon-chevron-down {
2608
+ color: var(--disabled-text) !important;
2609
+ }
2610
+
2611
+ .button-divider {
2612
+ border-color: var(--disabled-text);
2613
+ }
2614
+ }
2615
+ }
2616
+ }
2617
+ }
2618
+
2502
2619
  .paging {
2503
2620
  //text-align: center;
2504
2621
  display: flex;
@@ -2511,6 +2628,7 @@ export default {
2511
2628
  SPAN {
2512
2629
  display: inline-block;
2513
2630
  //min-width: 200px;
2631
+ min-width: auto;
2514
2632
  }
2515
2633
 
2516
2634
  /* 针对Webkit浏览器(如Chrome, Safari) */
@@ -2547,6 +2665,7 @@ export default {
2547
2665
  margin-top: 0px !important;
2548
2666
  }
2549
2667
  .pageSelect {
2668
+ overflow: hidden;
2550
2669
  max-width: 100px;
2551
2670
  }
2552
2671
  .page-btn-normal {
@@ -2557,13 +2676,15 @@ export default {
2557
2676
 
2558
2677
  .pageSelect{
2559
2678
  &:deep() .vs__actions:after{
2560
- padding-top: 10px;
2679
+ // padding-top: 10px;
2680
+ display: flex;
2681
+ align-items: center;
2561
2682
  }
2562
2683
  }
2563
2684
  .sort-table-div{
2564
2685
  width:100%;
2565
2686
  white-space:nowrap;
2566
- overflow-x: auto;
2687
+ // overflow-x: auto;
2567
2688
  }
2568
2689
 
2569
2690
  /* 滚动阴影左边 */