@rancher/shell 3.0.0-rc.2 → 3.0.0-rc.4

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 (323) hide show
  1. package/assets/styles/base/_variables.scss +12 -4
  2. package/assets/styles/global/_layout.scss +10 -1
  3. package/assets/styles/global/_tooltip.scss +13 -1
  4. package/assets/translations/en-us.yaml +62 -26
  5. package/assets/translations/zh-hans.yaml +6 -5
  6. package/chart/istio.vue +2 -0
  7. package/chart/monitoring/ClusterSelector.vue +2 -0
  8. package/chart/monitoring/StorageClassSelector.vue +4 -1
  9. package/chart/monitoring/index.vue +2 -0
  10. package/chart/rancher-backup/S3.vue +2 -0
  11. package/chart/rancher-backup/index.vue +2 -0
  12. package/cloud-credential/aws.vue +2 -0
  13. package/cloud-credential/azure.vue +2 -0
  14. package/cloud-credential/digitalocean.vue +2 -0
  15. package/cloud-credential/gcp.vue +2 -0
  16. package/cloud-credential/generic.vue +2 -0
  17. package/cloud-credential/harvester.vue +2 -0
  18. package/cloud-credential/linode.vue +2 -0
  19. package/cloud-credential/pnap.vue +2 -0
  20. package/cloud-credential/s3.vue +2 -0
  21. package/cloud-credential/vmwarevsphere.vue +2 -0
  22. package/components/ActionDropdown.vue +1 -1
  23. package/components/ActionMenu.vue +4 -1
  24. package/components/AppModal.vue +4 -1
  25. package/components/ButtonDropdown.vue +3 -0
  26. package/components/ButtonGroup.vue +2 -0
  27. package/components/ButtonMultiAction.vue +41 -0
  28. package/components/Carousel.vue +3 -0
  29. package/components/CodeMirror.vue +88 -71
  30. package/components/Collapse.vue +4 -1
  31. package/components/CollapsibleCard.vue +4 -1
  32. package/components/ContainerResourceLimit.vue +2 -0
  33. package/components/CopyCode.vue +8 -4
  34. package/components/CopyToClipboardText.vue +2 -0
  35. package/components/CruResource.vue +61 -61
  36. package/components/CruResourceFooter.vue +2 -0
  37. package/components/Dialog.vue +2 -0
  38. package/components/DisableAuthProviderModal.vue +4 -1
  39. package/components/EmberPage.vue +2 -0
  40. package/components/ExplorerProjectsNamespaces.vue +11 -8
  41. package/components/GlobalRoleBindings.vue +2 -0
  42. package/components/Import.vue +2 -1
  43. package/components/InputOrDisplay.vue +23 -18
  44. package/components/Loading.vue +4 -1
  45. package/components/LocaleSelector.vue +4 -2
  46. package/components/Markdown.vue +2 -0
  47. package/components/ModalWithCard.vue +2 -0
  48. package/components/MoveModal.vue +2 -0
  49. package/components/PodSecurityAdmission.vue +2 -0
  50. package/components/Questions/Array.vue +2 -0
  51. package/components/Questions/Boolean.vue +2 -0
  52. package/components/Questions/CloudCredential.vue +2 -0
  53. package/components/Questions/Enum.vue +2 -0
  54. package/components/Questions/Float.vue +2 -0
  55. package/components/Questions/Int.vue +2 -0
  56. package/components/Questions/QuestionMap.vue +4 -1
  57. package/components/Questions/Radio.vue +2 -0
  58. package/components/Questions/Reference.vue +2 -0
  59. package/components/Questions/String.vue +2 -0
  60. package/components/Questions/Yaml.vue +2 -0
  61. package/components/Questions/index.vue +2 -0
  62. package/components/ResourceCancelModal.vue +2 -0
  63. package/components/ResourceDetail/Masthead.vue +4 -3
  64. package/components/ResourceDetail/index.vue +17 -15
  65. package/components/ResourceTable.vue +2 -0
  66. package/components/ResourceYaml.vue +2 -0
  67. package/components/SelectIconGrid.vue +2 -0
  68. package/components/SimpleBox.vue +2 -0
  69. package/components/SortableTable/THead.vue +2 -0
  70. package/components/SortableTable/index.vue +17 -20
  71. package/components/StatusTable.vue +2 -0
  72. package/components/Tabbed/Tab.vue +2 -0
  73. package/components/Tabbed/index.vue +2 -0
  74. package/components/Wizard.vue +4 -0
  75. package/components/YamlEditor.vue +3 -1
  76. package/components/__tests__/ButtonMultiAction.test.ts +31 -0
  77. package/components/__tests__/ContainerResourceLimit.test.ts +35 -0
  78. package/components/auth/RoleDetailEdit.vue +2 -0
  79. package/components/auth/SelectPrincipal.vue +3 -1
  80. package/components/auth/login/ldap.vue +2 -0
  81. package/components/fleet/FleetStatus.vue +2 -2
  82. package/components/form/ArrayList.vue +16 -1
  83. package/components/form/ArrayListSelect.vue +2 -0
  84. package/components/form/ChangePassword.vue +2 -0
  85. package/components/form/ColorInput.vue +2 -0
  86. package/components/form/Command.vue +2 -0
  87. package/components/form/FileImageSelector.vue +2 -0
  88. package/components/form/FileSelector.vue +2 -0
  89. package/components/form/Footer.vue +2 -0
  90. package/components/form/GitPicker.vue +1 -0
  91. package/components/form/HealthCheck.vue +5 -3
  92. package/components/form/HookOption.vue +22 -18
  93. package/components/form/InputWithSelect.vue +3 -1
  94. package/components/form/KeyValue.vue +2 -0
  95. package/components/form/LabeledSelect.vue +13 -3
  96. package/components/form/Labels.vue +11 -13
  97. package/components/form/LifecycleHooks.vue +2 -0
  98. package/components/form/MatchExpressions.vue +2 -0
  99. package/components/form/Members/ClusterPermissionsEditor.vue +2 -0
  100. package/components/form/Members/MembershipEditor.vue +2 -0
  101. package/components/form/NameNsDescription.vue +4 -1
  102. package/components/form/Networking.vue +2 -0
  103. package/components/form/NodeAffinity.vue +4 -1
  104. package/components/form/Password.vue +2 -0
  105. package/components/form/PlusMinus.vue +2 -0
  106. package/components/form/PodAffinity.vue +4 -1
  107. package/components/form/Ports.vue +2 -0
  108. package/components/form/Probe.vue +8 -4
  109. package/components/form/ResourceQuota/NamespaceRow.vue +2 -0
  110. package/components/form/ResourceQuota/Project.vue +2 -0
  111. package/components/form/ResourceQuota/ProjectRow.vue +2 -0
  112. package/components/form/RuleSelector.vue +2 -0
  113. package/components/form/SecretSelector.vue +1 -0
  114. package/components/form/Security.vue +5 -2
  115. package/components/form/Select.vue +2 -1
  116. package/components/form/SelectOrCreateAuthSecret.vue +2 -0
  117. package/components/form/ServiceNameSelect.vue +2 -0
  118. package/components/form/ServicePorts.vue +2 -0
  119. package/components/form/ShellInput.vue +2 -0
  120. package/components/form/SimpleSecretSelector.vue +2 -0
  121. package/components/form/Taints.vue +2 -0
  122. package/components/form/Tolerations.vue +2 -0
  123. package/components/form/UnitInput.vue +2 -0
  124. package/components/form/ValueFromResource.vue +2 -0
  125. package/components/form/WorkloadPorts.vue +5 -3
  126. package/components/form/__tests__/HookOption.test.ts +28 -0
  127. package/components/form/__tests__/LabeledSelect.test.ts +42 -0
  128. package/components/form/__tests__/Probe.test.ts +12 -0
  129. package/components/form/__tests__/UnitInput.test.ts +68 -0
  130. package/components/formatter/AppSummaryGraph.vue +2 -2
  131. package/components/formatter/FleetSummaryGraph.vue +2 -2
  132. package/components/formatter/InternalExternalIP.vue +13 -15
  133. package/components/formatter/MachineSummaryGraph.vue +2 -2
  134. package/components/formatter/Scale.vue +2 -2
  135. package/components/nav/Header.vue +17 -141
  136. package/components/nav/HeaderPageActionMenu.vue +173 -0
  137. package/components/nav/Jump.vue +2 -0
  138. package/components/nav/NamespaceFilter.vue +7 -2
  139. package/components/nav/TopLevelMenu.vue +4 -4
  140. package/components/nav/Type.vue +28 -2
  141. package/components/nav/WindowManager/ContainerLogs.vue +2 -1
  142. package/components/nav/WindowManager/ContainerShell.vue +6 -12
  143. package/components/nav/WindowManager/index.vue +2 -0
  144. package/components/nav/__tests__/Type.test.ts +68 -24
  145. package/composables/useClickOutside.ts +81 -0
  146. package/composables/useUserRetentionValidation.test.ts +1 -1
  147. package/composables/useUserRetentionValidation.ts +1 -1
  148. package/config/product/cis.js +4 -3
  149. package/config/product/manager.js +1 -0
  150. package/config/router/routes.js +1 -1
  151. package/config/table-headers.js +0 -10
  152. package/config/uiplugins.js +186 -143
  153. package/config/version.js +10 -0
  154. package/core/{plugin-helpers.js → plugin-helpers.ts} +25 -7
  155. package/core/plugin-routes.ts +5 -6
  156. package/core/plugin.ts +30 -3
  157. package/detail/autoscaling.horizontalpodautoscaler/index.vue +2 -0
  158. package/detail/configmap.vue +2 -0
  159. package/detail/fleet.cattle.io.cluster.vue +2 -0
  160. package/detail/fleet.cattle.io.clustergroup.vue +2 -0
  161. package/detail/fleet.cattle.io.gitrepo.vue +2 -0
  162. package/detail/harvesterhci.io.management.cluster.vue +2 -0
  163. package/detail/helm.cattle.io.projecthelmchart.vue +6 -8
  164. package/detail/management.cattle.io.roletemplate.vue +4 -4
  165. package/detail/management.cattle.io.user.vue +2 -0
  166. package/detail/namespace.vue +2 -0
  167. package/detail/networking.k8s.io.ingress.vue +1 -0
  168. package/detail/node.vue +2 -0
  169. package/detail/provisioning.cattle.io.cluster.vue +2 -0
  170. package/detail/secret.vue +2 -0
  171. package/detail/service.vue +2 -0
  172. package/detail/workload/index.vue +1 -1
  173. package/dialog/AddClusterMemberDialog.vue +2 -0
  174. package/dialog/AddCustomBadgeDialog.vue +3 -1
  175. package/dialog/AddProjectMemberDialog.vue +2 -0
  176. package/dialog/AddonConfigConfirmationDialog.vue +2 -0
  177. package/dialog/DeactivateDriverDialog.vue +2 -0
  178. package/dialog/DiagnosticTimingsDialog.vue +2 -0
  179. package/dialog/DrainNode.vue +2 -0
  180. package/dialog/ForceMachineRemoveDialog.vue +2 -0
  181. package/dialog/GenericPrompt.vue +2 -0
  182. package/dialog/RollbackWorkloadDialog.vue +2 -0
  183. package/dialog/RotateCertificatesDialog.vue +2 -0
  184. package/dialog/RotateEncryptionKeyDialog.vue +2 -0
  185. package/dialog/SaveAsRKETemplateDialog.vue +2 -0
  186. package/dialog/ScaleMachineDownDialog.vue +2 -0
  187. package/dialog/ScalePoolDownDialog.vue +2 -0
  188. package/dialog/SloDialog.vue +2 -0
  189. package/edit/auth/ldap/config.vue +282 -280
  190. package/edit/auth/saml.vue +1 -4
  191. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +3 -3
  192. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -2
  193. package/edit/catalog.cattle.io.clusterrepo.vue +2 -0
  194. package/edit/cis.cattle.io.clusterscan.vue +115 -97
  195. package/edit/cis.cattle.io.clusterscanprofile.vue +29 -31
  196. package/edit/cloudcredential.vue +2 -0
  197. package/edit/constraints.gatekeeper.sh.constraint/MatchKinds.vue +2 -0
  198. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +2 -0
  199. package/edit/constraints.gatekeeper.sh.constraint/Scope.vue +2 -0
  200. package/edit/constraints.gatekeeper.sh.constraint/index.vue +2 -0
  201. package/edit/fleet.cattle.io.cluster.vue +2 -0
  202. package/edit/fleet.cattle.io.clustergroup.vue +4 -1
  203. package/edit/fleet.cattle.io.gitrepo.vue +2 -0
  204. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +2 -0
  205. package/edit/logging-flow/Match.vue +2 -0
  206. package/edit/logging-flow/index.vue +10 -8
  207. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  208. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  209. package/edit/logging.banzaicloud.io.output/providers/redis.vue +3 -3
  210. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -0
  211. package/edit/management.cattle.io.fleetworkspace.vue +4 -1
  212. package/edit/management.cattle.io.project.vue +2 -0
  213. package/edit/management.cattle.io.roletemplate.vue +1 -1
  214. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -0
  215. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -0
  216. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -0
  217. package/edit/namespace.vue +1 -0
  218. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -0
  219. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -1
  220. package/edit/networking.k8s.io.ingress/Rule.vue +1 -0
  221. package/edit/networking.k8s.io.ingress/RulePath.vue +20 -23
  222. package/edit/networking.k8s.io.ingress/index.vue +1 -0
  223. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +1 -1
  224. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -0
  225. package/edit/node.vue +2 -0
  226. package/edit/persistentvolumeclaim.vue +1 -0
  227. package/edit/policy.poddisruptionbudget.vue +3 -1
  228. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +2 -0
  229. package/edit/provisioning.cattle.io.cluster/Labels.vue +2 -0
  230. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -0
  231. package/edit/provisioning.cattle.io.cluster/import.vue +2 -0
  232. package/edit/provisioning.cattle.io.cluster/index.vue +2 -2
  233. package/edit/provisioning.cattle.io.cluster/rke2.vue +38 -13
  234. package/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest.vue +49 -0
  235. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +32 -65
  236. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -0
  237. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +2 -0
  238. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -0
  239. package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +2 -0
  240. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +2 -0
  241. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +2 -0
  242. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -0
  243. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +31 -32
  244. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/DrainOptions.vue +2 -0
  245. package/edit/resources.cattle.io.backup.vue +97 -99
  246. package/edit/resources.cattle.io.restore.vue +96 -98
  247. package/edit/secret/index.vue +2 -0
  248. package/edit/service.vue +12 -3
  249. package/edit/ui.cattle.io.navlink.vue +1 -0
  250. package/edit/workload/Job.vue +3 -2
  251. package/edit/workload/Upgrading.vue +1 -0
  252. package/edit/workload/__tests__/index.test.ts +9 -7
  253. package/edit/workload/index.vue +33 -16
  254. package/edit/workload/storage/ContainerMountPaths.vue +37 -97
  255. package/edit/workload/storage/awsElasticBlockStore.vue +1 -1
  256. package/edit/workload/storage/azureDisk.vue +1 -1
  257. package/edit/workload/storage/csi/driver.longhorn.io.vue +2 -0
  258. package/edit/workload/storage/ephemeralVolume/index.vue +2 -0
  259. package/edit/workload/storage/gcePersistentDisk.vue +1 -1
  260. package/edit/workload/storage/index.vue +38 -22
  261. package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -0
  262. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -0
  263. package/edit/workload/storage/vsphereVolume.vue +1 -1
  264. package/initialize/install-components.js +0 -12
  265. package/initialize/install-plugins.js +6 -7
  266. package/machine-config/azure.vue +2 -0
  267. package/machine-config/generic.vue +2 -0
  268. package/machine-config/vmwarevsphere.vue +2 -0
  269. package/mixins/fetch.client.js +2 -1
  270. package/mixins/resource-manager.js +1 -1
  271. package/models/cis.cattle.io.clusterscan.js +17 -16
  272. package/models/cis.cattle.io.clusterscanprofile.js +17 -0
  273. package/models/management.cattle.io.user.js +3 -3
  274. package/models/provisioning.cattle.io.cluster.js +2 -1
  275. package/models/steve-schema.ts +1 -1
  276. package/models/workload.js +2 -1
  277. package/package.json +6 -8
  278. package/pages/auth/login.vue +2 -1
  279. package/pages/c/_cluster/apps/charts/chart.vue +3 -1
  280. package/pages/c/_cluster/apps/charts/install.vue +5 -56
  281. package/pages/c/_cluster/auth/user.retention/index.vue +1 -1
  282. package/pages/c/_cluster/fleet/index.vue +0 -1
  283. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +1 -0
  284. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +2 -0
  285. package/pages/c/_cluster/settings/performance.vue +2 -2
  286. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +45 -52
  287. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -0
  288. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +2 -0
  289. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +2 -0
  290. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +6 -3
  291. package/pages/c/_cluster/uiplugins/InstallDialog.vue +2 -0
  292. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +7 -17
  293. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +2 -0
  294. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +3 -6
  295. package/pages/c/_cluster/uiplugins/index.vue +93 -92
  296. package/pages/index.vue +10 -2
  297. package/pkg/vue.config.js +2 -0
  298. package/plugins/i18n.js +1 -1
  299. package/plugins/plugin.js +27 -19
  300. package/plugins/version.js +3 -13
  301. package/promptRemove/management.cattle.io.roletemplate.vue +3 -5
  302. package/promptRemove/pod.vue +2 -0
  303. package/rancher-components/Form/LabeledInput/LabeledInput.vue +14 -8
  304. package/rancher-components/Form/Radio/RadioButton.vue +0 -1
  305. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +17 -9
  306. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +4 -33
  307. package/rancher-components/StringList/StringList.vue +6 -15
  308. package/scripts/extension/bundle +1 -1
  309. package/scripts/extension/publish +174 -99
  310. package/store/catalog.js +0 -26
  311. package/store/growl.js +8 -5
  312. package/store/type-map.js +3 -2
  313. package/utils/cluster.js +9 -0
  314. package/utils/versions.ts +39 -0
  315. package/vue.config.js +5 -0
  316. package/components/form/PodSecurity.vue +0 -168
  317. package/components/formatter/Weight.vue +0 -147
  318. package/components/nuxt/nuxt-build-indicator.vue +0 -170
  319. package/components/nuxt/nuxt-child.js +0 -52
  320. package/components/nuxt/nuxt-error.vue +0 -128
  321. package/components/nuxt/nuxt-link.client.js +0 -17
  322. package/components/nuxt/nuxt-loading.vue +0 -165
  323. package/composables/useStore.ts +0 -16
