mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
AAE-21047 Get rid of enums (#11643)
* Refactor enums to const objects and update ESLint rules - Converted several TypeScript enums to const objects for better type inference and immutability. - Updated ESLint configuration to disable 'no-redeclare' rule and added new restrictions on schema usage. - Adjusted package-lock.json to mark several dependencies as peer dependencies. * Refactor enums to const objects in site-dropdown and new-version-uploader models - Converted TypeScript enums to const objects for improved type safety and immutability in `sites-dropdown.component.ts` and `new-version-uploader.model.ts`. - Updated related types to reflect the changes in both files. - Enhanced error handling in the `DropdownSitesComponent` by using the `subscribe` method with an object for better readability. * Refactor TypeScript types and improve error handling in component tests - Updated type annotations in `upload.service.ts` and `node-actions.service.ts` for better type safety. - Enhanced error handling in various component tests by using more descriptive error messages in `task-attachment-list.component.spec.ts`, `attach-file-widget-dialog.component.spec.ts`, and `task-form.component.spec.ts`. - Removed unnecessary schemas from test configurations in several component spec files to streamline the testing setup. * Refactor TypeScript enums to const objects for improved type safety - Converted multiple TypeScript enums to const objects across various models, including `AppConfigValues`, `Status`, `ShowHeaderMode`, `WidgetTypeEnum`, and others. - Updated related type definitions to enhance type inference and immutability. - Adjusted ESLint configurations by removing the 'no-redeclare' rule to streamline code quality checks. * Refactor TypeScript types for improved type safety and consistency - Updated type annotations in `document-list.component.ts`, `document-actions.service.ts`, and `node-actions.service.ts` to use `Observable` instead of `Subject` for better reactive programming practices. - Enhanced type definitions in `search-date-range.component.ts` and related spec files to allow `inLastValue` to be either a string or a number, improving flexibility in handling date range inputs. - Adjusted test cases to reflect these type changes, ensuring consistency across the application. * Enhance type safety in ViewerComponent by specifying type for closeButtonPosition - Updated the type annotation for `closeButtonPosition` in `viewer.component.ts` to explicitly define it as `CloseButtonPosition`, improving type safety and clarity. * Enhance type safety in DataTableComponent by specifying type for showHeader - Updated the type annotation for `showHeader` in `datatable.component.ts` to explicitly define it as `ShowHeaderMode`, improving type safety and clarity. * Update PDF viewer test to accommodate varying date formats - Modified the test for the annotation popup in `pdf-viewer.component.spec.ts` to check for the presence of date components instead of a specific date format, enhancing test robustness across different locales.
This commit is contained in:
@@ -27,37 +27,40 @@ import { OauthConfigModel } from '../auth/models/oauth-config.model';
|
||||
/* spellchecker: disable */
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum AppConfigValues {
|
||||
APP_CONFIG_LANGUAGES_KEY = 'languages',
|
||||
PROVIDERS = 'providers',
|
||||
OAUTHCONFIG = 'oauth2',
|
||||
ECMHOST = 'ecmHost',
|
||||
BASESHAREURL = 'baseShareUrl',
|
||||
OOI_CONNECTOR_URL = 'ooiServiceUrl',
|
||||
BPMHOST = 'bpmHost',
|
||||
IDENTITY_HOST = 'identityHost',
|
||||
AUTHTYPE = 'authType',
|
||||
CONTEXTROOTECM = 'contextRootEcm',
|
||||
CONTEXTROOTBPM = 'contextRootBpm',
|
||||
ALFRESCO_REPOSITORY_NAME = 'alfrescoRepositoryName',
|
||||
LOG_LEVEL = 'logLevel',
|
||||
LOGIN_ROUTE = 'loginRoute',
|
||||
DISABLECSRF = 'disableCSRF',
|
||||
AUTH_WITH_CREDENTIALS = 'auth.withCredentials',
|
||||
APPLICATION = 'application',
|
||||
STORAGE_PREFIX = 'application.storagePrefix',
|
||||
NOTIFY_DURATION = 'notificationDefaultDuration',
|
||||
CONTENT_TICKET_STORAGE_LABEL = 'ticket-ECM',
|
||||
PROCESS_TICKET_STORAGE_LABEL = 'ticket-BPM',
|
||||
UNSAVED_CHANGES_MODAL_HIDDEN = 'unsaved_changes__modal_hidden'
|
||||
}
|
||||
export const AppConfigValues = {
|
||||
APP_CONFIG_LANGUAGES_KEY: 'languages',
|
||||
PROVIDERS: 'providers',
|
||||
OAUTHCONFIG: 'oauth2',
|
||||
ECMHOST: 'ecmHost',
|
||||
BASESHAREURL: 'baseShareUrl',
|
||||
OOI_CONNECTOR_URL: 'ooiServiceUrl',
|
||||
BPMHOST: 'bpmHost',
|
||||
IDENTITY_HOST: 'identityHost',
|
||||
AUTHTYPE: 'authType',
|
||||
CONTEXTROOTECM: 'contextRootEcm',
|
||||
CONTEXTROOTBPM: 'contextRootBpm',
|
||||
ALFRESCO_REPOSITORY_NAME: 'alfrescoRepositoryName',
|
||||
LOG_LEVEL: 'logLevel',
|
||||
LOGIN_ROUTE: 'loginRoute',
|
||||
DISABLECSRF: 'disableCSRF',
|
||||
AUTH_WITH_CREDENTIALS: 'auth.withCredentials',
|
||||
APPLICATION: 'application',
|
||||
STORAGE_PREFIX: 'application.storagePrefix',
|
||||
NOTIFY_DURATION: 'notificationDefaultDuration',
|
||||
CONTENT_TICKET_STORAGE_LABEL: 'ticket-ECM',
|
||||
PROCESS_TICKET_STORAGE_LABEL: 'ticket-BPM',
|
||||
UNSAVED_CHANGES_MODAL_HIDDEN: 'unsaved_changes__modal_hidden'
|
||||
} as const;
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum Status {
|
||||
INIT = 'init',
|
||||
LOADING = 'loading',
|
||||
LOADED = 'loaded'
|
||||
}
|
||||
export type AppConfigValues = (typeof AppConfigValues)[keyof typeof AppConfigValues];
|
||||
|
||||
export const Status = {
|
||||
INIT: 'init',
|
||||
LOADING: 'loading',
|
||||
LOADED: 'loaded'
|
||||
} as const;
|
||||
|
||||
export type Status = (typeof Status)[keyof typeof Status];
|
||||
|
||||
/* spellchecker: enable */
|
||||
|
||||
|
||||
@@ -27,13 +27,14 @@ import { Directionality, Direction } from '@angular/cdk/bidi';
|
||||
import { DEFAULT_LANGUAGE_LIST } from '../models/default-languages.model';
|
||||
import { toSignal } from '@angular/core/rxjs-interop';
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum UserPreferenceValues {
|
||||
PaginationSize = 'paginationSize',
|
||||
Locale = 'locale',
|
||||
SupportedPageSizes = 'supportedPageSizes',
|
||||
ExpandedSideNavStatus = 'expandedSidenav'
|
||||
}
|
||||
export const UserPreferenceValues = {
|
||||
PaginationSize: 'paginationSize',
|
||||
Locale: 'locale',
|
||||
SupportedPageSizes: 'supportedPageSizes',
|
||||
ExpandedSideNavStatus: 'expandedSidenav'
|
||||
} as const;
|
||||
|
||||
export type UserPreferenceValues = (typeof UserPreferenceValues)[keyof typeof UserPreferenceValues];
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@@ -85,12 +85,13 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import { IconModule } from '../../../icon/icon.module';
|
||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum ShowHeaderMode {
|
||||
Never = 'never',
|
||||
Always = 'always',
|
||||
Data = 'data'
|
||||
}
|
||||
export const ShowHeaderMode = {
|
||||
Never: 'never',
|
||||
Always: 'always',
|
||||
Data: 'data'
|
||||
} as const;
|
||||
|
||||
export type ShowHeaderMode = (typeof ShowHeaderMode)[keyof typeof ShowHeaderMode];
|
||||
|
||||
@Component({
|
||||
selector: 'adf-datatable',
|
||||
@@ -216,7 +217,7 @@ export class DataTableComponent implements OnInit, AfterContentInit, OnChanges,
|
||||
|
||||
/** Toggles the header. */
|
||||
@Input()
|
||||
showHeader = ShowHeaderMode.Data;
|
||||
showHeader: ShowHeaderMode = ShowHeaderMode.Data;
|
||||
|
||||
/** Toggles the sticky header mode. */
|
||||
@Input()
|
||||
|
||||
@@ -102,9 +102,10 @@ export class WidgetVisibilityModel {
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum WidgetTypeEnum {
|
||||
field = 'field',
|
||||
variable = 'variable',
|
||||
value = 'value'
|
||||
}
|
||||
export const WidgetTypeEnum = {
|
||||
field: 'field',
|
||||
variable: 'variable',
|
||||
value: 'value'
|
||||
} as const;
|
||||
|
||||
export type WidgetTypeEnum = (typeof WidgetTypeEnum)[keyof typeof WidgetTypeEnum];
|
||||
|
||||
@@ -15,13 +15,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum NOTIFICATION_TYPE {
|
||||
INFO = 'info',
|
||||
WARN = 'warning',
|
||||
ERROR = 'error',
|
||||
RECURSIVE = 'recursive'
|
||||
}
|
||||
export const NOTIFICATION_TYPE = {
|
||||
INFO: 'info',
|
||||
WARN: 'warning',
|
||||
ERROR: 'error',
|
||||
RECURSIVE: 'recursive'
|
||||
} as const;
|
||||
|
||||
export type NOTIFICATION_TYPE = (typeof NOTIFICATION_TYPE)[keyof typeof NOTIFICATION_TYPE];
|
||||
|
||||
export interface NotificationInitiator {
|
||||
key: string | symbol;
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line no-shadow
|
||||
export enum SearchTextStateEnum {
|
||||
expanded = 'expanded',
|
||||
collapsed = 'collapsed'
|
||||
}
|
||||
export const SearchTextStateEnum = {
|
||||
expanded: 'expanded',
|
||||
collapsed: 'collapsed'
|
||||
} as const;
|
||||
export type SearchTextStateEnum = (typeof SearchTextStateEnum)[keyof typeof SearchTextStateEnum];
|
||||
|
||||
export interface SearchAnimationState {
|
||||
value: string;
|
||||
|
||||
@@ -660,7 +660,11 @@ describe('Test PdfViewer - User interaction', () => {
|
||||
it('should have corrected content in annotation popup', fakeAsync(() => {
|
||||
dispatchAnnotationLayerRenderedEvent();
|
||||
expect(annotationElement.querySelector('.title').textContent).toBe('Annotation title');
|
||||
expect(annotationElement.querySelector('.popupDate').textContent).toBe('2/2/2026, 10:41:06 AM');
|
||||
// Date format can vary by locale, so we just check it contains the expected date components
|
||||
const dateText = annotationElement.querySelector('.popupDate').textContent;
|
||||
expect(dateText).toContain('2026');
|
||||
expect(dateText).toContain('02');
|
||||
expect(dateText).toContain('10:41:06');
|
||||
expect(annotationElement.querySelector('.popupContent').textContent).toBe('Annotation contents');
|
||||
expect(getAnnotationPopupElement()).toBeDefined();
|
||||
}));
|
||||
|
||||
@@ -230,7 +230,7 @@ export class ViewerComponent<T> implements OnDestroy, OnInit, OnChanges {
|
||||
* Change the close button position Right/Left.
|
||||
*/
|
||||
@Input()
|
||||
closeButtonPosition = CloseButtonPosition.Left;
|
||||
closeButtonPosition: CloseButtonPosition = CloseButtonPosition.Left;
|
||||
|
||||
/** Toggles the 'Info Button' */
|
||||
@Input()
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
*/
|
||||
|
||||
/* Enum listing the allowed actions that can be emitted from the NonResponsivePreview dialog component */
|
||||
export enum DownloadPromptActions {
|
||||
'WAIT',
|
||||
'DOWNLOAD'
|
||||
}
|
||||
export const DownloadPromptActions = {
|
||||
WAIT: 'WAIT',
|
||||
DOWNLOAD: 'DOWNLOAD'
|
||||
} as const;
|
||||
|
||||
export type DownloadPromptActions = (typeof DownloadPromptActions)[keyof typeof DownloadPromptActions];
|
||||
|
||||
@@ -15,10 +15,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export enum CloseButtonPosition {
|
||||
Right = 'right',
|
||||
Left = 'left'
|
||||
}
|
||||
export const CloseButtonPosition = {
|
||||
Right: 'right',
|
||||
Left: 'left'
|
||||
} as const;
|
||||
|
||||
export type CloseButtonPosition = (typeof CloseButtonPosition)[keyof typeof CloseButtonPosition];
|
||||
|
||||
export interface Track {
|
||||
src: string;
|
||||
|
||||
Reference in New Issue
Block a user