@rancher/shell 0.3.14 → 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 (397) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +83 -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 +4 -3
  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 -9
  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/pkg/files/index.ts +1 -1
  128. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  129. package/detail/fleet.cattle.io.bundle.vue +1 -1
  130. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  131. package/detail/management.cattle.io.user.vue +12 -12
  132. package/detail/namespace.vue +4 -4
  133. package/detail/networking.k8s.io.ingress.vue +3 -3
  134. package/detail/node.vue +2 -2
  135. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  136. package/detail/service.vue +1 -1
  137. package/detail/workload/index.vue +3 -3
  138. package/dialog/AddProjectMemberDialog.vue +2 -2
  139. package/dialog/DrainNode.vue +1 -1
  140. package/dialog/GenericPrompt.vue +9 -5
  141. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  142. package/dialog/ScaleMachineDownDialog.vue +2 -2
  143. package/edit/auth/azuread.vue +3 -3
  144. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  145. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  146. package/edit/cloudcredential.vue +4 -4
  147. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  148. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  149. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  150. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  151. package/edit/logging-flow/index.vue +4 -4
  152. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  153. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  154. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  155. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  156. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  157. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  158. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  159. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  160. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  161. package/edit/management.cattle.io.project.vue +3 -3
  162. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  163. package/edit/management.cattle.io.setting.vue +1 -1
  164. package/edit/management.cattle.io.user.vue +2 -2
  165. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  166. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  167. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  168. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  169. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  170. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  171. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  172. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  173. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  174. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  175. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  176. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  177. package/edit/monitoring.coreos.com.route.vue +2 -2
  178. package/edit/namespace.vue +21 -13
  179. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  180. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  181. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  182. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  183. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  184. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  185. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  186. package/edit/persistentvolume/index.vue +4 -4
  187. package/edit/persistentvolumeclaim.vue +3 -3
  188. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  189. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  190. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  191. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  192. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  193. package/edit/resources.cattle.io.backup.vue +2 -2
  194. package/edit/resources.cattle.io.restore.vue +3 -3
  195. package/edit/secret/generic.vue +1 -1
  196. package/edit/secret/index.vue +3 -3
  197. package/edit/service.vue +3 -21
  198. package/edit/serviceaccount.vue +2 -2
  199. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  200. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  201. package/edit/token.vue +5 -5
  202. package/edit/workload/index.vue +1 -1
  203. package/edit/workload/mixins/workload.js +8 -8
  204. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  205. package/edit/workload/storage/Mount.vue +2 -2
  206. package/edit/workload/storage/csi/index.vue +1 -1
  207. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  208. package/edit/workload/storage/index.vue +6 -6
  209. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  210. package/initialize/client.js +8 -8
  211. package/initialize/index.js +1 -4
  212. package/layouts/default.vue +38 -11
  213. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  214. package/list/cis.cattle.io.clusterscan.vue +1 -1
  215. package/list/fleet.cattle.io.cluster.vue +2 -2
  216. package/list/group.principal.vue +1 -1
  217. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  218. package/list/management.cattle.io.cluster.vue +1 -1
  219. package/list/management.cattle.io.feature.vue +1 -1
  220. package/list/management.cattle.io.user.vue +2 -2
  221. package/list/node.vue +5 -5
  222. package/list/provisioning.cattle.io.cluster.vue +4 -5
  223. package/machine-config/amazonec2.vue +2 -2
  224. package/machine-config/digitalocean.vue +4 -4
  225. package/machine-config/linode.vue +4 -4
  226. package/machine-config/vmwarevsphere.vue +12 -12
  227. package/middleware/authenticated.js +7 -6
  228. package/mixins/brand.js +1 -1
  229. package/mixins/chart.js +6 -6
  230. package/mixins/fetch.client.js +2 -2
  231. package/mixins/form-validation.js +7 -7
  232. package/mixins/resource-fetch-namespaced.js +1 -1
  233. package/mixins/resource-fetch.js +2 -2
  234. package/models/apps.statefulset.js +2 -2
  235. package/models/batch.cronjob.js +1 -1
  236. package/models/catalog.cattle.io.app.js +4 -4
  237. package/models/cis.cattle.io.clusterscan.js +1 -1
  238. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  239. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  240. package/models/cloudcredential.js +1 -1
  241. package/models/cluster/node.js +5 -5
  242. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  243. package/models/fleet.cattle.io.gitrepo.js +3 -3
  244. package/models/group.principal.js +4 -4
  245. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  246. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  247. package/models/logging.banzaicloud.io.flow.js +5 -5
  248. package/models/logging.banzaicloud.io.output.js +2 -2
  249. package/models/management.cattle.io.cluster.js +10 -14
  250. package/models/management.cattle.io.globalrole.js +4 -4
  251. package/models/management.cattle.io.node.js +2 -2
  252. package/models/management.cattle.io.nodepool.js +3 -3
  253. package/models/management.cattle.io.nodetemplate.js +4 -4
  254. package/models/management.cattle.io.project.js +2 -2
  255. package/models/management.cattle.io.roletemplate.js +1 -1
  256. package/models/management.cattle.io.setting.js +1 -1
  257. package/models/management.cattle.io.user.js +5 -5
  258. package/models/monitoring.coreos.com.receiver.js +9 -9
  259. package/models/namespace.js +1 -1
  260. package/models/networking.k8s.io.ingress.js +5 -5
  261. package/models/persistentvolume.js +3 -3
  262. package/models/pod.js +3 -3
  263. package/models/provisioning.cattle.io.cluster.js +39 -27
  264. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  265. package/models/rbac.authorization.k8s.io.role.js +3 -3
  266. package/models/secret.js +1 -1
  267. package/models/service.js +2 -2
  268. package/models/storage.k8s.io.storageclass.js +2 -2
  269. package/models/token.js +1 -1
  270. package/models/workload.js +6 -6
  271. package/models/workload.service.js +5 -21
  272. package/package.json +2 -1
  273. package/pages/about.vue +9 -9
  274. package/pages/account/index.vue +2 -2
  275. package/pages/auth/login.vue +15 -12
  276. package/pages/auth/verify.vue +6 -0
  277. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  278. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  279. package/pages/c/_cluster/auth/roles/index.vue +9 -9
  280. package/pages/c/_cluster/explorer/index.vue +41 -16
  281. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  282. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  283. package/pages/c/_cluster/fleet/index.vue +11 -11
  284. package/pages/c/_cluster/monitoring/index.vue +1 -1
  285. package/pages/c/_cluster/settings/links.vue +3 -3
  286. package/pages/c/_cluster/settings/performance.vue +1 -1
  287. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  288. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  289. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  290. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  291. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  292. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  293. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  294. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  295. package/pages/diagnostic.vue +6 -6
  296. package/pages/home.vue +3 -3
  297. package/pages/prefs.vue +2 -2
  298. package/pages/rio/mesh.vue +3 -3
  299. package/pages/support/index.vue +10 -1
  300. package/pkg/auto-import.js +1 -1
  301. package/pkg/tsconfig.json +1 -0
  302. package/pkg/vue.config.js +1 -1
  303. package/plugins/axios.js +1 -1
  304. package/plugins/clean-html-directive.js +1 -1
  305. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  306. package/plugins/dashboard-store/actions.js +4 -4
  307. package/plugins/dashboard-store/getters.js +1 -1
  308. package/plugins/dashboard-store/index.js +1 -1
  309. package/plugins/dashboard-store/mutations.js +2 -2
  310. package/plugins/dashboard-store/resource-class.js +8 -8
  311. package/plugins/i18n.js +1 -1
  312. package/plugins/plugin.js +5 -1
  313. package/plugins/steve/actions.js +3 -3
  314. package/plugins/steve/getters.js +3 -3
  315. package/plugins/steve/hybrid-class.js +1 -1
  316. package/plugins/steve/mutations.js +1 -1
  317. package/plugins/steve/performanceTesting.js +1 -1
  318. package/plugins/steve/resourceWatcher.js +1 -1
  319. package/plugins/steve/subscribe.js +6 -6
  320. package/plugins/steve/worker/web-worker.basic.js +1 -1
  321. package/promptRemove/management.cattle.io.project.vue +3 -3
  322. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  323. package/promptRemove/pod.vue +1 -1
  324. package/rancher-components/StringList/StringList.vue +34 -50
  325. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  326. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  327. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  328. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  329. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  330. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  331. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  332. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  333. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  334. package/rancher-components/components/StringList/StringList.vue +5 -5
  335. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  336. package/store/action-menu.js +4 -4
  337. package/store/auth.js +40 -7
  338. package/store/aws.js +1 -1
  339. package/store/catalog.js +12 -11
  340. package/store/digitalocean.js +4 -4
  341. package/store/features.js +1 -0
  342. package/store/github.js +70 -213
  343. package/store/gitlab.js +159 -0
  344. package/store/growl.js +1 -1
  345. package/store/i18n.js +7 -7
  346. package/store/index.js +63 -22
  347. package/store/linode.js +1 -1
  348. package/store/plugins.js +5 -5
  349. package/store/pnap.js +1 -1
  350. package/store/prefs.js +6 -6
  351. package/store/resource-fetch.js +3 -3
  352. package/store/type-map.js +61 -42
  353. package/store/uiplugins.ts +2 -1
  354. package/store/wm.js +5 -4
  355. package/tsconfig.default.json +10 -0
  356. package/tsconfig.json +2 -9
  357. package/types/shell/index.d.ts +21 -13
  358. package/utils/__tests__/version.test.ts +28 -0
  359. package/utils/alertmanagerconfig.js +4 -4
  360. package/utils/array.ts +4 -4
  361. package/utils/async.ts +1 -1
  362. package/utils/auth.js +3 -3
  363. package/utils/axios.js +5 -5
  364. package/utils/cluster.js +4 -3
  365. package/utils/color.js +10 -0
  366. package/utils/create-yaml.js +4 -4
  367. package/utils/crypto/browserHashUtils.js +1 -1
  368. package/utils/crypto/browserMd5.js +1 -1
  369. package/utils/crypto/browserSha1.js +1 -1
  370. package/utils/crypto/browserSha256.js +1 -1
  371. package/utils/crypto/index.js +3 -3
  372. package/utils/favicon.js +2 -3
  373. package/utils/gatekeeper/util.js +3 -3
  374. package/utils/gc/gc.ts +2 -2
  375. package/utils/git.ts +92 -0
  376. package/utils/grafana.js +4 -4
  377. package/utils/monitoring.js +2 -2
  378. package/utils/nuxt.js +2 -2
  379. package/utils/object.js +5 -5
  380. package/utils/pod-security-admission.ts +1 -1
  381. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  382. package/utils/select.js +2 -2
  383. package/utils/selector.js +2 -2
  384. package/utils/settings.ts +17 -2
  385. package/utils/socket.js +30 -6
  386. package/utils/sort.js +1 -1
  387. package/utils/string.js +1 -1
  388. package/utils/url.ts +1 -1
  389. package/utils/validators/formRules/index.ts +3 -3
  390. package/utils/validators/role-template.js +4 -4
  391. package/utils/version.js +14 -1
  392. package/vue.config.js +19 -13
  393. package/components/.DS_Store +0 -0
  394. package/components/__tests__/.DS_Store +0 -0
  395. package/components/form/GithubPicker.vue +0 -390
  396. package/creators/pkg/package-lock.json +0 -37
  397. package/yarn-error.log +0 -196
