From 0ecd828a5d93ee217ef138605e6199b398fb500b Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 6 Oct 2024 16:11:46 +0200 Subject: [PATCH 1/6] #359: fix menu category appearance --- css/sideMenu.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/css/sideMenu.css b/css/sideMenu.css index 6971df0..66a1a8c 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -225,6 +225,11 @@ .side-menu-category-title { padding-left: 10px; color: var(--side-menu-text-color, #fff); + font-weight: bold; + font-size: 20px; + margin-bottom: 12px; + line-height: 30px; + margin-top: 0; } .side-menu-loader { From 5cc856927741060e7be9b9f6a775036364f3632f Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 6 Oct 2024 16:55:57 +0200 Subject: [PATCH 2/6] [WIP] #359: update dependencies --- package.json | 86 +++++++++++++++++++++------------------ tsconfig.json | 33 +++++++++++++++ webpack.js | 110 +++++++++++++++++++++++++++++--------------------- 3 files changed, 143 insertions(+), 86 deletions(-) create mode 100644 tsconfig.json diff --git a/package.json b/package.json index 9298a83..a31de07 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,13 @@ "stylelint:fix": "./node_modules/.bin/stylelint src --fix" }, "dependencies": { + "@nextcloud/browserslist-config": "^3.0.1", + "@nextcloud/event-bus": "^3.3.1", + "@nextcloud/initial-state": "^2.2.0", + "@nextcloud/l10n": "^3.1.0", + "@vueuse/core": "^11.1.0", "axios": "^1.6.7", - "trim": "^1.0.1", - "vue": "^2.6.11" + "trim": "^1.0.1" }, "browserslist": [ "extends @nextcloud/browserslist-config" @@ -22,42 +26,46 @@ "node": ">=16.0.0" }, "devDependencies": { - "@babel/core": "^7.9.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/preset-env": "^7.9.0", - "@nextcloud/axios": "^2.3.0", - "@nextcloud/browserslist-config": "^2.3.0", - "@nextcloud/eslint-config": "^8.1.2", - "@nextcloud/initial-state": "^2.0.0", - "@nextcloud/l10n": "^2.1.0", - "@nextcloud/vue": "^7.12.1", - "babel-eslint": "^10.1.0", - "babel-loader": "^8.1.0", - "css-loader": "^6.10.0", - "eslint": "^8.0.0", - "eslint-config-standard": "^17.0.0", - "eslint-import-resolver-webpack": "^0.12.1", - "eslint-plugin-import": "^2.20.0", - "eslint-plugin-nextcloud": "^0.3.0", - "eslint-plugin-node": "^10.0.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-standard": "^4.0.1", - "eslint-plugin-vue": "^9.0.0", - "eslint-webpack-plugin": "^3.0.0", - "file-loader": "^6.0.0", - "sass": "^1.49.9", - "sass-loader": "^13.0.2", - "stylelint": "^14.0.0", - "stylelint-config-recommended-scss": "^7.0.0", - "stylelint-scss": "^4.0.0", - "stylelint-webpack-plugin": "^3.3.0", - "url-loader": "^4.0.0", - "vue-loader": "^15", - "vue-style-loader": "^4.1.3", - "vue-template-compiler": "^2.7.13", - "webpack": "^5.0.0", - "webpack-cli": "^4.0.0", - "webpack-merge": "^4.2.2", - "webpack-node-externals": "^1.7.2" + "@babel/node": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/preset-typescript": "^7.24.7", + "@cypress/vue2": "^2.1.1", + "@cypress/webpack-preprocessor": "^6.0.2", + "@nextcloud/babel-config": "^1.2.0", + "@nextcloud/eslint-config": "^8.4.1", + "@nextcloud/stylelint-config": "^3.0.1", + "@nextcloud/typings": "^1.9.1", + "@nextcloud/webpack-vue-config": "^6.0.1", + "@simplewebauthn/types": "^10.0.0", + "@types/dockerode": "^3.3.29", + "@types/wait-on": "^5.3.4", + "@vue/tsconfig": "^0.5.1", + "babel-loader": "^9.2.1", + "babel-loader-exclude-node-modules-except": "^1.2.1", + "babel-plugin-module-resolver": "^5.0.2", + "colord": "^2.9.3", + "eslint-plugin-cypress": "^3.5.0", + "eslint-plugin-es": "^4.1.0", + "exports-loader": "^5.0.0", + "file-loader": "^6.2.0", + "handlebars-loader": "^1.7.3", + "jasmine-core": "~2.5.2", + "jasmine-sinon": "^0.4.0", + "jsdoc": "^4.0.2", + "raw-loader": "^4.0.2", + "sass": "^1.79.3", + "stylelint": "^16.9.0", + "stylelint-use-logical": "^2.1.2", + "ts-loader": "^9.5.0", + "ts-node": "^10.9.1", + "tslib": "^2.7.0", + "typescript": "^5.6.2", + "vue-loader": "^15.9.8", + "vue-template-compiler": "^2.7.16", + "wait-on": "^8.0.1", + "webpack": "^5.94.0", + "webpack-cli": "^5.0.2", + "webpack-merge": "^6.0.1", + "workbox-webpack-plugin": "^7.1.0" } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..cd22dba --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,33 @@ +{ + "extends": "@vue/tsconfig/tsconfig.json", + "include": ["./src/**/*.js"], + "compilerOptions": { + "types": ["node", "vue", "vue-router"], + "outDir": "./js/", + "target": "ESNext", + "module": "ESNext", + // Set module resolution to bundler and `noEmit` to be able to set `allowImportingTsExtensions`, so we can import Typescript with .ts extension + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "noEmit": true, + // Allow ts to import js files + "allowJs": true, + "allowSyntheticDefaultImports": true, + "declaration": false, + "noImplicitAny": false, + "resolveJsonModule": true, + "strict": true, + }, + "vueCompilerOptions": { + "target": 2.7 + }, + "ts-node": { + // these options are overrides used only by ts-node + // same as our --compilerOptions flag and our TS_NODE_COMPILER_OPTIONS environment variable + "compilerOptions": { + "moduleResolution": "node", + "module": "commonjs", + "verbatimModuleSyntax": false + } + } +} diff --git a/webpack.js b/webpack.js index 6e3eac8..ec5e494 100644 --- a/webpack.js +++ b/webpack.js @@ -1,54 +1,70 @@ const path = require('path') -const { VueLoaderPlugin } = require('vue-loader') -const StyleLintPlugin = require('stylelint-webpack-plugin') +const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except') +const { + VueLoaderPlugin +} = require('vue-loader') +// const StyleLintPlugin = require('stylelint-webpack-plugin') module.exports = { - devtool: "source-map", - entry: { - 'admin': path.join(__dirname, 'src', 'admin.js'), - 'sideMenu': path.join(__dirname, 'src', 'SideMenu.js'), - }, - output: { - path: path.resolve(__dirname, './js'), - publicPath: '/js', - filename: '[name].js?v=[hash]', - chunkFilename: 'chunks/[name]-[hash].js', - }, - module: { - rules: [ - { - test: /\.css$/, - use: ['vue-style-loader', 'css-loader'], - }, - { - test: /\.scss$/, - use: ['vue-style-loader', 'css-loader', 'sass-loader'], - }, - { - test: /\.vue$/, - loader: 'vue-loader', - }, - { - test: /\.js$/, - loader: 'babel-loader', - exclude: /node_modules/, - }, - { - test: /\.(png|jpg|gif|svg)$/, - loader: 'url-loader', - options: { - name: '[name].[ext]?[hash]', - limit: 8192, - }, + devtool: "source-map", + entry: { + 'admin': path.join(__dirname, 'src', 'admin.js'), + 'sideMenu': path.join(__dirname, 'src', 'SideMenu.js'), + }, + output: { + path: path.resolve(__dirname, './js'), + publicPath: '/js', + filename: '[name].js?v=[hash]', + chunkFilename: 'chunks/[name]-[hash].js', + }, + module: { + rules: [{ + test: /\.css$/, + use: ['vue-style-loader', 'css-loader'], + }, + { + test: /\.scss$/, + use: ['vue-style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.vue$/, + loader: 'vue-loader', + }, + { + test: /\.tsx?$/, + use: [ + 'babel-loader', + { + // Fix TypeScript syntax errors in Vue + loader: 'ts-loader', + options: { + transpileOnly: true, }, + }, ], - }, - plugins: [ - new VueLoaderPlugin(), - new StyleLintPlugin(), + exclude: BabelLoaderExcludeNodeModulesExcept([]), + }, + { + test: /\.js$/, + loader: 'babel-loader', + exclude: /node_modules/, + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'url-loader', + options: { + name: '[name].[ext]?[hash]', + limit: 8192, + }, + }, ], - resolve: { - extensions: ['*', '.js', '.vue'], - symlinks: false, - }, + }, + plugins: [ + new VueLoaderPlugin(), + // new StyleLintPlugin(), + ], + resolve: { + extensions: ['.*', '.js', '.vue'], + symlinks: false, + }, } From 4e62b2e7dc2c18af986953386b2e40b02d4e414c Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 27 Oct 2024 16:43:23 +0100 Subject: [PATCH 3/6] show apps on top menu --- package.json | 1 + src/AppMenu.vue | 138 ++++++++++++++++++++++++---------------- src/SideMenu.js | 2 - templates/js/script.php | 20 ++++++ 4 files changed, 105 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index a31de07..d5799ac 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "stylelint:fix": "./node_modules/.bin/stylelint src --fix" }, "dependencies": { + "@nextcloud/axios": "^2.5.1", "@nextcloud/browserslist-config": "^3.0.1", "@nextcloud/event-bus": "^3.3.1", "@nextcloud/initial-state": "^2.2.0", diff --git a/src/AppMenu.vue b/src/AppMenu.vue index 4e31f12..8874345 100644 --- a/src/AppMenu.vue +++ b/src/AppMenu.vue @@ -23,14 +23,15 @@ -