Merge pull request #4329 from 4Science/task/main/DURACOM-368

Enforce standalone components/directives/pipes via linting
This commit is contained in:
Tim Donohue
2025-05-15 13:47:54 -05:00
committed by GitHub
20 changed files with 26 additions and 2 deletions

View File

@@ -160,6 +160,9 @@
] ]
} }
], ],
"@angular-eslint/prefer-standalone": [
"error"
],
"@angular-eslint/no-attribute-decorator": "error", "@angular-eslint/no-attribute-decorator": "error",
"@angular-eslint/no-output-native": "warn", "@angular-eslint/no-output-native": "warn",
"@angular-eslint/no-output-on-prefix": "warn", "@angular-eslint/no-output-on-prefix": "warn",

View File

@@ -20,6 +20,7 @@ import { BrowseByPageComponent } from './browse-by-page.component';
@Component({ @Component({
// eslint-disable-next-line @angular-eslint/component-selector // eslint-disable-next-line @angular-eslint/component-selector
selector: '', selector: '',
standalone: true,
template: '<span id="BrowseByTestComponent"></span>', template: '<span id="BrowseByTestComponent"></span>',
}) })
class BrowseByTestComponent { class BrowseByTestComponent {

View File

@@ -20,6 +20,7 @@ import { BrowseBySwitcherComponent } from './browse-by-switcher.component';
@Component({ @Component({
// eslint-disable-next-line @angular-eslint/component-selector // eslint-disable-next-line @angular-eslint/component-selector
selector: '', selector: '',
standalone: true,
template: '<span id="BrowseByTestComponent"></span>', template: '<span id="BrowseByTestComponent"></span>',
}) })
class BrowseByTestComponent { class BrowseByTestComponent {

View File

@@ -10,6 +10,7 @@ import {
*/ */
@Component({ @Component({
selector: 'ds-value-input', selector: 'ds-value-input',
standalone: true,
template: '', template: '',
}) })
export abstract class ValueInputComponent<T> { export abstract class ValueInputComponent<T> {

View File

@@ -58,6 +58,7 @@ import { BrowseByComponent } from './browse-by.component';
@Component({ @Component({
// eslint-disable-next-line @angular-eslint/component-selector // eslint-disable-next-line @angular-eslint/component-selector
selector: 'ds-browse-entry-list-element', selector: 'ds-browse-entry-list-element',
standalone: true,
template: '', template: '',
}) })
class MockThemedBrowseEntryListElementComponent { class MockThemedBrowseEntryListElementComponent {

View File

@@ -23,6 +23,7 @@ import { ComcolBrowseByComponent } from './comcol-browse-by.component';
@Component({ @Component({
// eslint-disable-next-line @angular-eslint/component-selector // eslint-disable-next-line @angular-eslint/component-selector
selector: '', selector: '',
standalone: true,
template: '<span id="ComcolBrowseByComponent"></span>', template: '<span id="ComcolBrowseByComponent"></span>',
}) })
class BrowseByTestComponent { class BrowseByTestComponent {

View File

@@ -11,9 +11,13 @@ import { By } from '@angular/platform-browser';
import { BtnDisabledDirective } from './btn-disabled.directive'; import { BtnDisabledDirective } from './btn-disabled.directive';
@Component({ @Component({
standalone: true,
template: ` template: `
<button [dsBtnDisabled]="isDisabled">Test Button</button> <button [dsBtnDisabled]="isDisabled">Test Button</button>
`, `,
imports: [
BtnDisabledDirective,
],
}) })
class TestComponent { class TestComponent {
isDisabled = false; isDisabled = false;
@@ -26,8 +30,7 @@ describe('DisabledDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [BtnDisabledDirective], imports: [BtnDisabledDirective, TestComponent],
declarations: [TestComponent],
}); });
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@@ -34,6 +34,7 @@ export enum SelectorActionType {
*/ */
@Component({ @Component({
selector: 'ds-dso-selector-modal', selector: 'ds-dso-selector-modal',
standalone: true,
template: '', template: '',
}) })
export abstract class DSOSelectorModalWrapperComponent implements OnInit { export abstract class DSOSelectorModalWrapperComponent implements OnInit {

View File

@@ -28,6 +28,7 @@ import { DsDynamicInputModel } from './ds-dynamic-input.model';
*/ */
@Component({ @Component({
selector: 'ds-dynamic-vocabulary', selector: 'ds-dynamic-vocabulary',
standalone: true,
template: '', template: '',
}) })
export abstract class DsDynamicVocabularyComponent extends DynamicFormControlComponent { export abstract class DsDynamicVocabularyComponent extends DynamicFormControlComponent {

View File

@@ -27,6 +27,7 @@ import { ClaimedTaskActionsAbstractComponent } from './claimed-task-actions-abst
*/ */
@Component({ @Component({
selector: 'ds-advanced-claimed-task-action-abstract', selector: 'ds-advanced-claimed-task-action-abstract',
standalone: true,
template: '', template: '',
}) })
export abstract class AdvancedClaimedTaskActionsAbstractComponent extends ClaimedTaskActionsAbstractComponent implements OnInit { export abstract class AdvancedClaimedTaskActionsAbstractComponent extends ClaimedTaskActionsAbstractComponent implements OnInit {

View File

@@ -31,6 +31,7 @@ import { MyDSpaceReloadableActionsComponent } from '../../mydspace-reloadable-ac
*/ */
@Component({ @Component({
selector: 'ds-claimed-task-action-abstract', selector: 'ds-claimed-task-action-abstract',
standalone: true,
template: '', template: '',
}) })
export abstract class ClaimedTaskActionsAbstractComponent extends MyDSpaceReloadableActionsComponent<ClaimedTask, ClaimedTaskDataService> implements OnDestroy { export abstract class ClaimedTaskActionsAbstractComponent extends MyDSpaceReloadableActionsComponent<ClaimedTask, ClaimedTaskDataService> implements OnDestroy {

View File

@@ -37,6 +37,7 @@ export interface MyDSpaceActionsResult {
*/ */
@Component({ @Component({
selector: 'ds-mydspace-actions-abstract', selector: 'ds-mydspace-actions-abstract',
standalone: true,
template: '', template: '',
}) })
export abstract class MyDSpaceActionsComponent<T extends DSpaceObject, TService extends IdentifiableDataService<T>> { export abstract class MyDSpaceActionsComponent<T extends DSpaceObject, TService extends IdentifiableDataService<T>> {

View File

@@ -34,6 +34,7 @@ import { MyDSpaceActionsComponent } from './mydspace-actions';
*/ */
@Component({ @Component({
selector: 'ds-mydspace-reloadable-actions', selector: 'ds-mydspace-reloadable-actions',
standalone: true,
template: '', template: '',
}) })
export abstract class MyDSpaceReloadableActionsComponent<T extends DSpaceObject, TService extends IdentifiableDataService<T>> export abstract class MyDSpaceReloadableActionsComponent<T extends DSpaceObject, TService extends IdentifiableDataService<T>>

View File

@@ -30,6 +30,7 @@ import { ObjectSelectService } from '../object-select.service';
*/ */
@Component({ @Component({
selector: 'ds-object-select-abstract', selector: 'ds-object-select-abstract',
standalone: true,
template: '', template: '',
}) })
export abstract class ObjectSelectComponent<TDomain extends DSpaceObject> implements OnInit, OnDestroy { export abstract class ObjectSelectComponent<TDomain extends DSpaceObject> implements OnInit, OnDestroy {

View File

@@ -23,6 +23,7 @@ import { StartsWithType } from './starts-with-type';
*/ */
@Component({ @Component({
selector: 'ds-start-with-abstract', selector: 'ds-start-with-abstract',
standalone: true,
template: '', template: '',
}) })
export abstract class StartsWithAbstractComponent implements OnInit, OnDestroy { export abstract class StartsWithAbstractComponent implements OnInit, OnDestroy {

View File

@@ -3,6 +3,7 @@ import { Component } from '@angular/core';
// noinspection AngularMissingOrInvalidDeclarationInModule // noinspection AngularMissingOrInvalidDeclarationInModule
@Component({ @Component({
selector: 'ds-test-component', selector: 'ds-test-component',
standalone: true,
template: '', template: '',
}) })
export class TestComponent { export class TestComponent {

View File

@@ -3,6 +3,7 @@ import { Component } from '@angular/core';
// noinspection AngularMissingOrInvalidDeclarationInModule // noinspection AngularMissingOrInvalidDeclarationInModule
@Component({ @Component({
selector: 'ds-test-component', selector: 'ds-test-component',
standalone: true,
template: '', template: '',
}) })
export class TestComponent { export class TestComponent {

View File

@@ -37,6 +37,7 @@ import { ThemeService } from './theme.service';
@Component({ @Component({
selector: 'ds-themed', selector: 'ds-themed',
standalone: true,
styleUrls: ['./themed.component.scss'], styleUrls: ['./themed.component.scss'],
templateUrl: './themed.component.html', templateUrl: './themed.component.html',
}) })

View File

@@ -29,6 +29,7 @@ export interface SectionDataModel {
*/ */
@Component({ @Component({
selector: 'ds-section-model', selector: 'ds-section-model',
standalone: true,
template: '', template: '',
}) })
export abstract class SectionModelComponent implements OnDestroy, OnInit, SectionDataModel { export abstract class SectionModelComponent implements OnDestroy, OnInit, SectionDataModel {

View File

@@ -30,6 +30,7 @@ import { WorkflowItemActionPageDirective } from '../../workflow-item-action-page
*/ */
@Component({ @Component({
selector: 'ds-advanced-workflow-action', selector: 'ds-advanced-workflow-action',
standalone: true,
template: '', template: '',
}) })
export abstract class AdvancedWorkflowActionComponent extends WorkflowItemActionPageDirective implements OnInit { export abstract class AdvancedWorkflowActionComponent extends WorkflowItemActionPageDirective implements OnInit {