@@ -10,7 +10,7 @@ export default {
10
10
  ...mapState('growl', ['stack']),
11
11
 
12
12
  shouldRun() {
13
- return this.stack.length && this.stack.find(x => x.timeout > 0);
13
+ return this.stack.length && this.stack.find((x) => x.timeout > 0);
14
14
  }
15
15
  },
16
16
 
@@ -98,7 +98,7 @@ export default {
98
98
  portOptions() {
99
99
  const ports = this.value?.spec?.ports || [];
100
100
 
101
- return ports.filter(p => p.port && p.protocol === 'TCP').map(p => p.port) || [];
101
+ return ports.filter((p) => p.port && p.protocol === 'TCP').map((p) => p.port) || [];
102
102
  },
103
103
 
104
104
  serviceOptions() {
@@ -116,7 +116,7 @@ export default {
116
116
  namespaces[s.metadata.namespace];
117
117
  });
118
118
 
119
- return out.map(s => s.id);
119
+ return out.map((s) => s.id);
120
120
  },
121
121
 
122
122
  shareIPEnabled() {
@@ -124,7 +124,7 @@ export default {
124
124
  const kubernetesVersionExtension = this.currentCluster.kubernetesVersionExtension;
125
125
 
126
126
  if (kubernetesVersionExtension.startsWith('+rke2')) {
127
- const charts = ((this.rke2Versions?.data || []).find(v => v.id === kubernetesVersion) || {}).charts;
127
+ const charts = ((this.rke2Versions?.data || []).find((v) => v.id === kubernetesVersion) || {}).charts;
128
128
  let ccmVersion = charts?.['harvester-cloud-provider']?.version || '';
129
129
 
130
130
  if (ccmVersion.endsWith('00')) {
@@ -188,6 +188,7 @@ export default {
188
188
  :mode="mode"
189
189
  :options="ipamOptions"
190
190
  :label="t('servicesPage.harvester.ipam.label')"
191
+ :disabled="mode === 'edit'"
191
192
  />
192
193
  <div
193
194
  v-if="mode === 'create'"
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import Vue from 'vue';
20
20
  import { Solver } from '@shell/utils/svg-filter';
21
- import { colorToRgb, mapStandardColors } from '@shell/utils/color';
21
+ import { colorToRgb, mapStandardColors, normalizeHex } from '@shell/utils/color';
22
22
 
23
23
  const filterCache = {};
24
24
  const cssCache = {};
@@ -75,11 +75,18 @@ export default {
75
75
  if (stylesheet && stylesheet.cssRules) {
76
76
  for (let x = 0; x < Object.keys(stylesheet.cssRules).length; x++) {
77
77
  const cssRules = stylesheet.cssRules[x];
78
- const selectorText = currTheme === 'light' ? 'body, .theme-light' : '.theme-dark';
79
78
 
80
- if (cssRules.selectorText && cssRules.selectorText === selectorText) {
79
+ if (cssRules.selectorText && ((currTheme === 'light' && cssRules.selectorText.includes('body') &&
80
+ cssRules.selectorText.includes('.theme-light') && cssRules.style.cssText.includes('--link:')) ||
81
+ (currTheme === 'dark' && cssRules.selectorText.includes('.theme-dark')))) {
82
+ // grab the colors to be used on the icon from the css rules
81
83
  uiColor = mapStandardColors(cssRules.style.getPropertyValue(colors[this.color].color).trim());
82
84
  hoverColor = mapStandardColors(cssRules.style.getPropertyValue(colors[this.color].hover).trim());
85
+
86
+ // normalize hex colors (#xxx to #xxxxxx)
87
+ uiColor = normalizeHex(uiColor);
88
+ hoverColor = normalizeHex(hoverColor);
89
+
83
90
  found = true;
84
91
  break;
85
92
  }
@@ -35,7 +35,7 @@ export default {
35
35
  routeFromDropdown: {
36
36
  get() {
37
37
  const route = this.customRoute || {};
38
- const out = this.routeDropdownOptions.find(opt => opt.value.name === route.name && opt.value.params?.cluster === route.params?.cluster);
38
+ const out = this.routeDropdownOptions.find((opt) => opt.value.name === route.name && opt.value.params?.cluster === route.params?.cluster);
39
39
 
40
40
  return out || this.routeDropdownOptions[0];
41
41
  },
@@ -72,7 +72,7 @@ export default {
72
72
  routeDropdownOptions() {
73
73
  // Drop-down shows list of clusters that can ber set as login landing page
74
74
  const out = [];
75
- const kubeClusters = filterHiddenLocalCluster(filterOnlyKubernetesClusters(this.clusters), this.$store);
75
+ const kubeClusters = filterHiddenLocalCluster(filterOnlyKubernetesClusters(this.clusters, this.$store), this.$store);
76
76
 
77
77
  kubeClusters.forEach((c) => {
78
78
  if (c.isReady) {
@@ -27,7 +27,7 @@ export default {
27
27
  ...mapGetters(['currentCluster']),
28
28
 
29
29
  excludedProjects() {
30
- return this.toMove.filter(namespace => !!namespace.project).map(namespace => namespace.project.shortId);
30
+ return this.toMove.filter((namespace) => !!namespace.project).map((namespace) => namespace.project.shortId);
31
31
  },
32
32
 
33
33
  projectOptions() {
@@ -83,7 +83,7 @@ export default Vue.extend({
83
83
  // Generate PSA form controls
84
84
  psaControls: toDictionary(PSAModes, getPsaControl) as Record<PSAMode, PSAControl>,
85
85
  psaExemptionsControls: toDictionary(PSADimensions, getExemptionControl) as Record<PSADimension, PSAExemptionControl>,
86
- options: PSALevels.map(level => ({
86
+ options: PSALevels.map((level) => ({
87
87
  value: level,
88
88
  label: this.t(`podSecurityAdmission.labels.${ level }`)
89
89
  })),
@@ -145,7 +145,7 @@ export default Vue.extend({
145
145
  */
146
146
  updateExemptions(): void {
147
147
  const exemptions = PSADimensions.reduce((acc, dimension) => {
148
- const value = this.psaExemptionsControls[dimension].value.split(',').map(value => value.trim());
148
+ const value = this.psaExemptionsControls[dimension].value.split(',').map((value) => value.trim());
149
149
  const active = this.psaExemptionsControls[dimension].active;
150
150
 
151
151
  return {
@@ -182,7 +182,7 @@ export default Vue.extend({
182
182
  */
183
183
  getPsaExemptions(): Record<PSADimension, PSAExemptionControl> {
184
184
  return PSADimensions.reduce((acc, dimension) => {
185
- const values = (this.exemptions[dimension] || []).map(value => value.trim()).join(',');
185
+ const values = (this.exemptions[dimension] || []).map((value) => value.trim()).join(',');
186
186
 
187
187
  return {
188
188
  ...acc,
@@ -68,7 +68,7 @@ export default {
68
68
  if ( !this.max ) {
69
69
  max = 100;
70
70
  if ( out.length ) {
71
- max = out.map(x => x.value).reduce((a, b) => a + b);
71
+ max = out.map((x) => x.value).reduce((a, b) => a + b);
72
72
  }
73
73
  }
74
74
 
@@ -88,7 +88,7 @@ export default {
88
88
  obj.style = `width: ${ obj.percent }%`;
89
89
  }
90
90
 
91
- return out.filter(obj => obj.percent);
91
+ return out.filter((obj) => obj.percent);
92
92
  },
93
93
  }
94
94
  };
@@ -9,11 +9,13 @@ import { uniq } from '@shell/utils/array';
9
9
  import AsyncButton from '@shell/components/AsyncButton';
10
10
  import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations';
11
11
  import { CATALOG } from '@shell/config/types';
12
+ import { LabeledInput } from '@components/Form/LabeledInput';
13
+
12
14
  export default {
13
15
  name: 'PromptRemove',
14
16
 
15
17
  components: {
16
- Card, Checkbox, AsyncButton
18
+ Card, Checkbox, AsyncButton, LabeledInput
17
19
  },
18
20
  props: {
19
21
  /**
@@ -42,7 +44,7 @@ export default {
42
44
  },
43
45
  computed: {
44
46
  names() {
45
- return this.toRemove.map(obj => obj.nameDisplay).slice(0, 5);
47
+ return this.toRemove.map((obj) => obj.nameDisplay).slice(0, 5);
46
48
  },
47
49
 
48
50
  nameToMatchPosition() {
@@ -100,6 +102,11 @@ export default {
100
102
  if (this.toRemove.length > 1) {
101
103
  return null;
102
104
  }
105
+
106
+ if (this.toRemove[0].doneLocationRemove) {
107
+ return this.toRemove[0].doneLocationRemove;
108
+ }
109
+
103
110
  const currentRoute = this.toRemove[0].currentRoute();
104
111
  const out = {};
105
112
  const params = { ...currentRoute.params };
@@ -184,7 +191,7 @@ export default {
184
191
  // if none found (delete is allowed), then check for any resources with a warning message
185
192
  toRemove(neu) {
186
193
  let message;
187
- const preventDeletionMessages = neu.filter(item => item.preventDeletionMessage);
194
+ const preventDeletionMessages = neu.filter((item) => item.preventDeletionMessage);
188
195
 
189
196
  this.preventDelete = false;
190
197
 
@@ -192,7 +199,7 @@ export default {
192
199
  this.preventDelete = true;
193
200
  message = preventDeletionMessages[0].preventDeletionMessage;
194
201
  } else {
195
- const warnDeletionMessages = neu.filter(item => item.warnDeletionMessage);
202
+ const warnDeletionMessages = neu.filter((item) => item.warnDeletionMessage);
196
203
 
197
204
  if (!!warnDeletionMessages.length) {
198
205
  message = warnDeletionMessages[0].warnDeletionMessage;
@@ -224,6 +231,7 @@ export default {
224
231
  // doneLocation will recompute to undefined when delete request completes
225
232
  this.cachedDoneLocation = { ...this.doneLocation };
226
233
  }
234
+
227
235
  if (this.hasCustomRemove && this.$refs?.customPrompt?.remove) {
228
236
  let handled = this.$refs.customPrompt.remove(btnCB);
229
237
 
@@ -247,7 +255,7 @@ export default {
247
255
  return;
248
256
  }
249
257
  }
250
- const serialRemove = this.toRemove.some(resource => resource.removeSerially);
258
+ const serialRemove = this.toRemove.some((resource) => resource.removeSerially);
251
259
 
252
260
  if (serialRemove) {
253
261
  this.serialRemove(btnCB);
@@ -272,10 +280,16 @@ export default {
272
280
  },
273
281
  async parallelRemove(btnCB) {
274
282
  try {
283
+ if (typeof this.toRemove[0].bulkRemove !== 'undefined') {
284
+ await this.toRemove[0].bulkRemove(this.toRemove, {});
285
+ } else {
286
+ await Promise.all(this.toRemove.map((resource) => resource.remove()));
287
+ }
288
+
275
289
  const spoofedTypes = this.getSpoofedTypes(this.toRemove);
276
290
 
277
- await Promise.all(this.toRemove.map(resource => resource.remove()));
278
291
  await this.refreshSpoofedTypes(spoofedTypes);
292
+
279
293
  this.done();
280
294
  } catch (err) {
281
295
  this.error = err.message || err;
@@ -289,7 +303,7 @@ export default {
289
303
  this.close();
290
304
  },
291
305
  getSpoofedTypes(resources) {
292
- const uniqueResourceTypes = uniq(this.toRemove.map(resource => resource.type));
306
+ const uniqueResourceTypes = uniq(this.toRemove.map((resource) => resource.type));
293
307
 
294
308
  return uniqueResourceTypes.filter(this.$store.getters['type-map/isSpoofed']);
295
309
  },
@@ -297,7 +311,7 @@ export default {
297
311
  // If spoofed we need to reload the values as the server can't have watchers for them.
298
312
  refreshSpoofedTypes(types) {
299
313
  const inStore = this.$store.getters['currentProduct'].inStore;
300
- const promises = types.map(type => this.$store.dispatch(`${ inStore }/findAll`, { type, opt: { force: true } }, { root: true }));
314
+ const promises = types.map((type) => this.$store.dispatch(`${ inStore }/findAll`, { type, opt: { force: true } }, { root: true }));
301
315
 
302
316
  return Promise.all(promises);
303
317
  },
@@ -372,32 +386,42 @@ export default {
372
386
  </div>
373
387
  </template>
374
388
  </div>
375
- <input
389
+ <LabeledInput
376
390
  v-if="needsConfirm"
377
391
  id="confirm"
378
392
  v-model="confirmName"
393
+ v-focus
379
394
  :data-testid="componentTestid + '-input'"
380
395
  type="text"
381
396
  >
382
- <div class="text-warning mb-10 mt-10">
383
- {{ warning }}
384
- </div>
385
- <div class="text-error mb-10 mt-10">
386
- {{ error }}
387
- </div>
388
- <div
389
- v-if="!needsConfirm"
390
- class="text-info mt-20"
391
- >
392
- {{ protip }}
393
- </div>
394
- <Checkbox
395
- v-if="chartsToRemoveIsApp"
396
- v-model="chartsDeleteCrd"
397
- label-key="promptRemoveApp.removeCrd"
398
- class="mt-10 type"
399
- @input="chartAddCrdToRemove"
400
- />
397
+ <div class="text-warning mb-10 mt-10">
398
+ {{ warning }}
399
+ </div>
400
+ <div class="text-error mb-10 mt-10">
401
+ {{ error }}
402
+ </div>
403
+ <div
404
+ v-if="!needsConfirm"
405
+ class="text-info mt-20"
406
+ >
407
+ {{ protip }}
408
+ </div>
409
+ <Checkbox
410
+ v-if="chartsToRemoveIsApp"
411
+ v-model="chartsDeleteCrd"
412
+ label-key="promptRemoveApp.removeCrd"
413
+ class="mt-10 type"
414
+ @input="chartAddCrdToRemove"
415
+ />
416
+ </labeledinput>
417
+ <template v-else>
418
+ <div class="text-warning mb-10 mt-10">
419
+ {{ warning }}
420
+ </div>
421
+ <div class="text-error mb-10 mt-10">
422
+ {{ error }}
423
+ </div>
424
+ </template>
401
425
  </div>
402
426
  <template #actions>
403
427
  <button
@@ -70,7 +70,7 @@ export default {
70
70
 
71
71
  clusterSnapshots() {
72
72
  if (this.sortedSnapshots) {
73
- return this.sortedSnapshots.map(snapshot => ({ label: this.snapshotLabel(snapshot), value: snapshot.name }));
73
+ return this.sortedSnapshots.map((snapshot) => ({ label: this.snapshotLabel(snapshot), value: snapshot.name }));
74
74
  } else {
75
75
  return [];
76
76
  }
@@ -115,13 +115,13 @@ export default {
115
115
 
116
116
  if (!cluster.isRke2) {
117
117
  promise = this.$store.dispatch('rancher/findAll', { type: NORMAN.ETCD_BACKUP }).then((snapshots) => {
118
- return snapshots.filter(s => s.clusterId === cluster.metadata.name);
118
+ return snapshots.filter((s) => s.clusterId === cluster.metadata.name);
119
119
  });
120
120
  } else {
121
121
  promise = this.$store.dispatch('management/findAll', { type: SNAPSHOT }).then((snapshots) => {
122
122
  const toRestoreClusterName = cluster?.clusterName || cluster?.metadata?.name;
123
123
 
124
- return snapshots.filter(s => s.clusterName === toRestoreClusterName);
124
+ return snapshots.filter((s) => s.clusterName === toRestoreClusterName);
125
125
  });
126
126
  }
127
127
 
@@ -67,9 +67,9 @@ function migrate(expr) {
67
67
  let out;
68
68
 
69
69
  if ( expr.includes('||') ) {
70
- out = expr.split('||').map(x => migrate(x)).join(' || ');
70
+ out = expr.split('||').map((x) => migrate(x)).join(' || ');
71
71
  } else if ( expr.includes('&&') ) {
72
- out = expr.split('&&').map(x => migrate(x)).join(' && ');
72
+ out = expr.split('&&').map((x) => migrate(x)).join(' && ');
73
73
  } else {
74
74
  const parts = expr.match(/^(.*)(!?=)(.*)$/);
75
75
 
@@ -311,9 +311,9 @@ export default {
311
311
  let result;
312
312
 
313
313
  if ( get(or, 'length') > 1 ) {
314
- result = or.some(showIf => this.calExpression(showIf, allQuestions));
314
+ result = or.some((showIf) => this.calExpression(showIf, allQuestions));
315
315
  } else {
316
- result = and.every(showIf => this.calExpression(showIf, allQuestions));
316
+ result = and.every((showIf) => this.calExpression(showIf, allQuestions));
317
317
  }
318
318
 
319
319
  return result;
@@ -368,7 +368,7 @@ export default {
368
368
  return null;
369
369
  },
370
370
  getAnswer(variable, questions) {
371
- const found = questions.find(q => q.variable === variable);
371
+ const found = questions.find((q) => q.variable === variable);
372
372
 
373
373
  if ( found ) {
374
374
  // Equivalent to finding question.answer in Ember
@@ -22,7 +22,7 @@ export default {
22
22
  WORKLOAD_TYPES.JOB,
23
23
  WORKLOAD_TYPES.STATEFUL_SET
24
24
  ];
25
- const allWorkloadsNested = await Promise.all(types.map(type => this.$store.dispatch('cluster/findAll', { type })));
25
+ const allWorkloadsNested = await Promise.all(types.map((type) => this.$store.dispatch('cluster/findAll', { type })));
26
26
  const allWorkloads = allWorkloadsNested.flat();
27
27
 
28
28
  this.relatedWorkloadRows = allWorkloads.filter(this.filter);
@@ -139,7 +139,7 @@ export default {
139
139
  }
140
140
 
141
141
  // blocked-post means you can post through norman, but not through steve.
142
- if ( this.schema && !this.schema?.collectionMethods.find(x => ['blocked-post', 'post'].includes(x.toLowerCase())) ) {
142
+ if ( this.schema && !this.schema?.collectionMethods.find((x) => ['blocked-post', 'post'].includes(x.toLowerCase())) ) {
143
143
  return false;
144
144
  }
145
145
 
@@ -225,7 +225,7 @@ export default {
225
225
 
226
226
  // If only one namespace is selected, hide the namespace column
227
227
  if ( !showNamespace ) {
228
- const idx = headers.findIndex(header => header.name === NAMESPACE.name);
228
+ const idx = headers.findIndex((header) => header.name === NAMESPACE.name);
229
229
 
230
230
  if ( idx >= 0 ) {
231
231
  headers.splice(idx, 1);
@@ -236,7 +236,7 @@ export default {
236
236
  const custom = this.listGroupMapped[this.group];
237
237
 
238
238
  if (custom?.hideColumn) {
239
- const idx = headers.findIndex(header => header.name === custom.hideColumn);
239
+ const idx = headers.findIndex((header) => header.name === custom.hideColumn);
240
240
 
241
241
  if ( idx >= 0 ) {
242
242
  headers.splice(idx, 1);
@@ -291,7 +291,7 @@ export default {
291
291
  group: {
292
292
  get() {
293
293
  // Check group is valid
294
- const exists = this.groupOptions.find(g => g.value === this._group);
294
+ const exists = this.groupOptions.find((g) => g.value === this._group);
295
295
 
296
296
  if (!exists) {
297
297
  return DEFAULT_GROUP;
@@ -166,7 +166,7 @@ export default {
166
166
  try {
167
167
  const parsed = jsyaml.load(this.currentYaml);
168
168
  const annotations = Object.keys(parsed?.metadata?.annotations || {});
169
- const regexes = ANNOTATIONS_TO_FOLD.map(x => ensureRegex(x));
169
+ const regexes = ANNOTATIONS_TO_FOLD.map((x) => ensureRegex(x));
170
170
 
171
171
  let foldAnnotations = false;
172
172
 
@@ -179,7 +179,7 @@ export default {
179
179
  },
180
180
 
181
181
  existingBindings() {
182
- const roles = this.roles.map(x => x.name);
182
+ const roles = this.roles.map((x) => x.name);
183
183
 
184
184
  const out = this.allBindings.filter((binding) => {
185
185
  if ( binding.roleRef.kind !== this.roleScope || !binding.roleRef?.name) {
@@ -197,7 +197,7 @@ export default {
197
197
  },
198
198
 
199
199
  unremovedRows() {
200
- return this.rows.filter(x => x.remove !== true);
200
+ return this.rows.filter((x) => x.remove !== true);
201
201
  },
202
202
  },
203
203
 
@@ -37,7 +37,7 @@ export default {
37
37
  },
38
38
 
39
39
  accessibleResources() {
40
- return RESOURCES.filter(resource => this.$store.getters['cluster/schemaFor'](resource));
40
+ return RESOURCES.filter((resource) => this.$store.getters['cluster/schemaFor'](resource));
41
41
  },
42
42
 
43
43
  totalCountGaugeInput() {
@@ -38,11 +38,11 @@ export default {
38
38
 
39
39
  computed: {
40
40
  availableActions() {
41
- return this.bulkActionsForSelection.filter(act => !act.external);
41
+ return this.bulkActionsForSelection.filter((act) => !act.external);
42
42
  },
43
43
 
44
44
  keyedAvailableActions() {
45
- return this.availableActions.map(aa => aa.action);
45
+ return this.availableActions.map((aa) => aa.action);
46
46
  },
47
47
 
48
48
  selectedRowsText() {
@@ -139,7 +139,7 @@ export default {
139
139
  // Collate the actions in an array and hide in the normal row
140
140
  const id = ba.attributes.getNamedItem('id').value;
141
141
 
142
- this.hiddenActions.push(this.availableActions.find(aa => aa.action === id));
142
+ this.hiddenActions.push(this.availableActions.find((aa) => aa.action === id));
143
143
  ba.style.display = 'none';
144
144
  }
145
145
  }
@@ -83,7 +83,7 @@ export default {
83
83
 
84
84
  computed: {
85
85
  advFilterSelectOptions() {
86
- return this.columnOptions.filter(c => c.isFilter && !c.preventFiltering);
86
+ return this.columnOptions.filter((c) => c.isFilter && !c.preventFiltering);
87
87
  },
88
88
 
89
89
  advGroupOptions() {
@@ -102,7 +102,7 @@ export default {
102
102
 
103
103
  this.columnOptions.forEach((advCol) => {
104
104
  if (advCol.isTableOption) {
105
- const index = allCols.findIndex(col => col.name === advCol.name);
105
+ const index = allCols.findIndex((col) => col.name === advCol.name);
106
106
 
107
107
  if (index !== -1) {
108
108
  allCols[index].isColVisible = advCol.isColVisible;
@@ -122,7 +122,7 @@ export default {
122
122
  const headerProps = [];
123
123
 
124
124
  // Filter out any columns that are too heavy to show for large page sizes
125
- const filteredHeaders = this.headers.slice().filter(c => (!c.maxPageSize || (c.maxPageSize && c.maxPageSize >= this.perPage)));
125
+ const filteredHeaders = this.headers.slice().filter((c) => (!c.maxPageSize || (c.maxPageSize && c.maxPageSize >= this.perPage)));
126
126
 
127
127
  // add table cols from config (headers)
128
128
  filteredHeaders.forEach((prop) => {
@@ -152,7 +152,7 @@ export default {
152
152
 
153
153
  // maintain current visibility of cols if they exist already
154
154
  if (this.columnOptions?.length) {
155
- const opt = this.columnOptions.find(colOpt => colOpt.name === name && colOpt.label === label);
155
+ const opt = this.columnOptions.find((colOpt) => colOpt.name === name && colOpt.label === label);
156
156
 
157
157
  if (opt) {
158
158
  isColVisible = opt.isColVisible;
@@ -188,14 +188,14 @@ export default {
188
188
 
189
189
  // maintain current visibility of cols if they exist already
190
190
  if (this.columnOptions?.length) {
191
- const opt = this.columnOptions.find(colOpt => colOpt.name === label && colOpt.label === label);
191
+ const opt = this.columnOptions.find((colOpt) => colOpt.name === label && colOpt.label === label);
192
192
 
193
193
  if (opt) {
194
194
  res.isColVisible = opt.isColVisible;
195
195
  }
196
196
  }
197
197
 
198
- if (!rowLabels.filter(row => row.label === label).length) {
198
+ if (!rowLabels.filter((row) => row.label === label).length) {
199
199
  rowLabels.push(res);
200
200
  }
201
201
  });
@@ -262,7 +262,7 @@ export default {
262
262
 
263
263
  // cols visibility
264
264
  changeColVisibility(colData) {
265
- const index = this.columnOptions.findIndex(col => col.label === colData.label);
265
+ const index = this.columnOptions.findIndex((col) => col.label === colData.label);
266
266
 
267
267
  if (index !== -1) {
268
268
  this.columnOptions[index].isColVisible = colData.value;
@@ -186,7 +186,7 @@ function columnsToSearchField(columns) {
186
186
  }
187
187
  });
188
188
 
189
- return out.filter(x => !!x);
189
+ return out.filter((x) => !!x);
190
190
  }
191
191
 
192
192
  const ipLike = /^[0-9a-f\.:]+$/i;
@@ -487,10 +487,10 @@ export default {
487
487
 
488
488
  columns() {
489
489
  // Filter out any columns that are too heavy to show for large page sizes
490
- const out = this.headers.slice().filter(c => !c.maxPageSize || (c.maxPageSize && c.maxPageSize >= this.perPage));
490
+ const out = this.headers.slice().filter((c) => !c.maxPageSize || (c.maxPageSize && c.maxPageSize >= this.perPage));
491
491
 
492
492
  if ( this.groupBy ) {
493
- const entry = out.find(x => x.name === this.groupBy);
493
+ const entry = out.find((x) => x.name === this.groupBy);
494
494
 
495
495
  if ( entry ) {
496
496
  removeObject(out, entry);
@@ -498,10 +498,10 @@ export default {
498
498
  }
499
499
 
500
500
  // If all columns have a width, try to remove it from a column that can be variable (name)
501
- const missingWidth = out.find(x => !x.width);
501
+ const missingWidth = out.find((x) => !x.width);
502
502
 
503
503
  if ( !missingWidth ) {
504
- const variable = out.find(x => x.canBeVariable);
504
+ const variable = out.find((x) => x.canBeVariable);
505
505
 
506
506
  if ( variable ) {
507
507
  const neu = clone(variable);
@@ -547,13 +547,13 @@ export default {
547
547
 
548
548
  // Do we have any live columns?
549
549
  hasLiveColumns() {
550
- const liveColumns = this.columns.find(c => c.formatter?.startsWith('Live') || c.liveUpdates);
550
+ const liveColumns = this.columns.find((c) => c.formatter?.startsWith('Live') || c.liveUpdates);
551
551
 
552
552
  return !!liveColumns;
553
553
  },
554
554
 
555
555
  hasDelayedColumns() {
556
- const delaeydColumns = this.columns.find(c => c.delayLoading);
556
+ const delaeydColumns = this.columns.find((c) => c.delayLoading);
557
557
 
558
558
  return !!delaeydColumns;
559
559
  },
@@ -683,7 +683,7 @@ export default {
683
683
  return;
684
684
  }
685
685
 
686
- const delayedColumns = this.$refs.column.filter(c => c.startDelayedLoading && !c.__delayedLoading);
686
+ const delayedColumns = this.$refs.column.filter((c) => c.startDelayedLoading && !c.__delayedLoading);
687
687
  // We add 100 pixels here - so we will render the delayed columns for a few extra rows below what is visible
688
688
  // This way if you scroll slowly, you won't see the columns being loaded
689
689
  const clientHeight = (window.innerHeight || document.documentElement.clientHeight) + 100;
@@ -718,7 +718,7 @@ export default {
718
718
  }
719
719
 
720
720
  const clientHeight = window.innerHeight || document.documentElement.clientHeight;
721
- const liveColumns = this.$refs.column.filter(c => !!c.liveUpdate);
721
+ const liveColumns = this.$refs.column.filter((c) => !!c.liveUpdate);
722
722
  const now = day();
723
723
  let next = Number.MAX_SAFE_INTEGER;
724
724
 
@@ -805,7 +805,7 @@ export default {
805
805
  return false;
806
806
  }
807
807
 
808
- const matchingResourceAction = resource.availableActions.find(a => a.action === this.actionOfInterest.action);
808
+ const matchingResourceAction = resource.availableActions.find((a) => a.action === this.actionOfInterest.action);
809
809
 
810
810
  return matchingResourceAction?.enabled;
811
811
  },