inital commit after raw pull from drupal

This commit is contained in:
David Klimesh
2023-01-20 10:31:37 -08:00
commit df17843390
5987 changed files with 5052138 additions and 0 deletions
+2849
View File
File diff suppressed because one or more lines are too long
+1358
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+292
View File
@@ -0,0 +1,292 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Clear Linux OS Forum - Forum for Clear Linux OS developers &amp; users</title>
<meta name="description" content="A place for users and developers to ask questions and to get community support">
<meta name="generator" content="Discourse 3.1.0.beta1 - https://github.com/discourse/discourse version b8bbdcf0129fcc25ca346422bb66d8b66600b14f">
<link rel="icon" type="image/png" href="https://global.discourse-cdn.com/clearlinux/optimized/1X/6768a8baca76f0527fd8335a67035c662d0f00cb_2_32x32.png">
<link rel="apple-touch-icon" type="image/png" href="https://global.discourse-cdn.com/clearlinux/optimized/1X/99c803e4bceb458a9d9e3893b5532b3d659ff872_2_180x180.png">
<meta name="theme-color" media="all" content="#0070C5">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover">
<link rel="canonical" href="https://community.clearlinux.org/" />
<script type="application/ld+json">{"@context":"http://schema.org","@type":"WebSite","url":"https://community.clearlinux.org","potentialAction":{"@type":"SearchAction","target":"https://community.clearlinux.org/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
<link rel="search" type="application/opensearchdescription+xml" href="https://community.clearlinux.org/opensearch.xml" title="Clear Linux OS Forum Search">
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/color_definitions_clear-linux_3_7_a2b2661a23589afeae4ee275c70c116b6611c480.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" class="light-scheme"/>
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/desktop_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="desktop" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-akismet_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-akismet" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-assign_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-assign" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-cakeday_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-cakeday" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-canned-replies_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-canned-replies" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-checklist_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-checklist" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-data-explorer_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-data-explorer" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-details_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-details" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-footnote_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-footnote" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-local-dates_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-local-dates" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-narrative-bot_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-narrative-bot" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-policy_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-policy" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-presence_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-presence" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-solved_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-solved" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-spoiler-alert_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-spoiler-alert" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-topic-voting_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-topic-voting" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/hosted-site_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="hosted-site" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/lazy-yt_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="lazy-yt" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/poll_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="poll" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/discourse-topic-voting_desktop_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="discourse-topic-voting_desktop" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/poll_desktop_57592ed13b60a7076d25b6bb2c2fb9858fa50553.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="poll_desktop" />
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/desktop_theme_5_c570808432cbaee76801bda6cbfd0659f6ed959f.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="5" data-theme-name="clearlinux_header"/>
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/desktop_theme_8_8b112cd76998dcd2560fef975ea33ab958ccd81c.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="8" data-theme-name="sub tabs"/>
<link href="https://sea2.discourse-cdn.com/clearlinux/stylesheets/desktop_theme_7_566885c653784abfcc10abb9b3b09c448ea0525a.css?__ws=community.clearlinux.org" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="7" data-theme-name="clear linux*"/>
<meta property="og:site_name" content="Clear Linux OS Forum" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://global.discourse-cdn.com/clearlinux/original/1X/6768a8baca76f0527fd8335a67035c662d0f00cb.png" />
<meta property="og:image" content="https://global.discourse-cdn.com/clearlinux/original/1X/6768a8baca76f0527fd8335a67035c662d0f00cb.png" />
<meta property="og:url" content="https://community.clearlinux.org/" />
<meta name="twitter:url" content="https://community.clearlinux.org/" />
<meta property="og:title" content="Clear Linux OS Forum" />
<meta name="twitter:title" content="Clear Linux OS Forum" />
<meta property="og:description" content="A place for users and developers to ask questions and to get community support" />
<meta name="twitter:description" content="A place for users and developers to ask questions and to get community support" />
</head>
<body class="crawler">
<header id="header">
<div class="container padding-md--left-right">
<div class="header__menu_mobile">
<i class="fa fa-bars header__menu_mobile__control" aria-hidden="true"></i>
</div>
<div id="header__site_info">
<div class="header__site_img_wrapper">
<object class="header__site_img_object" type="image/svg+xml" data="https://clearlinux.org/modules/custom/clearlinux_org/themes/clearlinux_theme/clear-technologies.svg"></object>
</div>
<div class="header__site_name"><a href="https://clearlinux.org"> Clear Linux* Project</a></div>
</div>
<nav class="header__menu">
<ul class="header__menu_list">
<li class="header__menu_list_item green">
<a tabindex="1" href="node/31099.html">About</a>
</li>
<li class="header__menu_list_item purple active">
<a tabindex="1" href="node/31103.html">Developer</a>
</li>
<li class="header__menu_list_item blue">
<a tabindex="1" href="https://clearlinux.org/software">Software</a>
</li>
</ul>
</nav>
</div>
</header>
<div class="header__menu-submenu purple">
<div class="toolbar__container">
<div class="container padding-md--left-right">
<ul class="Header__main">
<li>
<a href="node/31103.html">Developer</a>
</li>
<li>
<a href="https://community.clearlinux.org/" target="_blank" class="is-active">Community</a>
</li>
<li>
<a href="documentation.html">Documentation</a>
</li>
</ul>
</div>
</div>
</div>
<header>
<a href="community.html">
Clear Linux OS Forum
</a>
</header>
<div id="main-outlet" class="wrap" role="main">
<div itemscope itemtype='http://schema.org/ItemList'>
<meta itemprop='itemListOrder' content='http://schema.org/ItemListOrderDescending'>
<table class='category-list'>
<thead>
<tr>
<th class='category'>Category</th>
<th class='topics'>Topics</th>
</tr>
</thead>
<tbody>
<tr>
<td class='category' style='border-color: #808281;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='0'>
<meta itemprop='url' content='/c/news/14'>
<h3>
<a href='http://community.clearlinux.org/c/news/14'>
<span itemprop='name'>News and Announcements</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='45 Topics'>45</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #25AAE2;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='1'>
<meta itemprop='url' content='/c/general/11'>
<h3>
<a href='http://community.clearlinux.org/c/general/11'>
<span itemprop='name'>General Discussion</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='953 Topics'>953</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #652D90;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='2'>
<meta itemprop='url' content='/c/devs/13'>
<h3>
<a href='http://community.clearlinux.org/c/devs/13'>
<span itemprop='name'>Developer Discussion</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='180 Topics'>180</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #12A89D;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='3'>
<meta itemprop='url' content='/c/help/12'>
<h3>
<a href='http://community.clearlinux.org/c/help/12'>
<span itemprop='name'>Q&amp;A</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='992 Topics'>992</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #0088CC;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='4'>
<meta itemprop='url' content='/c/docs/55'>
<h3>
<a href='http://community.clearlinux.org/c/docs/55'>
<span itemprop='name'>Docs</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='5 Topics'>5</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #F7941D;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='5'>
<meta itemprop='url' content='/c/feed/18'>
<h3>
<a href='http://community.clearlinux.org/c/feed/18'>
<span itemprop='name'>Feedback</span>
</a>
</h3>
<div itemprop='description'></div>
</div>
</td>
<td class='topics'>
<div title='62 Topics'>62</div>
</td>
</tr>
<tr>
<td class='category' style='border-color: #0088CC;'>
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
<meta itemprop='position' content='6'>
<meta itemprop='url' content='/c/language-subforums/57'>
<h3>
<a href='http://community.clearlinux.org/c/language-subforums/57'>
<span itemprop='name'>Language Subforums</span>
</a>
</h3>
<div itemprop='description'>These language forums are provided as a place where non-English speakers can communicate in their own languages. These sub-forums are not monitored by the Clear Linux team and are provided only as a courtesy to the community. If you have issues or bugs, please raise those (in English!) in GitHub and/or discuss the in the main parts of the Forums.</div>
</div>
</td>
<td class='topics'>
<div title='1 Topics'>1</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<footer class="container wrap">
<nav class='crawler-nav'>
<ul>
<li itemscope itemtype='http://schema.org/SiteNavigationElement'>
<span itemprop='name'>
<a href='community.html' itemprop="url">Home </a>
</span>
</li>
<li itemscope itemtype='http://schema.org/SiteNavigationElement'>
<span itemprop='name'>
<a href='http://community.clearlinux.org/categories' itemprop="url">Categories </a>
</span>
</li>
<li itemscope itemtype='http://schema.org/SiteNavigationElement'>
<span itemprop='name'>
<a href='http://community.clearlinux.org/guidelines' itemprop="url">FAQ/Guidelines </a>
</span>
</li>
<li itemscope itemtype='http://schema.org/SiteNavigationElement'>
<span itemprop='name'>
<a href='http://community.clearlinux.org/tos' itemprop="url">Terms of Service </a>
</span>
</li>
<li itemscope itemtype='http://schema.org/SiteNavigationElement'>
<span itemprop='name'>
<a href='http://community.clearlinux.org/privacy' itemprop="url">Privacy Policy </a>
</span>
</li>
</ul>
</nav>
<p class='powered-by-link'>Powered by <a href="https://www.discourse.org">Discourse</a>, best viewed with JavaScript enabled</p>
</footer>
</body>
</html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+106
View File
@@ -0,0 +1,106 @@
/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */
;(function(root, factory) {
// https://github.com/umdjs/umd/blob/master/returnExports.js
if (typeof exports == 'object') {
// For Node.js.
module.exports = factory(root);
} else if (typeof define == 'function' && define.amd) {
// For AMD. Register as an anonymous module.
define([], factory.bind(root, root));
} else {
// For browser globals (not exposing the function separately).
factory(root);
}
}(typeof global != 'undefined' ? global : this, function(root) {
if (root.CSS && root.CSS.escape) {
return root.CSS.escape;
}
// https://drafts.csswg.org/cssom/#serialize-an-identifier
var cssEscape = function(value) {
if (arguments.length == 0) {
throw new TypeError('`CSS.escape` requires an argument.');
}
var string = String(value);
var length = string.length;
var index = -1;
var codeUnit;
var result = '';
var firstCodeUnit = string.charCodeAt(0);
while (++index < length) {
codeUnit = string.charCodeAt(index);
// Note: theres no need to special-case astral symbols, surrogate
// pairs, or lone surrogates.
// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER
// (U+FFFD).
if (codeUnit == 0x0000) {
result += '\uFFFD';
continue;
}
if (
// If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
// U+007F, […]
(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
// If the character is the first character and is in the range [0-9]
// (U+0030 to U+0039), […]
(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
// If the character is the second character and is in the range [0-9]
// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
(
index == 1 &&
codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
firstCodeUnit == 0x002D
)
) {
// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point
result += '\\' + codeUnit.toString(16) + ' ';
continue;
}
if (
// If the character is the first character and is a `-` (U+002D), and
// there is no second character, […]
index == 0 &&
length == 1 &&
codeUnit == 0x002D
) {
result += '\\' + string.charAt(index);
continue;
}
// If the character is not handled by one of the above rules and is
// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
// U+005A), or [a-z] (U+0061 to U+007A), […]
if (
codeUnit >= 0x0080 ||
codeUnit == 0x002D ||
codeUnit == 0x005F ||
codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
codeUnit >= 0x0041 && codeUnit <= 0x005A ||
codeUnit >= 0x0061 && codeUnit <= 0x007A
) {
// the character itself
result += string.charAt(index);
continue;
}
// Otherwise, the escaped character.
// https://drafts.csswg.org/cssom/#escape-a-character
result += '\\' + string.charAt(index);
}
return result;
};
if (!root.CSS) {
root.CSS = {};
}
root.CSS.escape = cssEscape;
return cssEscape;
}));
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
/*!
* jQuery Once v2.2.3 - http://github.com/robloach/jquery-once
* @license MIT, GPL-2.0
* http://opensource.org/licenses/MIT
* http://opensource.org/licenses/GPL-2.0
*/
(function(e){"use strict";if(typeof exports==="object"&&typeof exports.nodeName!=="string"){e(require("jquery"))}else if(typeof define==="function"&&define.amd){define(["jquery"],e)}else{e(jQuery)}})(function(t){"use strict";var r=function(e){e=e||"once";if(typeof e!=="string"){throw new TypeError("The jQuery Once id parameter must be a string")}return e};t.fn.once=function(e){var n="jquery-once-"+r(e);return this.filter(function(){return t(this).data(n)!==true}).data(n,true)};t.fn.removeOnce=function(e){return this.findOnce(e).removeData("jquery-once-"+r(e))};t.fn.findOnce=function(e){var n="jquery-once-"+r(e);return this.filter(function(){return t(this).data(n)===true})}});
//# sourceMappingURL=jquery.once.min.js.map
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
/*! js-cookie v3.0.1 | MIT */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}));
File diff suppressed because one or more lines are too long
+3
View File
@@ -0,0 +1,3 @@
/*! @drupal/once - v1.0.1 - 2021-06-12 */
var once=function(){"use strict";var n=/[\11\12\14\15\40]+/,e="data-once",t=document;function r(n,t,r){return n[t+"Attribute"](e,r)}function o(e){if("string"!=typeof e)throw new TypeError("once ID must be a string");if(""===e||n.test(e))throw new RangeError("once ID must not be empty or contain spaces");return'[data-once~="'+e+'"]'}function u(n){if(!(n instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function i(n,e){void 0===e&&(e=t);var r=n;if(null===n)r=[];else{if(!n)throw new TypeError("Selector must not be empty");"string"!=typeof n||e!==t&&!u(e)?n instanceof Element&&(r=[n]):r=e.querySelectorAll(n)}return Array.prototype.slice.call(r)}function c(n,e,t){return e.filter((function(e){var r=u(e)&&e.matches(n);return r&&t&&t(e),r}))}function f(e,t){var o=t.add,u=t.remove,i=[];r(e,"has")&&r(e,"get").trim().split(n).forEach((function(n){i.indexOf(n)<0&&n!==u&&i.push(n)})),o&&i.push(o);var c=i.join(" ");r(e,""===c?"remove":"set",c)}function a(n,e,t){return c(":not("+o(n)+")",i(e,t),(function(e){return f(e,{add:n})}))}return a.remove=function(n,e,t){return c(o(n),i(e,t),(function(e){return f(e,{remove:n})}))},a.filter=function(n,e,t){return c(o(n),i(e,t))},a.find=function(n,e){return i(n?o(n):"[data-once]",e)},a}();
//# sourceMappingURL=once.min.js.map
+6
View File
@@ -0,0 +1,6 @@
/*!
* tabbable 5.3.2
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.tabbable,o=e.tabbable={};t(o),o.noConflict=function(){return e.tabbable=n,o}}())}(this,(function(e){"use strict";var t=["input","select","textarea","a[href]","button","[tabindex]:not(slot)","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],n=t.join(","),o="undefined"==typeof Element,r=o?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,i=!o&&Element.prototype.getRootNode?function(e){return e.getRootNode()}:function(e){return e.ownerDocument},a=function(e,t,o){var i=Array.prototype.slice.apply(e.querySelectorAll(n));return t&&r.call(e,n)&&i.unshift(e),i=i.filter(o)},l=function e(t,o,i){for(var a=[],l=Array.from(t);l.length;){var u=l.shift();if("SLOT"===u.tagName){var c=u.assignedElements(),d=e(c.length?c:u.children,!0,i);i.flatten?a.push.apply(a,d):a.push({scope:u,candidates:d})}else{r.call(u,n)&&i.filter(u)&&(o||!t.includes(u))&&a.push(u);var f=u.shadowRoot||"function"==typeof i.getShadowRoot&&i.getShadowRoot(u);if(f){var s=e(!0===f?u.children:f.children,!0,i);i.flatten?a.push.apply(a,s):a.push({scope:u,candidates:s})}else l.unshift.apply(l,u.children)}}return a},u=function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||e.isContentEditable)&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex},c=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},d=function(e){return"INPUT"===e.tagName},f=function(e){return function(e){return d(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||i(e),o=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=o(window.CSS.escape(e.name));else try{t=o(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var r=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!r||r===e}(e)},s=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return 0===n&&0===o},p=function(e,t){return!(t.disabled||function(e){return d(e)&&"hidden"===e.type}(t)||function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var a=r.call(e,"details>summary:first-of-type")?e.parentElement:e;if(r.call(a,"details:not([open]) *"))return!0;var l=i(e).host,u=(null==l?void 0:l.ownerDocument.contains(l))||e.ownerDocument.contains(e);if(n&&"full"!==n){if("non-zero-area"===n)return s(e)}else{if("function"==typeof o){for(var c=e;e;){var d=e.parentElement,f=i(e);if(d&&!d.shadowRoot&&!0===o(d))return s(e);e=e.assignedSlot?e.assignedSlot:d||f===e.ownerDocument?d:f.host}e=c}if(u)return!e.getClientRects().length}return!1}(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if("LEGEND"===o.tagName)return!!r.call(t,"fieldset[disabled] *")||!o.contains(e)}return!0}t=t.parentElement}return!1}(t))},h=function(e,t){return!(f(t)||u(t)<0||!p(e,t))},m=t.concat("iframe").join(",");e.focusable=function(e,t){return(t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:p.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):a(e,t.includeContainer,p.bind(null,t))},e.isFocusable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,m)&&p(t,e)},e.isTabbable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,n)&&h(t,e)},e.tabbable=function(e,t){return function e(t){var n=[],o=[];return t.forEach((function(t,r){var i=!!t.scope,a=i?t.scope:t,l=u(a,i),c=i?e(t.candidates):a;0===l?i?n.push.apply(n,c):n.push(a):o.push({documentOrder:r,tabIndex:l,item:t,isScope:i,content:c})})),o.sort(c).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)}((t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:h.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot}):a(e,t.includeContainer,h.bind(null,t)))},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=index.umd.min.js.map
+676
View File
@@ -0,0 +1,676 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
(function ($, window, Drupal, drupalSettings, _ref) {
var isFocusable = _ref.isFocusable,
tabbable = _ref.tabbable;
Drupal.behaviors.AJAX = {
attach: function attach(context, settings) {
function loadAjaxBehavior(base) {
var elementSettings = settings.ajax[base];
if (typeof elementSettings.selector === 'undefined') {
elementSettings.selector = "#".concat(base);
}
once('drupal-ajax', $(elementSettings.selector)).forEach(function (el) {
elementSettings.element = el;
elementSettings.base = base;
Drupal.ajax(elementSettings);
});
}
Object.keys(settings.ajax || {}).forEach(function (base) {
return loadAjaxBehavior(base);
});
Drupal.ajax.bindAjaxLinks(document.body);
once('ajax', '.use-ajax-submit').forEach(function (el) {
var elementSettings = {};
elementSettings.url = $(el.form).attr('action');
elementSettings.setClick = true;
elementSettings.event = 'click';
elementSettings.progress = {
type: 'throbber'
};
elementSettings.base = el.id;
elementSettings.element = el;
Drupal.ajax(elementSettings);
});
},
detach: function detach(context, settings, trigger) {
if (trigger === 'unload') {
Drupal.ajax.expired().forEach(function (instance) {
Drupal.ajax.instances[instance.instanceIndex] = null;
});
}
}
};
Drupal.AjaxError = function (xmlhttp, uri, customMessage) {
var statusCode;
var statusText;
var responseText;
if (xmlhttp.status) {
statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', {
'!status': xmlhttp.status
}));
} else {
statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.'));
}
statusCode += "\n".concat(Drupal.t('Debugging information follows.'));
var pathText = "\n".concat(Drupal.t('Path: !uri', {
'!uri': uri
}));
statusText = '';
try {
statusText = "\n".concat(Drupal.t('StatusText: !statusText', {
'!statusText': xmlhttp.statusText.trim()
}));
} catch (e) {}
responseText = '';
try {
responseText = "\n".concat(Drupal.t('ResponseText: !responseText', {
'!responseText': xmlhttp.responseText.trim()
}));
} catch (e) {}
responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '');
responseText = responseText.replace(/[\n]+\s+/g, '\n');
var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', {
'!readyState': xmlhttp.readyState
})) : '';
customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', {
'!customMessage': customMessage
})) : '';
this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
this.name = 'AjaxError';
};
Drupal.AjaxError.prototype = new Error();
Drupal.AjaxError.prototype.constructor = Drupal.AjaxError;
Drupal.ajax = function (settings) {
if (arguments.length !== 1) {
throw new Error('Drupal.ajax() function must be called with one configuration object only');
}
var base = settings.base || false;
var element = settings.element || false;
delete settings.base;
delete settings.element;
if (!settings.progress && !element) {
settings.progress = false;
}
var ajax = new Drupal.Ajax(base, element, settings);
ajax.instanceIndex = Drupal.ajax.instances.length;
Drupal.ajax.instances.push(ajax);
return ajax;
};
Drupal.ajax.instances = [];
Drupal.ajax.expired = function () {
return Drupal.ajax.instances.filter(function (instance) {
return instance && instance.element !== false && !document.body.contains(instance.element);
});
};
Drupal.ajax.bindAjaxLinks = function (element) {
once('ajax', '.use-ajax', element).forEach(function (ajaxLink) {
var $linkElement = $(ajaxLink);
var elementSettings = {
progress: {
type: 'throbber'
},
dialogType: $linkElement.data('dialog-type'),
dialog: $linkElement.data('dialog-options'),
dialogRenderer: $linkElement.data('dialog-renderer'),
base: $linkElement.attr('id'),
element: ajaxLink
};
var href = $linkElement.attr('href');
if (href) {
elementSettings.url = href;
elementSettings.event = 'click';
}
Drupal.ajax(elementSettings);
});
};
Drupal.Ajax = function (base, element, elementSettings) {
var defaults = {
event: element ? 'mousedown' : null,
keypress: true,
selector: base ? "#".concat(base) : null,
effect: 'none',
speed: 'none',
method: 'replaceWith',
progress: {
type: 'throbber',
message: Drupal.t('Please wait...')
},
submit: {
js: true
}
};
$.extend(this, defaults, elementSettings);
this.commands = new Drupal.AjaxCommands();
this.instanceIndex = false;
if (this.wrapper) {
this.wrapper = "#".concat(this.wrapper);
}
this.element = element;
this.element_settings = elementSettings;
this.elementSettings = elementSettings;
if (this.element && this.element.form) {
this.$form = $(this.element.form);
}
if (!this.url) {
var $element = $(this.element);
if ($element.is('a')) {
this.url = $element.attr('href');
} else if (this.element && element.form) {
this.url = this.$form.attr('action');
}
}
var originalUrl = this.url;
this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1');
if (drupalSettings.ajaxTrustedUrl[originalUrl]) {
drupalSettings.ajaxTrustedUrl[this.url] = true;
}
var ajax = this;
ajax.options = {
url: ajax.url,
data: ajax.submit,
beforeSerialize: function beforeSerialize(elementSettings, options) {
return ajax.beforeSerialize(elementSettings, options);
},
beforeSubmit: function beforeSubmit(formValues, elementSettings, options) {
ajax.ajaxing = true;
return ajax.beforeSubmit(formValues, elementSettings, options);
},
beforeSend: function beforeSend(xmlhttprequest, options) {
ajax.ajaxing = true;
return ajax.beforeSend(xmlhttprequest, options);
},
success: function success(response, status, xmlhttprequest) {
if (typeof response === 'string') {
response = $.parseJSON(response);
}
if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) {
if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') {
var customMessage = Drupal.t('The response failed verification so will not be processed.');
return ajax.error(xmlhttprequest, ajax.url, customMessage);
}
}
return ajax.success(response, status);
},
complete: function complete(xmlhttprequest, status) {
ajax.ajaxing = false;
if (status === 'error' || status === 'parsererror') {
return ajax.error(xmlhttprequest, ajax.url);
}
},
dataType: 'json',
jsonp: false,
type: 'POST'
};
if (elementSettings.dialog) {
ajax.options.data.dialogOptions = elementSettings.dialog;
}
if (ajax.options.url.indexOf('?') === -1) {
ajax.options.url += '?';
} else {
ajax.options.url += '&';
}
var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax');
if (elementSettings.dialogRenderer) {
wrapper += ".".concat(elementSettings.dialogRenderer);
}
ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper);
$(ajax.element).on(elementSettings.event, function (event) {
if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', {
'!url': ajax.url
}));
}
return ajax.eventResponse(this, event);
});
if (elementSettings.keypress) {
$(ajax.element).on('keypress', function (event) {
return ajax.keypressResponse(this, event);
});
}
if (elementSettings.prevent) {
$(ajax.element).on(elementSettings.prevent, false);
}
};
Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format';
Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax';
Drupal.Ajax.prototype.execute = function () {
if (this.ajaxing) {
return;
}
try {
this.beforeSerialize(this.element, this.options);
return $.ajax(this.options);
} catch (e) {
this.ajaxing = false;
window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message));
return $.Deferred().reject();
}
};
Drupal.Ajax.prototype.keypressResponse = function (element, event) {
var ajax = this;
if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') {
event.preventDefault();
event.stopPropagation();
$(element).trigger(ajax.elementSettings.event);
}
};
Drupal.Ajax.prototype.eventResponse = function (element, event) {
event.preventDefault();
event.stopPropagation();
var ajax = this;
if (ajax.ajaxing) {
return;
}
try {
if (ajax.$form) {
if (ajax.setClick) {
element.form.clk = element;
}
ajax.$form.ajaxSubmit(ajax.options);
} else {
ajax.beforeSerialize(ajax.element, ajax.options);
$.ajax(ajax.options);
}
} catch (e) {
ajax.ajaxing = false;
window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message));
}
};
Drupal.Ajax.prototype.beforeSerialize = function (element, options) {
if (this.$form && document.body.contains(this.$form.get(0))) {
var settings = this.settings || drupalSettings;
Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize');
}
options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1;
var pageState = drupalSettings.ajaxPageState;
options.data['ajax_page_state[theme]'] = pageState.theme;
options.data['ajax_page_state[theme_token]'] = pageState.theme_token;
options.data['ajax_page_state[libraries]'] = pageState.libraries;
};
Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {};
Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) {
if (this.$form) {
options.extraData = options.extraData || {};
options.extraData.ajax_iframe_upload = '1';
var v = $.fieldValue(this.element);
if (v !== null) {
options.extraData[this.element.name] = v;
}
}
$(this.element).prop('disabled', true);
if (!this.progress || !this.progress.type) {
return;
}
var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase());
if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') {
this[progressIndicatorMethod].call(this);
}
};
Drupal.theme.ajaxProgressThrobber = function (message) {
var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : '';
var throbber = '<div class="throbber">&nbsp;</div>';
return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>");
};
Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
return '<div class="ajax-progress ajax-progress-fullscreen">&nbsp;</div>';
};
Drupal.theme.ajaxProgressMessage = function (message) {
return "<div class=\"message\">".concat(message, "</div>");
};
Drupal.theme.ajaxProgressBar = function ($element) {
return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element);
};
Drupal.Ajax.prototype.setProgressIndicatorBar = function () {
var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.id), $.noop, this.progress.method, $.noop);
if (this.progress.message) {
progressBar.setProgress(-1, this.progress.message);
}
if (this.progress.url) {
progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500);
}
this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element));
this.progress.object = progressBar;
$(this.element).after(this.progress.element);
};
Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () {
this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message));
$(this.element).after(this.progress.element);
};
Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () {
this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen'));
$('body').append(this.progress.element);
};
Drupal.Ajax.prototype.success = function (response, status) {
var _this = this;
if (this.progress.element) {
$(this.progress.element).remove();
}
if (this.progress.object) {
this.progress.object.stopMonitoring();
}
$(this.element).prop('disabled', false);
var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray();
var focusChanged = false;
Object.keys(response || {}).forEach(function (i) {
if (response[i].command && _this.commands[response[i].command]) {
_this.commands[response[i].command](_this, response[i], status);
if (response[i].command === 'invoke' && response[i].method === 'focus' || response[i].command === 'focusFirst') {
focusChanged = true;
}
}
});
if (!focusChanged && this.element && !$(this.element).data('disable-refocus')) {
var target = false;
for (var n = elementParents.length - 1; !target && n >= 0; n--) {
target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]"));
}
if (target) {
$(target).trigger('focus');
}
}
if (this.$form && document.body.contains(this.$form.get(0))) {
var settings = this.settings || drupalSettings;
Drupal.attachBehaviors(this.$form.get(0), settings);
}
this.settings = null;
};
Drupal.Ajax.prototype.getEffect = function (response) {
var type = response.effect || this.effect;
var speed = response.speed || this.speed;
var effect = {};
if (type === 'none') {
effect.showEffect = 'show';
effect.hideEffect = 'hide';
effect.showSpeed = '';
} else if (type === 'fade') {
effect.showEffect = 'fadeIn';
effect.hideEffect = 'fadeOut';
effect.showSpeed = speed;
} else {
effect.showEffect = "".concat(type, "Toggle");
effect.hideEffect = "".concat(type, "Toggle");
effect.showSpeed = speed;
}
return effect;
};
Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) {
if (this.progress.element) {
$(this.progress.element).remove();
}
if (this.progress.object) {
this.progress.object.stopMonitoring();
}
$(this.wrapper).show();
$(this.element).prop('disabled', false);
if (this.$form && document.body.contains(this.$form.get(0))) {
var settings = this.settings || drupalSettings;
Drupal.attachBehaviors(this.$form.get(0), settings);
}
throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage);
};
Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) {
return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) {
return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent));
}).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent;
};
Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) {
return $('<div></div>').append($elements);
};
Drupal.AjaxCommands = function () {};
Drupal.AjaxCommands.prototype = {
insert: function insert(ajax, response) {
var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper);
var method = response.method || ajax.method;
var effect = ajax.getEffect(response);
var settings = response.settings || ajax.settings || drupalSettings;
var $newContent = $($.parseHTML(response.data, document, true));
$newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response);
switch (method) {
case 'html':
case 'replaceWith':
case 'replaceAll':
case 'empty':
case 'remove':
Drupal.detachBehaviors($wrapper.get(0), settings);
break;
default:
break;
}
$wrapper[method]($newContent);
if (effect.showEffect !== 'show') {
$newContent.hide();
}
var $ajaxNewContent = $newContent.find('.ajax-new-content');
if ($ajaxNewContent.length) {
$ajaxNewContent.hide();
$newContent.show();
$ajaxNewContent[effect.showEffect](effect.showSpeed);
} else if (effect.showEffect !== 'show') {
$newContent[effect.showEffect](effect.showSpeed);
}
if ($newContent.parents('html').length) {
$newContent.each(function (index, element) {
if (element.nodeType === Node.ELEMENT_NODE) {
Drupal.attachBehaviors(element, settings);
}
});
}
},
remove: function remove(ajax, response, status) {
var settings = response.settings || ajax.settings || drupalSettings;
$(response.selector).each(function () {
Drupal.detachBehaviors(this, settings);
}).remove();
},
changed: function changed(ajax, response, status) {
var $element = $(response.selector);
if (!$element.hasClass('ajax-changed')) {
$element.addClass('ajax-changed');
if (response.asterisk) {
$element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> "));
}
}
},
alert: function alert(ajax, response, status) {
window.alert(response.text);
},
announce: function announce(ajax, response) {
if (response.priority) {
Drupal.announce(response.text, response.priority);
} else {
Drupal.announce(response.text);
}
},
redirect: function redirect(ajax, response, status) {
window.location = response.url;
},
css: function css(ajax, response, status) {
$(response.selector).css(response.argument);
},
settings: function settings(ajax, response, status) {
var ajaxSettings = drupalSettings.ajax;
if (ajaxSettings) {
Drupal.ajax.expired().forEach(function (instance) {
if (instance.selector) {
var selector = instance.selector.replace('#', '');
if (selector in ajaxSettings) {
delete ajaxSettings[selector];
}
}
});
}
if (response.merge) {
$.extend(true, drupalSettings, response.settings);
} else {
ajax.settings = response.settings;
}
},
data: function data(ajax, response, status) {
$(response.selector).data(response.name, response.value);
},
focusFirst: function focusFirst(ajax, response, status) {
var focusChanged = false;
var container = document.querySelector(response.selector);
if (container) {
var tabbableElements = tabbable(container);
if (tabbableElements.length) {
tabbableElements[0].focus();
focusChanged = true;
} else if (isFocusable(container)) {
container.focus();
focusChanged = true;
}
}
if (ajax.hasOwnProperty('element') && !focusChanged) {
ajax.element.focus();
}
},
invoke: function invoke(ajax, response, status) {
var $element = $(response.selector);
$element[response.method].apply($element, _toConsumableArray(response.args));
},
restripe: function restripe(ajax, response, status) {
$(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even');
},
update_build_id: function update_build_id(ajax, response, status) {
document.querySelectorAll("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).forEach(function (item) {
item.value = response.new;
});
},
add_css: function add_css(ajax, response, status) {
$('head').prepend(response.data);
},
message: function message(ajax, response) {
var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector));
if (response.clearPrevious) {
messages.clear();
}
messages.add(response.message, response.messageOptions);
}
};
})(jQuery, window, Drupal, drupalSettings, window.tabbable);
+36
View File
@@ -0,0 +1,36 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
Drupal.debounce = function (func, wait, immediate) {
var timeout;
var result;
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var context = this;
var later = function later() {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
}
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
}
return result;
};
};
+31
View File
@@ -0,0 +1,31 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
if (window.jQuery) {
jQuery.noConflict();
}
document.documentElement.className += ' js';
(function (Drupal, drupalSettings) {
var domReady = function domReady(callback) {
var listener = function listener() {
callback();
document.removeEventListener('DOMContentLoaded', listener);
};
if (document.readyState !== 'loading') {
setTimeout(callback, 0);
} else {
document.addEventListener('DOMContentLoaded', listener);
}
};
domReady(function () {
Drupal.attachBehaviors(document, drupalSettings);
});
})(Drupal, window.drupalSettings);
+224
View File
@@ -0,0 +1,224 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
window.Drupal = {
behaviors: {},
locale: {}
};
(function (Drupal, drupalSettings, drupalTranslations, console, Proxy, Reflect) {
Drupal.throwError = function (error) {
setTimeout(function () {
throw error;
}, 0);
};
Drupal.attachBehaviors = function (context, settings) {
context = context || document;
settings = settings || drupalSettings;
var behaviors = Drupal.behaviors;
Object.keys(behaviors || {}).forEach(function (i) {
if (typeof behaviors[i].attach === 'function') {
try {
behaviors[i].attach(context, settings);
} catch (e) {
Drupal.throwError(e);
}
}
});
};
Drupal.detachBehaviors = function (context, settings, trigger) {
context = context || document;
settings = settings || drupalSettings;
trigger = trigger || 'unload';
var behaviors = Drupal.behaviors;
Object.keys(behaviors || {}).forEach(function (i) {
if (typeof behaviors[i].detach === 'function') {
try {
behaviors[i].detach(context, settings, trigger);
} catch (e) {
Drupal.throwError(e);
}
}
});
};
Drupal.checkPlain = function (str) {
str = str.toString().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
return str;
};
Drupal.formatString = function (str, args) {
var processedArgs = {};
Object.keys(args || {}).forEach(function (key) {
switch (key.charAt(0)) {
case '@':
processedArgs[key] = Drupal.checkPlain(args[key]);
break;
case '!':
processedArgs[key] = args[key];
break;
default:
processedArgs[key] = Drupal.theme('placeholder', args[key]);
break;
}
});
return Drupal.stringReplace(str, processedArgs, null);
};
Drupal.stringReplace = function (str, args, keys) {
if (str.length === 0) {
return str;
}
if (!Array.isArray(keys)) {
keys = Object.keys(args || {});
keys.sort(function (a, b) {
return a.length - b.length;
});
}
if (keys.length === 0) {
return str;
}
var key = keys.pop();
var fragments = str.split(key);
if (keys.length) {
for (var i = 0; i < fragments.length; i++) {
fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
}
}
return fragments.join(args[key]);
};
Drupal.t = function (str, args, options) {
options = options || {};
options.context = options.context || '';
if (typeof drupalTranslations !== 'undefined' && drupalTranslations.strings && drupalTranslations.strings[options.context] && drupalTranslations.strings[options.context][str]) {
str = drupalTranslations.strings[options.context][str];
}
if (args) {
str = Drupal.formatString(str, args);
}
return str;
};
Drupal.url = function (path) {
return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
};
Drupal.url.toAbsolute = function (url) {
var urlParsingNode = document.createElement('a');
try {
url = decodeURIComponent(url);
} catch (e) {}
urlParsingNode.setAttribute('href', url);
return urlParsingNode.cloneNode(false).href;
};
Drupal.url.isLocal = function (url) {
var absoluteUrl = Drupal.url.toAbsolute(url);
var protocol = window.location.protocol;
if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
protocol = 'https:';
}
var baseUrl = "".concat(protocol, "//").concat(window.location.host).concat(drupalSettings.path.baseUrl.slice(0, -1));
try {
absoluteUrl = decodeURIComponent(absoluteUrl);
} catch (e) {}
try {
baseUrl = decodeURIComponent(baseUrl);
} catch (e) {}
return absoluteUrl === baseUrl || absoluteUrl.indexOf("".concat(baseUrl, "/")) === 0;
};
Drupal.formatPlural = function (count, singular, plural, args, options) {
args = args || {};
args['@count'] = count;
var pluralDelimiter = drupalSettings.pluralDelimiter;
var translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter);
var index = 0;
if (typeof drupalTranslations !== 'undefined' && drupalTranslations.pluralFormula) {
index = count in drupalTranslations.pluralFormula ? drupalTranslations.pluralFormula[count] : drupalTranslations.pluralFormula.default;
} else if (args['@count'] !== 1) {
index = 1;
}
return translations[index];
};
Drupal.encodePath = function (item) {
return window.encodeURIComponent(item).replace(/%2F/g, '/');
};
Drupal.deprecationError = function (_ref) {
var message = _ref.message;
if (drupalSettings.suppressDeprecationErrors === false && typeof console !== 'undefined' && console.warn) {
console.warn("[Deprecation] ".concat(message));
}
};
Drupal.deprecatedProperty = function (_ref2) {
var target = _ref2.target,
deprecatedProperty = _ref2.deprecatedProperty,
message = _ref2.message;
if (!Proxy || !Reflect) {
return target;
}
return new Proxy(target, {
get: function get(target, key) {
if (key === deprecatedProperty) {
Drupal.deprecationError({
message: message
});
}
for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
rest[_key - 2] = arguments[_key];
}
return Reflect.get.apply(Reflect, [target, key].concat(rest));
}
});
};
Drupal.theme = function (func) {
if (func in Drupal.theme) {
var _Drupal$theme;
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
return (_Drupal$theme = Drupal.theme)[func].apply(_Drupal$theme, args);
}
};
Drupal.theme.placeholder = function (str) {
return "<em class=\"placeholder\">".concat(Drupal.checkPlain(str), "</em>");
};
})(Drupal, window.drupalSettings, window.drupalTranslations, window.console, window.Proxy, window.Reflect);
+15
View File
@@ -0,0 +1,15 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function () {
var settingsElement = document.querySelector('head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]');
window.drupalSettings = {};
if (settingsElement !== null) {
window.drupalSettings = JSON.parse(settingsElement.textContent);
}
})();
+42
View File
@@ -0,0 +1,42 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function ($, once) {
var deprecatedMessageSuffix = "is deprecated in Drupal 9.3.0 and will be removed in Drupal 10.0.0. Use the core/once library instead. See https://www.drupal.org/node/3158256";
var originalJQOnce = $.fn.once;
var originalJQRemoveOnce = $.fn.removeOnce;
$.fn.once = function jQueryOnce(id) {
Drupal.deprecationError({
message: "jQuery.once() ".concat(deprecatedMessageSuffix)
});
return originalJQOnce.apply(this, [id]);
};
$.fn.removeOnce = function jQueryRemoveOnce(id) {
Drupal.deprecationError({
message: "jQuery.removeOnce() ".concat(deprecatedMessageSuffix)
});
return originalJQRemoveOnce.apply(this, [id]);
};
var drupalOnce = once;
function augmentedOnce(id, selector, context) {
originalJQOnce.apply($(selector, context), [id]);
return drupalOnce(id, selector, context);
}
function remove(id, selector, context) {
originalJQRemoveOnce.apply($(selector, context), [id]);
return drupalOnce.remove(id, selector, context);
}
window.once = Object.assign(augmentedOnce, drupalOnce, {
remove: remove
});
})(jQuery, once);
@@ -0,0 +1,71 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function (Modernizr) {
var _deprecationErrorModernizrCopy = function _deprecationErrorModernizrCopy(_ref) {
var message = _ref.message;
if (typeof console !== 'undefined' && console.warn) {
console.warn("[Deprecation] ".concat(message));
}
};
var _deprecatedPropertyModernizrCopy = function _deprecatedPropertyModernizrCopy(_ref2) {
var target = _ref2.target,
deprecatedProperty = _ref2.deprecatedProperty,
message = _ref2.message;
if (!Proxy || !Reflect) {
return target;
}
return new Proxy(target, {
get: function get(target, key) {
if (key === deprecatedProperty) {
_deprecationErrorModernizrCopy({
message: message
});
}
for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
rest[_key - 2] = arguments[_key];
}
return Reflect.get.apply(Reflect, [target, key].concat(rest));
}
});
};
window.Modernizr = _deprecatedPropertyModernizrCopy({
target: Modernizr,
deprecatedProperty: 'touchevents',
message: 'The touchevents property of Modernizr has been deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. There will be no replacement for this feature. See https://www.drupal.org/node/3277381.'
});
if (document.documentElement.classList.contains('touchevents') || document.documentElement.classList.contains('no-touchevents')) {
return;
}
Modernizr.addTest('touchevents', function () {
_deprecationErrorModernizrCopy({
message: 'The Modernizr touch events test is deprecated in Drupal 9.4.0 and will be removed in Drupal 10.0.0. See https://www.drupal.org/node/3277381 for information on its replacement and how it should be used.'
});
var bool;
if ('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) {
bool = true;
} else {
var query = ['@media (', Modernizr._prefixes.join('touch-enabled),('), 'heartz', ')', '{#modernizr{top:9px;position:absolute}}'].join('');
Modernizr.testStyles(query, function (node) {
bool = node.offsetTop === 9;
});
}
return bool;
});
})(Modernizr);
@@ -0,0 +1,10 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
if (!Element.prototype.matches) {
Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
}
@@ -0,0 +1,10 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = Array.prototype.forEach;
}
@@ -0,0 +1,36 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
if (typeof Object.assign !== 'function') {
Object.defineProperty(Object, 'assign', {
value: function assign(target, varArgs) {
'use strict';
if (target === null || target === undefined) {
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource !== null && nextSource !== undefined) {
for (var nextKey in nextSource) {
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
},
writable: true,
configurable: true
});
}
+92
View File
@@ -0,0 +1,92 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function ($, Drupal) {
Drupal.theme.progressBar = function (id) {
return "<div id=\"".concat(id, "\" class=\"progress\" aria-live=\"polite\">") + '<div class="progress__label">&nbsp;</div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description">&nbsp;</div>' + '</div>';
};
Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) {
this.id = id;
this.method = method || 'GET';
this.updateCallback = updateCallback;
this.errorCallback = errorCallback;
this.element = $(Drupal.theme('progressBar', id));
};
$.extend(Drupal.ProgressBar.prototype, {
setProgress: function setProgress(percentage, message, label) {
if (percentage >= 0 && percentage <= 100) {
$(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%"));
$(this.element).find('div.progress__percentage').html("".concat(percentage, "%"));
}
$('div.progress__description', this.element).html(message);
$('div.progress__label', this.element).html(label);
if (this.updateCallback) {
this.updateCallback(percentage, message, this);
}
},
startMonitoring: function startMonitoring(uri, delay) {
this.delay = delay;
this.uri = uri;
this.sendPing();
},
stopMonitoring: function stopMonitoring() {
clearTimeout(this.timer);
this.uri = null;
},
sendPing: function sendPing() {
if (this.timer) {
clearTimeout(this.timer);
}
if (this.uri) {
var pb = this;
var uri = this.uri;
if (uri.indexOf('?') === -1) {
uri += '?';
} else {
uri += '&';
}
uri += '_format=json';
$.ajax({
type: this.method,
url: uri,
data: '',
dataType: 'json',
success: function success(progress) {
if (progress.status === 0) {
pb.displayError(progress.data);
return;
}
pb.setProgress(progress.percentage, progress.message, progress.label);
pb.timer = setTimeout(function () {
pb.sendPing();
}, pb.delay);
},
error: function error(xmlhttp) {
var e = new Drupal.AjaxError(xmlhttp, pb.uri);
pb.displayError("<pre>".concat(e.message, "</pre>"));
}
});
}
},
displayError: function displayError(string) {
var error = $('<div class="messages messages--error"></div>').html(string);
$(this.element).before(error).hide();
if (this.errorCallback) {
this.errorCallback(this);
}
}
});
})(jQuery, Drupal);
+127
View File
@@ -0,0 +1,127 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function ($, Drupal, drupalSettings) {
Drupal.behaviors.ViewsAjaxView = {};
Drupal.behaviors.ViewsAjaxView.attach = function (context, settings) {
if (settings && settings.views && settings.views.ajaxViews) {
var ajaxViews = settings.views.ajaxViews;
Object.keys(ajaxViews || {}).forEach(function (i) {
Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]);
});
}
};
Drupal.behaviors.ViewsAjaxView.detach = function (context, settings, trigger) {
if (trigger === 'unload') {
if (settings && settings.views && settings.views.ajaxViews) {
var ajaxViews = settings.views.ajaxViews;
Object.keys(ajaxViews || {}).forEach(function (i) {
var selector = ".js-view-dom-id-".concat(ajaxViews[i].view_dom_id);
if ($(selector, context).length) {
delete Drupal.views.instances[i];
delete settings.views.ajaxViews[i];
}
});
}
}
};
Drupal.views = {};
Drupal.views.instances = {};
Drupal.views.ajaxView = function (settings) {
var selector = ".js-view-dom-id-".concat(settings.view_dom_id);
this.$view = $(selector);
var ajaxPath = drupalSettings.views.ajax_path;
if (ajaxPath.constructor.toString().indexOf('Array') !== -1) {
ajaxPath = ajaxPath[0];
}
var queryString = window.location.search || '';
if (queryString !== '') {
queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, '');
if (queryString !== '') {
queryString = (/\?/.test(ajaxPath) ? '&' : '?') + queryString;
}
}
this.element_settings = {
url: ajaxPath + queryString,
submit: settings,
setClick: true,
event: 'click',
selector: selector,
progress: {
type: 'fullscreen'
}
};
this.settings = settings;
this.$exposed_form = $("form#views-exposed-form-".concat(settings.view_name.replace(/_/g, '-'), "-").concat(settings.view_display_id.replace(/_/g, '-')));
once('exposed-form', this.$exposed_form).forEach($.proxy(this.attachExposedFormAjax, this));
once('ajax-pager', this.$view.filter($.proxy(this.filterNestedViews, this))).forEach($.proxy(this.attachPagerAjax, this));
var selfSettings = $.extend({}, this.element_settings, {
event: 'RefreshView',
base: this.selector,
element: this.$view.get(0)
});
this.refreshViewAjax = Drupal.ajax(selfSettings);
};
Drupal.views.ajaxView.prototype.attachExposedFormAjax = function () {
var that = this;
this.exposedFormAjax = [];
$('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form).not('[data-drupal-selector=edit-reset]').each(function (index) {
var selfSettings = $.extend({}, that.element_settings, {
base: $(this).attr('id'),
element: this
});
that.exposedFormAjax[index] = Drupal.ajax(selfSettings);
});
};
Drupal.views.ajaxView.prototype.filterNestedViews = function () {
return !this.$view.parents('.view').length;
};
Drupal.views.ajaxView.prototype.attachPagerAjax = function () {
this.$view.find('ul.js-pager__items > li > a, th.views-field a, .attachment .views-summary a').each($.proxy(this.attachPagerLinkAjax, this));
};
Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function (id, link) {
var $link = $(link);
var viewData = {};
var href = $link.attr('href');
$.extend(viewData, this.settings, Drupal.Views.parseQueryString(href), Drupal.Views.parseViewArgs(href, this.settings.view_base_path));
var selfSettings = $.extend({}, this.element_settings, {
submit: viewData,
base: false,
element: link
});
this.pagerAjax = Drupal.ajax(selfSettings);
};
Drupal.AjaxCommands.prototype.viewsScrollTop = function (ajax, response) {
var offset = $(response.selector).offset();
var scrollTarget = response.selector;
while ($(scrollTarget).scrollTop() === 0 && $(scrollTarget).parent()) {
scrollTarget = $(scrollTarget).parent();
}
if (offset.top - 10 < $(scrollTarget).scrollTop()) {
$(scrollTarget).animate({
scrollTop: offset.top - 10
}, 500);
}
};
})(jQuery, Drupal, drupalSettings);
+74
View File
@@ -0,0 +1,74 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function ($, Drupal, drupalSettings) {
Drupal.Views = {};
Drupal.Views.parseQueryString = function (query) {
var args = {};
var pos = query.indexOf('?');
if (pos !== -1) {
query = query.substring(pos + 1);
}
var pair;
var pairs = query.split('&');
for (var i = 0; i < pairs.length; i++) {
pair = pairs[i].split('=');
if (pair[0] !== 'q' && pair[1]) {
args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' '));
}
}
return args;
};
Drupal.Views.parseViewArgs = function (href, viewPath) {
var returnObj = {};
var path = Drupal.Views.getPath(href);
var viewHref = Drupal.url(viewPath).substring(drupalSettings.path.baseUrl.length);
if (viewHref && path.substring(0, viewHref.length + 1) === "".concat(viewHref, "/")) {
returnObj.view_args = decodeURIComponent(path.substring(viewHref.length + 1, path.length));
returnObj.view_path = path;
}
return returnObj;
};
Drupal.Views.pathPortion = function (href) {
var protocol = window.location.protocol;
if (href.substring(0, protocol.length) === protocol) {
href = href.substring(href.indexOf('/', protocol.length + 2));
}
return href;
};
Drupal.Views.getPath = function (href) {
href = Drupal.Views.pathPortion(href);
href = href.substring(drupalSettings.path.baseUrl.length, href.length);
if (href.substring(0, 3) === '?q=') {
href = href.substring(3, href.length);
}
var chars = ['#', '?', '&'];
for (var i = 0; i < chars.length; i++) {
if (href.indexOf(chars[i]) > -1) {
href = href.substr(0, href.indexOf(chars[i]));
}
}
return href;
};
})(jQuery, Drupal, drupalSettings);
@@ -0,0 +1,30 @@
/**
* @file
* Caption filter: default styling for displaying image captions.
*/
/**
* Essentials, based on http://stackoverflow.com/a/13363408.
*/
.caption {
display: table;
}
.caption > * {
display: block;
max-width: 100%;
}
.caption > figcaption {
display: table-caption;
max-width: none;
caption-side: bottom;
}
/**
* While editing and whenever the caption is empty, show a placeholder.
*
* Based on http://codepen.io/flesler/pen/AEIFc.
*/
.caption > figcaption[contenteditable=true]:empty:before {
content: attr(data-placeholder);
font-style: italic;
}
@@ -0,0 +1,49 @@
/**
* @file
* Throbber.
*/
.ajax-progress {
display: inline-block;
padding: 1px 5px 2px 5px;
}
[dir="rtl"] .ajax-progress {
float: right;
}
.ajax-progress-throbber .throbber {
display: inline;
padding: 1px 5px 2px;
background: transparent url(../../../images/core/throbber-active.gif) no-repeat 0 center;
}
.ajax-progress-throbber .message {
display: inline;
padding: 1px 5px 2px;
}
tr .ajax-progress-throbber .throbber {
margin: 0 2px;
}
.ajax-progress-bar {
width: 16em;
}
/* Full screen throbber */
.ajax-progress-fullscreen {
position: fixed;
z-index: 1000;
top: 48.5%;
/* Can't do center:50% middle: 50%, so approximate it for a typical window size. */
left: 49%; /* LTR */
width: 24px;
height: 24px;
padding: 4px;
opacity: 0.9;
border-radius: 7px;
background-color: #232323;
background-image: url(../../../images/core/loading-small.gif);
background-repeat: no-repeat;
background-position: center center;
}
[dir="rtl"] .ajax-progress-fullscreen {
right: 49%;
left: auto;
}
@@ -0,0 +1,32 @@
/**
* @file
* Alignment classes for text and block level elements.
*/
.text-align-left {
text-align: left;
}
.text-align-right {
text-align: right;
}
.text-align-center {
text-align: center;
}
.text-align-justify {
text-align: justify;
}
/**
* Alignment classes for block level elements (images, videos, blockquotes, etc.)
*/
.align-left {
float: left;
}
.align-right {
float: right;
}
.align-center {
display: block;
margin-right: auto;
margin-left: auto;
}
@@ -0,0 +1,22 @@
/**
* @file
* Visual styles for animated throbber.
*
* @see autocomplete.js
*/
.js input.form-autocomplete {
background-image: url(../../../images/core/throbber-inactive.png);
background-repeat: no-repeat;
background-position: 100% center; /* LTR */
}
.js[dir="rtl"] input.form-autocomplete {
background-position: 0% center;
}
.js input.form-autocomplete.ui-autocomplete-loading {
background-image: url(../../../images/core/throbber-active.gif);
background-position: 100% center; /* LTR */
}
.js[dir="rtl"] input.form-autocomplete.ui-autocomplete-loading {
background-position: 0% center;
}
@@ -0,0 +1,15 @@
/**
* @file
* Float clearing.
*
* Based on the micro clearfix hack by Nicolas Gallagher, with the :before
* pseudo selector removed to allow normal top margin collapse.
*
* @see http://nicolasgallagher.com/micro-clearfix-hack
*/
.clearfix:after {
display: table;
clear: both;
content: "";
}
@@ -0,0 +1,13 @@
/**
* @file
* Inline items.
*/
.container-inline div,
.container-inline label {
display: inline;
}
/* Details contents always need to be rendered as block. */
.container-inline .details-wrapper {
display: block;
}
@@ -0,0 +1,10 @@
/**
* @file
* Collapsible details.
*
* @see collapse.js
*/
.js details:not([open]) .details-wrapper {
display: none;
}
@@ -0,0 +1,9 @@
/**
* @file
* Fieldgroup border reset.
*/
.fieldgroup {
padding: 0;
border-width: 0;
}
@@ -0,0 +1,53 @@
/**
* @file
* Utility classes to hide elements in different ways.
*/
/**
* Hide elements from all users.
*
* Used for elements which should not be immediately displayed to any user. An
* example would be collapsible details that will be expanded with a click
* from a user. The effect of this class can be toggled with the jQuery show()
* and hide() functions.
*/
.hidden {
display: none;
}
/**
* Hide elements visually, but keep them available for screen readers.
*
* Used for information required for screen reader users to understand and use
* the site where visual display is undesirable. Information provided in this
* manner should be kept concise, to avoid unnecessary burden on the user.
* "!important" is used to prevent unintentional overrides.
*/
.visually-hidden {
position: absolute !important;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
width: 1px;
height: 1px;
word-wrap: normal;
}
/**
* The .focusable class extends the .visually-hidden class to allow
* the element to be focusable when navigated to via the keyboard.
*/
.visually-hidden.focusable:active,
.visually-hidden.focusable:focus {
position: static !important;
overflow: visible;
clip: auto;
width: auto;
height: auto;
}
/**
* Hide visually and from screen readers, but maintain layout.
*/
.invisible {
visibility: hidden;
}
@@ -0,0 +1,19 @@
/**
* @file
* Styles for item list.
*/
.item-list__comma-list,
.item-list__comma-list li {
display: inline;
}
.item-list__comma-list {
margin: 0;
padding: 0;
}
.item-list__comma-list li:after {
content: ", ";
}
.item-list__comma-list li:last-child:after {
content: "";
}
@@ -0,0 +1,22 @@
/**
* @file
* Utility classes to assist with JavaScript functionality.
*/
/**
* For anything you want to hide on page load when JS is enabled, so
* that you can use the JS to control visibility and avoid flicker.
*/
.js .js-hide {
display: none;
}
/**
* For anything you want to show on page load only when JS is enabled.
*/
.js-show {
display: none;
}
.js .js-show {
display: block;
}
@@ -0,0 +1,8 @@
/**
* @file
* Utility class to prevent text wrapping.
*/
.nowrap {
white-space: nowrap;
}
@@ -0,0 +1,8 @@
/*
* @file
* Contain positioned elements.
*/
.position-container {
position: relative;
}
@@ -0,0 +1,51 @@
/**
* @file
* Progress behavior.
*
* @see progress.js
*/
.progress {
position: relative;
}
.progress__track {
min-width: 100px;
max-width: 100%;
height: 16px;
margin-top: 5px;
border: 1px solid;
background-color: #fff;
}
.progress__bar {
width: 3%;
min-width: 3%;
max-width: 100%;
height: 1.5em;
background-color: #000;
}
.progress__description,
.progress__percentage {
overflow: hidden;
margin-top: 0.2em;
color: #555;
font-size: 0.875em;
}
.progress__description {
float: left; /* LTR */
}
[dir="rtl"] .progress__description {
float: right;
}
.progress__percentage {
float: right; /* LTR */
}
[dir="rtl"] .progress__percentage {
float: left;
}
.progress--small .progress__track {
height: 7px;
}
.progress--small .progress__bar {
height: 7px;
background-size: 20px 20px;
}
@@ -0,0 +1,15 @@
/*
* @file
* Utility class to remove browser styles, especially for button.
*/
.reset-appearance {
margin: 0;
padding: 0;
border: 0 none;
background: transparent;
line-height: inherit;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
@@ -0,0 +1,21 @@
/**
* @file
* Resizable textareas.
*/
.resize-none {
resize: none;
}
.resize-vertical {
min-height: 2em;
resize: vertical;
}
.resize-horizontal {
max-width: 100%;
resize: horizontal;
}
.resize-both {
max-width: 100%;
min-height: 2em;
resize: both;
}
@@ -0,0 +1,13 @@
/**
* @file
* Table header behavior.
*
* @see tableheader.js
*/
table.sticky-header {
z-index: 500;
top: 0;
margin-top: 0;
background-color: #fff;
}
@@ -0,0 +1,28 @@
/**
* @file
* Styles for the system status counter component.
*/
.system-status-counter__status-icon {
display: inline-block;
width: 25px;
height: 25px;
vertical-align: middle;
}
.system-status-counter__status-icon:before {
display: block;
content: "";
background-repeat: no-repeat;
background-position: center 2px;
background-size: 20px;
}
.system-status-counter__status-icon--error:before {
background-image: url(../../../images/core/icons/e32700/error.svg);
}
.system-status-counter__status-icon--warning:before {
background-image: url(../../../images/core/icons/e29700/warning.svg);
}
.system-status-counter__status-icon--checked:before {
background-image: url(../../../images/core/icons/73b355/check.svg);
}
@@ -0,0 +1,27 @@
/**
* @file
* Styles for the system status report counters.
*/
.system-status-report-counters__item {
width: 100%;
margin-bottom: 0.5em;
padding: 0.5em 0;
text-align: center;
white-space: nowrap;
background-color: rgba(0, 0, 0, 0.063);
}
@media screen and (min-width: 60em) {
.system-status-report-counters {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.system-status-report-counters__item--half-width {
width: 49%;
}
.system-status-report-counters__item--third-width {
width: 33%;
}
}
@@ -0,0 +1,14 @@
/**
* @file
* Default styles for the System Status general info.
*/
.system-status-general-info__item {
margin-top: 1em;
padding: 0 1em 1em;
border: 1px solid #ccc;
}
.system-status-general-info__item-title {
border-bottom: 1px solid #ccc;
}
@@ -0,0 +1,88 @@
/**
* @file
* Table drag behavior.
*
* @see tabledrag.js
*/
body.drag {
cursor: move;
}
tr.region-title {
font-weight: bold;
}
tr.region-message {
color: #999;
}
tr.region-populated {
display: none;
}
tr.add-new .tabledrag-changed {
display: none;
}
.draggable a.tabledrag-handle {
float: left; /* LTR */
overflow: hidden;
height: 1.7em;
margin-left: -1em; /* LTR */
cursor: move;
text-decoration: none;
}
[dir="rtl"] .draggable a.tabledrag-handle {
float: right;
margin-right: -1em;
margin-left: 0;
}
a.tabledrag-handle:hover {
text-decoration: none;
}
a.tabledrag-handle .handle {
width: 14px;
height: 14px;
margin: -0.4em 0.5em 0;
padding: 0.42em 0.5em;
background: url(../../../images/core/icons/787878/move.svg) no-repeat 6px 7px;
}
a.tabledrag-handle:hover .handle,
a.tabledrag-handle:focus .handle {
background-image: url(../../../images/core/icons/000000/move.svg);
}
.touchevents .draggable td {
padding: 0 10px;
}
.touchevents .draggable .menu-item__link {
display: inline-block;
padding: 10px 0;
}
.touchevents a.tabledrag-handle {
width: 40px;
height: 44px;
}
.touchevents a.tabledrag-handle .handle {
height: 21px;
background-position: 40% 19px; /* LTR */
}
[dir="rtl"] .touch a.tabledrag-handle .handle {
background-position: right 40% top 19px;
}
.touchevents .draggable.drag a.tabledrag-handle .handle {
background-position: 50% -32px;
}
.tabledrag-toggle-weight-wrapper {
text-align: right; /* LTR */
}
[dir="rtl"] .tabledrag-toggle-weight-wrapper {
text-align: left;
}
.indentation {
float: left; /* LTR */
width: 20px;
height: 1.7em;
margin: -0.4em 0.2em -0.4em -0.4em; /* LTR */
padding: 0.42em 0 0.42em 0.6em; /* LTR */
}
[dir="rtl"] .indentation {
float: right;
margin: -0.4em -0.4em -0.4em 0.2em;
padding: 0.42em 0.6em 0.42em 0;
}
@@ -0,0 +1,19 @@
/**
* @file
* Table sort indicator.
*
* @see tablesort-indicator.html.twig
*/
.tablesort {
display: inline-block;
width: 16px;
height: 16px;
background-size: 100%;
}
.tablesort--asc {
background-image: url(../../../images/core/icons/787878/twistie-down.svg);
}
.tablesort--desc {
background-image: url(../../../images/core/icons/787878/twistie-up.svg);
}
@@ -0,0 +1,18 @@
/**
* @file
* Visual styles for a nested tree child.
*/
div.tree-child {
background: url(../../../images/core/tree.png) no-repeat 11px center; /* LTR */
}
div.tree-child-last {
background: url(../../../images/core/tree-bottom.png) no-repeat 11px center; /* LTR */
}
[dir="rtl"] div.tree-child,
[dir="rtl"] div.tree-child-last {
background-position: -65px center;
}
div.tree-child-horizontal {
background: url(../../../images/core/tree.png) no-repeat -11px center;
}
@@ -0,0 +1,23 @@
/* table style column align */
.views-align-left {
text-align: left;
}
.views-align-right {
text-align: right;
}
.views-align-center {
text-align: center;
}
/* Grid style column align. */
.views-view-grid .views-col {
float: left;
}
.views-view-grid .views-row {
float: left;
clear: both;
width: 100%;
}
/* Provide some space between display links. */
.views-display-link + .views-display-link {
margin-left: 0.5em;
}
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z"/></svg>

After

Width:  |  Height:  |  Size: 581 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#73b355"><path d="M6.464 13.676c-.194.194-.513.194-.707 0l-4.96-4.955c-.194-.193-.194-.513 0-.707l1.405-1.407c.194-.195.512-.195.707 0l2.849 2.848c.194.193.513.193.707 0l6.629-6.626c.195-.194.514-.194.707 0l1.404 1.404c.193.194.193.513 0 .707l-8.741 8.736z"/></svg>

After

Width:  |  Height:  |  Size: 334 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z"/></svg>

After

Width:  |  Height:  |  Size: 581 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>

After

Width:  |  Height:  |  Size: 220 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>

After

Width:  |  Height:  |  Size: 217 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e29700"><path d="M14.66 12.316l-5.316-10.633c-.738-1.476-1.946-1.476-2.685 0l-5.317 10.633c-.738 1.477.008 2.684 1.658 2.684h10.002c1.65 0 2.396-1.207 1.658-2.684zm-7.66-8.316h2.002v5h-2.002v-5zm2.252 8.615c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.239c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.239z"/></svg>

After

Width:  |  Height:  |  Size: 412 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e32700"><path d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.025 9.284c.062.063.1.149.1.239 0 .091-.037.177-.1.24l-1.262 1.262c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-2.283-2.283-2.286 2.283c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-1.261-1.262c-.063-.062-.1-.148-.1-.24 0-.088.036-.176.1-.238l2.283-2.285-2.283-2.284c-.063-.064-.1-.15-.1-.24s.036-.176.1-.24l1.262-1.262c.063-.063.149-.1.24-.1.089 0 .176.036.24.1l2.285 2.284 2.283-2.284c.064-.063.15-.1.24-.1s.176.036.24.1l1.262 1.262c.062.063.1.149.1.24 0 .089-.037.176-.1.24l-2.283 2.284 2.283 2.284z"/></svg>

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

+12
View File
@@ -0,0 +1,12 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function (Drupal) {
Drupal.theme.ajaxProgressBar = function ($element) {
return $element.addClass('ajax-progress ajax-progress-bar');
};
})(Drupal);
+2817
View File
File diff suppressed because one or more lines are too long
+1243
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+1859
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+780
View File
File diff suppressed because one or more lines are too long
+2095
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,149 @@
/*
Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/
*/
.hljs {
display: block;
padding: 0.5em;
background: #23241f;
}
.hljs,
.hljs-tag,
.css .hljs-rules,
.css .hljs-value,
.css .hljs-function
.hljs-preprocessor,
.hljs-pragma {
color: #f8f8f2;
}
.hljs-strongemphasis,
.hljs-strong,
.hljs-emphasis {
color: #a8a8a2;
}
.hljs-bullet,
.hljs-blockquote,
.hljs-horizontal_rule,
.hljs-number,
.hljs-regexp,
.alias .hljs-keyword,
.hljs-literal,
.hljs-hexcolor {
color: #ae81ff;
}
.hljs-tag .hljs-value,
.hljs-code,
.hljs-title,
.css .hljs-class,
.hljs-class .hljs-title:last-child {
color: #a6e22e;
}
.hljs-link_url {
font-size: 80%;
}
.hljs-strong,
.hljs-strongemphasis {
font-weight: bold;
}
.hljs-emphasis,
.hljs-strongemphasis,
.hljs-class .hljs-title:last-child {
font-style: italic;
}
.hljs-keyword,
.hljs-function,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.lisp .hljs-title,
.clojure .hljs-built_in,
.nginx .hljs-title,
.tex .hljs-special,
.hljs-header,
.hljs-attribute,
.hljs-symbol,
.hljs-symbol .hljs-string,
.hljs-tag .hljs-title,
.hljs-value,
.alias .hljs-keyword:first-child,
.css .hljs-tag,
.css .unit,
.css .hljs-important {
color: #F92672;
}
.hljs-function .hljs-keyword,
.hljs-class .hljs-keyword:first-child,
.hljs-constant,
.css .hljs-attribute {
color: #66d9ef;
}
.hljs-variable,
.hljs-params,
.hljs-class .hljs-title {
color: #f8f8f2;
}
.hljs-string,
.css .hljs-id,
.hljs-subst,
.haskell .hljs-type,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.sql .hljs-aggregate,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.hljs-prompt,
.hljs-link_label,
.hljs-link_url {
color: #e6db74;
}
.hljs-comment,
.hljs-javadoc,
.java .hljs-annotation,
.python .hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.tex .hljs-formula {
color: #75715e;
}
.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata,
.xml .php,
.php .xml {
opacity: 0.5;
}
@@ -0,0 +1,17 @@
/**
* @file
* better_exposed_filters.css
*/
/*
* Basic styling for features added by Better Exposed Filters
*/
.bef-exposed-form .form--inline .form-item {
float: none;
}
.bef-exposed-form .form--inline > .form-item {
float: left; /* LRT */
}
.bef-exposed-form .form--inline .bef--secondary {
clear: left;
}
@@ -0,0 +1,123 @@
/**
* @file
* auto_submit.js
*
* Provides a "form auto-submit" feature for the Better Exposed Filters module.
*/
(function ($, Drupal) {
/**
* To make a form auto submit, all you have to do is 3 things:.
*
* Use the "better_exposed_filters/auto_submit" js library.
*
* On gadgets you want to auto-submit when changed, add the
* data-bef-auto-submit attribute. With FAPI, add:
* @code
* '#attributes' => array('data-bef-auto-submit' => ''),
* @endcode
*
* If you want to have auto-submit for every form element, add the
* data-bef-auto-submit-full-form to the form. With FAPI, add:
* @code
* '#attributes' => array('data-bef-auto-submit-full-form' => ''),
* @endcode
*
* If you want to exclude a field from the bef-auto-submit-full-form auto
* submission, add an attribute of data-bef-auto-submit-exclude to the form
* element. With FAPI, add:
* @code
* '#attributes' => array('data-bef-auto-submit-exclude' => ''),
* @endcode
*
* Finally, you have to identify which button you want clicked for autosubmit.
* The behavior of this button will be honored if it's ajaxy or not:
* @code
* '#attributes' => array('data-bef-auto-submit-click' => ''),
* @endcode
*
* Currently only 'select', 'radio', 'checkbox' and 'textfield' types are
* supported. We probably could use additional support for HTML5 input types.
*/
Drupal.behaviors.betterExposedFiltersAutoSubmit = {
attach: function (context) {
// When exposed as a block, the form #attributes are moved from the form
// to the block element, thus the second selector.
// @see \Drupal\block\BlockViewBuilder::preRender
var selectors = 'form[data-bef-auto-submit-full-form], [data-bef-auto-submit-full-form] form, [data-bef-auto-submit]';
// The change event bubbles so we only need to bind it to the outer form
// in case of a full form, or a single element when specified explicitly.
$(selectors, context).addBack(selectors).each(function (i, e) {
// Store the current form.
var $form = $(e);
// Retrieve the autosubmit delay for this particular form.
var autoSubmitDelay = $form.data('bef-auto-submit-delay') || 500;
// Attach event listeners.
$form.once('bef-auto-submit')
// On change, trigger the submit immediately.
.on('change', triggerSubmit)
// On keyup, wait for a specified number of milliseconds before
// triggering autosubmit. Each new keyup event resets the timer.
.on('keyup', Drupal.debounce(triggerSubmit, autoSubmitDelay));
});
/**
* Triggers form autosubmit when conditions are right.
*
* - Checks first that the element that was the target of the triggering
* event is `:text` or `textarea`, but is not `.hasDatePicker`.
* - Checks that the keycode of the keyup was not in the list of ignored
* keys (navigation keys etc).
*
* @param {object} e - The triggering event.
*/
function triggerSubmit(e) {
// e.keyCode: key.
var ignoredKeyCodes = [
16, // Shift.
17, // Ctrl.
18, // Alt.
20, // Caps lock.
33, // Page up.
34, // Page down.
35, // End.
36, // Home.
37, // Left arrow.
38, // Up arrow.
39, // Right arrow.
40, // Down arrow.
9, // Tab.
13, // Enter.
27 // Esc.
];
// Triggering element.
var $target = $(e.target);
var $submit = $target.closest('form').find('[data-bef-auto-submit-click]');
// Don't submit on changes to excluded elements or a submit element.
if ($target.is('[data-bef-auto-submit-exclude], :submit') || ($target.attr('autocomplete') == 'off' && !$target.hasClass('bef-datepicker'))) {
return true;
}
// Submit only if this is a non-datepicker textfield and if the
// incoming keycode is not one of the excluded values.
if (
$target.is(':text:not(.hasDatepicker), textarea')
&& $.inArray(e.keyCode, ignoredKeyCodes) === -1
) {
$submit.click();
}
// Only trigger submit if a change was the trigger (no keyup).
else if (e.type === 'change') {
$submit.click();
}
}
}
}
}(jQuery, Drupal));
@@ -0,0 +1,35 @@
/**
* @file
* better_exposed_filters.js
*
* Provides some client-side functionality for the Better Exposed Filters module.
*/
(function ($, Drupal, drupalSettings) {
Drupal.behaviors.betterExposedFilters = {
attach: function (context, settings) {
// Add highlight class to checked checkboxes for better theming.
$('.bef-tree input[type=checkbox], .bef-checkboxes input[type=checkbox]')
// Highlight newly selected checkboxes.
.change(function () {
_bef_highlight(this, context);
})
.filter(':checked').closest('.form-item', context).addClass('highlight');
}
};
/*
* Helper functions
*/
/**
* Adds/Removes the highlight class from the form-item div as appropriate.
*/
function _bef_highlight(elem, context) {
$elem = $(elem, context);
$elem.attr('checked')
? $elem.closest('.form-item', context).addClass('highlight')
: $elem.closest('.form-item', context).removeClass('highlight');
}
})(jQuery, Drupal, drupalSettings);
@@ -0,0 +1,18 @@
/**
* @file
* Enables syntax highlighting via HighlightJS on the HTML code tag.
*/
(function (Drupal) {
'use strict';
Drupal.behaviors.codesnippet = {
attach: function (context, settings) {
hljs.initHighlightingOnLoad();
context.querySelectorAll('pre code').forEach(element => {
element.style.overflowX = 'auto';
});
}
};
})(Drupal);

Some files were not shown because too many files have changed in this diff Show More