From e9fcf6133b23b42433b44742f2854bb99486ac89 Mon Sep 17 00:00:00 2001 From: Laszlo Ilonka Date: Tue, 18 Aug 2026 14:14:44 +0200 Subject: [PATCH] feat(chip): add chip examples IDS-2316 --- .../chip-appearance-example.component.html | 4 + .../chip-appearance-example.component.ts | 9 ++ .../components-example/chip/chip-examples.ts | 96 +++++++++++++++++++ .../chip-group-example.component.html | 13 +++ .../chip-group-example.component.ts | 12 +++ .../chip-icon-example.component.html | 24 +++++ .../chip-icon-example.component.ts | 20 ++++ .../chip-interactive-example.component.html | 5 + .../chip-interactive-example.component.ts | 9 ++ .../chip-removable-example.component.html | 7 ++ .../chip-removable-example.component.ts | 20 ++++ .../chip-size-example.component.html | 6 ++ .../chip-size-example.component.ts | 9 ++ .../chip-variants-example.component.html | 7 ++ .../chip-variants-example.component.ts | 9 ++ .../pages/button/button-demo.component.html | 2 +- .../app/pages/chip/chip-demo.component.html | 6 ++ .../src/app/pages/chip/chip-demo.component.ts | 4 + projects/demo/src/assets/i18n/en.json | 30 ++++++ projects/demo/src/assets/i18n/hu.json | 30 ++++++ 20 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-examples.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.ts create mode 100644 projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.html create mode 100644 projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.ts diff --git a/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.html b/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.html new file mode 100644 index 00000000..4d51d2b9 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.html @@ -0,0 +1,4 @@ +
+ Filled + Outlined +
diff --git a/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.ts b/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.ts new file mode 100644 index 00000000..2b930736 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-appearance-example/chip-appearance-example.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-appearance-example', + imports: [IdsChipComponent], + templateUrl: './chip-appearance-example.component.html', +}) +export class ChipAppearanceExampleComponent {} diff --git a/projects/demo/src/app/components-example/chip/chip-examples.ts b/projects/demo/src/app/components-example/chip/chip-examples.ts new file mode 100644 index 00000000..0297c66c --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-examples.ts @@ -0,0 +1,96 @@ +import { ChipAppearanceExampleComponent } from './chip-appearance-example/chip-appearance-example.component'; +import { ChipGroupExampleComponent } from './chip-group-example/chip-group-example.component'; +import { ChipIconExampleComponent } from './chip-icon-example/chip-icon-example.component'; +import { ChipInteractiveExampleComponent } from './chip-interactive-example/chip-interactive-example.component'; +import { ChipRemovableExampleComponent } from './chip-removable-example/chip-removable-example.component'; +import { ChipSizeExampleComponent } from './chip-size-example/chip-size-example.component'; +import { ChipVariantsExampleComponent } from './chip-variants-example/chip-variants-example.component'; + +import { IdsExampleDef } from '../../shared/ids-example-viewer/ids-example.model'; + +export const CHIP_EXAMPLES: IdsExampleDef[] = [ + { + id: 'chip-appearances', + title: 'EXAMPLES.CHIP.APPEARANCES.TITLE', + description: 'EXAMPLES.CHIP.APPEARANCES.DESCRIPTION', + component: ChipAppearanceExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-appearance-example/chip-appearance-example.component.html', + TSpath: 'assets/examples/chip/chip-appearance-example/chip-appearance-example.component.ts', + }, + ], + }, + { + id: 'chip-variants', + title: 'EXAMPLES.CHIP.VARIANTS.TITLE', + description: 'EXAMPLES.CHIP.VARIANTS.DESCRIPTION', + component: ChipVariantsExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-variants-example/chip-variants-example.component.html', + TSpath: 'assets/examples/chip/chip-variants-example/chip-variants-example.component.ts', + }, + ], + }, + { + id: 'chip-sizes', + title: 'EXAMPLES.CHIP.SIZES.TITLE', + description: 'EXAMPLES.CHIP.SIZES.DESCRIPTION', + component: ChipSizeExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-size-example/chip-size-example.component.html', + TSpath: 'assets/examples/chip/chip-size-example/chip-size-example.component.ts', + }, + ], + }, + { + id: 'chip-interactive', + title: 'EXAMPLES.CHIP.INTERACTIVE.TITLE', + description: 'EXAMPLES.CHIP.INTERACTIVE.DESCRIPTION', + component: ChipInteractiveExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-interactive-example/chip-interactive-example.component.html', + TSpath: 'assets/examples/chip/chip-interactive-example/chip-interactive-example.component.ts', + }, + ], + }, + { + id: 'chip-icon', + title: 'EXAMPLES.CHIP.ICONS.TITLE', + description: 'EXAMPLES.CHIP.ICONS.DESCRIPTION', + component: ChipIconExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-icon-example/chip-icon-example.component.html', + TSpath: 'assets/examples/chip/chip-icon-example/chip-icon-example.component.ts', + }, + ], + }, + { + id: 'chip-removable', + title: 'EXAMPLES.CHIP.REMOVABLE.TITLE', + description: 'EXAMPLES.CHIP.REMOVABLE.DESCRIPTION', + component: ChipRemovableExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-removable-example/chip-removable-example.component.html', + TSpath: 'assets/examples/chip/chip-removable-example/chip-removable-example.component.ts', + }, + ], + }, + { + id: 'chip-group', + title: 'EXAMPLES.CHIP.CHIP_GROUP.TITLE', + description: 'EXAMPLES.CHIP.CHIP_GROUP.DESCRIPTION', + component: ChipGroupExampleComponent, + files: [ + { + HTMLpath: 'assets/examples/chip/chip-group-example/chip-group-example.component.html', + TSpath: 'assets/examples/chip/chip-group-example/chip-group-example.component.ts', + }, + ], + }, +]; diff --git a/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.html b/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.html new file mode 100644 index 00000000..0f7a312d --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.html @@ -0,0 +1,13 @@ +
+ + Carrot + Onion + Mushroom + + + + + + + +
diff --git a/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.ts b/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.ts new file mode 100644 index 00000000..13953d9d --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-group-example/chip-group-example.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent, IdsChipGroupComponent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-group-example', + imports: [ + IdsChipComponent, + IdsChipGroupComponent, + ], + templateUrl: './chip-group-example.component.html', +}) +export class ChipGroupExampleComponent {} diff --git a/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.html b/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.html new file mode 100644 index 00000000..432b9229 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.html @@ -0,0 +1,24 @@ +
+ + + Scarlett Johansson + + Avatar + + + + + Leading icon + + + + Trailing button + + +
diff --git a/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.ts b/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.ts new file mode 100644 index 00000000..dfe7cc62 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-icon-example/chip-icon-example.component.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; +import { IdsAvatarComponent, IdsAvatarImageDirective } from '@i-cell/ids-angular/avatar'; +import { IdsChipComponent } from '@i-cell/ids-angular/chip'; +import { IdsPrefixDirective } from '@i-cell/ids-angular/forms'; +import { IdsIconComponent } from '@i-cell/ids-angular/icon'; +import { IdsIconButtonComponent } from '@i-cell/ids-angular/icon-button'; + +@Component({ + selector: 'app-chip-icon-example', + imports: [ + IdsAvatarComponent, + IdsAvatarImageDirective, + IdsChipComponent, + IdsPrefixDirective, + IdsIconComponent, + IdsIconButtonComponent, + ], + templateUrl: './chip-icon-example.component.html', +}) +export class ChipIconExampleComponent {} diff --git a/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.html b/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.html new file mode 100644 index 00000000..e18868d4 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.html @@ -0,0 +1,5 @@ +
+ Non-interactive + + +
diff --git a/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.ts b/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.ts new file mode 100644 index 00000000..0716c1f4 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-interactive-example/chip-interactive-example.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-interactive-example', + imports: [IdsChipComponent], + templateUrl: './chip-interactive-example.component.html', +}) +export class ChipInteractiveExampleComponent {} diff --git a/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.html b/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.html new file mode 100644 index 00000000..ea03265e --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.html @@ -0,0 +1,7 @@ +
+ @for (chip of chips; track chip) { + + } +
diff --git a/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.ts b/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.ts new file mode 100644 index 00000000..94d30ce7 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-removable-example/chip-removable-example.component.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent, IdsChipRemoveEvent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-removable-example', + imports: [IdsChipComponent], + templateUrl: './chip-removable-example.component.html', +}) +export class ChipRemovableExampleComponent { + public chips = [ + 'Carrot', + 'Onion', + 'Mushroom', + ]; + + public onRemoved(event: IdsChipRemoveEvent, index: number): void { + console.info('chip removed:', event.chip.id()); + this.chips = this.chips.toSpliced(index, 1); + } +} diff --git a/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.html b/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.html new file mode 100644 index 00000000..6839985b --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.html @@ -0,0 +1,6 @@ +
+ Dense + Compact + Comfortable + Spacious +
diff --git a/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.ts b/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.ts new file mode 100644 index 00000000..f3f2b9b5 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-size-example/chip-size-example.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-size-example', + imports: [IdsChipComponent], + templateUrl: './chip-size-example.component.html', +}) +export class ChipSizeExampleComponent {} diff --git a/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.html b/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.html new file mode 100644 index 00000000..cff83e7e --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.html @@ -0,0 +1,7 @@ +
+ Primary + Secondary + Surface + Light + Dark +
diff --git a/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.ts b/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.ts new file mode 100644 index 00000000..4c963d71 --- /dev/null +++ b/projects/demo/src/app/components-example/chip/chip-variants-example/chip-variants-example.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; +import { IdsChipComponent } from '@i-cell/ids-angular/chip'; + +@Component({ + selector: 'app-chip-variants-example', + imports: [IdsChipComponent], + templateUrl: './chip-variants-example.component.html', +}) +export class ChipVariantsExampleComponent {} diff --git a/projects/demo/src/app/pages/button/button-demo.component.html b/projects/demo/src/app/pages/button/button-demo.component.html index 86ae64e0..53b12247 100644 --- a/projects/demo/src/app/pages/button/button-demo.component.html +++ b/projects/demo/src/app/pages/button/button-demo.component.html @@ -92,4 +92,4 @@

{{ "COMMON.GROUPED" | translate }}

@for (example of buttonExamples; track example.id) { } - \ No newline at end of file + diff --git a/projects/demo/src/app/pages/chip/chip-demo.component.html b/projects/demo/src/app/pages/chip/chip-demo.component.html index 743e5a55..0a03bf4c 100644 --- a/projects/demo/src/app/pages/chip/chip-demo.component.html +++ b/projects/demo/src/app/pages/chip/chip-demo.component.html @@ -163,3 +163,9 @@

{{ "COMMON.GROUPED" | translate }}

+ +
+ @for (example of chipExamples; track example.id) { + + } +
diff --git a/projects/demo/src/app/pages/chip/chip-demo.component.ts b/projects/demo/src/app/pages/chip/chip-demo.component.ts index fc96f144..d47cc3d1 100644 --- a/projects/demo/src/app/pages/chip/chip-demo.component.ts +++ b/projects/demo/src/app/pages/chip/chip-demo.component.ts @@ -4,6 +4,8 @@ import { ControlTableComponent } from '../../components/control-table/control-ta import { DemoAndCodeComponent } from '../../components/tabs/demo-and-code/demo-and-code.component'; import { TryoutControlComponent } from '../../components/tryout/tryout-controls.component'; import { TryoutComponent } from '../../components/tryout/tryout.component'; +import { CHIP_EXAMPLES } from '../../components-example/chip/chip-examples'; +import { IdsExampleViewerComponent } from '../../shared/ids-example-viewer/ids-example-viewer.component'; import { Component, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; @@ -29,6 +31,7 @@ import { TranslateModule } from '@ngx-translate/core'; DemoAndCodeComponent, TryoutControlComponent, ControlTableComponent, + IdsExampleViewerComponent, ], templateUrl: './chip-demo.component.html', styleUrls: [ @@ -38,4 +41,5 @@ import { TranslateModule } from '@ngx-translate/core'; }) export class ChipDemoComponent { protected _chipDemoService = inject(ChipDemoService); + public readonly chipExamples = CHIP_EXAMPLES; } diff --git a/projects/demo/src/assets/i18n/en.json b/projects/demo/src/assets/i18n/en.json index 3ffa9882..9cd27856 100644 --- a/projects/demo/src/assets/i18n/en.json +++ b/projects/demo/src/assets/i18n/en.json @@ -294,6 +294,36 @@ "FOOTER_BUTTON": "Learn more" } } + }, + "CHIP": { + "APPEARANCES": { + "TITLE": "Chip appearances", + "DESCRIPTION": "The two chip appearances: filled (default) and outlined." + }, + "VARIANTS": { + "TITLE": "Chip variants", + "DESCRIPTION": "Chips with different color variants: primary, secondary, surface (default), light, and dark." + }, + "SIZES": { + "TITLE": "Chip sizes", + "DESCRIPTION": "Chips with different sizes: dense, compact (default), comfortable and spacious." + }, + "INTERACTIVE": { + "TITLE": "Interactive chips", + "DESCRIPTION": "Use the ids-chip element for non-interactive chips, or the button[idsChip] selector for interactive chips. Interactive chips can also be disabled." + }, + "ICONS": { + "TITLE": "Chip with icons", + "DESCRIPTION": "Chips can include an avatar, a leading icon, and/or a trailing icon button." + }, + "REMOVABLE": { + "TITLE": "Removable chips", + "DESCRIPTION": "Interactive chips can be made removable. The removed event is emitted when the close button is clicked." + }, + "CHIP_GROUP": { + "TITLE": "Chip group", + "DESCRIPTION": "Chips can be grouped together. Appearance, size and disabled state are inherited from the group." + } } } } diff --git a/projects/demo/src/assets/i18n/hu.json b/projects/demo/src/assets/i18n/hu.json index 5ffa1001..cc17a936 100644 --- a/projects/demo/src/assets/i18n/hu.json +++ b/projects/demo/src/assets/i18n/hu.json @@ -290,6 +290,36 @@ "FOOTER_BUTTON": "Tudj meg többet" } } + }, + "CHIP": { + "APPEARANCES": { + "TITLE": "Chip megjelenései", + "DESCRIPTION": "A chip komponens megjelenései: filled (alapértelmezett) és outlined." + }, + "VARIANTS": { + "TITLE": "Chip változatai", + "DESCRIPTION": "A chip komponens különböző változatai: primary, secondary, surface (alapértelmezett), light és dark." + }, + "SIZES": { + "TITLE": "Chip méretei", + "DESCRIPTION": "A chip komponens különböző méretei: dense, compact (alapértelmezett), comfortable és spacious." + }, + "INTERACTIVE": { + "TITLE": "Interaktív chipek", + "DESCRIPTION": "A nem interaktív chipekhez az ids-chip elemet, az interaktív chipekhez a button[idsChip] selectort használja. Az interaktív chipek letilthatók." + }, + "ICONS": { + "TITLE": "Chip ikonokkal", + "DESCRIPTION": "A chip komponens tartalmazhat avatart, leading ikont és/vagy trailing icon gombot." + }, + "REMOVABLE": { + "TITLE": "Eltávolítható chipek", + "DESCRIPTION": "Az interaktív chipek eltávolíthatóvá tehetők. A close gomb megnyomásakor a removed esemény emittálódik." + }, + "CHIP_GROUP": { + "TITLE": "Chip-group", + "DESCRIPTION": "A chipek csoportosíthatók. A megjelenés, a méret és a disabled állapot a csoporttól öröklődik." + } } }