diff --git a/playwright/cps-accessibility.spec.ts b/playwright/cps-accessibility.spec.ts index b2b7ecfb..3c7a5aca 100644 --- a/playwright/cps-accessibility.spec.ts +++ b/playwright/cps-accessibility.spec.ts @@ -118,7 +118,7 @@ const components: ComponentEntry[] = [ selector: '.example-content cps-expansion-panel' }, { route: '/file-upload', name: 'File upload', selector: 'cps-file-upload' }, - // { route: '/icon', name: 'Icon', selector: 'cps-icon' }, + { route: '/icon', name: 'Icon', selector: '.example-content cps-icon' }, { route: '/info-circle', name: 'Info circle', selector: 'cps-info-circle' }, { route: '/input', name: 'Input', selector: '.example-content cps-input' }, // { route: '/loader', name: 'Loader', selector: 'cps-loader' }, diff --git a/projects/composition/src/app/api-data/cps-icon.json b/projects/composition/src/app/api-data/cps-icon.json index d32e277c..020a86b2 100644 --- a/projects/composition/src/app/api-data/cps-icon.json +++ b/projects/composition/src/app/api-data/cps-icon.json @@ -28,6 +28,14 @@ "type": "string", "default": "currentColor", "description": "Color of the icon." + }, + { + "name": "ariaLabel", + "optional": false, + "readonly": false, + "type": "string", + "default": "''", + "description": "Accessible label for the icon.\nWhen provided the icon is treated as informative (role=\"img\", aria-hidden removed).\nWhen omitted the icon is treated as decorative (aria-hidden=\"true\", role removed)." } ] } diff --git a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.html b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.html index 4e7dc9b3..fcb3754a 100644 --- a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.html +++ b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.html @@ -12,13 +12,17 @@
@for (name of filteredIconsList; track name) { -
+
+ }
diff --git a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.scss b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.scss index 6cbd8dca..1c4224ab 100644 --- a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.scss +++ b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.scss @@ -1,22 +1,34 @@ @use '../../../../variables.scss' as vars; +@use '../../../../../../cps-ui-kit/styles/mixins' as *; .search-input { - margin-bottom: 24px; + margin-bottom: 1.5rem; } .icon-grid { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 20px; + gap: 1.25rem; + margin-left: 0.5rem; } .icon-row { display: flex; align-items: center; width: fit-content; + border: none; + background: transparent; + padding: 0; + font: inherit; cursor: pointer; + &:focus { + outline: none; + } + &:focus-visible { + @include focus-ring(0.1875rem, 0.3125rem); + } span { - margin-left: 16px; + margin-left: 1rem; color: var(--cps-text-primary); } } diff --git a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.ts b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.ts index 1b5a0e39..3ff57547 100644 --- a/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.ts +++ b/projects/composition/src/app/pages/icons-page/icons-page/icons-page.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { CpsIconComponent, @@ -27,8 +27,7 @@ export class IconsPageComponent implements OnInit { filteredIconsList: string[] = []; componentData = ComponentData; - // eslint-disable-next-line no-useless-constructor - constructor(private _notificationService: CpsNotificationService) {} + private _notificationService = inject(CpsNotificationService); ngOnInit() { this.filteredIconsList = iconNames; @@ -49,7 +48,7 @@ export class IconsPageComponent implements OnInit { navigator.clipboard.writeText(name).then( () => { this._notificationService.success( - `Icon ${name} copied to clipboard`, + `Icon "${name}" copied to clipboard`, undefined, { position: CpsNotificationPosition.BOTTOM, timeout: 1000 } ); diff --git a/projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html b/projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html index e9201d4f..90fe1f05 100644 --- a/projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html +++ b/projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html @@ -41,7 +41,6 @@
@if (prefixIcon) {
diff --git a/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.scss b/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.scss index 63591f16..784e7ecb 100644 --- a/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.scss +++ b/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.scss @@ -21,7 +21,12 @@ $color-text-mild: var(--cps-color-text-mild); padding-left: 0.75rem; padding-right: 0.375rem; cursor: default; - &-close-icon { + &-close-btn { + border: none; + background: transparent; + display: inline-flex; + align-items: center; + justify-content: center; padding: 0.375rem; cursor: pointer; &:focus { @@ -44,7 +49,7 @@ $color-text-mild: var(--cps-color-text-mild); font-family: 'Source Sans Pro', sans-serif; font-style: normal; font-weight: 400; - &:not(:has(+ .cps-chip-close-icon)) { + &:not(:has(+ .cps-chip-close-btn)) { margin-right: 0.375rem; } } @@ -57,7 +62,7 @@ $color-text-mild: var(--cps-color-text-mild); color: $color-text-mild; } .cps-chip-icon, - .cps-chip-close-icon { + .cps-chip-close-btn { ::ng-deep .cps-icon { color: $color-text-mild !important; } @@ -75,11 +80,11 @@ $color-text-mild: var(--cps-color-text-mild); margin-left: 0.375rem; order: 1; - &:not(:has(~ .cps-chip-close-icon)) { + &:not(:has(~ .cps-chip-close-btn)) { margin-right: 0.375rem; } } - .cps-chip-close-icon { + .cps-chip-close-btn { order: 2; } .cps-chip-label { diff --git a/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.spec.ts b/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.spec.ts index 5b486374..6648eaaf 100644 --- a/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.spec.ts +++ b/projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.spec.ts @@ -39,7 +39,7 @@ describe('CpsChipComponent', () => { fixture.componentRef.setInput('closable', true); fixture.detectChanges(); const closeIcon = fixture.nativeElement.querySelector( - '.cps-chip-close-icon' + '.cps-chip-close-btn' ); expect(closeIcon).toBeTruthy(); }); @@ -50,7 +50,7 @@ describe('CpsChipComponent', () => { fixture.componentRef.setInput('label', 'Test'); fixture.detectChanges(); const closeIcon = fixture.nativeElement.querySelector( - '.cps-chip-close-icon' + '.cps-chip-close-btn' ); closeIcon.click(); expect(component.closed.emit).toHaveBeenCalledWith('Test'); diff --git a/projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html b/projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html index 24a86425..74480366 100644 --- a/projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html +++ b/projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html @@ -31,7 +31,6 @@ @if (prefixIcon) {