@graupl/graupl 1.0.0-alpha.14 → 1.0.0-alpha.16
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 +24 -0
- package/build.js +7 -0
- package/dist/css/base/button.css +2 -0
- package/dist/css/base/button.css.map +1 -0
- package/dist/css/base/form.css.map +1 -0
- package/dist/css/base/link.css.map +1 -0
- package/dist/css/base/table.css.map +1 -0
- package/dist/css/base.css +2 -0
- package/dist/css/base.css.map +1 -0
- package/dist/css/component/accordion.css +2 -0
- package/dist/css/component/accordion.css.map +1 -0
- package/dist/css/component/alert.css +2 -0
- package/dist/css/component/alert.css.map +1 -0
- package/dist/css/component/card.css.map +1 -0
- package/dist/css/component/carousel.css +2 -0
- package/dist/css/component/carousel.css.map +1 -0
- package/dist/css/component/input-group.css.map +1 -0
- package/dist/css/component/menu.css.map +1 -0
- package/dist/css/component/navigation.css.map +1 -0
- package/dist/css/component.css +2 -0
- package/dist/css/component.css.map +1 -0
- package/dist/css/graupl.css +2 -0
- package/dist/css/graupl.css.map +1 -0
- package/dist/css/init.css.map +1 -0
- package/dist/css/layout/columns.css.map +1 -0
- package/dist/css/layout/container.css.map +1 -0
- package/dist/css/layout/flex-columns.css.map +1 -0
- package/dist/css/layout.css +2 -0
- package/dist/css/layout.css.map +1 -0
- package/dist/css/normalize.css.map +1 -0
- package/dist/css/state/focus.css +2 -0
- package/dist/css/state/focus.css.map +1 -0
- package/dist/css/state.css +2 -0
- package/dist/css/state.css.map +1 -0
- package/dist/css/theme/color.css.map +1 -0
- package/dist/css/theme/typography.css.map +1 -0
- package/dist/css/theme.css.map +1 -0
- package/dist/css/utilities/alignment.css.map +1 -0
- package/dist/css/utilities/color.css.map +1 -0
- package/dist/css/utilities/display.css.map +1 -0
- package/dist/css/utilities/flex.css.map +1 -0
- package/dist/css/utilities/height.css.map +1 -0
- package/dist/css/utilities/inset.css.map +1 -0
- package/dist/css/utilities/justification.css.map +1 -0
- package/dist/css/utilities/list.css.map +1 -0
- package/dist/css/utilities/order.css.map +1 -0
- package/dist/css/utilities/postion.css.map +1 -0
- package/dist/css/utilities/spacing.css.map +1 -0
- package/dist/css/utilities/typography.css.map +1 -0
- package/dist/css/utilities/visibility.css.map +1 -0
- package/dist/css/utilities/width.css.map +1 -0
- package/dist/css/utilities.css.map +1 -0
- package/dist/js/component/accordion.cjs.js +3 -0
- package/dist/js/component/accordion.esm.js +1289 -0
- package/dist/js/component/accordion.iife.js +3 -0
- package/dist/js/component/alert.cjs.js +3 -0
- package/dist/js/component/alert.esm.js +529 -0
- package/dist/js/component/alert.iife.js +3 -0
- package/dist/js/component/carousel.cjs.js +3 -0
- package/dist/js/component/carousel.esm.js +1110 -0
- package/dist/js/component/carousel.iife.js +3 -0
- package/dist/js/graupl.cjs.js +5 -0
- package/dist/js/graupl.esm.js +1462 -0
- package/dist/js/graupl.iife.js +5 -0
- package/index.html +56 -2
- package/index.js +12 -0
- package/package.json +26 -5
- package/scss/component/accordion.scss +3 -0
- package/src/js/accordion/Accordion.js +1163 -0
- package/src/js/accordion/AccordionItem.js +496 -0
- package/src/js/accordion/index.js +10 -0
- package/src/js/alert/Alert.js +71 -1
- package/src/js/alert/index.js +1 -11
- package/src/js/carousel/Carousel.js +67 -16
- package/src/js/carousel/index.js +1 -11
- package/src/js/eventHandlers.js +7 -0
- package/src/js/storage.js +106 -0
- package/src/scss/_defaults.scss +29 -0
- package/src/scss/base/button/_mixins.scss +64 -62
- package/src/scss/component/_index.scss +1 -0
- package/src/scss/component/accordion/_defaults.scss +40 -0
- package/src/scss/component/accordion/_index.scss +180 -0
- package/src/scss/component/accordion/_variables.scss +304 -0
- package/src/scss/component/carousel/_index.scss +6 -0
- package/src/scss/layout/columns/_index.scss +1 -1
- package/src/scss/layout/flex-columns/_index.scss +1 -1
- package/src/scss/state/focus/_index.scss +6 -6
- package/src/scss/state/focus/_mixins.scss +15 -0
- package/stylelint.config.js +4 -0
- package/vite.config.js +57 -0
- package/dist/base/button.css +0 -2
- package/dist/base/button.css.map +0 -1
- package/dist/base/form.css.map +0 -1
- package/dist/base/link.css.map +0 -1
- package/dist/base/table.css.map +0 -1
- package/dist/base.css +0 -2
- package/dist/base.css.map +0 -1
- package/dist/component/alert.css +0 -2
- package/dist/component/alert.css.map +0 -1
- package/dist/component/card.css.map +0 -1
- package/dist/component/carousel.css +0 -2
- package/dist/component/carousel.css.map +0 -1
- package/dist/component/input-group.css.map +0 -1
- package/dist/component/menu.css.map +0 -1
- package/dist/component/navigation.css.map +0 -1
- package/dist/component.css +0 -2
- package/dist/component.css.map +0 -1
- package/dist/graupl.css +0 -2
- package/dist/graupl.css.map +0 -1
- package/dist/init.css.map +0 -1
- package/dist/layout/columns.css.map +0 -1
- package/dist/layout/container.css.map +0 -1
- package/dist/layout/flex-columns.css.map +0 -1
- package/dist/layout.css +0 -2
- package/dist/layout.css.map +0 -1
- package/dist/normalize.css.map +0 -1
- package/dist/state/focus.css +0 -2
- package/dist/state/focus.css.map +0 -1
- package/dist/state.css +0 -2
- package/dist/state.css.map +0 -1
- package/dist/theme/color.css.map +0 -1
- package/dist/theme/typography.css.map +0 -1
- package/dist/theme.css.map +0 -1
- package/dist/utilities/alignment.css.map +0 -1
- package/dist/utilities/color.css.map +0 -1
- package/dist/utilities/display.css.map +0 -1
- package/dist/utilities/flex.css.map +0 -1
- package/dist/utilities/height.css.map +0 -1
- package/dist/utilities/inset.css.map +0 -1
- package/dist/utilities/justification.css.map +0 -1
- package/dist/utilities/list.css.map +0 -1
- package/dist/utilities/order.css.map +0 -1
- package/dist/utilities/postion.css.map +0 -1
- package/dist/utilities/spacing.css.map +0 -1
- package/dist/utilities/typography.css.map +0 -1
- package/dist/utilities/visibility.css.map +0 -1
- package/dist/utilities/width.css.map +0 -1
- package/dist/utilities.css.map +0 -1
- /package/dist/{base → css/base}/form.css +0 -0
- /package/dist/{base → css/base}/link.css +0 -0
- /package/dist/{base → css/base}/table.css +0 -0
- /package/dist/{component → css/component}/card.css +0 -0
- /package/dist/{component → css/component}/input-group.css +0 -0
- /package/dist/{component → css/component}/menu.css +0 -0
- /package/dist/{component → css/component}/navigation.css +0 -0
- /package/dist/{init.css → css/init.css} +0 -0
- /package/dist/{layout → css/layout}/columns.css +0 -0
- /package/dist/{layout → css/layout}/container.css +0 -0
- /package/dist/{layout → css/layout}/flex-columns.css +0 -0
- /package/dist/{normalize.css → css/normalize.css} +0 -0
- /package/dist/{theme → css/theme}/color.css +0 -0
- /package/dist/{theme → css/theme}/typography.css +0 -0
- /package/dist/{theme.css → css/theme.css} +0 -0
- /package/dist/{utilities → css/utilities}/alignment.css +0 -0
- /package/dist/{utilities → css/utilities}/color.css +0 -0
- /package/dist/{utilities → css/utilities}/display.css +0 -0
- /package/dist/{utilities → css/utilities}/flex.css +0 -0
- /package/dist/{utilities → css/utilities}/height.css +0 -0
- /package/dist/{utilities → css/utilities}/inset.css +0 -0
- /package/dist/{utilities → css/utilities}/justification.css +0 -0
- /package/dist/{utilities → css/utilities}/list.css +0 -0
- /package/dist/{utilities → css/utilities}/order.css +0 -0
- /package/dist/{utilities → css/utilities}/postion.css +0 -0
- /package/dist/{utilities → css/utilities}/spacing.css +0 -0
- /package/dist/{utilities → css/utilities}/typography.css +0 -0
- /package/dist/{utilities → css/utilities}/visibility.css +0 -0
- /package/dist/{utilities → css/utilities}/width.css +0 -0
- /package/dist/{utilities.css → css/utilities.css} +0 -0
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { addClass, removeClass } from "../domHelpers.js";
|
|
7
7
|
import { preventEvent, keyPress } from "../eventHandlers.js";
|
|
8
|
+
import storage from "../storage.js";
|
|
8
9
|
import {
|
|
9
10
|
isQuerySelector,
|
|
10
11
|
isTag,
|
|
@@ -200,6 +201,15 @@ class Carousel {
|
|
|
200
201
|
*/
|
|
201
202
|
_prefix = "graupl-";
|
|
202
203
|
|
|
204
|
+
/**
|
|
205
|
+
* The key used to generate IDs throughout the carousel.
|
|
206
|
+
*
|
|
207
|
+
* @protected
|
|
208
|
+
*
|
|
209
|
+
* @type {string}
|
|
210
|
+
*/
|
|
211
|
+
_key = "";
|
|
212
|
+
|
|
203
213
|
/**
|
|
204
214
|
* An array of error messages generated by the carousel.
|
|
205
215
|
*
|
|
@@ -233,7 +243,8 @@ class Carousel {
|
|
|
233
243
|
* @param {number} [options.transitionDuration = 500] - The duration time (in milliseconds) for the transition between carousel items.
|
|
234
244
|
* @param {?string} [options.playText = Play] - The text to use for the play button.
|
|
235
245
|
* @param {?string} [options.pauseText = Pause] - The text to use for the pause button.
|
|
236
|
-
* @param {?string}
|
|
246
|
+
* @param {?string} [options.prefix = graupl-] - The prefix to use for CSS custom properties.
|
|
247
|
+
* @param {?string} [options.key = null] - The key used to generate IDs throughout the carousel.
|
|
237
248
|
* @param {boolean} [options.initialize = false] - A flag to initialize the carousel immediately upon creation.
|
|
238
249
|
*/
|
|
239
250
|
constructor({
|
|
@@ -258,6 +269,7 @@ class Carousel {
|
|
|
258
269
|
playText = "Play",
|
|
259
270
|
pauseText = "Pause",
|
|
260
271
|
prefix = "graupl-",
|
|
272
|
+
key = null,
|
|
261
273
|
initialize = false,
|
|
262
274
|
}) {
|
|
263
275
|
// Set DOM elements.
|
|
@@ -295,6 +307,9 @@ class Carousel {
|
|
|
295
307
|
// Set prefix.
|
|
296
308
|
this._prefix = prefix || "";
|
|
297
309
|
|
|
310
|
+
// Set the key.
|
|
311
|
+
this._key = key || "";
|
|
312
|
+
|
|
298
313
|
if (initialize) {
|
|
299
314
|
this.initialize();
|
|
300
315
|
}
|
|
@@ -313,21 +328,15 @@ class Carousel {
|
|
|
313
328
|
);
|
|
314
329
|
}
|
|
315
330
|
|
|
316
|
-
// Set DOM
|
|
331
|
+
// Set up the DOM.
|
|
332
|
+
this._generateKey();
|
|
317
333
|
this._setDOMElements();
|
|
318
|
-
|
|
319
|
-
// Set ids.
|
|
320
334
|
this._setIds();
|
|
321
|
-
|
|
322
|
-
// Set aria attributes.
|
|
323
335
|
this._setAriaAttributes();
|
|
324
336
|
|
|
325
337
|
// Activate the first item.
|
|
326
338
|
this.activateFirstItem();
|
|
327
339
|
|
|
328
|
-
// Set the custom props.
|
|
329
|
-
this._setTransitionDuration();
|
|
330
|
-
|
|
331
340
|
// Handle events.
|
|
332
341
|
this._handleAutoplay();
|
|
333
342
|
this._handleFocus();
|
|
@@ -335,6 +344,13 @@ class Carousel {
|
|
|
335
344
|
this._handleHover();
|
|
336
345
|
this._handleKeydown();
|
|
337
346
|
this._handleKeyup();
|
|
347
|
+
|
|
348
|
+
// Set the custom props.
|
|
349
|
+
this._setTransitionDuration();
|
|
350
|
+
|
|
351
|
+
// Set up the storage.
|
|
352
|
+
storage.initializeStorage("carousels");
|
|
353
|
+
storage.pushToStorage("carousels", this.dom.carousel.id, this);
|
|
338
354
|
} catch (error) {
|
|
339
355
|
console.error(error);
|
|
340
356
|
}
|
|
@@ -520,6 +536,17 @@ class Carousel {
|
|
|
520
536
|
return this._prefix;
|
|
521
537
|
}
|
|
522
538
|
|
|
539
|
+
/**
|
|
540
|
+
* The key used to generate IDs throughout the accordion.
|
|
541
|
+
*
|
|
542
|
+
* @type {string}
|
|
543
|
+
*
|
|
544
|
+
* @see _key
|
|
545
|
+
*/
|
|
546
|
+
get key() {
|
|
547
|
+
return this._key;
|
|
548
|
+
}
|
|
549
|
+
|
|
523
550
|
/**
|
|
524
551
|
* The current action being performed by the carousel.
|
|
525
552
|
*
|
|
@@ -659,6 +686,14 @@ class Carousel {
|
|
|
659
686
|
}
|
|
660
687
|
}
|
|
661
688
|
|
|
689
|
+
set key(value) {
|
|
690
|
+
isValidType("string", { value });
|
|
691
|
+
|
|
692
|
+
if (this._key !== value) {
|
|
693
|
+
this._key = value;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
662
697
|
/**
|
|
663
698
|
* Validates all aspects of the carousel to ensure proper functionality.
|
|
664
699
|
*
|
|
@@ -941,20 +976,36 @@ class Carousel {
|
|
|
941
976
|
}
|
|
942
977
|
|
|
943
978
|
/**
|
|
944
|
-
*
|
|
979
|
+
* Generates a key for the carousel.
|
|
980
|
+
*
|
|
981
|
+
* @param {boolean} [regenerate = false] - A flag to determine if the key should be regenerated.
|
|
982
|
+
*/
|
|
983
|
+
_generateKey(regenerate = false) {
|
|
984
|
+
if (this.key === "" || regenerate) {
|
|
985
|
+
this.key = Math.random()
|
|
986
|
+
.toString(36)
|
|
987
|
+
.replace(/[^a-z]+/g, "")
|
|
988
|
+
.substring(0, 10);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
/**
|
|
993
|
+
* Sets the IDs of the carousel and it's children if they do not already exist.
|
|
994
|
+
*
|
|
995
|
+
* The generated IDs use the key and follow the format:
|
|
996
|
+
* - carousel: `carousel-${key}`
|
|
997
|
+
* - carousel items: `carousel-item-${key}-${index}`
|
|
998
|
+
* - carousel tabs: `carousel-tab-${key}-${index}`
|
|
945
999
|
*/
|
|
946
1000
|
_setIds() {
|
|
947
|
-
|
|
948
|
-
.toString(36)
|
|
949
|
-
.replace(/[^a-z]+/g, "")
|
|
950
|
-
.substring(0, 10);
|
|
1001
|
+
this.dom.carousel.id = this.dom.carousel.id || `carousel-${this.key}`;
|
|
951
1002
|
|
|
952
1003
|
this.dom.carouselItems.forEach((item, index) => {
|
|
953
|
-
item.id = item.id || `carousel-item-${
|
|
1004
|
+
item.id = item.id || `carousel-item-${this.key}-${index}`;
|
|
954
1005
|
});
|
|
955
1006
|
|
|
956
1007
|
this.dom.carouselTabs.forEach((tab, index) => {
|
|
957
|
-
tab.id = tab.id || `carousel-tab-${
|
|
1008
|
+
tab.id = tab.id || `carousel-tab-${this.key}-${index}`;
|
|
958
1009
|
});
|
|
959
1010
|
}
|
|
960
1011
|
|
package/src/js/carousel/index.js
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import Carousel from "./Carousel.js";
|
|
2
2
|
|
|
3
3
|
document.addEventListener("DOMContentLoaded", () => {
|
|
4
|
-
const carousels = [];
|
|
5
|
-
|
|
6
4
|
document.querySelectorAll(".carousel").forEach((carouselElement) => {
|
|
7
|
-
|
|
5
|
+
new Carousel({
|
|
8
6
|
carouselElement,
|
|
9
7
|
initialize: true,
|
|
10
8
|
});
|
|
11
|
-
|
|
12
|
-
carousels.push(carousel);
|
|
13
9
|
});
|
|
14
|
-
|
|
15
|
-
const graupl = window.Graupl || {};
|
|
16
|
-
|
|
17
|
-
graupl.carousels = carousels;
|
|
18
|
-
|
|
19
|
-
window.Graupl = graupl;
|
|
20
10
|
});
|
package/src/js/eventHandlers.js
CHANGED
|
@@ -12,6 +12,13 @@ export function keyPress(event) {
|
|
|
12
12
|
Enter: key === "Enter" || key === 13,
|
|
13
13
|
Space: key === " " || key === "Spacebar" || key === 32,
|
|
14
14
|
Escape: key === "Escape" || key === "Esc" || key === 27,
|
|
15
|
+
ArrowUp: key === "ArrowUp" || key === "Up" || key === 38,
|
|
16
|
+
ArrowRight: key === "ArrowRight" || key === "Right" || key === 39,
|
|
17
|
+
ArrowDown: key === "ArrowDown" || key === "Down" || key === 40,
|
|
18
|
+
ArrowLeft: key === "ArrowLeft" || key === "Left" || key === 37,
|
|
19
|
+
Home: key === "Home" || key === 36,
|
|
20
|
+
End: key === "End" || key === 35,
|
|
21
|
+
Tab: key === "Tab" || key === 9,
|
|
15
22
|
};
|
|
16
23
|
|
|
17
24
|
return Object.keys(keys).find((key) => keys[key] === true) || "";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
* Provides a system to get and store Graupl data in the browser.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { isValidType } from "./validate.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Initializes the storage system.
|
|
10
|
+
*
|
|
11
|
+
* @param {?string} [type = null] - The type of storage to initialize.
|
|
12
|
+
*/
|
|
13
|
+
export function initializeStorage(type = null) {
|
|
14
|
+
window.Graupl = window.Graupl || {};
|
|
15
|
+
|
|
16
|
+
if (isValidType("string", { type })) {
|
|
17
|
+
window.Graupl[type] = window.Graupl[type] || {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get the storage object.
|
|
23
|
+
*
|
|
24
|
+
* @param {?string} type - The type of storage to get.
|
|
25
|
+
* @return {object} - The storage object.
|
|
26
|
+
*/
|
|
27
|
+
export function getStorage(type = null) {
|
|
28
|
+
if (isValidType("string", { type })) {
|
|
29
|
+
return window.Graupl[type];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return window.Graupl;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Set the storage object of a given type.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} type - The type of storage to set.
|
|
39
|
+
* @param {object} data - The data to set.
|
|
40
|
+
*/
|
|
41
|
+
export function setStorage(type, data = {}) {
|
|
42
|
+
if (isValidType("string", { type }) && isValidType("object", { data })) {
|
|
43
|
+
window.Graupl[type] = data;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Clear the storage object of a given type.
|
|
49
|
+
*
|
|
50
|
+
* @param {string} type - The type of storage to clear.
|
|
51
|
+
*/
|
|
52
|
+
export function clearStorage(type) {
|
|
53
|
+
if (isValidType("string", { type })) {
|
|
54
|
+
window.Graupl[type] = {};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Push a value to the storage object.
|
|
60
|
+
*
|
|
61
|
+
* @param {string} type - The type of storage to push to.
|
|
62
|
+
* @param {string} key - The key to use for the value.
|
|
63
|
+
* @param {*} value - The value to store.
|
|
64
|
+
*/
|
|
65
|
+
export function pushToStorage(type, key, value) {
|
|
66
|
+
if (isValidType("string", { type, key })) {
|
|
67
|
+
window.Graupl[type][key] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get a value from the storage object.
|
|
73
|
+
*
|
|
74
|
+
* @param {string }type - The type of storage to get from.
|
|
75
|
+
* @param {string }key - The key to get the value from.
|
|
76
|
+
* @return {*} - The value from the storage object.
|
|
77
|
+
*/
|
|
78
|
+
export function getFromStorage(type, key) {
|
|
79
|
+
if (isValidType("string", { type, key })) {
|
|
80
|
+
return window.Graupl[type][key];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Remove a value from the storage object.
|
|
88
|
+
*
|
|
89
|
+
* @param {string} type - The type of storage to remove from.
|
|
90
|
+
* @param {string} key - The key to remove the value from.
|
|
91
|
+
*/
|
|
92
|
+
export function removeFromStorage(type, key) {
|
|
93
|
+
if (isValidType("string", { type, key })) {
|
|
94
|
+
delete window.Graupl[type][key];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export default {
|
|
99
|
+
initializeStorage,
|
|
100
|
+
getStorage,
|
|
101
|
+
setStorage,
|
|
102
|
+
clearStorage,
|
|
103
|
+
pushToStorage,
|
|
104
|
+
getFromStorage,
|
|
105
|
+
removeFromStorage,
|
|
106
|
+
};
|
package/src/scss/_defaults.scss
CHANGED
|
@@ -31,6 +31,7 @@ $base-screen-size-triggers: (
|
|
|
31
31
|
navigation-collapse: "(width <= 72ch)",
|
|
32
32
|
navigation-expand: "(72ch < width)",
|
|
33
33
|
force-vertical-card: "(width <= 72ch)",
|
|
34
|
+
force-single-column: "(width <= 48ch)",
|
|
34
35
|
);
|
|
35
36
|
$custom-screen-size-triggers: () !default;
|
|
36
37
|
$screen-size-triggers: map.merge(
|
|
@@ -81,3 +82,31 @@ $transition-durations: map.merge(
|
|
|
81
82
|
$base-transition-durations,
|
|
82
83
|
$custom-transition-durations
|
|
83
84
|
);
|
|
85
|
+
|
|
86
|
+
// State selectors.
|
|
87
|
+
$base-state-selectors: (
|
|
88
|
+
visited: (
|
|
89
|
+
".visited",
|
|
90
|
+
":visited",
|
|
91
|
+
),
|
|
92
|
+
focus: (
|
|
93
|
+
".focus",
|
|
94
|
+
":focus-visible",
|
|
95
|
+
),
|
|
96
|
+
hover: (
|
|
97
|
+
".hover",
|
|
98
|
+
":hover",
|
|
99
|
+
),
|
|
100
|
+
active: (
|
|
101
|
+
".active",
|
|
102
|
+
":active",
|
|
103
|
+
),
|
|
104
|
+
disabled: (
|
|
105
|
+
".disabled",
|
|
106
|
+
":disabled",
|
|
107
|
+
"[disabled]",
|
|
108
|
+
"[aria-disabled=true]",
|
|
109
|
+
),
|
|
110
|
+
);
|
|
111
|
+
$custom-state-selectors: () !default;
|
|
112
|
+
$state-selectors: map.merge($base-state-selectors, $custom-state-selectors);
|
|
@@ -56,41 +56,42 @@
|
|
|
56
56
|
font-size: $font-size;
|
|
57
57
|
cursor: pointer;
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
@each $selector in map.get(root-defaults.$state-selectors, visited) {
|
|
60
|
+
&#{$selector} {
|
|
61
|
+
--#{root-defaults.$prefix}-button-transform: #{$visited-transform};
|
|
62
|
+
}
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
@each $selector in map.get(root-defaults.$state-selectors, focus) {
|
|
66
|
+
&#{$selector} {
|
|
67
|
+
--#{root-defaults.$prefix}-button-transform: #{$focus-transform};
|
|
68
|
+
}
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
@each $selector in map.get(root-defaults.$state-selectors, hover) {
|
|
72
|
+
&#{$selector} {
|
|
73
|
+
--#{root-defaults.$prefix}-button-transform: #{$hover-transform};
|
|
74
|
+
}
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
@each $selector in map.get(root-defaults.$state-selectors, active) {
|
|
78
|
+
&#{$selector} {
|
|
79
|
+
--#{root-defaults.$prefix}-button-transform: #{$active-transform};
|
|
80
|
+
}
|
|
77
81
|
}
|
|
78
82
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
&:active,
|
|
92
|
-
&#{defaults.$button-active-selector} {
|
|
93
|
-
--#{root-defaults.$prefix}-button-transform: #{$disabled-transform};
|
|
83
|
+
@each $selector in map.get(root-defaults.$state-selectors, disabled) {
|
|
84
|
+
&#{$selector} {
|
|
85
|
+
@each $state, $selectors in root-defaults.$state-selectors {
|
|
86
|
+
@each $selector in $selectors {
|
|
87
|
+
&,
|
|
88
|
+
&#{$selector} {
|
|
89
|
+
--#{root-defaults.$prefix}-button-transform: #{$disabled-transform};
|
|
90
|
+
|
|
91
|
+
cursor: not-allowed;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
|
|
@@ -115,49 +116,50 @@
|
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
@each $selector in map.get(root-defaults.$state-selectors, visited) {
|
|
120
|
+
&#{$selector} {
|
|
121
|
+
--#{root-defaults.$prefix}-button-border-color: #{$visited-border-color};
|
|
122
|
+
--#{root-defaults.$prefix}-button-background: #{$visited-background};
|
|
123
|
+
--#{root-defaults.$prefix}-button-color: #{$visited-color};
|
|
124
|
+
}
|
|
123
125
|
}
|
|
124
126
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
@each $selector in map.get(root-defaults.$state-selectors, focus) {
|
|
128
|
+
&#{$selector} {
|
|
129
|
+
--#{root-defaults.$prefix}-button-border-color: #{$focus-border-color};
|
|
130
|
+
--#{root-defaults.$prefix}-button-background: #{$focus-background};
|
|
131
|
+
--#{root-defaults.$prefix}-button-color: #{$focus-color};
|
|
132
|
+
}
|
|
130
133
|
}
|
|
131
134
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
@each $selector in map.get(root-defaults.$state-selectors, hover) {
|
|
136
|
+
&#{$selector} {
|
|
137
|
+
--#{root-defaults.$prefix}-button-border-color: #{$hover-border-color};
|
|
138
|
+
--#{root-defaults.$prefix}-button-background: #{$hover-background};
|
|
139
|
+
--#{root-defaults.$prefix}-button-color: #{$hover-color};
|
|
140
|
+
}
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
@each $selector in map.get(root-defaults.$state-selectors, active) {
|
|
144
|
+
&#{$selector} {
|
|
145
|
+
--#{root-defaults.$prefix}-button-border-color: #{$active-border-color};
|
|
146
|
+
--#{root-defaults.$prefix}-button-background: #{$active-background};
|
|
147
|
+
--#{root-defaults.$prefix}-button-color: #{$active-color};
|
|
148
|
+
}
|
|
144
149
|
}
|
|
145
150
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
--#{root-defaults.$prefix}-button-border-color: #{$disabled-border-color};
|
|
159
|
-
--#{root-defaults.$prefix}-button-background: #{$disabled-background};
|
|
160
|
-
--#{root-defaults.$prefix}-button-color: #{$disabled-color};
|
|
151
|
+
@each $selector in map.get(root-defaults.$state-selectors, disabled) {
|
|
152
|
+
&#{$selector} {
|
|
153
|
+
@each $state, $selectors in root-defaults.$state-selectors {
|
|
154
|
+
@each $selector in $selectors {
|
|
155
|
+
&,
|
|
156
|
+
&#{$selector} {
|
|
157
|
+
--#{root-defaults.$prefix}-button-border-color: #{$disabled-border-color};
|
|
158
|
+
--#{root-defaults.$prefix}-button-background: #{$disabled-background};
|
|
159
|
+
--#{root-defaults.$prefix}-button-color: #{$disabled-color};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
161
163
|
}
|
|
162
164
|
}
|
|
163
165
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// @graupl/graupl accordion component default values.
|
|
2
|
+
//
|
|
3
|
+
// Generally, these should not be used directly when styling components unless a static value is needed.
|
|
4
|
+
// They are mainly used to provide class selectors, fallbacks for custom properties, or loop values.
|
|
5
|
+
//
|
|
6
|
+
// They should not be used to define direct property values (i.e. font-size, color, etc.).
|
|
7
|
+
// Those should be defined as custom properties in the `_variables.scss` file.
|
|
8
|
+
|
|
9
|
+
@use "sass:map";
|
|
10
|
+
|
|
11
|
+
// Accordion selectors.
|
|
12
|
+
$accordion-selector: ".accordion" !default;
|
|
13
|
+
$accordion-item-selector: ".accordion-item" !default;
|
|
14
|
+
$accordion-item-header-selector: ".accordion-item-header" !default;
|
|
15
|
+
$accordion-item-title-selector: ".accordion-item-title" !default;
|
|
16
|
+
$accordion-item-toggle-selector: ".accordion-item-toggle" !default;
|
|
17
|
+
$accordion-item-content-selector: ".accordion-item-content" !default;
|
|
18
|
+
$accordion-item-body-selector: ".accordion-item-body" !default;
|
|
19
|
+
$accordion-item-footer-selector: ".accordion-item-footer" !default;
|
|
20
|
+
$accordion-item-open-selector: ".show" !default;
|
|
21
|
+
$accordion-item-close-selector: ".hide" !default;
|
|
22
|
+
$accordion-item-transition-selector: ".transitioning" !default;
|
|
23
|
+
$accordion-item-toggle-pseudo-selector: "::after" !default;
|
|
24
|
+
|
|
25
|
+
// Toggle transform properties.
|
|
26
|
+
$accordion-item-toggle-transform: none !default;
|
|
27
|
+
$accordion-item-toggle-visited-transform: $accordion-item-toggle-transform !default;
|
|
28
|
+
$accordion-item-toggle-focus-transform: $accordion-item-toggle-transform !default;
|
|
29
|
+
$accordion-item-toggle-hover-transform: $accordion-item-toggle-transform !default;
|
|
30
|
+
$accordion-item-toggle-active-transform: $accordion-item-toggle-transform !default;
|
|
31
|
+
$accordion-item-toggle-disabled-transform: $accordion-item-toggle-transform !default;
|
|
32
|
+
$accordion-item-toggle-pseudo-transform: none !default;
|
|
33
|
+
$accordion-item-toggle-pseudo-open-transform: rotate(-180deg) !default;
|
|
34
|
+
|
|
35
|
+
// Toggle properties.
|
|
36
|
+
$accordion-item-toggle-pseudo-content: "▼" !default;
|
|
37
|
+
|
|
38
|
+
// Accordion transform properties.
|
|
39
|
+
$accordion-item-content-transform: translateY(-100%) !default;
|
|
40
|
+
$accordion-item-content-open-transform: translateY(0) !default;
|