diff --git a/composer.json b/composer.json index c097e3f37..1a5e41e68 100644 --- a/composer.json +++ b/composer.json @@ -65,8 +65,7 @@ "monolog/monolog": "1.23.*", "newerton/jquery-mousewheel": "dev-master", "pamelafox/lscache": "1.0.5", - "malihu/malihu-custom-scrollbar-plugin": "3.1.5", - "grimmlink/qtip2": "3.0.3" + "malihu/malihu-custom-scrollbar-plugin": "3.1.5" }, "require-dev": { "phpunit/phpunit": "9.5.*", diff --git a/resource/css/jquery.qtip.min.css b/resource/css/jquery.qtip.min.css deleted file mode 100644 index a5f93b5e3..000000000 --- a/resource/css/jquery.qtip.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* qTip2 v2.2.0 css3 | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 17:53:30 */ -.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible} \ No newline at end of file diff --git a/resource/css/styles.css b/resource/css/styles.css index 323176cf8..c182874ca 100644 --- a/resource/css/styles.css +++ b/resource/css/styles.css @@ -103,9 +103,6 @@ h1, .prefLabel, .prefLabelLang, .notation { font-size: 16px; } -.multiselect span, .multiselect a, .dropdown-toggle, #search-all-button, .qtip-skosmos * { -} - .topbar a.navigation-font, .topbar span { color: var(--dark-color); } @@ -855,31 +852,10 @@ ul.dropdown-menu > li:last-child > input { width: 50px; } -.qtip-skosmos { - background-color: var(--tooltip-bg-color); - border-radius: 0; - border: 3px solid var(--tooltip-border-color); - margin-top: 12px; - margin-left: 9px; - min-width: 400px; -} - -.qtip-skosmos *, .reified-tooltip > p > span { - color: var(--white-color); - font-size: var(--font-size); - font-weight: 400; -} - -.qtip-skosmos a { - color: var(--tooltip-text-color) !important; - width: 100%; -} - .reified-tooltip { display: none; margin-top: 5px; width: 100%; - } .reified-property-value > img { @@ -2270,14 +2246,6 @@ body, .versal, h1, h2, h3, p, .versal-bold { display: none; } - .qtip-skosmos:not(#qtip-0) { - left: 0 !important; - } - - .qtip-skosmos:not(#qtip-0) canvas { - display: none !important; - } - .content { margin: 0 auto; } @@ -2324,14 +2292,6 @@ body, .versal, h1, h2, h3, p, .versal-bold { margin-left: 10px; margin-top: 20px; } - - .qtip-skosmos { - min-width: auto; - left: 0 !important; - } - .qtip-skosmos canvas { - display: none !important; - } } @media (max-width: 530px) { @@ -2758,3 +2718,223 @@ body, .versal, h1, h2, h3, p, .versal-bold { border: 2px dashed #62729f !important; } + +/* + * Skosmos tooltips. + * + * Created to replace https://github.com/qTip2/qTip2/ as that library is not maintained anymore, + * and creates issues when trying to update JQuery versions. + * + * The .skosmos-tooltip{-wrapper} classes are derived from https://dev.to/r3zu3/pure-css-tooltip-1k3j. + * + * The .skosmos-tooltip-html* classes are from https://codepen.io/roydigerhund/pen/gPyzEa/. + */ +.skosmos-tooltip-wrapper { + width: fit-content; +} + +.skosmos-tooltip { + position: relative; +} + +.skosmos-tooltip a { + color: var(--tooltip-text-color) !important; + width: 100%; +} + +.skosmos-tooltip::before { + position: absolute; + content: ' '; + background-color: var(--tooltip-border-color); + border: 3px solid var(--tooltip-border-color); + width: 15px; + height: 15px; + z-index: 500; + opacity: 0; + /* transition: all cubic-bezier(0.17, 0.67, 0.5, 0.71) 100ms; */ + pointer-events: none; +} + +.skosmos-tooltip::after { + content: attr(data-title); + /* https://www.digitalocean.com/community/tutorials/css-line-break-content-property */ + white-space: pre-line; + max-width: 400px; + width: max-content; + display: inline-block; + border-radius: 0; + font-size: var(--font-size); + font-weight: 400; + color: var(--white-color); + background-color: var(--tooltip-bg-color); + border: 3px solid var(--tooltip-border-color); + position: absolute; + z-index: 9002; + opacity: 0; + /* transition: all cubic-bezier(0.17, 0.67, 0.5, 0.71) 100ms; */ + pointer-events: none; + margin: 12px 0 0 9px; + padding: 0.25rem 0.5rem; + text-transform: none; +} + +.skosmos-tooltip:focus { + z-index: 9002 !important; +} + +.skosmos-tooltip:hover::before, .skosmos-tooltip:hover::after { + opacity: 1; +} + +.skosmos-tooltip.t-top::before { + top: 0; + left: 50%; + transform: translate(0, 0) rotate(45deg); +} + +.skosmos-tooltip.t-top::after { + top: 0; + left: 0; + transform: translate(0, 0); +} + +.skosmos-tooltip.t-top:hover::before { + transform: translate(0, calc(-50% - 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-top:hover::after { + transform: translate(0, calc(-100% - 15px)); +} + +.skosmos-tooltip.t-left::before { + top: 25%; + left: 0; + transform: translate(0, 0%) rotate(45deg); +} + +.skosmos-tooltip.t-left::after { + top: 0; + left: 0; +} + +.skosmos-tooltip.t-left:hover::before { + transform: translate(calc(-100% - 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-left:hover::after { + transform: translate(calc(-100% - 10px)); +} + +.skosmos-tooltip.t-right::before { + top: 25%; + right: 0; + transform: translate(0, 0%) rotate(45deg); +} + +.skosmos-tooltip.t-right::after { + top: 0; + right: 0; +} + +.skosmos-tooltip.t-right:hover::before { + transform: translate(calc(100% + 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-right:hover::after { + transform: translate(calc(100% + 10px)); +} + +.skosmos-tooltip.t-bottom::before { + bottom: 0; + left: 50%; + transform: translate(-50%, 0) rotate(45deg); +} + +.skosmos-tooltip.t-bottom::after { + bottom: 0; + left: 50%; + transform: translate(-50%, 0); +} + +.skosmos-tooltip.t-bottom:hover::before { + transform: translate(-50%, calc(100% + 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-bottom:hover::after { + transform: translate(-50%, calc(100% + 10px)); +} + +/* These classes were needed for the reified properties tooltips, as they displayed HTML elements.*/ +/* + * Example use case: + * + *
First line
+ *Second line
+ *{{ key|trans }}: + {{ val }} +
+ {% endfor %} +{{ key|trans }}: - {{ val }} -
- {% endfor %} -{{ key }}: {{ val.label(request.contentLang) }}
{% endfor %}{{ key }}: {{ val.label(request.contentLang) }}
{% endfor %}{{ key|trans }}: +
{{ key|trans }}: {{ val }}
{% endfor %}{{ key|trans }}: - {{ val }} -
- {% endif %} + {% if key != 'rdf:type' and key != 'skosxl:literalForm' %} +{{ key|trans }}: + {{ val }} +
+ {% endif %} {% endfor %} -