mantenimento-app 2.4.3 → 2.4.5
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.
|
@@ -33,6 +33,7 @@ function calculateModel(input) {
|
|
|
33
33
|
const aFam1 = toNumber(input.aFam1);
|
|
34
34
|
const aFam2 = toNumber(input.aFam2);
|
|
35
35
|
const primaCasaMutuoEnabled = toNumber(input.primaCasaMutuoEnabled) > 0;
|
|
36
|
+
const primaCasaValoreLocativo = Math.max(0, toNumber(input.primaCasaValoreLocativo));
|
|
36
37
|
const primaCasaMutuoImporto = Math.max(0, toNumber(input.primaCasaMutuoImporto));
|
|
37
38
|
const primaCasaAssegnataA = String(input.primaCasaAssegnataA || '');
|
|
38
39
|
const rawMutuoPerc1 = input.primaCasaMutuoPerc1 === undefined ? 50 : input.primaCasaMutuoPerc1;
|
|
@@ -121,13 +122,14 @@ function calculateModel(input) {
|
|
|
121
122
|
if (aFam2 > 0.005) compensativeBenefits.push({ type: 'family', to: 2, amount: aFam2 });
|
|
122
123
|
if (primaCasaTransfer1to2 > 0.005) compensativeBenefits.push({ type: 'primary-home-mortgage', from: 1, to: 2, amount: primaCasaTransfer1to2 });
|
|
123
124
|
if (primaCasaTransfer2to1 > 0.005) compensativeBenefits.push({ type: 'primary-home-mortgage', from: 2, to: 1, amount: primaCasaTransfer2to1 });
|
|
125
|
+
if (primaCasaValoreLocativo > 0.005 && assigned !== '') compensativeBenefits.push({ type: 'primary-home-assignment', to: Number(assigned), amount: primaCasaValoreLocativo });
|
|
124
126
|
|
|
125
127
|
const post1 = disp1 - assegnoDa1a2 + assegnoDa2a1;
|
|
126
128
|
const post2 = disp2 - assegnoDa2a1 + assegnoDa1a2;
|
|
127
129
|
|
|
128
130
|
// Separation cost analysis (only active when speseConvivenza > 0)
|
|
129
131
|
const speseConvivenza = Math.max(0, toNumber(input.speseConvivenza));
|
|
130
|
-
const housingIdx = new Set([0, 1,
|
|
132
|
+
const housingIdx = new Set([0, 1, 6]); // Affitto, utenze, condominio
|
|
131
133
|
const housingUtility1 = c1Spese.reduce((acc, n, idx) => acc + (housingIdx.has(idx) ? toNumber(n) : 0), 0) + quotaMutuoSpese1;
|
|
132
134
|
const housingUtility2 = c2Spese.reduce((acc, n, idx) => acc + (housingIdx.has(idx) ? toNumber(n) : 0), 0) + quotaMutuoSpese2;
|
|
133
135
|
const housingUtilityNonColl = collocatario === 1 ? housingUtility2 : housingUtility1;
|
|
@@ -161,7 +163,7 @@ function calculateModel(input) {
|
|
|
161
163
|
quotaDiretta1, quotaDiretta2,
|
|
162
164
|
saldo1, saldo2,
|
|
163
165
|
assegnoBaseDa1a2, assegnoBaseDa2a1,
|
|
164
|
-
primaCasaMutuoEnabled, primaCasaMutuoImporto,
|
|
166
|
+
primaCasaMutuoEnabled, primaCasaValoreLocativo, primaCasaMutuoImporto,
|
|
165
167
|
primaCasaAssegnataA: assigned,
|
|
166
168
|
primaCasaMutuoPerc1, primaCasaMutuoPerc2,
|
|
167
169
|
primaCasaConsidered, primaCasaTransfer1to2, primaCasaTransfer2to1,
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
]
|
|
89
89
|
}
|
|
90
90
|
</script>
|
|
91
|
-
<link rel="stylesheet" href="styles.css" />
|
|
91
|
+
<link rel="stylesheet" href="styles.css?v=2.4.5" />
|
|
92
92
|
</head>
|
|
93
93
|
<body>
|
|
94
94
|
<div class="wrap">
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
<script src="supabase.min.js"></script>
|
|
627
627
|
<script src="fabric.min.js"></script>
|
|
628
628
|
<script src="html2pdf.bundle.min.js"></script>
|
|
629
|
-
<script src="app.js?v=2.4.
|
|
629
|
+
<script src="app.js?v=2.4.5"></script>
|
|
630
630
|
</body>
|
|
631
631
|
</html>
|
|
632
632
|
|
|
@@ -887,9 +887,26 @@
|
|
|
887
887
|
.extra-box-first-home {
|
|
888
888
|
position: relative;
|
|
889
889
|
overflow: hidden;
|
|
890
|
-
background:
|
|
891
|
-
|
|
892
|
-
|
|
890
|
+
background:
|
|
891
|
+
linear-gradient(160deg, rgba(255, 255, 255, 0.92), rgba(242, 252, 250, 0.96) 46%, rgba(246, 251, 255, 0.94)),
|
|
892
|
+
repeating-linear-gradient(135deg, rgba(27, 141, 127, 0.035) 0 10px, rgba(216, 154, 53, 0.03) 10px 20px);
|
|
893
|
+
border: 1px solid rgba(27, 141, 127, 0.2);
|
|
894
|
+
box-shadow: 0 8px 20px rgba(16, 88, 79, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.86);
|
|
895
|
+
transition: transform 0.26s ease, box-shadow 0.26s ease, border-color 0.26s ease;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
.extra-box-first-home:hover {
|
|
899
|
+
transform: translateY(-2px);
|
|
900
|
+
border-color: rgba(27, 141, 127, 0.32);
|
|
901
|
+
box-shadow: 0 14px 28px rgba(16, 88, 79, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
.extra-box-first-home::before {
|
|
905
|
+
content: "";
|
|
906
|
+
position: absolute;
|
|
907
|
+
inset: 0;
|
|
908
|
+
background: linear-gradient(115deg, rgba(255, 255, 255, 0.24), transparent 44%, rgba(61, 181, 160, 0.11) 72%, transparent 100%);
|
|
909
|
+
pointer-events: none;
|
|
893
910
|
}
|
|
894
911
|
|
|
895
912
|
.extra-box-first-home::after {
|
|
@@ -907,6 +924,21 @@
|
|
|
907
924
|
margin-right: 4px;
|
|
908
925
|
}
|
|
909
926
|
|
|
927
|
+
.extra-box-first-home .extra-box-title {
|
|
928
|
+
font-size: 0.96rem;
|
|
929
|
+
font-weight: 800;
|
|
930
|
+
letter-spacing: 0.25px;
|
|
931
|
+
color: #114942;
|
|
932
|
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
.extra-box-first-home .extra-box-note {
|
|
936
|
+
margin-top: 4px;
|
|
937
|
+
padding-left: 11px;
|
|
938
|
+
border-left: 3px solid rgba(27, 141, 127, 0.35);
|
|
939
|
+
color: #2f5853;
|
|
940
|
+
}
|
|
941
|
+
|
|
910
942
|
.extra-box-first-home .extra-grid {
|
|
911
943
|
position: relative;
|
|
912
944
|
z-index: 1;
|
|
@@ -914,12 +946,19 @@
|
|
|
914
946
|
}
|
|
915
947
|
|
|
916
948
|
.extra-box-first-home .field {
|
|
917
|
-
|
|
949
|
+
border-radius: 12px;
|
|
950
|
+
padding: 8px 9px 7px;
|
|
951
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.62), rgba(241, 249, 247, 0.58));
|
|
952
|
+
border: 1px solid rgba(27, 141, 127, 0.12);
|
|
953
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
954
|
+
transition: transform 0.2s ease, filter 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
|
|
918
955
|
}
|
|
919
956
|
|
|
920
957
|
.extra-box-first-home .field:focus-within {
|
|
921
958
|
transform: translateY(-1px);
|
|
922
959
|
filter: saturate(1.04);
|
|
960
|
+
border-color: rgba(27, 141, 127, 0.32);
|
|
961
|
+
box-shadow: 0 8px 16px rgba(22, 104, 93, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.84);
|
|
923
962
|
}
|
|
924
963
|
|
|
925
964
|
.extra-box-first-home .field input[type="number"],
|
|
@@ -929,6 +968,15 @@
|
|
|
929
968
|
transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
|
|
930
969
|
}
|
|
931
970
|
|
|
971
|
+
.extra-box-first-home #primaCasaMutuoEnabled {
|
|
972
|
+
width: 20px;
|
|
973
|
+
height: 20px;
|
|
974
|
+
accent-color: #0e9886;
|
|
975
|
+
margin-top: 6px;
|
|
976
|
+
box-shadow: 0 0 0 4px rgba(14, 152, 134, 0.14);
|
|
977
|
+
border-radius: 6px;
|
|
978
|
+
}
|
|
979
|
+
|
|
932
980
|
.extra-box-first-home .field input[type="number"]:focus,
|
|
933
981
|
.extra-box-first-home .field select:focus {
|
|
934
982
|
border-color: rgba(27, 141, 127, 0.4);
|
|
@@ -951,7 +999,7 @@
|
|
|
951
999
|
grid-template-columns: minmax(0, 1fr) minmax(180px, 2fr) minmax(0, 1fr);
|
|
952
1000
|
gap: 10px;
|
|
953
1001
|
align-items: center;
|
|
954
|
-
box-shadow: 0
|
|
1002
|
+
box-shadow: 0 10px 18px rgba(27, 141, 127, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.65);
|
|
955
1003
|
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
956
1004
|
}
|
|
957
1005
|
|
|
@@ -966,7 +1014,7 @@
|
|
|
966
1014
|
}
|
|
967
1015
|
|
|
968
1016
|
.mortgage-split-slider:hover {
|
|
969
|
-
box-shadow: 0
|
|
1017
|
+
box-shadow: 0 14px 28px rgba(27, 141, 127, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.86);
|
|
970
1018
|
border-color: rgba(27, 141, 127, 0.3);
|
|
971
1019
|
}
|
|
972
1020
|
|
|
@@ -1165,8 +1213,17 @@
|
|
|
1165
1213
|
}
|
|
1166
1214
|
|
|
1167
1215
|
#primaCasaMutuoSplitInfo {
|
|
1168
|
-
margin-top:
|
|
1169
|
-
font-size: 0.
|
|
1216
|
+
margin-top: 7px;
|
|
1217
|
+
font-size: 0.79rem;
|
|
1218
|
+
font-weight: 700;
|
|
1219
|
+
color: #174e47;
|
|
1220
|
+
background: linear-gradient(90deg, rgba(22, 163, 150, 0.12), rgba(216, 154, 53, 0.12));
|
|
1221
|
+
border: 1px solid rgba(22, 163, 150, 0.14);
|
|
1222
|
+
border-radius: 999px;
|
|
1223
|
+
padding: 4px 10px;
|
|
1224
|
+
display: inline-flex;
|
|
1225
|
+
align-items: center;
|
|
1226
|
+
gap: 4px;
|
|
1170
1227
|
}
|
|
1171
1228
|
|
|
1172
1229
|
.label-row {
|