dashboard-shell-shell 1.0.122 → 1.0.1000000081

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 (372) hide show
  1. package/.DS_Store +0 -0
  2. package/assets/brand/harvester/favicon.png +0 -0
  3. package/assets/brand/suse/favicon.png +0 -0
  4. package/assets/icons/iconfont.css +19 -3
  5. package/assets/icons/iconfont.js +1 -1
  6. package/assets/icons/iconfont.json +28 -0
  7. package/assets/icons/iconfont.ttf +0 -0
  8. package/assets/icons/iconfont.woff +0 -0
  9. package/assets/icons/iconfont.woff2 +0 -0
  10. package/assets/images/pl/half-logo.svg +2 -23
  11. package/assets/styles/base/_functions.scss +0 -0
  12. package/assets/styles/base/_mixins.scss +0 -0
  13. package/assets/styles/base/_variables.scss +1 -1
  14. package/assets/styles/global/_labeled-input.scss +0 -1
  15. package/assets/styles/global/_layout.scss +1 -1
  16. package/assets/styles/global/_select.scss +4 -2
  17. package/assets/styles/global/_table.scss +5 -0
  18. package/assets/styles/vendor/vue-select.scss +2 -1
  19. package/assets/translations/en-us.yaml +1 -1
  20. package/assets/translations/zh-hans.yaml +25 -15
  21. package/chart/monitoring/index.vue +3 -1
  22. package/chart/monitoring/prometheus/index.vue +13 -10
  23. package/cloud-credential/aws.vue +2 -0
  24. package/components/ActionDropdown.vue +1 -1
  25. package/components/ActionDropdownShell.vue +71 -0
  26. package/components/ActionMenu.vue +2 -2
  27. package/components/ActionMenuShell.vue +3 -0
  28. package/components/AppModal.vue +84 -8
  29. package/components/AssignTo.vue +25 -11
  30. package/components/AsyncButton.vue +24 -7
  31. package/components/BannerGraphic.vue +1 -0
  32. package/components/ButtonDropdown.vue +26 -4
  33. package/components/ButtonGroup.vue +4 -0
  34. package/components/ButtonMultiAction.vue +1 -0
  35. package/components/CodeMirror.vue +19 -6
  36. package/components/CommunityLinks.vue +3 -3
  37. package/components/ConsumptionGauge.vue +24 -5
  38. package/components/CopyToClipboardText.vue +2 -1
  39. package/components/CruResource.vue +13 -7
  40. package/components/CruResourceFooter.vue +2 -2
  41. package/components/DashboardOptions.vue +29 -17
  42. package/components/DetailText.vue +5 -0
  43. package/components/DisableAuthProviderModal.vue +1 -0
  44. package/components/DotState.vue +84 -0
  45. package/components/ExplorerMembers.vue +1 -1
  46. package/components/ExplorerProjectsNamespaces.vue +89 -16
  47. package/components/FixedBanner.vue +19 -12
  48. package/components/GlobalRoleBindings.vue +5 -1
  49. package/components/GrafanaDashboard.vue +4 -4
  50. package/components/GrowlManager.vue +4 -1
  51. package/components/HardwareResourceGauge.vue +39 -3
  52. package/components/InfoBox.vue +3 -3
  53. package/components/InputOrDisplay.vue +28 -2
  54. package/components/LabelValue.vue +20 -1
  55. package/components/LandingPagePreference.vue +5 -3
  56. package/components/LocaleSelector.vue +39 -93
  57. package/components/ModalManager.vue +55 -0
  58. package/components/ModalWithCard.vue +13 -3
  59. package/components/MoveModal.vue +1 -0
  60. package/components/PodSecurityAdmission.vue +1 -1
  61. package/components/PromptChangePassword.vue +1 -1
  62. package/components/PromptModal.vue +16 -3
  63. package/components/PromptRemove.vue +29 -9
  64. package/components/PromptRestore.vue +1 -0
  65. package/components/ResourceCancelModal.vue +1 -0
  66. package/components/ResourceDetail/Masthead.vue +52 -17
  67. package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
  68. package/components/ResourceDetail/index.vue +54 -16
  69. package/components/ResourceList/Masthead.vue +9 -4
  70. package/components/ResourceList/index.vue +4 -3
  71. package/components/ResourceTable.vue +1 -0
  72. package/components/SideNav.vue +20 -15
  73. package/components/SlideInPanelManager.vue +126 -0
  74. package/components/SortableTable/THead.vue +10 -4
  75. package/components/SortableTable/actions.js +1 -1
  76. package/components/SortableTable/index.vue +540 -553
  77. package/components/SortableTable/selection.js +2 -13
  78. package/components/StatusBadge.vue +77 -0
  79. package/components/Tabbed/Tab.vue +3 -3
  80. package/components/Tabbed/index.vue +47 -29
  81. package/components/Wizard.vue +2 -2
  82. package/components/YamlEditor.vue +1 -1
  83. package/components/__tests__/AsyncButton.test.ts +2 -2
  84. package/components/__tests__/FixedBanner.test.ts +3 -3
  85. package/components/__tests__/ModalManager.spec.ts +176 -0
  86. package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
  87. package/components/auth/Principal.vue +10 -3
  88. package/components/auth/RoleDetailEdit.vue +1 -1
  89. package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
  90. package/components/form/ArrayList.vue +123 -85
  91. package/components/form/ArrayListGrouped.vue +10 -2
  92. package/components/form/ArrayListSelect.vue +1 -1
  93. package/components/form/Command.vue +6 -15
  94. package/components/form/EnvVars.vue +16 -8
  95. package/components/form/Footer.vue +10 -7
  96. package/components/form/HealthCheck.vue +3 -3
  97. package/components/form/HookOption.vue +11 -16
  98. package/components/form/InputWithSelect.vue +6 -5
  99. package/components/form/KeyValue.vue +39 -10
  100. package/components/form/LabeledSelect.vue +73 -77
  101. package/components/form/Labels.vue +6 -3
  102. package/components/form/LifecycleHooks.vue +3 -3
  103. package/components/form/MatchExpressions.vue +42 -17
  104. package/components/form/NameNsDescription.vue +163 -116
  105. package/components/form/Networking.vue +20 -12
  106. package/components/form/NodeAffinity.vue +31 -23
  107. package/components/form/NodeScheduling.vue +13 -3
  108. package/components/form/Password.vue +11 -5
  109. package/components/form/PodAffinity.vue +47 -48
  110. package/components/form/Probe.vue +68 -66
  111. package/components/form/ResourceQuota/Namespace.vue +4 -4
  112. package/components/form/ResourceQuota/NamespaceRow.vue +5 -7
  113. package/components/form/ResourceQuota/Project.vue +9 -5
  114. package/components/form/ResourceQuota/ProjectRow.vue +4 -6
  115. package/components/form/ResourceSelector.vue +7 -9
  116. package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +6 -3
  117. package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +12 -1
  118. package/components/form/SSHKnownHosts/index.vue +16 -2
  119. package/components/form/Security.vue +54 -56
  120. package/components/form/Select.vue +44 -7
  121. package/components/form/ShellInput.vue +5 -1
  122. package/components/form/SimpleSecretSelector.vue +29 -9
  123. package/components/form/Tolerations.vue +5 -1
  124. package/components/form/UnitInput.vue +10 -5
  125. package/components/form/ValueFromResource.vue +134 -121
  126. package/components/form/WorkloadPorts.vue +18 -18
  127. package/components/form/__tests__/ArrayList.test.ts +5 -2
  128. package/components/form/__tests__/MatchExpressions.test.ts +12 -12
  129. package/components/form/__tests__/NameNsDescription.test.ts +115 -14
  130. package/components/form/__tests__/Probe.test.ts +12 -8
  131. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -0
  132. package/components/form/__tests__/Select.test.ts +37 -0
  133. package/components/form/__tests__/UnitInput.test.ts +4 -5
  134. package/components/formatter/BadgeStateFormatter.vue +8 -5
  135. package/components/formatter/InternalExternalIP.vue +2 -0
  136. package/components/formatter/LiveDate.vue +3 -3
  137. package/components/formatter/SecretData.vue +20 -7
  138. package/components/nav/Favorite.vue +5 -1
  139. package/components/nav/Group.vue +18 -4
  140. package/components/nav/Header.vue +39 -13
  141. package/components/nav/Jump.vue +7 -0
  142. package/components/nav/NamespaceFilter.vue +21 -11
  143. package/components/nav/Pinned.vue +1 -1
  144. package/components/nav/TopLevelMenu.vue +5 -17
  145. package/components/nav/Type.vue +30 -33
  146. package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
  147. package/components/rancherResourceDetail/Masthead.vue +769 -0
  148. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
  149. package/components/rancherResourceDetail/index.vue +591 -0
  150. package/components/rancherResourceList/Masthead-btn.vue +225 -0
  151. package/components/rancherResourceList/Masthead.vue +375 -0
  152. package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
  153. package/components/rancherResourceList/index.vue +307 -0
  154. package/components/rancherResourceList/resource-list.config.js +7 -0
  155. package/components/rancherResourceTable.vue +783 -0
  156. package/components/rancherSortableTable/THead.vue +561 -0
  157. package/components/rancherSortableTable/actions.js +153 -0
  158. package/components/rancherSortableTable/advanced-filtering.js +272 -0
  159. package/components/rancherSortableTable/debug.js +117 -0
  160. package/components/rancherSortableTable/filtering.js +290 -0
  161. package/components/rancherSortableTable/grouping.js +48 -0
  162. package/components/rancherSortableTable/index.vue +2712 -0
  163. package/components/rancherSortableTable/paging.js +155 -0
  164. package/components/rancherSortableTable/selection.js +629 -0
  165. package/components/rancherSortableTable/sortable-config.ts +4 -0
  166. package/components/rancherSortableTable/sorting.js +129 -0
  167. package/components/templates/blank.vue +4 -1
  168. package/components/templates/default.vue +8 -0
  169. package/components/templates/home.vue +10 -1
  170. package/components/templates/plain.vue +10 -1
  171. package/composables/focusTrap.ts +11 -3
  172. package/composables/useRuntimeFlag.ts +29 -0
  173. package/config/private-label.js +15 -10
  174. package/config/router/routes.js +21 -13
  175. package/config/store.js +4 -0
  176. package/config/table-headers.js +3 -2
  177. package/config/uiplugins.js +5 -1
  178. package/core/plugin-routes.ts +5 -115
  179. package/core/plugins.js +1 -1
  180. package/core/types.ts +23 -2
  181. package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +84 -23
  182. package/detail/autoscaling.horizontalpodautoscaler/index.vue +13 -3
  183. package/detail/provisioning.cattle.io.cluster.vue +72 -6
  184. package/dialog/AddCustomBadgeDialog.vue +1 -0
  185. package/dialog/DeactivateDriverDialog.vue +5 -4
  186. package/dialog/ForceMachineRemoveDialog.vue +6 -3
  187. package/dialog/GitRepoForceUpdateDialog.vue +1 -1
  188. package/dialog/ScalePoolDownDialog.vue +2 -2
  189. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +16 -3
  190. package/edit/auth/__tests__/oidc.test.ts +162 -88
  191. package/edit/auth/azuread.vue +2 -1
  192. package/edit/auth/github.vue +1 -1
  193. package/edit/auth/googleoauth.vue +5 -1
  194. package/edit/auth/ldap/__tests__/config.test.ts +0 -14
  195. package/edit/auth/ldap/config.vue +0 -24
  196. package/edit/auth/ldap/index.vue +1 -1
  197. package/edit/auth/oidc.vue +39 -6
  198. package/edit/auth/saml.vue +1 -1
  199. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +5 -2
  200. package/edit/cloudcredential.vue +24 -9
  201. package/edit/fleet.cattle.io.clustergroup.vue +5 -3
  202. package/edit/fleet.cattle.io.gitrepo.vue +2 -0
  203. package/edit/logging-flow/Match.vue +1 -1
  204. package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +40 -9
  205. package/edit/management.cattle.io.user.vue +28 -3
  206. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  207. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
  208. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  209. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  210. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  211. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  212. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  213. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  214. package/edit/monitoring.coreos.com.receiver/auth.vue +29 -29
  215. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  216. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  217. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  218. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  219. package/edit/namespace.vue +1 -2
  220. package/edit/networking.k8s.io.ingress/IngressClass.vue +7 -3
  221. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  222. package/edit/networking.k8s.io.ingress/__tests__/IngressClass.test.ts +58 -0
  223. package/edit/persistentvolume/__tests__/persistentvolume.test.ts +14 -2
  224. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
  225. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -9
  226. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -10
  227. package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -40
  228. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +5 -2
  229. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +6 -1
  230. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +33 -2
  231. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +3 -3
  232. package/edit/service.vue +0 -3
  233. package/edit/token.vue +32 -11
  234. package/edit/workload/Job.vue +6 -6
  235. package/edit/workload/__tests__/Job.test.ts +0 -1
  236. package/edit/workload/index.vue +1 -0
  237. package/edit/workload/mixins/workload.js +3 -3
  238. package/initialize/install-plugins.js +2 -1
  239. package/list/harvesterhci.io.management.cluster.vue +4 -1
  240. package/list/management.cattle.io.feature.vue +1 -0
  241. package/list/namespace.vue +3 -1
  242. package/list/provisioning.cattle.io.cluster.vue +20 -12
  243. package/list/workload.vue +7 -6
  244. package/machine-config/__tests__/vmwarevsphere.test.ts +48 -3
  245. package/machine-config/azure.vue +16 -4
  246. package/machine-config/vmwarevsphere.vue +16 -0
  247. package/mixins/resource-fetch.js +2 -1
  248. package/models/__tests__/logging.banzaicloud.io.flow.test.ts +88 -0
  249. package/models/__tests__/namespace.test.ts +25 -1
  250. package/models/cloudcredential.js +5 -0
  251. package/models/kontainerdriver.js +6 -3
  252. package/models/logging.banzaicloud.io.flow.js +2 -1
  253. package/models/management.cattle.io.node.js +3 -3
  254. package/models/management.cattle.io.setting.js +2 -1
  255. package/models/namespace.js +4 -5
  256. package/models/nodedriver.js +6 -3
  257. package/models/storage.k8s.io.storageclass.js +2 -2
  258. package/models/workload.js +4 -1
  259. package/package.json +1 -1
  260. package/pages/about.vue +16 -8
  261. package/pages/account/index.vue +80 -24
  262. package/pages/account/pri.vue +229 -0
  263. package/pages/auth/login.vue +195 -44
  264. package/pages/auth/logout.vue +4 -1
  265. package/pages/auth/setup.vue +144 -19
  266. package/pages/auth/verify.vue +13 -8
  267. package/pages/auth copy/login.vue +595 -0
  268. package/pages/auth copy/logout.vue +47 -0
  269. package/pages/auth copy/setup.vue +523 -0
  270. package/pages/auth copy/verify.vue +203 -0
  271. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  272. package/pages/c/_cluster/apps/charts/chart.vue +1 -1
  273. package/pages/c/_cluster/apps/charts/install.vue +26 -26
  274. package/pages/c/_cluster/auth/config/index.vue +10 -12
  275. package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
  276. package/pages/c/_cluster/explorer/index.vue +17 -15
  277. package/pages/c/_cluster/istio/index.vue +2 -2
  278. package/pages/c/_cluster/longhorn/index.vue +1 -1
  279. package/pages/c/_cluster/monitoring/index.vue +1 -1
  280. package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
  281. package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
  282. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  283. package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
  284. package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
  285. package/pages/c/_cluster/neuvector/index.vue +1 -1
  286. package/pages/c/_cluster/settings/brand.vue +3 -3
  287. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
  288. package/pages/diagnostic.vue +59 -11
  289. package/pages/fail-whale.vue +14 -8
  290. package/pages/home.vue +24 -18
  291. package/pages/prefs.vue +9 -7
  292. package/pages/support/index.vue +4 -1
  293. package/pkg/tsconfig.json +9 -9
  294. package/pkg/vue.config.js +1 -1
  295. package/plugins/dashboard-store/normalize.js +3 -1
  296. package/plugins/dashboard-store/resource-class.js +31 -29
  297. package/plugins/internal-api/index.ts +37 -0
  298. package/plugins/internal-api/shared/base-api.ts +13 -0
  299. package/plugins/internal-api/shell/shell.api.ts +108 -0
  300. package/promptRemove/management.cattle.io.fleetworkspace.vue +1 -1
  301. package/promptRemove/management.cattle.io.globalrole.vue +1 -1
  302. package/promptRemove/management.cattle.io.project.vue +2 -2
  303. package/promptRemove/management.cattle.io.roletemplate.vue +1 -1
  304. package/promptRemove/pod.vue +1 -1
  305. package/public/index.html +2 -1
  306. package/rancher-components/BadgeState/BadgeState.vue +5 -1
  307. package/rancher-components/Banner/Banner.vue +8 -2
  308. package/rancher-components/Card/Card.vue +3 -6
  309. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  310. package/rancher-components/Form/LabeledInput/LabeledInput.vue +5 -2
  311. package/rancher-components/Form/Radio/RadioButton.vue +3 -3
  312. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -5
  313. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
  314. package/rancher-components/RcDropdown/RcDropdownItem.vue +1 -2
  315. package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -3
  316. package/rancher-components/RcDropdown/types.ts +1 -0
  317. package/scripts/clean +0 -0
  318. package/scripts/extension/bundle +20 -0
  319. package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +2 -2
  320. package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
  321. package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
  322. package/scripts/extension/helm/scripts/package +0 -0
  323. package/scripts/extension/helm/scripts/patch +0 -0
  324. package/scripts/extension/helm/scripts/version +0 -0
  325. package/scripts/extension/helmpatch +44 -31
  326. package/scripts/extension/parse-tag-name +0 -0
  327. package/scripts/extension/publish +12 -12
  328. package/scripts/publish-shell.sh +18 -23
  329. package/scripts/serve-pkgs +0 -0
  330. package/scripts/sync-shell-deps +0 -0
  331. package/scripts/test-plugins-build.sh +4 -6
  332. package/scripts/typegen.sh +28 -46
  333. package/server/har-file.js +25 -3
  334. package/static/favicon.ico +0 -0
  335. package/static/favicon.png +0 -0
  336. package/static/loading-indicator.html +2 -2
  337. package/store/aws.js +9 -2
  338. package/store/features.js +2 -1
  339. package/store/i18n.js +3 -3
  340. package/store/modal.ts +71 -0
  341. package/store/slideInPanel.ts +47 -0
  342. package/store/type-map.js +2 -1
  343. package/types/cloud-shell/index.d.ts +11014 -0
  344. package/types/global-vue.d.ts +5 -0
  345. package/types/internal-api/shell/growl.d.ts +25 -0
  346. package/types/internal-api/shell/modal.d.ts +77 -0
  347. package/types/internal-api/shell/slideIn.d.ts +15 -0
  348. package/types/shell/index.d.ts +118 -128
  349. package/types/vue-shim.d.ts +4 -1
  350. package/utils/__tests__/object.test.ts +38 -4
  351. package/utils/__tests__/string.test.ts +2 -2
  352. package/utils/auth.js +1 -0
  353. package/utils/banners.js +0 -45
  354. package/utils/cluster.js +35 -0
  355. package/utils/color.js +9 -8
  356. package/utils/error.js +61 -3
  357. package/utils/errorTranslate.json +450 -30
  358. package/utils/object.js +46 -6
  359. package/utils/router.js +22 -1
  360. package/utils/select.js +26 -3
  361. package/utils/string.js +9 -8
  362. package/utils/title.ts +1 -1
  363. package/utils/validators/machine-pool.ts +20 -0
  364. package/vue.config.js +7 -2
  365. package/components/formatter/ExtensionCache.vue +0 -74
  366. package/components/formatter/Port.vue +0 -24
  367. package/components/formatter/SecretType.vue +0 -41
  368. package/types/resources/fleet.d.ts +0 -57
  369. package/types/resources/pod-security-admission.ts +0 -36
  370. package/types/resources/settings.d.ts +0 -93
  371. package/types/resources/userPreferences.d.ts +0 -13
  372. package/types/vue-shim.d +0 -20
