From 55eabd669459734f1661983dd8f6d1ff66102342 Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Mon, 8 May 2023 12:53:10 +1200 Subject: [PATCH] FIX Don't require jquery on the frontend (#2854) --- client/dist/js/SilverStripeNavigator.js | 2 +- client/src/legacy/SilverStripeNavigator.js | 90 ++++++++++++++++------ code/Controllers/ContentController.php | 1 - 3 files changed, 66 insertions(+), 27 deletions(-) diff --git a/client/dist/js/SilverStripeNavigator.js b/client/dist/js/SilverStripeNavigator.js index c237de78..dfc74105 100644 --- a/client/dist/js/SilverStripeNavigator.js +++ b/client/dist/js/SilverStripeNavigator.js @@ -1 +1 @@ -!function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s="./client/src/legacy/SilverStripeNavigator.js")}({"./client/src/legacy/SilverStripeNavigator.js":function(e,t,r){"use strict";function n(e){return document.getElementsByTagName("base")[0].href.replace("http://","").replace(/\//g,"_").replace(/\./g,"_")+e}var i=r(0),o=function(e){return e&&e.__esModule?e:{default:e}}(i);(0,o.default)(document).ready(function(){(0,o.default)("#switchView a.newWindow").on("click",function(e){return window.open(this.href,n(this.target)).focus(),!1}),(0,o.default)("#SilverStripeNavigatorLink").on("click",function(e){return(0,o.default)("#SilverStripeNavigatorLinkPopup").toggle(),!1}),(0,o.default)("#SilverStripeNavigatorLinkPopup a.close").on("click",function(e){return(0,o.default)("#SilverStripeNavigatorLinkPopup").hide(),!1}),(0,o.default)("#SilverStripeNavigatorLinkPopup input").on("focus",function(e){this.select()})})},0:function(e,t){e.exports=jQuery}}); \ No newline at end of file +!function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s="./client/src/legacy/SilverStripeNavigator.js")}({"./client/src/legacy/SilverStripeNavigator.js":function(e,t,r){"use strict";!function(){function e(e){return document.getElementsByTagName("base")[0].href.replace("http://","").replace(/\//g,"_").replace(/\./g,"_")+e}function t(e){var t=getComputedStyle(e).display;e.style.display="none",e.dataset.__toggle_display=t}function r(e){e.style.display=e.dataset.__toggle_display?e.dataset.__toggle_display:"block"}function n(e){"none"!==getComputedStyle(e).display?t(e):r(e)}var a=document.querySelectorAll("#switchView a.newWindow");if(a.length>0){var i=!0,l=!1,o=void 0;try{for(var u,c=a.values()[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var f=u.value;!function(t){t.addEventListener("click",function(r){return r.preventDefault(),window.open(t.href,e(t.target)).focus(),!1})}(f)}}catch(e){l=!0,o=e}finally{try{!i&&c.return&&c.return()}finally{if(l)throw o}}}var v=document.getElementById("SilverStripeNavigatorLinkPopup");if(v){var s=document.getElementById("SilverStripeNavigatorLink");s&&s.addEventListener("click",function(e){return e.preventDefault(),n(v),!1});var d=v.querySelectorAll("a.close");if(d.length>0){var y=!0,p=!1,g=void 0;try{for(var S,m=d.values()[Symbol.iterator]();!(y=(S=m.next()).done);y=!0)S.value.addEventListener("click",function(e){return e.preventDefault(),t(v),!1})}catch(e){p=!0,g=e}finally{try{!y&&m.return&&m.return()}finally{if(p)throw g}}}var h=v.querySelectorAll("input");if(h.length>0){var _=!0,w=!1,b=void 0;try{for(var x,E=h.values()[Symbol.iterator]();!(_=(x=E.next()).done);_=!0){var k=x.value;!function(e){e.addEventListener("focus",function(t){e.select()})}(k)}}catch(e){w=!0,b=e}finally{try{!_&&E.return&&E.return()}finally{if(w)throw b}}}}}()}}); \ No newline at end of file diff --git a/client/src/legacy/SilverStripeNavigator.js b/client/src/legacy/SilverStripeNavigator.js index a5ffc57b..0f70a31b 100644 --- a/client/src/legacy/SilverStripeNavigator.js +++ b/client/src/legacy/SilverStripeNavigator.js @@ -1,29 +1,69 @@ -import $ from 'jquery'; +(function() { + function windowName(suffix) { + const base = document.getElementsByTagName('base')[0].href.replace('http://','').replace(/\//g,'_').replace(/\./g,'_'); + return base + suffix; + } -function windowName(suffix) { - var base = document.getElementsByTagName('base')[0].href.replace('http://','').replace(/\//g,'_').replace(/\./g,'_'); - return base + suffix; -} + function displayHide(elem) { + const displayComputed = getComputedStyle(elem).display; + elem.style.display = 'none'; + elem.dataset.__toggle_display = displayComputed; + } + function displayShow(elem) { + elem.style.display = elem.dataset.__toggle_display ? elem.dataset.__toggle_display : 'block'; + } -$(document).ready(function() { - $('#switchView a.newWindow').on('click', function(e) { - var w = window.open(this.href, windowName(this.target)); - w.focus(); - return false; - }); + function displayToggle(elem) { + const displayComputed = getComputedStyle(elem).display; + if (displayComputed !== 'none') { + displayHide(elem); + } else { + displayShow(elem); + } + } - $('#SilverStripeNavigatorLink').on('click', function(e) { - $('#SilverStripeNavigatorLinkPopup').toggle(); - return false; - }); - - $('#SilverStripeNavigatorLinkPopup a.close').on('click', function(e) { - $('#SilverStripeNavigatorLinkPopup').hide(); - return false; - }); - - $('#SilverStripeNavigatorLinkPopup input').on('focus',function(e) { - this.select(); - }); -}); + const newWindowLinks = document.querySelectorAll('#switchView a.newWindow'); + if (newWindowLinks.length > 0) { + for (const link of newWindowLinks.values()) { + link.addEventListener('click', function(e) { + e.preventDefault(); + const w = window.open(link.href, windowName(link.target)); + w.focus(); + return false; + }); + } + } + + const popup = document.getElementById('SilverStripeNavigatorLinkPopup'); + if (popup) { + const navigatorLink = document.getElementById('SilverStripeNavigatorLink'); + if (navigatorLink) { + navigatorLink.addEventListener('click', function(e) { + e.preventDefault(); + displayToggle(popup); + return false; + }); + } + + const closeLinks = popup.querySelectorAll('a.close'); + if (closeLinks.length > 0) { + for (const link of closeLinks.values()) { + link.addEventListener('click', function(e) { + e.preventDefault(); + displayHide(popup); + return false; + }); + } + } + + const inputs = popup.querySelectorAll('input'); + if (inputs.length > 0) { + for (const input of inputs.values()) { + input.addEventListener('focus', function(e) { + input.select(); + }); + } + } + } +})(); diff --git a/code/Controllers/ContentController.php b/code/Controllers/ContentController.php index 3fcb51f9..bdfa42d7 100644 --- a/code/Controllers/ContentController.php +++ b/code/Controllers/ContentController.php @@ -352,7 +352,6 @@ class ContentController extends Controller if (Director::isDev() || Permission::check('CMS_ACCESS_CMSMain') || Permission::check('VIEW_DRAFT_CONTENT')) { if ($this->dataRecord) { Requirements::css('silverstripe/cms: client/dist/styles/SilverStripeNavigator.css'); - Requirements::javascript('silverstripe/admin: thirdparty/jquery/jquery.js'); Requirements::javascript('silverstripe/cms: client/dist/js/SilverStripeNavigator.js'); $return = $nav = SilverStripeNavigator::get_for_record($this->dataRecord);