chore: add husky pre-commit hook and lint-staged configuration

- Created a pre-commit hook in .husky to run lint-staged.
- Added .lintstagedrc.mjs to format frontend files with Prettier and apply Spotless to backend Java files.
- Introduced .prettierignore to exclude specific directories from formatting.
This commit is contained in:
nessar committed 2026-08-17 14:18:16 +02:00
1 parent 5d2d85aa8c
commit 878da155bd
564 files changed
+61467 -47179

No files matched your search

@@ -1,157 +1,173 @@
<section
class="revision-preview"
aria-label="Prévision de révision annuelle du loyer"
[attr.aria-busy]="pending()"
class="revision-preview"
aria-label="Prévision de révision annuelle du loyer"
[attr.aria-busy]="pending()"
>
<header>
<h3>Révision annuelle du loyer</h3>
<p>
Calculez le plafond applicable avant toute décision. Aucun nouveau loyer ne sera appliqué.
</p>
</header>
<header>
<h3>Révision annuelle du loyer</h3>
<p>
Calculez le plafond applicable avant toute décision. Aucun nouveau loyer ne sera
appliqué.
</p>
</header>
<form [formRoot]="requestForm" (submit)="prepare(); $event.preventDefault()">
<fieldset [disabled]="pending()">
<details class="advanced-options">
<summary>Changer la série INSEE</summary>
<label>
<span>Nouvelle série officielle</span>
<select class="series-override" [formField]="requestForm.seriesIdOverride">
<option value="">Série prévue dans le bail</option>
<option value="001515333">Métropole — 001515333</option>
<option value="010760507">Corse — 010760507</option>
<option value="010760509">Départements d’outre-mer (article 73) — 010760509</option>
</select>
</label>
@if (requestModel().seriesIdOverride.trim()) {
<label class="attestation">
<input
class="series-confirm"
type="checkbox"
[formField]="requestForm.seriesOverrideConfirmed"
/>
<span>Je confirme remplacer la série INSEE prévue par le bail.</span>
</label>
}
</details>
<form [formRoot]="requestForm" (submit)="prepare(); $event.preventDefault()">
<fieldset [disabled]="pending()">
<details class="advanced-options">
<summary>Changer la série INSEE</summary>
<label>
<span>Nouvelle série officielle</span>
<select class="series-override" [formField]="requestForm.seriesIdOverride">
<option value="">Série prévue dans le bail</option>
<option value="001515333">Métropole — 001515333</option>
<option value="010760507">Corse — 010760507</option>
<option value="010760509">
Départements d’outre-mer (article 73) — 010760509
</option>
</select>
</label>
@if (requestModel().seriesIdOverride.trim()) {
<label class="attestation">
<input
class="series-confirm"
type="checkbox"
[formField]="requestForm.seriesOverrideConfirmed"
/>
<span>Je confirme remplacer la série INSEE prévue par le bail.</span>
</label>
}
</details>
@if (manualRequired()) {
<div class="manual-indices">
<h4>Indices IRL saisis manuellement</h4>
<div class="field-grid">
<label>
<span>Indice précédent</span>
<input
class="previous-index"
type="number"
step="0.01"
[formField]="requestForm.previousIndex"
/>
</label>
<label>
<span>Nouvel indice</span>
<input
class="new-index"
type="number"
step="0.01"
[formField]="requestForm.newIndex"
/>
</label>
</div>
<label class="attestation">
<input
class="manual-confirm"
type="checkbox"
[formField]="requestForm.manualIndicesConfirmed"
/>
<span>J’atteste avoir vérifié ces deux indices IRL officiels.</span>
</label>
</div>
}
@if (manualRequired()) {
<div class="manual-indices">
<h4>Indices IRL saisis manuellement</h4>
<div class="field-grid">
<label>
<span>Indice précédent</span>
<input
class="previous-index"
type="number"
step="0.01"
[formField]="requestForm.previousIndex"
/>
</label>
<label>
<span>Nouvel indice</span>
<input
class="new-index"
type="number"
step="0.01"
[formField]="requestForm.newIndex"
/>
</label>
</div>
<label class="attestation">
<input
class="manual-confirm"
type="checkbox"
[formField]="requestForm.manualIndicesConfirmed"
/>
<span>J’atteste avoir vérifié ces deux indices IRL officiels.</span>
</label>
</div>
}
@if (validationError()) {
<p class="operation-error" role="alert">{{ validationError() }}</p>
}
<button mat-flat-button type="submit" class="preview-submit" [disabled]="pending()">
{{ pending() ? 'Calcul en cours…' : preview() ? 'Recalculer' : 'Préparer la révision' }}
</button>
</fieldset>
</form>
@if (validationError()) {
<p class="operation-error" role="alert">{{ validationError() }}</p>
}
<button mat-flat-button type="submit" class="preview-submit" [disabled]="pending()">
{{
pending()
? 'Calcul en cours…'
: preview()
? 'Recalculer'
: 'Préparer la révision'
}}
</button>
</fieldset>
</form>
@if (error()) {
<div class="operation-error" role="alert">
<p>{{ error() }}</p>
@if (!manualRequired()) {
<button mat-button type="button" class="retry-preview" (click)="prepare()">
Réessayer
</button>
}
</div>
}
@if (error()) {
<div class="operation-error" role="alert">
<p>{{ error() }}</p>
@if (!manualRequired()) {
<button mat-button type="button" class="retry-preview" (click)="prepare()">
Réessayer
</button>
}
</div>
}
@if (preview(); as result) {
<article class="preview-result">
<h4>Simulation de révision</h4>
<p class="source-label">Source : {{ sourceLabel(result.indexSource) }}</p>
<dl>
<div>
<dt>Date annuelle</dt>
<dd>{{ civilDate(result.annualRevisionDate) }}</dd>
</div>
<div>
<dt>Date limite de demande</dt>
<dd>{{ civilDate(result.requestDeadline) }}</dd>
</div>
<div>
<dt>Série et référence</dt>
<dd>
{{ result.seriesId }} · T{{ result.referenceQuarter }} ·
{{ result.previousIndexYear }} → {{ result.newIndexYear }}
@if (result.seriesOverridden) {
<span>Série remplacée après attestation.</span>
}
</dd>
</div>
<div>
<dt>Plafond du nouveau loyer</dt>
<dd>{{ currency(result.rentCeiling) }}</dd>
</div>
<div>
<dt>Plafond des charges</dt>
<dd>
{{ result.chargeCeiling === null ? 'Non applicable' : currency(result.chargeCeiling) }}
</dd>
</div>
</dl>
<p class="formula">
{{ currency(result.previousRent) }} × {{ index(result.newIndex) }} ÷
{{ index(result.previousIndex) }} = {{ currency(result.rentCeiling) }}
</p>
@if (result.chargeCeiling !== null) {
<p class="formula charge-formula">
{{ currency(result.previousCharges) }} × {{ index(result.newIndex) }} ÷
{{ index(result.previousIndex) }} = {{ currency(result.chargeCeiling) }}
</p>
}
@if (result.warnings.length) {
<div class="preview-warnings" role="status">
<strong>Avertissements</strong>
<ul>
@for (warning of result.warnings; track warning.code + ':' + warning.ruleVersion) {
<li>
{{ warningLabel(warning.code) }}
<span>Version de règle : {{ warning.ruleVersion }}</span>
</li>
}
</ul>
</div>
}
</article>
}
@if (preview(); as result) {
<article class="preview-result">
<h4>Simulation de révision</h4>
<p class="source-label">Source : {{ sourceLabel(result.indexSource) }}</p>
<dl>
<div>
<dt>Date annuelle</dt>
<dd>{{ civilDate(result.annualRevisionDate) }}</dd>
</div>
<div>
<dt>Date limite de demande</dt>
<dd>{{ civilDate(result.requestDeadline) }}</dd>
</div>
<div>
<dt>Série et référence</dt>
<dd>
{{ result.seriesId }} · T{{ result.referenceQuarter }} ·
{{ result.previousIndexYear }} → {{ result.newIndexYear }}
@if (result.seriesOverridden) {
<span>Série remplacée après attestation.</span>
}
</dd>
</div>
<div>
<dt>Plafond du nouveau loyer</dt>
<dd>{{ currency(result.rentCeiling) }}</dd>
</div>
<div>
<dt>Plafond des charges</dt>
<dd>
{{
result.chargeCeiling === null
? 'Non applicable'
: currency(result.chargeCeiling)
}}
</dd>
</div>
</dl>
<p class="formula">
{{ currency(result.previousRent) }} × {{ index(result.newIndex) }} ÷
{{ index(result.previousIndex) }} = {{ currency(result.rentCeiling) }}
</p>
@if (result.chargeCeiling !== null) {
<p class="formula charge-formula">
{{ currency(result.previousCharges) }} × {{ index(result.newIndex) }} ÷
{{ index(result.previousIndex) }} = {{ currency(result.chargeCeiling) }}
</p>
}
@if (result.warnings.length) {
<div class="preview-warnings" role="status">
<strong>Avertissements</strong>
<ul>
@for (
warning of result.warnings;
track warning.code + ':' + warning.ruleVersion
) {
<li>
{{ warningLabel(warning.code) }}
<span>Version de règle : {{ warning.ruleVersion }}</span>
</li>
}
</ul>
</div>
}
</article>
}
<app-rent-revision-proposals
[leaseId]="leaseId()"
[preview]="preview()"
[previewRequest]="lastSuccessfulRequest()"
/>
<app-rent-revision-proposals
[leaseId]="leaseId()"
[preview]="preview()"
[previewRequest]="lastSuccessfulRequest()"
/>
</section>