@rancher/shell 3.0.0-rc.1 → 3.0.0-rc.2
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.
- package/assets/styles/base/_variables.scss +1 -0
- package/assets/styles/global/_layout.scss +3 -3
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +37 -71
- package/components/ActionDropdown.vue +9 -13
- package/components/ActionMenu.vue +1 -1
- package/components/ButtonDropdown.vue +9 -8
- package/components/CruResource.vue +4 -2
- package/components/InputOrDisplay.vue +21 -33
- package/components/LocaleSelector.vue +1 -1
- package/components/Questions/__tests__/Boolean.test.ts +1 -2
- package/components/Questions/__tests__/Float.test.ts +1 -2
- package/components/Questions/__tests__/Int.test.ts +1 -2
- package/components/Questions/__tests__/String.test.ts +1 -2
- package/components/Questions/__tests__/Yaml.test.ts +1 -1
- package/components/Questions/__tests__/utils/questions-defaults.ts +2 -2
- package/components/SideNav.vue +3 -3
- package/components/__tests__/CodeMirror.test.ts +91 -94
- package/components/__tests__/ConsumptionGauge.test.ts +2 -2
- package/components/__tests__/NamespaceFilter.test.ts +10 -7
- package/components/auth/AllowedPrincipals.vue +2 -2
- package/components/auth/RoleDetailEdit.vue +13 -17
- package/components/auth/SelectPrincipal.vue +1 -1
- package/components/fleet/FleetStatus.vue +13 -14
- package/components/form/ArrayList.vue +1 -1
- package/components/form/ArrayListGrouped.vue +18 -5
- package/components/form/LabeledSelect.vue +16 -11
- package/components/form/Select.vue +17 -1
- package/components/form/__tests__/Command.test.ts +6 -5
- package/components/form/__tests__/Taints.test.ts +9 -9
- package/components/formatter/AppSummaryGraph.vue +1 -1
- package/components/formatter/FleetSummaryGraph.vue +1 -1
- package/components/formatter/MachineSummaryGraph.vue +1 -1
- package/components/formatter/Scale.vue +1 -1
- package/components/formatter/Weight.vue +1 -1
- package/components/nav/Header.vue +31 -14
- package/components/nav/NamespaceFilter.vue +1 -1
- package/components/nav/TopLevelMenu.vue +7 -6
- package/components/nav/WindowManager/ContainerLogs.vue +1 -1
- package/components/nav/WindowManager/ContainerShell.vue +7 -2
- package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +195 -192
- package/components/nav/WindowManager/__tests__/ContainerShell.test.ts +23 -19
- package/core/plugin-routes.ts +42 -29
- package/core/plugins-loader.js +2 -0
- package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +16 -8
- package/detail/helm.cattle.io.projecthelmchart.vue +26 -27
- package/edit/__tests__/namespace.test.ts +7 -9
- package/edit/__tests__/service.test.ts +14 -2
- package/edit/auth/__tests__/azuread.test.ts +10 -11
- package/edit/auth/azuread.vue +1 -1
- package/edit/fleet.cattle.io.clustergroup.vue +3 -3
- package/edit/management.cattle.io.fleetworkspace.vue +3 -3
- package/edit/management.cattle.io.node.vue +3 -2
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -2
- package/edit/namespace.vue +3 -1
- package/edit/networking.k8s.io.ingress/index.vue +3 -2
- package/edit/networking.k8s.io.networkpolicy/index.vue +2 -2
- package/edit/node.vue +3 -3
- package/edit/persistentvolume/__tests__/persistentvolume.test.ts +9 -4
- package/edit/persistentvolume/index.vue +3 -3
- package/edit/persistentvolumeclaim.vue +3 -3
- package/edit/policy.poddisruptionbudget.vue +3 -3
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +5 -6
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +13 -6
- package/edit/provisioning.cattle.io.cluster/rke2.vue +7 -1
- package/edit/provisioning.cattle.io.cluster/tabs/registries/__tests__/RegistryConfigs.test.ts +6 -7
- package/edit/service.vue +2 -2
- package/edit/serviceaccount.vue +3 -3
- package/edit/storage.k8s.io.storageclass/index.vue +3 -3
- package/edit/workload/Job.vue +2 -2
- package/edit/workload/__tests__/Job.test.ts +5 -5
- package/edit/workload/index.vue +2 -2
- package/edit/workload/storage/Mount.vue +7 -4
- package/edit/workload/storage/__tests__/Mount.test.ts +6 -2
- package/edit/workload/storage/index.vue +10 -23
- package/initialize/entry-helpers.js +0 -5
- package/mixins/page-actions.js +1 -1
- package/package.json +1 -1
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +3 -2
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +7 -29
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
- package/vue.config.js +409 -391
- package/plugins/clean-html-directive.js +0 -10
- package/plugins/clean-tooltip-directive.js +0 -9
- package/plugins/int-number.js +0 -9
- package/plugins/positive-int-number.js +0 -9
- package/plugins/trim-whitespace.js +0 -10
|
@@ -119,15 +119,15 @@ HEADER {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
.localeSelector {
|
|
122
|
-
:deep(.
|
|
122
|
+
:deep(.v-popper__inner) {
|
|
123
123
|
padding: 50px 0;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
:deep(.
|
|
126
|
+
:deep(.v-popper__arrow-container) {
|
|
127
127
|
display: none;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
:deep(.
|
|
130
|
+
:deep(.v-popper:focus) {
|
|
131
131
|
outline: 0;
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.tooltip {
|
|
1
|
+
.v-popper__popper.v-popper--theme-tooltip {
|
|
2
2
|
$triangle-size: 8px;
|
|
3
3
|
$triangle-inner-size: $triangle-size - 1px;
|
|
4
4
|
$center: calc(50% - #{$triangle-size});
|
|
@@ -7,130 +7,105 @@
|
|
|
7
7
|
z-index: z-index('tooltip');
|
|
8
8
|
max-width: 50vw;
|
|
9
9
|
|
|
10
|
-
.
|
|
10
|
+
.v-popper__inner {
|
|
11
11
|
background: var(--tooltip-bg);
|
|
12
12
|
color: var(--tooltip-text);
|
|
13
13
|
border-radius: var(--border-radius);
|
|
14
14
|
padding: 8px;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.
|
|
17
|
+
.v-popper__arrow-container {
|
|
18
18
|
width: 0;
|
|
19
19
|
height: 0;
|
|
20
20
|
border: 0 solid transparent;
|
|
21
21
|
position: absolute;
|
|
22
22
|
z-index: 1;
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
position: absolute;
|
|
24
|
+
.v-popper__arrow-inner {
|
|
26
25
|
border: $triangle-inner-size solid transparent;
|
|
27
|
-
content: '';
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
&[
|
|
32
|
-
|
|
29
|
+
&[data-popper-placement^="top"] {
|
|
30
|
+
.v-popper__arrow-container {
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
border-width: 5px 5px 0 5px;
|
|
36
|
-
bottom: -4px;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
margin-bottom: $triangle-size;
|
|
40
|
-
|
|
41
|
-
.tooltip-arrow {
|
|
42
|
-
bottom: -$triangle-inner-size;
|
|
43
|
-
|
|
44
|
-
&:after {
|
|
32
|
+
.v-popper__arrow-outer {
|
|
45
33
|
border-bottom-width: 0;
|
|
46
34
|
border-top-color: var(--tooltip-bg);
|
|
47
|
-
bottom: 1px;
|
|
48
35
|
left: -$triangle-inner-size;
|
|
49
36
|
}
|
|
50
37
|
}
|
|
51
38
|
}
|
|
52
39
|
|
|
53
40
|
|
|
54
|
-
&[
|
|
55
|
-
|
|
41
|
+
&[data-popper-placement^="bottom"] {
|
|
42
|
+
.v-popper__arrow-container {
|
|
56
43
|
|
|
57
|
-
|
|
58
|
-
top: -$triangle-inner-size;
|
|
59
|
-
|
|
60
|
-
&:after {
|
|
44
|
+
.v-popper__arrow-outer {
|
|
61
45
|
border-top-width: 0;
|
|
62
46
|
border-bottom-color: var(--tooltip-bg);
|
|
63
|
-
top: 1px;
|
|
64
47
|
left: -$triangle-inner-size;
|
|
65
48
|
background: transparent;
|
|
66
49
|
}
|
|
67
50
|
}
|
|
68
51
|
}
|
|
69
52
|
|
|
70
|
-
&[
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
.tooltip-arrow {
|
|
74
|
-
left: -$triangle-inner-size;
|
|
53
|
+
&[data-popper-placement^="right"] {
|
|
54
|
+
.v-popper__arrow-container {
|
|
75
55
|
|
|
76
|
-
|
|
77
|
-
border-left-width: 0;
|
|
56
|
+
.v-popper__arrow-outer {
|
|
78
57
|
border-right-color: var(--tooltip-bg);
|
|
79
|
-
left: 1px;
|
|
80
58
|
top: -$triangle-inner-size;
|
|
59
|
+
border-left-width: 0;
|
|
81
60
|
}
|
|
82
61
|
}
|
|
83
62
|
}
|
|
84
63
|
|
|
85
|
-
&[
|
|
86
|
-
|
|
64
|
+
&[data-popper-placement^="left"] {
|
|
65
|
+
.v-popper__arrow-container {
|
|
87
66
|
|
|
88
|
-
|
|
89
|
-
right: -$triangle-inner-size;
|
|
90
|
-
|
|
91
|
-
&:after {
|
|
67
|
+
.v-popper__arrow-outer {
|
|
92
68
|
border-right-width: 0;
|
|
93
69
|
border-left-color: var(--tooltip-bg);
|
|
94
|
-
right: 1px;
|
|
95
70
|
top: -$triangle-inner-size;
|
|
96
71
|
}
|
|
97
72
|
}
|
|
98
73
|
}
|
|
99
74
|
|
|
100
75
|
&.tooltip-warning {
|
|
101
|
-
.
|
|
76
|
+
.v-popper__inner {
|
|
102
77
|
background: var(--tooltip-bg-warning);
|
|
103
78
|
color: var(--tooltip-text-warning);
|
|
104
79
|
}
|
|
105
80
|
|
|
106
|
-
&[
|
|
107
|
-
.
|
|
108
|
-
|
|
81
|
+
&[data-popper-placement^="top"] {
|
|
82
|
+
.v-popper__arrow-container {
|
|
83
|
+
.v-popper__arrow-outer {
|
|
109
84
|
border-top-color: var(--tooltip-bg-warning);
|
|
110
85
|
}
|
|
111
86
|
}
|
|
112
87
|
}
|
|
113
88
|
|
|
114
89
|
|
|
115
|
-
&[
|
|
116
|
-
.
|
|
117
|
-
|
|
90
|
+
&[data-popper-placement^="bottom"] {
|
|
91
|
+
.v-popper__arrow-container {
|
|
92
|
+
.v-popper__arrow-outer {
|
|
118
93
|
border-bottom-color: var(--body-bg);
|
|
119
94
|
}
|
|
120
95
|
}
|
|
121
96
|
}
|
|
122
97
|
|
|
123
|
-
&[
|
|
124
|
-
.
|
|
125
|
-
|
|
98
|
+
&[data-popper-placement^="right"] {
|
|
99
|
+
.v-popper__arrow-container {
|
|
100
|
+
.v-popper__arrow-outer {
|
|
126
101
|
border-right-color: var(--tooltip-bg-warning);
|
|
127
102
|
}
|
|
128
103
|
}
|
|
129
104
|
}
|
|
130
105
|
|
|
131
|
-
&[
|
|
132
|
-
.
|
|
133
|
-
|
|
106
|
+
&[data-popper-placement^="left"] {
|
|
107
|
+
.v-popper__arrow-container {
|
|
108
|
+
.v-popper__arrow-outer {
|
|
134
109
|
border-left-color: var(--tooltip-bg-warning);
|
|
135
110
|
}
|
|
136
111
|
}
|
|
@@ -138,44 +113,35 @@
|
|
|
138
113
|
}
|
|
139
114
|
}
|
|
140
115
|
|
|
141
|
-
.
|
|
116
|
+
.v-popper__popper {
|
|
142
117
|
$color: var(--popover-bg);
|
|
143
118
|
border: 1px solid var(--border);
|
|
144
119
|
border-radius: var(--border-radius);
|
|
145
120
|
|
|
146
|
-
.
|
|
121
|
+
.v-popper__inner {
|
|
147
122
|
background: $color;
|
|
148
123
|
color: var(--popover-text);
|
|
149
124
|
padding: 10px;
|
|
150
125
|
border-radius: var(--border-radius);
|
|
151
126
|
box-shadow: 0 5px 20px var(--shadow);
|
|
127
|
+
border: none;
|
|
152
128
|
|
|
153
129
|
a {
|
|
154
130
|
color: var(--popover-text);
|
|
155
131
|
}
|
|
156
132
|
}
|
|
157
133
|
|
|
158
|
-
.
|
|
134
|
+
.v-popper__arrow-container {
|
|
159
135
|
border-color: transparent;
|
|
160
136
|
}
|
|
161
|
-
|
|
162
|
-
&[x-placement^="bottom"] {
|
|
163
|
-
.popover-arrow {
|
|
164
|
-
&:after {
|
|
165
|
-
// border-bottom-color: var(--popover-bg);
|
|
166
|
-
border-bottom-width: 0;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
137
|
}
|
|
172
138
|
|
|
173
|
-
.v-
|
|
139
|
+
.v-popper {
|
|
174
140
|
display: inline;
|
|
175
141
|
}
|
|
176
142
|
|
|
177
|
-
.tooltip,
|
|
178
|
-
.
|
|
143
|
+
.v-popper__popper.v-popper--theme-tooltip,
|
|
144
|
+
.v-popper {
|
|
179
145
|
&[aria-hidden='true'] {
|
|
180
146
|
// This removes it from the layout of ButtondropDown (so it doesn't render huge for SSR) but
|
|
181
147
|
// still allows it to maintain it's dimensions for v-tooltip to calculate the appropriate position.
|
|
@@ -82,7 +82,7 @@ export default {
|
|
|
82
82
|
Button <i class="icon icon-chevron-down" />
|
|
83
83
|
</button>
|
|
84
84
|
</slot>
|
|
85
|
-
<template #
|
|
85
|
+
<template #popper>
|
|
86
86
|
<slot name="popover-content" />
|
|
87
87
|
</template>
|
|
88
88
|
</v-dropdown>
|
|
@@ -123,7 +123,7 @@ export default {
|
|
|
123
123
|
$sm-trigger-padding: 10px 10px 10px 10px;
|
|
124
124
|
$lg-trigger-padding: 18px 10px 10px 10px;
|
|
125
125
|
|
|
126
|
-
.v-
|
|
126
|
+
.v-popper {
|
|
127
127
|
.text-right {
|
|
128
128
|
margin-top: 5px;
|
|
129
129
|
}
|
|
@@ -179,7 +179,7 @@ export default {
|
|
|
179
179
|
&>.btn {
|
|
180
180
|
padding: 15px 35px 15px 15px;
|
|
181
181
|
}
|
|
182
|
-
.v-
|
|
182
|
+
.v-popper{
|
|
183
183
|
.trigger{
|
|
184
184
|
position: absolute;
|
|
185
185
|
top: 0px;
|
|
@@ -194,23 +194,19 @@ export default {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
|
-
.
|
|
197
|
+
.v-popper__popper {
|
|
198
198
|
border: none;
|
|
199
199
|
}
|
|
200
|
-
.
|
|
200
|
+
.v-popper__popper {
|
|
201
201
|
margin-top: 0px;
|
|
202
202
|
|
|
203
|
-
&[
|
|
204
|
-
.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
&:after {
|
|
208
|
-
border-bottom-color: var(--dropdown-bg);
|
|
209
|
-
}
|
|
203
|
+
&[data-popper-placement^="bottom"] {
|
|
204
|
+
.v-popper__arrow-container {
|
|
205
|
+
display: none;
|
|
210
206
|
}
|
|
211
207
|
}
|
|
212
208
|
|
|
213
|
-
.
|
|
209
|
+
.v-popper__inner {
|
|
214
210
|
color: var(--dropdown-text);
|
|
215
211
|
background-color: var(--dropdown-bg);
|
|
216
212
|
border: 1px solid var(--dropdown-border);
|
|
@@ -258,7 +258,7 @@ export default {
|
|
|
258
258
|
<li
|
|
259
259
|
v-for="(opt, i) in menuOptions"
|
|
260
260
|
:key="i"
|
|
261
|
-
:disabled="opt.disabled"
|
|
261
|
+
:disabled="opt.disabled ? true : null"
|
|
262
262
|
:class="{divider: opt.divider}"
|
|
263
263
|
:data-testid="componentTestid + '-' + i + '-item'"
|
|
264
264
|
@click="execute(opt, $event)"
|
|
@@ -181,7 +181,7 @@ export default {
|
|
|
181
181
|
:clearable="false"
|
|
182
182
|
:close-on-select="closeOnSelect"
|
|
183
183
|
:filterable="false"
|
|
184
|
-
:
|
|
184
|
+
:modelValue="buttonLabel"
|
|
185
185
|
:options="dropdownOptions"
|
|
186
186
|
:map-keydown="mappedKeys"
|
|
187
187
|
:get-option-key="
|
|
@@ -191,7 +191,7 @@ export default {
|
|
|
191
191
|
:selectable="selectable"
|
|
192
192
|
@search:blur="onBlur"
|
|
193
193
|
@search:focus="onFocus"
|
|
194
|
-
@update:
|
|
194
|
+
@update:modelValue="$emit('click-action', $event)"
|
|
195
195
|
>
|
|
196
196
|
<template #no-options>
|
|
197
197
|
<slot name="no-options" />
|
|
@@ -211,14 +211,15 @@ export default {
|
|
|
211
211
|
<!-- Pass down templates provided by the caller -->
|
|
212
212
|
<template
|
|
213
213
|
v-for="(_, slot) of $slots"
|
|
214
|
+
#[slot]="scope"
|
|
214
215
|
:key="slot"
|
|
215
|
-
v-slot:[slot]="scope"
|
|
216
216
|
>
|
|
217
|
-
<slot
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
217
|
+
<template v-if="slot !== 'selected-option' && typeof $slots[slot] === 'function'">
|
|
218
|
+
<slot
|
|
219
|
+
:name="slot"
|
|
220
|
+
v-bind="scope"
|
|
221
|
+
/>
|
|
222
|
+
</template>
|
|
222
223
|
</template>
|
|
223
224
|
</v-select>
|
|
224
225
|
</template>
|
|
@@ -598,12 +598,13 @@ export default {
|
|
|
598
598
|
<!-- Pass down templates provided by the caller -->
|
|
599
599
|
<template
|
|
600
600
|
v-for="(_, slot) of $slots"
|
|
601
|
+
#[slot]="scope"
|
|
601
602
|
:key="slot"
|
|
602
603
|
>
|
|
603
604
|
<template v-if="shouldProvideSlot(slot)">
|
|
604
605
|
<slot
|
|
605
606
|
:name="slot"
|
|
606
|
-
v-bind="
|
|
607
|
+
v-bind="scope"
|
|
607
608
|
/>
|
|
608
609
|
</template>
|
|
609
610
|
</template>
|
|
@@ -681,12 +682,13 @@ export default {
|
|
|
681
682
|
<!-- Pass down templates provided by the caller -->
|
|
682
683
|
<template
|
|
683
684
|
v-for="(_, slot) of $slots"
|
|
685
|
+
#[slot]="scope"
|
|
684
686
|
:key="slot"
|
|
685
687
|
>
|
|
686
688
|
<template v-if="shouldProvideSlot(slot)">
|
|
687
689
|
<slot
|
|
688
690
|
:name="slot"
|
|
689
|
-
v-bind="
|
|
691
|
+
v-bind="scope"
|
|
690
692
|
/>
|
|
691
693
|
</template>
|
|
692
694
|
</template>
|
|
@@ -1,28 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import {
|
|
2
|
+
import { h, computed } from 'vue';
|
|
3
3
|
import { _VIEW } from '@shell/config/query-params';
|
|
4
|
-
const vueApp = createApp({});
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (this.isView) {
|
|
9
|
-
return h('div',
|
|
10
|
-
{ attrs: { class: 'label' } },
|
|
11
|
-
[
|
|
12
|
-
h('div',
|
|
13
|
-
{ attrs: { class: 'text-label' } },
|
|
14
|
-
this.$slots.name ? this.$slots.name : this.name
|
|
15
|
-
),
|
|
16
|
-
h('div',
|
|
17
|
-
{ attrs: { class: 'value' } },
|
|
18
|
-
this.$slots.value ? this.$slots.value : this.displayValue
|
|
19
|
-
)
|
|
20
|
-
]
|
|
21
|
-
);
|
|
22
|
-
} else {
|
|
23
|
-
return this.$slots.default;
|
|
24
|
-
}
|
|
25
|
-
},
|
|
5
|
+
export default {
|
|
6
|
+
name: 'InputOrDisplay',
|
|
26
7
|
props: {
|
|
27
8
|
name: {
|
|
28
9
|
type: String,
|
|
@@ -37,22 +18,29 @@ const component = vueApp.component('InputOrDisplay', {
|
|
|
37
18
|
default: 'edit'
|
|
38
19
|
}
|
|
39
20
|
},
|
|
40
|
-
|
|
41
|
-
isView()
|
|
42
|
-
return this.mode === _VIEW;
|
|
43
|
-
},
|
|
21
|
+
setup(props, { slots }) {
|
|
22
|
+
const isView = computed(() => props.mode === _VIEW);
|
|
44
23
|
|
|
45
|
-
displayValue() {
|
|
46
|
-
if (Array.isArray(
|
|
24
|
+
const displayValue = computed(() => {
|
|
25
|
+
if (Array.isArray(props.value) && props.value.length === 0) {
|
|
47
26
|
return '';
|
|
48
27
|
} else {
|
|
49
|
-
return
|
|
28
|
+
return props.value;
|
|
50
29
|
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
});
|
|
30
|
+
});
|
|
54
31
|
|
|
55
|
-
|
|
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;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
56
44
|
</script>
|
|
57
45
|
|
|
58
46
|
<style lang="scss" scoped>
|
|
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
|
|
|
3
3
|
import { _EDIT } from '@shell/config/query-params';
|
|
4
4
|
import defaults from './utils/questions-defaults';
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe('the Boolean Component', () => {
|
|
7
7
|
it('input field is present', () => {
|
|
8
8
|
const wrapper = mount(Questions, {
|
|
9
9
|
props: {
|
|
@@ -25,7 +25,6 @@ describe.skip('(Vue3 Skip) the Boolean Component', () => {
|
|
|
25
25
|
|
|
26
26
|
const inputFields = wrapper.findAll('[data-testid="boolean-input-var_name"] input[type=checkbox]');
|
|
27
27
|
|
|
28
|
-
// TODO: UNIT TEST - Default stubs give us a tab stub, rendering no input fields
|
|
29
28
|
expect(inputFields).toHaveLength(1);
|
|
30
29
|
|
|
31
30
|
const descriptionFields = wrapper.findAll('[data-testid="boolean-description-var_name"]');
|
|
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
|
|
|
3
3
|
import { _EDIT } from '@shell/config/query-params';
|
|
4
4
|
import defaults from './utils/questions-defaults';
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe('the float Component', () => {
|
|
7
7
|
it('input field is present', () => {
|
|
8
8
|
const wrapper = mount(Questions, {
|
|
9
9
|
props: {
|
|
@@ -25,7 +25,6 @@ describe.skip('(Vue3 Skip) the float Component', () => {
|
|
|
25
25
|
|
|
26
26
|
const inputFields = wrapper.findAll('[data-testid="float-input-var_name"]');
|
|
27
27
|
|
|
28
|
-
// TODO: UNIT TEST - Default stubs give us a tab stub, rendering no input fields
|
|
29
28
|
expect(inputFields).toHaveLength(1);
|
|
30
29
|
|
|
31
30
|
const descriptionFields = wrapper.findAll('[data-testid="float-description-var_name"]');
|
|
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
|
|
|
3
3
|
import { _EDIT } from '@shell/config/query-params';
|
|
4
4
|
import defaults from './utils/questions-defaults';
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe('the Int Component', () => {
|
|
7
7
|
it('input field is present', () => {
|
|
8
8
|
const wrapper = mount(Questions, {
|
|
9
9
|
props: {
|
|
@@ -25,7 +25,6 @@ describe.skip('(Vue3 Skip) the Int Component', () => {
|
|
|
25
25
|
|
|
26
26
|
const inputFields = wrapper.findAll('[data-testid="int-input-var_name"]');
|
|
27
27
|
|
|
28
|
-
// TODO: UNIT TEST - Default stubs give us a tab stub, rendering no input fields
|
|
29
28
|
expect(inputFields).toHaveLength(1);
|
|
30
29
|
|
|
31
30
|
const descriptionFields = wrapper.findAll('[data-testid="int-description-var_name"]');
|
|
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
|
|
|
3
3
|
import { _EDIT } from '@shell/config/query-params';
|
|
4
4
|
import defaults from './utils/questions-defaults';
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe('the String Component', () => {
|
|
7
7
|
it('input field is present', () => {
|
|
8
8
|
const wrapper = mount(Questions, {
|
|
9
9
|
props: {
|
|
@@ -25,7 +25,6 @@ describe.skip('(Vue3 Skip) the String Component', () => {
|
|
|
25
25
|
|
|
26
26
|
const inputFields = wrapper.findAll('[data-testid="string-input-var_name"]');
|
|
27
27
|
|
|
28
|
-
// TODO: UNIT TEST - Default stubs give us a tab stub, rendering no input fields
|
|
29
28
|
expect(inputFields).toHaveLength(1);
|
|
30
29
|
|
|
31
30
|
const descriptionFields = wrapper.findAll('[data-testid="string-description-var_name"]');
|
|
@@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils';
|
|
|
3
3
|
import { _EDIT } from '@shell/config/query-params';
|
|
4
4
|
import defaults from './utils/questions-defaults';
|
|
5
5
|
|
|
6
|
-
describe
|
|
6
|
+
describe('the yaml Component', () => {
|
|
7
7
|
it('input field is present', () => {
|
|
8
8
|
const wrapper = mount(Questions, {
|
|
9
9
|
props: {
|
package/components/SideNav.vue
CHANGED
|
@@ -439,9 +439,9 @@ export default {
|
|
|
439
439
|
<!-- locale selector -->
|
|
440
440
|
<span v-if="isSingleProduct">
|
|
441
441
|
<v-dropdown
|
|
442
|
-
|
|
442
|
+
popperClass="localeSelector"
|
|
443
443
|
placement="top"
|
|
444
|
-
|
|
444
|
+
:triggers="['click']"
|
|
445
445
|
>
|
|
446
446
|
<a
|
|
447
447
|
data-testid="locale-selector"
|
|
@@ -450,7 +450,7 @@ export default {
|
|
|
450
450
|
{{ locale }}
|
|
451
451
|
</a>
|
|
452
452
|
|
|
453
|
-
<template #
|
|
453
|
+
<template #popper>
|
|
454
454
|
<ul
|
|
455
455
|
class="list-unstyled dropdown"
|
|
456
456
|
style="margin: -1px;"
|