@massimo-cassandro/minimo 1.21.2 → 1.21.4

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.
Files changed (54) hide show
  1. package/package.json +1 -1
  2. package/src/components/autocomplete/autocomplete.css +116 -118
  3. package/src/components/inner-nav/inner-nav.css +10 -13
  4. package/src/components/modal-alert/modal-alert.module.css +156 -159
  5. package/src/components/modal-popup/modal-popup.module.css +85 -88
  6. package/src/components/overlay/overlay.css +10 -14
  7. package/src/components/sf-macro/sf-macro.css +68 -72
  8. package/src/components/slide-up-down-toggle/slide-up-down-toggle.module.css +90 -94
  9. package/src/components/snackbar/snackbar.module.css +89 -93
  10. package/src/components/spinner/spinner-circle-basic.css +14 -18
  11. package/src/components/spinner/spinner.module.css +4 -8
  12. package/src/components/unsplash-page/unsplash-page.module.css +255 -260
  13. package/src/css/alerts.css +81 -85
  14. package/src/css/badge.css +13 -15
  15. package/src/css/buttons/btn-close.css +53 -56
  16. package/src/css/buttons/buttons-primary.css +34 -37
  17. package/src/css/buttons/buttons-secondary.css +34 -37
  18. package/src/css/buttons/buttons.css +80 -83
  19. package/src/css/buttons/status-buttons.css +87 -90
  20. package/src/css/container.css +5 -8
  21. package/src/css/data-formats.css +24 -28
  22. package/src/css/details.css +13 -17
  23. package/src/css/dimensions.css +9 -12
  24. package/src/css/display.css +37 -41
  25. package/src/css/flex.css +35 -39
  26. package/src/css/forms/fieldset.css +56 -59
  27. package/src/css/forms/form-collections.css +12 -16
  28. package/src/css/forms/form-disabled-readonly.css +28 -31
  29. package/src/css/forms/form-group.css +13 -18
  30. package/src/css/forms/form-utilities.css +34 -39
  31. package/src/css/forms/forms.css +132 -136
  32. package/src/css/forms/input-group.css +43 -47
  33. package/src/css/forms/switch.css +75 -78
  34. package/src/css/forms/validation.css +22 -26
  35. package/src/css/grid.css +62 -66
  36. package/src/css/headings.css +28 -32
  37. package/src/css/icons.css +57 -63
  38. package/src/css/layout-base.css +13 -15
  39. package/src/css/links.css +36 -39
  40. package/src/css/margin-padding-bootstrap-media.css +1832 -1835
  41. package/src/css/margin-padding-bootstrap.css +440 -443
  42. package/src/css/margin-padding-media.css +1832 -1835
  43. package/src/css/margin-padding.css +440 -443
  44. package/src/css/overflow.css +3 -7
  45. package/src/css/position.css +1 -6
  46. package/src/css/reset.css +46 -48
  47. package/src/css/svg.css +2 -5
  48. package/src/css/table.css +61 -63
  49. package/src/css/text.css +95 -98
  50. package/src/css/visibility.css +42 -45
  51. package/src/minimo.css +3 -3
  52. package/src/utilities/dom-builder-helpers/form-tags.js +24 -8
  53. package/src/web-components/s-datatable-component/s-datatable-component.module.css +172 -175
  54. package/types/classes.d.ts +1 -0
