@rancher/shell 0.3.13 → 0.3.15

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 (396) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +89 -2
  3. package/chart/gatekeeper.vue +2 -2
  4. package/chart/monitoring/alerting/index.vue +3 -3
  5. package/chart/monitoring/index.vue +2 -2
  6. package/chart/monitoring/prometheus/index.vue +1 -1
  7. package/chart/rancher-backup/index.vue +2 -2
  8. package/cloud-credential/harvester.vue +2 -2
  9. package/components/AssignTo.vue +1 -1
  10. package/components/AwsComplianceBanner.vue +1 -1
  11. package/components/BackLink.vue +7 -0
  12. package/components/BrandImage.vue +3 -3
  13. package/components/ClusterProviderIcon.vue +1 -1
  14. package/components/CommunityLinks.vue +2 -2
  15. package/components/ConsumptionGauge.vue +17 -2
  16. package/components/CruResource.vue +2 -1
  17. package/components/DashboardMetrics.vue +8 -0
  18. package/components/DetailTop.vue +1 -1
  19. package/components/ExplorerMembers.vue +8 -8
  20. package/components/ExplorerProjectsNamespaces.vue +9 -9
  21. package/components/FixedBanner.vue +1 -1
  22. package/components/GlobalRoleBindings.vue +11 -11
  23. package/components/GrafanaDashboard.vue +7 -1
  24. package/components/GrowlManager.vue +1 -1
  25. package/components/HarvesterServiceAddOnConfig.vue +117 -2
  26. package/components/IconOrSvg.vue +10 -3
  27. package/components/LandingPagePreference.vue +2 -2
  28. package/components/MoveModal.vue +1 -1
  29. package/components/PodSecurityAdmission.vue +3 -3
  30. package/components/ProgressBarMulti.vue +2 -2
  31. package/components/PromptRemove.vue +52 -28
  32. package/components/PromptRestore.vue +3 -3
  33. package/components/Questions/index.vue +5 -5
  34. package/components/RelatedWorkloadsTable.vue +1 -1
  35. package/components/ResourceList/Masthead.vue +1 -1
  36. package/components/ResourceTable.vue +3 -3
  37. package/components/ResourceYaml.vue +1 -1
  38. package/components/RoleBindings.vue +2 -2
  39. package/components/SingleClusterInfo.vue +1 -1
  40. package/components/SortableTable/actions.js +3 -3
  41. package/components/SortableTable/advanced-filtering.js +7 -7
  42. package/components/SortableTable/filtering.js +1 -1
  43. package/components/SortableTable/index.vue +9 -9
  44. package/components/SortableTable/selection.js +5 -5
  45. package/components/SortableTable/sorting.js +5 -5
  46. package/components/Tabbed/index.vue +7 -7
  47. package/components/TableSparkLine.vue +1 -1
  48. package/components/Wizard.vue +11 -23
  49. package/components/__tests__/Collapse.spec.ts +1 -1
  50. package/components/__tests__/CruResource.test.ts +74 -0
  51. package/components/__tests__/SimpleBox.spec.ts +1 -1
  52. package/components/auth/RoleDetailEdit.vue +7 -3
  53. package/components/auth/SelectPrincipal.vue +3 -3
  54. package/components/fleet/FleetResources.vue +1 -1
  55. package/components/fleet/FleetStatus.vue +4 -4
  56. package/components/fleet/FleetSummary.vue +1 -1
  57. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
  58. package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
  59. package/components/form/ArrayList.vue +11 -3
  60. package/components/form/ArrayListSelect.vue +2 -2
  61. package/components/form/FileSelector.vue +6 -0
  62. package/components/form/GitPicker.vue +528 -0
  63. package/components/form/KeyValue.vue +82 -41
  64. package/components/form/LabeledSelect.vue +2 -2
  65. package/components/form/MatchExpressions.vue +2 -2
  66. package/components/form/Members/ClusterMembershipEditor.vue +1 -2
  67. package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
  68. package/components/form/Members/MembershipEditor.vue +4 -4
  69. package/components/form/Members/ProjectMembershipEditor.vue +1 -2
  70. package/components/form/NameNsDescription.vue +13 -6
  71. package/components/form/Networking.vue +2 -2
  72. package/components/form/NodeScheduling.vue +1 -1
  73. package/components/form/PodAffinity.vue +1 -1
  74. package/components/form/ProjectMemberEditor.vue +4 -4
  75. package/components/form/ResourceQuota/Namespace.vue +2 -2
  76. package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
  77. package/components/form/ResourceQuota/Project.vue +1 -1
  78. package/components/form/ResourceQuota/shared.js +2 -2
  79. package/components/form/ResourceSelector.vue +1 -1
  80. package/components/form/ResourceTabs/index.vue +1 -1
  81. package/components/form/RuleSelector.vue +1 -1
  82. package/components/form/SecretSelector.vue +4 -4
  83. package/components/form/Select.vue +2 -2
  84. package/components/form/SelectOrCreateAuthSecret.vue +3 -3
  85. package/components/form/ServiceNameSelect.vue +1 -1
  86. package/components/form/ServicePorts.vue +1 -1
  87. package/components/form/ShellInput.vue +1 -1
  88. package/components/form/SimpleSecretSelector.vue +4 -4
  89. package/components/form/Taints.vue +1 -1
  90. package/components/form/ValueFromResource.vue +3 -3
  91. package/components/form/WorkloadPorts.vue +8 -7
  92. package/components/form/__tests__/Error.test.ts +1 -1
  93. package/components/form/__tests__/KeyValue.test.ts +21 -0
  94. package/components/formatter/ClusterLink.vue +1 -1
  95. package/components/formatter/ClusterProvider.vue +13 -2
  96. package/components/formatter/Endpoints.vue +1 -1
  97. package/components/formatter/FleetSummaryGraph.vue +2 -2
  98. package/components/formatter/IngressTarget.vue +2 -2
  99. package/components/formatter/PodImages.vue +1 -1
  100. package/components/formatter/PrincipalGroupBindings.vue +1 -1
  101. package/components/formatter/ReceiverIcons.vue +3 -3
  102. package/components/formatter/ServiceType.vue +1 -1
  103. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  104. package/components/formatter/WorkloadHealthScale.vue +1 -1
  105. package/components/formatter/__tests__/LiveDate.test.ts +1 -1
  106. package/components/graph/Bar.vue +1 -1
  107. package/components/graph/LinePlot.vue +3 -3
  108. package/components/nav/Group.vue +2 -2
  109. package/components/nav/Header.vue +5 -5
  110. package/components/nav/NamespaceFilter.vue +14 -14
  111. package/components/nav/TopLevelMenu.vue +76 -11
  112. package/components/nav/WindowManager/ContainerLogs.vue +2 -2
  113. package/components/nav/WindowManager/ContainerShell.vue +1 -1
  114. package/components/nav/WorkspaceSwitcher.vue +1 -1
  115. package/config/home-links.js +4 -4
  116. package/config/labels-annotations.js +8 -8
  117. package/config/pod-security-admission.ts +1 -1
  118. package/config/product/auth.js +4 -4
  119. package/config/product/explorer.js +14 -0
  120. package/config/router.js +5 -0
  121. package/config/store.js +2 -0
  122. package/config/table-headers.js +13 -13
  123. package/config/uiplugins.js +8 -1
  124. package/core/plugin-routes.ts +3 -2
  125. package/core/plugin.ts +3 -3
  126. package/core/plugins.js +7 -7
  127. package/creators/app/files/.gitignore +0 -3
  128. package/creators/pkg/files/index.ts +1 -1
  129. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  130. package/detail/fleet.cattle.io.bundle.vue +1 -1
  131. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  132. package/detail/management.cattle.io.user.vue +12 -12
  133. package/detail/namespace.vue +4 -4
  134. package/detail/networking.k8s.io.ingress.vue +3 -3
  135. package/detail/node.vue +2 -2
  136. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  137. package/detail/service.vue +1 -1
  138. package/detail/workload/index.vue +3 -3
  139. package/dialog/AddProjectMemberDialog.vue +2 -2
  140. package/dialog/DrainNode.vue +1 -1
  141. package/dialog/GenericPrompt.vue +9 -5
  142. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  143. package/dialog/ScaleMachineDownDialog.vue +2 -2
  144. package/edit/auth/azuread.vue +3 -3
  145. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  146. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  147. package/edit/cloudcredential.vue +4 -4
  148. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  149. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  150. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  151. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  152. package/edit/logging-flow/index.vue +4 -4
  153. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  154. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  155. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  156. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  157. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  158. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  159. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  160. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  161. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  162. package/edit/management.cattle.io.project.vue +3 -3
  163. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  164. package/edit/management.cattle.io.setting.vue +1 -1
  165. package/edit/management.cattle.io.user.vue +2 -2
  166. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  167. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  168. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  169. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  170. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  171. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  172. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  173. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  174. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  175. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  176. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  177. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  178. package/edit/monitoring.coreos.com.route.vue +2 -2
  179. package/edit/namespace.vue +21 -13
  180. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  181. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  182. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  183. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  184. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  185. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  186. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  187. package/edit/persistentvolume/index.vue +4 -4
  188. package/edit/persistentvolumeclaim.vue +3 -3
  189. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  190. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  191. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  192. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  193. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  194. package/edit/resources.cattle.io.backup.vue +2 -2
  195. package/edit/resources.cattle.io.restore.vue +3 -3
  196. package/edit/secret/generic.vue +1 -1
  197. package/edit/secret/index.vue +3 -3
  198. package/edit/service.vue +3 -21
  199. package/edit/serviceaccount.vue +2 -2
  200. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  201. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  202. package/edit/token.vue +5 -5
  203. package/edit/workload/index.vue +1 -1
  204. package/edit/workload/mixins/workload.js +8 -8
  205. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  206. package/edit/workload/storage/Mount.vue +2 -2
  207. package/edit/workload/storage/csi/index.vue +1 -1
  208. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  209. package/edit/workload/storage/index.vue +6 -6
  210. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  211. package/initialize/client.js +8 -8
  212. package/initialize/index.js +1 -4
  213. package/layouts/default.vue +38 -11
  214. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  215. package/list/cis.cattle.io.clusterscan.vue +1 -1
  216. package/list/fleet.cattle.io.cluster.vue +2 -2
  217. package/list/group.principal.vue +1 -1
  218. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  219. package/list/management.cattle.io.cluster.vue +1 -1
  220. package/list/management.cattle.io.feature.vue +1 -1
  221. package/list/management.cattle.io.user.vue +2 -2
  222. package/list/node.vue +5 -5
  223. package/list/provisioning.cattle.io.cluster.vue +4 -5
  224. package/machine-config/amazonec2.vue +2 -2
  225. package/machine-config/digitalocean.vue +4 -4
  226. package/machine-config/linode.vue +4 -4
  227. package/machine-config/vmwarevsphere.vue +12 -12
  228. package/middleware/authenticated.js +7 -6
  229. package/mixins/brand.js +1 -1
  230. package/mixins/chart.js +6 -6
  231. package/mixins/fetch.client.js +2 -2
  232. package/mixins/form-validation.js +7 -7
  233. package/mixins/resource-fetch-namespaced.js +1 -1
  234. package/mixins/resource-fetch.js +2 -2
  235. package/models/apps.statefulset.js +2 -2
  236. package/models/batch.cronjob.js +1 -1
  237. package/models/catalog.cattle.io.app.js +4 -4
  238. package/models/cis.cattle.io.clusterscan.js +1 -1
  239. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  240. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  241. package/models/cloudcredential.js +1 -1
  242. package/models/cluster/node.js +5 -5
  243. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  244. package/models/fleet.cattle.io.gitrepo.js +3 -3
  245. package/models/group.principal.js +4 -4
  246. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  247. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  248. package/models/logging.banzaicloud.io.flow.js +5 -5
  249. package/models/logging.banzaicloud.io.output.js +2 -2
  250. package/models/management.cattle.io.cluster.js +10 -14
  251. package/models/management.cattle.io.globalrole.js +4 -4
  252. package/models/management.cattle.io.node.js +2 -2
  253. package/models/management.cattle.io.nodepool.js +3 -3
  254. package/models/management.cattle.io.nodetemplate.js +4 -4
  255. package/models/management.cattle.io.project.js +2 -2
  256. package/models/management.cattle.io.roletemplate.js +1 -1
  257. package/models/management.cattle.io.setting.js +1 -1
  258. package/models/management.cattle.io.user.js +5 -5
  259. package/models/monitoring.coreos.com.receiver.js +9 -9
  260. package/models/namespace.js +1 -1
  261. package/models/networking.k8s.io.ingress.js +5 -5
  262. package/models/persistentvolume.js +3 -3
  263. package/models/pod.js +3 -3
  264. package/models/provisioning.cattle.io.cluster.js +39 -27
  265. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  266. package/models/rbac.authorization.k8s.io.role.js +3 -3
  267. package/models/secret.js +1 -1
  268. package/models/service.js +2 -2
  269. package/models/storage.k8s.io.storageclass.js +2 -2
  270. package/models/token.js +1 -1
  271. package/models/workload.js +6 -6
  272. package/models/workload.service.js +5 -21
  273. package/package.json +2 -1
  274. package/pages/about.vue +9 -9
  275. package/pages/account/index.vue +2 -2
  276. package/pages/auth/login.vue +15 -12
  277. package/pages/auth/verify.vue +6 -0
  278. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  279. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  280. package/pages/c/_cluster/auth/roles/index.vue +9 -9
  281. package/pages/c/_cluster/explorer/index.vue +41 -16
  282. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  283. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  284. package/pages/c/_cluster/fleet/index.vue +11 -11
  285. package/pages/c/_cluster/monitoring/index.vue +1 -1
  286. package/pages/c/_cluster/settings/links.vue +3 -3
  287. package/pages/c/_cluster/settings/performance.vue +1 -1
  288. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  289. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  290. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  291. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  292. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  293. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  294. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  295. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  296. package/pages/diagnostic.vue +6 -6
  297. package/pages/home.vue +3 -3
  298. package/pages/prefs.vue +2 -2
  299. package/pages/rio/mesh.vue +3 -3
  300. package/pages/support/index.vue +10 -1
  301. package/pkg/auto-import.js +1 -1
  302. package/pkg/tsconfig.json +1 -0
  303. package/pkg/vue.config.js +1 -1
  304. package/plugins/axios.js +1 -1
  305. package/plugins/clean-html-directive.js +1 -1
  306. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  307. package/plugins/dashboard-store/actions.js +4 -4
  308. package/plugins/dashboard-store/getters.js +1 -1
  309. package/plugins/dashboard-store/index.js +1 -1
  310. package/plugins/dashboard-store/mutations.js +2 -2
  311. package/plugins/dashboard-store/resource-class.js +8 -8
  312. package/plugins/i18n.js +1 -1
  313. package/plugins/plugin.js +5 -1
  314. package/plugins/steve/actions.js +3 -3
  315. package/plugins/steve/getters.js +3 -3
  316. package/plugins/steve/hybrid-class.js +1 -1
  317. package/plugins/steve/mutations.js +1 -1
  318. package/plugins/steve/performanceTesting.js +1 -1
  319. package/plugins/steve/resourceWatcher.js +1 -1
  320. package/plugins/steve/subscribe.js +6 -6
  321. package/plugins/steve/worker/web-worker.basic.js +1 -1
  322. package/promptRemove/management.cattle.io.project.vue +3 -3
  323. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  324. package/promptRemove/pod.vue +1 -1
  325. package/rancher-components/StringList/StringList.test.ts +80 -0
  326. package/rancher-components/StringList/StringList.vue +577 -0
  327. package/rancher-components/StringList/index.ts +1 -0
  328. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  329. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  330. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  331. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  332. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  333. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  334. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  335. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  336. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  337. package/rancher-components/components/StringList/StringList.vue +5 -5
  338. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  339. package/store/action-menu.js +4 -4
  340. package/store/auth.js +40 -7
  341. package/store/aws.js +1 -1
  342. package/store/catalog.js +12 -11
  343. package/store/digitalocean.js +4 -4
  344. package/store/features.js +1 -0
  345. package/store/github.js +70 -213
  346. package/store/gitlab.js +159 -0
  347. package/store/growl.js +1 -1
  348. package/store/i18n.js +7 -7
  349. package/store/index.js +63 -22
  350. package/store/linode.js +1 -1
  351. package/store/plugins.js +5 -5
  352. package/store/pnap.js +1 -1
  353. package/store/prefs.js +6 -6
  354. package/store/resource-fetch.js +3 -3
  355. package/store/type-map.js +61 -42
  356. package/store/uiplugins.ts +2 -1
  357. package/store/wm.js +5 -4
  358. package/tsconfig.default.json +10 -0
  359. package/tsconfig.json +2 -9
  360. package/types/shell/index.d.ts +12 -4
  361. package/utils/__tests__/version.test.ts +28 -0
  362. package/utils/alertmanagerconfig.js +4 -4
  363. package/utils/array.ts +4 -4
  364. package/utils/async.ts +1 -1
  365. package/utils/auth.js +3 -3
  366. package/utils/axios.js +5 -5
  367. package/utils/cluster.js +4 -3
  368. package/utils/color.js +10 -0
  369. package/utils/create-yaml.js +4 -4
  370. package/utils/crypto/browserHashUtils.js +1 -1
  371. package/utils/crypto/browserMd5.js +1 -1
  372. package/utils/crypto/browserSha1.js +1 -1
  373. package/utils/crypto/browserSha256.js +1 -1
  374. package/utils/crypto/index.js +3 -3
  375. package/utils/favicon.js +2 -3
  376. package/utils/gatekeeper/util.js +3 -3
  377. package/utils/gc/gc.ts +2 -2
  378. package/utils/git.ts +92 -0
  379. package/utils/grafana.js +4 -4
  380. package/utils/monitoring.js +2 -2
  381. package/utils/nuxt.js +2 -2
  382. package/utils/object.js +5 -5
  383. package/utils/pod-security-admission.ts +1 -1
  384. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  385. package/utils/select.js +2 -2
  386. package/utils/selector.js +2 -2
  387. package/utils/settings.ts +17 -2
  388. package/utils/socket.js +30 -6
  389. package/utils/sort.js +1 -1
  390. package/utils/string.js +1 -1
  391. package/utils/url.ts +1 -1
  392. package/utils/validators/formRules/index.ts +3 -3
  393. package/utils/validators/role-template.js +4 -4
  394. package/utils/version.js +14 -1
  395. package/vue.config.js +19 -13
  396. package/components/form/GithubPicker.vue +0 -390
