From 27b8fbd5b2dba4ba1a2217e9605fadf94670bc6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 4 Mar 2022 20:13:25 +0100 Subject: [PATCH 001/121] Added symfony ux-turbo packages --- assets/controllers.json | 9 +++- composer.json | 1 + composer.lock | 99 ++++++++++++++++++++++++++++++++++++++++- config/bundles.php | 1 + package.json | 4 +- symfony.lock | 3 ++ yarn.lock | 8 ++++ 7 files changed, 122 insertions(+), 3 deletions(-) diff --git a/assets/controllers.json b/assets/controllers.json index a1c6e90c..7ba2551d 100644 --- a/assets/controllers.json +++ b/assets/controllers.json @@ -1,4 +1,11 @@ { - "controllers": [], + "controllers": { + "@symfony/ux-turbo": { + "turbo-core": { + "enabled": true, + "fetch": "eager" + } + } + }, "entrypoints": [] } diff --git a/composer.json b/composer.json index 93ff8f95..82a1a814 100644 --- a/composer.json +++ b/composer.json @@ -56,6 +56,7 @@ "symfony/serializer": "5.4.*", "symfony/translation": "5.4.*", "symfony/twig-bundle": "5.4.*", + "symfony/ux-turbo": "^2.0", "symfony/validator": "5.4.*", "symfony/web-link": "5.4.*", "symfony/webpack-encore-bundle": "^1.1", diff --git a/composer.lock b/composer.lock index bb9d4529..cfa5ae68 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6a0b77bb02ab9fddfcd455cd0d1ed2e8", + "content-hash": "7c7f12b38342f85999c2c3fb8528534e", "packages": [ { "name": "beberlei/assert", @@ -10334,6 +10334,103 @@ ], "time": "2022-01-02T09:53:40+00:00" }, + { + "name": "symfony/ux-turbo", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-turbo.git", + "reference": "d8f8aa42f616beff9482fa5c42bfd93333ba7ca8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/d8f8aa42f616beff9482fa5c42bfd93333ba7ca8", + "reference": "d8f8aa42f616beff9482fa5c42bfd93333ba7ca8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/webpack-encore-bundle": "^1.11" + }, + "conflict": { + "symfony/flex": "<1.13" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.8 | 3.0", + "phpstan/phpstan": "^0.12", + "symfony/debug-bundle": "^5.2|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/framework-bundle": "^5.2|^6.0", + "symfony/mercure-bundle": "^0.3", + "symfony/messenger": "^5.2|^6.0", + "symfony/panther": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.2.1|^6.0", + "symfony/property-access": "^5.2|^6.0", + "symfony/security-core": "^5.2|^6.0", + "symfony/stopwatch": "^5.2|^6.0", + "symfony/twig-bundle": "^5.2|^6.0", + "symfony/web-profiler-bundle": "^5.2|^6.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "name": "symfony/ux", + "url": "https://github.com/symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\Turbo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Hotwire Turbo integration for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "hotwire", + "javascript", + "mercure", + "symfony-ux", + "turbo", + "turbo-stream" + ], + "support": { + "source": "https://github.com/symfony/ux-turbo/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-12-12T11:00:03+00:00" + }, { "name": "symfony/validator", "version": "v5.4.5", diff --git a/config/bundles.php b/config/bundles.php index d65f246b..751a2de6 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -25,4 +25,5 @@ return [ Translation\Bundle\TranslationBundle::class => ['all' => true], Florianv\SwapBundle\FlorianvSwapBundle::class => ['all' => true], Nelmio\SecurityBundle\NelmioSecurityBundle::class => ['all' => true], + Symfony\UX\Turbo\TurboBundle::class => ['all' => true], ]; diff --git a/package.json b/package.json index b333ad1b..44c66a8d 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,17 @@ { "devDependencies": { "@fortawesome/fontawesome-free": "^5.7.2", + "@hotwired/stimulus": "^3.0.0", + "@hotwired/turbo": "^7.0.1", "@popperjs/core": "^2.10.2", "@symfony/stimulus-bridge": "^3.0.0", + "@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/Resources/assets", "@symfony/webpack-encore": "^1.6.1", "bootstrap": "^4.4.1", "core-js": "^3.6.4", "jquery": "^3.5.1", "popper.js": "^1.14.7", "regenerator-runtime": "^0.13.2", - "@hotwired/stimulus": "^3.0.0", "webpack-bundle-analyzer": "^4.3.0", "webpack-notifier": "^1.6.0" }, diff --git a/symfony.lock b/symfony.lock index 36b17172..e8020b55 100644 --- a/symfony.lock +++ b/symfony.lock @@ -749,6 +749,9 @@ "templates/base.html.twig" ] }, + "symfony/ux-turbo": { + "version": "v2.0.1" + }, "symfony/validator": { "version": "5.4", "recipe": { diff --git a/yarn.lock b/yarn.lock index adfa4d49..2bc57483 100644 --- a/yarn.lock +++ b/yarn.lock @@ -955,6 +955,11 @@ resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.0.1.tgz#141f15645acaa3b133b7c247cad58ae252ffae85" integrity sha512-oHsJhgY2cip+K2ED7vKUNd2P+BEswVhrCYcJ802DSsblJFv7mPFVk3cQKvm2vHgHeDVdnj7oOKrBbzp1u8D+KA== +"@hotwired/turbo@^7.0.1": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-7.1.0.tgz#27e44e0e3dc5bd1d4bda0766d579cf5a14091cd7" + integrity sha512-Q8kGjqwPqER+CtpQudbH+3Zgs2X4zb6pBAlr6NsKTXadg45pAOvxI9i4QpuHbwSzR2+x87HUm+rot9F/Pe8rxA== + "@jridgewell/resolve-uri@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" @@ -1024,6 +1029,9 @@ loader-utils "^2.0.0" schema-utils "^3.0.0" +"@symfony/ux-turbo@file:vendor/symfony/ux-turbo/Resources/assets": + version "0.1.0" + "@symfony/webpack-encore@^1.6.1": version "1.8.1" resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-1.8.1.tgz#b28b574e33fefe0b7a46edc4b205ef93299c276d" From 5cc5c53853281a4225009aa0cfdd9cdad7293a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 4 Mar 2022 20:19:43 +0100 Subject: [PATCH 002/121] Automatic reload assets on when they change. --- config/packages/webpack_encore.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/packages/webpack_encore.yaml b/config/packages/webpack_encore.yaml index 0573cd1d..d324aa02 100644 --- a/config/packages/webpack_encore.yaml +++ b/config/packages/webpack_encore.yaml @@ -9,10 +9,10 @@ webpack_encore: defer: true # Uncomment (also under link_attributes) if using Turbo Drive # https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change - # 'data-turbo-track': reload - # link_attributes: + 'data-turbo-track': reload + link_attributes: # Uncomment if using Turbo Drive - # 'data-turbo-track': reload + 'data-turbo-track': reload # If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials') # crossorigin: 'anonymous' From f60ef33736a4c0e1e3d511ef77dbab4105265bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 4 Mar 2022 20:59:08 +0100 Subject: [PATCH 003/121] Load stimulus controllers properly --- assets/app.js | 12 ------------ assets/controllers/hello_controller.js | 16 ---------------- assets/js/app.js | 21 ++++++++++++--------- templates/base.html.twig | 10 ++++++---- 4 files changed, 18 insertions(+), 41 deletions(-) delete mode 100644 assets/app.js delete mode 100644 assets/controllers/hello_controller.js diff --git a/assets/app.js b/assets/app.js deleted file mode 100644 index bb0a6aa1..00000000 --- a/assets/app.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Welcome to your app's main JavaScript file! - * - * We recommend including the built version of this JavaScript file - * (and its CSS file) in your base layout (base.html.twig). - */ - -// any CSS you import will output into a single css file (app.css in this case) -import './styles/app.css'; - -// start the Stimulus application -import './bootstrap'; diff --git a/assets/controllers/hello_controller.js b/assets/controllers/hello_controller.js deleted file mode 100644 index 8c79f65a..00000000 --- a/assets/controllers/hello_controller.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Controller } from 'stimulus'; - -/* - * This is an example Stimulus controller! - * - * Any element with a data-controller="hello" attribute will cause - * this controller to be executed. The name "hello" comes from the filename: - * hello_controller.js -> "hello" - * - * Delete this file or adapt it for your use! - */ -export default class extends Controller { - connect() { - this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js'; - } -} diff --git a/assets/js/app.js b/assets/js/app.js index 2eb8508b..ad3af37f 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -26,15 +26,16 @@ // any CSS you require will output into a single css file (app.css in this case) -require('../css/app.css'); +// Main CSS files +import '../css/app.css'; + +// start the Stimulus application +import '../bootstrap'; // Need jQuery? Install it with "yarn add jquery", then uncomment to require it. const $ = require('jquery'); //Only include javascript - - - import '@fortawesome/fontawesome-free/css/all.css' import 'datatables.net-bs4/css/dataTables.bootstrap4.css' @@ -47,8 +48,10 @@ import "patternfly-bootstrap-treeview/src/css/bootstrap-treeview.css" import "bootstrap-fileinput/css/fileinput.css" -require('bootstrap'); +//import * as Turbo from "@hotwired/turbo" +require('bootstrap'); +/** //require( 'jszip' ); //#require( 'pdfmake' ); require( 'datatables.net-bs4' ); @@ -97,9 +100,9 @@ import 'katex/dist/katex.css'; window.ClipboardJS = require('clipboard'); require('../ts_src/ajax_ui'); -import {ajaxUI} from "../ts_src/ajax_ui"; +//import {ajaxUI} from "../ts_src/ajax_ui"; -window.ajaxUI = ajaxUI; +//window.ajaxUI = ajaxUI; //Require all events; require('../ts_src/event_listeners'); @@ -125,8 +128,8 @@ try { } //Start AjaxUI AFTER all event has been registered -$(document).ready(ajaxUI.start()); - +//$(document).ready(ajaxUI.start()); +*/ //console.log('Hello Webpack Encore! Edit me in assets/js/app.js'); \ No newline at end of file diff --git a/templates/base.html.twig b/templates/base.html.twig index b6537c36..27ab6230 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -47,6 +47,11 @@ {{ encore_entry_link_tags('app') }} {% endblock %} + + {% block javascripts %} + {{ encore_entry_script_tags('app') }} + {{ encore_entry_script_tags('ru2ftwofactor') }} + {% endblock %} {% block body %} @@ -119,9 +124,6 @@ {% endblock %} -{% block javascripts %} - {{ encore_entry_script_tags('app') }} - {{ encore_entry_script_tags('ru2ftwofactor') }} -{% endblock %} + From 3a21c18ba9c1e0e2f97277719e59a9604e9464f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 4 Mar 2022 21:12:16 +0100 Subject: [PATCH 004/121] Removed loading modal, as this is now done by turbo. --- templates/base.html.twig | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/templates/base.html.twig b/templates/base.html.twig index 27ab6230..bbacaa6d 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -78,14 +78,14 @@ -
-
+
+ {# Here will be the real content be injected#} {% block content %} {% endblock %} -
+ {% block scripts %} @@ -96,24 +96,6 @@
- {# Modal for loading bar #} - - {# Back to top buton #} From ae24fb5eb10ee809536bc7eeaab02f62a627bf9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 4 Mar 2022 21:20:18 +0100 Subject: [PATCH 005/121] Use renderForm for proper return codes for turbo --- .../AdminPages/BaseAdminController.php | 8 ++++---- src/Controller/LabelController.php | 4 ++-- src/Controller/PartController.php | 20 +++++++++---------- src/Controller/ScanController.php | 4 ++-- src/Controller/SecurityController.php | 8 ++++---- src/Controller/UserController.php | 4 ++-- src/Controller/UserSettingsController.php | 10 +++++----- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php index 8ce9bf5b..b11631db 100644 --- a/src/Controller/AdminPages/BaseAdminController.php +++ b/src/Controller/AdminPages/BaseAdminController.php @@ -263,9 +263,9 @@ abstract class BaseAdminController extends AbstractController /** @var AbstractPartsContainingRepository $repo */ $repo = $this->entityManager->getRepository($this->entity_class); - return $this->render($this->twig_template, [ + return $this->renderForm($this->twig_template, [ 'entity' => $entity, - 'form' => $form->createView(), + 'form' => $form, 'route_base' => $this->route_base, 'datatable' => $table, 'pdf_data' => $pdf_data ?? null, @@ -397,9 +397,9 @@ abstract class BaseAdminController extends AbstractController $em->flush(); } - return $this->render($this->twig_template, [ + return $this->renderForm($this->twig_template, [ 'entity' => $new_entity, - 'form' => $form->createView(), + 'form' => $form, 'import_form' => $import_form->createView(), 'mass_creation_form' => $mass_creation_form->createView(), 'route_base' => $this->route_base, diff --git a/src/Controller/LabelController.php b/src/Controller/LabelController.php index ac944f38..ef9c20f2 100644 --- a/src/Controller/LabelController.php +++ b/src/Controller/LabelController.php @@ -127,8 +127,8 @@ class LabelController extends AbstractController } } - return $this->render('LabelSystem/dialog.html.twig', [ - 'form' => $form->createView(), + return $this->renderForm('LabelSystem/dialog.html.twig', [ + 'form' => $form, 'pdf_data' => $pdf_data, 'filename' => $filename, 'profile' => $profile, diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php index 06b82b62..dd28a401 100644 --- a/src/Controller/PartController.php +++ b/src/Controller/PartController.php @@ -189,11 +189,11 @@ class PartController extends AbstractController $this->addFlash('error', 'part.edited_flash.invalid'); } - return $this->render('Parts/edit/edit_part_info.html.twig', - [ - 'part' => $part, - 'form' => $form->createView(), - ]); + return $this->renderForm('Parts/edit/edit_part_info.html.twig', + [ + 'part' => $part, + 'form' => $form, + ]); } /** @@ -313,10 +313,10 @@ class PartController extends AbstractController $this->addFlash('error', 'part.created_flash.invalid'); } - return $this->render('Parts/edit/new_part.html.twig', - [ - 'part' => $new_part, - 'form' => $form->createView(), - ]); + return $this->renderForm('Parts/edit/new_part.html.twig', + [ + 'part' => $new_part, + 'form' => $form, + ]); } } diff --git a/src/Controller/ScanController.php b/src/Controller/ScanController.php index 880af1a6..2da4e71a 100644 --- a/src/Controller/ScanController.php +++ b/src/Controller/ScanController.php @@ -72,8 +72,8 @@ class ScanController extends AbstractController } } - return $this->render('LabelSystem/Scanner/dialog.html.twig', [ - 'form' => $form->createView(), + return $this->renderForm('LabelSystem/Scanner/dialog.html.twig', [ + 'form' => $form, ]); } diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index f0058c8c..38fd9100 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -131,8 +131,8 @@ class SecurityController extends AbstractController return $this->redirectToRoute('login'); } - return $this->render('security/pw_reset_request.html.twig', [ - 'form' => $form->createView(), + return $this->renderForm('security/pw_reset_request.html.twig', [ + 'form' => $form, ]); } @@ -203,8 +203,8 @@ class SecurityController extends AbstractController } } - return $this->render('security/pw_reset_new_pw.html.twig', [ - 'form' => $form->createView(), + return $this->renderForm('security/pw_reset_new_pw.html.twig', [ + 'form' => $form, ]); } diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index bfb8e479..9000d3b0 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -239,10 +239,10 @@ class UserController extends AdminPages\BaseAdminController 'data' => $user, ]); - return $this->render('Users/user_info.html.twig', [ + return $this->renderForm('Users/user_info.html.twig', [ 'user' => $user, 'avatar' => $avatar, - 'form' => $builder->getForm()->createView(), + 'form' => $builder->getForm(), 'datatable' => $table, ]); } diff --git a/src/Controller/UserSettingsController.php b/src/Controller/UserSettingsController.php index 0dd2e301..6ccaebf9 100644 --- a/src/Controller/UserSettingsController.php +++ b/src/Controller/UserSettingsController.php @@ -350,14 +350,14 @@ class UserSettingsController extends AbstractController * Output both forms *****************************/ - return $this->render('Users/user_settings.html.twig', [ + return $this->renderForm('Users/user_settings.html.twig', [ 'user' => $user, - 'settings_form' => $form->createView(), - 'pw_form' => $pw_form->createView(), + 'settings_form' => $form, + 'pw_form' => $pw_form, 'page_need_reload' => $page_need_reload, - 'google_form' => $google_form->createView(), - 'backup_form' => $backup_form->createView(), + 'google_form' => $google_form, + 'backup_form' => $backup_form, 'tfa_google' => [ 'enabled' => $google_enabled, 'qrContent' => $googleAuthenticator->getQRContent($user), From 7b244d3034f5e9eddab285aa67d57323c98b14d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 5 Mar 2022 21:58:43 +0100 Subject: [PATCH 006/121] Enable js asset versioning in dev mode so we can use hotload. --- webpack.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 9ad68c37..785608c3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -82,7 +82,8 @@ Encore .enableBuildNotifications() .enableSourceMaps(!Encore.isProduction()) // enables hashed filenames (e.g. app.abc123.css) - .enableVersioning(Encore.isProduction()) + //.enableVersioning(Encore.isProduction()) + .enableVersioning() .configureBabel((config) => { config.plugins.push('@babel/plugin-proposal-class-properties'); From 41e0b251a9fbfd9d8ce6c1a70062c743584ea835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 5 Mar 2022 23:09:55 +0100 Subject: [PATCH 007/121] Enabled treeview with turbo frames. --- assets/js/app.js | 11 ++- assets/js/events_base.js | 27 ++++++ assets/js/sidebar.js | 155 +++++++++++++++++++++++++++++++++++ templates/_sidebar.html.twig | 25 +++--- templates/base.html.twig | 10 ++- 5 files changed, 211 insertions(+), 17 deletions(-) create mode 100644 assets/js/events_base.js create mode 100644 assets/js/sidebar.js diff --git a/assets/js/app.js b/assets/js/app.js index ad3af37f..0e943d31 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -35,6 +35,8 @@ import '../bootstrap'; // Need jQuery? Install it with "yarn add jquery", then uncomment to require it. const $ = require('jquery'); +import './events_base' + //Only include javascript import '@fortawesome/fontawesome-free/css/all.css' @@ -48,9 +50,14 @@ import "patternfly-bootstrap-treeview/src/css/bootstrap-treeview.css" import "bootstrap-fileinput/css/fileinput.css" -//import * as Turbo from "@hotwired/turbo" require('bootstrap'); + +// Import Bootstrap treeview +import "patternfly-bootstrap-treeview"; + +import "./sidebar" + /** //require( 'jszip' ); //#require( 'pdfmake' ); @@ -72,7 +79,7 @@ window.Bloodhound = require('corejs-typeahead/dist/bloodhound.js'); //Define jquery globally window.$ = window.jQuery = require("jquery"); -require('patternfly-bootstrap-treeview/src/js/bootstrap-treeview'); + require('bootstrap-fileinput'); diff --git a/assets/js/events_base.js b/assets/js/events_base.js new file mode 100644 index 00000000..97e210b7 --- /dev/null +++ b/assets/js/events_base.js @@ -0,0 +1,27 @@ +function registerLoadHandler(fn) { + document.documentElement.addEventListener('turbo:load', fn); +} + + +registerLoadHandler(function() { + /** + * Register the button, to jump to the top of the page. + */ + $(document).on("ajaxUI:start", function registerJumpToTop() { + $(window).scroll(function () { + if ($(this).scrollTop() > 50) { + $('#back-to-top').fadeIn(); + } else { + $('#back-to-top').fadeOut(); + } + }); + // scroll body to 0px on click + $('#back-to-top').click(function () { + $('#back-to-top').tooltip('hide'); + $('body,html').animate({ + scrollTop: 0 + }, 800); + return false; + }).tooltip(); + }); +}) \ No newline at end of file diff --git a/assets/js/sidebar.js b/assets/js/sidebar.js new file mode 100644 index 00000000..fa0db833 --- /dev/null +++ b/assets/js/sidebar.js @@ -0,0 +1,155 @@ +'use strict'; + +import * as Turbo from '@hotwired/turbo'; + +const SidebarHelper = class { + constructor() { + this.BASE = $("body").data("base-url"); + //If path doesn't end with slash, add it. + if(this.BASE[this.BASE.length - 1] !== '/') { + this.BASE = this.BASE + '/'; + } + console.info("Base path is " + this.BASE); + + this.fillTrees(); + } + + /** + * Fill the trees with the given data. + */ + fillTrees() + { + let categories = localStorage.getItem("tree_datasource_tree-categories"); + let devices = localStorage.getItem("tree_datasource_tree-devices"); + let tools = localStorage.getItem("tree_datasource_tree-tools"); + + if(categories == null) { + categories = "categories"; + } + + if(devices == null) { + devices = "devices"; + } + + if(tools == null) { + tools = "tools"; + } + + this.treeLoadDataSource("tree-categories", categories); + this.treeLoadDataSource("tree-devices", devices); + this.treeLoadDataSource("tree-tools", tools); + + this.trees_filled = true; + + let _this = this; + + //Register tree btns to expand all, or to switch datasource. + $(".tree-btns").click(function (event) { + event.preventDefault(); + $(this).parents("div.dropdown").removeClass('show'); + //$(this).closest(".dropdown-menu").removeClass('show'); + $(".dropdown-menu.show").removeClass("show"); + let mode = $(this).data("mode"); + let target = $(this).data("target"); + let text = $(this).text() + " \n"; //Add caret or it will be removed, when written into title + + if (mode==="collapse") { + // @ts-ignore + $('#' + target).treeview('collapseAll', { silent: true }); + } + else if(mode==="expand") { + // @ts-ignore + $('#' + target).treeview('expandAll', { silent: true }); + } else { + localStorage.setItem("tree_datasource_" + target, mode); + _this.treeLoadDataSource(target, mode); + } + + return false; + }); + } + + /** + * Load the given url into the tree with the given id. + * @param target_id + * @param datasource + */ + treeLoadDataSource(target_id, datasource) { + let text = $(".tree-btns[data-mode='" + datasource + "']").html(); + text = text + " \n"; //Add caret or it will be removed, when written into title + switch(datasource) { + case "categories": + this.initTree("#" + target_id, 'tree/categories'); + break; + case "locations": + this.initTree("#" + target_id, 'tree/locations'); + break; + case "footprints": + this.initTree("#" + target_id, 'tree/footprints'); + break; + case "manufacturers": + this.initTree("#" + target_id, 'tree/manufacturers'); + break; + case "suppliers": + this.initTree("#" + target_id, 'tree/suppliers'); + break; + case "tools": + this.initTree("#" + target_id, 'tree/tools'); + break; + case "devices": + this.initTree("#" + target_id, 'tree/devices'); + break; + } + + $( "#" + target_id + "-title").html(text); + } + + /** + * Fill a treeview with data from the given url. + * @param tree The Jquery selector for the tree (e.g. "#tree-tools") + * @param url The url from where the data should be loaded + */ + initTree(tree, url) { + //let contextmenu_handler = this.onNodeContextmenu; + $.getJSON(this.BASE + url, function (data) { + // @ts-ignore + $(tree).treeview({ + data: data, + enableLinks: true, + showIcon: false, + showBorder: true, + searchResultBackColor: '#ffc107', + searchResultColor: '#000', + onNodeSelected: function(event, data) { + if(data.href) { + + //Simulate a click so we just change the inner frame + let a = document.createElement('a'); + a.setAttribute('href', data.href); + a.innerHTML = ""; + $(tree).append(a); + a.click(); + a.remove(); + //Turbo.visit(data.href) + } + }, + //onNodeContextmenu: contextmenu_handler, + expandIcon: "fas fa-plus fa-fw fa-treeview", collapseIcon: "fas fa-minus fa-fw fa-treeview"}) + .on('initialized', function() { + $(this).treeview('collapseAll', { silent: true }); + + //Implement searching if needed. + if($(this).data('treeSearch')) { + let _this = this; + let $search = $($(this).data('treeSearch')); + $search.on( 'input', function() { + $(_this).treeview('collapseAll', { silent: true }); + $(_this).treeview('search', [$search.val()]); + }); + } + }); + }); + } +} + +export default new SidebarHelper(); \ No newline at end of file diff --git a/templates/_sidebar.html.twig b/templates/_sidebar.html.twig index 2ccabdc5..4b58a828 100644 --- a/templates/_sidebar.html.twig +++ b/templates/_sidebar.html.twig @@ -1,16 +1,17 @@ + {% macro sidebar_dropdown(target) %} - -
  • {% trans %}expandAll{% endtrans %}
  • -
  • {% trans %}reduceAll{% endtrans %}
  • - - -
  • {% trans %}category.labelp{% endtrans %}
  • -
  • {% trans %}storelocation.labelp{% endtrans %}
  • -
  • {% trans %}footprint.labelp{% endtrans %}
  • -
  • {% trans %}manufacturer.labelp{% endtrans %}
  • -
  • {% trans %}supplier.labelp{% endtrans %}
  • -
  • {% trans %}device.labelp{% endtrans %}
  • -
  • {% trans %}tools.label{% endtrans %}
  • + +
  • {% trans %}expandAll{% endtrans %}
  • +
  • {% trans %}reduceAll{% endtrans %}
  • + + +
  • {% trans %}category.labelp{% endtrans %}
  • +
  • {% trans %}storelocation.labelp{% endtrans %}
  • +
  • {% trans %}footprint.labelp{% endtrans %}
  • +
  • {% trans %}manufacturer.labelp{% endtrans %}
  • +
  • {% trans %}supplier.labelp{% endtrans %}
  • +
  • {% trans %}device.labelp{% endtrans %}
  • +
  • {% trans %}tools.label{% endtrans %}
  • {% endmacro %} diff --git a/templates/_turbo_control.html.twig b/templates/_turbo_control.html.twig index 0cbf284e..e110c472 100644 --- a/templates/_turbo_control.html.twig +++ b/templates/_turbo_control.html.twig @@ -15,4 +15,12 @@
    {% endif %} -
    \ No newline at end of file +
    + +
    + {% for locale in locale_menu %} + + {{ locale|language_name }} ({{ locale|upper }}) + {% endfor %} +
    \ No newline at end of file From bf1bede626583d9fa64d06f7f5f1284921e712df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 24 Jul 2022 17:11:30 +0200 Subject: [PATCH 027/121] Updated marked and katex packages. --- .../controllers/common/markdown_controller.js | 2 +- package.json | 6 ++--- yarn.lock | 24 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/assets/controllers/common/markdown_controller.js b/assets/controllers/common/markdown_controller.js index 87eacd86..1f243800 100644 --- a/assets/controllers/common/markdown_controller.js +++ b/assets/controllers/common/markdown_controller.js @@ -1,7 +1,7 @@ 'use strict'; import { Controller } from '@hotwired/stimulus'; -import * as marked from "marked"; +import { marked } from "marked"; import DOMPurify from 'dompurify'; export default class extends Controller { diff --git a/package.json b/package.json index 8ea7af5d..74275369 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@types/bootstrap-treeview": "^1.20.0", "@types/jquery": "^3.3.29", "@types/jquery.form": "^3.26.30", - "@types/marked": "^3.0.1", + "@types/marked": "^4.0.3", "@types/typeahead": "^0.11.32", "@zxing/library": "^0.19.1", "bootbox": "^5.4.0", @@ -52,8 +52,8 @@ "exports-loader": "^3.0.0", "jquery-form": "^4.2.2", "jszip": "^3.2.0", - "katex": "^0.13.0", - "marked": "^3.0.1", + "katex": "^0.16.0", + "marked": "^4.0.3", "patternfly-bootstrap-treeview": "^2.1.8", "pdfmake": "^0.2.2", "stimulus-use": "^0.41.0", diff --git a/yarn.lock b/yarn.lock index a99322b2..3101c135 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1237,10 +1237,10 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/marked@^3.0.1": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-3.0.3.tgz#37878f405d5f0cff0e6128cea330bd0aa8df8cb3" - integrity sha512-ZgAr847Wl68W+B0sWH7F4fDPxTzerLnRuUXjUpp1n4NjGSs8hgPAjAp7NQIXblG34MXTrf5wWkAK8PVJ2LIlVg== +"@types/marked@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4" + integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg== "@types/mime@^1": version "1.3.2" @@ -3510,10 +3510,10 @@ jszip@^3.2.0: readable-stream "~2.3.6" setimmediate "^1.0.5" -katex@^0.13.0: - version "0.13.24" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.24.tgz#fe55455eb455698cb24b911a353d16a3c855d905" - integrity sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w== +katex@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.0.tgz#4faff4c905aad0c6010e85901c4d9140efb80a5e" + integrity sha512-wPRB4iUPysfH97wTgG5/tRLYxmKVq6Q4jRAWRVOUxXB1dsiv4cvcNjqabHkrOvJHM1Bpk3WrgmllSO1vIvP24w== dependencies: commander "^8.0.0" @@ -3612,10 +3612,10 @@ make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -marked@^3.0.1: - version "3.0.8" - resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.8.tgz#2785f0dc79cbdc6034be4bb4f0f0a396bd3f8aeb" - integrity sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw== +marked@^4.0.3: + version "4.0.18" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.18.tgz#cd0ac54b2e5610cfb90e8fd46ccaa8292c9ed569" + integrity sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw== mdn-data@2.0.14: version "2.0.14" From 50e3a5918929b2647d8bc0a863c9be9b3179aad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 24 Jul 2022 17:15:56 +0200 Subject: [PATCH 028/121] Updated various yarn dependencies. --- package.json | 11 ++----- yarn.lock | 88 +++++++++++++++++----------------------------------- 2 files changed, 31 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 74275369..73d088f9 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,6 @@ "dependencies": { "@types/bootbox": "^5.2.0", "@types/bootstrap": "^4.3.0", - "@types/bootstrap-treeview": "^1.20.0", - "@types/jquery": "^3.3.29", - "@types/jquery.form": "^3.26.30", - "@types/marked": "^4.0.3", "@types/typeahead": "^0.11.32", "@zxing/library": "^0.19.1", "bootbox": "^5.4.0", @@ -38,8 +34,8 @@ "bootswatch": "^4.3.1", "bs-custom-file-input": "^1.3.4", "clipboard": "^2.0.4", - "compression-webpack-plugin": "^9.0.0", - "copy-webpack-plugin": "^9.0.0", + "compression-webpack-plugin": "^10.0.0", + "copy-webpack-plugin": "^11.0.0", "corejs-typeahead": "^1.2.1", "darkmode-js": "^1.5.0", "datatables.net-bs4": "^2.0.1", @@ -50,13 +46,12 @@ "datatables.net-select-bs4": "^1.2.7", "dompurify": "^2.0.6", "exports-loader": "^3.0.0", - "jquery-form": "^4.2.2", "jszip": "^3.2.0", "katex": "^0.16.0", "marked": "^4.0.3", "patternfly-bootstrap-treeview": "^2.1.8", "pdfmake": "^0.2.2", - "stimulus-use": "^0.41.0", + "stimulus-use": "^0.50.0", "ts-loader": "^9.2.6", "typescript": "^4.0.2", "u2f-api": "^1.1.1" diff --git a/yarn.lock b/yarn.lock index 3101c135..9ce4463d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1128,13 +1128,6 @@ dependencies: "@types/jquery" "*" -"@types/bootstrap-treeview@^1.20.0": - version "1.20.1" - resolved "https://registry.yarnpkg.com/@types/bootstrap-treeview/-/bootstrap-treeview-1.20.1.tgz#02ebca9a6ddc9d6d006419486802e024b3604869" - integrity sha512-30smzUSQfnnU7KMFTV3AXgmsrHxbfkjSF8BdH/aJTaPAqR21LRxQ/38huKuSt88Xwnqfb1JEbbo8iuIK/+f5Rw== - dependencies: - "@types/jquery" "*" - "@types/bootstrap@^4.3.0": version "4.6.2" resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-4.6.2.tgz#84d4dd3ee41e903c7bc17e47b9997ec804d8d64e" @@ -1218,14 +1211,7 @@ dependencies: "@types/node" "*" -"@types/jquery.form@^3.26.30": - version "3.26.31" - resolved "https://registry.yarnpkg.com/@types/jquery.form/-/jquery.form-3.26.31.tgz#888cc14bcf2fcd9c7c9c9d9ddae5d54e91489b27" - integrity sha512-4nt74YdNaYV7QMHSMqeYOU3EGhgbWV7QNpjXN+/aWwZnf/tk4y2PwTflEkVBaOMr9o0pVeofz/uJtEgaCB+frg== - dependencies: - "@types/jquery" "*" - -"@types/jquery@*", "@types/jquery@^3.3.29": +"@types/jquery@*": version "3.5.14" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.14.tgz#ac8e11ee591e94d4d58da602cb3a5a8320dee577" integrity sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg== @@ -1237,11 +1223,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/marked@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4" - integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -1628,11 +1609,6 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2043,10 +2019,10 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression-webpack-plugin@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz#57fd539d17c5907eebdeb4e83dcfe2d7eceb9ef6" - integrity sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw== +compression-webpack-plugin@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz#3496af1b0dc792e13efc474498838dbff915c823" + integrity sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg== dependencies: schema-utils "^4.0.0" serialize-javascript "^6.0.0" @@ -2118,16 +2094,16 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -copy-webpack-plugin@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" - integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: - fast-glob "^3.2.7" + fast-glob "^3.2.11" glob-parent "^6.0.1" - globby "^11.0.3" + globby "^13.1.1" normalize-path "^3.0.0" - schema-utils "^3.1.1" + schema-utils "^4.0.0" serialize-javascript "^6.0.0" core-js-compat@^3.21.0, core-js-compat@^3.22.1: @@ -2882,7 +2858,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.7, fast-glob@^3.2.9: +fast-glob@^3.2.11: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -3078,17 +3054,16 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== +globby@^13.1.1: + version "13.1.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== dependencies: - array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.2.9" + fast-glob "^3.2.11" ignore "^5.2.0" merge2 "^1.4.1" - slash "^3.0.0" + slash "^4.0.0" globby@^6.1.0: version "6.1.0" @@ -3453,14 +3428,7 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jquery-form@^4.2.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.3.0.tgz#7d3961c314a1f2d15298f4af1d3943f54f4149c6" - integrity sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ== - dependencies: - jquery ">=1.7.2" - -"jquery@>= 1.9.0", jquery@>=1.11, jquery@>=1.7, jquery@>=1.7.2, jquery@^3.4.1, jquery@^3.5.1: +"jquery@>= 1.9.0", jquery@>=1.11, jquery@>=1.7, jquery@^3.4.1, jquery@^3.5.1: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -4791,10 +4759,10 @@ sirv@^1.0.7: mrmime "^1.0.0" totalist "^1.0.0" -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== sockjs@^0.3.24: version "0.3.24" @@ -4910,10 +4878,10 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -stimulus-use@^0.41.0: - version "0.41.0" - resolved "https://registry.yarnpkg.com/stimulus-use/-/stimulus-use-0.41.0.tgz#afe2559281ebe0504b1d35eb0e8e77df9ebd6fb6" - integrity sha512-d+XWb5YN2L9I+4zQDtE1sJVy1DBO+1qgNcjV0XpMw7KXPJ8m8JA5lcJk3qgbxV86ePHko0CP9F3dzVsapQwzmA== +stimulus-use@^0.50.0: + version "0.50.0" + resolved "https://registry.yarnpkg.com/stimulus-use/-/stimulus-use-0.50.0.tgz#0bae92fbb1fd961cbb23569f9edd12ae642ce4a6" + integrity sha512-9NScZQiOycQdzh8VZ15pxk6ep/a22fgha2halOvZFpJITC4nsTbWlO7D1hm+9LspFxa5b28tQhm3XkbH/qAlGw== dependencies: hotkeys-js ">=3" From a40fed29e0c75d3666423e8336c0e621ec6e2e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 24 Jul 2022 17:24:55 +0200 Subject: [PATCH 029/121] Upgraded fontawesome 5 to 6 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 73d088f9..c799f76b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "@fortawesome/fontawesome-free": "^5.7.2", + "@fortawesome/fontawesome-free": "^6.1.1", "@hotwired/stimulus": "^3.0.0", "@symfony/stimulus-bridge": "^3.2.0", "@symfony/webpack-encore": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 9ce4463d..50898d49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -943,10 +943,10 @@ resolved "https://registry.yarnpkg.com/@foliojs-fork/restructure/-/restructure-2.0.2.tgz#73759aba2aff1da87b7c4554e6839c70d43c92b4" integrity sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA== -"@fortawesome/fontawesome-free@^5.7.2": - version "5.15.4" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" - integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== +"@fortawesome/fontawesome-free@^6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.1.1.tgz#bf5d45611ab74890be386712a0e5d998c65ee2a1" + integrity sha512-J/3yg2AIXc9wznaVqpHVX3Wa5jwKovVF0AMYSnbmcXTiL3PpRPfF58pzWucCwEiCJBp+hCNRLWClTomD8SseKg== "@hotwired/stimulus-webpack-helpers@^1.0.1": version "1.0.1" From 365c7c60e4d91605014ef30bf90277f639cef070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 24 Jul 2022 18:08:21 +0200 Subject: [PATCH 030/121] Started to upgrade from bootstrap 4 to 5. --- assets/css/app.css | 5 + assets/js/datatables.js | 22 +-- package.json | 18 ++- .../AdminPages/EntityAdminBase.html.twig | 4 +- templates/AdminPages/_attachments.html.twig | 2 +- templates/AdminPages/_delete_form.html.twig | 6 +- templates/LabelSystem/dialog.html.twig | 2 +- .../LabelSystem/dropdown_macro.html.twig | 2 +- templates/Parts/edit/edit_part_info.html.twig | 4 +- .../Parts/info/_attachments_info.html.twig | 2 +- templates/Parts/info/_order_infos.html.twig | 2 +- templates/Parts/info/_tools.html.twig | 4 +- templates/Parts/info/show_part_info.html.twig | 2 +- templates/Parts/lists/_action_bar.html.twig | 2 +- templates/Parts/lists/_info_card.html.twig | 2 +- templates/Statistics/statistics.html.twig | 2 +- templates/Tools/ReelCalculator/main.html.twig | 6 +- templates/Users/backup_codes.html.twig | 2 +- templates/_navbar.html.twig | 125 ++++++++++-------- templates/_navbar_search.html.twig | 10 +- templates/_sidebar.html.twig | 6 +- templates/_toast.html.twig | 8 +- templates/base.html.twig | 4 +- templates/homepage.html.twig | 2 +- templates/security/2fa_base_form.html.twig | 4 +- templates/security/U2F/u2f_login.html.twig | 2 +- yarn.lock | 71 ++++------ 27 files changed, 164 insertions(+), 157 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index 461dfb26..cff5513c 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -243,6 +243,11 @@ showing the sidebar (on devices with md or higher) * Bootstrap extensions *****************************************/ +/* Dont underline links */ +a { + text-decoration: none; +} + .w-fit { width: -moz-fit-content; width: fit-content; diff --git a/assets/js/datatables.js b/assets/js/datatables.js index e2ded416..5166fa74 100644 --- a/assets/js/datatables.js +++ b/assets/js/datatables.js @@ -1,19 +1,19 @@ "use strict"; //Styles -import 'datatables.net-bs4/css/dataTables.bootstrap4.css' -import 'datatables.net-buttons-bs4/css/buttons.bootstrap4.css' -import 'datatables.net-fixedheader-bs4/css/fixedHeader.bootstrap4.css' -import 'datatables.net-select-bs4/css/select.bootstrap4.css' -import 'datatables.net-responsive-bs4/css/responsive.bootstrap4.css'; +import 'datatables.net-bs5/css/dataTables.bootstrap5.css' +import 'datatables.net-buttons-bs5/css/buttons.bootstrap5.css' +import 'datatables.net-fixedheader-bs5/css/fixedHeader.bootstrap5.css' +import 'datatables.net-select-bs5/css/select.bootstrap5.css' +import 'datatables.net-responsive-bs5/css/responsive.bootstrap5.css'; //JS -import 'datatables.net-bs4'; -import 'datatables.net-buttons-bs4'; +import 'datatables.net-bs5'; +import 'datatables.net-buttons-bs5'; import 'datatables.net-buttons/js/buttons.colVis.js'; -import 'datatables.net-fixedheader-bs4'; -import 'datatables.net-select-bs4'; -import 'datatables.net-colreorder-bs4'; -import 'datatables.net-responsive-bs4'; +import 'datatables.net-fixedheader-bs5'; +import 'datatables.net-select-bs5'; +import 'datatables.net-colreorder-bs5'; +import 'datatables.net-responsive-bs5'; import './lib/datatables'; diff --git a/package.json b/package.json index c799f76b..0fd9d5e9 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "@hotwired/turbo": "^7.0.1", "@popperjs/core": "^2.10.2", "@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/Resources/assets", - "bootstrap": "^4.4.1", + "bootstrap": "^5.1.3", "jquery": "^3.5.1", "popper.js": "^1.14.7", "webpack-bundle-analyzer": "^4.3.0" @@ -24,26 +24,24 @@ "build": "encore production --progress" }, "dependencies": { - "@types/bootbox": "^5.2.0", - "@types/bootstrap": "^4.3.0", "@types/typeahead": "^0.11.32", "@zxing/library": "^0.19.1", "bootbox": "^5.4.0", "bootstrap-fileinput": "^5.0.1", "bootstrap-select": "^1.13.8", - "bootswatch": "^4.3.1", + "bootswatch": "^5.1.3", "bs-custom-file-input": "^1.3.4", "clipboard": "^2.0.4", "compression-webpack-plugin": "^10.0.0", "copy-webpack-plugin": "^11.0.0", "corejs-typeahead": "^1.2.1", "darkmode-js": "^1.5.0", - "datatables.net-bs4": "^2.0.1", - "datatables.net-buttons-bs4": "^2.2.2", - "datatables.net-colreorder-bs4": "^1.5.1", - "datatables.net-fixedheader-bs4": "^3.1.5", - "datatables.net-responsive-bs4": "^2.2.3", - "datatables.net-select-bs4": "^1.2.7", + "datatables.net-bs5": "^1.10.20", + "datatables.net-buttons-bs5": "^2.2.2", + "datatables.net-colreorder-bs5": "^1.5.1", + "datatables.net-fixedheader-bs5": "^3.1.5", + "datatables.net-responsive-bs5": "^2.2.3", + "datatables.net-select-bs5": "^1.2.7", "dompurify": "^2.0.6", "exports-loader": "^3.0.0", "jszip": "^3.2.0", diff --git a/templates/AdminPages/EntityAdminBase.html.twig b/templates/AdminPages/EntityAdminBase.html.twig index d95cb374..1b6e4b0f 100644 --- a/templates/AdminPages/EntityAdminBase.html.twig +++ b/templates/AdminPages/EntityAdminBase.html.twig @@ -54,7 +54,7 @@ {% if timeTravel is defined and timeTravel is not null %} ({{ timeTravel|format_datetime('short') }}) {% endif %} - {% block quick_links %}{% endblock %} + {% block quick_links %}{% endblock %} {% else %} {% block new_title %}{% trans %}new.caption{% endtrans %}{% endblock %} {% endif %} @@ -139,7 +139,7 @@
    {{ form_widget(form.save) }} -