@rancher/shell 0.1.4 → 0.2.1
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/brand/suse/favicon.png +0 -0
- package/assets/images/generic-plugin.svg +1 -7
- package/assets/styles/global/_button.scss +1 -0
- package/assets/translations/en-us.yaml +129 -53
- package/assets/translations/zh-hans.yaml +18 -0
- package/components/CommunityLinks.vue +40 -49
- package/components/ExplorerProjectsNamespaces.vue +20 -3
- package/components/HarvesterServiceAddOnConfig.vue +10 -10
- package/components/LazyImage.vue +21 -8
- package/components/PromptRemove.vue +2 -2
- package/components/ResourceList/Masthead.vue +21 -1
- package/components/ResourceList/ResourceLoadingIndicator.vue +0 -8
- package/components/ResourceList/index.vue +42 -36
- package/components/ResourceTable.vue +19 -0
- package/components/SortableTable/THead.vue +311 -70
- package/components/SortableTable/advanced-filtering.js +272 -0
- package/components/SortableTable/filtering.js +90 -29
- package/components/SortableTable/index.vue +486 -280
- package/components/Tabbed/index.vue +25 -7
- package/components/TypeDescription.vue +10 -1
- package/components/fleet/FleetClusters.vue +6 -0
- package/components/fleet/FleetRepos.vue +7 -1
- package/components/form/Command.vue +5 -0
- package/components/form/EnvVars.vue +5 -0
- package/components/form/NameNsDescription.vue +3 -1
- package/components/form/NodeScheduling.vue +6 -1
- package/components/form/PodAffinity.vue +5 -0
- package/components/form/ServiceNameSelect.vue +5 -0
- package/components/form/ValueFromResource.vue +7 -1
- package/components/form/WorkloadPorts.vue +2 -2
- package/components/nav/TopLevelMenu.vue +2 -1
- package/config/home-links.js +155 -0
- package/config/private-label.js +1 -1
- package/config/product/manager.js +0 -2
- package/config/product/settings.js +1 -0
- package/config/product/uiplugins.js +2 -1
- package/config/settings.js +3 -1
- package/config/uiplugins.js +76 -6
- package/config/version.js +17 -0
- package/core/plugin.ts +12 -0
- package/core/plugins.js +29 -5
- package/core/types.ts +6 -0
- package/creators/app/{.eslintignore → files/.eslintignore} +0 -0
- package/creators/app/{.eslintrc.js → files/.eslintrc.js} +0 -0
- package/creators/app/{.vscode → files/.vscode}/settings.json +0 -0
- package/creators/app/{babel.config.js → files/babel.config.js} +0 -0
- package/creators/app/{nuxt.config.js → files/nuxt.config.js} +0 -0
- package/creators/app/{tsconfig.json → files/tsconfig.json} +2 -1
- package/creators/app/init +16 -17
- package/creators/app/package.json +7 -1
- package/creators/pkg/{babel.config.js → files/babel.config.js} +0 -0
- package/creators/pkg/{index.ts → files/index.ts} +0 -0
- package/creators/pkg/{tsconfig.json → files/tsconfig.json} +13 -12
- package/creators/pkg/{vue.config.js → files/vue.config.js} +0 -0
- package/creators/pkg/init +1 -1
- package/creators/pkg/package.json +1 -1
- package/creators/update/init +54 -0
- package/creators/update/package.json +20 -0
- package/creators/update/upgrade +56 -0
- package/creators/update/yarn-error.log +54 -0
- package/detail/provisioning.cattle.io.cluster.vue +1 -1
- package/detail/workload/index.vue +1 -0
- package/edit/persistentvolume/index.vue +48 -13
- package/edit/persistentvolumeclaim.vue +31 -13
- package/edit/provisioning.cattle.io.cluster/ACE.vue +2 -1
- package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +0 -1
- package/edit/provisioning.cattle.io.cluster/rke2.vue +52 -43
- package/edit/service.vue +1 -1
- package/edit/workload/index.vue +19 -9
- package/edit/workload/mixins/workload.js +109 -114
- package/edit/workload/storage/index.vue +11 -17
- package/edit/workload/storage/persistentVolumeClaim/index.vue +5 -0
- package/edit/workload/storage/secret.vue +6 -1
- package/list/catalog.cattle.io.app.vue +10 -9
- package/list/catalog.cattle.io.clusterrepo.vue +6 -61
- package/list/cis.cattle.io.clusterscan.vue +12 -12
- package/list/fleet.cattle.io.bundle.vue +33 -28
- package/list/fleet.cattle.io.cluster.vue +26 -22
- package/list/fleet.cattle.io.clustergroup.vue +6 -0
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +28 -24
- package/list/fleet.cattle.io.gitrepo.vue +25 -14
- package/list/helm.cattle.io.projecthelmchart.vue +52 -33
- package/list/logging.banzaicloud.io.clusterflow.vue +7 -12
- package/list/logging.banzaicloud.io.flow.vue +7 -14
- package/list/management.cattle.io.cluster.vue +26 -15
- package/list/management.cattle.io.feature.vue +13 -8
- package/list/management.cattle.io.user.vue +38 -19
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +8 -15
- package/list/namespace.vue +14 -1
- package/list/node.vue +13 -16
- package/list/persistentvolume.vue +16 -9
- package/list/persistentvolumeclaim.vue +5 -8
- package/list/provisioning.cattle.io.cluster.vue +34 -8
- package/list/service.vue +24 -12
- package/list/ui.cattle.io.navlink.vue +6 -0
- package/list/workload.vue +2 -2
- package/middleware/authenticated.js +6 -0
- package/mixins/resource-fetch.js +12 -18
- package/mixins/resource-manager.js +126 -0
- package/models/catalog.cattle.io.uiplugin.js +4 -0
- package/models/management.cattle.io.cluster.js +9 -1
- package/models/pod.js +15 -5
- package/models/provisioning.cattle.io.cluster.js +4 -0
- package/models/workload.service.js +10 -0
- package/nuxt.config.js +2 -1
- package/package.json +1 -1
- package/pages/auth/login.vue +10 -0
- package/pages/auth/verify.vue +9 -0
- package/pages/c/_cluster/apps/charts/install.vue +119 -31
- package/pages/c/_cluster/settings/DefaultLinksEditor.vue +108 -0
- package/pages/c/_cluster/settings/links.vue +53 -101
- package/pages/c/_cluster/settings/performance.vue +90 -7
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +3 -3
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +72 -21
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +26 -7
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +2 -7
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +23 -15
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +12 -5
- package/pages/c/_cluster/uiplugins/index.vue +223 -72
- package/pages/support/index.vue +31 -142
- package/plugins/dashboard-store/actions.js +19 -0
- package/plugins/dashboard-store/getters.js +20 -3
- package/plugins/dashboard-store/mutations.js +13 -7
- package/plugins/plugin.js +18 -15
- package/plugins/steve/getters.js +12 -0
- package/plugins/version.js +21 -0
- package/promptRemove/mixin/roleDeletionCheck.js +15 -1
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -7
- package/rancher-components/components/BadgeState/BadgeState.spec.ts +12 -0
- package/rancher-components/components/BadgeState/BadgeState.vue +107 -0
- package/rancher-components/components/BadgeState/index.ts +1 -0
- package/rancher-components/components/Banner/Banner.test.ts +13 -0
- package/rancher-components/components/Banner/Banner.vue +163 -0
- package/rancher-components/components/Banner/index.ts +1 -0
- package/rancher-components/components/Card/Card.vue +150 -0
- package/rancher-components/components/Card/index.ts +1 -0
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +77 -0
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +395 -0
- package/rancher-components/components/Form/Checkbox/index.ts +1 -0
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +29 -0
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +343 -0
- package/rancher-components/components/Form/LabeledInput/index.ts +1 -0
- package/rancher-components/components/Form/Radio/RadioButton.vue +270 -0
- package/rancher-components/components/Form/Radio/RadioGroup.vue +235 -0
- package/rancher-components/components/Form/Radio/index.ts +2 -0
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +168 -0
- package/rancher-components/components/Form/TextArea/index.ts +1 -0
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +107 -0
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +137 -0
- package/rancher-components/components/Form/ToggleSwitch/index.ts +1 -0
- package/rancher-components/components/Form/index.ts +5 -0
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +137 -0
- package/rancher-components/components/LabeledTooltip/index.ts +1 -0
- package/scripts/publish-shell.sh +39 -6
- package/scripts/record-deps.js +37 -0
- package/scripts/test-plugins-build.sh +8 -5
- package/scripts/typegen.sh +84 -0
- package/store/auth.js +3 -0
- package/store/index.js +12 -3
- package/store/type-map.js +2 -0
- package/types/shell/index.d.ts +3046 -0
- package/utils/favicon.js +8 -2
- package/utils/gc/gc-interval.ts +40 -0
- package/utils/gc/gc-root-store.js +76 -0
- package/utils/gc/gc-route-changed.ts +44 -0
- package/utils/gc/gc-types.ts +21 -0
- package/utils/gc/gc.ts +282 -0
- package/config/footer.js +0 -18
- package/creators/pkg/nuxt.config.js +0 -6
- package/yarn-error.log +0 -195
|
@@ -100,7 +100,7 @@ export default {
|
|
|
100
100
|
const errors = [];
|
|
101
101
|
|
|
102
102
|
if (this.healthCheckEnabled && !this.healthcheckPort) {
|
|
103
|
-
errors.push(this.t('validation.required', { key: this.t('harvester.
|
|
103
|
+
errors.push(this.t('validation.required', { key: this.t('servicesPage.harvester.healthCheckPort.label') }, true));
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
if (errors.length > 0) {
|
|
@@ -131,7 +131,7 @@ export default {
|
|
|
131
131
|
v-model="ipam"
|
|
132
132
|
:mode="mode"
|
|
133
133
|
:options="ipamOptions"
|
|
134
|
-
:label="t('harvester.
|
|
134
|
+
:label="t('servicesPage.harvester.ipam.label')"
|
|
135
135
|
:disabled="mode === 'edit'"
|
|
136
136
|
/>
|
|
137
137
|
</div>
|
|
@@ -143,7 +143,7 @@ export default {
|
|
|
143
143
|
v-model="healthCheckEnabled"
|
|
144
144
|
:mode="mode"
|
|
145
145
|
name="healthCheckEnabled"
|
|
146
|
-
:label="t('harvester.
|
|
146
|
+
:label="t('servicesPage.harvester.healthCheckEnabled.label')"
|
|
147
147
|
:labels="[t('generic.disabled'),t('generic.enabled')]"
|
|
148
148
|
:options="[false, true]"
|
|
149
149
|
/>
|
|
@@ -157,7 +157,7 @@ export default {
|
|
|
157
157
|
:mode="mode"
|
|
158
158
|
:options="portOptions"
|
|
159
159
|
required
|
|
160
|
-
:label="t('harvester.
|
|
160
|
+
:label="t('servicesPage.harvester.healthCheckPort.label')"
|
|
161
161
|
/>
|
|
162
162
|
</div>
|
|
163
163
|
<div class="col span-6">
|
|
@@ -165,8 +165,8 @@ export default {
|
|
|
165
165
|
v-model="healthCheckSuccessThreshold"
|
|
166
166
|
:mode="mode"
|
|
167
167
|
type="number"
|
|
168
|
-
:label="t('harvester.
|
|
169
|
-
:tooltip="t('harvester.
|
|
168
|
+
:label="t('servicesPage.harvester.healthCheckSuccessThreshold.label')"
|
|
169
|
+
:tooltip="t('servicesPage.harvester.healthCheckSuccessThreshold.description')"
|
|
170
170
|
/>
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
@@ -176,8 +176,8 @@ export default {
|
|
|
176
176
|
v-model="healthCheckFailureThreshold"
|
|
177
177
|
:mode="mode"
|
|
178
178
|
type="number"
|
|
179
|
-
:label="t('harvester.
|
|
180
|
-
:tooltip="t('harvester.
|
|
179
|
+
:label="t('servicesPage.harvester.healthCheckFailureThreshold.label')"
|
|
180
|
+
:tooltip="t('servicesPage.harvester.healthCheckFailureThreshold.description')"
|
|
181
181
|
/>
|
|
182
182
|
</div>
|
|
183
183
|
<div class="col span-6">
|
|
@@ -185,7 +185,7 @@ export default {
|
|
|
185
185
|
v-model="healthCheckPeriod"
|
|
186
186
|
:mode="mode"
|
|
187
187
|
type="number"
|
|
188
|
-
:label="t('harvester.
|
|
188
|
+
:label="t('servicesPage.harvester.healthCheckPeriod.label')"
|
|
189
189
|
/>
|
|
190
190
|
</div>
|
|
191
191
|
</div>
|
|
@@ -195,7 +195,7 @@ export default {
|
|
|
195
195
|
v-model="healthCheckTimeout"
|
|
196
196
|
:mode="mode"
|
|
197
197
|
type="number"
|
|
198
|
-
:label="t('harvester.
|
|
198
|
+
:label="t('servicesPage.harvester.healthCheckTimeout.label')"
|
|
199
199
|
/>
|
|
200
200
|
</div>
|
|
201
201
|
</div>
|
package/components/LazyImage.vue
CHANGED
|
@@ -19,17 +19,18 @@ export default {
|
|
|
19
19
|
},
|
|
20
20
|
},
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.boundError = this.onError.bind(this);
|
|
28
|
-
|
|
29
|
-
$img.on('error', this.boundError);
|
|
22
|
+
watch: {
|
|
23
|
+
src(neu, old) {
|
|
24
|
+
if (neu !== old) {
|
|
25
|
+
this.loadImage();
|
|
26
|
+
}
|
|
30
27
|
}
|
|
31
28
|
},
|
|
32
29
|
|
|
30
|
+
mounted() {
|
|
31
|
+
this.loadImage();
|
|
32
|
+
},
|
|
33
|
+
|
|
33
34
|
beforeDestroy() {
|
|
34
35
|
const $img = $(this.$refs.img);
|
|
35
36
|
|
|
@@ -39,6 +40,18 @@ export default {
|
|
|
39
40
|
},
|
|
40
41
|
|
|
41
42
|
methods: {
|
|
43
|
+
// Ensure we load the image when the source changes
|
|
44
|
+
loadImage() {
|
|
45
|
+
const $img = $(this.$refs.img);
|
|
46
|
+
|
|
47
|
+
if ( this.src ) {
|
|
48
|
+
$img.attr('src', this.src);
|
|
49
|
+
this.boundError = this.onError.bind(this);
|
|
50
|
+
|
|
51
|
+
$img.on('error', this.boundError);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
42
55
|
onError() {
|
|
43
56
|
const $img = $(this.$refs.img);
|
|
44
57
|
|
|
@@ -266,7 +266,7 @@ export default {
|
|
|
266
266
|
await this.refreshSpoofedTypes(spoofedTypes);
|
|
267
267
|
this.done();
|
|
268
268
|
} catch (err) {
|
|
269
|
-
this.error = err;
|
|
269
|
+
this.error = err.message || err;
|
|
270
270
|
btnCB(false);
|
|
271
271
|
}
|
|
272
272
|
},
|
|
@@ -278,7 +278,7 @@ export default {
|
|
|
278
278
|
await this.refreshSpoofedTypes(spoofedTypes);
|
|
279
279
|
this.done();
|
|
280
280
|
} catch (err) {
|
|
281
|
-
this.error = err;
|
|
281
|
+
this.error = err.message || err;
|
|
282
282
|
btnCB(false);
|
|
283
283
|
}
|
|
284
284
|
},
|
|
@@ -4,6 +4,7 @@ import Favorite from '@shell/components/nav/Favorite';
|
|
|
4
4
|
import TypeDescription from '@shell/components/TypeDescription';
|
|
5
5
|
import { get } from '@shell/utils/object';
|
|
6
6
|
import { AS, _YAML } from '@shell/config/query-params';
|
|
7
|
+
import ResourceLoadingIndicator from './ResourceLoadingIndicator';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Resource List Masthead component.
|
|
@@ -15,6 +16,7 @@ export default {
|
|
|
15
16
|
components: {
|
|
16
17
|
Favorite,
|
|
17
18
|
TypeDescription,
|
|
19
|
+
ResourceLoadingIndicator,
|
|
18
20
|
},
|
|
19
21
|
props: {
|
|
20
22
|
resource: {
|
|
@@ -53,6 +55,20 @@ export default {
|
|
|
53
55
|
type: String,
|
|
54
56
|
default: null
|
|
55
57
|
},
|
|
58
|
+
loadResources: {
|
|
59
|
+
type: Array,
|
|
60
|
+
default: () => []
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
loadIndeterminate: {
|
|
64
|
+
type: Boolean,
|
|
65
|
+
default: false
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
showIncrementalLoadingIndicator: {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: false
|
|
71
|
+
},
|
|
56
72
|
|
|
57
73
|
/**
|
|
58
74
|
* Inherited global identifier prefix for tests
|
|
@@ -155,7 +171,11 @@ export default {
|
|
|
155
171
|
<h1 class="m-0">
|
|
156
172
|
{{ _typeDisplay }} <Favorite v-if="isExplorer" :resource="favoriteResource || resource" />
|
|
157
173
|
</h1>
|
|
158
|
-
<
|
|
174
|
+
<ResourceLoadingIndicator
|
|
175
|
+
v-if="showIncrementalLoadingIndicator"
|
|
176
|
+
:resources="loadResources"
|
|
177
|
+
:indeterminate="loadIndeterminate"
|
|
178
|
+
/>
|
|
159
179
|
</div>
|
|
160
180
|
<div class="actions-container">
|
|
161
181
|
<slot name="actions">
|
|
@@ -16,10 +16,6 @@ export default {
|
|
|
16
16
|
indeterminate: {
|
|
17
17
|
type: Boolean,
|
|
18
18
|
default: false,
|
|
19
|
-
},
|
|
20
|
-
rows: {
|
|
21
|
-
type: Array,
|
|
22
|
-
default: undefined,
|
|
23
19
|
}
|
|
24
20
|
},
|
|
25
21
|
|
|
@@ -32,10 +28,6 @@ export default {
|
|
|
32
28
|
computed: {
|
|
33
29
|
// Count of rows - either from the data provided or from the rows for the first resource
|
|
34
30
|
rowsCount() {
|
|
35
|
-
if (this.rows) {
|
|
36
|
-
return this.rows.length;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
31
|
if (this.resources.length > 0) {
|
|
40
32
|
const existingData = this.$store.getters[`${ this.inStore }/all`](this.resources[0]) || [];
|
|
41
33
|
|
|
@@ -3,7 +3,7 @@ import ResourceTable from '@shell/components/ResourceTable';
|
|
|
3
3
|
import Loading from '@shell/components/Loading';
|
|
4
4
|
import Masthead from './Masthead';
|
|
5
5
|
import ResourceLoadingIndicator from './ResourceLoadingIndicator';
|
|
6
|
-
import ResourceFetch
|
|
6
|
+
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
9
|
components: {
|
|
@@ -14,6 +14,20 @@ export default {
|
|
|
14
14
|
},
|
|
15
15
|
mixins: [ResourceFetch],
|
|
16
16
|
|
|
17
|
+
props: {
|
|
18
|
+
hasAdvancedFiltering: {
|
|
19
|
+
type: Boolean,
|
|
20
|
+
default: false
|
|
21
|
+
},
|
|
22
|
+
advFilterHideLabelsAsCols: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: false
|
|
25
|
+
},
|
|
26
|
+
advFilterPreventFilteringLabels: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
default: false
|
|
29
|
+
},
|
|
30
|
+
},
|
|
17
31
|
async fetch() {
|
|
18
32
|
const store = this.$store;
|
|
19
33
|
const resource = this.resource;
|
|
@@ -43,8 +57,8 @@ export default {
|
|
|
43
57
|
if (component?.$loadingResources) {
|
|
44
58
|
const { loadResources, loadIndeterminate } = component?.$loadingResources(this.$route, this.$store);
|
|
45
59
|
|
|
46
|
-
this.loadResources = loadResources;
|
|
47
|
-
this.loadIndeterminate = loadIndeterminate;
|
|
60
|
+
this.loadResources = loadResources || [resource];
|
|
61
|
+
this.loadIndeterminate = loadIndeterminate || false;
|
|
48
62
|
}
|
|
49
63
|
}
|
|
50
64
|
|
|
@@ -55,11 +69,7 @@ export default {
|
|
|
55
69
|
return;
|
|
56
70
|
}
|
|
57
71
|
|
|
58
|
-
|
|
59
|
-
this.rows = await this.$fetchType(resource);
|
|
60
|
-
} else {
|
|
61
|
-
this.rows = await store.dispatch(`${ inStore }/findAll`, { type: resource });
|
|
62
|
-
}
|
|
72
|
+
await this.$fetchType(resource);
|
|
63
73
|
}
|
|
64
74
|
},
|
|
65
75
|
|
|
@@ -75,13 +85,10 @@ export default {
|
|
|
75
85
|
|
|
76
86
|
const showMasthead = getters[`type-map/optionsFor`](resource).showListMasthead;
|
|
77
87
|
|
|
78
|
-
const existingData = getters[`${ inStore }/all`](resource) || [];
|
|
79
|
-
|
|
80
88
|
return {
|
|
81
89
|
inStore,
|
|
82
90
|
schema,
|
|
83
91
|
hasListComponent,
|
|
84
|
-
hasData: existingData.length > 0,
|
|
85
92
|
showMasthead: showMasthead === undefined ? true : showMasthead,
|
|
86
93
|
resource,
|
|
87
94
|
// manual refresh
|
|
@@ -89,7 +96,6 @@ export default {
|
|
|
89
96
|
watch: false,
|
|
90
97
|
force: false,
|
|
91
98
|
// Provided by fetch later
|
|
92
|
-
rows: [],
|
|
93
99
|
customTypeDisplay: null,
|
|
94
100
|
// incremental loading
|
|
95
101
|
loadResources: [resource],
|
|
@@ -111,10 +117,6 @@ export default {
|
|
|
111
117
|
return this.$store.getters['type-map/groupByFor'](this.schema);
|
|
112
118
|
},
|
|
113
119
|
|
|
114
|
-
loading() {
|
|
115
|
-
return this.hasData ? false : this.$fetchState.pending;
|
|
116
|
-
},
|
|
117
|
-
|
|
118
120
|
showIncrementalLoadingIndicator() {
|
|
119
121
|
return this.perfConfig?.incrementalLoading?.enabled;
|
|
120
122
|
}
|
|
@@ -142,18 +144,19 @@ export default {
|
|
|
142
144
|
:type-display="customTypeDisplay"
|
|
143
145
|
:schema="schema"
|
|
144
146
|
:resource="resource"
|
|
147
|
+
:show-incremental-loading-indicator="showIncrementalLoadingIndicator"
|
|
148
|
+
:load-resources="loadResources"
|
|
149
|
+
:load-indeterminate="loadIndeterminate"
|
|
145
150
|
>
|
|
146
|
-
<template
|
|
147
|
-
<
|
|
148
|
-
v-if="showIncrementalLoadingIndicator"
|
|
149
|
-
:resources="loadResources"
|
|
150
|
-
:indeterminate="loadIndeterminate"
|
|
151
|
-
/>
|
|
151
|
+
<template slot="extraActions">
|
|
152
|
+
<slot name="extraActions"></slot>
|
|
152
153
|
</template>
|
|
153
154
|
</Masthead>
|
|
154
155
|
<div v-if="hasListComponent">
|
|
155
156
|
<component
|
|
156
157
|
:is="listComponent"
|
|
158
|
+
:incremental-loading-indicator="showIncrementalLoadingIndicator"
|
|
159
|
+
:rows="rows"
|
|
157
160
|
v-bind="$data"
|
|
158
161
|
/>
|
|
159
162
|
</div>
|
|
@@ -164,21 +167,24 @@ export default {
|
|
|
164
167
|
:loading="loading"
|
|
165
168
|
:headers="headers"
|
|
166
169
|
:group-by="groupBy"
|
|
170
|
+
:has-advanced-filtering="hasAdvancedFiltering"
|
|
171
|
+
:adv-filter-hide-labels-as-cols="advFilterHideLabelsAsCols"
|
|
172
|
+
:adv-filter-prevent-filtering-labels="advFilterPreventFilteringLabels"
|
|
167
173
|
/>
|
|
168
174
|
</div>
|
|
169
175
|
</template>
|
|
170
176
|
|
|
171
|
-
<style lang="scss" scoped>
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
</style>
|
|
177
|
+
<style lang="scss" scoped>
|
|
178
|
+
.header {
|
|
179
|
+
position: relative;
|
|
180
|
+
}
|
|
181
|
+
H2 {
|
|
182
|
+
position: relative;
|
|
183
|
+
margin: 0 0 20px 0;
|
|
184
|
+
}
|
|
185
|
+
.right-action {
|
|
186
|
+
position: absolute;
|
|
187
|
+
top: 10px;
|
|
188
|
+
right: 10px;
|
|
189
|
+
}
|
|
190
|
+
</style>
|
|
@@ -122,6 +122,18 @@ export default {
|
|
|
122
122
|
type: Boolean,
|
|
123
123
|
default: false
|
|
124
124
|
},
|
|
125
|
+
hasAdvancedFiltering: {
|
|
126
|
+
type: Boolean,
|
|
127
|
+
default: false
|
|
128
|
+
},
|
|
129
|
+
advFilterHideLabelsAsCols: {
|
|
130
|
+
type: Boolean,
|
|
131
|
+
default: false
|
|
132
|
+
},
|
|
133
|
+
advFilterPreventFilteringLabels: {
|
|
134
|
+
type: Boolean,
|
|
135
|
+
default: false
|
|
136
|
+
},
|
|
125
137
|
},
|
|
126
138
|
|
|
127
139
|
data() {
|
|
@@ -357,6 +369,7 @@ export default {
|
|
|
357
369
|
handleActionButtonClick(event) {
|
|
358
370
|
this.$emit('clickedActionButton', event);
|
|
359
371
|
}
|
|
372
|
+
|
|
360
373
|
}
|
|
361
374
|
};
|
|
362
375
|
</script>
|
|
@@ -369,6 +382,8 @@ export default {
|
|
|
369
382
|
:rows="filteredRows"
|
|
370
383
|
:loading="loading"
|
|
371
384
|
:group-by="computedGroupBy"
|
|
385
|
+
:group="group"
|
|
386
|
+
:group-options="groupOptions"
|
|
372
387
|
:search="search"
|
|
373
388
|
:paging="true"
|
|
374
389
|
:paging-params="pagingParams"
|
|
@@ -378,9 +393,13 @@ export default {
|
|
|
378
393
|
:overflow-x="overflowX"
|
|
379
394
|
:overflow-y="overflowY"
|
|
380
395
|
:get-custom-detail-link="getCustomDetailLink"
|
|
396
|
+
:has-advanced-filtering="hasAdvancedFiltering"
|
|
397
|
+
:adv-filter-hide-labels-as-cols="advFilterHideLabelsAsCols"
|
|
398
|
+
:adv-filter-prevent-filtering-labels="advFilterPreventFilteringLabels"
|
|
381
399
|
key-field="_key"
|
|
382
400
|
:sort-generation-fn="safeSortGenerationFn"
|
|
383
401
|
@clickedActionButton="handleActionButtonClick"
|
|
402
|
+
@group-value-change="group = $event"
|
|
384
403
|
v-on="$listeners"
|
|
385
404
|
>
|
|
386
405
|
<template v-if="showGrouping" #header-middle>
|