diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 064665526..0b3d677f9 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -27,6 +27,7 @@ module.exports = {
'eslint:recommended',
'plugin:vue/vue3-essential',
'plugin:vuetify/base',
+ 'plugin:vuetify/recommended-v4',
'plugin:cypress/recommended',
],
rules: {
diff --git a/package.json b/package.json
index a6c4737b1..11dae73d5 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"vue-router": "5.0.6",
"vue-the-mask": "0.11.1",
"vue3-apexcharts": "1.8.0",
- "vuetify": "3.11.8",
+ "vuetify": "4.0.3",
"vuex": "4.1.0"
},
"devDependencies": {
@@ -71,7 +71,7 @@
"eslint-plugin-no-only-tests": "3.3.0",
"eslint-plugin-promise": "6.6.0",
"eslint-plugin-vue": "9.33.0",
- "eslint-plugin-vuetify": "2.5.3",
+ "eslint-plugin-vuetify": "2.7.2",
"express": "5.2.1",
"express-ws": "5.0.2",
"istanbul-lib-coverage": "3.2.2",
diff --git a/src/components/core/Alert.vue b/src/components/core/Alert.vue
index 048e1a865..8b59bb77b 100644
--- a/src/components/core/Alert.vue
+++ b/src/components/core/Alert.vue
@@ -32,15 +32,15 @@ along with this program. If not, see .
data-cy="snack-close"
/>
-
+
{{ alert.text }}
-
-
+
{{ alert.detail }}
-
+
diff --git a/src/components/cylc/Header.vue b/src/components/cylc/Header.vue
index 6f343136a..13091aad6 100644
--- a/src/components/cylc/Header.vue
+++ b/src/components/cylc/Header.vue
@@ -44,12 +44,12 @@ along with this program. If not, see
.
-
+
@@ -71,12 +71,12 @@ along with this program. If not, see .
-
+
@@ -130,5 +130,4 @@ const showGoButton = computed(() => (
deployment.value &&
isNewRoute.value
))
-
diff --git a/src/components/cylc/Info.vue b/src/components/cylc/Info.vue
index dd1b6cdce..6b0d4f14b 100644
--- a/src/components/cylc/Info.vue
+++ b/src/components/cylc/Info.vue
@@ -53,7 +53,7 @@ along with this program. If not, see .
>
@@ -108,13 +107,11 @@ along with this program. If not, see .
Reset
.
{{ title }}
@@ -154,7 +157,7 @@ along with this program. If not, see .
-
+
{{ statusMessage }}
{{ versionPopup }}
@@ -252,6 +255,7 @@ along with this program. If not, see .
+
+
diff --git a/src/components/cylc/commandMenu/Menu.vue b/src/components/cylc/commandMenu/Menu.vue
index 824bae1c9..9744401b2 100644
--- a/src/components/cylc/commandMenu/Menu.vue
+++ b/src/components/cylc/commandMenu/Menu.vue
@@ -27,11 +27,11 @@ along with this program. If not, see .
theme="dark"
>
-
+
{{ title }}
-
+
{{ typeAndStatusText }}
diff --git a/src/components/cylc/gscan/TaskFilterSelect.vue b/src/components/cylc/gscan/TaskFilterSelect.vue
index fa5e2673d..74dfcf0a9 100644
--- a/src/components/cylc/gscan/TaskFilterSelect.vue
+++ b/src/components/cylc/gscan/TaskFilterSelect.vue
@@ -23,11 +23,11 @@
@@ -45,19 +45,19 @@
- {{ item.title }}
+ {{ item }}
(+{{ model.length - maxVisibleStates }})
diff --git a/src/components/graphqlFormGenerator/EditRuntimeForm.vue b/src/components/graphqlFormGenerator/EditRuntimeForm.vue
index f7cf925fd..5e952198f 100644
--- a/src/components/graphqlFormGenerator/EditRuntimeForm.vue
+++ b/src/components/graphqlFormGenerator/EditRuntimeForm.vue
@@ -19,7 +19,7 @@ along with this program. If not, see .
-
+
{{ this.tokens.id }}
.
*/
+// CSS first
+import 'nprogress/css/nprogress.css'
+import '@/styles/index.scss'
+
import { createApp } from 'vue'
// Plugins
@@ -31,9 +35,6 @@ import router from '@/router/index'
import { store } from '@/store/index'
import { createVuetify } from 'vuetify'
-import 'nprogress/css/nprogress.css'
-import '@/styles/index.scss'
-
if (location.search) {
/* Remove token from the querystring - we only need it on first load.
After the browser has sent the token as part of the URL in the first GET, the
diff --git a/src/plugins/vuetify.js b/src/plugins/vuetify.js
index 219cca172..8a333a2db 100644
--- a/src/plugins/vuetify.js
+++ b/src/plugins/vuetify.js
@@ -85,6 +85,7 @@ export const vuetifyOptions = {
VTooltip: {
activator: 'parent',
location: 'bottom',
+ maxWidth: 600,
},
VList: {
slim: true,
diff --git a/src/styles/cylc/_dashboard.scss b/src/styles/cylc/_dashboard.scss
index 32d5ac16e..9024b0d89 100644
--- a/src/styles/cylc/_dashboard.scss
+++ b/src/styles/cylc/_dashboard.scss
@@ -16,11 +16,6 @@
*/
.c-dashboard {
- /* to align icons in the links section */
- .v-list-item__prepend {
- align-self: center;
- }
-
table {
tbody {
tr {
diff --git a/src/styles/cylc/_drawer.scss b/src/styles/cylc/_drawer.scss
index 1874fa018..332d81b2a 100644
--- a/src/styles/cylc/_drawer.scss
+++ b/src/styles/cylc/_drawer.scss
@@ -20,10 +20,10 @@
@use '../util';
body.resizing-drawer {
- cursor: ew-resize !important;
+ cursor: ew-resize;
#c-sidebar, .v-main {
// Prevent Vuetify-provided transitions during resize to ensure responsiveness
- transition: none !important;
+ transition: none;
}
}
diff --git a/src/styles/cylc/_header.scss b/src/styles/cylc/_header.scss
deleted file mode 100644
index e72b1d580..000000000
--- a/src/styles/cylc/_header.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Copyright (C) NIWA & British Crown (Met Office) & Contributors.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-@use "sass:map";
-@use '../settings';
-@use '../util';
-
-.c-header {
- display: block;
-
- @include util.theme-dependent(background-color, settings.$grey, 3);
-
- .c-environment-info {
- font-size: 1rem;
- font-weight: map.get(settings.$font-weights, 'regular');
-
- .v-chip {
- font-size: 1rem;
- @include util.theme-dependent(background-color, settings.$grey, 5, !important);
- @include util.theme-dependent(border-color, settings.$grey, 1, !important);
- }
- }
-}
diff --git a/src/styles/cylc/_markdown.scss b/src/styles/cylc/_markdown.scss
index f0991bbc2..6590493cc 100644
--- a/src/styles/cylc/_markdown.scss
+++ b/src/styles/cylc/_markdown.scss
@@ -17,6 +17,7 @@
.markdown {
p, ul, ol {
+ margin: 0;
&:not(:last-child) {
margin-bottom: 0.8em;
}
diff --git a/src/styles/cylc/_menu.scss b/src/styles/cylc/_menu.scss
index ba67101b6..89fafe96f 100644
--- a/src/styles/cylc/_menu.scss
+++ b/src/styles/cylc/_menu.scss
@@ -16,10 +16,10 @@
*/
.c-mutation-menu {
- z-index: 2000 !important;
+ z-index: 2000;
.v-card-title {
- font-size: 1.1rem !important;
+ font-size: 1.1rem;
line-height: 1.5rem;
white-space: normal;
}
diff --git a/src/styles/cylc/_toolbar.scss b/src/styles/cylc/_toolbar.scss
index 926a1c1af..70efbbcf1 100644
--- a/src/styles/cylc/_toolbar.scss
+++ b/src/styles/cylc/_toolbar.scss
@@ -37,7 +37,7 @@
// make this shrink more than title (can see status in mutation menu if needed):
flex-shrink: 10;
// override vuetify .text-* class letter spacing:
- letter-spacing: normal !important;
+ letter-spacing: normal;
}
.v-icon {
diff --git a/src/styles/cylc/_tooltip.scss b/src/styles/cylc/_tooltip.scss
deleted file mode 100644
index bec25f7d9..000000000
--- a/src/styles/cylc/_tooltip.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (C) NIWA & British Crown (Met Office) & Contributors.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-.v-tooltip .v-overlay__content {
- max-width: 600px !important;
- // Increase default opacity of bg:
- background: rgba(var(--v-theme-surface-variant), 0.9);
-}
diff --git a/src/styles/cylc/_tree.scss b/src/styles/cylc/_tree.scss
index ab7ecacc9..0ad4ad39a 100644
--- a/src/styles/cylc/_tree.scss
+++ b/src/styles/cylc/_tree.scss
@@ -64,13 +64,10 @@ $icon-width: 1.5rem;
}
.c-treeitem {
- display:inline-block;
- vertical-align:middle;
width: 100%;
.node {
min-height: $node-height;
line-height: normal;
- display: block;
.node-expand-collapse-button {
width: $icon-width;
@@ -112,8 +109,6 @@ $icon-width: 1.5rem;
$leaf-background-color: map.get(settings.$grey, 'lighten-3');
.leaf {
- padding: 0;
- margin: 0;
display: flex;
flex-wrap: nowrap;
flex-direction: column;
diff --git a/src/styles/index.scss b/src/styles/index.scss
index 7d1198f33..b1f719b22 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -22,7 +22,6 @@
@use "cylc/dashboard";
@use "cylc/drawer";
@use "cylc/gscan";
-@use "cylc/header";
@use "cylc/job";
@use "cylc/toolbar";
@use "cylc/tree";
@@ -30,7 +29,6 @@
@use "cylc/user_profile";
@use "cylc/warning";
@use "cylc/workspace";
-@use "cylc/tooltip";
@use "cylc/mutation_form";
@use "cylc/menu";
@@ -39,17 +37,30 @@ html {
overflow-y: auto;
}
-.v-theme--light.v-application {
- background-color: transparent;
- .content {
- height: 100vh;
+@layer vuetify-core.reset {
+ pre, ul, li, dl, dt, dd {
+ padding: 0;
+ margin: 0;
}
}
-// The skeleton loader needs to maintain height: 100% otherwise its children
-// nodes with height: 100% or auto won't be displayed at all.
-.v-skeleton-loader {
- height: 100%;
+@layer vuetify-overrides {
+ .v-theme--light.v-application {
+ background-color: transparent;
+ .content {
+ height: 100vh;
+ }
+ }
+
+ // The skeleton loader needs to maintain height: 100% otherwise its children
+ // nodes with height: 100% or auto won't be displayed at all.
+ .v-skeleton-loader {
+ height: 100%;
+ }
+
+ .v-list-item--one-line .v-list-item-title {
+ letter-spacing: normal;
+ }
}
[data-c-interactive] {
diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue
index a502689c5..d3b738253 100644
--- a/src/views/Dashboard.vue
+++ b/src/views/Dashboard.vue
@@ -23,7 +23,7 @@ along with this program. If not, see .
>
- Workflows
+ Workflows
.
- Events
+ Events
.
- No events |
+ No events |
@@ -72,7 +72,7 @@ along with this program. If not, see .
{{ $options.icons.table }}
-
+
Workflows Table
@@ -83,7 +83,7 @@ along with this program. If not, see .
{{ $options.icons.settings }}
-
+
Settings
@@ -95,7 +95,7 @@ along with this program. If not, see .
{{ $options.icons.hub }}
-
+
Cylc Hub
@@ -116,7 +116,7 @@ along with this program. If not, see .
{{ $options.icons.jupyterLogo }}
-
+
Jupyter Lab
@@ -135,7 +135,7 @@ along with this program. If not, see .
{{ $options.icons.quickstart }}
-
+
Cylc UI Quickstart
@@ -146,7 +146,7 @@ along with this program. If not, see .
{{ $options.icons.workflow }}
-
+
Workflow Design Guide
@@ -157,7 +157,7 @@ along with this program. If not, see .
{{ $options.icons.documentation }}
-
+
Documentation
@@ -170,7 +170,7 @@ along with this program. If not, see .
{{ $options.icons.mdiGraphql }}
-
+
GraphiQL
diff --git a/src/views/Guide.vue b/src/views/Guide.vue
index 1269fc298..1b8370a79 100644
--- a/src/views/Guide.vue
+++ b/src/views/Guide.vue
@@ -36,7 +36,7 @@ along with this program. If not, see .
- Tasks & Jobs
+ Tasks & Jobs
@@ -94,7 +94,7 @@ along with this program. If not, see .
- Skip Mode?
+ Skip Mode?
@@ -128,7 +128,7 @@ along with this program. If not, see .
- Views
+ Views
Cylc provides lots of views which you can use to monitor and
@@ -159,7 +159,7 @@ along with this program. If not, see .
- Tabs
+ Tabs
@@ -181,7 +181,7 @@ along with this program. If not, see .
- Why Are We Waiting?
+ Why Are We Waiting?
@@ -316,7 +316,7 @@ along with this program. If not, see .
- The n-window
+ The n-window
diff --git a/src/views/Log.vue b/src/views/Log.vue
index e14b68dd4..eab090b4d 100644
--- a/src/views/Log.vue
+++ b/src/views/Log.vue
@@ -32,7 +32,7 @@ along with this program. If not, see .
@@ -57,7 +57,7 @@ along with this program. If not, see .
@@ -136,7 +136,7 @@ along with this program. If not, see .
.
image="/img/logo.svg"
>
- You do not have permission to access this server
+ You do not have permission to access this server
diff --git a/src/views/UserProfile.vue b/src/views/UserProfile.vue
index 7cde1d4be..6977fda18 100644
--- a/src/views/UserProfile.vue
+++ b/src/views/UserProfile.vue
@@ -22,9 +22,8 @@ along with this program. If not, see .
-
- {{ $t('UserProfile.yourProfile') }}
-
+
+ {{ $t('UserProfile.yourProfile') }}
@@ -35,7 +34,6 @@ along with this program. If not, see .
:model-value="user.username"
disabled
id="profile-username"
- class="text-body-1"
/>
@@ -53,7 +51,6 @@ along with this program. If not, see .
:model-value="Object.keys(user.extensions).join(', ') || 'None'"
disabled
id="profile-extensions"
- class="text-body-1"
/>
@@ -83,9 +80,7 @@ along with this program. If not, see .
-
- Preferences
-
+ Preferences
@@ -211,7 +206,7 @@ along with this program. If not, see .
diff --git a/yarn.lock b/yarn.lock
index 738ff80da..a2e04dd19 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4110,7 +4110,7 @@ __metadata:
eslint-plugin-no-only-tests: "npm:3.3.0"
eslint-plugin-promise: "npm:6.6.0"
eslint-plugin-vue: "npm:9.33.0"
- eslint-plugin-vuetify: "npm:2.5.3"
+ eslint-plugin-vuetify: "npm:2.7.2"
express: "npm:5.2.1"
express-ws: "npm:5.0.2"
graphiql: "npm:4.1.2"
@@ -4142,7 +4142,7 @@ __metadata:
vue-router: "npm:5.0.6"
vue-the-mask: "npm:0.11.1"
vue3-apexcharts: "npm:1.8.0"
- vuetify: "npm:3.11.8"
+ vuetify: "npm:4.0.3"
vuex: "npm:4.1.0"
dependenciesMeta:
cypress:
@@ -5134,33 +5134,40 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-vue@npm:>=9.6.0":
- version: 10.2.0
- resolution: "eslint-plugin-vue@npm:10.2.0"
+"eslint-plugin-vue@npm:^10.8.0":
+ version: 10.9.2
+ resolution: "eslint-plugin-vue@npm:10.9.2"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
natural-compare: "npm:^1.4.0"
nth-check: "npm:^2.1.1"
- postcss-selector-parser: "npm:^6.0.15"
+ postcss-selector-parser: "npm:^7.1.0"
semver: "npm:^7.6.3"
xml-name-validator: "npm:^4.0.0"
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- vue-eslint-parser: ^10.0.0
- checksum: 10c0/ee07376bcf450970c66bde3eb7c1d26854dc3260c05fb2d52eeace5790d5e6173e7542e215690bf0149fde2238926721ff807df1beee33e5aba71e6634eac351
+ "@stylistic/eslint-plugin": ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ "@typescript-eslint/parser": ^7.0.0 || ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ vue-eslint-parser: ^10.3.0
+ peerDependenciesMeta:
+ "@stylistic/eslint-plugin":
+ optional: true
+ "@typescript-eslint/parser":
+ optional: true
+ checksum: 10c0/de40e38a16d9f15df039fbceff494db558dbc19b1a45291830327daf28134851b339912bb0e93e5c7d47ef7eae37bcc4a27a6a0e8c7ecf5f504b18eefe35f558
languageName: node
linkType: hard
-"eslint-plugin-vuetify@npm:2.5.3":
- version: 2.5.3
- resolution: "eslint-plugin-vuetify@npm:2.5.3"
+"eslint-plugin-vuetify@npm:2.7.2":
+ version: 2.7.2
+ resolution: "eslint-plugin-vuetify@npm:2.7.2"
dependencies:
- eslint-plugin-vue: "npm:>=9.6.0"
+ eslint-plugin-vue: "npm:^10.8.0"
requireindex: "npm:^1.2.0"
peerDependencies:
- eslint: ^8.0.0 || ^9.0.0
- vuetify: ^3.0.0
- checksum: 10c0/ffd74c2e6fb532a3cb60591abefecf9a366ccfb5c6360e79421bd190186be0207dd0cbab5bdf523b621aebcc3a6d9e0779b7c75517f6482d3e4c64e3d500a8be
+ eslint: ^8.0.0 || ^9.0.0 || ^10.0.0
+ vuetify: ^3.0.0 || ^4.0.0
+ checksum: 10c0/7d1d44ef44e8110cb8627865291352fb3e6c955b4ba3c567d4b15b937b17d216037e93fc983f3753fac7e36350f5577cba971a3f52491b1a6caddc2f2c748198
languageName: node
linkType: hard
@@ -8711,6 +8718,16 @@ __metadata:
languageName: node
linkType: hard
+"postcss-selector-parser@npm:^7.1.0":
+ version: 7.1.4
+ resolution: "postcss-selector-parser@npm:7.1.4"
+ dependencies:
+ cssesc: "npm:^3.0.0"
+ util-deprecate: "npm:^1.0.2"
+ checksum: 10c0/3d533d25bab83592e7134be0435e6cb1e2865f5e7d9fde65f1e7e1c75ccc5905168c9f55b05d2a3e10d01914a178433d3a54eab003f5ef6aa9a9d6816926caa2
+ languageName: node
+ linkType: hard
+
"postcss@npm:^8.5.10, postcss@npm:^8.5.15, postcss@npm:^8.5.6":
version: 8.5.15
resolution: "postcss@npm:8.5.15"
@@ -11443,9 +11460,9 @@ __metadata:
languageName: node
linkType: hard
-"vuetify@npm:3.11.8":
- version: 3.11.8
- resolution: "vuetify@npm:3.11.8"
+"vuetify@npm:4.0.3":
+ version: 4.0.3
+ resolution: "vuetify@npm:4.0.3"
peerDependencies:
typescript: ">=4.7"
vite-plugin-vuetify: ">=2.1.0"
@@ -11458,7 +11475,7 @@ __metadata:
optional: true
webpack-plugin-vuetify:
optional: true
- checksum: 10c0/686b02053ab64cc84b897fba58c1f7cdf2ad3c78f2c46a3171b623091092969513fd642bc260931bc3baaf5bd6fd409d10002a1291139e8e7633759e34e204aa
+ checksum: 10c0/bcecdf1639c971ef7228ca6b30d65173b2ab10d463549b926b5f8cc8b226c207a9127dfcffdc8d5f64b78dc41fcc8526cb3a0821f062ad7ace2b4d23554652fd
languageName: node
linkType: hard