From 750cadf6cbeca152361963e9d3aee3b825eaad5a Mon Sep 17 00:00:00 2001
From: Bastien DUMONT <bdumont@grandlyon.com>
Date: Mon, 18 Dec 2023 16:24:57 +0000
Subject: [PATCH] chore: mark inputs as required

---
 src/app/shared/components/index.ts                        | 2 +-
 src/app/shared/components/svg-icon/svg-icon.component.ts  | 8 ++++++--
 src/app/shared/components/v3/button/button.component.ts   | 6 +++---
 .../v3/button/icon-button/icon-button.component.ts        | 6 +++---
 .../shared/components/v3/checkbox/checkbox.component.ts   | 2 +-
 .../shared/components/v3/collapse/collapse.component.ts   | 4 ++++
 .../v3/label-checkbox/label-checkbox.component.ts         | 6 +++---
 src/app/shared/components/v3/modal/modal.component.ts     | 4 ++--
 src/app/shared/components/v3/radio/radio.component.ts     | 2 +-
 .../components/v3/search-bar/search-bar.component.ts      | 4 +++-
 src/app/shared/components/v3/switch/switch.component.ts   | 4 ++--
 .../v3/{tag => }/tag-item/tag-item.component.html         | 0
 .../v3/{tag => }/tag-item/tag-item.component.scss         | 0
 .../v3/{tag => }/tag-item/tag-item.component.ts           | 0
 .../components/v3/{tag => }/tag-item/tag-item.stories.ts  | 2 +-
 15 files changed, 30 insertions(+), 20 deletions(-)
 rename src/app/shared/components/v3/{tag => }/tag-item/tag-item.component.html (100%)
 rename src/app/shared/components/v3/{tag => }/tag-item/tag-item.component.scss (100%)
 rename src/app/shared/components/v3/{tag => }/tag-item/tag-item.component.ts (100%)
 rename src/app/shared/components/v3/{tag => }/tag-item/tag-item.stories.ts (96%)

diff --git a/src/app/shared/components/index.ts b/src/app/shared/components/index.ts
index fd6385033..af03d1b8e 100644
--- a/src/app/shared/components/index.ts
+++ b/src/app/shared/components/index.ts
@@ -28,7 +28,7 @@ import { ModalV3Component } from './v3/modal/modal.component';
 import { RadioV3Component } from './v3/radio/radio.component';
 import { SearchBarV3Component } from './v3/search-bar/search-bar.component';
 import { SwitchComponent } from './v3/switch/switch.component';
-import { TagItemV3Component } from './v3/tag/tag-item/tag-item.component';
+import { TagItemV3Component } from './v3/tag-item/tag-item.component';
 import { TextareaV3Component } from './v3/textarea/textarea.component';
 
 export {
diff --git a/src/app/shared/components/svg-icon/svg-icon.component.ts b/src/app/shared/components/svg-icon/svg-icon.component.ts
index 59fd5650f..ec06e8077 100644
--- a/src/app/shared/components/svg-icon/svg-icon.component.ts
+++ b/src/app/shared/components/svg-icon/svg-icon.component.ts
@@ -6,9 +6,13 @@ import { Component, Input } from '@angular/core';
   styleUrls: ['./svg-icon.component.scss'],
 })
 export class SvgIconComponent {
-  @Input() icon: string;
+  /** Id of svg to use */
+  @Input({ required: true }) icon: string;
+
+  /** Folder of the sprite to use */
+  @Input({ required: true }) type: string;
+
   @Input() iconClass: string;
-  @Input() type: string;
   @Input() iconColor = 'none';
   @Input() title: string = null;
 }
