kcc-gem-theme 4.0.8 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_includes/body.html +0 -1
- data/_includes/emergency-alerts.html +6 -29
- data/_includes/hash/theme_hash.yml +1 -1
- data/_layouts/default-core.html +5 -3
- data/assets/js/alerts/addAccordionOrTabHistoryStates.js +3 -1
- data/assets/js/alerts/alerts.js +48 -53
- data/assets/js/alerts/contentHashLink.js +42 -34
- data/assets/js/alerts/createAlertsHtml.js +126 -43
- data/assets/js/dist/123.1666265cfa57a68d5866.bundle.js +1 -0
- data/assets/js/dist/{404.0aeb91daeb586b1e55a8.bundle.js → 124.1666265cfa57a68d5866.bundle.js} +1 -1
- data/assets/js/dist/124.1666265cfa57a68d5866.css +1 -0
- data/assets/js/dist/{453.0aeb91daeb586b1e55a8.bundle.js → 453.1666265cfa57a68d5866.bundle.js} +1 -1
- data/assets/js/dist/484.1666265cfa57a68d5866.bundle.js +2 -0
- data/assets/js/dist/484.1666265cfa57a68d5866.bundle.js.LICENSE.txt +11 -0
- data/assets/js/dist/{885.0aeb91daeb586b1e55a8.bundle.js → 543.1666265cfa57a68d5866.bundle.js} +1 -1
- data/assets/js/dist/{635.0aeb91daeb586b1e55a8.bundle.js → 635.1666265cfa57a68d5866.bundle.js} +1 -1
- data/assets/js/dist/695.1666265cfa57a68d5866.bundle.js +2 -0
- data/assets/js/dist/976.1666265cfa57a68d5866.bundle.js +1 -0
- data/assets/js/dist/{kcc-theme-landing.0aeb91daeb586b1e55a8.bundle.js → kcc-theme-landing.1666265cfa57a68d5866.bundle.js} +1 -1
- data/assets/js/dist/{kcc-theme.0aeb91daeb586b1e55a8.bundle.js → kcc-theme.1666265cfa57a68d5866.bundle.js} +2 -2
- data/assets/js/dist/kcc-theme.1666265cfa57a68d5866.css +1 -0
- data/assets/js/src/all.js +10 -4
- data/assets/js/src/searchPageJumpLinkFix.js +27 -0
- data/assets/scss/0-tools/_gsc-search-page-overrides.scss +14 -1
- data/assets/scss/1-base/_buttons.scss +3 -62
- data/assets/scss/1-base/_typography.scss +12 -5
- data/assets/scss/2-modules/_accordion.scss +4 -2
- data/assets/scss/3-layout/_positioning.scss +4 -71
- metadata +39 -42
- data/assets/js/alerts/cacheResponse.js +0 -23
- data/assets/js/alerts/checkForPrefersReducedMotion.js +0 -19
- data/assets/js/alerts/fetchNewAlert.js +0 -33
- data/assets/js/alerts/getCachedResponse.js +0 -43
- data/assets/js/alerts/refreshAlertButton.js +0 -37
- data/assets/js/dist/604.0aeb91daeb586b1e55a8.bundle.js +0 -1
- data/assets/js/dist/695.0aeb91daeb586b1e55a8.bundle.js +0 -2
- data/assets/js/dist/706.0aeb91daeb586b1e55a8.bundle.js +0 -1
- data/assets/js/dist/885.0aeb91daeb586b1e55a8.css +0 -1
- data/assets/js/dist/923.0aeb91daeb586b1e55a8.bundle.js +0 -1
- data/assets/js/dist/kcc-theme.0aeb91daeb586b1e55a8.css +0 -1
- /data/assets/js/dist/{102.0aeb91daeb586b1e55a8.bundle.js → 102.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{111.0aeb91daeb586b1e55a8.bundle.js → 111.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{143.0aeb91daeb586b1e55a8.bundle.js → 143.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{172.0aeb91daeb586b1e55a8.bundle.js → 172.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{3.0aeb91daeb586b1e55a8.bundle.js → 3.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{303.0aeb91daeb586b1e55a8.bundle.js → 303.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{354.0aeb91daeb586b1e55a8.bundle.js → 354.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{453.0aeb91daeb586b1e55a8.bundle.js.LICENSE.txt → 453.1666265cfa57a68d5866.bundle.js.LICENSE.txt} +0 -0
- /data/assets/js/dist/{501.0aeb91daeb586b1e55a8.bundle.js → 501.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{404.0aeb91daeb586b1e55a8.css → 543.1666265cfa57a68d5866.css} +0 -0
- /data/assets/js/dist/{600.0aeb91daeb586b1e55a8.bundle.js → 600.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{635.0aeb91daeb586b1e55a8.bundle.js.LICENSE.txt → 635.1666265cfa57a68d5866.bundle.js.LICENSE.txt} +0 -0
- /data/assets/js/dist/{676.0aeb91daeb586b1e55a8.bundle.js → 676.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{695.0aeb91daeb586b1e55a8.bundle.js.LICENSE.txt → 695.1666265cfa57a68d5866.bundle.js.LICENSE.txt} +0 -0
- /data/assets/js/dist/{731.0aeb91daeb586b1e55a8.bundle.js → 731.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{758.0aeb91daeb586b1e55a8.bundle.js → 758.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{772.0aeb91daeb586b1e55a8.bundle.js → 772.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{818.0aeb91daeb586b1e55a8.bundle.js → 818.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{977.0aeb91daeb586b1e55a8.bundle.js → 977.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{bootstrap.0aeb91daeb586b1e55a8.bundle.js → bootstrap.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{bootstrap.0aeb91daeb586b1e55a8.css → bootstrap.1666265cfa57a68d5866.css} +0 -0
- /data/assets/js/dist/{kcc-theme.0aeb91daeb586b1e55a8.bundle.js.LICENSE.txt → kcc-theme.1666265cfa57a68d5866.bundle.js.LICENSE.txt} +0 -0
- /data/assets/js/dist/{translate.0aeb91daeb586b1e55a8.bundle.js → translate.1666265cfa57a68d5866.bundle.js} +0 -0
- /data/assets/js/dist/{translate.0aeb91daeb586b1e55a8.css → translate.1666265cfa57a68d5866.css} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 330beb1017065384b64d220321220eb66fc6059871f6d44a048b95c1f6fa74d3
|
|
4
|
+
data.tar.gz: 13ee839c2bf619d0dd318e4f8f424b377760254b77df0c3d1cea0cd12c2ebc6c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9a938399207beeb843378515f201d49738031d3e0deebe37b32b3af244eef31109b521f9dddddc53ffbea7105213ebc5ee0bdc71ea81b01f08d62b2a351b359d
|
|
7
|
+
data.tar.gz: d50ab8dac5e210c02effa238a815f6fd1fe103cbe970b940c21f2a2810679d82736d8c00c1d52fc7b74841772a426bc7c3efaad1b6e8b50ec342693e529aa2be
|
data/_includes/body.html
CHANGED
|
@@ -6,4 +6,3 @@
|
|
|
6
6
|
</head>
|
|
7
7
|
<body data-bs-no-jquery{% if page.homepage == true %} id="homePage"{% endif %}>
|
|
8
8
|
{% unless site.exclude_nav_skip_link == true or page.exclude_nav_skip_link == true %}<a class="visually-hidden-focusable links__skip-nav" href="#content">Jump to main content</a>{% endunless %}
|
|
9
|
-
<h1 class="visually-hidden">{%- if page.outline_title -%}{{ page.outline_title }}{% else %}{{ page.title }}{%- endif -%}</h1>
|
|
@@ -1,30 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<div class="container position__offset-alert">
|
|
6
|
-
<div class="row">
|
|
7
|
-
<div class="col">
|
|
8
|
-
<div class="alert alert-warning">
|
|
9
|
-
<p class="typography__alert mb-0"><strong>Alert</strong>: All KCC facilities will be closed March 18-30. Credit classes resume online March 23. <a href="https://coronavirus.kcc.edu/" target="_blank" rel="noopener noreferrer">coronavirus.kcc.edu</a> has details.</p>
|
|
10
|
-
</div>
|
|
11
|
-
</div>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
{% endcomment %}
|
|
1
|
+
<div class="container">
|
|
2
|
+
<div class="row">
|
|
3
|
+
<div class="col">
|
|
4
|
+
<div id="emergencyAlerts" role="status" aria-hidden="true"></div>
|
|
15
5
|
</div>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<!-- TODO:
|
|
19
|
-
|
|
20
|
-
AFTER CORE IS LAUNCHED
|
|
21
|
-
|
|
22
|
-
REMOVE:
|
|
23
|
-
```
|
|
24
|
-
{% if site.core_site == true %} position__offset-alert-core{% endif %}{% if site.core_root == true %} position__offset-alert-core--root{% endif %}
|
|
25
|
-
```
|
|
26
|
-
(ALSO REMOVE FROM CONFIG)
|
|
27
|
-
|
|
28
|
-
ENDTODO -->
|
|
29
|
-
|
|
30
|
-
{%- endcomment -%}
|
|
6
|
+
</div>
|
|
7
|
+
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1666265cfa57a68d5866
|
data/_layouts/default-core.html
CHANGED
|
@@ -17,9 +17,11 @@ layout: compress
|
|
|
17
17
|
{% include scripts/google-noscript.html %}
|
|
18
18
|
{% if site.translate == true %}{% include translate.html %}{% endif %}
|
|
19
19
|
{% include header-global.html %}
|
|
20
|
-
|
|
21
|
-
{{
|
|
22
|
-
{
|
|
20
|
+
<main id="content" class="positioning__offset-global-header">
|
|
21
|
+
{% if site.core_root != true and page.no_alert != true %}{% include emergency-alerts.html %}{% endif %}
|
|
22
|
+
{{ content }}
|
|
23
|
+
{% if page.no_main_call_to_action != true %}{% include main-call-to-action.html %}{% endif %}
|
|
24
|
+
</main>
|
|
23
25
|
{% include footer.html %}
|
|
24
26
|
{% include scripts/vendor-cdn.html %}
|
|
25
27
|
{% include scripts/google-api.html %}
|
|
@@ -20,7 +20,9 @@ function accordionHandler(e) {
|
|
|
20
20
|
|
|
21
21
|
const accordionIsOpening = Boolean(JSON.parse(e.target.getAttribute('aria-expanded')));
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
if (accordionIsOpening) {
|
|
24
|
+
addHistoryState(e.target, e.target.dataset.bsTarget);
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
function tabHandler(e) {
|
data/assets/js/alerts/alerts.js
CHANGED
|
@@ -3,68 +3,63 @@
|
|
|
3
3
|
// © 2020 Kankakee Community College
|
|
4
4
|
// =================================================== */
|
|
5
5
|
import createAlertsHtml from './createAlertsHtml';
|
|
6
|
-
import cacheResponse from './cacheResponse';
|
|
7
|
-
import getCachedResponse from './getCachedResponse';
|
|
8
|
-
import checkForPrefersReducedMotion from './checkForPrefersReducedMotion';
|
|
9
6
|
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
spreadsheetId: '
|
|
7
|
+
const apiKey = 'AIzaSyCEBsbXfFcdbkASlg-PodD1rT_Fe3Nw62A';
|
|
8
|
+
const sheetParams = {
|
|
9
|
+
spreadsheetId: '1pqYRAhZvOHB52KqttV_d5P8qWvh9j8pPR15MCoGjMK0',
|
|
13
10
|
range: 'Alerts'
|
|
14
|
-
}; // Configures the Object used for `sheets.spreadsheets.values.get()` parameters
|
|
15
|
-
const API_PARAMS = { // This is configuration for API call with spreadsheets that are setup as readonly
|
|
16
|
-
'apiKey': 'AIzaSyCEBsbXfFcdbkASlg-PodD1rT_Fe3Nw62A',
|
|
17
|
-
'discoveryDocs': ['https://www.googleapis.com/discovery/v1/apis/sheets/v4/rest']
|
|
18
11
|
};
|
|
19
|
-
const pageHasAccordionOrTabs = (document.querySelector('#accordion') || document.querySelector('.navTabs')) ? true : false;
|
|
20
12
|
|
|
21
|
-
|
|
22
|
-
const { default: module_func } = await import(`./${module}`);
|
|
13
|
+
const pageHasAccordionOrTabs = (document.querySelector('#accordion') || document.querySelector('.navTabs'));
|
|
23
14
|
|
|
24
|
-
|
|
15
|
+
function importHashLinkModule(Collapse) {
|
|
16
|
+
import('./contentHashLink')
|
|
17
|
+
.then(({ default: contentHashLink }) => contentHashLink(Collapse));
|
|
25
18
|
}
|
|
26
19
|
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
async function fetchSheetData(spreadsheetId, range, apiKey) {
|
|
21
|
+
// Use encodeURIComponent to handle spaces and '!' in the range string
|
|
22
|
+
const encodedRange = encodeURIComponent(range);
|
|
23
|
+
const url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${encodedRange}?key=${apiKey}`;
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
try {
|
|
26
|
+
const response = await fetch(url);
|
|
27
|
+
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const error = await response.json();
|
|
30
|
+
throw new Error(`Google Sheets API Error: ${error.error.message}`);
|
|
34
31
|
}
|
|
35
|
-
}
|
|
36
32
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
createAlertsHtml(response) // Promise is resolved after HTML alert is built
|
|
48
|
-
return response;
|
|
49
|
-
}).then(response => {
|
|
50
|
-
cacheResponse(response);
|
|
51
|
-
resolve();
|
|
52
|
-
}, err => {
|
|
53
|
-
console.error("Error trying to fetch the alert from gapi:", err);
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}).then(() => {
|
|
58
|
-
window.setTimeout(() => {
|
|
59
|
-
if (pageHasAccordionOrTabs) {
|
|
60
|
-
import('./contentHashLink').then(({default: contentHashLink}) => contentHashLink(Collapse));
|
|
61
|
-
}
|
|
62
|
-
}, 100)
|
|
63
|
-
}) // Run accordion/tab JS, which includes a `scrollTo()`, after alert has painted
|
|
64
|
-
.then(() => {
|
|
65
|
-
if (!document.getElementById('syncAlert'))
|
|
66
|
-
return;
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
|
|
35
|
+
// Google returns an empty object if the range is empty;
|
|
36
|
+
// we default to an empty array for consistency.
|
|
37
|
+
return data.values || [];
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.error("Failed to fetch sheet data:", err);
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
67
43
|
|
|
68
|
-
|
|
69
|
-
|
|
44
|
+
export default function alerts(Collapse) {
|
|
45
|
+
if (!document.getElementById('emergencyAlerts') && pageHasAccordionOrTabs) {
|
|
46
|
+
// Handle page with no emergency alerts
|
|
47
|
+
importHashLinkModule(Collapse);
|
|
48
|
+
} else {
|
|
49
|
+
// Handle pages with alerts
|
|
50
|
+
// const response = await fetchSheetData(sheetParams.spreadsheetId, sheetParams.range, apiKey);
|
|
51
|
+
fetchSheetData(sheetParams.spreadsheetId, sheetParams.range, apiKey)
|
|
52
|
+
.then(response => {
|
|
53
|
+
createAlertsHtml(response);
|
|
54
|
+
if (pageHasAccordionOrTabs) {
|
|
55
|
+
importHashLinkModule(Collapse);
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
.catch(error => {
|
|
59
|
+
console.error("Error received:", error.message);
|
|
60
|
+
if (pageHasAccordionOrTabs) {
|
|
61
|
+
importHashLinkModule(Collapse);
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
}
|
|
70
65
|
}
|
|
@@ -12,22 +12,16 @@
|
|
|
12
12
|
//
|
|
13
13
|
import Tab from 'bootstrap/js/dist/tab'; // Import Tab from Bootstrap 5
|
|
14
14
|
|
|
15
|
-
const idRegex = /.*[\?&]id=([^&]+).*$/;
|
|
15
|
+
const idRegex = /.*[\?&]id=([^&]+).*$/;
|
|
16
16
|
const endingSlashRegex = /\/$/g;
|
|
17
|
-
const
|
|
18
|
-
const scrollIntoViewOptionsObject = {
|
|
19
|
-
behavior: 'smooth',
|
|
20
|
-
block: 'start'
|
|
21
|
-
}
|
|
22
|
-
const reducedMotionscrollIntoViewOptionsObject = {
|
|
23
|
-
block: 'start'
|
|
24
|
-
}
|
|
17
|
+
const motionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
25
18
|
|
|
26
19
|
function focusElement(el) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
el.focus();
|
|
21
|
+
el.scrollIntoView({
|
|
22
|
+
behavior: motionQuery.matches ? 'instant' : 'smooth',
|
|
23
|
+
block: 'start'
|
|
24
|
+
});
|
|
31
25
|
}
|
|
32
26
|
|
|
33
27
|
function processIdQuery(query, hash) {
|
|
@@ -60,28 +54,43 @@ function openAllAccordions(Collapse) {
|
|
|
60
54
|
})
|
|
61
55
|
}
|
|
62
56
|
|
|
57
|
+
function handleTabs(hash) {
|
|
58
|
+
const tab = document.querySelector(`.nav-tabs [data-bs-target="${hash}"]`);
|
|
59
|
+
const bsTab = new Tab(tab);
|
|
60
|
+
|
|
61
|
+
tab.addEventListener('shown.bs.tab', _e => {
|
|
62
|
+
if (window.location.search) {
|
|
63
|
+
checkForQuery(window.location.search, hash);
|
|
64
|
+
} else {
|
|
65
|
+
findContentTarget(`${hash}-label`); // You need to .scrollIntoView() & .focus() on the tab-label which is an anchor or button. It won't work to do .scrollIntoView() and .focus() on the div
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
bsTab.show();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function handleAccordions(hash, Collapse) {
|
|
73
|
+
const card = document.querySelector(hash);
|
|
74
|
+
const bsCard = new Collapse(card, {toggle: false});
|
|
75
|
+
|
|
76
|
+
card.addEventListener('shown.bs.collapse', _e => {
|
|
77
|
+
if (window.location.search) {
|
|
78
|
+
checkForQuery(window.location.search, hash);
|
|
79
|
+
} else {
|
|
80
|
+
findContentTarget(`button[data-bs-target="${hash}"]`);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
bsCard.show();
|
|
85
|
+
}
|
|
86
|
+
|
|
63
87
|
function checkForMatchingTabOrAccordion(hash, Collapse) {
|
|
64
88
|
if ( document.querySelector(`.nav-tabs [data-bs-target="${hash}"]`) ) { // Looks for a matching BS5 tab element
|
|
65
|
-
|
|
66
|
-
const bsTab = new Tab(tab);
|
|
67
|
-
|
|
68
|
-
tab.addEventListener('shown.bs.tab', _e => {
|
|
69
|
-
window.location.search ?
|
|
70
|
-
checkForQuery(window.location.search, hash)
|
|
71
|
-
: findContentTarget(`${hash}-label`); // You need to .scrollIntoView() & .focus() on the tab-label which is an <a href="...">. It won't work to do .scrollIntoView() and .focus() on the div
|
|
72
|
-
});
|
|
73
|
-
bsTab.show();
|
|
89
|
+
handleTabs(hash);
|
|
74
90
|
} else if ( document.querySelector(`${hash}.collapse`) ) { // Looks for a matching BS5 collapse element
|
|
75
|
-
|
|
76
|
-
const bsCard = new Collapse(card, {toggle: false});
|
|
77
|
-
|
|
78
|
-
card.addEventListener('shown.bs.collapse', _e => {
|
|
79
|
-
window.location.search ?
|
|
80
|
-
checkForQuery(window.location.search, hash)
|
|
81
|
-
: findContentTarget(`button[data-bs-target="${hash}"]`);
|
|
82
|
-
});
|
|
83
|
-
bsCard.show();
|
|
91
|
+
handleAccordions(hash, Collapse);
|
|
84
92
|
} else if (hash === '#please-open-all-accordions') {
|
|
93
|
+
// The #please-open-all-accordions hash is a helper for accessibility testing
|
|
85
94
|
openAllAccordions(Collapse);
|
|
86
95
|
}
|
|
87
96
|
}
|
|
@@ -101,9 +110,8 @@ function contentHashLink(Collapse) {
|
|
|
101
110
|
checkForHash(Collapse);
|
|
102
111
|
}, false);
|
|
103
112
|
|
|
104
|
-
import('./addAccordionOrTabHistoryStates')
|
|
105
|
-
addAccordionOrTabHistoryStates();
|
|
106
|
-
});
|
|
113
|
+
import('./addAccordionOrTabHistoryStates')
|
|
114
|
+
.then(({ default: addAccordionOrTabHistoryStates }) => addAccordionOrTabHistoryStates());
|
|
107
115
|
}
|
|
108
116
|
|
|
109
117
|
export default contentHashLink;
|
|
@@ -1,72 +1,155 @@
|
|
|
1
1
|
/*
|
|
2
2
|
// Custom JS | written by https://github.com/wdzajicek
|
|
3
|
-
// © 2020 Kankakee Community College
|
|
4
3
|
// =================================================== */
|
|
5
4
|
// JS module to build alert message using data from Google Sheets API v4
|
|
6
5
|
//
|
|
7
6
|
// This exported module requires you pass it's default-function the `response` object from the API call, as the only argument
|
|
8
7
|
//
|
|
9
8
|
import parseMarkdownToHTML from './parseMarkdownToHTML.js'; // Parses a simplified markdown into html & creates the paragraph el's with appropriate class
|
|
10
|
-
//
|
|
11
|
-
const CAMPUS_ALERTS_DIV_ID_STRING = 'emergencyAlerts'; // ID of the div to house campus alerts - already built into the page.
|
|
12
|
-
const ALERTS_VISIBLE_CLASS = 'position__offset-alert--visible';
|
|
13
|
-
const TARGET = document.getElementById(CAMPUS_ALERTS_DIV_ID_STRING); // This targets an element built into the DOM that we inject everything into.
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
target.innerHTML = alert;
|
|
17
|
-
return target.classList.add(ALERTS_VISIBLE_CLASS);
|
|
18
|
-
}
|
|
10
|
+
const parent = document.getElementById('emergencyAlerts'); // This targets an element built into the DOM that we inject everything into.
|
|
19
11
|
|
|
12
|
+
// returns the BS5 color class depending on the choice in the Google Sheet
|
|
20
13
|
function checkAlertType(type) {
|
|
21
14
|
return type == 'SCHOOL EMERGENCY/CLOSURE - red' ? 'danger'
|
|
15
|
+
: type == 'SCHOOL WARNING - yellow' ? 'warning'
|
|
22
16
|
: type == 'SCHOOL INFO - blue' ? 'primary'
|
|
23
17
|
: type == 'SCHOOL INFO - cyan' ? 'info'
|
|
24
18
|
: 'warning';
|
|
25
19
|
}
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
// Since the alert systems is rarely used we can get away with a simplified hashing function.
|
|
22
|
+
// There's a tiny possibility of hash clashing but it's not likely and alerts are used a few times a year.
|
|
23
|
+
// If hashes end up clashing a more formal hashing function (from external library) may be needed but will come with bloat.
|
|
24
|
+
function generateAlertKey(alertText) {
|
|
25
|
+
let hash = 0;
|
|
26
|
+
|
|
27
|
+
for (let i = 0; i < alertText.length; i++) {
|
|
28
|
+
const char = alertText.charCodeAt(i);
|
|
29
|
+
// Simple bitwise shifting math to scramble the integer uniquely
|
|
30
|
+
hash = (hash << 5) - hash + char;
|
|
31
|
+
hash |= 0; // Convert to 32bit integer
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Math.abs ensures we get a clean positive string ID like "college_alert_293847"
|
|
35
|
+
return `college_alert_${Math.abs(hash)}`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// return true if the alert was dismissed already:
|
|
39
|
+
function isAlertDismissed(alertId) {
|
|
40
|
+
// 1. Grab the history object (default to empty object if it doesn't exist)
|
|
41
|
+
const storage = JSON.parse(localStorage.getItem('alert_history') || '{}');
|
|
42
|
+
|
|
43
|
+
// 2. Check if the specific alertId exists as a key in that object
|
|
44
|
+
// This returns true if found, false if not.
|
|
45
|
+
return alertId in storage;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Returns alert HTML or false if the alert is not current or was dismissed already:
|
|
49
|
+
function createAlert(alertData) {
|
|
50
|
+
const [visibility, allPages, content, expire, start, end, type, today] = alertData;
|
|
29
51
|
if (visibility === 'FALSE') // Predefined dropdown options in the Sheet are `'TRUE'` & `'FALSE'`
|
|
30
|
-
return;
|
|
52
|
+
return false;
|
|
53
|
+
|
|
54
|
+
// Generate a unique key/ID for the alert
|
|
55
|
+
const key = generateAlertKey(content);
|
|
31
56
|
|
|
32
|
-
|
|
57
|
+
if (isAlertDismissed(key))
|
|
58
|
+
return false;
|
|
59
|
+
|
|
60
|
+
const isEmergencyAlert = type == 'SCHOOL EMERGENCY/CLOSURE - red';
|
|
61
|
+
// By letting Google Sheets define today's date (and the Sheet is locked to Chicago time),
|
|
62
|
+
// we need to worry about JS date nonsense and edge cases
|
|
63
|
+
const d = new Date(today);
|
|
33
64
|
const s = new Date(start);
|
|
34
65
|
const e = new Date(end);
|
|
35
|
-
|
|
36
|
-
|
|
66
|
+
|
|
67
|
+
[d, s, e].forEach(d => d.setHours(0, 0, 0, 0));
|
|
68
|
+
|
|
69
|
+
const alertType = checkAlertType(type); // Get the suffix for the BS5 class depending on the alert type
|
|
70
|
+
const isCurrent = s.getTime() <= d.getTime() && e.getTime() >= d.getTime();
|
|
71
|
+
const alertIsActive = expire === 'FALSE' || expire === 'TRUE' && isCurrent;
|
|
37
72
|
const indexPageOnly = allPages === 'TRUE' || allPages === 'FALSE' && window.location.pathname == '/';
|
|
38
73
|
let alert = `
|
|
39
|
-
<div class="
|
|
40
|
-
<div class="
|
|
41
|
-
|
|
42
|
-
<div role="alert" class="alert alert-${alertType} d-lg-flex align-items-center pr-lg-1">
|
|
43
|
-
<div class="typography__last-p--mb0">
|
|
44
|
-
${parseMarkdownToHTML(content)}
|
|
45
|
-
</div>
|
|
46
|
-
<button
|
|
47
|
-
aria-label="Refresh the alert"
|
|
48
|
-
title="Refresh the alert"
|
|
49
|
-
id="syncAlert"
|
|
50
|
-
type="button"
|
|
51
|
-
class="btn btn-link buttons--sync ms-auto">
|
|
52
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
53
|
-
class="svg__sync"
|
|
54
|
-
height="24px"
|
|
55
|
-
width="24px"
|
|
56
|
-
viewBox="0 0 24 24">
|
|
57
|
-
<path d="M0 0h24v24H0z" fill="none"/>
|
|
58
|
-
<path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20
|
|
59
|
-
12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0
|
|
60
|
-
4.42 3.58 8 8 8v3l4-4-4-4v3z"/>
|
|
61
|
-
</svg>
|
|
62
|
-
</button>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
74
|
+
<div data-alert-id="${key}" class="jsDismissibleAlert alert alert-${alertType} alert-dismissible fade show">
|
|
75
|
+
<div class="typography__last-p--mb0">
|
|
76
|
+
${parseMarkdownToHTML(content)}
|
|
65
77
|
</div>
|
|
78
|
+
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
66
79
|
</div>`;
|
|
67
80
|
|
|
68
|
-
|
|
69
|
-
|
|
81
|
+
if (alertIsActive && indexPageOnly) {
|
|
82
|
+
return alert;
|
|
83
|
+
} else {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function saveDismissal(alertId) {
|
|
89
|
+
const now = Date.now();
|
|
90
|
+
// 1. Get the existing object or a fresh one
|
|
91
|
+
const storage = JSON.parse(localStorage.getItem('alert_history') || '{}');
|
|
92
|
+
|
|
93
|
+
// 2. Add the new alert with a timestamp
|
|
94
|
+
storage[alertId] = now;
|
|
95
|
+
|
|
96
|
+
// 3. CLEANUP: Remove any alerts older than 30 days
|
|
97
|
+
const thirtyDays = 30 * 24 * 60 * 60 * 1000;
|
|
98
|
+
for (const id in storage) {
|
|
99
|
+
if (now - storage[id] > thirtyDays) {
|
|
100
|
+
delete storage[id];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 4. Save back to localStorage
|
|
105
|
+
localStorage.setItem('alert_history', JSON.stringify(storage));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function initAlertDismissal(activeAlertList) {
|
|
109
|
+
// This BS5 module provides the alert dismissing functionality.
|
|
110
|
+
// No need to call any functions, just importing it registers the proper listeners.
|
|
111
|
+
import('bootstrap/js/dist/alert.js');
|
|
112
|
+
|
|
113
|
+
// Listen for dismissal of alerts so that we can save in history
|
|
114
|
+
[...activeAlertList].forEach((alert, i) => {
|
|
115
|
+
alert.addEventListener('closed.bs.alert', e => { // 'closed.bs.alert' is a BS5 event
|
|
116
|
+
|
|
117
|
+
saveDismissal(e.target.dataset.alertId);
|
|
118
|
+
});
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function createAlertsHtml(response) { // Incoming response from our Google Sheet via the Sheets API
|
|
123
|
+
// row 1 and 2 are instructions and a header row (index 0 and 1)
|
|
124
|
+
// row 3, 4, and 5 can contain an alert (index 2, 3, and 4)
|
|
125
|
+
const alertsHTML = [response[2], response[3], response[4]]
|
|
126
|
+
.map(createAlert)
|
|
127
|
+
.filter(Boolean)
|
|
128
|
+
.join('');
|
|
129
|
+
|
|
130
|
+
if (!alertsHTML) return;
|
|
131
|
+
|
|
132
|
+
parent.insertAdjacentHTML('beforeend', alertsHTML);
|
|
133
|
+
parent.removeAttribute('aria-hidden');
|
|
134
|
+
|
|
135
|
+
// Must happen after alert injection so that we can use it to check for presence of alerts
|
|
136
|
+
const activeAlertList = document.querySelectorAll('.jsDismissibleAlert');
|
|
137
|
+
|
|
138
|
+
// No need to go any further if there are not alerts in the page
|
|
139
|
+
if (activeAlertList.length === 0)
|
|
140
|
+
return;
|
|
141
|
+
|
|
142
|
+
// This BS5 module provides the alert dismissing functionality.
|
|
143
|
+
// No need to call any functions, just importing it registers the proper listeners.
|
|
144
|
+
import('bootstrap/js/dist/alert.js');
|
|
145
|
+
|
|
146
|
+
// Listen for dismissal of alerts so that we can save in history
|
|
147
|
+
[...activeAlertList].forEach((alert, i) => {
|
|
148
|
+
alert.addEventListener('closed.bs.alert', e => { // 'closed.bs.alert' is a BS5 event
|
|
149
|
+
|
|
150
|
+
saveDismissal(e.target.dataset.alertId);
|
|
151
|
+
});
|
|
152
|
+
})
|
|
70
153
|
}
|
|
71
154
|
|
|
72
155
|
export default createAlertsHtml;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[123],{5123:function(e,t){const c=document.querySelector('a[href="#content"'),n=window.matchMedia("(prefers-reduced-motion: reduce)");t.default=function(){c.addEventListener("click",e=>{e.preventDefault();const t=e.target.getAttribute("href"),c=document.querySelector(t);c&&(c.hasAttribute("tabindex")||c.setAttribute("tabindex","-1"),c.focus(),c.scrollIntoView({behavior:n.matches?"instant":"smooth"}))})}}}]);
|
data/assets/js/dist/{404.0aeb91daeb586b1e55a8.bundle.js → 124.1666265cfa57a68d5866.bundle.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[
|
|
1
|
+
"use strict";(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[124],{7124:function(e,c,k){k.r(c)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.gsc-results .gsc-cursor-box .gsc-cursor-page{background-color:rgba(0,0,0,.09) !important;border-width:thin;border-style:solid;border-color:#555;border-radius:5px;color:#555 !important;padding:.25rem 1rem}.gsc-results .gsc-cursor-box .gsc-cursor-current-page{background-color:rgba(0,0,0,.25) !important;color:#000 !important;text-decoration:underline !important}.gsc-control-cse{font-family:"Open Sans",sans-serif !important;counter-reset:result}.gsc-webResult.gsc-result{border-bottom:solid thin #0b0e10 !important;margin-left:auto !important;margin-right:auto !important;max-width:630px;padding-left:.75rem !important;padding-right:.75rem !important}.gsc-thumbnail-inside{margin-left:32px}.gsc-thumbnail-inside::before{background-color:#0f3b63;border-radius:50%;border-color:#0b0e10;border-style:solid;border-width:1px;color:#fff;counter-increment:result;content:counter(result);display:block;font-size:14px;font-weight:700;height:26px;margin-left:-32px;line-height:24px;position:absolute;text-align:center;width:26px}.gsc-control-cse,.gsc-control-cse .gsc-table-result{font-size:.99rem !important}.gsc-control-cse .gs-spelling,.gsc-control-cse .gs-result .gs-title,.gsc-control-cse .gs-result .gs-title *{font-size:1.125rem !important}.gs-result .gs-title,.gs-result .gs-title *,.gs-result .gs-title a.gs-title b,.gcsc-find-more-on-google{color:#007bff !important}.gs-result .gs-title a.gs-title:hover,.gs-result .gs-title a.gs-title:hover b{color:#0056b3 !important;text-decoration:underline !important}.gs-result .gs-title a.gs-title:visited,.gs-result .gs-title a.gs-title:visited b{color:#3600b3 !important}.gcsc-find-more-on-google-magnifier{fill:#007bff !important}.gs-webResult div.gs-visibleUrl{color:#148ba9 !important}.gs-bidi-start-align.gs-visibleUrl.gs-visibleUrl-breadcrumb{display:inline-block;border:thin solid rgba(0,0,0,.125);padding:0 .25rem;border-radius:5px;margin-top:.25rem}.gs-webResult:not(.gs-no-results-result):not(.gs-error-result) .gs-snippet,.gs-fileFormatType{color:#555 !important;margin-top:6px;font-family:"Open Sans",sans-serif !important}.gs-bidi-start-align.gs-snippet b{font-weight:700}.gs-web-image-box .gs-image,.gs-promotion-image-box .gs-promotion-image{height:93px;margin-left:-18.25px;max-width:unset !important}.gs-web-image-box,.gs-promotion-image-box{background-color:#555;border-radius:50%;border-color:#ebebeb;border-style:solid;border-width:thin;float:right !important;height:93px;margin-top:.25rem;margin-left:1rem !important;overflow:hidden;padding:0 !important;position:relative;bottom:20px;width:93px !important;top:0}.gs-web-image-box-portrait .gs-image{height:93px;margin-left:-6.25%;transform:scale(1.2)}.gsc-cursor-box.gs-bidi-start-align{margin-top:1.5rem !important}div.gs-title{overflow:visible !important}a.gs-title:focus-visible{outline-offset:3px !important;outline-width:2px !important}.dark-mode .gs-webResult:not(.gs-no-results-result):not(.gs-error-result) .gs-snippet,.dark-mode .gs-fileFormatType{color:#969ca5 !important}.dark-mode .gs-bidi-start-align.gs-visibleUrl.gs-visibleUrl-breadcrumb{border-color:hsla(0,0%,100%,.25)}.dark-mode .gcsc-find-more-on-google-magnifier{fill:#9fc0ed !important}.dark-mode .gs-result .gs-title,.dark-mode .gs-result .gs-title *,.dark-mode .gs-result .gs-title a.gs-title b,.dark-mode .gcsc-find-more-on-google{color:#9fc0ed !important}.dark-mode .gs-result .gs-title a.gs-title:hover,.dark-mode .gs-result .gs-title a.gs-title:hover b{color:#b0d1ff !important}.dark-mode .gs-result .gs-title a.gs-title:visited,.dark-mode .gs-result .gs-title a.gs-title:visited b{color:#7382d7 !important}.dark-mode .gsc-above-wrapper-area{border-bottom-color:hsla(0,0%,100%,.5)}.dark-mode .gsc-control-cse.gsc-control-cse-en{background-color:rgba(0,0,0,0);border-color:hsla(0,0%,100%,.25);border-radius:5px}.dark-mode .gsc-webResult.gsc-result,.dark-mode .gsc-results .gsc-imageResult{background-color:#191d1f;border-color:hsla(0,0%,100%,.125)}.dark-mode .gsc-result-info,.dark-mode .gsc-orderby-label{color:#bababa}.dark-mode .gsc-results .gsc-cursor-box .gsc-cursor-page{background-color:#0b0e10;border-color:hsla(0,0%,100%,.25);border-style:solid}.dark-mode .gsc-results .gsc-cursor-box .gsc-cursor-current-page{color:#ebebeb !important;background-color:rgba(0,0,0,.5) !important}.dark-mode .gsc-webResult.gsc-result:hover{background-color:hsla(0,0%,100%,.0125) !important}.dark-mode .gsc-webResult.gsc-result{border-bottom:solid 1px #fff !important}.dark-mode .gsc-thumbnail-inside::before{background-color:#9bb7dd;border-color:#fff;color:#0b0e10}.dark-mode .gsc-selected-option-container{background-color:#9fc0ed;border-radius:4px;border-color:#fff;border-width:1px;border-style:solid;font-size:13px !important;padding-bottom:1.75rem;padding-left:.75rem !important;padding-right:32px}.dark-mode .gsc-control-cse .gsc-option-selector{right:8px;top:13px;transform:scale(1.5)}.dark-mode .gsc-control-cse .gsc-option-menu{background-color:#0b0e10}.dark-mode .gsc-option-menu-item-highlighted{background-color:#282828;color:#fff}.dark-mode .gs-bidi-start-align.gs-snippet b{color:#c4c4c4}
|
data/assets/js/dist/{453.0aeb91daeb586b1e55a8.bundle.js → 453.1666265cfa57a68d5866.bundle.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! For license information please see 453.
|
|
1
|
+
/*! For license information please see 453.1666265cfa57a68d5866.bundle.js.LICENSE.txt */
|
|
2
2
|
(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[453],{1170:function(e,t,n){"use strict";n.r(t),n.d(t,{afterMain:function(){return O},afterRead:function(){return b},afterWrite:function(){return E},applyStyles:function(){return C},arrow:function(){return J},auto:function(){return s},basePlacements:function(){return f},beforeMain:function(){return w},beforeRead:function(){return v},beforeWrite:function(){return _},bottom:function(){return o},clippingParents:function(){return p},computeStyles:function(){return ne},createPopper:function(){return Te},createPopperBase:function(){return ke},createPopperLite:function(){return Ce},detectOverflow:function(){return ve},end:function(){return u},eventListeners:function(){return oe},flip:function(){return ye},hide:function(){return xe},left:function(){return a},main:function(){return x},modifierPhases:function(){return P},offset:function(){return Oe},placements:function(){return g},popper:function(){return d},popperGenerator:function(){return Le},popperOffsets:function(){return _e},preventOverflow:function(){return je},read:function(){return y},reference:function(){return h},right:function(){return i},start:function(){return c},top:function(){return r},variationPlacements:function(){return m},viewport:function(){return l},write:function(){return j}});var r="top",o="bottom",i="right",a="left",s="auto",f=[r,o,i,a],c="start",u="end",p="clippingParents",l="viewport",d="popper",h="reference",m=f.reduce(function(e,t){return e.concat([t+"-"+c,t+"-"+u])},[]),g=[].concat(f,[s]).reduce(function(e,t){return e.concat([t,t+"-"+c,t+"-"+u])},[]),v="beforeRead",y="read",b="afterRead",w="beforeMain",x="main",O="afterMain",_="beforeWrite",j="write",E="afterWrite",P=[v,y,b,w,x,O,_,j,E];function D(e){return e?(e.nodeName||"").toLowerCase():null}function A(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function L(e){return e instanceof A(e).Element||e instanceof Element}function k(e){return e instanceof A(e).HTMLElement||e instanceof HTMLElement}function T(e){return"undefined"!=typeof ShadowRoot&&(e instanceof A(e).ShadowRoot||e instanceof ShadowRoot)}var C={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];k(o)&&D(o)&&(Object.assign(o.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});k(r)&&D(r)&&(Object.assign(r.style,i),Object.keys(o).forEach(function(e){r.removeAttribute(e)}))})}},requires:["computeStyles"]};function M(e){return e.split("-")[0]}var R=Math.max,H=Math.min,S=Math.round;function W(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function B(){return!/^((?!chrome|android).)*safari/i.test(W())}function N(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,i=1;t&&k(e)&&(o=e.offsetWidth>0&&S(r.width)/e.offsetWidth||1,i=e.offsetHeight>0&&S(r.height)/e.offsetHeight||1);var a=(L(e)?A(e):window).visualViewport,s=!B()&&n,f=(r.left+(s&&a?a.offsetLeft:0))/o,c=(r.top+(s&&a?a.offsetTop:0))/i,u=r.width/o,p=r.height/i;return{width:u,height:p,top:c,right:f+u,bottom:c+p,left:f,x:f,y:c}}function $(e){var t=N(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function I(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&T(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return A(e).getComputedStyle(e)}function q(e){return["table","td","th"].indexOf(D(e))>=0}function U(e){return((L(e)?e.ownerDocument:e.document)||window.document).documentElement}function z(e){return"html"===D(e)?e:e.assignedSlot||e.parentNode||(T(e)?e.host:null)||U(e)}function F(e){return k(e)&&"fixed"!==V(e).position?e.offsetParent:null}function K(e){for(var t=A(e),n=F(e);n&&q(n)&&"static"===V(n).position;)n=F(n);return n&&("html"===D(n)||"body"===D(n)&&"static"===V(n).position)?t:n||function(e){var t=/firefox/i.test(W());if(/Trident/i.test(W())&&k(e)&&"fixed"===V(e).position)return null;var n=z(e);for(T(n)&&(n=n.host);k(n)&&["html","body"].indexOf(D(n))<0;){var r=V(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function Q(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e,t,n){return R(e,H(t,n))}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var J={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,s=e.name,c=e.options,u=n.elements.arrow,p=n.modifiersData.popperOffsets,l=M(n.placement),d=Q(l),h=[a,i].indexOf(l)>=0?"height":"width";if(u&&p){var m=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,f))}(c.padding,n),g=$(u),v="y"===d?r:a,y="y"===d?o:i,b=n.rects.reference[h]+n.rects.reference[d]-p[d]-n.rects.popper[h],w=p[d]-n.rects.reference[d],x=K(u),O=x?"y"===d?x.clientHeight||0:x.clientWidth||0:0,_=b/2-w/2,j=m[v],E=O-g[h]-m[y],P=O/2-g[h]/2+_,D=X(j,P,E),A=d;n.modifiersData[s]=((t={})[A]=D,t.centerOffset=D-P,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&I(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Z(e){return e.split("-")[1]}var ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var t,n=e.popper,s=e.popperRect,f=e.placement,c=e.variation,p=e.offsets,l=e.position,d=e.gpuAcceleration,h=e.adaptive,m=e.roundOffsets,g=e.isFixed,v=p.x,y=void 0===v?0:v,b=p.y,w=void 0===b?0:b,x="function"==typeof m?m({x:y,y:w}):{x:y,y:w};y=x.x,w=x.y;var O=p.hasOwnProperty("x"),_=p.hasOwnProperty("y"),j=a,E=r,P=window;if(h){var D=K(n),L="clientHeight",k="clientWidth";D===A(n)&&"static"!==V(D=U(n)).position&&"absolute"===l&&(L="scrollHeight",k="scrollWidth"),(f===r||(f===a||f===i)&&c===u)&&(E=o,w-=(g&&D===P&&P.visualViewport?P.visualViewport.height:D[L])-s.height,w*=d?1:-1),f!==a&&(f!==r&&f!==o||c!==u)||(j=i,y-=(g&&D===P&&P.visualViewport?P.visualViewport.width:D[k])-s.width,y*=d?1:-1)}var T,C=Object.assign({position:l},h&&ee),M=!0===m?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:S(n*o)/o||0,y:S(r*o)/o||0}}({x:y,y:w},A(n)):{x:y,y:w};return y=M.x,w=M.y,d?Object.assign({},C,((T={})[E]=_?"0":"",T[j]=O?"0":"",T.transform=(P.devicePixelRatio||1)<=1?"translate("+y+"px, "+w+"px)":"translate3d("+y+"px, "+w+"px, 0)",T)):Object.assign({},C,((t={})[E]=_?w+"px":"",t[j]=O?y+"px":"",t.transform="",t))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:M(t.placement),variation:Z(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},re={passive:!0},oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,a=r.resize,s=void 0===a||a,f=A(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&c.forEach(function(e){e.addEventListener("scroll",n.update,re)}),s&&f.addEventListener("resize",n.update,re),function(){i&&c.forEach(function(e){e.removeEventListener("scroll",n.update,re)}),s&&f.removeEventListener("resize",n.update,re)}},data:{}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,function(e){return ie[e]})}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,function(e){return se[e]})}function ce(e){var t=A(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ue(e){return N(U(e)).left+ce(e).scrollLeft}function pe(e){var t=V(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function le(e){return["html","body","#document"].indexOf(D(e))>=0?e.ownerDocument.body:k(e)&&pe(e)?e:le(z(e))}function de(e,t){var n;void 0===t&&(t=[]);var r=le(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),i=A(r),a=o?[i].concat(i.visualViewport||[],pe(r)?r:[]):r,s=t.concat(a);return o?s:s.concat(de(z(a)))}function he(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function me(e,t,n){return t===l?he(function(e,t){var n=A(e),r=U(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;if(o){i=o.width,a=o.height;var c=B();(c||!c&&"fixed"===t)&&(s=o.offsetLeft,f=o.offsetTop)}return{width:i,height:a,x:s+ue(e),y:f}}(e,n)):L(t)?function(e,t){var n=N(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):he(function(e){var t,n=U(e),r=ce(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=R(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=R(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+ue(e),f=-r.scrollTop;return"rtl"===V(o||n).direction&&(s+=R(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:f}}(U(e)))}function ge(e){var t,n=e.reference,s=e.element,f=e.placement,p=f?M(f):null,l=f?Z(f):null,d=n.x+n.width/2-s.width/2,h=n.y+n.height/2-s.height/2;switch(p){case r:t={x:d,y:n.y-s.height};break;case o:t={x:d,y:n.y+n.height};break;case i:t={x:n.x+n.width,y:h};break;case a:t={x:n.x-s.width,y:h};break;default:t={x:n.x,y:n.y}}var m=p?Q(p):null;if(null!=m){var g="y"===m?"height":"width";switch(l){case c:t[m]=t[m]-(n[g]/2-s[g]/2);break;case u:t[m]=t[m]+(n[g]/2-s[g]/2)}}return t}function ve(e,t){void 0===t&&(t={});var n=t,a=n.placement,s=void 0===a?e.placement:a,c=n.strategy,u=void 0===c?e.strategy:c,m=n.boundary,g=void 0===m?p:m,v=n.rootBoundary,y=void 0===v?l:v,b=n.elementContext,w=void 0===b?d:b,x=n.altBoundary,O=void 0!==x&&x,_=n.padding,j=void 0===_?0:_,E=Y("number"!=typeof j?j:G(j,f)),P=w===d?h:d,A=e.rects.popper,T=e.elements[O?P:w],C=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=de(z(e)),n=["absolute","fixed"].indexOf(V(e).position)>=0&&k(e)?K(e):e;return L(n)?t.filter(function(e){return L(e)&&I(e,n)&&"body"!==D(e)}):[]}(e):[].concat(t),i=[].concat(o,[n]),a=i[0],s=i.reduce(function(t,n){var o=me(e,n,r);return t.top=R(o.top,t.top),t.right=H(o.right,t.right),t.bottom=H(o.bottom,t.bottom),t.left=R(o.left,t.left),t},me(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(L(T)?T:T.contextElement||U(e.elements.popper),g,y,u),M=N(e.elements.reference),S=ge({reference:M,element:A,strategy:"absolute",placement:s}),W=he(Object.assign({},A,S)),B=w===d?W:M,$={top:C.top-B.top+E.top,bottom:B.bottom-C.bottom+E.bottom,left:C.left-B.left+E.left,right:B.right-C.right+E.right},q=e.modifiersData.offset;if(w===d&&q){var F=q[s];Object.keys($).forEach(function(e){var t=[i,o].indexOf(e)>=0?1:-1,n=[r,o].indexOf(e)>=0?"y":"x";$[e]+=F[n]*t})}return $}var ye={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,u=e.name;if(!t.modifiersData[u]._skip){for(var p=n.mainAxis,l=void 0===p||p,d=n.altAxis,h=void 0===d||d,v=n.fallbackPlacements,y=n.padding,b=n.boundary,w=n.rootBoundary,x=n.altBoundary,O=n.flipVariations,_=void 0===O||O,j=n.allowedAutoPlacements,E=t.options.placement,P=M(E),D=v||(P!==E&&_?function(e){if(M(e)===s)return[];var t=ae(e);return[fe(e),t,fe(t)]}(E):[ae(E)]),A=[E].concat(D).reduce(function(e,n){return e.concat(M(n)===s?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?g:c,p=Z(r),l=p?s?m:m.filter(function(e){return Z(e)===p}):f,d=l.filter(function(e){return u.indexOf(e)>=0});0===d.length&&(d=l);var h=d.reduce(function(t,n){return t[n]=ve(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[M(n)],t},{});return Object.keys(h).sort(function(e,t){return h[e]-h[t]})}(t,{placement:n,boundary:b,rootBoundary:w,padding:y,flipVariations:_,allowedAutoPlacements:j}):n)},[]),L=t.rects.reference,k=t.rects.popper,T=new Map,C=!0,R=A[0],H=0;H<A.length;H++){var S=A[H],W=M(S),B=Z(S)===c,N=[r,o].indexOf(W)>=0,$=N?"width":"height",I=ve(t,{placement:S,boundary:b,rootBoundary:w,altBoundary:x,padding:y}),V=N?B?i:a:B?o:r;L[$]>k[$]&&(V=ae(V));var q=ae(V),U=[];if(l&&U.push(I[W]<=0),h&&U.push(I[V]<=0,I[q]<=0),U.every(function(e){return e})){R=S,C=!1;break}T.set(S,U)}if(C)for(var z=function(e){var t=A.find(function(t){var n=T.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return R=t,"break"},F=_?3:1;F>0&&"break"!==z(F);F--);t.placement!==R&&(t.modifiersData[u]._skip=!0,t.placement=R,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function be(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function we(e){return[r,i,o,a].some(function(t){return e[t]>=0})}var xe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=ve(t,{elementContext:"reference"}),s=ve(t,{altBoundary:!0}),f=be(a,r),c=be(s,o,i),u=we(f),p=we(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:p},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":p})}},Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,s=n.offset,f=void 0===s?[0,0]:s,c=g.reduce(function(e,n){return e[n]=function(e,t,n){var o=M(e),s=[a,r].indexOf(o)>=0?-1:1,f="function"==typeof n?n(Object.assign({},t,{placement:e})):n,c=f[0],u=f[1];return c=c||0,u=(u||0)*s,[a,i].indexOf(o)>=0?{x:u,y:c}:{x:c,y:u}}(n,t.rects,f),e},{}),u=c[t.placement],p=u.x,l=u.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=p,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=c}},_e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ge({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,s=e.name,f=n.mainAxis,u=void 0===f||f,p=n.altAxis,l=void 0!==p&&p,d=n.boundary,h=n.rootBoundary,m=n.altBoundary,g=n.padding,v=n.tether,y=void 0===v||v,b=n.tetherOffset,w=void 0===b?0:b,x=ve(t,{boundary:d,rootBoundary:h,padding:g,altBoundary:m}),O=M(t.placement),_=Z(t.placement),j=!_,E=Q(O),P="x"===E?"y":"x",D=t.modifiersData.popperOffsets,A=t.rects.reference,L=t.rects.popper,k="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,T="number"==typeof k?{mainAxis:k,altAxis:k}:Object.assign({mainAxis:0,altAxis:0},k),C=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,S={x:0,y:0};if(D){if(u){var W,B="y"===E?r:a,N="y"===E?o:i,I="y"===E?"height":"width",V=D[E],q=V+x[B],U=V-x[N],z=y?-L[I]/2:0,F=_===c?A[I]:L[I],Y=_===c?-L[I]:-A[I],G=t.elements.arrow,J=y&&G?$(G):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[B],ne=ee[N],re=X(0,A[I],J[I]),oe=j?A[I]/2-z-re-te-T.mainAxis:F-re-te-T.mainAxis,ie=j?-A[I]/2+z+re+ne+T.mainAxis:Y+re+ne+T.mainAxis,ae=t.elements.arrow&&K(t.elements.arrow),se=ae?"y"===E?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(W=null==C?void 0:C[E])?W:0,ce=V+ie-fe,ue=X(y?H(q,V+oe-fe-se):q,V,y?R(U,ce):U);D[E]=ue,S[E]=ue-V}if(l){var pe,le="x"===E?r:a,de="x"===E?o:i,he=D[P],me="y"===P?"height":"width",ge=he+x[le],ye=he-x[de],be=-1!==[r,a].indexOf(O),we=null!=(pe=null==C?void 0:C[P])?pe:0,xe=be?ge:he-A[me]-L[me]-we+T.altAxis,Oe=be?he+A[me]+L[me]-we-T.altAxis:ye,_e=y&&be?function(e,t,n){var r=X(e,t,n);return r>n?n:r}(xe,he,Oe):X(y?xe:ge,he,y?Oe:ye);D[P]=_e,S[P]=_e-he}t.modifiersData[s]=S}},requiresIfExists:["offset"]};function Ee(e,t,n){void 0===n&&(n=!1);var r,o,i=k(t),a=k(t)&&function(e){var t=e.getBoundingClientRect(),n=S(t.width)/e.offsetWidth||1,r=S(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),s=U(t),f=N(e,a,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(i||!i&&!n)&&(("body"!==D(t)||pe(s))&&(c=(r=t)!==A(r)&&k(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:ce(r)),k(t)?((u=N(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=ue(s))),{x:f.left+c.scrollLeft-u.x,y:f.top+c.scrollTop-u.y,width:f.width,height:f.height}}function Pe(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||o(e)}),r}var De={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}function Le(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,o=t.defaultOptions,i=void 0===o?De:o;return function(e,t,n){void 0===n&&(n=i);var o,a,s={placement:"bottom",orderedModifiers:[],options:Object.assign({},De,i),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],c=!1,u={state:s,setOptions:function(n){var o="function"==typeof n?n(s.options):n;p(),s.options=Object.assign({},i,s.options,o),s.scrollParents={reference:L(e)?de(e):e.contextElement?de(e.contextElement):[],popper:de(t)};var a,c,l=function(e){var t=Pe(e);return P.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}((a=[].concat(r,s.options.modifiers),c=a.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return s.orderedModifiers=l.filter(function(e){return e.enabled}),s.orderedModifiers.forEach(function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:s,name:t,instance:u,options:r});f.push(i||function(){})}}),u.update()},forceUpdate:function(){if(!c){var e=s.elements,t=e.reference,n=e.popper;if(Ae(t,n)){s.rects={reference:Ee(t,K(n),"fixed"===s.options.strategy),popper:$(n)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach(function(e){return s.modifiersData[e.name]=Object.assign({},e.data)});for(var r=0;r<s.orderedModifiers.length;r++)if(!0!==s.reset){var o=s.orderedModifiers[r],i=o.fn,a=o.options,f=void 0===a?{}:a,p=o.name;"function"==typeof i&&(s=i({state:s,options:f,name:p,instance:u})||s)}else s.reset=!1,r=-1}}},update:(o=function(){return new Promise(function(e){u.forceUpdate(),e(s)})},function(){return a||(a=new Promise(function(e){Promise.resolve().then(function(){a=void 0,e(o())})})),a}),destroy:function(){p(),c=!0}};if(!Ae(e,t))return u;function p(){f.forEach(function(e){return e()}),f=[]}return u.setOptions(n).then(function(e){!c&&n.onFirstUpdate&&n.onFirstUpdate(e)}),u}}var ke=Le(),Te=Le({defaultModifiers:[oe,_e,ne,C,Oe,ye,je,J,xe]}),Ce=Le({defaultModifiers:[oe,_e,ne,C]})},2453:function(e,t,n){e.exports=function(e,t,n,r,o,i){"use strict";function a(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const s=a(e),f="dropdown",c=".bs.dropdown",u=".data-api",p="ArrowUp",l="ArrowDown",d=`hide${c}`,h=`hidden${c}`,m=`show${c}`,g=`shown${c}`,v=`click${c}${u}`,y=`keydown${c}${u}`,b=`keyup${c}${u}`,w="show",x='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',O=`${x}.${w}`,_=".dropdown-menu",j=i.isRTL()?"top-end":"top-start",E=i.isRTL()?"top-start":"top-end",P=i.isRTL()?"bottom-end":"bottom-start",D=i.isRTL()?"bottom-start":"bottom-end",A=i.isRTL()?"left-start":"right-start",L=i.isRTL()?"right-start":"left-start",k={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},T={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class C extends t{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=o.next(this._element,_)[0]||o.prev(this._element,_)[0]||o.findOne(_,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return k}static get DefaultType(){return T}static get NAME(){return f}toggle(){return this._isShown()?this.hide():this.show()}show(){if(i.isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!n.trigger(this._element,m,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))n.on(e,"mouseover",i.noop);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(w),this._element.classList.add(w),n.trigger(this._element,g,e)}}hide(){if(i.isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!n.trigger(this._element,d,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))n.off(e,"mouseover",i.noop);this._popper&&this._popper.destroy(),this._menu.classList.remove(w),this._element.classList.remove(w),this._element.setAttribute("aria-expanded","false"),r.removeDataAttribute(this._menu,"popper"),n.trigger(this._element,h,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!i.isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${f.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)");let e=this._element;"parent"===this._config.reference?e=this._parent:i.isElement(this._config.reference)?e=i.getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=s.createPopper(e,this._menu,t)}_isShown(){return this._menu.classList.contains(w)}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return A;if(e.classList.contains("dropstart"))return L;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?E:j:t?D:P}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(r.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...i.execute(this._config.popperConfig,[void 0,e])}}_selectMenuItem({key:e,target:t}){const n=o.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(e=>i.isVisible(e));n.length&&i.getNextActiveElement(n,t,e===l,!n.includes(t)).focus()}static jQueryInterface(e){return this.each(function(){const t=C.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=o.find(O);for(const n of t){const t=C.getInstance(n);if(!t||!1===t._config.autoClose)continue;const r=e.composedPath(),o=r.includes(t._menu);if(r.includes(t._element)||"inside"===t._config.autoClose&&!o||"outside"===t._config.autoClose&&o)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const i={relatedTarget:t._element};"click"===e.type&&(i.clickEvent=e),t._completeHide(i)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),n="Escape"===e.key,r=[p,l].includes(e.key);if(!r&&!n)return;if(t&&!n)return;e.preventDefault();const i=this.matches(x)?this:o.prev(this,x)[0]||o.next(this,x)[0]||o.findOne(x,e.delegateTarget.parentNode),a=C.getOrCreateInstance(i);if(r)return e.stopPropagation(),a.show(),void a._selectMenuItem(e);a._isShown()&&(e.stopPropagation(),a.hide(),i.focus())}}return n.on(document,y,x,C.dataApiKeydownHandler),n.on(document,y,_,C.dataApiKeydownHandler),n.on(document,v,C.clearMenus),n.on(document,b,C.clearMenus),n.on(document,v,x,function(e){e.preventDefault(),C.getOrCreateInstance(this).toggle()}),i.defineJQueryPlugin(C),C}(n(1170),n(9011),n(7956),n(2333),n(5411),n(4035))}}]);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 484.1666265cfa57a68d5866.bundle.js.LICENSE.txt */
|
|
2
|
+
(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[484],{6484:function(e,t,s){e.exports=function(e,t,s,i){"use strict";const n=".bs.alert",r=`close${n}`,c=`closed${n}`;class o extends e{static get NAME(){return"alert"}close(){if(t.trigger(this._element,r).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),t.trigger(this._element,c),this.dispose()}static jQueryInterface(e){return this.each(function(){const t=o.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}return s.enableDismissTrigger(o,"close"),i.defineJQueryPlugin(o),o}(s(9011),s(7956),s(8248),s(4035))},8248:function(e,t,s){!function(e,t,s,i){"use strict";e.enableDismissTrigger=(e,n="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,c=e.NAME;t.on(document,r,`[data-bs-dismiss="${c}"]`,function(t){if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),i.isDisabled(this))return;const r=s.getElementFromSelector(this)||this.closest(`.${c}`);e.getOrCreateInstance(r)[n]()})},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t,s(7956),s(5411),s(4035))}}]);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap alert.js v5.3.8 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/*!
|
|
8
|
+
* Bootstrap component-functions.js v5.3.8 (https://getbootstrap.com/)
|
|
9
|
+
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
10
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
11
|
+
*/
|
data/assets/js/dist/{885.0aeb91daeb586b1e55a8.bundle.js → 543.1666265cfa57a68d5866.bundle.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[
|
|
1
|
+
"use strict";(self.webpackChunkkcc_gem_theme=self.webpackChunkkcc_gem_theme||[]).push([[543],{7543:function(e,c,k){k.r(c)}}]);
|