From f5af7cf864b396290a305d84722f172b4d2e3d57 Mon Sep 17 00:00:00 2001 From: Joossensei Date: Tue, 21 Sep 2021 15:51:15 +0200 Subject: [PATCH 01/52] Updated all packages --- package.json | 74 +++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index 0273a6133..fac04eee3 100644 --- a/package.json +++ b/package.json @@ -28,19 +28,19 @@ }, "dependencies": { "@vue/cli-service": "^4.5.13", - "axios": "^0.21.1", + "axios": "^0.21.4", "baguettebox.js": "^1.11.1", "bootbox": "^5.5.2", - "bootstrap": "^4.5.3", - "browserslist": "^4.16.7", - "caniuse-lite": "^1.0.30001249", - "codemirror": "^5.62.2", + "bootstrap": "^5.1.1", + "browserslist": "^4.17.0", + "caniuse-lite": "^1.0.30001259", + "codemirror": "^5.63.0", "dropzone": "^5.9.2", "flagpack": "^1.0.5", "hotkeys-js": "^3.8.7", "jquery": "^3.6.0", - "locutus": "^2.0.14", - "luxon": "^1.28.0", + "locutus": "^2.0.15", + "luxon": "^2.0.2", "no-scroll": "^2.1.1", "node-vibrant": "^3.1.6", "popper.js": "^1.16.1", @@ -48,65 +48,63 @@ "selectize": "^0.12.6", "simplemde": "^1.11.2", "stylelint-config-recommended-scss": "^4.3.0", - "stylelint-scss": "^3.20.1", - "terser": "^4.8.0", + "stylelint-scss": "^3.21.0", + "terser": "^5.9.0", "tinycolor2": "^1.4.2", "vue": "^2.6.14", - "vue-flatpickr-component": "^8.1.7", + "vue-flatpickr-component": "^9.0.5", "vue-multiselect": "^2.1.6", "vue-simplemde": "^2.0.0", - "vue-trumbowyg": "^3.6.2", + "vue-trumbowyg": "^4.0.0", "vuedraggable": "^2.24.3", "vuex": "^3.6.2", "zxcvbn": "^4.4.2" }, "devDependencies": { - "@babel/core": "^7.15.0", + "@babel/core": "^7.15.5", "@babel/plugin-transform-regenerator": "^7.14.5", "@babel/plugin-transform-runtime": "^7.15.0", "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.15.0", + "@babel/preset-env": "^7.15.6", "@fortawesome/fontawesome-free": "^5.15.4", - "@symfony/stimulus-bridge": "^2.0.0", - "@symfony/webpack-encore": "^1.5.0", - "@testing-library/cypress": "^7.0.6", + "@symfony/stimulus-bridge": "^2.1.0", + "@symfony/webpack-encore": "^1.6.1", + "@testing-library/cypress": "^8.0.1", "@vue/test-utils": "^1.2.2", - "ajv-keywords": "^3.5.2", - "autoprefixer": "^9.8.6", + "ajv-keywords": "^5.0.0", + "autoprefixer": "^10.3.4", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.1.0", - "babel-jest": "^25.5.1", - "clean-webpack-plugin": "^4.0.0", - "core-js": "^3.0.0", - "cypress": "^7.7.0", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.15.0", - "eslint-plugin-prettier": "^3.4.0", + "babel-jest": "^27.2.1", + "core-js": "^3.18.0", + "cypress": "^8.4.1", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-standard": "^4.1.0", - "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-vue": "^7.18.0", "file-loader": "^6.2.0", - "genversion": "^2.3.1", - "html-webpack-plugin": "^5.5.0", - "jest": "^25.5.4", + "genversion": "^3.0.1", + "jest": "^27.2.1", "jest-serializer-vue": "^2.0.2", - "pa11y-ci": "^2.4.0", - "postcss-loader": "^4.3.0", + "pa11y-ci": "^2.4.2", + "postcss-loader": "^6.1.1", "postcss-preset-env": "^6.7.0", - "prettier": "^1.19.1", + "prettier": "^2.4.1", "regenerator-runtime": "^0.13.9", - "sass": "^1.37.5", - "sass-loader": "^9.0.3", + "sass": "^1.42.0", + "sass-loader": "^12.1.0", "source-sans-pro": "^3.6.0", "stimulus": "^2.0.0", "stylelint": "^13.13.1", - "stylelint-config-standard": "^19.0.0", + "stylelint-config-standard": "^22.0.0", "vue-jest": "^3.0.7", "vue-loader": "^15.9.8", - "vue-router": "^3.5.1", + "vue-router": "^3.5.2", "vue-template-compiler": "^2.6.14", - "webpack-notifier": "^1.6.0", + "webpack-notifier": "^1.13.0", "webpackbar": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "workbox-webpack-plugin": "^6.2.0" + "workbox-webpack-plugin": "^6.3.0" }, "scripts": { "start": "encore dev-server --port=8234 --progress", From d2f23bc6abfd512de4d796c89e521130e7ade862 Mon Sep 17 00:00:00 2001 From: Joost <40595903+Joossensei@users.noreply.github.com> Date: Wed, 22 Sep 2021 16:49:57 +0200 Subject: [PATCH 02/52] Fixed most errors --- assets/js/app/editor/Components/Date.vue | 6 + assets/js/app/editor/Components/Select.vue | 4 +- .../listing/Components/Table/Row/_Actions.vue | 6 +- .../listing/Components/Table/Row/_Meta.vue | 2 +- .../listing/Components/Table/Row/index.vue | 2 +- assets/js/filters/date.js | 20 +- assets/js/filters/string.js | 367 +++++++++++++++++- assets/scss/init/_mixins.scss | 6 +- package.json | 20 +- 9 files changed, 399 insertions(+), 34 deletions(-) diff --git a/assets/js/app/editor/Components/Date.vue b/assets/js/app/editor/Components/Date.vue index 9c7a93086..450e0ff5f 100644 --- a/assets/js/app/editor/Components/Date.vue +++ b/assets/js/app/editor/Components/Date.vue @@ -48,6 +48,7 @@ import $ from 'jquery'; import value from '../mixins/value'; import flatPickr from 'vue-flatpickr-component'; +import { DateTime } from 'luxon'; export default { name: 'EditorDate', @@ -146,6 +147,11 @@ export default { input[0].reportValidity(); input[0].setCustomValidity(''); }, + filterDate(string) { + if (string) { + return DateTime.fromISO(String(string)).toLocaleString(); + } + }, }, }; diff --git a/assets/js/app/editor/Components/Select.vue b/assets/js/app/editor/Components/Select.vue index 31671c62d..dcfbd88cd 100644 --- a/assets/js/app/editor/Components/Select.vue +++ b/assets/js/app/editor/Components/Select.vue @@ -20,11 +20,11 @@ > diff --git a/assets/js/app/toolbar/index.js b/assets/js/app/toolbar/index.js index ae690d9d9..f581b3acb 100644 --- a/assets/js/app/toolbar/index.js +++ b/assets/js/app/toolbar/index.js @@ -1,4 +1,4 @@ -import Vue from 'vue'; +import { createApp } from 'vue'; /** * VueX Store */ @@ -12,14 +12,20 @@ import Toolbar from './Components/Toolbar.vue'; * Register Components */ const id = 'toolbar'; +const toolbar = { + data() { + return { + store, + el: '#' + id, + name: 'BoltToolbar', + components: { + 'admin-toolbar': Toolbar, + }, + } + } +}; +const app = createApp(toolbar); + +app.component('admin-toolbar', Toolbar) +app.mount('#' + id) -if (document.getElementById(id)) { - new Vue({ - store, - el: '#' + id, - name: 'BoltToolbar', - components: { - 'admin-toolbar': Toolbar, - }, - }); -} From 0979e2dbbd78a6bee3d2111b41717a4321bae80d Mon Sep 17 00:00:00 2001 From: Joost <40595903+Joossensei@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:12:33 +0200 Subject: [PATCH 08/52] Fixing Popover, Dropdown, Toast, filters and this.$root.$on problems --- assets/js/app/common.js | 8 +- assets/js/app/editor/Components/Imagelist.vue | 2 +- assets/js/app/editor/Components/Slug.vue | 3 +- assets/js/app/editor/Components/Text.vue | 3 +- assets/js/app/editor/index.js | 69 ++-- .../listing/Components/Table/Row/_Actions.vue | 20 +- .../listing/Components/Table/Row/_Meta.vue | 10 +- .../listing/Components/Table/Row/index.vue | 27 +- .../js/app/listing/Components/Table/index.vue | 2 - assets/js/app/listing/index.js | 2 +- assets/js/app/listing/mixins/type.js | 4 +- assets/js/app/login/index.js | 11 +- assets/js/app/notifications/index.js | 6 +- assets/js/filters/string.js | 346 +----------------- package-lock.json | 10 + package.json | 1 + .../_partials/_content_listing.html.twig | 1 - 17 files changed, 122 insertions(+), 403 deletions(-) diff --git a/assets/js/app/common.js b/assets/js/app/common.js index 7c89f8372..0f1959c26 100644 --- a/assets/js/app/common.js +++ b/assets/js/app/common.js @@ -1,5 +1,6 @@ import $ from 'jquery'; import { DateTime } from 'luxon'; +import { Popover } from 'bootstrap'; import { version } from '../version'; window.assetsVersion = version; @@ -62,8 +63,11 @@ $(document).ready(function() { /* ** Initialise all popover elements */ - $('[data-toggle="popover"]').popover(); - + + var popoverEl = document.getElementsByClassName('.fa.fa-info-circle'); + if (popoverEl > 0) { + new Popover(popoverEl); + } /* ** When a field from another group is invalid, show it. */ diff --git a/assets/js/app/editor/Components/Imagelist.vue b/assets/js/app/editor/Components/Imagelist.vue index 7c41a1ad9..fcbf196ba 100644 --- a/assets/js/app/editor/Components/Imagelist.vue +++ b/assets/js/app/editor/Components/Imagelist.vue @@ -41,7 +41,7 @@ import Image from './Image'; export default { name: 'EditorImage', - components: { 'editor-image': Image }, + components: { 'EditorImage': Image }, props: { images: Array, directory: String, diff --git a/assets/js/app/editor/Components/Slug.vue b/assets/js/app/editor/Components/Slug.vue index 3f0852580..4e5fcb85a 100644 --- a/assets/js/app/editor/Components/Slug.vue +++ b/assets/js/app/editor/Components/Slug.vue @@ -52,6 +52,7 @@ diff --git a/assets/js/app/editor/index.js b/assets/js/app/editor/index.js index 71ddbd052..7b1418a1b 100644 --- a/assets/js/app/editor/index.js +++ b/assets/js/app/editor/index.js @@ -27,40 +27,45 @@ import Collection from './Components/Collection'; import Checkbox from './Components/Checkbox'; import UnsavedChangesWarning from './unsavedchanges'; -createApp().component('editor-checkbox', Checkbox); -createApp().component('editor-date', Date); -createApp().component('editor-embed', Embed); -createApp().component('editor-email', Email); -createApp().component('editor-password', Password); -createApp().component('editor-html', Html); -createApp().component('editor-image', Image); -createApp().component('editor-imagelist', Imagelist); -createApp().component('editor-file', File); -createApp().component('editor-filelist', Filelist); -createApp().component('editor-markdown', Markdown); -createApp().component('editor-number', Number); -createApp().component('editor-select', Select); -createApp().component('editor-slug', Slug); -createApp().component('editor-text', Text); -createApp().component('editor-textarea', Textarea); -createApp().component('editor-collection', Collection); -createApp().component('editor-set', Set); -createApp().component('general-language', Language); -createApp().component('theme-select', ThemeSelect); - const id = 'editor'; const editorSelector = '#' + id; +const editorPage = { + data() { + return { + store, + el: editorSelector, + name: 'BoltEditor', + mounted: function() { + // Wait 2 seconds, so that Vue is initialised properly without triggering change events. + setTimeout(function() { + UnsavedChangesWarning.warnFor(editorSelector + ' form'); + }, 2000); + }, + } + } +} + +const app = createApp(editorPage); if (document.getElementById(id)) { - new Vue({ - store, - el: editorSelector, - name: 'BoltEditor', - mounted: function() { - // Wait 2 seconds, so that Vue is initialised properly without triggering change events. - setTimeout(function() { - UnsavedChangesWarning.warnFor(editorSelector + ' form'); - }, 2000); - }, - }); + app.component('EditorCheckbox', Checkbox); + app.component('EditorDate', Date); + app.component('EditorEmbed', Embed); + app.component('EditorEmail', Email); + app.component('EditorPassword', Password); + app.component('EditorHtml', Html); + app.component('EditorImage', Image); + app.component('EditorImage', Imagelist); + app.component('EditorFile', File); + app.component('EditorFile', Filelist); + app.component('EditorMarkdown', Markdown); + app.component('EditorNumber', Number); + app.component('EditorSelect', Select); + app.component('EditorSlug', Slug); + app.component('EditorText', Text); + app.component('EditorTextarea', Textarea); + app.component('EditorCollection', Collection); + app.component('EditorLanguage', Language); + app.component('ThemeSelect', ThemeSelect); + app.mount(editorSelector); } diff --git a/assets/js/app/listing/Components/Table/Row/_Actions.vue b/assets/js/app/listing/Components/Table/Row/_Actions.vue index 33458028f..4d6423ef2 100644 --- a/assets/js/app/listing/Components/Table/Row/_Actions.vue +++ b/assets/js/app/listing/Components/Table/Row/_Actions.vue @@ -69,22 +69,22 @@ {{ labels.slug }}: - {{ slug | trim(24) }} + {{ trim(slug, 24) }} {{ labels.created_on }}: - {{ formatAsDateTime(record.createdAt) }} + {{ asdatetime(record.createdAt) }} {{ labels.published_on }}: - {{ formatAsDateTime(record.publishedAt) }} + {{ asdatetime(record.publishedAt) }} {{ labels.last_modified_on }}: - {{ formatAsDateTime(record.modifiedAt) }} + {{ asdatetime(record.modifiedAt) }} @@ -92,6 +92,7 @@ diff --git a/assets/js/app/listing/Components/Table/Row/_Meta.vue b/assets/js/app/listing/Components/Table/Row/_Meta.vue index a91d8c1de..94363f379 100644 --- a/assets/js/app/listing/Components/Table/Row/_Meta.vue +++ b/assets/js/app/listing/Components/Table/Row/_Meta.vue @@ -3,7 +3,7 @@