diff --git a/src/app/shared/components/v3/button/button.component.ts b/src/app/shared/components/v3/button/button.component.ts
index 58c195f63..1402a9f78 100644
--- a/src/app/shared/components/v3/button/button.component.ts
+++ b/src/app/shared/components/v3/button/button.component.ts
@@ -7,12 +7,12 @@ import { ButtonTypeV3 } from './button-type.enum';
   styleUrls: ['./button.component.scss'],
 })
 export class ButtonV3Component {
+  /** Button label */
+  @Input({ required: true }) label: string;
+
   /** HTML type of the button */
   @Input() type: 'submit' | 'button' | 'reset' = 'button';
 
-  /** Button label */
-  @Input() label = 'Bouton';
-
   /** What variant should be the button ? */
   @Input() variant?: ButtonTypeV3 = ButtonTypeV3.Primary;
 
diff --git a/src/app/shared/components/v3/button/icon-button/icon-button.component.ts b/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
index 5e7d0dea3..ca6afba81 100644
--- a/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
+++ b/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
@@ -7,6 +7,9 @@ import { ButtonTypeV3 } from '../button-type.enum';
   styleUrls: ['../button.component.scss'],
 })
 export class IconButtonV3Component {
+  /** Icon name */
+  @Input({ required: true }) iconName: string;
+
   /** HTML type of the button */
   @Input() type: 'submit' | 'button' | 'reset' = 'button';
 
@@ -22,9 +25,6 @@ export class IconButtonV3Component {
   /** Folder of the icon ex: assets/ico */
   @Input() iconFolder = 'ico';
 
-  /** Icon name */
-  @Input() iconName: string;
-
   /** Icon color, defaults to none as the svg-icon does */
   @Input() iconColor = 'none';
 
diff --git a/src/app/shared/components/v3/checkbox/checkbox.component.ts b/src/app/shared/components/v3/checkbox/checkbox.component.ts
index 8fb73ea6f..6328818c2 100644
--- a/src/app/shared/components/v3/checkbox/checkbox.component.ts
+++ b/src/app/shared/components/v3/checkbox/checkbox.component.ts
@@ -10,7 +10,7 @@ export class CheckboxV3Component {
   @Input() id: string;
 
   /** Checked ? */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** Indeterminate (half-checked) ? */
   @Input() indeterminate?: boolean;
diff --git a/src/app/shared/components/v3/collapse/collapse.component.ts b/src/app/shared/components/v3/collapse/collapse.component.ts
index 9680242ed..2d4275e96 100644
--- a/src/app/shared/components/v3/collapse/collapse.component.ts
+++ b/src/app/shared/components/v3/collapse/collapse.component.ts
@@ -13,11 +13,15 @@ import { CollapseType } from './collapse.type';
 export class CollapseComponent implements AfterContentInit {
   @ContentChild(CollapseHeaderComponent) title: CollapseHeaderComponent;
   @ContentChild(CollapseContentComponent) content: CollapseContentComponent;
+
   @Input() variant?: CollapseType = CollapseType.Regular;
+
   /** Adapts border-radius and right padding */
   @Input() size?: 'small' | 'medium' = 'small';
+
   /** Box-shadow when expanded? */
   @Input() boxShadow? = false;
+
   /** Default expanded value */
   @Input() expanded? = false;
 
diff --git a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
index b8662ab3c..5e8b003d5 100644
--- a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
+++ b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
@@ -7,15 +7,15 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
 })
 export class LabelCheckboxV3Component {
   /** Label text to display */
-  @Input() label: string;
+  @Input({ required: true }) label: string;
 
   /** HTML for that will control checkbox */
-  @Input() for: string;
+  @Input({ required: true }) for: string;
 
   /** What size should the checkbox be ? */
   @Input() size?: 'small' | 'medium' = 'small';
 
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   @Input() indeterminate?: boolean;
 
diff --git a/src/app/shared/components/v3/modal/modal.component.ts b/src/app/shared/components/v3/modal/modal.component.ts
index 83a6f73cf..5fcdd7c99 100644
--- a/src/app/shared/components/v3/modal/modal.component.ts
+++ b/src/app/shared/components/v3/modal/modal.component.ts
@@ -7,8 +7,8 @@ import { ButtonTypeV3 } from '../button/button-type.enum';
   styleUrls: ['./modal.component.scss'],
 })
 export class ModalV3Component {
-  /* Is modal openned ? */
-  @Input() public opened: boolean;
+  /* Is modal opened ? */
+  @Input({ required: true }) public opened: boolean;
 
   /* Content of the modal (between title and buttons) */
   @Input() public content: string;
diff --git a/src/app/shared/components/v3/radio/radio.component.ts b/src/app/shared/components/v3/radio/radio.component.ts
index 2d0e01ba6..3ee99023f 100644
--- a/src/app/shared/components/v3/radio/radio.component.ts
+++ b/src/app/shared/components/v3/radio/radio.component.ts
@@ -10,7 +10,7 @@ export class RadioV3Component {
   @Input() id: string;
 
   /** Checked ? */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** What size should the checkbox be ? */
   @Input() size?: 'small' | 'medium' = 'medium';
diff --git a/src/app/shared/components/v3/search-bar/search-bar.component.ts b/src/app/shared/components/v3/search-bar/search-bar.component.ts
index 2c8f5db93..70586f4a3 100644
--- a/src/app/shared/components/v3/search-bar/search-bar.component.ts
+++ b/src/app/shared/components/v3/search-bar/search-bar.component.ts
@@ -8,9 +8,11 @@ import { ButtonTypeV3 } from '../button/button-type.enum';
 })
 export class SearchBarV3Component {
   @Input() placeholder = 'Rechercher';
-  @Input() value = '';
+  @Input({ required: true }) value = '';
+
   /** Triggers when input changes */
   @Output() valueChange = new EventEmitter<string>();
+
   /** Triggers when button is clicked or Enter is pressed on input */
   @Output() search = new EventEmitter<string>();
 
diff --git a/src/app/shared/components/v3/switch/switch.component.ts b/src/app/shared/components/v3/switch/switch.component.ts
index 962a0ba5f..73cce9161 100644
--- a/src/app/shared/components/v3/switch/switch.component.ts
+++ b/src/app/shared/components/v3/switch/switch.component.ts
@@ -7,10 +7,10 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
 })
 export class SwitchComponent {
   /** Label text to display */
-  @Input() label: string;
+  @Input({ required: true }) label: string;
 
   /** Switch checked value */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** Status text for the switch */
   @Input() checkedText?: string = 'Activé';
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.html b/src/app/shared/components/v3/tag-item/tag-item.component.html
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.html
rename to src/app/shared/components/v3/tag-item/tag-item.component.html
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss b/src/app/shared/components/v3/tag-item/tag-item.component.scss
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.scss
rename to src/app/shared/components/v3/tag-item/tag-item.component.scss
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.ts b/src/app/shared/components/v3/tag-item/tag-item.component.ts
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.ts
rename to src/app/shared/components/v3/tag-item/tag-item.component.ts
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts b/src/app/shared/components/v3/tag-item/tag-item.stories.ts
similarity index 96%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts
rename to src/app/shared/components/v3/tag-item/tag-item.stories.ts
index 7ffe085f8..00bc172cc 100644
--- a/src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts
+++ b/src/app/shared/components/v3/tag-item/tag-item.stories.ts
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
 import { EventEmitter } from '@angular/core';
 import type { Meta, StoryObj } from '@storybook/angular';
 import { moduleMetadata } from '@storybook/angular';
-import { SvgIconComponent } from '../../../svg-icon/svg-icon.component';
+import { SvgIconComponent } from '../../svg-icon/svg-icon.component';
 import { TagItemV3Component } from './tag-item.component';
 
 // More on how to set up stories at: https://storybook.js.org/docs/angular/writing-stories/introduction
-- 
GitLab