Skip to content

Commit f865af5

Browse files
authored
Merge pull request #223 from aalves08/vue3-elemental
Migrate Elemental to be Vue3 compliant
2 parents 7a26241 + f2f95d4 commit f865af5

22 files changed

+5812
-8884
lines changed

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20

.vscode/settings.json

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,12 @@
11
{
22
"files.exclude": {
3+
".ackrc": true,
4+
".drone.yml": true,
35
".eslintcache": true,
46
".nuxt*": true,
5-
"yarn-error.log": true,
7+
"LICENSE": true,
68
"pkg/**/.shell": true,
79
"pkg/**/node_modules": true
810
},
9-
"eslint.format.enable": true,
10-
"eslint.run": "onSave",
11-
"eslint.packageManager": "yarn",
12-
"eslint.validate": ["vue","html","javascript","typescript"],
13-
"editor.codeActionsOnSave": {
14-
"source.fixAll.eslint": true
15-
},
16-
"javascript.preferences.importModuleSpecifier": "non-relative",
17-
"typescript.preferences.importModuleSpecifier": "non-relative",
18-
"cSpell.words": [
19-
"autoscroll",
20-
"cacerts",
21-
"chainable",
22-
"Codecov",
23-
"epinio",
24-
"hevi",
25-
"kube",
26-
"kubeconfig",
27-
"kubectl",
28-
"Kubernetes",
29-
"kubevirt",
30-
"nuxt",
31-
"overcommit",
32-
"prepending",
33-
"protip",
34-
"pvcs",
35-
"testid",
36-
"tolerations",
37-
"userpreferences",
38-
"virtualmachine",
39-
"vuex",
40-
"whatsnew"
41-
],
42-
}
11+
"path-intellisense.showHiddenFiles": false
12+
}

.yarnrc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
nodeLinker: node-modules
2+
pnpMode: false

