@massimo-cassandro/minimo 0.1.11 → 0.2.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/package.json +8 -4
- package/src/{js → components}/dialog-content.js +1 -1
- package/src/{css → components/inner-nav}/inner-nav.css +2 -2
- package/src/{js → components/inner-nav}/inner-nav.js +8 -0
- package/src/components/modal-content/modal-content.js +1 -1
- package/src/components/modal-content/modal-content.module.css +4 -4
- package/src/components/recaptcha/recaptcha.css +4 -5
- package/src/components/recaptcha/recaptcha.minimo.tokens.jsonc +24 -0
- package/src/{css/spinners → components/spinner}/TODO spinner-circle.css +1 -1
- package/src/{css/spinners → components/spinner}/spinner-circle-basic.css +3 -2
- package/src/{css/spinners → components/spinner}/spinner-wrapper.css +1 -1
- package/src/components/spinner/spinner.minimo.tokens.jsonc +22 -0
- package/src/components/toast/toast.js +77 -0
- package/src/components/toast/toast.minimo.tokens.jsonc +29 -0
- package/src/components/toast/toast.module.css +59 -0
- package/src/css/alerts.css +23 -23
- package/src/css/anchors.css +17 -16
- package/src/css/buttons/btn-close.css +8 -7
- package/src/css/buttons/buttons.css +105 -90
- package/src/css/buttons/status-buttons.css +43 -43
- package/src/css/container.css +3 -12
- package/src/css/details.css +1 -1
- package/src/css/dialog-content.css +2 -2
- package/src/css/flex.css +9 -0
- package/src/css/forms/fieldset.css +75 -0
- package/src/css/forms/form-group.css +18 -0
- package/src/css/forms/form-utilities.css +32 -0
- package/src/css/forms/forms.css +37 -202
- package/src/css/forms/input-group.css +49 -0
- package/src/css/forms/validation.css +25 -0
- package/src/css/grid.css +25 -18
- package/src/css/headings.css +10 -9
- package/src/css/icons.css +1 -40
- package/src/css/layout-base.css +3 -3
- package/src/css/overlay.css +1 -2
- package/src/css/table.css +26 -19
- package/src/css/text.css +8 -7
- package/src/css/utilities.css +90 -29
- package/src/custom-media-default.css +20 -8
- package/src/custom-properties-default.css +212 -306
- package/src/design-tokens/alerts.minimo.tokens.jsonc +23 -0
- package/src/design-tokens/basic.minimo.tokens.jsonc +52 -0
- package/src/design-tokens/btn-close.minimo.tokens.jsonc +95 -0
- package/src/design-tokens/btn-primary.minimo.tokens.jsonc +100 -0
- package/src/design-tokens/btn-secondary.minimo.tokens.jsonc +33 -0
- package/src/design-tokens/btn.minimo.tokens.jsonc +200 -0
- package/src/design-tokens/color-accent.minimo.tokens.jsonc +13 -0
- package/src/design-tokens/color-neutral.minimo.tokens.jsonc +12 -0
- package/src/design-tokens/color-primary.minimo.tokens.jsonc +12 -0
- package/src/design-tokens/color-secondary.minimo.tokens.jsonc +12 -0
- package/src/design-tokens/flex-grid.minimo.tokens.jsonc +18 -0
- package/src/design-tokens/form.minimo.tokens.jsonc +295 -0
- package/src/design-tokens/gradients-shadowes.minimo.tokens.jsonc +4 -0
- package/src/design-tokens/headings.minimo.tokens.jsonc +57 -0
- package/src/design-tokens/link.minimo.tokens.jsonc +41 -0
- package/src/design-tokens/radius.minimo.tokens.jsonc +45 -0
- package/src/design-tokens/size.minimo.tokens.jsonc +101 -0
- package/src/design-tokens/status.minimo.tokens.jsonc +69 -0
- package/src/design-tokens/table.minimo.tokens.jsonc +66 -0
- package/src/design-tokens/typography.minimo.tokens.jsonc +120 -0
- package/src/design-tokens/utility.minimo.tokens.jsonc +8 -0
- package/src/design-tokens/z-index.minimo.tokens.jsonc +8 -0
- package/src/fonts-template.css +7 -0
- package/src/index-template.css +5 -10
- package/src/index.js +1 -0
- package/src/utilities/classnames.js +3 -0
- package/src/web-components/simple-datatable/icons/arrow-down.svg +1 -0
- package/src/web-components/simple-datatable/icons/arrow-up.svg +2 -0
- package/src/web-components/simple-datatable/icons/arrows-down-up.svg +1 -0
- package/src/web-components/simple-datatable/icons/caret-left.svg +1 -0
- package/src/web-components/simple-datatable/icons/caret-right.svg +1 -0
- package/src/web-components/simple-datatable/icons/check-bold.svg +1 -0
- package/src/web-components/simple-datatable/icons/x-bold.svg +1 -0
- package/src/web-components/simple-datatable/simple-datatable.js +219 -0
- package/src/web-components/simple-datatable/simple-datatable.minimo.tokens.jsonc +50 -0
- package/src/web-components/simple-datatable/simple-datatable.module.css +214 -0
- package/src/web-components/simple-datatable/src/parse-cols.js +117 -0
- package/src/components/init.js +0 -7
- package/src/css/forms/form-edit-info.css +0 -17
- /package/src/{js → components}/alert-autoclose.js +0 -0
- /package/src/{js → components}/create-blurhash-canvas.js +0 -0
- /package/src/{js → components}/dismiss-alerts.js +0 -0
- /package/src/{js → components}/forms.js +0 -0
- /package/src/{js → components}/img-viewer-dom-builder.js +0 -0
- /package/src/{js → components}/overlay.js +0 -0
- /package/src/{js → components}/print-icon.js +0 -0
- /package/src/{css/spinners → components/spinner}/TODO spinner-three-dots.css +0 -0
- /package/src/{css/spinners → components/spinner}/spinner-trailing-dots.css +0 -0
- /package/src/{js → components/spinner}/spinner.js +0 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/* frontend/src/web-components/simple-datatable.module.css */
|
|
2
|
+
|
|
3
|
+
/* import delle custom properties gestito da jit-props */
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/* purgecss start ignore */
|
|
7
|
+
|
|
8
|
+
/* .datatable-wrapper.no-header .datatable-container {
|
|
9
|
+
border-top: 1px solid #d9d9d9;
|
|
10
|
+
} */
|
|
11
|
+
.datatableWrapper {
|
|
12
|
+
margin-block: var(--size-md);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.topArea {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-flow: row nowrap;
|
|
18
|
+
/* gap: 1rem; */
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: flex-end;
|
|
21
|
+
padding-block-end: var(--size-xs);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.searchWrapper {
|
|
25
|
+
max-width: 50%;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.table {
|
|
29
|
+
margin-block: 0;
|
|
30
|
+
border-block: var(--_border); /* definito in minimo table */
|
|
31
|
+
|
|
32
|
+
thead {
|
|
33
|
+
th:has(.sortBtn) {
|
|
34
|
+
padding-inline-end: 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* cella unica per indicare l'assenza di record */
|
|
41
|
+
.empty {
|
|
42
|
+
/* stylelint-disable-next-line declaration-no-important */
|
|
43
|
+
padding: var(--size-sm) !important;
|
|
44
|
+
font-style: italic;
|
|
45
|
+
color: var(--text-muted);
|
|
46
|
+
/* stylelint-disable-next-line declaration-no-important */
|
|
47
|
+
text-align: center !important;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.hasIcon {
|
|
51
|
+
/* stylelint-disable-next-line declaration-no-important */
|
|
52
|
+
text-align: center !important;
|
|
53
|
+
svg {
|
|
54
|
+
display: inline-block;
|
|
55
|
+
width: 1.05em;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
[data-sortable='true'] {
|
|
61
|
+
|
|
62
|
+
@media (hover: hover) {
|
|
63
|
+
&:hover {
|
|
64
|
+
background-color: var(--sdt-thead-hover-background-color);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.sortBtn {
|
|
69
|
+
padding: 0 1.5em 0 0;
|
|
70
|
+
&::after {
|
|
71
|
+
position: absolute;
|
|
72
|
+
top: 50%;
|
|
73
|
+
right: .1em;
|
|
74
|
+
display: block;
|
|
75
|
+
width: 1em;
|
|
76
|
+
height: 1em;
|
|
77
|
+
translate: 0 -50%;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&:not(.sortAscending):not(.sortDescending){
|
|
82
|
+
.sortBtn::after {
|
|
83
|
+
content: url('./icons/arrows-down-up.svg?cssInline');
|
|
84
|
+
opacity: .4;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
.sortAscending {
|
|
89
|
+
.sortBtn::after {
|
|
90
|
+
content: url('./icons/arrow-up.svg?cssInline');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
.sortDescending {
|
|
94
|
+
.sortBtn::after {
|
|
95
|
+
content: url('./icons/arrow-down.svg?cssInline');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.sortBtn {
|
|
100
|
+
position: relative;
|
|
101
|
+
display: block;
|
|
102
|
+
width: 100%;
|
|
103
|
+
height: 100%;
|
|
104
|
+
|
|
105
|
+
padding: var(--table-cell-padding-block) var(--table-cell-padding-inline);
|
|
106
|
+
line-height: var(--table-cell-line-height);
|
|
107
|
+
|
|
108
|
+
text-align: start;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* stylelint-disable selector-class-pattern */
|
|
112
|
+
:global(.text-start), :global(.text-left) {
|
|
113
|
+
.sortBtn {
|
|
114
|
+
text-align: start;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
:global(.text-end), :global(.text-right) {
|
|
118
|
+
.sortBtn {
|
|
119
|
+
text-align: end;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
:global(.text-center) {
|
|
123
|
+
.sortBtn {
|
|
124
|
+
text-align: center;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/* stylelint-enable selector-class-pattern */
|
|
128
|
+
|
|
129
|
+
.bottomArea {
|
|
130
|
+
display: flex;
|
|
131
|
+
flex-flow: row wrap;
|
|
132
|
+
gap: var(--size-md);
|
|
133
|
+
align-content: center;
|
|
134
|
+
align-items: center;
|
|
135
|
+
justify-content: space-between;
|
|
136
|
+
margin-block-start: var(--size-xs);
|
|
137
|
+
}
|
|
138
|
+
.info {
|
|
139
|
+
font-size: var(--font-size-sm);
|
|
140
|
+
font-style: italic;
|
|
141
|
+
color: var(--text-muted);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* pagination */
|
|
145
|
+
/* .paginationNav {} */
|
|
146
|
+
.paginationList, .paginationListItem, .paginationListItemBtn {
|
|
147
|
+
padding: 0;
|
|
148
|
+
margin: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.paginationList {
|
|
152
|
+
display: flex;
|
|
153
|
+
flex-flow: row wrap;
|
|
154
|
+
gap: 0;
|
|
155
|
+
align-items: stretch;
|
|
156
|
+
justify-content: flex-start;
|
|
157
|
+
list-style: none;
|
|
158
|
+
}
|
|
159
|
+
.paginationListItem {
|
|
160
|
+
border: var(--sdt-pagination-border);
|
|
161
|
+
border-style: solid solid solid none;
|
|
162
|
+
|
|
163
|
+
&:first-child {
|
|
164
|
+
border-inline-start-style: solid;
|
|
165
|
+
border-radius: var(--radius-xxs) 0 0 var(--radius-xxs);
|
|
166
|
+
}
|
|
167
|
+
&:last-child {
|
|
168
|
+
border-radius: 0 var(--radius-xxs) var(--radius-xxs) 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@media (hover: hover) {
|
|
172
|
+
&:hover {
|
|
173
|
+
color: var(--sdt-hover-color);
|
|
174
|
+
background-color: var(--sdt-hover-background-color);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.paginationDisabled {
|
|
181
|
+
pointer-events: none;
|
|
182
|
+
|
|
183
|
+
.paginationListItemBtn {
|
|
184
|
+
opacity: .7;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.paginationActive {
|
|
189
|
+
color: var(--sdt-hover-color);
|
|
190
|
+
background-color: var(--sdt-hover-background-color);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.paginationListItemBtn {
|
|
194
|
+
display: flex;
|
|
195
|
+
align-items: center;
|
|
196
|
+
justify-content: center;
|
|
197
|
+
height: 100%;
|
|
198
|
+
padding: var(--sdt-pagination-padding-block) var(--sdt-pagination-padding-inline);
|
|
199
|
+
color: inherit;
|
|
200
|
+
background-color: transparent;
|
|
201
|
+
border: none;
|
|
202
|
+
|
|
203
|
+
&.hasSvg {
|
|
204
|
+
padding-inline: calc(var(--sdt-pagination-padding-inline) / 2);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
svg {
|
|
208
|
+
width: 1em;
|
|
209
|
+
aspect-ratio: 1;
|
|
210
|
+
fill: currentColor;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* purgecss end ignore */
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
|
|
2
|
+
// pre-elaborazione tipi dati predefiniti
|
|
3
|
+
// le chiavi che cominciano con '_' sono di questa applicazione, le altre sono di simple-datatable
|
|
4
|
+
|
|
5
|
+
import { classnames } from '@massimo-cassandro/js-utilities/index.js';
|
|
6
|
+
|
|
7
|
+
import * as styles from '../simple-datatable.module.css';
|
|
8
|
+
|
|
9
|
+
import checkIcon from '../icons/check-bold.svg?inline';
|
|
10
|
+
import xIcon from '../icons/x-bold.svg?inline';
|
|
11
|
+
|
|
12
|
+
// col_obj è l'oggetto che descrive una singola colonna del datatable
|
|
13
|
+
// vine utilizzato per produrre l'oggetto columns di simple-datatable
|
|
14
|
+
export function parseCols(col_obj){
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
if(col_obj.render == null) {
|
|
18
|
+
|
|
19
|
+
// campi template
|
|
20
|
+
if(col_obj._renderTpl) {
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
...col_obj,
|
|
24
|
+
type: col_obj.type?? 'html',
|
|
25
|
+
|
|
26
|
+
// render: (value, cell /*, dataIndex, rowIndex */) => {
|
|
27
|
+
|
|
28
|
+
// cell.attributes['data-order'] = value.replace(/(<([^>]+)>)/ig,'');
|
|
29
|
+
// return value;
|
|
30
|
+
// // non viene elaborato qui perché non è possibile raggiungere la riga del json
|
|
31
|
+
// // return `<a href="${col_obj._href}">${value}</a>`;
|
|
32
|
+
// }
|
|
33
|
+
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
} else if(col_obj._renderMode === 'id') {
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
...col_obj,
|
|
40
|
+
type: 'number',
|
|
41
|
+
searchable: false,
|
|
42
|
+
cellClass: 'text-end',
|
|
43
|
+
headerClass: 'text-end',
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} else if(col_obj._renderMode === 'email') {
|
|
47
|
+
return {
|
|
48
|
+
...col_obj,
|
|
49
|
+
type: 'string',
|
|
50
|
+
render: value => value.text?.replace('@', '<wbr />@<wbr />')
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// campi booleani
|
|
54
|
+
} else if (col_obj.type === 'boolean') {
|
|
55
|
+
// TODO caso in cui il valore è null nel caso si voglia differenziarlo da false
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
...col_obj,
|
|
59
|
+
cellClass: styles.hasIcon,
|
|
60
|
+
headerClass: 'text-center',
|
|
61
|
+
render: (value, td) => {
|
|
62
|
+
|
|
63
|
+
if(Boolean(value)) {
|
|
64
|
+
td.attributes.class = classnames(td.attributes.class, 'text-success');
|
|
65
|
+
return checkIcon;
|
|
66
|
+
} else {
|
|
67
|
+
td.attributes.class = classnames(td.attributes.class, 'text-danger');
|
|
68
|
+
return xIcon;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// gestione campi data symfony
|
|
74
|
+
} else if(col_obj._renderMode === 'sf_datetime') {
|
|
75
|
+
return {
|
|
76
|
+
...col_obj,
|
|
77
|
+
type: 'string',
|
|
78
|
+
cellClass: 'text-end',
|
|
79
|
+
headerClass: 'text-end',
|
|
80
|
+
|
|
81
|
+
render: (value, cell /*, dataIndex, rowIndex */) => { // value si riferisce al valore già trasformato nella pre-elaborazione dei dati
|
|
82
|
+
/* {
|
|
83
|
+
"date": "2026-03-31 07:54:31.000000",
|
|
84
|
+
"timezone_type": 3,
|
|
85
|
+
"timezone": "UTC"
|
|
86
|
+
} */
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
if(value == null) {
|
|
90
|
+
cell.attributes['data-order'] = ' ';
|
|
91
|
+
return '\u2014';
|
|
92
|
+
|
|
93
|
+
} else {
|
|
94
|
+
|
|
95
|
+
cell.attributes['data-order'] = value;
|
|
96
|
+
|
|
97
|
+
const dateObj = new Date(value);
|
|
98
|
+
|
|
99
|
+
return `<span class="text-nowrap">${dateObj.toLocaleString('it-IT', {
|
|
100
|
+
year: '2-digit',
|
|
101
|
+
month: 'short',
|
|
102
|
+
day: 'numeric',
|
|
103
|
+
})}</span>` +
|
|
104
|
+
`\u2009<span class="text-xs">${dateObj.toLocaleString('it-IT', {
|
|
105
|
+
hour12: false,
|
|
106
|
+
hour:'2-digit',
|
|
107
|
+
minute:'2-digit'
|
|
108
|
+
})}</span>`;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
} // end if not render
|
|
115
|
+
|
|
116
|
+
return col_obj;
|
|
117
|
+
}
|
package/src/components/init.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
<div class="form-edit-info" title="Ultima modifica effettuata da Gino Bianchi il xxxx">
|
|
3
|
-
<span>13 Aug 2025 <small>11:54</small></span>
|
|
4
|
-
<span>Gino Bianchi</span>
|
|
5
|
-
</div>
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
.form-edit-info {
|
|
9
|
-
display: flex;
|
|
10
|
-
flex-flow: row wrap;
|
|
11
|
-
gap: .5rem;
|
|
12
|
-
/* align-content: flex-start; */ /* multiline container */
|
|
13
|
-
align-items: center;
|
|
14
|
-
justify-content: flex-end;
|
|
15
|
-
font-size: var(--font-size-xxs);
|
|
16
|
-
color: var(--text-muted-color);
|
|
17
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|