@@ -3,7 +3,10 @@ import { KEYMAP } from '@shell/store/prefs';
3
3
  import { _EDIT, _VIEW } from '@shell/config/query-params';
4
4
 
5
5
  export default {
6
- name: 'CodeMirror',
6
+ name: 'CodeMirror',
7
+
8
+ emits: ['onReady', 'onInput', 'onChanges', 'onFocus'],
9
+
7
10
  props: {
8
11
  /**
9
12
  * Sets the edit mode for Text Area.
@@ -57,7 +60,7 @@ export default {
57
60
  theme: `base16-${ theme }`,
58
61
  lineNumbers: true,
59
62
  line: true,
60
- styleActiveLine: true,
63
+ styleActiveLine: false,
61
64
  lineWrapping: true,
62
65
  foldGutter: true,
63
66
  styleSelectedText: true,
@@ -66,6 +69,7 @@ export default {
66
69
 
67
70
  if (this.asTextArea) {
68
71
  out.lineNumbers = false;
72
+ out.foldGutter = false;
69
73
  out.tabSize = 0;
70
74
  out.extraKeys = { Tab: false };
71
75
  }
@@ -101,10 +105,9 @@ export default {
101
105
  },
102
106
 
103
107
  methods: {
104
-
105
108
  focus() {
106
109
  if ( this.$refs.codeMirrorRef ) {
107
- this.$refs.codeMirrorRef.codemirror.focus();
110
+ this.$refs.codeMirrorRef.cminstance.focus();
108
111
  }
109
112
  },
110
113
 
@@ -140,7 +143,7 @@ export default {
140
143
 
141
144
  updateValue(value) {
142
145
  if ( this.$refs.codeMirrorRef ) {
143
- this.$refs.codeMirrorRef.codemirror.doc.setValue(value);
146
+ this.$refs.codeMirrorRef.cminstance.doc.setValue(value);
144
147
  }
145
148
  },
146
149
 
@@ -178,6 +181,7 @@ export default {
178
181
  :value="value"
179
182
  :options="combinedOptions"
180
183
  :disabled="isDisabled"
184
+ :original-style="true"
181
185
  @ready="onReady"
182
186
  @input="onInput"
183
187
  @changes="onChanges"
@@ -194,72 +198,8 @@ export default {
194
198
  <style lang="scss">
195
199
  $code-mirror-animation-time: 0.1s;
196
200
 
197
- .codemirror-container {
198
- z-index: 0;
199
-
200
- // Keyboard mapping overlap
201
- .keymap.overlay {
202
- position: absolute;
203
- display: flex;
204
- top: 7px;
205
- right: 7px;
206
- z-index: 1;
207
- cursor: pointer;
208
-
209
- .keymap-indicator {
210
- width: 48px;
211
- height: 32px;
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- border: 1px solid transparent;
216
- color: var(--darker);
217
- background-color: var(--overlay-bg);
218
- font-size: 12px;
219
-
220
- .close-indicator {
221
- width: 0;
222
-
223
- .icon-close {
224
- color: var(--primary);
225
- opacity: 0;
226
- }
227
- }
228
-
229
- .keymap-icon {
230
- font-size: 24px;
231
- opacity: 0.8;
232
- transition: margin-right $code-mirror-animation-time ease-in-out;
233
- }
234
-
235
- &:hover {
236
- border: 1px solid var(--primary);
237
- border-radius: var(--border-radius);;
238
-
239
- .close-indicator {
240
- margin-left: -6px;
241
- width: auto;
242
-
243
- .icon-close {
244
- opacity: 1;
245
- transition: opacity $code-mirror-animation-time ease-in-out $code-mirror-animation-time; // Only animate when being shown
246
- }
247
- }
248
-
249
- .keymap-icon {
250
- opacity: 0.6;
251
- margin-right: 10px;
252
- }
253
- }
254
- }
255
- }
256
-
257
- .vue-codemirror .CodeMirror {
258
- height: initial;
259
- background: none
260
- }
261
-
262
- &.as-text-area {
201
+ .code-mirror {
202
+ &.as-text-area .codemirror-container{
263
203
  min-height: 40px;
264
204
  position: relative;
265
205
  display: block;
@@ -345,6 +285,83 @@ export default {
345
285
  color: var(--primary-text);
346
286
  background-color: var(--primary);
347
287
  }
288
+
289
+ .CodeMirror-gutters .CodeMirror-foldgutter:empty {
290
+ display: none;
291
+ }
348
292
  }
349
293
  }
294
+
295
+ .code-mirror .codemirror-container {
296
+ z-index: 0;
297
+ font-size: inherit !important;
298
+
299
+ // Keyboard mapping overlap
300
+ .keymap.overlay {
301
+ position: absolute;
302
+ display: flex;
303
+ top: 7px;
304
+ right: 7px;
305
+ z-index: 1;
306
+ cursor: pointer;
307
+
308
+ .keymap-indicator {
309
+ width: 48px;
310
+ height: 32px;
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: center;
314
+ border: 1px solid transparent;
315
+ color: var(--darker);
316
+ background-color: var(--overlay-bg);
317
+ font-size: 12px;
318
+
319
+ .close-indicator {
320
+ width: 0;
321
+
322
+ .icon-close {
323
+ color: var(--primary);
324
+ opacity: 0;
325
+ }
326
+ }
327
+
328
+ .keymap-icon {
329
+ font-size: 24px;
330
+ opacity: 0.8;
331
+ transition: margin-right $code-mirror-animation-time ease-in-out;
332
+ }
333
+
334
+ &:hover {
335
+ border: 1px solid var(--primary);
336
+ border-radius: var(--border-radius);;
337
+
338
+ .close-indicator {
339
+ margin-left: -6px;
340
+ width: auto;
341
+
342
+ .icon-close {
343
+ opacity: 1;
344
+ transition: opacity $code-mirror-animation-time ease-in-out $code-mirror-animation-time; // Only animate when being shown
345
+ }
346
+ }
347
+
348
+ .keymap-icon {
349
+ opacity: 0.6;
350
+ margin-right: 10px;
351
+ }
352
+ }
353
+ }
354
+ }
355
+
356
+ //rm no longer extant selector
357
+ .CodeMirror {
358
+ height: initial;
359
+ background: none
360
+ }
361
+
362
+ .CodeMirror-gutters {
363
+ background: inherit;
364
+ }
365
+
366
+ }
350
367
  </style>
@@ -1,6 +1,9 @@
1
1
  <script>
2
2
  export default {
3
- name: 'Collapse',
3
+ name: 'Collapse',
4
+
5
+ emits: ['update:open'],
6
+
4
7
  props: {
5
8
  open: {
6
9
  type: Boolean,
@@ -1,6 +1,9 @@
1
1
  <script>
2
2
  export default {
3
- name: 'CollapsibleCard',
3
+ name: 'CollapsibleCard',
4
+
5
+ emits: ['toggleCollapse', 'titleClick'],
6
+
4
7
  props: {
5
8
  isCollapsed: {
6
9
  type: Boolean,
@@ -6,6 +6,8 @@ import { cleanUp } from '@shell/utils/object';
6
6
  import { _VIEW } from '@shell/config/query-params';
7
7
 
8
8
  export default {
9
+ emits: ['update:value'],
10
+
9
11
  components: { UnitInput },
10
12
 
11
13
  props: {
@@ -9,15 +9,19 @@ function flatten(node) {
9
9
  } else if ( isArray(node) ) {
10
10
  return node.map(flatten).join(' ');
11
11
  } else if ( node.children ) {
12
- return node.children.map(flatten).join(' ');
13
- } else if ( node.child ) {
14
- return flatten(node.child);
12
+ if ( isArray(node.children) ) {
13
+ return node.children.map(flatten).join(' ');
14
+ } else {
15
+ return node.children;
16
+ }
15
17
  } else {
16
18
  return '';
17
19
  }
18
20
  }
19
21
 
20
22
  export default {
23
+ emits: ['copied', 'error'],
24
+
21
25
  data() {
22
26
  return { copied: false };
23
27
  },
@@ -27,7 +31,7 @@ export default {
27
31
  $event.stopPropagation();
28
32
  $event.preventDefault();
29
33
 
30
- const content = flatten(this.$slots.default).trim();
34
+ const content = flatten(this.$slots.default()).trim();
31
35
 
32
36
  copyTextToClipboard(content).then(() => {
33
37
  this.copied = true;
@@ -2,6 +2,8 @@
2
2
  import { copyTextToClipboard } from '@shell/utils/clipboard';
3
3
  import { exceptionToErrorsArray } from '@shell/utils/error';
4
4
  export default {
5
+ emits: ['error'],
6
+
5
7
  props: {
6
8
  text: {
7
9
  type: String,
@@ -23,6 +23,8 @@ export default {
23
23
 
24
24
  name: 'CruResource',
25
25
 
26
+ emits: ['select-type', 'error', 'cancel', 'finish'],
27
+
26
28
  components: {
27
29
  AsyncButton,
28
30
  Banner,
@@ -587,76 +589,74 @@ export default {
587
589
  </template>
588
590
  </template>
589
591
  <template #controlsContainer="{showPrevious, next, back, activeStep, canNext, activeStepIndex, visibleSteps}">
590
- <template name="form-footer">
591
- <CruResourceFooter
592
- class="cru__footer"
593
- :mode="mode"
594
- :is-form="showAsForm"
595
- :show-cancel="showCancel"
596
- @cancel-confirmed="confirmCancel"
592
+ <CruResourceFooter
593
+ class="cru__footer"
594
+ :mode="mode"
595
+ :is-form="showAsForm"
596
+ :show-cancel="showCancel"
597
+ @cancel-confirmed="confirmCancel"
598
+ >
599
+ <!-- Pass down templates provided by the caller -->
600
+ <template
601
+ v-for="(_, slot) of $slots"
602
+ #[slot]="scope"
603
+ :key="slot"
597
604
  >
598
- <!-- Pass down templates provided by the caller -->
605
+ <template v-if="shouldProvideSlot(slot)">
606
+ <slot
607
+ :name="slot"
608
+ v-bind="scope"
609
+ />
610
+ </template>
611
+ </template>
612
+ <div class="controls-steps">
613
+ <button
614
+ v-if="showYaml"
615
+ type="button"
616
+ class="btn role-secondary"
617
+ @click="showPreviewYaml"
618
+ >
619
+ <t k="cruResource.previewYaml" />
620
+ </button>
599
621
  <template
600
- v-for="(_, slot) of $slots"
601
- #[slot]="scope"
602
- :key="slot"
622
+ v-if="showPrevious"
623
+ name="back"
603
624
  >
604
- <template v-if="shouldProvideSlot(slot)">
605
- <slot
606
- :name="slot"
607
- v-bind="scope"
608
- />
609
- </template>
610
- </template>
611
- <div class="controls-steps">
612
625
  <button
613
- v-if="showYaml"
614
626
  type="button"
615
627
  class="btn role-secondary"
616
- @click="showPreviewYaml"
628
+ @click="back()"
617
629
  >
618
- <t k="cruResource.previewYaml" />
630
+ <t k="wizard.previous" />
619
631
  </button>
620
- <template
621
- v-if="showPrevious"
622
- name="back"
623
- >
624
- <button
625
- type="button"
626
- class="btn role-secondary"
627
- @click="back()"
628
- >
629
- <t k="wizard.previous" />
630
- </button>
631
- </template>
632
- <template
633
- v-if="activeStepIndex === visibleSteps.length-1"
634
- name="finish"
635
- >
636
- <AsyncButton
637
- v-if="!showSubtypeSelection && !isView"
638
- ref="save"
639
- :disabled="!activeStep.ready"
640
- :mode="finishButtonMode || mode"
641
- @click="$emit('finish', $event)"
642
- />
643
- </template>
644
- <template
645
- v-else
646
- name="next"
632
+ </template>
633
+ <template
634
+ v-if="activeStepIndex === visibleSteps.length-1"
635
+ name="finish"
636
+ >
637
+ <AsyncButton
638
+ v-if="!showSubtypeSelection && !isView"
639
+ ref="save"
640
+ :disabled="!activeStep.ready"
641
+ :mode="finishButtonMode || mode"
642
+ @click="$emit('finish', $event)"
643
+ />
644
+ </template>
645
+ <template
646
+ v-else
647
+ name="next"
648
+ >
649
+ <button
650
+ :disabled="!canNext"
651
+ type="button"
652
+ class="btn role-primary"
653
+ @click="next()"
647
654
  >
648
- <button
649
- :disabled="!canNext"
650
- type="button"
651
- class="btn role-primary"
652
- @click="next()"
653
- >
654
- <t k="wizard.next" />
655
- </button>
656
- </template>
657
- </div>
658
- </CruResourceFooter>
659
- </template>
655
+ <t k="wizard.next" />
656
+ </button>
657
+ </template>
658
+ </div>
659
+ </CruResourceFooter>
660
660
  </template>
661
661
  </Wizard>
662
662
  </div>
@@ -6,6 +6,8 @@ import ResourceCancelModal from '@shell/components/ResourceCancelModal';
6
6
  import { _VIEW } from '@shell/config/query-params';
7
7
 
8
8
  export default {
9
+ emits: ['cancel-confirmed', 'finish'],
10
+
9
11
  components: { AsyncButton, ResourceCancelModal },
10
12
  props: {
11
13
  mode: {
@@ -3,6 +3,8 @@ import AsyncButton from '@shell/components/AsyncButton';
3
3
  import AppModal from '@shell/components/AppModal.vue';
4
4
 
5
5
  export default {
6
+ emits: ['okay', 'closed'],
7
+
6
8
  components: { AsyncButton, AppModal },
7
9
 
8
10
  props: {
@@ -3,7 +3,10 @@ import { Card } from '@components/Card';
3
3
  import AppModal from '@shell/components/AppModal.vue';
4
4
 
5
5
  export default {
6
- name: 'PromptRemove',
6
+ name: 'PromptRemove',
7
+
8
+ emits: ['disable'],
9
+
7
10
  components: { Card, AppModal },
8
11
  props: {
9
12
  /**
@@ -43,6 +43,8 @@ const INTERCEPTS = {
43
43
  };
44
44
 
45
45
  export default {
46
+ emits: ['before-nav'],
47
+
46
48
  components: { Loading },
47
49
 
48
50
  props: {
@@ -10,6 +10,7 @@ import ExtensionPanel from '@shell/components/ExtensionPanel';
10
10
  import Masthead from '@shell/components/ResourceList/Masthead';
11
11
  import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES } from '@shell/store/prefs';
12
12
  import MoveModal from '@shell/components/MoveModal';
13
+ import ButtonMultiAction from '@shell/components/ButtonMultiAction.vue';
13
14
 
14
15
  import { NAMESPACE_FILTER_ALL_ORPHANS } from '@shell/utils/namespace-filter';
15
16
  import ResourceFetch from '@shell/mixins/resource-fetch';
@@ -18,7 +19,11 @@ import DOMPurify from 'dompurify';
18
19
  export default {
19
20
  name: 'ListProjectNamespace',
20
21
  components: {
21
- ExtensionPanel, Masthead, MoveModal, ResourceTable
22
+ ExtensionPanel,
23
+ Masthead,
24
+ MoveModal,
25
+ ResourceTable,
26
+ ButtonMultiAction,
22
27
  },
23
28
  mixins: [ResourceFetch],
24
29
 
@@ -430,14 +435,12 @@ export default {
430
435
  >
431
436
  {{ t('projectNamespaces.createNamespace') }}
432
437
  </router-link>
433
- <button
434
- type="button"
435
- class="project-action btn btn-sm role-multi-action actions mr-10"
436
- :class="{invisible: !showProjectActionButton(group.group)}"
438
+ <ButtonMultiAction
439
+ class="project-action mr-10"
440
+ :borderless="true"
441
+ :invisible="!showProjectActionButton(group.group)"
437
442
  @click="showProjectAction($event, group.group)"
438
- >
439
- <i class="icon icon-actions" />
440
- </button>
443
+ />
441
444
  </div>
442
445
  </div>
443
446
  </template>
@@ -15,6 +15,8 @@ import { Card } from '@components/Card';
15
15
  * Display checkboxes for each global role, checked for given user or principal (group). Can save changes.
16
16
  */
17
17
  export default {
18
+ emits: ['hasChanges', 'canLogIn', 'changed'],
19
+
18
20
  components: {
19
21
  Checkbox,
20
22
  Loading,
@@ -14,6 +14,8 @@ import { NAMESPACE } from '@shell/config/types';
14
14
  import { NAME as NAME_COL, TYPE, NAMESPACE as NAMESPACE_COL, AGE } from '@shell/config/table-headers';
15
15
 
16
16
  export default {
17
+ emits: ['close'],
18
+
17
19
  components: {
18
20
  AsyncButton,
19
21
  Banner,
@@ -140,7 +142,6 @@ export default {
140
142
  <div class="col span-6">
141
143
  <LabeledSelect
142
144
  :value="defaultNamespace"
143
- class="pull-right"
144
145
  :options="namespaceOptions"
145
146
  label-key="import.defaultNamespace.label"
146
147
  mode="edit"
@@ -1,5 +1,4 @@
1
1
  <script>
2
- import { h, computed } from 'vue';
3
2
  import { _VIEW } from '@shell/config/query-params';
4
3
 
5
4
  export default {
@@ -18,31 +17,37 @@ export default {
18
17
  default: 'edit'
19
18
  }
20
19
  },
21
- setup(props, { slots }) {
22
- const isView = computed(() => props.mode === _VIEW);
20
+ computed: {
21
+ isView() {
22
+ return this.mode === _VIEW;
23
+ },
23
24
 
24
- const displayValue = computed(() => {
25
- if (Array.isArray(props.value) && props.value.length === 0) {
25
+ displayValue() {
26
+ if (Array.isArray(this.value) && this.value.length === 0) {
26
27
  return '';
27
28
  } else {
28
- return props.value;
29
- }
30
- });
31
-
32
- return () => {
33
- if (isView.value) {
34
- return h('div', { class: 'label' }, [
35
- h('div', { class: 'text-label' }, slots.name ? slots.name : props.name),
36
- h('div', { class: 'value' }, slots.value ? slots.value : displayValue.value)
37
- ]);
38
- } else {
39
- return slots.default;
29
+ return this.value;
40
30
  }
41
- };
31
+ }
42
32
  }
43
33
  };
44
34
  </script>
45
35
 
36
+ <template>
37
+ <div
38
+ v-if="isView"
39
+ class="label"
40
+ >
41
+ <div class="text-label">
42
+ {{ $slots.name || name }}
43
+ </div>
44
+ <div class="value">
45
+ {{ $slots.value || displayValue }}
46
+ </div>
47
+ </div>
48
+ <slot v-else />
49
+ </template>
50
+
46
51
  <style lang="scss" scoped>
47
52
  .label {
48
53
  display: flex;
@@ -68,10 +68,13 @@ export default {
68
68
  left: 0;
69
69
  right: 0;
70
70
  text-align: center;
71
- z-index: z-index('loadingContent');
71
+
72
+ // Covers both default `content` mode, an often used `relative` mode and any other value of mode
73
+ z-index: z-index('loading');
72
74
 
73
75
  &-main-mode {
74
76
  top: var(--header-height);
77
+ z-index: z-index('loadingMain');
75
78
  }
76
79
 
77
80
  &-content-mode {
@@ -52,9 +52,11 @@ export default {
52
52
  <div v-if="mode === 'login'">
53
53
  <div v-if="showLocale">
54
54
  <v-dropdown
55
- popover-class="localeSelector"
55
+ popperClass="localeSelector"
56
56
  placement="top"
57
- trigger="click"
57
+ distance="8"
58
+ skidding="12"
59
+ :triggers="['click']"
58
60
  >
59
61
  <a
60
62
  data-testid="locale-selector"
@@ -2,6 +2,8 @@
2
2
  import Loading from '@shell/components/Loading';
3
3
 
4
4
  export default {
5
+ emits: ['loaded'],
6
+
5
7
  components: { Loading },
6
8
 
7
9
  props: {
@@ -7,6 +7,8 @@ import AppModal from '@shell/components/AppModal.vue';
7
7
  export default {
8
8
  name: 'ModalWithCard',
9
9
 
10
+ emits: ['close', 'finish'],
11
+
10
12
  components: {
11
13
  Card, Banner, AsyncButton, AppModal
12
14
  },
@@ -9,6 +9,8 @@ import Loading from '@shell/components/Loading';
9
9
  import { PROJECT } from '@shell/config/labels-annotations';
10
10
 
11
11
  export default {
12
+ emits: ['moving'],
13
+
12
14
  components: {
13
15
  AsyncButton, Card, LabeledSelect, Loading, AppModal
14
16
  },
@@ -26,6 +26,8 @@ const getExemptionControl = (): PSAExemptionControl => ({
26
26
  });
27
27
 
28
28
  export default defineComponent({
29
+ emits: ['updateLabels', 'updateExemptions'],
30
+
29
31
  components: {
30
32
  Checkbox, LabeledSelect, LabeledInput
31
33
  },