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