@@ -1,390 +0,0 @@
1
- <script>
2
- import { mapState } from 'vuex';
3
- import debounce from 'lodash/debounce';
4
- import { findBy } from '@shell/utils/array';
5
- import { EXTENDED_SCOPES } from '@shell/store/github';
6
- import LabeledSelect from '@shell/components/form/LabeledSelect';
7
-
8
- export const FILE_PATTERNS = {
9
- dockerfile: /^Dockerfile(\..*)?$/i,
10
- riofile: /^Riofile(\..*)?$/i,
11
- yaml: /^.*\.ya?ml?$/i,
12
- };
13
-
14
- export default {
15
- components: { LabeledSelect },
16
- props: {
17
- value: {
18
- type: Object,
19
- required: true,
20
- },
21
-
22
- // Filter files displayed in dropdown by keys in FILE_PATTERNS
23
- filePattern: {
24
- type: String,
25
- default: null,
26
- },
27
-
28
- preferredFile: {
29
- type: String,
30
- default: null,
31
- },
32
-
33
- fileKey: {
34
- type: String,
35
- default: 'dockerfile',
36
- }
37
- },
38
-
39
- data() {
40
- return {
41
- repos: [],
42
- branches: [],
43
- files: [],
44
-
45
- loadingRecentRepos: true,
46
- loadingBranches: true,
47
- loadingFiles: true,
48
-
49
- selectedRepo: null,
50
- selectedBranch: null,
51
- selectedFile: null
52
- };
53
- },
54
-
55
- computed: {
56
- ...mapState({
57
- scopes: state => state.github.scopes,
58
- recentRepos: state => state.github.repos,
59
- }),
60
-
61
- hasPrivate() {
62
- return this.scopes.includes('repo');
63
- },
64
-
65
- repoPlaceholder() {
66
- if ( this.loadingRecentRepos ) {
67
- return 'Loading...';
68
- } else {
69
- return 'Select a Repository...';
70
- }
71
- },
72
-
73
- branchPlaceholder() {
74
- if ( this.selectedRepo ) {
75
- if ( this.loadingBranches ) {
76
- return 'Loading...';
77
- } else {
78
- return 'Select a Branch...';
79
- }
80
- } else {
81
- return 'Select a Repository First';
82
- }
83
- },
84
-
85
- filePlaceholder() {
86
- if ( this.selectedBranch ) {
87
- if ( this.loadingFiles ) {
88
- return 'Loading...';
89
- } else {
90
- return 'Select a File...';
91
- }
92
- } else {
93
- return 'Select a Branch First';
94
- }
95
- }
96
- },
97
-
98
- created() {
99
- this.queueSearchRepos = debounce(this.searchRepos, 300);
100
- },
101
-
102
- async mounted() {
103
- await this.fetchRepos();
104
-
105
- if ( this.value && this.value.repo ) {
106
- const repo = await this.$store.dispatch('github/fetchRepoByUrl', this.value.repo);
107
-
108
- if ( !repo ) {
109
- return;
110
- }
111
-
112
- this.selectRepo(repo);
113
-
114
- const branch = await this.$store.dispatch('github/fetchBranch', { repo, branch: this.value.branch });
115
-
116
- if ( !branch ) {
117
- return;
118
- }
119
-
120
- this.selectBranch(branch);
121
-
122
- const file = await this.$store.dispatch('github/fetchFile', {
123
- repo,
124
- branch,
125
- file: this.value.file || this.preferredFile
126
- });
127
-
128
- if ( !file ) {
129
- return;
130
- }
131
-
132
- this.selectFile(file);
133
- }
134
- },
135
-
136
- methods: {
137
- update() {
138
- if ( this.selectedRepo && this.selectedBranch && this.selectedFile ) {
139
- // Do something
140
- }
141
- },
142
-
143
- selectRepo(repo) {
144
- this.selectedFile = null;
145
- this.selectedBranch = null;
146
- this.selectedRepo = repo;
147
- if ( repo ) {
148
- this.fetchBranches(repo);
149
- }
150
-
151
- this.update();
152
- },
153
-
154
- selectBranch(branch) {
155
- this.selectedFile = null;
156
- this.selectedBranch = branch;
157
- if ( branch ) {
158
- this.fetchFiles(this.selectedRepo, branch);
159
- }
160
- },
161
-
162
- selectFile(file) {
163
- this.selectedFile = file;
164
- this.value.repo = this.selectedRepo.clone_url;
165
- this.value.branch = this.selectedBranch.name;
166
- delete this.value.revision;
167
- this.value[this.fileKey] = file.path;
168
- this.$emit('input', this.value);
169
- },
170
-
171
- async expandScope() {
172
- await this.$store.dispatch('github/forgetCache');
173
- this.$store.dispatch('auth/redirectTo', {
174
- provider: 'github',
175
- scopes: EXTENDED_SCOPES,
176
- backTo: this.$route.fullPath
177
- });
178
- },
179
-
180
- onSearchRepos(search, loading) {
181
- loading(true);
182
- this.queueSearchRepos(search, loading);
183
- },
184
-
185
- async searchRepos(search, loading) {
186
- const recent = await this.$store.dispatch('github/fetchRecentRepos');
187
-
188
- if ( !search ) {
189
- this.repos = recent;
190
- loading(false);
191
-
192
- return;
193
- }
194
-
195
- try {
196
- loading(true);
197
-
198
- const remote = await this.$store.dispatch('github/searchRepos', { search });
199
- let matchingRecent = [];
200
-
201
- if ( recent ) {
202
- matchingRecent = recent.filter((x) => {
203
- return x.full_name.toLowerCase().includes(search.toLowerCase()) &&
204
- !findBy(remote, 'full_name', x.full_name);
205
- });
206
- }
207
-
208
- this.repos = [...matchingRecent, ...remote];
209
- } catch (err) {
210
- this.repos = recent;
211
- } finally {
212
- loading(false);
213
- }
214
- },
215
-
216
- async fetchRepos() {
217
- try {
218
- const res = await this.$store.dispatch('github/fetchRecentRepos');
219
-
220
- this.repos = res;
221
- } finally {
222
- this.loadingRecentRepos = false;
223
- }
224
- },
225
-
226
- async fetchBranches(repo) {
227
- this.loadingBranches = true;
228
-
229
- try {
230
- const res = await this.$store.dispatch('github/fetchBranches', { repo: this.selectedRepo });
231
-
232
- this.branches = res;
233
-
234
- if ( !this.selectedBranch ) {
235
- const master = findBy(this.branches, 'name', 'master');
236
-
237
- if ( master ) {
238
- this.selectBranch(master);
239
- }
240
- }
241
- } finally {
242
- this.loadingBranches = false;
243
- }
244
- },
245
-
246
- async fetchFiles(repo, branch) {
247
- try {
248
- const res = await this.$store.dispatch('github/fetchFiles', {
249
- repo: this.selectedRepo,
250
- branch: this.selectedBranch,
251
- pattern: FILE_PATTERNS[(this.filePattern || '').toLowerCase()],
252
- });
253
-
254
- this.files = res;
255
-
256
- if ( !this.selectedFile && this.preferredFile ) {
257
- const file = findBy(this.files, 'path', this.preferredFile);
258
-
259
- if ( file ) {
260
- this.selectFile(file);
261
- }
262
- }
263
- } finally {
264
- this.loadingFiles = false;
265
- }
266
- },
267
- },
268
- };
269
-
270
- </script>
271
-
272
- <template>
273
- <div class="picker">
274
- <div
275
- v-if="!hasPrivate && !loadingRecentRepos"
276
- class="expand-scope pb-20"
277
- >
278
- <i class="icon icon-info" /> Showing only public repos. <a
279
- href="#"
280
- class="text-primary bg-transparent"
281
- @click="expandScope"
282
- >
283
- Click here
284
- </a>
285
- to grant Rio access to read private repos.
286
- </div>
287
- <div class="row">
288
- <div class="col span-4">
289
- <LabeledSelect
290
- :placeholder="repoPlaceholder"
291
- :disabled="loadingRecentRepos"
292
- :options="repos"
293
- label="full_name"
294
- :value="selectedRepo"
295
- :clearable="false"
296
- @search="onSearchRepos"
297
- @input="selectRepo"
298
- >
299
- <template #spinner="{loading}">
300
- <span v-show="loading">
301
- <i class="icon icon-spinner icon-spin" /> Loading&hellip;
302
- </span>
303
- </template>
304
- <template #no-options>
305
- Type to search GitHub repositories
306
- </template>
307
- <template
308
- slot="option"
309
- slot-scope="option"
310
- >
311
- <div class="d-center">
312
- <img :src="option.owner.avatar_url">
313
- {{ option.full_name }}
314
- </div>
315
- </template>
316
- <template
317
- slot="selected-option"
318
- slot-scope="option"
319
- >
320
- <div class="selected d-center">
321
- <img :src="option.owner.avatar_url">
322
- {{ option.full_name }}
323
- </div>
324
- </template>
325
- </LabeledSelect>
326
- </div>
327
- <div class="col span-4">
328
- <LabeledSelect
329
- :disabled="!selectedRepo || loadingBranches"
330
- :placeholder="branchPlaceholder"
331
- :options="branches"
332
- label="name"
333
- :value="selectedBranch"
334
- :clearable="false"
335
- @input="selectBranch"
336
- />
337
- </div>
338
- <div class="col span-4">
339
- <LabeledSelect
340
- :disabled="!selectedBranch"
341
- :placeholder="filePlaceholder"
342
- :options="files"
343
- label="path"
344
- :value="selectedFile"
345
- :clearable="false"
346
- @input="selectFile"
347
- />
348
- </div>
349
- </div>
350
- </div>
351
- </template>
352
-
353
- <style lang="scss" scoped>
354
- .picker {
355
- img {
356
- height: 30px;
357
- margin-right: 1rem;
358
- }
359
-
360
- .d-center {
361
- display: flex;
362
- align-items: center;
363
- }
364
-
365
- .selected img {
366
- width: auto;
367
- max-height: 23px;
368
- margin-right: 0.5rem;
369
- }
370
-
371
- .v-select .dropdown li {
372
- border-bottom: 1px solid rgba(112, 128, 144, 0.1);
373
- }
374
-
375
- .v-select .dropdown li:last-child {
376
- border-bottom: none;
377
- }
378
-
379
- .v-select .dropdown li a {
380
- padding: 10px 20px;
381
- width: 100%;
382
- font-size: 1.25em;
383
- color: #3c3c3c;
384
- }
385
-
386
- .v-select .dropdown-menu .active > a {
387
- color: #fff;
388
- }
389
- }
390
- </style>