@massimo-cassandro/minimo 1.21.1 → 1.21.3
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/design-tokens/tokens-config-sample.mjs +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/src/components/autocomplete/autocomplete.css +116 -118
- package/src/components/inner-nav/inner-nav.css +10 -13
- package/src/components/modal-alert/modal-alert.module.css +156 -159
- package/src/components/modal-popup/modal-popup.module.css +84 -88
- package/src/components/overlay/overlay.css +10 -14
- package/src/components/sf-macro/sf-macro.css +68 -72
- package/src/components/slide-up-down-toggle/slide-up-down-toggle.module.css +90 -94
- package/src/components/snackbar/snackbar.module.css +89 -93
- package/src/components/spinner/spinner-circle-basic.css +14 -18
- package/src/components/spinner/spinner.module.css +4 -8
- package/src/components/unsplash-page/unsplash-page.module.css +255 -260
- package/src/css/alerts.css +81 -85
- package/src/css/badge.css +13 -15
- package/src/css/buttons/btn-close.css +53 -56
- package/src/css/buttons/buttons-primary.css +34 -37
- package/src/css/buttons/buttons-secondary.css +34 -37
- package/src/css/buttons/buttons.css +80 -83
- package/src/css/buttons/status-buttons.css +87 -90
- package/src/css/container.css +5 -8
- package/src/css/data-formats.css +24 -28
- package/src/css/details.css +13 -17
- package/src/css/dimensions.css +9 -12
- package/src/css/display.css +37 -41
- package/src/css/flex.css +35 -39
- package/src/css/forms/fieldset.css +56 -59
- package/src/css/forms/form-collections.css +12 -16
- package/src/css/forms/form-disabled-readonly.css +28 -31
- package/src/css/forms/form-group.css +13 -18
- package/src/css/forms/form-utilities.css +34 -39
- package/src/css/forms/forms.css +132 -136
- package/src/css/forms/input-group.css +43 -47
- package/src/css/forms/switch.css +75 -78
- package/src/css/forms/validation.css +22 -26
- package/src/css/grid.css +62 -66
- package/src/css/headings.css +28 -32
- package/src/css/icons.css +57 -63
- package/src/css/layout-base.css +13 -15
- package/src/css/links.css +36 -39
- package/src/css/margin-padding-bootstrap-media.css +1832 -1835
- package/src/css/margin-padding-bootstrap.css +440 -443
- package/src/css/margin-padding-media.css +1832 -1835
- package/src/css/margin-padding.css +440 -443
- package/src/css/overflow.css +3 -7
- package/src/css/position.css +1 -6
- package/src/css/reset.css +46 -48
- package/src/css/svg.css +2 -5
- package/src/css/table.css +61 -63
- package/src/css/text.css +95 -98
- package/src/css/visibility.css +42 -45
- package/src/custom-properties.css +439 -442
- package/src/minimo.css +3 -2
- package/src/utilities/dom-builder-helpers/form-tags.js +90 -3
- package/src/web-components/s-datatable-component/s-datatable-component.module.css +172 -175
- package/types/classes.d.ts +1 -0
|
@@ -1,103 +1,99 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
background-color: var(--mpopup-backdrop-color);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
&.on {
|
|
34
|
-
scale: 1;
|
|
35
|
-
}
|
|
1
|
+
/*! minimo - Modal Popup */
|
|
2
|
+
|
|
3
|
+
.dialog {
|
|
4
|
+
|
|
5
|
+
position: fixed;
|
|
6
|
+
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
|
|
10
|
+
width: var(--mpopup-width);
|
|
11
|
+
min-width: var(--mpopup-min-width);
|
|
12
|
+
max-width: var(--mpopup-max-width);
|
|
13
|
+
height: var(--mpopup-height);
|
|
14
|
+
min-height: var(--mpopup-min-height);
|
|
15
|
+
max-height: var(--mpopup-max-height);
|
|
16
|
+
padding: 0;
|
|
17
|
+
margin: auto;
|
|
18
|
+
overflow: visible;
|
|
19
|
+
background-color: var(--mpopup-background-color);
|
|
20
|
+
border: none;
|
|
21
|
+
border-radius: var(--mpopup-border-radius);
|
|
22
|
+
box-shadow: var(--mpopup-drop-shadow);
|
|
23
|
+
scale: 0;
|
|
24
|
+
transition: scale .2s ease-out;
|
|
25
|
+
|
|
26
|
+
&::backdrop {
|
|
27
|
+
overscroll-behavior: contain;
|
|
28
|
+
background-color: var(--mpopup-backdrop-color);
|
|
29
|
+
}
|
|
36
30
|
|
|
31
|
+
&.on {
|
|
32
|
+
scale: 1;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
}
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
top: calc(-1 * var(--mpopup-btn-close-size) / 3);
|
|
43
|
-
right: calc(-1 * var(--mpopup-btn-close-size) / 3);
|
|
44
|
-
}
|
|
37
|
+
.closeButton {
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
gap: 0;
|
|
51
|
-
align-items: stretch;
|
|
52
|
-
justify-content: flex-start;
|
|
53
|
-
min-height: 0;
|
|
54
|
-
}
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: calc(-1 * var(--mpopup-btn-close-size) / 3);
|
|
41
|
+
right: calc(-1 * var(--mpopup-btn-close-size) / 3);
|
|
42
|
+
}
|
|
55
43
|
|
|
44
|
+
.contentWrapper {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex: 1;
|
|
47
|
+
flex-flow: column nowrap;
|
|
48
|
+
gap: 0;
|
|
49
|
+
align-items: stretch;
|
|
50
|
+
justify-content: flex-start;
|
|
51
|
+
min-height: 0;
|
|
52
|
+
}
|
|
56
53
|
|
|
57
|
-
.content {
|
|
58
|
-
flex: 1;
|
|
59
|
-
/* width: 100%;
|
|
60
|
-
height: 100%; */
|
|
61
|
-
min-height: 0;
|
|
62
|
-
padding: var(--mpopup-content-padding);
|
|
63
|
-
overflow-x: hidden;
|
|
64
|
-
overflow-y: auto;
|
|
65
|
-
scrollbar-gutter: stable;
|
|
66
54
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
.content {
|
|
56
|
+
flex: 1;
|
|
57
|
+
/* width: 100%;
|
|
58
|
+
height: 100%; */
|
|
59
|
+
min-height: 0;
|
|
60
|
+
padding: var(--mpopup-content-padding);
|
|
61
|
+
overflow-x: hidden;
|
|
62
|
+
overflow-y: auto;
|
|
63
|
+
scrollbar-gutter: stable;
|
|
70
64
|
|
|
65
|
+
.scrollBarPadding & {
|
|
66
|
+
padding-inline-end: var(--mpopup-content-scrollbar-padding-i-end);
|
|
71
67
|
}
|
|
72
68
|
|
|
73
|
-
|
|
74
|
-
width: 100%;
|
|
75
|
-
height: 100%;
|
|
76
|
-
padding: 0;
|
|
77
|
-
margin: 0;
|
|
78
|
-
overscroll-behavior: contain;
|
|
79
|
-
border: none;
|
|
80
|
-
}
|
|
69
|
+
}
|
|
81
70
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
padding: var(--mpopup-footer-padding);
|
|
91
|
-
font-size: var(--mpopup-footer-font-size);
|
|
92
|
-
color: var(--mpopup-footer-color);
|
|
93
|
-
background-color: var(--mpopup-footer-background-color);
|
|
94
|
-
border-radius: 0 0 var(--mpopup-border-radius) var(--mpopup-border-radius);
|
|
95
|
-
}
|
|
71
|
+
.iframe {
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
padding: 0;
|
|
75
|
+
margin: 0;
|
|
76
|
+
overscroll-behavior: contain;
|
|
77
|
+
border: none;
|
|
78
|
+
}
|
|
96
79
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
80
|
+
.header {
|
|
81
|
+
padding: var(--mpopup-header-padding);
|
|
82
|
+
font-size: var(--mpopup-header-font-size);
|
|
83
|
+
color: var(--mpopup-header-color);
|
|
84
|
+
background-color: var(--mpopup-header-background-color);
|
|
85
|
+
border-radius: var(--mpopup-border-radius) var(--mpopup-border-radius) 0 0;
|
|
86
|
+
}
|
|
87
|
+
.footer {
|
|
88
|
+
padding: var(--mpopup-footer-padding);
|
|
89
|
+
font-size: var(--mpopup-footer-font-size);
|
|
90
|
+
color: var(--mpopup-footer-color);
|
|
91
|
+
background-color: var(--mpopup-footer-background-color);
|
|
92
|
+
border-radius: 0 0 var(--mpopup-border-radius) var(--mpopup-border-radius);
|
|
93
|
+
}
|
|
102
94
|
|
|
95
|
+
.header, .footer {
|
|
96
|
+
* {
|
|
97
|
+
color: inherit;
|
|
98
|
+
}
|
|
103
99
|
}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/*! minimo - Overlay */
|
|
4
|
-
|
|
5
|
-
.overlay {
|
|
6
|
-
position: fixed;
|
|
7
|
-
inset: 0;
|
|
8
|
-
z-index: var(--z-index-overlay);
|
|
9
|
-
pointer-events: none;
|
|
10
|
-
background-color: color-mix(in srgb, var(--text-color) 20%, transparent);
|
|
11
|
-
}
|
|
12
|
-
.overlay-inverted {
|
|
13
|
-
background-color: color-mix(in srgb, var(--body-background-color) 50%, transparent);
|
|
14
|
-
}
|
|
1
|
+
/*! minimo - Overlay */
|
|
15
2
|
|
|
3
|
+
.overlay {
|
|
4
|
+
position: fixed;
|
|
5
|
+
inset: 0;
|
|
6
|
+
z-index: var(--z-index-overlay);
|
|
7
|
+
pointer-events: none;
|
|
8
|
+
background-color: color-mix(in srgb, var(--text-color) 20%, transparent);
|
|
9
|
+
}
|
|
10
|
+
.overlay-inverted {
|
|
11
|
+
background-color: color-mix(in srgb, var(--body-background-color) 50%, transparent);
|
|
16
12
|
}
|
|
@@ -1,103 +1,99 @@
|
|
|
1
|
-
|
|
1
|
+
/* TODO migliorare l'integrazione con btn-close e adeguare i tokens dove necessario */
|
|
2
2
|
|
|
3
|
-
/* TODO migliorare l'integrazione con btn-close e adeguare i tokens dove necessario */
|
|
4
3
|
|
|
4
|
+
.sf-macro-wrapper {
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
--btn-close-background-color: var(--sf-macro-btn-close-background-color);
|
|
7
|
+
--btn-close-size: var(--sf-macro-btn-close-size);
|
|
7
8
|
|
|
8
|
-
--btn-close-background-color: var(--sf-macro-btn-close-background-color);
|
|
9
|
-
--btn-close-size: var(--sf-macro-btn-close-size);
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
display: none;
|
|
19
|
-
}
|
|
10
|
+
/* etichette campi righe successive alla prima */
|
|
11
|
+
@media (--media-large-viewport-up) {
|
|
12
|
+
&:not(.always-show-labels) {
|
|
13
|
+
.sf-macro-riga {
|
|
14
|
+
&:not(:first-child) {
|
|
15
|
+
.form-label, label {
|
|
16
|
+
display: none;
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
20
|
}
|
|
21
|
+
}
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
} // end @each
|
|
37
|
-
*/
|
|
38
|
-
|
|
23
|
+
/*
|
|
24
|
+
// forza la visualizzazione delle etichette in tutte le righe
|
|
25
|
+
// a partire dal breakpont successivo a quello indicato
|
|
26
|
+
@each $brk in (xs, sm, md, lg, xl) {
|
|
27
|
+
&.sf-macro-show-label-down-#{$brk} {
|
|
28
|
+
@include media-breakpoint-down($brk) {
|
|
29
|
+
.form-label, label {
|
|
30
|
+
display: inline-block !important;
|
|
31
|
+
}
|
|
32
|
+
} // end @media
|
|
39
33
|
}
|
|
34
|
+
} // end @each
|
|
35
|
+
*/
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
position: relative;
|
|
43
|
-
padding: var(--sf-macro-rows-padding);
|
|
44
|
-
margin-bottom: var(--sf-macro-rows-margin-block-end);
|
|
45
|
-
border: var(--sf-macro-rows-border);
|
|
46
|
-
border-radius: var(--sf-macro-rows-border-radius);
|
|
37
|
+
}
|
|
47
38
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
.sf-macro-riga {
|
|
40
|
+
position: relative;
|
|
41
|
+
padding: var(--sf-macro-rows-padding);
|
|
42
|
+
margin-bottom: var(--sf-macro-rows-margin-block-end);
|
|
43
|
+
border: var(--sf-macro-rows-border);
|
|
44
|
+
border-radius: var(--sf-macro-rows-border-radius);
|
|
51
45
|
|
|
46
|
+
&:nth-child(even) {
|
|
47
|
+
background-color: var(--sf-macro-rows-even-background-color);
|
|
48
|
+
}
|
|
52
49
|
|
|
53
|
-
&:hover {
|
|
54
|
-
background-color: var(--sf-macro-rows-hover-background-color);
|
|
55
|
-
}
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
&:hover {
|
|
52
|
+
background-color: var(--sf-macro-rows-hover-background-color);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.form-group {
|
|
56
|
+
margin-bottom: 0;
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
58
|
+
&:has([type='checkbox']) {
|
|
59
|
+
align-self: center;
|
|
63
60
|
}
|
|
61
|
+
}
|
|
64
62
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
.grid {
|
|
64
|
+
row-gap: .8rem;
|
|
65
|
+
}
|
|
68
66
|
|
|
69
|
-
|
|
67
|
+
} /* end .sf-macro-riga */
|
|
70
68
|
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
.sf-macro-close-btn { /* button */
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
position: absolute;
|
|
73
|
+
top: var(--sf-macro-btn-close-position-top);
|
|
74
|
+
right: var(--sf-macro-btn-close-position-right);
|
|
75
|
+
bottom: var(--sf-macro-btn-close-position-bottom);
|
|
76
|
+
left: var(--sf-macro-btn-close-position-left);
|
|
79
77
|
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
z-index: 1;
|
|
79
|
+
display: block;
|
|
82
80
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
&[disabled], [disabled] & {
|
|
82
|
+
cursor: not-allowed;
|
|
83
|
+
opacity: .4;
|
|
84
|
+
transform: skew(-15deg);
|
|
85
|
+
}
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
87
|
+
svg {
|
|
88
|
+
width: 100%;
|
|
89
|
+
aspect-ratio: 1;
|
|
93
90
|
}
|
|
91
|
+
}
|
|
94
92
|
|
|
95
|
-
|
|
93
|
+
.sf-macro-riga:has(.sf-macro-close-btn:not(:disabled):hover) {
|
|
96
94
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
95
|
+
outline: 2px dashed var(--status-danger-color);
|
|
96
|
+
.sf-macro-close-btn {
|
|
97
|
+
color: var(--status-danger-color);
|
|
101
98
|
}
|
|
102
|
-
|
|
103
99
|
}
|
|
@@ -1,102 +1,98 @@
|
|
|
1
|
-
|
|
1
|
+
/*! minimo - Slide Up/Down Toggle */
|
|
2
|
+
/*
|
|
3
|
+
* CSS Module for slide-up-down-toggle.js
|
|
4
|
+
*
|
|
5
|
+
* Three modern CSS features work together to animate height without JS measurement:
|
|
6
|
+
*
|
|
7
|
+
* interpolate-size: allow-keywords
|
|
8
|
+
* Enables transitioning to/from `height: auto` — the browser resolves the
|
|
9
|
+
* intrinsic size, so JS never reads offsetHeight or scrollHeight.
|
|
10
|
+
*
|
|
11
|
+
* transition-behavior: allow-discrete (via `allow-discrete` in shorthand)
|
|
12
|
+
* Allows `display` to participate in a transition. On collapse: height
|
|
13
|
+
* animates to 0, then `display: none` snaps at the very end. On expand:
|
|
14
|
+
* `display: block` snaps at the very start, then height animates to auto.
|
|
15
|
+
*
|
|
16
|
+
* @starting-style
|
|
17
|
+
* Defines the initial state for elements entering from `display: none`.
|
|
18
|
+
* Without it, the browser has no "before" value to transition from and
|
|
19
|
+
* the expand animation would not play.
|
|
20
|
+
*
|
|
21
|
+
* ─── Usage ────────────────────────────────────────────────────────────────────
|
|
22
|
+
*
|
|
23
|
+
* wrap: true (default)
|
|
24
|
+
* JS generates a wrapper <div class="slide"> around the target.
|
|
25
|
+
* The target element is completely free — any display, padding, margin.
|
|
26
|
+
* No changes to HTML required; initial open state is the default.
|
|
27
|
+
* For an element that should start collapsed, add data-slide="closed" to
|
|
28
|
+
* the target BEFORE calling any slide function — JS transfers it to the wrapper.
|
|
29
|
+
*
|
|
30
|
+
* wrap: false
|
|
31
|
+
* JS adds .slide directly to the target element.
|
|
32
|
+
* The target must be a plain block wrapper (no padding, no flex/grid).
|
|
33
|
+
* All layout, padding and margin must live on an inner child element.
|
|
34
|
+
* Initial collapsed state: add data-slide="closed" directly to the target in HTML.
|
|
35
|
+
*
|
|
36
|
+
* ─── FOUC prevention ──────────────────────────────────────────────────────────
|
|
37
|
+
*
|
|
38
|
+
* Elements with data-slide="closed" are hidden via a :global rule below,
|
|
39
|
+
* so they start invisible even before JS adds the .slide class.
|
|
40
|
+
*
|
|
41
|
+
* ─── Duration override ────────────────────────────────────────────────────────
|
|
42
|
+
*
|
|
43
|
+
* Set --slide-duration on the element or pass `duration` in JS options:
|
|
44
|
+
* style="--slide-duration: 300ms"
|
|
45
|
+
*/
|
|
2
46
|
|
|
3
|
-
|
|
47
|
+
/* applied to the animation wrapper (generated or the target itself) */
|
|
48
|
+
.slide {
|
|
49
|
+
interpolate-size: allow-keywords;
|
|
4
50
|
/*
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*
|
|
18
|
-
* @starting-style
|
|
19
|
-
* Defines the initial state for elements entering from `display: none`.
|
|
20
|
-
* Without it, the browser has no "before" value to transition from and
|
|
21
|
-
* the expand animation would not play.
|
|
22
|
-
*
|
|
23
|
-
* ─── Usage ────────────────────────────────────────────────────────────────────
|
|
24
|
-
*
|
|
25
|
-
* wrap: true (default)
|
|
26
|
-
* JS generates a wrapper <div class="slide"> around the target.
|
|
27
|
-
* The target element is completely free — any display, padding, margin.
|
|
28
|
-
* No changes to HTML required; initial open state is the default.
|
|
29
|
-
* For an element that should start collapsed, add data-slide="closed" to
|
|
30
|
-
* the target BEFORE calling any slide function — JS transfers it to the wrapper.
|
|
31
|
-
*
|
|
32
|
-
* wrap: false
|
|
33
|
-
* JS adds .slide directly to the target element.
|
|
34
|
-
* The target must be a plain block wrapper (no padding, no flex/grid).
|
|
35
|
-
* All layout, padding and margin must live on an inner child element.
|
|
36
|
-
* Initial collapsed state: add data-slide="closed" directly to the target in HTML.
|
|
37
|
-
*
|
|
38
|
-
* ─── FOUC prevention ──────────────────────────────────────────────────────────
|
|
39
|
-
*
|
|
40
|
-
* Elements with data-slide="closed" are hidden via a :global rule below,
|
|
41
|
-
* so they start invisible even before JS adds the .slide class.
|
|
42
|
-
*
|
|
43
|
-
* ─── Duration override ────────────────────────────────────────────────────────
|
|
44
|
-
*
|
|
45
|
-
* Set --slide-duration on the element or pass `duration` in JS options:
|
|
46
|
-
* style="--slide-duration: 300ms"
|
|
47
|
-
*/
|
|
51
|
+
* !important overrides any external display: none (inline or CSS rule without !important).
|
|
52
|
+
* .slide[data-slide='closed'] below has higher specificity (0,2,0 vs 0,1,0) so its
|
|
53
|
+
* display: none !important still wins when the element is collapsed.
|
|
54
|
+
*/
|
|
55
|
+
/* stylelint-disable-next-line declaration-no-important */
|
|
56
|
+
display: block !important;
|
|
57
|
+
height: auto;
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
transition:
|
|
60
|
+
height var(--slide-duration) ease,
|
|
61
|
+
display var(--slide-duration) allow-discrete;
|
|
62
|
+
}
|
|
48
63
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
* display: none !important still wins when the element is collapsed.
|
|
56
|
-
*/
|
|
57
|
-
/* stylelint-disable-next-line declaration-no-important */
|
|
58
|
-
display: block !important;
|
|
59
|
-
height: auto;
|
|
60
|
-
overflow: hidden;
|
|
61
|
-
transition:
|
|
62
|
-
height var(--slide-duration) ease,
|
|
63
|
-
display var(--slide-duration) allow-discrete;
|
|
64
|
-
}
|
|
64
|
+
/* collapsed state: height animates to 0, then display snaps to none */
|
|
65
|
+
.slide[data-slide='closed'] {
|
|
66
|
+
/* stylelint-disable-next-line declaration-no-important */
|
|
67
|
+
display: none !important;
|
|
68
|
+
height: 0;
|
|
69
|
+
}
|
|
65
70
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
/*
|
|
72
|
+
* Entry state for the expand transition.
|
|
73
|
+
* When .slide transitions from display:none → display:block, the browser needs
|
|
74
|
+
* a starting value for height. @starting-style provides height:0 so the
|
|
75
|
+
* animation plays from zero to auto instead of snapping instantly.
|
|
76
|
+
*/
|
|
77
|
+
/*
|
|
78
|
+
* @starting-style targets only [data-slide='open'] — not :not([data-slide='closed']).
|
|
79
|
+
* The broader selector would also match newly inserted wrappers (which have no
|
|
80
|
+
* data-slide attribute), causing an unwanted entry animation from height:0 that
|
|
81
|
+
* conflicts with the first collapse call and makes the transition invisible.
|
|
82
|
+
* Using [data-slide='open'] restricts this to the expand animation triggered by
|
|
83
|
+
* slideDown(), which always sets data-slide="open" on a previously hidden element.
|
|
84
|
+
*/
|
|
85
|
+
@starting-style {
|
|
86
|
+
.slide[data-slide='open'] {
|
|
70
87
|
height: 0;
|
|
71
88
|
}
|
|
89
|
+
}
|
|
72
90
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
* @starting-style targets only [data-slide='open'] — not :not([data-slide='closed']).
|
|
81
|
-
* The broader selector would also match newly inserted wrappers (which have no
|
|
82
|
-
* data-slide attribute), causing an unwanted entry animation from height:0 that
|
|
83
|
-
* conflicts with the first collapse call and makes the transition invisible.
|
|
84
|
-
* Using [data-slide='open'] restricts this to the expand animation triggered by
|
|
85
|
-
* slideDown(), which always sets data-slide="open" on a previously hidden element.
|
|
86
|
-
*/
|
|
87
|
-
@starting-style {
|
|
88
|
-
.slide[data-slide='open'] {
|
|
89
|
-
height: 0;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/*
|
|
94
|
-
* FOUC prevention — global, no class required.
|
|
95
|
-
* Hides elements with data-slide="closed" before JS has run and added .slide.
|
|
96
|
-
* Uses :global so CSS Modules does not hash this selector.
|
|
97
|
-
*/
|
|
98
|
-
:global([data-slide='closed']) {
|
|
99
|
-
display: none;
|
|
100
|
-
}
|
|
101
|
-
|
|
91
|
+
/*
|
|
92
|
+
* FOUC prevention — global, no class required.
|
|
93
|
+
* Hides elements with data-slide="closed" before JS has run and added .slide.
|
|
94
|
+
* Uses :global so CSS Modules does not hash this selector.
|
|
95
|
+
*/
|
|
96
|
+
:global([data-slide='closed']) {
|
|
97
|
+
display: none;
|
|
102
98
|
}
|