@@ -1,103 +1,100 @@
1
- @layer components {
2
-
3
- /*! minimo - Modal Popup */
4
-
5
- .dialog {
6
-
7
- position: fixed;
8
-
9
- display: flex;
10
- flex-direction: column;
11
-
12
- width: var(--mpopup-width);
13
- min-width: var(--mpopup-min-width);
14
- max-width: var(--mpopup-max-width);
15
- height: var(--mpopup-height);
16
- min-height: var(--mpopup-min-height);
17
- max-height: var(--mpopup-max-height);
18
- padding: 0;
19
- margin: auto;
20
- overflow: visible;
21
- background-color: var(--mpopup-background-color);
22
- border: none;
23
- border-radius: var(--mpopup-border-radius);
24
- box-shadow: var(--mpopup-drop-shadow);
25
- scale: 0;
26
- transition: scale .2s ease-out;
27
-
28
- &::backdrop {
29
- overscroll-behavior: contain;
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
- .closeButton {
35
+ }
40
36
 
41
- position: absolute;
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
- .contentWrapper {
47
- display: flex;
48
- flex: 1;
49
- flex-flow: column nowrap;
50
- gap: 0;
51
- align-items: stretch;
52
- justify-content: flex-start;
53
- min-height: 0;
54
- }
39
+ /* stylelint-disable-next-line declaration-no-important */
40
+ position: absolute !important;
41
+ top: calc(-1 * var(--mpopup-btn-close-size) / 3);
42
+ right: calc(-1 * var(--mpopup-btn-close-size) / 3);
43
+ }
55
44
 
45
+ .contentWrapper {
46
+ display: flex;
47
+ flex: 1;
48
+ flex-flow: column nowrap;
49
+ gap: 0;
50
+ align-items: stretch;
51
+ justify-content: flex-start;
52
+ min-height: 0;
53
+ }
56
54
 
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
55
 
67
- .scrollBarPadding & {
68
- padding-inline-end: var(--mpopup-content-scrollbar-padding-i-end);
69
- }
56
+ .content {
57
+ flex: 1;
58
+ /* width: 100%;
59
+ height: 100%; */
60
+ min-height: 0;
61
+ padding: var(--mpopup-content-padding);
62
+ overflow-x: hidden;
63
+ overflow-y: auto;
64
+ scrollbar-gutter: stable;
70
65
 
66
+ .scrollBarPadding & {
67
+ padding-inline-end: var(--mpopup-content-scrollbar-padding-i-end);
71
68
  }
72
69
 
73
- .iframe {
74
- width: 100%;
75
- height: 100%;
76
- padding: 0;
77
- margin: 0;
78
- overscroll-behavior: contain;
79
- border: none;
80
- }
70
+ }
81
71
 
82
- .header {
83
- padding: var(--mpopup-header-padding);
84
- font-size: var(--mpopup-header-font-size);
85
- color: var(--mpopup-header-color);
86
- background-color: var(--mpopup-header-background-color);
87
- border-radius: var(--mpopup-border-radius) var(--mpopup-border-radius) 0 0;
88
- }
89
- .footer {
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
- }
72
+ .iframe {
73
+ width: 100%;
74
+ height: 100%;
75
+ padding: 0;
76
+ margin: 0;
77
+ overscroll-behavior: contain;
78
+ border: none;
79
+ }
96
80
 
97
- .header, .footer {
98
- * {
99
- color: inherit;
100
- }
101
- }
81
+ .header {
82
+ padding: var(--mpopup-header-padding);
83
+ font-size: var(--mpopup-header-font-size);
84
+ color: var(--mpopup-header-color);
85
+ background-color: var(--mpopup-header-background-color);
86
+ border-radius: var(--mpopup-border-radius) var(--mpopup-border-radius) 0 0;
87
+ }
88
+ .footer {
89
+ padding: var(--mpopup-footer-padding);
90
+ font-size: var(--mpopup-footer-font-size);
91
+ color: var(--mpopup-footer-color);
92
+ background-color: var(--mpopup-footer-background-color);
93
+ border-radius: 0 0 var(--mpopup-border-radius) var(--mpopup-border-radius);
94
+ }
102
95
 
96
+ .header, .footer {
97
+ * {
98
+ color: inherit;
99
+ }
103
100
  }
@@ -1,16 +1,12 @@
1
- @layer components {
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
- @layer components {
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
- .sf-macro-wrapper {
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
- /* etichette campi righe successive alla prima */
13
- @media (--media-large-viewport-up) {
14
- &:not(.always-show-labels) {
15
- .sf-macro-riga {
16
- &:not(:first-child) {
17
- .form-label, label {
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
- // forza la visualizzazione delle etichette in tutte le righe
27
- // a partire dal breakpont successivo a quello indicato
28
- @each $brk in (xs, sm, md, lg, xl) {
29
- &.sf-macro-show-label-down-#{$brk} {
30
- @include media-breakpoint-down($brk) {
31
- .form-label, label {
32
- display: inline-block !important;
33
- }
34
- } // end @media
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
- .sf-macro-riga {
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
- &:nth-child(even) {
49
- background-color: var(--sf-macro-rows-even-background-color);
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
- .form-group {
58
- margin-bottom: 0;
51
+ &:hover {
52
+ background-color: var(--sf-macro-rows-hover-background-color);
53
+ }
54
+
55
+ .form-group {
56
+ margin-bottom: 0;
59
57
 
60
- &:has([type='checkbox']) {
61
- align-self: center;
62
- }
58
+ &:has([type='checkbox']) {
59
+ align-self: center;
63
60
  }
61
+ }
64
62
 
65
- .grid {
66
- row-gap: .8rem;
67
- }
63
+ .grid {
64
+ row-gap: .8rem;
65
+ }
68
66
 
69
- } /* end .sf-macro-riga */
67
+ } /* end .sf-macro-riga */
70
68
 
71
69
 
72
- .sf-macro-close-btn { /* button */
70
+ .sf-macro-close-btn { /* button */
73
71
 
74
- position: absolute;
75
- top: var(--sf-macro-btn-close-position-top);
76
- right: var(--sf-macro-btn-close-position-right);
77
- bottom: var(--sf-macro-btn-close-position-bottom);
78
- left: var(--sf-macro-btn-close-position-left);
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
- z-index: 1;
81
- display: block;
78
+ z-index: 1;
79
+ display: block;
82
80
 
83
- &[disabled], [disabled] & {
84
- cursor: not-allowed;
85
- opacity: .4;
86
- transform: skew(-15deg);
87
- }
81
+ &[disabled], [disabled] & {
82
+ cursor: not-allowed;
83
+ opacity: .4;
84
+ transform: skew(-15deg);
85
+ }
88
86
 
89
- svg {
90
- width: 100%;
91
- aspect-ratio: 1;
92
- }
87
+ svg {
88
+ width: 100%;
89
+ aspect-ratio: 1;
93
90
  }
91
+ }
94
92
 
95
- .sf-macro-riga:has(.sf-macro-close-btn:not(:disabled):hover) {
93
+ .sf-macro-riga:has(.sf-macro-close-btn:not(:disabled):hover) {
96
94
 
97
- outline: 2px dashed var(--status-danger-color);
98
- .sf-macro-close-btn {
99
- color: var(--status-danger-color);
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
- @layer components {
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
- /*! minimo - Slide Up/Down Toggle */
47
+ /* applied to the animation wrapper (generated or the target itself) */
48
+ .slide {
49
+ interpolate-size: allow-keywords;
4
50
  /*
5
- * CSS Module for slide-up-down-toggle.js
6
- *
7
- * Three modern CSS features work together to animate height without JS measurement:
8
- *
9
- * interpolate-size: allow-keywords
10
- * Enables transitioning to/from `height: auto` — the browser resolves the
11
- * intrinsic size, so JS never reads offsetHeight or scrollHeight.
12
- *
13
- * transition-behavior: allow-discrete (via `allow-discrete` in shorthand)
14
- * Allows `display` to participate in a transition. On collapse: height
15
- * animates to 0, then `display: none` snaps at the very end. On expand:
16
- * `display: block` snaps at the very start, then height animates to auto.
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
- /* applied to the animation wrapper (generated or the target itself) */
50
- .slide {
51
- interpolate-size: allow-keywords;
52
- /*
53
- * !important overrides any external display: none (inline or CSS rule without !important).
54
- * .slide[data-slide='closed'] below has higher specificity (0,2,0 vs 0,1,0) so its
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
- /* collapsed state: height animates to 0, then display snaps to none */
67
- .slide[data-slide='closed'] {
68
- /* stylelint-disable-next-line declaration-no-important */
69
- display: none !important;
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
- * Entry state for the expand transition.
75
- * When .slide transitions from display:none → display:block, the browser needs
76
- * a starting value for height. @starting-style provides height:0 so the
77
- * animation plays from zero to auto instead of snapping instantly.
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
  }