@aarhus-university/au-designsystem-delphinus 0.32.0 → 0.33.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.
package/CHANGELOG.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);(e=>{"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e)})(()=>{const e=document.querySelector(".button-container button:nth-of-type(1)"),t=document.querySelector(".button-container button:nth-of-type(2)"),n=document.querySelector(".button-container button:nth-of-type(3)"),o=document.querySelector(".button-container button:nth-of-type(4)");e&&e.addEventListener("click",()=>{const e=document.getElementById("event-info"),t=document.getElementById("byline");e&&t&&(e.removeAttribute("style"),t.parentNode.removeChild(t))}),t&&t.addEventListener("click",()=>{const e=document.getElementById("hero-image");e&&e.parentNode.removeChild(e)}),n&&n.addEventListener("click",()=>{const e=document.getElementById("first-side-image");e&&e.parentNode.removeChild(e)}),o&&o.addEventListener("click",()=>{const e=document.getElementById("second-side-image");e&&e.parentNode.removeChild(e)})})}])}));
|
|
1
|
+
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);(e=>{"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e)})(()=>{const e=document.querySelector(".button-container button:nth-of-type(1)"),t=document.querySelector(".button-container button:nth-of-type(2)"),n=document.querySelector(".button-container button:nth-of-type(3)"),o=document.querySelector(".button-container button:nth-of-type(4)");e&&e.addEventListener("click",()=>{const e=document.getElementById("event-info"),t=document.getElementById("byline");e&&t&&(e.removeAttribute("style"),t.parentNode.removeChild(t))}),t&&t.addEventListener("click",()=>{const e=document.getElementById("hero-image");e&&e.parentNode.removeChild(e)}),n&&n.addEventListener("click",()=>{const e=document.getElementById("first-side-image");e&&e.parentNode.removeChild(e)}),o&&o.addEventListener("click",()=>{const e=document.getElementById("second-side-image");e&&e.parentNode.removeChild(e)})})}])}));
|
|
2
2
|
//# sourceMappingURL=typo3.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/* eslint-env browser */
|
|
2
2
|
/* eslint-disable import/prefer-default-export */
|
|
3
|
-
const setContentToggle = (
|
|
3
|
+
const setContentToggle = (
|
|
4
|
+
content: Element,
|
|
5
|
+
beforeCallback: (() => void | undefined),
|
|
6
|
+
afterCallback: ((button: HTMLButtonElement) => void) | undefined,
|
|
7
|
+
): CleanUpPair | null => {
|
|
4
8
|
const setContentClose = (button: HTMLElement, contentClose: HTMLElement, focus: boolean) => {
|
|
5
9
|
if (contentClose) {
|
|
6
10
|
if (focus) {
|
|
@@ -21,8 +25,14 @@ const setContentToggle = (content: Element): Element | null => {
|
|
|
21
25
|
const contentClose = content.querySelector('.content-toggle__close') as HTMLElement;
|
|
22
26
|
|
|
23
27
|
if (button) {
|
|
24
|
-
|
|
28
|
+
const clickEvent = () => {
|
|
25
29
|
const ariaExpanded = button.getAttribute('aria-expanded');
|
|
30
|
+
// Til toolbar: hvis man klikker på en knap, der ikke er foldet ud
|
|
31
|
+
// Så lukker vi alle åbne content-toggles
|
|
32
|
+
if (typeof beforeCallback === 'function' && ariaExpanded === 'false') {
|
|
33
|
+
beforeCallback();
|
|
34
|
+
}
|
|
35
|
+
// Og så går vi i gang med folde-ud-logikken
|
|
26
36
|
button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');
|
|
27
37
|
if (ariaExpanded === 'true') {
|
|
28
38
|
content.setAttribute('hidden', 'hidden');
|
|
@@ -34,11 +44,21 @@ const setContentToggle = (content: Element): Element | null => {
|
|
|
34
44
|
button.setAttribute('hidden', 'hidden');
|
|
35
45
|
setContentClose(button, contentClose, true);
|
|
36
46
|
}
|
|
37
|
-
|
|
47
|
+
|
|
48
|
+
if (typeof afterCallback === 'function') {
|
|
49
|
+
afterCallback(button as HTMLButtonElement);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
button.addEventListener('click', clickEvent);
|
|
38
54
|
|
|
39
55
|
setContentClose(button, contentClose, false);
|
|
56
|
+
return {
|
|
57
|
+
element: button,
|
|
58
|
+
clickEvent,
|
|
59
|
+
};
|
|
40
60
|
}
|
|
41
|
-
return
|
|
61
|
+
return null;
|
|
42
62
|
};
|
|
43
63
|
|
|
44
64
|
export {
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
import { isElementWithClassNameInEventPath } from './helpers';
|
|
2
|
+
|
|
1
3
|
/* eslint-env browser */
|
|
4
|
+
const closeAllContentTogglesInToolbar = (toolbar: HTMLElement): void => {
|
|
5
|
+
const contentToggles = toolbar.querySelectorAll('.content-toggle__toggle');
|
|
6
|
+
contentToggles.forEach((toggle) => {
|
|
7
|
+
const content = toggle.parentElement?.querySelector('.content-toggle__content');
|
|
8
|
+
toggle.setAttribute('aria-expanded', 'false');
|
|
9
|
+
content?.setAttribute('hidden', 'hidden');
|
|
10
|
+
});
|
|
11
|
+
};
|
|
2
12
|
|
|
3
13
|
const setToolbars = (): void => {
|
|
4
14
|
const setOverflow = (toolbarElement: Element): void => {
|
|
@@ -11,10 +21,8 @@ const setToolbars = (): void => {
|
|
|
11
21
|
let hasOverflown = false;
|
|
12
22
|
|
|
13
23
|
let overflownCount = 0;
|
|
14
|
-
|
|
15
|
-
const item = toolbarItems[i] as HTMLElement;
|
|
24
|
+
const addOverflowClass = (item: HTMLElement, index: number) => {
|
|
16
25
|
const top = item.offsetTop;
|
|
17
|
-
|
|
18
26
|
if (top > 25) {
|
|
19
27
|
item.classList.add(isOverflownClass);
|
|
20
28
|
toolbarElement.classList.add(hasOverflowClass);
|
|
@@ -26,8 +34,12 @@ const setToolbars = (): void => {
|
|
|
26
34
|
|
|
27
35
|
if (!hasOverflown) {
|
|
28
36
|
toolbarElement.classList.remove(hasOverflowClass);
|
|
37
|
+
} else if (index - 1 >= 0) {
|
|
38
|
+
addOverflowClass(toolbarItems[index - 1] as HTMLElement, index - 1);
|
|
29
39
|
}
|
|
30
|
-
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
addOverflowClass(toolbarItems[toolbarItems.length - 1] as HTMLElement, toolbarItems.length - 1);
|
|
31
43
|
|
|
32
44
|
if (overflownCount > 0 && overflownCount === toolbarItems.length) {
|
|
33
45
|
toolbarElement.classList.add('toolbar--fully-overflown');
|
|
@@ -38,6 +50,18 @@ const setToolbars = (): void => {
|
|
|
38
50
|
toolbarElements.forEach((t) => {
|
|
39
51
|
setOverflow(t);
|
|
40
52
|
});
|
|
53
|
+
|
|
54
|
+
const body = document.querySelector('body');
|
|
55
|
+
const bodyClickEvent = (e: Event) => {
|
|
56
|
+
if (!(e.target as HTMLElement).classList.contains('content-toggle__toggle')
|
|
57
|
+
&& !isElementWithClassNameInEventPath(e as MouseEvent, 'content-toggle__content')) {
|
|
58
|
+
toolbarElements.forEach((t) => {
|
|
59
|
+
closeAllContentTogglesInToolbar(t as HTMLElement);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
body?.addEventListener('click', bodyClickEvent);
|
|
41
65
|
};
|
|
42
66
|
|
|
43
67
|
const setToolbarToggle = (): CleanUpPair[] => {
|
|
@@ -65,7 +89,20 @@ const setToolbarToggle = (): CleanUpPair[] => {
|
|
|
65
89
|
return cleanUp;
|
|
66
90
|
};
|
|
67
91
|
|
|
92
|
+
const findToolbar = (element: HTMLElement): HTMLElement => {
|
|
93
|
+
const parent = element.parentElement;
|
|
94
|
+
if (parent) {
|
|
95
|
+
if (parent.classList.contains('toolbar')) {
|
|
96
|
+
return parent;
|
|
97
|
+
}
|
|
98
|
+
return findToolbar(parent);
|
|
99
|
+
}
|
|
100
|
+
return element;
|
|
101
|
+
};
|
|
102
|
+
|
|
68
103
|
export {
|
|
69
104
|
setToolbars,
|
|
70
105
|
setToolbarToggle,
|
|
106
|
+
findToolbar,
|
|
107
|
+
closeAllContentTogglesInToolbar as closeAllContentToggledToolbars,
|
|
71
108
|
};
|
|
@@ -9,6 +9,7 @@ import { setMetaThemeColor } from '../components/helpers';
|
|
|
9
9
|
import { setResponsiveTable } from '../components/table';
|
|
10
10
|
import { setTabbedContent, isBelowViewportLimit, destroyTabs } from '../components/tabs';
|
|
11
11
|
import { setContentToggle } from '../components/content-toggle';
|
|
12
|
+
import { closeAllContentToggledToolbars, findToolbar } from '../components/toolbar';
|
|
12
13
|
|
|
13
14
|
let windowInnerWidth = 0;
|
|
14
15
|
|
|
@@ -50,7 +51,19 @@ ready(() => {
|
|
|
50
51
|
|
|
51
52
|
const toggles = document.querySelectorAll('.content-toggle__content');
|
|
52
53
|
toggles.forEach((toggle) => {
|
|
53
|
-
|
|
54
|
+
const toolbar = findToolbar(toggle as HTMLElement);
|
|
55
|
+
setContentToggle(
|
|
56
|
+
toggle,
|
|
57
|
+
() => closeAllContentToggledToolbars(toolbar),
|
|
58
|
+
(button: HTMLButtonElement) => {
|
|
59
|
+
const ariaExpanded = button.getAttribute('aria-expanded');
|
|
60
|
+
if (ariaExpanded === 'true') {
|
|
61
|
+
toolbar?.classList.add('toolbar--has-popout');
|
|
62
|
+
} else {
|
|
63
|
+
toolbar?.classList.remove('toolbar--has-popout');
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
);
|
|
54
67
|
});
|
|
55
68
|
|
|
56
69
|
window.addEventListener('load', () => {
|