From 7771833f0ec893e24199cfc6e718652ede6e268f Mon Sep 17 00:00:00 2001 From: Artem Belik Date: Wed, 12 Nov 2025 09:32:41 +0300 Subject: [PATCH 1/4] fix: missed component class name 'kbq-' prefix (#DS-3753) --- .../e2e/components/file-upload.ts | 2 +- packages/components-dev/file-upload/module.ts | 4 +- .../core/styles/typography/_typography.scss | 16 ++--- .../ellipsis-center.directive.spec.ts | 4 +- .../ellipsis-center.directive.ts | 5 +- .../file-upload/_file-upload-theme.scss | 66 +++++++++---------- .../components/file-upload/file-drop.spec.ts | 10 +-- packages/components/file-upload/file-drop.ts | 3 +- .../file-upload/file-upload.karma-spec.ts | 4 +- .../components/file-upload/file-upload.scss | 11 ++-- .../file-upload/file-upload.spec.ts | 4 +- .../multiple-file-upload.component.html | 35 +++++----- .../multiple-file-upload.component.scss | 26 ++++---- .../single-file-upload.component.html | 12 ++-- .../single-file-upload.component.scss | 12 ++-- .../markdown.component.spec.ts.snap | 8 +-- .../components/markdown/_markdown-theme.scss | 1 - .../components/markdown/markdown.component.ts | 4 +- packages/components/markdown/markdown.scss | 6 +- packages/components/modal/modal.scss | 7 +- .../scrollbar/scrollbar.component.scss | 5 +- .../components/toggle/toggle.component.html | 8 ++- packages/components/toggle/toggle.scss | 8 +-- ...eadcrumbs-truncate-center-items-example.ts | 4 +- 24 files changed, 127 insertions(+), 138 deletions(-) diff --git a/packages/components-dev/e2e/components/file-upload.ts b/packages/components-dev/e2e/components/file-upload.ts index 37ae1a6af2..55cfaab672 100644 --- a/packages/components-dev/e2e/components/file-upload.ts +++ b/packages/components-dev/e2e/components/file-upload.ts @@ -158,7 +158,7 @@ export class DevFileUploadStateAndStyle { afterNextRender(() => { this.document .querySelectorAll('.dev-dragover .kbq-file-upload') - .forEach((el) => this.renderer.addClass(el, 'dragover')); + .forEach((el) => this.renderer.addClass(el, 'kbq-file-drop_dragover')); this.document .querySelectorAll('.dev-error .kbq-file-upload') diff --git a/packages/components-dev/file-upload/module.ts b/packages/components-dev/file-upload/module.ts index 77f5e16b45..4a25861fb7 100644 --- a/packages/components-dev/file-upload/module.ts +++ b/packages/components-dev/file-upload/module.ts @@ -246,7 +246,7 @@ export class DevFileUploadStateAndStyle { afterNextRender(() => { this.document .querySelectorAll('.dev-dragover .kbq-file-upload') - .forEach((el) => this.renderer.addClass(el, 'dragover')); + .forEach((el) => this.renderer.addClass(el, 'kbq-file-drop_dragover')); this.document .querySelectorAll('.dev-error .kbq-file-upload') .forEach((el) => this.renderer.addClass(el, 'kbq-error')); @@ -308,7 +308,7 @@ export class DevFileUploadStateAndStyle { }, changeDetection: ChangeDetectionStrategy.OnPush }) -class DevExamples {} +export class DevExamples {} @Component({ standalone: true, diff --git a/packages/components/core/styles/typography/_typography.scss b/packages/components/core/styles/typography/_typography.scss index 7711baa35e..84e78fcb54 100644 --- a/packages/components/core/styles/typography/_typography.scss +++ b/packages/components/core/styles/typography/_typography.scss @@ -1,9 +1,5 @@ -// @TODO should remove "selector-class-pattern" rule ignore (#DS-3753) -/* stylelint-disable selector-class-pattern */ @use 'sass:map'; - @use 'typography-utils' as *; - @use '../common/tokens' as *; // TODO: REMOVE @@ -303,28 +299,28 @@ @mixin kbq-markdown-base-typography() { // h1, h2, h3, h4, h5, h6 @for $i from 1 through 6 { - .md-h#{$i} { + .kbq-md-h#{$i} { @include kbq-typography-level-to-styles-css-variables(md-typography, md-h#{$i}); } } - .md-body { + .kbq-md-body { @include kbq-typography-level-to-styles-css-variables(md-typography, md-body); } - .md-body-mono { + .kbq-md-body-mono { @include kbq-typography-level-to-styles-css-variables(md-typography, md-body-mono); } - .md-caption { + .kbq-md-caption { @include kbq-typography-level-to-styles-css-variables(md-typography, md-caption); } - .md-table-cell { + .kbq-md-table-cell { @include kbq-typography-level-to-styles-css-variables(md-typography, md-table-cell); } - .md-table-header { + .kbq-md-table-header { @include kbq-typography-level-to-styles-css-variables(md-typography, md-table-header); } } diff --git a/packages/components/ellipsis-center/ellipsis-center.directive.spec.ts b/packages/components/ellipsis-center/ellipsis-center.directive.spec.ts index aec5c3f961..1595780a86 100644 --- a/packages/components/ellipsis-center/ellipsis-center.directive.spec.ts +++ b/packages/components/ellipsis-center/ellipsis-center.directive.spec.ts @@ -70,8 +70,8 @@ describe(KbqEllipsisCenterDirective.name, () => { componentInstance.ellipsisCenterDirective.refresh(); tick(); // wait for setTimeout - const startEl: HTMLElement = nativeElement.querySelector('.data-text-start')!; - const endEl: HTMLElement = nativeElement.querySelector('.data-text-end')!; + const startEl: HTMLElement = nativeElement.querySelector('.kbq-ellipsis-center_data-text-start')!; + const endEl: HTMLElement = nativeElement.querySelector('.kbq-ellipsis-center_data-text-end')!; expect(startEl).toBeTruthy(); expect(endEl).toBeTruthy(); diff --git a/packages/components/ellipsis-center/ellipsis-center.directive.ts b/packages/components/ellipsis-center/ellipsis-center.directive.ts index 4fac6a076f..c2f6b943e1 100644 --- a/packages/components/ellipsis-center/ellipsis-center.directive.ts +++ b/packages/components/ellipsis-center/ellipsis-center.directive.ts @@ -79,7 +79,10 @@ export class KbqEllipsisCenterDirective extends KbqTooltipTrigger implements OnI this.content = this._kbqEllipsisCenter; - const [dataTextStart, dataTextEnd] = ['data-text-start', 'data-text-end'].map((querySelector) => { + const [dataTextStart, dataTextEnd] = [ + 'kbq-ellipsis-center_data-text-start', + 'kbq-ellipsis-center_data-text-end' + ].map((querySelector) => { const element = this.elementRef.nativeElement.querySelector(`.${querySelector}`); if (element) { diff --git a/packages/components/file-upload/_file-upload-theme.scss b/packages/components/file-upload/_file-upload-theme.scss index 9436c6930e..19efd60a17 100644 --- a/packages/components/file-upload/_file-upload-theme.scss +++ b/packages/components/file-upload/_file-upload-theme.scss @@ -1,5 +1,3 @@ -// @TODO should remove "selector-class-pattern" rule ignore (#DS-3753) -/* stylelint-disable selector-class-pattern */ @use '../core/styles/common/tokens'; @mixin kbq-file-upload-theme() { @@ -19,11 +17,11 @@ color: var(--kbq-file-upload-single-default-icon-button-color); } - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-single-default-upload-icon-color); } - .file-item__text-wrapper .kbq-icon.kbq-empty { + .kbq-file-item__text-wrapper .kbq-icon.kbq-empty { color: var(--kbq-file-upload-single-default-left-icon-color); } @@ -32,27 +30,27 @@ } } - &.dragover { + &.kbq-file-drop_dragover { background-color: var(--kbq-file-upload-single-states-on-drag-container-background); border-color: var(--kbq-file-upload-single-states-on-drag-container-border) !important; } &.kbq-error:not(.kbq-disabled) { - &:not(.dragover) { + &:not(.kbq-file-drop_dragover) { background-color: var(--kbq-file-upload-single-states-error-container-background); border-color: var(--kbq-file-upload-single-states-error-container-border) !important; } - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-single-states-error-upload-icon-color); } - .file-item__text-wrapper .kbq-icon.kbq-empty { + .kbq-file-item__text-wrapper .kbq-icon.kbq-empty { color: var(--kbq-file-upload-single-states-error-left-icon-color); } - .file-item__text, - .dropzone__text:not(.kbq-link) { + .kbq-file-item__text, + .kbq-file-dropzone__text:not(.kbq-link) { color: var(--kbq-file-upload-single-states-error-text-block-color); } @@ -69,16 +67,16 @@ background-color: var(--kbq-file-upload-single-states-disabled-container-background); border-color: var(--kbq-file-upload-single-states-disabled-container-border) !important; - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-single-states-disabled-upload-icon-color); } - .file-item__text-wrapper .kbq-icon.kbq-empty { + .kbq-file-item__text-wrapper .kbq-icon.kbq-empty { color: var(--kbq-file-upload-single-states-disabled-left-icon-color); } - .dropzone__text, - .file-item__text { + .kbq-file-dropzone__text, + .kbq-file-item__text { color: var(--kbq-file-upload-single-states-disabled-text-block-color); } @@ -103,7 +101,7 @@ border: 2px solid var(--kbq-file-upload-multiple-states-focused-focus-outline-color); } - .btn-upload { + .kbq-file-btn-upload { border-top-color: var(--kbq-file-upload-multiple-default-container-border); } @@ -113,16 +111,16 @@ } &:not(.kbq-disabled, .kbq-error) { - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-multiple-default-upload-icon-color); } } - &.dragover { + &.kbq-file-drop_dragover { background-color: var(--kbq-file-upload-multiple-states-on-drag-container-background); border-color: var(--kbq-file-upload-multiple-states-on-drag-container-border) !important; - .btn-upload { + .kbq-file-btn-upload { border-top-color: var(--kbq-file-upload-multiple-states-on-drag-container-border); } @@ -130,7 +128,7 @@ border-bottom-color: var(--kbq-file-upload-multiple-states-on-drag-grid-divider-color) !important; } - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-multiple-states-on-drag-upload-icon-color); } } @@ -139,11 +137,11 @@ background-color: var(--kbq-file-upload-multiple-states-disabled-container-background); border-color: var(--kbq-file-upload-multiple-states-disabled-container-border) !important; - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-multiple-states-disabled-upload-icon-color); } - .dropzone__text, + .kbq-file-dropzone__text, .kbq-file-multiple-uploaded__header { color: var(--kbq-file-upload-multiple-states-disabled-text-block-color); } @@ -152,12 +150,12 @@ border-bottom-color: var(--kbq-file-upload-multiple-states-disabled-grid-divider-color) !important; } - .multiple__uploaded-item { + .kbq-file-multiple__uploaded-item { .kbq-file-upload__file .kbq-icon.kbq-empty { color: var(--kbq-file-upload-multiple-states-disabled-left-icon-color); } - .file-item__text, + .kbq-file-item__text, .kbq-file-upload__size { color: var(--kbq-file-upload-multiple-states-disabled-text-block-color); } @@ -173,21 +171,21 @@ background-color: var(--kbq-background-error-less); border-color: var(--kbq-line-error) !important; - .kbq-dropzone__icon { + .kbq-file-dropzone__icon { color: var(--kbq-file-upload-multiple-states-error-upload-icon-color); } - .dropzone__text:not(.kbq-link), + .kbq-file-dropzone__text:not(.kbq-link), .kbq-file-multiple-uploaded__header { color: var(--kbq-file-upload-multiple-states-error-text-block-color); } } - .multiple__uploaded-item { - &:has(.kbq-file-upload__row.error) { + .kbq-file-multiple__uploaded-item { + &:has(.kbq-file-upload__row.kbq-error) { background-color: var(--kbq-background-error-less); - .file-item__text, + .kbq-file-item__text, .kbq-file-upload__size { color: var(--kbq-foreground-error); } @@ -203,7 +201,7 @@ } } - .multiple__uploaded-item { + .kbq-file-multiple__uploaded-item { .kbq-file-upload__file .kbq-icon.kbq-empty { color: var(--kbq-file-upload-multiple-default-left-icon-color); } @@ -233,19 +231,19 @@ // @TODO: remove when redesign applied, use default font (#DS-3858) .kbq-single-file-upload { - & .file-item__text-wrapper, - & .dropzone__text { + & .kbq-file-item__text-wrapper, + & .kbq-file-dropzone__text { @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal); } } .kbq-multiple-file-upload { - .multiple__header { + .kbq-file-multiple__header { @include tokens.kbq-typography-level-to-styles-css-variables(typography, subheading); } // @TODO: remove when redesign applied, use default font (#DS-3858) - .multiple__caption { + .kbq-file-multiple__caption { &, .kbq-link { @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal); @@ -258,7 +256,7 @@ } // @TODO: remove when redesign applied, use default font (#DS-3858) - .multiple__uploaded-item { + .kbq-file-multiple__uploaded-item { @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal); } diff --git a/packages/components/file-upload/file-drop.spec.ts b/packages/components/file-upload/file-drop.spec.ts index 9728658f39..9b54e7e883 100644 --- a/packages/components/file-upload/file-drop.spec.ts +++ b/packages/components/file-upload/file-drop.spec.ts @@ -46,17 +46,17 @@ describe('FileDropDirective', () => { }); it('FileDropDirective: dragover/dragleave', () => { - expect(dndZone.classList.contains('dragover')).toBeFalsy(); + expect(dndZone.classList.contains('kbq-file-drop_dragover')).toBeFalsy(); dispatchFakeEvent(dndZone, 'dragover'); fixture.detectChanges(); - expect(dndZone.classList.contains('dragover')).toBeTruthy(); + expect(dndZone.classList.contains('kbq-file-drop_dragover')).toBeTruthy(); dispatchFakeEvent(dndZone, 'dragleave'); fixture.detectChanges(); - expect(dndZone.classList.contains('dragover')).toBeFalsy(); + expect(dndZone.classList.contains('kbq-file-drop_dragover')).toBeFalsy(); }); it('FileDropDirective: drop with files', (done) => { @@ -70,14 +70,14 @@ describe('FileDropDirective', () => { dispatchFakeEvent(dndZone, 'dragover'); fixture.detectChanges(); - expect(dndZone.classList.contains('dragover')).toBeTruthy(); + expect(dndZone.classList.contains('kbq-file-drop_dragover')).toBeTruthy(); dispatchEvent(dndZone, event); fixture.detectChanges(); setTimeout(() => { expect(component.onDrop).toHaveBeenCalledWith(expect.objectContaining({ length: fakeFiles.length })); - expect(dndZone.classList.contains('dragover')).toBeFalsy(); + expect(dndZone.classList.contains('kbq-file-drop_dragover')).toBeFalsy(); done(); }); }); diff --git a/packages/components/file-upload/file-drop.ts b/packages/components/file-upload/file-drop.ts index 9168585ccd..a034f84255 100644 --- a/packages/components/file-upload/file-drop.ts +++ b/packages/components/file-upload/file-drop.ts @@ -9,7 +9,8 @@ const entryIsFile = (entry?: FileSystemEntry): entry is FileSystemFileEntry => ! selector: '[kbqFileDrop]', exportAs: 'kbqFileDrop', host: { - '[class.dragover]': 'dragover', + class: 'kbq-file-drop', + '[class.kbq-file-drop_dragover]': 'dragover', '(dragover)': 'onDragOver($event)', '(dragleave)': 'onDragLeave($event)', '(drop)': 'onDrop($event)' diff --git a/packages/components/file-upload/file-upload.karma-spec.ts b/packages/components/file-upload/file-upload.karma-spec.ts index b34563c20f..ee17964ad9 100644 --- a/packages/components/file-upload/file-upload.karma-spec.ts +++ b/packages/components/file-upload/file-upload.karma-spec.ts @@ -11,9 +11,9 @@ import { KbqFileUploadModule } from './file-upload.module'; import { KbqMultipleFileUploadComponent } from './multiple-file-upload.component'; import { KbqSingleFileUploadComponent } from './single-file-upload.component'; -const fileItemRowCssClass = 'multiple__uploaded-item'; +const fileItemRowCssClass = 'kbq-file-multiple__uploaded-item'; -const fileItemCssClass = 'file-item'; +const fileItemCssClass = 'kbq-file-item'; const FILE_NAME = 'test.file'; diff --git a/packages/components/file-upload/file-upload.scss b/packages/components/file-upload/file-upload.scss index b75870a2a8..a907e7b7fc 100644 --- a/packages/components/file-upload/file-upload.scss +++ b/packages/components/file-upload/file-upload.scss @@ -1,6 +1,3 @@ -// @TODO should remove "selector-class-pattern" rule ignore (#DS-3753) -/* stylelint-disable selector-class-pattern */ - @use './file-upload-theme' as theme; .kbq-file-upload { @@ -9,8 +6,8 @@ align-items: center; position: relative; - .dropzone, - .file-item { + .kbq-file-dropzone, + .kbq-file-item { display: flex; align-items: center; } @@ -19,14 +16,14 @@ position: relative; display: flex; - .data-text-start { + .kbq-ellipsis-center_data-text-start { flex: 0 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: pre; } - .data-text-end { + .kbq-ellipsis-center_data-text-end { flex: 1 0 auto; overflow: hidden; white-space: pre; diff --git a/packages/components/file-upload/file-upload.spec.ts b/packages/components/file-upload/file-upload.spec.ts index 6f6a3c26e0..b9c22b2f52 100644 --- a/packages/components/file-upload/file-upload.spec.ts +++ b/packages/components/file-upload/file-upload.spec.ts @@ -50,8 +50,8 @@ const getMockedChangeEventForSingle = (fileNameOrFakeFile: string | Partial { const kilo = 1024; diff --git a/packages/components/file-upload/multiple-file-upload.component.html b/packages/components/file-upload/multiple-file-upload.component.html index 575f05be83..d006fcf663 100644 --- a/packages/components/file-upload/multiple-file-upload.component.html +++ b/packages/components/file-upload/multiple-file-upload.component.html @@ -3,24 +3,25 @@ class="kbq-file-upload" [class.kbq-disabled]="disabled" [class.kbq-error]="invalid" - [class.selected]="files?.length" - [ngClass]="size" + [class.kbq-selected]="files?.length" + [class.kbq-file-upload_default]="size === 'default'" + [class.kbq-file-upload_compact]="size === 'compact'" (filesDropped)="onFileDropped($event)" > @if (!files.length) { -
+
@if (size === 'default') { - -
-
{{ config.title }}
+ +
+
{{ config.title }}
-
{{ separatedCaptionText[0] }}{{ separatedCaptionText[1] }}
+
{{ separatedCaptionText[0] }}{{ separatedCaptionText[1] }}
} @else { - - + + {{ separatedCaptionTextForCompactSize[0] }}
} @else { -
+
@@ -47,12 +48,12 @@ @for (file of files; track file; let index = $index) { -
+
@@ -95,10 +96,10 @@ }
-
-
- - +
+
+ + {{ separatedCaptionTextWhenSelected[0] }}