@@ -0,0 +1,203 @@
1
+ <script>
2
+ import {
3
+ GITHUB_CODE, GITHUB_NONCE, BACK_TO, IS_SLO, _FLAGGED
4
+ } from '@shell/config/query-params';
5
+ import { get } from '@shell/utils/object';
6
+ import { base64Decode } from '@shell/utils/crypto';
7
+ import loadPlugins from '@shell/plugins/plugin';
8
+ import { LOGIN_ERRORS } from '@shell/store/auth';
9
+
10
+ const samlProviders = ['ping', 'adfs', 'keycloak', 'okta', 'shibboleth'];
11
+
12
+ const oauthProviders = ['github', 'googleoauth', 'azuread'];
13
+
14
+ function reply(err, code) {
15
+ try {
16
+ window.opener.window.onAuthTest(err, code);
17
+ setTimeout(() => {
18
+ window.close();
19
+ }, 250);
20
+ } catch (e) {
21
+ window.close();
22
+ }
23
+ }
24
+
25
+ function isSaml($route) {
26
+ const { query } = $route;
27
+ const configQuery = get(query, 'config');
28
+
29
+ return samlProviders.includes(configQuery);
30
+ }
31
+
32
+ export default {
33
+ async fetch() {
34
+ const code = this.$route.query[GITHUB_CODE];
35
+ const stateStr = this.$route.query[GITHUB_NONCE];
36
+ const {
37
+ error, error_description: errorDescription, errorCode, errorMsg
38
+ } = this.$route.query;
39
+
40
+ if (error || errorDescription || errorCode || errorMsg) {
41
+ let out = errorDescription || error || errorCode;
42
+
43
+ if (this.isSlo) {
44
+ console.error('Failed to log out of auth provider', error, errorDescription, errorCode, errorMsg); // eslint-disable-line no-console
45
+
46
+ let out = this.$store.getters['i18n/withFallback'](`logout.specificError.unknown`);
47
+
48
+ if (errorCode) {
49
+ out = this.$store.getters['i18n/withFallback'](`logout.specificError.${ errorCode }`, null, out);
50
+ }
51
+
52
+ this.$router.replace(`/auth/login?${ IS_SLO }&err=${ escape(out) }`);
53
+
54
+ return;
55
+ } else {
56
+ if (errorMsg) {
57
+ out = this.$store.getters['i18n/withFallback'](`login.serverError.${ errorMsg }`, null, errorMsg);
58
+ }
59
+
60
+ this.$router.replace(`/auth/login?err=${ escape(out) }`);
61
+
62
+ return;
63
+ }
64
+ }
65
+
66
+ // check for existence of IS_SLO query param to differentiate between a login and a logout
67
+ if (this.isSlo) {
68
+ this.$store.dispatch('auth/uiLogout');
69
+
70
+ return;
71
+ }
72
+
73
+ let parsed;
74
+
75
+ try {
76
+ parsed = JSON.parse(base64Decode((stateStr)));
77
+ } catch (err) {
78
+ if (isSaml(this.$route)) {
79
+ // This is an ok failure. SAML has no state string so a failure is fine (see similar check in mounted).
80
+ // This whole file could be re-written with that in mind, but this change keeps things simple and fixes a breaking addition
81
+ return;
82
+ }
83
+ const out = this.$store.getters['i18n/t'](`login.error`);
84
+
85
+ console.error('Failed to parse nonce', stateStr, err); // eslint-disable-line no-console
86
+
87
+ this.$router.replace(`/auth/login?err=${ escape(out) }`);
88
+
89
+ return;
90
+ }
91
+
92
+ const { test, provider, nonce } = parsed;
93
+
94
+ if (test) {
95
+ return;
96
+ }
97
+
98
+ try {
99
+ const res = await this.$store.dispatch('auth/verifyOAuth', {
100
+ code,
101
+ nonce,
102
+ provider
103
+ });
104
+
105
+ if ( res._status === 200) {
106
+ const backTo = this.$route.query[BACK_TO] || '/';
107
+
108
+ // Load plugins
109
+ await loadPlugins({
110
+ app: this.$store.app,
111
+ store: this.$store,
112
+ $plugin: this.$store.$plugin
113
+ });
114
+
115
+ this.$router.replace(backTo);
116
+ } else {
117
+ this.$router.replace(`/auth/login?err=${ escape(res) }`);
118
+ }
119
+ } catch (err) {
120
+ let errCode = err;
121
+
122
+ // If the provider is OAUTH, then the client error is not that the credentials are wrong, but that the user is not authorized
123
+ if (oauthProviders.includes(provider) && err === LOGIN_ERRORS.CLIENT_UNAUTHORIZED) {
124
+ errCode = LOGIN_ERRORS.USER_UNAUTHORIZED;
125
+ }
126
+
127
+ this.$router.replace(`/auth/login?err=${ escape(errCode) }`);
128
+ }
129
+ },
130
+
131
+ data() {
132
+ return {
133
+ testing: null,
134
+ isSlo: null,
135
+ };
136
+ },
137
+
138
+ created() {
139
+ const stateJSON = this.$route.query[GITHUB_NONCE] || '';
140
+
141
+ let parsed = {};
142
+
143
+ try {
144
+ parsed = JSON.parse(base64Decode(stateJSON));
145
+ } catch {
146
+ }
147
+
148
+ const { test } = parsed;
149
+
150
+ this.testing = test;
151
+ this.isSlo = this.$route.query[IS_SLO] === _FLAGGED;
152
+ },
153
+
154
+ mounted() {
155
+ if ( this.testing ) {
156
+ try {
157
+ const {
158
+ error: respError, error_description: respErrorDescription, [GITHUB_CODE]: code, errorMsg
159
+ } = this.$route.query;
160
+
161
+ let error = respErrorDescription || respError || (!code ? 'No code supplied by auth provider' : null);
162
+
163
+ if (errorMsg) {
164
+ error = this.$store.getters['i18n/withFallback'](`login.serverError.${ errorMsg }`, null, errorMsg);
165
+ }
166
+
167
+ reply(error, code );
168
+ } catch (e) {
169
+ window.close();
170
+ }
171
+ } else {
172
+ if ( window.opener ) {
173
+ if (isSaml(this.$route)) {
174
+ if ( window.opener.window.onAuthTest ) {
175
+ reply(null, null);
176
+ } else {
177
+ reply({ err: 'failure' });
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ };
184
+ </script>
185
+
186
+ <template>
187
+ <main
188
+ class="main-layout"
189
+ :aria-label="t('layouts.verify')"
190
+ >
191
+ <h1 class="text-center mt-50">
192
+ <span v-if="testing">
193
+ Testing Configuration&hellip;
194
+ </span>
195
+ <span v-else-if="isSlo">
196
+ Logging Out&hellip;
197
+ </span>
198
+ <span v-else>
199
+ Logging In&hellip;
200
+ </span>
201
+ </h1>
202
+ </main>
203
+ </template>
@@ -29,8 +29,8 @@ export default {
29
29
  computed: {
30
30
  headers() {
31
31
  return [
32
- STATE,
33
32
  NAME,
33
+ STATE,
34
34
  AGE
35
35
  ];
36
36
  },
@@ -63,13 +63,13 @@ export default {
63
63
  :rows="rows"
64
64
  :groupable="false"
65
65
  group-tooltip="resourceTable.groupBy.project"
66
- key-field="_key"
66
+ key-field="_key"
67
67
  >
68
68
  <template #cell:project="{row}">
69
69
  <span v-if="row.project">{{ row.project.nameDisplay }}</span>
70
- <span
71
- v-else
72
- class="text-muted"
70
+ <span
71
+ v-else
72
+ class="text-muted"
73
73
  >&ndash;</span>
74
74
  </template>
75
75
  </ResourceTable>
@@ -69,7 +69,7 @@ export default {
69
69
  return {
70
70
  id: m.name,
71
71
  text: m.name,
72
- url: `mailto:${ m.email }`
72
+ url: m.email ? `mailto:${ m.email }` : m.url
73
73
  };
74
74
  });
75
75
  },
@@ -32,7 +32,9 @@ import {
32
32
  import { CATALOG as CATALOG_ANNOTATIONS, PROJECT } from '@shell/config/labels-annotations';
33
33
 
34
34
  import { exceptionToErrorsArray } from '@shell/utils/error';
35
- import { clone, diff, get, set } from '@shell/utils/object';
35
+ import {
36
+ clone, diff, get, mergeWithReplace, set
37
+ } from '@shell/utils/object';
36
38
  import { ignoreVariables } from './install.helpers';
37
39
  import { findBy, insertAt } from '@shell/utils/array';
38
40
  import { saferDump } from '@shell/utils/create-yaml';
@@ -45,6 +47,22 @@ const VALUES_STATE = {
45
47
  DIFF: 'DIFF'
46
48
  };
47
49
 
50
+ /**
51
+ * Helm CLI options that are not persisted on the back end,
52
+ * but are used for the final install/upgrade operation.
53
+ */
54
+ const defaultCmdOpts = {
55
+ cleanupOnFail: false,
56
+ crds: true,
57
+ hooks: true,
58
+ force: false,
59
+ resetValues: false,
60
+ openApi: true,
61
+ wait: true,
62
+ timeout: 600,
63
+ historyMax: 5,
64
+ };
65
+
48
66
  function isPlainLayout(query) {
49
67
  return Object.keys(query).includes(HIDE_SIDE_NAV);
50
68
  }
@@ -312,15 +330,11 @@ export default {
312
330
  */
313
331
  this.removeGlobalValuesFrom(userValues);
314
332
 
315
- /*
316
- The merge() method is used to merge two or more objects
317
- starting with the left-most to the right-most to create a
318
- parent mapping object. When two keys are the same, the
319
- generated object will have value for the rightmost key.
320
- In this case, any values in userValues override any
321
- matching values in versionInfo.
322
- */
323
- this.chartValues = merge(merge({}, this.versionInfo?.values || {}), userValues);
333
+ this.chartValues = mergeWithReplace(
334
+ merge({}, this.versionInfo?.values || {}),
335
+ userValues,
336
+ { replaceObjectProps: true }
337
+ );
324
338
 
325
339
  if (this.showCustomRegistry) {
326
340
  /**
@@ -359,20 +373,6 @@ export default {
359
373
  },
360
374
 
361
375
  data() {
362
- /* Helm CLI options that are not persisted on the back end,
363
- but are used for the final install/upgrade operation. */
364
- const defaultCmdOpts = {
365
- cleanupOnFail: false,
366
- crds: true,
367
- hooks: true,
368
- force: false,
369
- resetValues: false,
370
- openApi: true,
371
- wait: true,
372
- timeout: 600,
373
- historyMax: 5,
374
- };
375
-
376
376
  return {
377
377
  defaultRegistrySetting: '',
378
378
  customRegistrySetting: '',
@@ -1386,7 +1386,7 @@ export default {
1386
1386
  >
1387
1387
  <template v-slot:option="opt">
1388
1388
  <template v-if="opt.kind === 'divider'">
1389
- <hr>
1389
+ <hr role="none">
1390
1390
  </template>
1391
1391
  <template v-else-if="opt.kind === 'label'">
1392
1392
  <b style="position: relative; left: -2.5px;">{{ opt.label }}</b>
@@ -1858,7 +1858,7 @@ export default {
1858
1858
  }
1859
1859
 
1860
1860
  .namespace-create-banner {
1861
- margin-bottom: 70px;
1861
+ margin-bottom: calc($footer-height + 10px);
1862
1862
  }
1863
1863
  }
1864
1864
  &__values {
@@ -7,6 +7,8 @@ import { authProvidersInfo } from '@shell/utils/auth';
7
7
  import { Banner } from '@components/Banner';
8
8
  import Loading from '@shell/components/Loading';
9
9
 
10
+ const resource = MANAGEMENT.AUTH_CONFIG;
11
+
10
12
  export default {
11
13
  components: {
12
14
  SelectIconGrid, Banner, Loading
@@ -24,19 +26,7 @@ export default {
24
26
  },
25
27
 
26
28
  data() {
27
- const resource = MANAGEMENT.AUTH_CONFIG;
28
- const getters = this.$store.getters;
29
- const inStore = getters['currentStore'](resource);
30
- const hasListComponent = getters['type-map/hasCustomList'](resource);
31
- const hasEditComponent = getters['type-map/hasCustomEdit'](resource);
32
- const schema = getters[`${ inStore }/schemaFor`](resource);
33
-
34
29
  return {
35
- resource,
36
- schema,
37
- hasListComponent,
38
- hasEditComponent,
39
-
40
30
  // Provided by fetch later
41
31
  enabled: false,
42
32
  nonLocal: null,
@@ -60,6 +50,14 @@ export default {
60
50
  }
61
51
  };
62
52
  },
53
+
54
+ inStore() {
55
+ return this.$store.getters['currentStore'](resource);
56
+ },
57
+
58
+ schema() {
59
+ return this.$store.getters[`${ this.inStore }/schemaFor`](resource);
60
+ }
63
61
  },
64
62
 
65
63
  methods: {
@@ -7,32 +7,48 @@ import { STEVE_EVENT_OBJECT, STEVE_NAME_COL } from '@shell/config/pagination-tab
7
7
  import { headerFromSchemaColString } from '@shell/store/type-map.utils';
8
8
  import { NAME as EXPLORER } from '@shell/config/product/explorer';
9
9
 
10
+ const reason = {
11
+ ...REASON,
12
+ ...{ canBeVariable: true },
13
+ width: 130,
14
+ };
15
+
16
+ const eventHeaders = [
17
+ reason,
18
+ OBJECT,
19
+ MESSAGE,
20
+ NAME, {
21
+ name: 'date',
22
+ label: 'Date',
23
+ labelKey: 'clusterIndexPage.sections.events.date.label',
24
+ value: 'timestamp',
25
+ sort: 'timestamp:desc',
26
+ formatter: 'Date',
27
+ width: 220,
28
+ defaultSort: true,
29
+ },
30
+ ];
31
+
10
32
  export default {
11
33
  components: { PaginatedResourceTable },
12
34
 
13
35
  data() {
14
- const reason = {
15
- ...REASON,
16
- ...{ canBeVariable: true },
17
- width: 130,
36
+ return {
37
+ schema: null,
38
+ events: [],
39
+ eventHeaders,
40
+ paginationHeaders: null,
41
+ allEventsLink: {
42
+ name: 'c-cluster-product-resource',
43
+ params: {
44
+ product: EXPLORER,
45
+ resource: EVENT,
46
+ }
47
+ }
18
48
  };
49
+ },
19
50
 
20
- const eventHeaders = [
21
- reason,
22
- OBJECT,
23
- MESSAGE,
24
- NAME, {
25
- name: 'date',
26
- label: 'Date',
27
- labelKey: 'clusterIndexPage.sections.events.date.label',
28
- value: 'timestamp',
29
- sort: 'timestamp:desc',
30
- formatter: 'Date',
31
- width: 220,
32
- defaultSort: true,
33
- },
34
- ];
35
-
51
+ beforeMount() {
36
52
  const schema = this.$store.getters['cluster/schemaFor'](EVENT);
37
53
 
38
54
  const paginationHeaders = schema ? [
@@ -51,19 +67,8 @@ export default {
51
67
  headerFromSchemaColString('Count', schema, this.$store.getters, true),
52
68
  ] : [];
53
69
 
54
- return {
55
- schema,
56
- events: [],
57
- eventHeaders,
58
- paginationHeaders,
59
- allEventsLink: {
60
- name: 'c-cluster-product-resource',
61
- params: {
62
- product: EXPLORER,
63
- resource: EVENT,
64
- }
65
- }
66
- };
70
+ this.schema = schema;
71
+ this.paginationHeaders = paginationHeaders;
67
72
  },
68
73
 
69
74
  mounted() {
@@ -63,6 +63,19 @@ const CLUSTER_COMPONENTS = [
63
63
  'controller-manager',
64
64
  ];
65
65
 
66
+ const nodeHeaders = [
67
+ STATE,
68
+ NAME,
69
+ ROLES,
70
+ ];
71
+
72
+ const clusterServiceIcons = {
73
+ [STATES_ENUM.IN_PROGRESS]: 'icon-spinner icon-spin',
74
+ [STATES_ENUM.HEALTHY]: 'icon-checkmark',
75
+ [STATES_ENUM.WARNING]: 'icon-warning',
76
+ [STATES_ENUM.UNHEALTHY]: 'icon-warning',
77
+ };
78
+
66
79
  export default {
67
80
  name: 'ClusterExplorerIndexPage',
68
81
 
@@ -118,20 +131,6 @@ export default {
118
131
  },
119
132
 
120
133
  data() {
121
- const clusterCounts = this.$store.getters[`cluster/all`](COUNT);
122
- const nodeHeaders = [
123
- STATE,
124
- NAME,
125
- ROLES,
126
- ];
127
-
128
- const clusterServiceIcons = {
129
- [STATES_ENUM.IN_PROGRESS]: 'icon-spinner icon-spin',
130
- [STATES_ENUM.HEALTHY]: 'icon-checkmark',
131
- [STATES_ENUM.WARNING]: 'icon-warning',
132
- [STATES_ENUM.UNHEALTHY]: 'icon-warning',
133
- };
134
-
135
134
  return {
136
135
  nodeHeaders,
137
136
  constraints: [],
@@ -152,7 +151,6 @@ export default {
152
151
  ETCD_METRICS_DETAIL_URL,
153
152
  ETCD_METRICS_SUMMARY_URL,
154
153
  STATES_ENUM,
155
- clusterCounts,
156
154
  selectedTab: 'cluster-events',
157
155
  extensionCards: getApplicableExtensionEnhancements(this, ExtensionPoint.CARD, CardLocation.CLUSTER_DASHBOARD_CARD, this.$route),
158
156
  canViewEvents: !!this.$store.getters['cluster/schemaFor'](EVENT),
@@ -188,6 +186,10 @@ export default {
188
186
  ...mapGetters(['currentCluster']),
189
187
  ...monitoringStatus(),
190
188
 
189
+ clusterCounts() {
190
+ return this.$store.getters[`cluster/all`](COUNT);
191
+ },
192
+
191
193
  nodes() {
192
194
  return this.$store.getters['cluster/all'](NODE);
193
195
  },
@@ -95,7 +95,7 @@ export default {
95
95
  <t k="istio.links.kiali.label" />
96
96
  <i class="icon icon-external-link pull-right" />
97
97
  </a>
98
- <hr>
98
+ <hr role="none">
99
99
  <div class="description">
100
100
  <span v-clean-html="t('istio.links.kiali.description', {link: monitoringUrl}, true)" />
101
101
  </div>
@@ -131,7 +131,7 @@ export default {
131
131
  <t k="istio.links.jaeger.label" />
132
132
  <i class="icon icon-external-link pull-right" />
133
133
  </a>
134
- <hr>
134
+ <hr role="none">
135
135
  <div class="description">
136
136
  <span v-clean-html="t('istio.links.jaeger.description', true)" />
137
137
  </div>
@@ -84,7 +84,7 @@ export default {
84
84
  <div class="link-content">
85
85
  <t :k="fel.label" />
86
86
  <i class="icon icon-external-link pull-right" />
87
- <hr>
87
+ <hr role="none">
88
88
  <div class="description"><t :k="fel.description" /></div>
89
89
  </div>
90
90
  </a>
@@ -172,7 +172,7 @@ export default {
172
172
  <i class="icon icon-external-link" />
173
173
  </div>
174
174
  </div>
175
- <hr>
175
+ <hr role="none">
176
176
  <div class="description">
177
177
  <span>
178
178
  <t :k="fel.description" />
@@ -7,9 +7,11 @@ export default {
7
7
  components: { ResourceDetail },
8
8
 
9
9
  data() {
10
- const { query:{ resource } } = this.$route;
10
+ return { resource: null };
11
+ },
11
12
 
12
- return { resource };
13
+ created() {
14
+ this.resource = this.$route.query.resource;
13
15
  }
14
16
  };
15
17
  </script>
@@ -15,9 +15,11 @@ export default {
15
15
  components: { ResourceDetail },
16
16
 
17
17
  data() {
18
- const { query:{ resource } } = this.$route;
18
+ return { resource: null };
19
+ },
19
20
 
20
- return { resource };
21
+ created() {
22
+ this.resource = this.$route.query.resource;
21
23
  }
22
24
  };
23
25
  </script>
@@ -52,14 +52,14 @@ export default {
52
52
  <div v-else>
53
53
  <div class="row header mb-40">
54
54
  <h1> {{ t('monitoring.monitors') }}</h1>
55
- <div>
55
+ <!-- <div>
56
56
  <button
57
57
  class="btn btn-lg role-primary float right"
58
58
  @click="$router.push(createRoute)"
59
59
  >
60
60
  {{ t('resourceList.head.createFromYaml') }}
61
61
  </button>
62
- </div>
62
+ </div> -->
63
63
  </div>
64
64
  <Tabbed
65
65
  ref="tabs"
@@ -15,9 +15,11 @@ export default {
15
15
  components: { ResourceDetail },
16
16
 
17
17
  data() {
18
- const { query:{ resource } } = this.$route;
18
+ return { resource: null };
19
+ },
19
20
 
20
- return { resource };
21
+ created() {
22
+ this.resource = this.$route.query.resource;
21
23
  }
22
24
  };
23
25
  </script>
@@ -7,10 +7,13 @@ export default {
7
7
  components: { ResourceDetail },
8
8
 
9
9
  data() {
10
- const { query:{ resource } } = this.$route;
10
+ return { resource: null };
11
+ },
11
12
 
12
- return { resource };
13
+ created() {
14
+ this.resource = this.$route.query.resource;
13
15
  }
16
+
14
17
  };
15
18
  </script>
16
19
 
@@ -65,7 +65,7 @@ export default {
65
65
  <div class="link-content">
66
66
  <t :k="fel.label" />
67
67
  <i class="icon icon-external-link pull-right" />
68
- <hr>
68
+ <hr role="none">
69
69
  <div class="description"><t :k="fel.description" /></div>
70
70
  </div>
71
71
  </a>
@@ -255,7 +255,7 @@ export default {
255
255
  </h1>
256
256
  <TypeDescription resource="branding" />
257
257
  <div>
258
- <div class="row mb-20">
258
+ <div class="row">
259
259
  <div class="col span-6">
260
260
  <LabeledInput
261
261
  v-model:value="uiPLSetting.value"
@@ -544,7 +544,7 @@ export default {
544
544
  />
545
545
  </div>
546
546
 
547
- <h3 class="mt-40 mb-5 pb-0">
547
+ <!-- <h3 class="mt-40 mb-5 pb-0">
548
548
  {{ t('branding.linkColor.label') }}
549
549
  </h3>
550
550
  <label class="text-label">
@@ -571,7 +571,7 @@ export default {
571
571
  {{ t('branding.linkColor.example') }}
572
572
  </a>
573
573
  </span>
574
- </div>
574
+ </div> -->
575
575
  </div>
576
576
  <template
577
577
  v-for="(err, i) in errors"