package.json

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,25 @@
11
{
22
"name": "elemental-ui",
33
"description": "Elemental UI extension",
4-
"version": "2.0.0",
4+
"version": "3.0.0-rc.1",
55
"private": false,
66
"engines": {
7-
"node": ">=12"
7+
"node": ">=20"
88
},
99
"dependencies": {
10-
"@rancher/components": "0.2.1-alpha.0",
11-
"@rancher/shell": "2.0.0",
12-
"@types/lodash": "4.14.184",
13-
"core-js": "3.21.1",
14-
"css-loader": "4.3.0"
10+
"@rancher/shell": "^3.0.0-rc.9"
1511
},
16-
"devDependencies": {
17-
"@types/node": "18.11.9",
18-
"@types/semver": "^7.5.8",
19-
"semver": "^7.6.0"
12+
"resolutions": {
13+
"@types/node": "~20.10.0",
14+
"@types/lodash": "4.17.5"
2015
},
2116
"scripts": {
2217
"dev": "NODE_ENV=dev ./node_modules/.bin/vue-cli-service serve",
23-
"parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name",
2418
"build": "./node_modules/.bin/vue-cli-service build",
2519
"clean": "./node_modules/@rancher/shell/scripts/clean",
2620
"build-pkg": "./node_modules/@rancher/shell/scripts/build-pkg.sh",
2721
"serve-pkgs": "./node_modules/@rancher/shell/scripts/serve-pkgs",
28-
"publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish"
29-
},
30-
"resolutions": {
31-
"**/webpack": "4",
32-
"glob": "7.2.3"
22+
"publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
23+
"parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name"
3324
}
3425
}

pkg/elemental/components/BuildMedia.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ export default {
241241
class="col span-2"
242242
>
243243
<LabeledSelect
244-
v-model="registrationEndpointSelected"
244+
v-model:value="registrationEndpointSelected"
245245
class="mr-20"
246246
data-testid="select-registration-endpoint-build-media"
247247
:label="t('elemental.machineRegistration.create.machineReg')"
@@ -254,7 +254,7 @@ export default {
254254
class="col span-2"
255255
>
256256
<LabeledSelect
257-
v-model="buildMediaTypeSelected"
257+
v-model:value="buildMediaTypeSelected"
258258
class="mr-20"
259259
data-testid="select-media-type-build-media"
260260
:label="t('elemental.machineRegistration.edit.mediaType')"
@@ -265,7 +265,7 @@ export default {
265265
</div>
266266
<div class="col span-3">
267267
<LabeledSelect
268-
v-model="buildMediaOsVersionSelected"
268+
v-model:value="buildMediaOsVersionSelected"
269269
class="mr-20"
270270
data-testid="select-os-version-build-media"
271271
:label="t('elemental.machineRegistration.edit.osVersion')"
@@ -280,11 +280,11 @@ export default {
280280
mode="buildMedia"
281281
class="mr-20"
282282
data-testid="build-media-btn"
283-
:disabled="!isBuildMediaBtnEnabled || isMediaBuilt"
283+
:disabled="(!isBuildMediaBtnEnabled || isMediaBuilt) ? 'disabled' : null"
284284
@click="buildMedia"
285285
/>
286286
<a
287-
:disabled="!isMediaBuilt"
287+
:disabled="!isMediaBuilt ? 'disabled' : null"
288288
class="btn role-primary"
289289
data-testid="download-media-btn"
290290
@click="$event => downloadMedia($event)"

pkg/elemental/components/DashboardView.vue

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ export default {
277277
</div>
278278
<PercentageBar
279279
class="mt-10"
280-
:value="percentageBarValue"
280+
:model-value="percentageBarValue"
281281
:color-stops="colorStops"
282282
/>
283283
</div>
@@ -490,19 +490,6 @@ export default {
490490
}
491491
}
492492
493-
::v-deep .main-tables-container {
494-
.download-machine-reg {
495-
display: flex;
496-
justify-content: center;
497-
height: 59px;
498-
min-width: 130px;
499-
500-
.icon.icon-lg {
501-
display: none;
502-
}
503-
}
504-
}
505-
506493
@media screen and (max-width: 1080px) {
507494
.main-tables-container {
508495
flex-direction: column;

pkg/elemental/components/ImportMultiple.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export default {
155155
</div>
156156
<div class="col span-6">
157157
<LabeledSelect
158-
v-model="defaultNamespace"
158+
v-model:value="defaultNamespace"
159159
class="pull-right"
160160
:options="namespaceOptions"
161161
label-key="import.defaultNamespace.label"

pkg/elemental/detail/elemental.cattle.io.machineregistration.vue

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,7 @@ export default {
3131
mode: {
3232
type: String,
3333
required: true
34-
},
35-
resource: {
36-
type: String,
37-
required: true
38-
},
34+
}
3935
},
4036
data() {
4137
return {
@@ -119,7 +115,7 @@ export default {
119115
<BuildMedia
120116
:display-reg-endpoints="false"
121117
:registration-endpoint="`${value.metadata.namespace}/${value.metadata.name}`"
122-
:resource="resource"
118+
:resource="value.type"
123119
:mode="mode"
124120
/>
125121
</div>
@@ -142,7 +138,7 @@ export default {
142138
<h3>{{ t('elemental.machineRegistration.create.cloudConfiguration') }}</h3>
143139
<YamlEditor
144140
ref="yamleditor"
145-
v-model="cloudConfig"
141+
v-model:value="cloudConfig"
146142
class="mb-20"
147143
:editor-mode="editorMode"
148144
/>

pkg/elemental/edit/elemental.cattle.io.machineregistration.vue

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import { getOperatorVersion, checkGatedFeatureCompatibility, MACH_REG_CONFIG_DEF
2020
import { OLD_DEFAULT_CREATION_YAML, DEFAULT_CREATION_YAML } from '../models/elemental.cattle.io.machineregistration';
2121
2222
export default {
23-
name: 'MachineRegistrationEditView',
24-
components: {
23+
name: 'MachineRegistrationEditView',
24+
components: {
2525
Loading,
2626
CruResource,
2727
YamlEditor,
@@ -41,18 +41,14 @@ export default {
4141
mode: {
4242
type: String,
4343
required: true
44-
},
45-
resource: {
46-
type: String,
47-
required: true
48-
},
44+
}
4945
},
5046
async fetch() {
5147
// in CREATE mode, since YAMLEditor doesn't live update, we need to force a re-render of the component for it to update
5248
if (this.mode === _CREATE) {
5349
const operatorVersion = await getOperatorVersion(this.$store);
5450
55-
this.newCloudConfigcompatibilityCheck = checkGatedFeatureCompatibility(this.resource, this.mode, MACH_REG_CONFIG_DEFAULTS, operatorVersion);
51+
this.newCloudConfigcompatibilityCheck = checkGatedFeatureCompatibility(this.value.type, this.mode, MACH_REG_CONFIG_DEFAULTS, operatorVersion);
5652
5753
if (!this.value.spec) {
5854
this.value.spec = this.newCloudConfigcompatibilityCheck ? DEFAULT_CREATION_YAML : OLD_DEFAULT_CREATION_YAML;
@@ -208,7 +204,7 @@ export default {
208204
<div class="col span-12">
209205
<h3>{{ t('elemental.machineRegistration.create.configuration') }}</h3>
210206
<NameNsDescription
211-
v-model="value"
207+
:value="value"
212208
:mode="mode"
213209
:description-hidden="true"
214210
:namespaced="false"
@@ -221,7 +217,7 @@ export default {
221217
<YamlEditor
222218
:key="rerender"
223219
ref="yamleditor"
224-
v-model="cloudConfig"
220+
v-model:value="cloudConfig"
225221
class="mb-20"
226222
:editor-mode="editorMode"
227223
/>
@@ -273,7 +269,7 @@ export default {
273269
:title="t('labels.labels.title')"
274270
:read-allowed="false"
275271
:value-can-be-empty="true"
276-
@input="updateLabels($event)"
272+
@update:value="updateLabels($event)"
277273
/>
278274
</div>
279275
<div class="row mb-10">
@@ -286,7 +282,7 @@ export default {
286282
:title="t('labels.annotations.title')"
287283
:read-allowed="false"
288284
:value-can-be-empty="true"
289-
@input="value.setAnnotations($event, 'machineInventoryAnnotations', true)"
285+
@update:value="value.setAnnotations($event, 'machineInventoryAnnotations', true)"
290286
/>
291287
</div>
292288
</Tab>
@@ -313,7 +309,7 @@ export default {
313309
:title="t('labels.labels.title')"
314310
:read-allowed="false"
315311
:value-can-be-empty="true"
316-
@input="value.setLabels($event)"
312+
@update:value="value.setLabels($event)"
317313
/>
318314
</div>
319315
<div class="row mb-10">
@@ -326,7 +322,7 @@ export default {
326322
:title="t('labels.annotations.title')"
327323
:read-allowed="false"
328324
:value-can-be-empty="true"
329-
@input="value.setAnnotations($event)"
325+
@update:value="value.setAnnotations($event)"
330326
/>
331327
</div>
332328
</Tab>

0 commit comments

Comments
 (0)