Merge branch 'develop' into fix/AAE-34675-fix-default-selection

This commit is contained in:
Eugenio Romano
2025-05-15 18:40:56 +02:00
committed by GitHub
38 changed files with 8967 additions and 6434 deletions

2
.nvmrc
View File

@@ -1 +1 @@
20.18.1 22.14.0

View File

@@ -8,6 +8,6 @@
"source": "/**/**/i18n/en.json", "source": "/**/**/i18n/en.json",
"translation": "/%original_path%/%two_letters_code%.%file_extension%", "translation": "/%original_path%/%two_letters_code%.%file_extension%",
"export_only_approved": "true", "export_only_approved": "true",
"update_option": "update_as_unapproved" "update_option": "update_without_changes"
} }
] ]

View File

@@ -9,7 +9,7 @@
"version": "8.0.0", "version": "8.0.0",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@alfresco/js-api": ">=8.0.0-alpha.7-0", "@alfresco/js-api": ">=8.0.0-alpha.7",
"commander": "^6.2.1", "commander": "^6.2.1",
"ejs": "^3.1.9", "ejs": "^3.1.9",
"license-checker": "^25.0.1", "license-checker": "^25.0.1",
@@ -39,6 +39,27 @@
"tslib": "^2.6.1" "tslib": "^2.6.1"
} }
}, },
"node_modules/@noble/hashes": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"license": "MIT",
"engines": {
"node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@paralleldrive/cuid2": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
"integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
"license": "MIT",
"dependencies": {
"@noble/hashes": "^1.1.5"
}
},
"node_modules/@types/ejs": { "node_modules/@types/ejs": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz",
@@ -435,14 +456,18 @@
} }
}, },
"node_modules/formidable": { "node_modules/formidable": {
"version": "3.5.1", "version": "3.5.4",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz",
"integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==",
"license": "MIT",
"dependencies": { "dependencies": {
"@paralleldrive/cuid2": "^2.2.2",
"dezalgo": "^1.0.4", "dezalgo": "^1.0.4",
"hexoid": "^1.0.0",
"once": "^1.4.0" "once": "^1.4.0"
}, },
"engines": {
"node": ">=14.0.0"
},
"funding": { "funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions" "url": "https://ko-fi.com/tunnckoCore/commissions"
} }
@@ -576,14 +601,6 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
"engines": {
"node": ">=8"
}
},
"node_modules/hosted-git-info": { "node_modules/hosted-git-info": {
"version": "2.8.9", "version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",

View File

@@ -711,10 +711,10 @@
}, },
"NODE_FAVORITE_DIRECTIVE": { "NODE_FAVORITE_DIRECTIVE": {
"MESSAGES": { "MESSAGES": {
"NODE_ADDED": "Added {{ name }} to favorites", "NODE_ADDED": "Añadido {{ name }} a favoritos",
"NODES_ADDED": "Added {{ number }} items to favorites", "NODES_ADDED": "Añadidos {{ number }} elementos a favoritos",
"NODE_REMOVED": "Removed {{ name }} from favorites", "NODE_REMOVED": "Eliminado {{ name }} de favoritos",
"NODES_REMOVED": "Removed {{ number }} items from favorites" "NODES_REMOVED": "Eliminado {{ number }} elementos de favoritos"
} }
} }
} }

View File

@@ -711,10 +711,10 @@
}, },
"NODE_FAVORITE_DIRECTIVE": { "NODE_FAVORITE_DIRECTIVE": {
"MESSAGES": { "MESSAGES": {
"NODE_ADDED": "Added {{ name }} to favorites", "NODE_ADDED": "Ajout de {{ name }} aux favoris",
"NODES_ADDED": "Added {{ number }} items to favorites", "NODES_ADDED": "Ajout des éléments {{ number }} aux favoris",
"NODE_REMOVED": "Removed {{ name }} from favorites", "NODE_REMOVED": "Suppression de {{ name }} des favoris",
"NODES_REMOVED": "Removed {{ number }} items from favorites" "NODES_REMOVED": "Les éléments {{ number }} supprimés des favoris"
} }
} }
} }

View File

@@ -711,10 +711,10 @@
}, },
"NODE_FAVORITE_DIRECTIVE": { "NODE_FAVORITE_DIRECTIVE": {
"MESSAGES": { "MESSAGES": {
"NODE_ADDED": "Added {{ name }} to favorites", "NODE_ADDED": "Aggiunto {{ name }} ai preferiti",
"NODES_ADDED": "Added {{ number }} items to favorites", "NODES_ADDED": "Aggiunti {{ number }} elementi ai preferiti",
"NODE_REMOVED": "Removed {{ name }} from favorites", "NODE_REMOVED": "Rimosso {{ name }} dai preferiti",
"NODES_REMOVED": "Removed {{ number }} items from favorites" "NODES_REMOVED": "Rimosso {{ number }} elementi dai preferiti"
} }
} }
} }

View File

@@ -711,10 +711,10 @@
}, },
"NODE_FAVORITE_DIRECTIVE": { "NODE_FAVORITE_DIRECTIVE": {
"MESSAGES": { "MESSAGES": {
"NODE_ADDED": "Added {{ name }} to favorites", "NODE_ADDED": "Adicionado {{ name }} aos favoritos",
"NODES_ADDED": "Added {{ number }} items to favorites", "NODES_ADDED": "Adicionados {{ number }} itens aos favoritos",
"NODE_REMOVED": "Removed {{ name }} from favorites", "NODE_REMOVED": "Removido {{ name }} dos favoritos",
"NODES_REMOVED": "Removed {{ number }} items from favorites" "NODES_REMOVED": "Removido {{ number }} itens dos favoritos"
} }
} }
} }

View File

@@ -2,15 +2,15 @@
@use '@angular/material' as mat; @use '@angular/material' as mat;
@mixin adf-breadcrumb-theme($theme) { @mixin adf-breadcrumb-theme($theme) {
$config: mat.get-color-config($theme); $config: mat.m2-get-color-config($theme);
$foreground-palette: map.get($config, foreground); $foreground-palette: map.get($config, foreground);
$primary-palette: map.get($config, primary); $primary-palette: map.get($config, primary);
$text-color: mat.get-color-from-palette($foreground-palette, text); $text-color: mat.m2-get-color-from-palette($foreground-palette, text);
$primary: mat.get-color-from-palette($primary-palette, text); $primary: mat.m2-get-color-from-palette($primary-palette, text);
adf-breadcrumb { adf-breadcrumb {
.adf-breadcrumb__show-all-button-icon--rotate { .adf-breadcrumb__show-all-button-icon--rotate {
color: mat.get-color-from-palette($primary-palette, 500); color: mat.m2-get-color-from-palette($primary-palette, 500);
} }
.adf-breadcrumb__item-wrapper { .adf-breadcrumb__item-wrapper {

View File

@@ -2,22 +2,19 @@
@use '@angular/material' as mat; @use '@angular/material' as mat;
@import './theme/theme-data'; @import './theme/theme-data';
$custom-theme: mat.define-light-theme( $custom-theme: mat.m2-define-light-theme(
( (
color: ( color: (
primary: map.get($palettes, primary), primary: map.get($palettes, primary),
accent: map.get($palettes, accent), accent: map.get($palettes, accent),
warn: map.get($palettes, warning), warn: map.get($palettes, warning)
), ),
typography: $app-typography, typography: $app-typography
) )
); );
@if $background-color { @if $background-color {
$custom-theme: get-custom-background-color( $custom-theme: get-custom-background-color($background-color, $custom-theme);
$background-color,
$custom-theme
);
} }
@if $text-color { @if $text-color {

View File

@@ -1,31 +1,27 @@
@use '@angular/material' as mat; @use '@angular/material' as mat;
@import './default-colors.scss'; @import './default-colors';
@import './custom-palette-creator.scss'; @import './custom-palette-creator';
@function get-mat-palettes($primary-color, $accent-color) { @function get-mat-palettes($primary-color, $accent-color) {
$mat-primary-palette: null; $mat-primary-palette: null;
@if ($primary-color) { @if ($primary-color) {
$custom-theme-primary-palette: create-color-palette($primary-color, 'primary'); $custom-theme-primary-palette: create-color-palette($primary-color, 'primary');
$mat-primary-palette: mat.define-palette($custom-theme-primary-palette, 500); $mat-primary-palette: mat.m2-define-palette($custom-theme-primary-palette, 500);
} @else { } @else {
$mat-primary-palette: mat.define-palette($default-primary, A100); $mat-primary-palette: mat.m2-define-palette($default-primary, A100);
} }
$mat-accent-palette: null; $mat-accent-palette: null;
@if ($accent-color) { @if ($accent-color) {
$custom-theme-accent-palette: create-color-palette($accent-color, 'accent'); $custom-theme-accent-palette: create-color-palette($accent-color, 'accent');
$mat-accent-palette: mat.define-palette($custom-theme-accent-palette, 500); $mat-accent-palette: mat.m2-define-palette($custom-theme-accent-palette, 500);
} @else { } @else {
$mat-accent-palette: mat.define-palette($default-accent); $mat-accent-palette: mat.m2-define-palette($default-accent);
} }
$mat-warn-palette: mat.define-palette($default-warn, A100); $mat-warn-palette: mat.m2-define-palette($default-warn, A100);
@return ( @return (primary: $mat-primary-palette, accent: $mat-accent-palette, warning: $mat-warn-palette);
primary: $mat-primary-palette,
accent: $mat-accent-palette,
warning: $mat-warn-palette,
);
} }

View File

@@ -3,37 +3,37 @@
@import '../variables/font-family'; @import '../variables/font-family';
@function get-mat-typography($base-font-size, $font-family) { @function get-mat-typography($base-font-size, $font-family) {
$custom-typography: mat.define-typography-config( $custom-typography: mat.m2-define-typography-config(
$font-family: 'Muli, Roboto, "Helvetica Neue", sans-serif', $font-family: 'Muli, Roboto, "Helvetica Neue", sans-serif',
$headline-1: mat.define-typography-level(112px, 112px, 300), $headline-1: mat.m2-define-typography-level(112px, 112px, 300),
$headline-2: mat.define-typography-level(56px, 56px, 400), $headline-2: mat.m2-define-typography-level(56px, 56px, 400),
$headline-3: mat.define-typography-level(45px, 48px, 400), $headline-3: mat.m2-define-typography-level(45px, 48px, 400),
$headline-4: mat.define-typography-level(34px, 40px, 400), $headline-4: mat.m2-define-typography-level(34px, 40px, 400),
$headline-5: mat.define-typography-level(24px, 32px, 400), $headline-5: mat.m2-define-typography-level(24px, 32px, 400),
$headline-6: mat.define-typography-level(20px, 32px, 500), $headline-6: mat.m2-define-typography-level(20px, 32px, 500),
$subtitle-1: mat.define-typography-level(16px, 28px, 400), $subtitle-1: mat.m2-define-typography-level(16px, 28px, 400),
$body-1: mat.define-typography-level(15px, 24px, 400), $body-1: mat.m2-define-typography-level(15px, 24px, 400),
$subtitle-2: mat.define-typography-level(14px, 24px, 500), $subtitle-2: mat.m2-define-typography-level(14px, 24px, 500),
$body-2: mat.define-typography-level(14px, 20px, 400), $body-2: mat.m2-define-typography-level(14px, 20px, 400),
$caption: mat.define-typography-level(12px, 20px, 400), $caption: mat.m2-define-typography-level(12px, 20px, 400),
$button: mat.define-typography-level(14px, 14px, 500), $button: mat.m2-define-typography-level(14px, 14px, 500),
// Line-height must be unit-less fraction of the font-size. // Line-height must be unit-less fraction of the font-size.
); );
@if $base-font-size { @if $base-font-size {
$custom-typography: mat.define-typography-config( $custom-typography: mat.m2-define-typography-config(
$headline-1: mat.define-typography-level(8rem, 8rem, 300), $headline-1: mat.m2-define-typography-level(8rem, 8rem, 300),
$headline-2: mat.define-typography-level(4rem, 4rem, 400), $headline-2: mat.m2-define-typography-level(4rem, 4rem, 400),
$headline-3: mat.define-typography-level(3.21rem, 3.21rem, 400), $headline-3: mat.m2-define-typography-level(3.21rem, 3.21rem, 400),
$headline-4: mat.define-typography-level(2.42rem, 2.85rem, 400), $headline-4: mat.m2-define-typography-level(2.42rem, 2.85rem, 400),
$headline-5: mat.define-typography-level(1.71rem, 2.28rem, 400), $headline-5: mat.m2-define-typography-level(1.71rem, 2.28rem, 400),
$headline-6: mat.define-typography-level(1.42rem, 2.28rem, 500), $headline-6: mat.m2-define-typography-level(1.42rem, 2.28rem, 500),
$subtitle-1: mat.define-typography-level(1.14rem, 2rem, 400), $subtitle-1: mat.m2-define-typography-level(1.14rem, 2rem, 400),
$body-1: mat.define-typography-level(1.07rem, 1.71rem, 400), $body-1: mat.m2-define-typography-level(1.07rem, 1.71rem, 400),
$subtitle-2: mat.define-typography-level(1rem, 1.71rem, 500), $subtitle-2: mat.m2-define-typography-level(1rem, 1.71rem, 500),
$body-2: mat.define-typography-level(1rem, 1.42rem, 400), $body-2: mat.m2-define-typography-level(1rem, 1.42rem, 400),
$caption: mat.define-typography-level(0.86rem, 1.42rem, 400), $caption: mat.m2-define-typography-level(0.86rem, 1.42rem, 400),
$button: mat.define-typography-level(1rem, 1rem, 500), $button: mat.m2-define-typography-level(1rem, 1rem, 500),
$font-family: $default-font-family $font-family: $default-font-family
); );
} }

View File

@@ -51,7 +51,7 @@
"REST_API_FAILED": "No se puede acceder al servidor '{{ hostname }}'", "REST_API_FAILED": "No se puede acceder al servidor '{{ hostname }}'",
"VARIABLE_DROPDOWN_OPTIONS_FAILED": "Ha habido un problema al cargar elementos desplegables. Contacte con el administrador.", "VARIABLE_DROPDOWN_OPTIONS_FAILED": "Ha habido un problema al cargar elementos desplegables. Contacte con el administrador.",
"DATA_TABLE_LOAD_FAILED": "Ha habido un problema al cargar elementos de tabla. Contacte con el administrador.", "DATA_TABLE_LOAD_FAILED": "Ha habido un problema al cargar elementos de tabla. Contacte con el administrador.",
"DATA_TABLE_EMPTY_CONTENT": "No data found", "DATA_TABLE_EMPTY_CONTENT": "No se encontraron datos",
"EXTERNAL_PROPERTY_LOAD_FAILED": "Ha habido un problema al cargar una propiedad externa. Contacte con el administrador.", "EXTERNAL_PROPERTY_LOAD_FAILED": "Ha habido un problema al cargar una propiedad externa. Contacte con el administrador.",
"FILE_NAME": "Nombre del fichero", "FILE_NAME": "Nombre del fichero",
"TITLE": "Título", "TITLE": "Título",

View File

@@ -51,7 +51,7 @@
"REST_API_FAILED": "Le serveur '{{ hostname }}' n'est pas accessible", "REST_API_FAILED": "Le serveur '{{ hostname }}' n'est pas accessible",
"VARIABLE_DROPDOWN_OPTIONS_FAILED": "Un problème est survenu lors du chargement des éléments de la liste déroulante. Veuillez contacter un administrateur.", "VARIABLE_DROPDOWN_OPTIONS_FAILED": "Un problème est survenu lors du chargement des éléments de la liste déroulante. Veuillez contacter un administrateur.",
"DATA_TABLE_LOAD_FAILED": "Un problème est survenu lors du chargement des éléments du tableau. Veuillez contacter un administrateur.", "DATA_TABLE_LOAD_FAILED": "Un problème est survenu lors du chargement des éléments du tableau. Veuillez contacter un administrateur.",
"DATA_TABLE_EMPTY_CONTENT": "No data found", "DATA_TABLE_EMPTY_CONTENT": "Données introuvables",
"EXTERNAL_PROPERTY_LOAD_FAILED": "Un problème est survenu lors du chargement de la propriété externe. Veuillez contacter un administrateur.", "EXTERNAL_PROPERTY_LOAD_FAILED": "Un problème est survenu lors du chargement de la propriété externe. Veuillez contacter un administrateur.",
"FILE_NAME": "Nom de fichier", "FILE_NAME": "Nom de fichier",
"TITLE": "Titre", "TITLE": "Titre",

View File

@@ -51,7 +51,7 @@
"REST_API_FAILED": "Il server '{{ hostname }}' non è raggiungibile", "REST_API_FAILED": "Il server '{{ hostname }}' non è raggiungibile",
"VARIABLE_DROPDOWN_OPTIONS_FAILED": "Si è verificato un problema durante il caricamento degli elementi a discesa. Si prega di contattare lamministratore.", "VARIABLE_DROPDOWN_OPTIONS_FAILED": "Si è verificato un problema durante il caricamento degli elementi a discesa. Si prega di contattare lamministratore.",
"DATA_TABLE_LOAD_FAILED": "Si è verificato un problema durante il caricamento degli elementi della tabella. Si prega di contattare lamministratore.", "DATA_TABLE_LOAD_FAILED": "Si è verificato un problema durante il caricamento degli elementi della tabella. Si prega di contattare lamministratore.",
"DATA_TABLE_EMPTY_CONTENT": "No data found", "DATA_TABLE_EMPTY_CONTENT": "Nessun dato trovato",
"EXTERNAL_PROPERTY_LOAD_FAILED": "Si è verificato un problema durante il caricamento delle proprietà esterne. Si prega di contattare lamministratore.", "EXTERNAL_PROPERTY_LOAD_FAILED": "Si è verificato un problema durante il caricamento delle proprietà esterne. Si prega di contattare lamministratore.",
"FILE_NAME": "Nome file", "FILE_NAME": "Nome file",
"TITLE": "Titolo", "TITLE": "Titolo",

View File

@@ -51,7 +51,7 @@
"REST_API_FAILED": "O servidor `{{ hostname }}` não pode ser acedido", "REST_API_FAILED": "O servidor `{{ hostname }}` não pode ser acedido",
"VARIABLE_DROPDOWN_OPTIONS_FAILED": "Problema ao carregar elementos suspensos. Entre em contacto com o administrador.", "VARIABLE_DROPDOWN_OPTIONS_FAILED": "Problema ao carregar elementos suspensos. Entre em contacto com o administrador.",
"DATA_TABLE_LOAD_FAILED": "Problema ao carregar os elementos da tabela. Entre em contacto com o administrador.", "DATA_TABLE_LOAD_FAILED": "Problema ao carregar os elementos da tabela. Entre em contacto com o administrador.",
"DATA_TABLE_EMPTY_CONTENT": "No data found", "DATA_TABLE_EMPTY_CONTENT": "Não foram encontrados dados",
"EXTERNAL_PROPERTY_LOAD_FAILED": "Houve um problema ao carregar a propriedade externa. Entre em contacto com o administrador.", "EXTERNAL_PROPERTY_LOAD_FAILED": "Houve um problema ao carregar a propriedade externa. Entre em contacto com o administrador.",
"FILE_NAME": "Nome do ficheiro", "FILE_NAME": "Nome do ficheiro",
"TITLE": "Título", "TITLE": "Título",

View File

@@ -26,70 +26,70 @@
// map SCSS variables to expose as CSS variables // map SCSS variables to expose as CSS variables
$defaults: ( $defaults: (
// theme colors // theme colors
--theme-primary-color: mat.get-color-from-palette($primary), --theme-primary-color: mat.m2-get-color-from-palette($primary),
--theme-primary-color-default-contrast: mat.get-color-from-palette($primary, default-contrast), --theme-primary-color-default-contrast: mat.m2-get-color-from-palette($primary, default-contrast),
--theme-header-text-color: mat.get-color-from-palette($primary, default-contrast), --theme-header-text-color: mat.m2-get-color-from-palette($primary, default-contrast),
--adf-theme-primary-50: mat.get-color-from-palette($primary, 50), --adf-theme-primary-50: mat.m2-get-color-from-palette($primary, 50),
--adf-theme-primary-100: mat.get-color-from-palette($primary, 100), --adf-theme-primary-100: mat.m2-get-color-from-palette($primary, 100),
--adf-theme-primary-300: mat.get-color-from-palette($primary, 300), --adf-theme-primary-300: mat.m2-get-color-from-palette($primary, 300),
--adf-theme-primary-900: mat.get-color-from-palette($primary, 900), --adf-theme-primary-900: mat.m2-get-color-from-palette($primary, 900),
--theme-warn-color: mat.get-color-from-palette($warn), --theme-warn-color: mat.m2-get-color-from-palette($warn),
--theme-warn-color-a700: mat.get-color-from-palette($warn, A700), --theme-warn-color-a700: mat.m2-get-color-from-palette($warn, A700),
--theme-warn-color-default-contrast: mat.get-color-from-palette($warn, default-contrast), --theme-warn-color-default-contrast: mat.m2-get-color-from-palette($warn, default-contrast),
--theme-accent-color: mat.get-color-from-palette($accent), --theme-accent-color: mat.m2-get-color-from-palette($accent),
--theme-accent-color-a200: mat.get-color-from-palette($accent, A200), --theme-accent-color-a200: mat.m2-get-color-from-palette($accent, A200),
--theme-accent-color-default-contrast: mat.get-color-from-palette($accent, default-contrast), --theme-accent-color-default-contrast: mat.m2-get-color-from-palette($accent, default-contrast),
--theme-accent-500: mat.get-color-from-palette($accent, 500), --theme-accent-500: mat.m2-get-color-from-palette($accent, 500),
--adf-theme-foreground-base-color: mat.get-color-from-palette($foreground, base), --adf-theme-foreground-base-color: mat.m2-get-color-from-palette($foreground, base),
--adf-theme-foreground-base-color-065: mat.get-color-from-palette($foreground, base, 0.65), --adf-theme-foreground-base-color-065: mat.m2-get-color-from-palette($foreground, base, 0.65),
--adf-theme-foreground-base-color-045: mat.get-color-from-palette($foreground, base, 0.45), --adf-theme-foreground-base-color-045: mat.m2-get-color-from-palette($foreground, base, 0.45),
--adf-theme-foreground-disabled-text-color: mat.get-color-from-palette($foreground, disabled-text), --adf-theme-foreground-disabled-text-color: mat.m2-get-color-from-palette($foreground, disabled-text),
--adf-theme-foreground-divider-color: mat.get-color-from-palette($foreground, divider), --adf-theme-foreground-divider-color: mat.m2-get-color-from-palette($foreground, divider),
--adf-theme-foreground-icon-color: mat.get-color-from-palette($foreground, icon), --adf-theme-foreground-icon-color: mat.m2-get-color-from-palette($foreground, icon),
--adf-theme-foreground-icon-color-054: mat.get-color-from-palette($foreground, icon, 0.54), --adf-theme-foreground-icon-color-054: mat.m2-get-color-from-palette($foreground, icon, 0.54),
--adf-theme-foreground-secondary-text-color: mat.get-color-from-palette($foreground, secondary-text), --adf-theme-foreground-secondary-text-color: mat.m2-get-color-from-palette($foreground, secondary-text),
--adf-theme-foreground-text-color: mat.get-color-from-palette($foreground, text), --adf-theme-foreground-text-color: mat.m2-get-color-from-palette($foreground, text),
--adf-theme-foreground-text-color-087: mat.get-color-from-palette($foreground, text, 0.87), --adf-theme-foreground-text-color-087: mat.m2-get-color-from-palette($foreground, text, 0.87),
--adf-theme-foreground-text-color-075: mat.get-color-from-palette($foreground, text, 0.75), --adf-theme-foreground-text-color-075: mat.m2-get-color-from-palette($foreground, text, 0.75),
--adf-theme-foreground-text-color-064: mat.get-color-from-palette($foreground, text, 0.64), --adf-theme-foreground-text-color-064: mat.m2-get-color-from-palette($foreground, text, 0.64),
--adf-theme-foreground-text-color-054: mat.get-color-from-palette($foreground, text, 0.54), --adf-theme-foreground-text-color-054: mat.m2-get-color-from-palette($foreground, text, 0.54),
--adf-theme-foreground-text-color-040: mat.get-color-from-palette($foreground, text, 0.4), --adf-theme-foreground-text-color-040: mat.m2-get-color-from-palette($foreground, text, 0.4),
--adf-theme-foreground-text-color-027: mat.get-color-from-palette($foreground, text, 0.27), --adf-theme-foreground-text-color-027: mat.m2-get-color-from-palette($foreground, text, 0.27),
--adf-theme-foreground-text-color-025: mat.get-color-from-palette($foreground, text, 0.25), --adf-theme-foreground-text-color-025: mat.m2-get-color-from-palette($foreground, text, 0.25),
--adf-theme-foreground-text-color-014: mat.get-color-from-palette($foreground, text, 0.14), --adf-theme-foreground-text-color-014: mat.m2-get-color-from-palette($foreground, text, 0.14),
--adf-theme-foreground-text-color-007: mat.get-color-from-palette($foreground, text, 0.07), --adf-theme-foreground-text-color-007: mat.m2-get-color-from-palette($foreground, text, 0.07),
--adf-theme-background-card-color: mat.get-color-from-palette($background, card), --adf-theme-background-card-color: mat.m2-get-color-from-palette($background, card),
--adf-theme-background-card-color-087: mat.get-color-from-palette($background, card, 0.87), --adf-theme-background-card-color-087: mat.m2-get-color-from-palette($background, card, 0.87),
--theme-background-color: mat.get-color-from-palette($background, background), --theme-background-color: mat.m2-get-color-from-palette($background, background),
--adf-theme-background-dialog-color: mat.get-color-from-palette($background, dialog), --adf-theme-background-dialog-color: mat.m2-get-color-from-palette($background, dialog),
--adf-theme-background-hover-color: mat.get-color-from-palette($background, hover), --adf-theme-background-hover-color: mat.m2-get-color-from-palette($background, hover),
--adf-theme-background-selected-button-color: mat.get-color-from-palette($background, selected-button), --adf-theme-background-selected-button-color: mat.m2-get-color-from-palette($background, selected-button),
--adf-theme-background-status-bar-color: mat.get-color-from-palette($background, status-bar), --adf-theme-background-status-bar-color: mat.m2-get-color-from-palette($background, status-bar),
--adf-theme-background-unselected-chip-color: mat.get-color-from-palette($background, unselected-chip), --adf-theme-background-unselected-chip-color: mat.m2-get-color-from-palette($background, unselected-chip),
// typography // typography
--theme-font-family: mat.font-family($typography), --theme-font-family: mat.m2-font-family($typography),
--theme-font-weight: normal, --theme-font-weight: normal,
--theme-body-1-font-size: mat.font-size($typography, body-2), --theme-body-1-font-size: mat.m2-font-size($typography, body-2),
--theme-body-2-font-size: mat.font-size($typography, subtitle-2), --theme-body-2-font-size: mat.m2-font-size($typography, subtitle-2),
--theme-body-1-line-height: mat.line-height($typography, body-2), --theme-body-1-line-height: mat.m2-line-height($typography, body-2),
--theme-display-1-font-size: mat.font-size($typography, headline-4), --theme-display-1-font-size: mat.m2-font-size($typography, headline-4),
--theme-display-3-font-size: mat.font-size($typography, headline-2), --theme-display-3-font-size: mat.m2-font-size($typography, headline-2),
--theme-display-4-font-size: mat.font-size($typography, headline-1), --theme-display-4-font-size: mat.m2-font-size($typography, headline-1),
--theme-caption-font-size: mat.font-size($typography, caption), --theme-caption-font-size: mat.m2-font-size($typography, caption),
--theme-title-font-size: mat.font-size($typography, headline-6), --theme-title-font-size: mat.m2-font-size($typography, headline-6),
--theme-subheading-1-font-size: mat.font-size($typography, body-1), --theme-subheading-1-font-size: mat.m2-font-size($typography, body-1),
--theme-subheading-2-font-size: mat.font-size($typography, subtitle-1), --theme-subheading-2-font-size: mat.m2-font-size($typography, subtitle-1),
--theme-button-font-size: mat.font-size($typography, button), --theme-button-font-size: mat.m2-font-size($typography, button),
--theme-headline-font-size: mat.font-size($typography, headline-5), --theme-headline-font-size: mat.m2-font-size($typography, headline-5),
--theme-headline-line-height: mat.line-height($typography, headline-5), --theme-headline-line-height: mat.m2-line-height($typography, headline-5),
--theme-adf-icon-1-font-size: map-get($custom-css-variables, 'theme-adf-icon-1-font-size'), --theme-adf-icon-1-font-size: map-get($custom-css-variables, 'theme-adf-icon-1-font-size'),
--theme-adf-picture-1-font-size: map-get($custom-css-variables, 'theme-adf-picture-1-font-size'), --theme-adf-picture-1-font-size: map-get($custom-css-variables, 'theme-adf-picture-1-font-size'),
--theme-adf-task-footer-font-size: map-get($custom-css-variables, 'theme-adf-task-footer-font-size'), --theme-adf-task-footer-font-size: map-get($custom-css-variables, 'theme-adf-task-footer-font-size'),
--theme-adf-task-title-font-size: map-get($custom-css-variables, 'theme-adf-task-title-font-size'), --theme-adf-task-title-font-size: map-get($custom-css-variables, 'theme-adf-task-title-font-size'),
// specific colors // specific colors
--adf-theme-mat-grey-color-a200: mat.get-color-from-palette(mat.$grey-palette, A200), --adf-theme-mat-grey-color-a200: mat.m2-get-color-from-palette(mat.$m2-grey-palette, 'A200'),
--adf-theme-mat-grey-color-a400: mat.get-color-from-palette(mat.$grey-palette, A400), --adf-theme-mat-grey-color-a400: mat.m2-get-color-from-palette(mat.$m2-grey-palette, 'A400'),
--adf-theme-mat-grey-color-50: mat.get-color-from-palette(mat.$grey-palette, 50), --adf-theme-mat-grey-color-50: mat.m2-get-color-from-palette(mat.$m2-grey-palette, 50),
// spacing // spacing
--adf-theme-spacing: map-get($custom-css-variables, 'theme-adf-spacing'), --adf-theme-spacing: map-get($custom-css-variables, 'theme-adf-spacing'),
// components // components

View File

@@ -1,18 +1,18 @@
@use '@angular/material' as mat; @use '@angular/material' as mat;
$alfresco-typography: mat.define-typography-config( $alfresco-typography: mat.m2-define-typography-config(
$font-family: 'Roboto, "Helvetica Neue", sans-serif', $font-family: 'Roboto, "Helvetica Neue", sans-serif',
$headline-1: mat.define-typography-level(112px, 112px, 300), $headline-1: mat.m2-define-typography-level(112px, 112px, 300),
$headline-2: mat.define-typography-level(56px, 56px, 400), $headline-2: mat.m2-define-typography-level(56px, 56px, 400),
$headline-3: mat.define-typography-level(45px, 48px, 400), $headline-3: mat.m2-define-typography-level(45px, 48px, 400),
$headline-4: mat.define-typography-level(34px, 40px, 400), $headline-4: mat.m2-define-typography-level(34px, 40px, 400),
$headline-5: mat.define-typography-level(24px, 32px, 400), $headline-5: mat.m2-define-typography-level(24px, 32px, 400),
$headline-6: mat.define-typography-level(20px, 32px, 500), $headline-6: mat.m2-define-typography-level(20px, 32px, 500),
$subtitle-1: mat.define-typography-level(16px, 28px, 400), $subtitle-1: mat.m2-define-typography-level(16px, 28px, 400),
$body-1: mat.define-typography-level(15px, 24px, 400), $body-1: mat.m2-define-typography-level(15px, 24px, 400),
$subtitle-2: mat.define-typography-level(14px, 24px, 500), $subtitle-2: mat.m2-define-typography-level(14px, 24px, 500),
$body-2: mat.define-typography-level(14px, 20px, 400), $body-2: mat.m2-define-typography-level(14px, 20px, 400),
$caption: mat.define-typography-level(12px, 20px, 400), $caption: mat.m2-define-typography-level(12px, 20px, 400),
$button: mat.define-typography-level(14px, 14px, 500), $button: mat.m2-define-typography-level(14px, 14px, 500),
// Line-height must be unit-less fraction of the font-size. // Line-height must be unit-less fraction of the font-size.
); );

View File

@@ -27,7 +27,7 @@
class="adf-viewer-pdf-viewer" class="adf-viewer-pdf-viewer"
(window:resize)="onResize()"> (window:resize)="onResize()">
<div [id]="randomPdfId + '-viewer-viewerPdf'" <div [id]="randomPdfId + '-viewer-viewerPdf'"
class="adf-pdfViewer" class="adf-pdfViewer pdfViewer"
role="document" role="document"
tabindex="0" tabindex="0"
aria-expanded="true"> aria-expanded="true">

View File

@@ -114,7 +114,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
displayPage: number; displayPage: number;
totalPages: number; totalPages: number;
loadingPercent: number; loadingPercent: number;
pdfViewer: any; pdfViewer: PDFViewer;
pdfJsWorkerUrl: string; pdfJsWorkerUrl: string;
pdfJsWorkerInstance: Worker; pdfJsWorkerInstance: Worker;
currentScaleMode: PdfScaleMode = 'init'; currentScaleMode: PdfScaleMode = 'init';
@@ -132,7 +132,12 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
documentOverflow = false; documentOverflow = false;
get currentScaleText(): string { get currentScaleText(): string {
return this.pdfViewer?.currentScaleValue ? Math.round(this.pdfViewer.currentScaleValue * 100) + '%' : ''; const currentScaleValueStr = this.pdfViewer?.currentScaleValue;
const scaleNumber = Number(currentScaleValueStr);
const currentScaleText = scaleNumber ? `${Math.round(scaleNumber * 100)}%` : '';
return currentScaleText;
} }
private pdfjsLib = inject(PDFJS_MODULE); private pdfjsLib = inject(PDFJS_MODULE);
@@ -452,10 +457,9 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
*/ */
setScaleUpdatePages(newScale: number) { setScaleUpdatePages(newScale: number) {
if (this.pdfViewer) { if (this.pdfViewer) {
if (!this.isSameScale(this.pdfViewer.currentScaleValue, newScale)) { if (!this.isSameScale(this.pdfViewer.currentScaleValue, newScale.toString())) {
this.pdfViewer.currentScaleValue = newScale; this.pdfViewer.currentScaleValue = newScale.toString();
} }
this.pdfViewer.update(); this.pdfViewer.update();
} }
this.setDocumentOverflow(); this.setDocumentOverflow();
@@ -468,7 +472,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
* @param newScale - new scale page * @param newScale - new scale page
* @returns `true` if the scale is the same, otherwise `false` * @returns `true` if the scale is the same, otherwise `false`
*/ */
isSameScale(oldScale: number, newScale: number): boolean { isSameScale(oldScale: string, newScale: string): boolean {
return newScale === oldScale; return newScale === oldScale;
} }

View File

@@ -1,7 +1,5 @@
<div <div *ngIf="(viewerType === 'media' || viewerType === 'pdf' || viewerType === 'image') ? isLoading || !isContentReady : isLoading"
*ngIf="viewerType === 'media' || viewerType === 'pdf' || viewerType === 'image' ? (isLoading || !isContentReady) : isLoading" class="adf-viewer-render-main-loader">
class="adf-viewer-render-main-loader"
>
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container"> <div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
<div class="adf-viewer-render-content-container"> <div class="adf-viewer-render-content-container">
<div class="adf-viewer-render__loading-screen "> <div class="adf-viewer-render__loading-screen ">
@@ -14,26 +12,21 @@
</div> </div>
</div> </div>
<div <div *ngIf="!isLoading"
[hidden]="viewerType === 'media' || viewerType === 'pdf' || viewerType === 'image' ? (isLoading || !isContentReady) : isLoading" class="adf-viewer-render-main">
class="adf-viewer-render-main"
>
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container"> <div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
<div class="adf-viewer-render-content-container" [ngSwitch]="viewerType"> <div class="adf-viewer-render-content-container" [ngSwitch]="viewerType">
<ng-container *ngSwitchCase="'external'"> <ng-container *ngSwitchCase="'external'">
<adf-preview-extension <adf-preview-extension *ngIf="!!externalViewer"
*ngIf="!!externalViewer"
[id]="externalViewer.component" [id]="externalViewer.component"
[url]="urlFile" [url]="urlFile"
[extension]="externalViewer.fileExtension" [extension]="externalViewer.fileExtension"
[nodeId]="nodeId" [nodeId]="nodeId"
[attr.data-automation-id]="externalViewer.component" [attr.data-automation-id]="externalViewer.component" />
/>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'pdf'"> <ng-container *ngSwitchCase="'pdf'">
<adf-pdf-viewer <adf-pdf-viewer [thumbnailsTemplate]="thumbnailsTemplate"
[thumbnailsTemplate]="thumbnailsTemplate"
[allowThumbnails]="allowThumbnails" [allowThumbnails]="allowThumbnails"
[blobFile]="blobFile" [blobFile]="blobFile"
[urlFile]="urlFile" [urlFile]="urlFile"
@@ -41,13 +34,11 @@
[cacheType]="cacheTypeForContent" [cacheType]="cacheTypeForContent"
(pagesLoaded)="isContentReady = true" (pagesLoaded)="isContentReady = true"
(close)="onClose()" (close)="onClose()"
(error)="onUnsupportedFile()" (error)="onUnsupportedFile()" />
/>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'image'"> <ng-container *ngSwitchCase="'image'">
<adf-img-viewer <adf-img-viewer [urlFile]="urlFile"
[urlFile]="urlFile"
[readOnly]="readOnly" [readOnly]="readOnly"
[fileName]="internalFileName" [fileName]="internalFileName"
[allowedEditActions]="allowedEditActions" [allowedEditActions]="allowedEditActions"
@@ -60,40 +51,35 @@
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'media'"> <ng-container *ngSwitchCase="'media'">
<adf-media-player <adf-media-player id="adf-mdedia-player"
id="adf-mdedia-player"
[urlFile]="urlFile" [urlFile]="urlFile"
[tracks]="tracks" [tracks]="tracks"
[mimeType]="mimeType" [mimeType]="mimeType"
[blobFile]="blobFile" [blobFile]="blobFile"
[fileName]="internalFileName" [fileName]="internalFileName"
(error)="onUnsupportedFile()" (error)="onUnsupportedFile()"
(canPlay)="isContentReady = true" (canPlay)="isContentReady = true"/>
/>
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'text'"> <ng-container *ngSwitchCase="'text'">
<adf-txt-viewer [urlFile]="urlFile" [blobFile]="blobFile" /> <adf-txt-viewer [urlFile]="urlFile"
[blobFile]="blobFile" />
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'custom'"> <ng-container *ngSwitchCase="'custom'">
<ng-container *ngFor="let ext of viewerExtensions"> <ng-container *ngFor="let ext of viewerExtensions">
<adf-preview-extension <adf-preview-extension *ngIf="checkExtensions(ext.fileExtension)"
*ngIf="checkExtensions(ext.fileExtension)"
[id]="ext.component" [id]="ext.component"
[url]="urlFile" [url]="urlFile"
[extension]="extension" [extension]="extension"
[nodeId]="nodeId" [nodeId]="nodeId"
[attr.data-automation-id]="ext.component" [attr.data-automation-id]="ext.component" />
/>
</ng-container> </ng-container>
<ng-container *ngFor="let extensionTemplate of extensionTemplates"> <ng-container *ngFor="let extensionTemplate of extensionTemplates">
<span *ngIf="extensionTemplate.isVisible" class="adf-viewer-render-custom-content"> <span *ngIf="extensionTemplate.isVisible" class="adf-viewer-render-custom-content">
<ng-template <ng-template [ngTemplateOutlet]="extensionTemplate.template"
[ngTemplateOutlet]="extensionTemplate.template" [ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension }" />
[ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension }"
/>
</span> </span>
</ng-container> </ng-container>
</ng-container> </ng-container>

View File

@@ -24,7 +24,7 @@ import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { NoopTranslateModule, UnitTestingUtils } from '../../../testing'; import { NoopTranslateModule, UnitTestingUtils } from '../../../testing';
import { RenderingQueueServices } from '../../services/rendering-queue.services'; import { RenderingQueueServices } from '../../services/rendering-queue.services';
import { ViewerRenderComponent } from './viewer-render.component'; import { ViewerRenderComponent } from './viewer-render.component';
import { ImgViewerComponent, MediaPlayerComponent, PdfViewerComponent, ViewerExtensionDirective } from '@alfresco/adf-core'; import { ImgViewerComponent, MediaPlayerComponent, ViewerExtensionDirective } from '@alfresco/adf-core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
@Component({ @Component({
@@ -504,23 +504,22 @@ describe('ViewerComponent', () => {
expect(getMainLoader()).toBeNull(); expect(getMainLoader()).toBeNull();
expect(component.viewerType).toBe('media'); expect(component.viewerType).toBe('media');
expect(component.isContentReady).toBeTrue();
}); });
it('should show spinner until content is ready when viewerType is pdf', () => { // eslint-disable-next-line ban/ban
xit('should show spinner until content is ready when viewerType is pdf', () => {
component.isLoading = false; component.isLoading = false;
component.urlFile = 'some-url.pdf'; component.urlFile = 'some-url.pdf';
expect(getMainLoader()).toBeNull();
component.ngOnChanges(); component.ngOnChanges();
fixture.detectChanges(); fixture.detectChanges();
const imgViewer = testingUtils.getByDirective(PdfViewerComponent); expect(getMainLoader()).not.toBeNull();
imgViewer.triggerEventHandler('pagesLoaded', null);
fixture.detectChanges(); fixture.detectChanges();
expect(getMainLoader()).toBeNull();
expect(component.viewerType).toBe('pdf'); expect(component.viewerType).toBe('pdf');
expect(component.isContentReady).toBeTrue();
}); });
it('should show spinner until content is ready when viewerType is image', () => { it('should show spinner until content is ready when viewerType is image', () => {
@@ -537,10 +536,9 @@ describe('ViewerComponent', () => {
expect(getMainLoader()).toBeNull(); expect(getMainLoader()).toBeNull();
expect(component.viewerType).toBe('image'); expect(component.viewerType).toBe('image');
expect(component.isContentReady).toBeTrue();
}); });
it('should not show spinner and set isContentReady = true for other viewer types different than media/pdf/image', () => { it('should not show spinner when isLoading = false and isContentReady = false for other viewer types', () => {
component.isLoading = false; component.isLoading = false;
component.urlFile = 'some-url.txt'; component.urlFile = 'some-url.txt';
@@ -548,7 +546,7 @@ describe('ViewerComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
expect(getMainLoader()).toBeNull(); expect(getMainLoader()).toBeNull();
expect(component.isContentReady).toBeTrue(); expect(component.isContentReady).toBeFalse();
}); });
}); });
}); });

View File

@@ -29,8 +29,6 @@ import { PdfViewerComponent } from '../pdf-viewer/pdf-viewer.component';
import { TxtViewerComponent } from '../txt-viewer/txt-viewer.component'; import { TxtViewerComponent } from '../txt-viewer/txt-viewer.component';
import { UnknownFormatComponent } from '../unknown-format/unknown-format.component'; import { UnknownFormatComponent } from '../unknown-format/unknown-format.component';
type ViewerType = 'media' | 'image' | 'pdf' | 'unknown';
@Component({ @Component({
selector: 'adf-viewer-render', selector: 'adf-viewer-render',
standalone: true, standalone: true,
@@ -143,7 +141,7 @@ export class ViewerRenderComponent implements OnChanges, OnInit {
extensionsSupportedByTemplates: string[] = []; extensionsSupportedByTemplates: string[] = [];
extension: string; extension: string;
internalFileName: string; internalFileName: string;
viewerType: ViewerType = 'unknown'; viewerType: string = 'unknown';
isContentReady = false; isContentReady = false;
/** /**
@@ -187,25 +185,19 @@ export class ViewerRenderComponent implements OnChanges, OnInit {
} }
ngOnChanges() { ngOnChanges() {
this.updateLoadingState(); this.isContentReady = false;
this.isLoading = !this.blobFile && !this.urlFile;
if (this.blobFile) { if (this.blobFile) {
this.setUpBlobData(); this.setUpBlobData();
} else if (this.urlFile) { } else if (this.urlFile) {
this.setUpUrlFile(); this.setUpUrlFile();
} }
this.updateLoadingState();
}
private updateLoadingState() {
this.isContentReady = !(this.viewerType === 'media' || this.viewerType === 'pdf' || this.viewerType === 'image');
this.isLoading = !this.blobFile && !this.urlFile;
} }
private setUpBlobData() { private setUpBlobData() {
this.internalFileName = this.fileName; this.internalFileName = this.fileName;
this.viewerType = this.viewUtilService.getViewerTypeByMimeType(this.blobFile.type) as ViewerType; this.viewerType = this.viewUtilService.getViewerTypeByMimeType(this.blobFile.type);
this.extensionChange.emit(this.blobFile.type); this.extensionChange.emit(this.blobFile.type);
this.scrollTop(); this.scrollTop();
@@ -214,7 +206,7 @@ export class ViewerRenderComponent implements OnChanges, OnInit {
private setUpUrlFile() { private setUpUrlFile() {
this.internalFileName = this.fileName ? this.fileName : this.viewUtilService.getFilenameFromUrl(this.urlFile); this.internalFileName = this.fileName ? this.fileName : this.viewUtilService.getFilenameFromUrl(this.urlFile);
this.extension = this.viewUtilService.getFileExtension(this.internalFileName); this.extension = this.viewUtilService.getFileExtension(this.internalFileName);
this.viewerType = this.viewUtilService.getViewerType(this.extension, this.mimeType, this.extensionsSupportedByTemplates) as ViewerType; this.viewerType = this.viewUtilService.getViewerType(this.extension, this.mimeType, this.extensionsSupportedByTemplates);
this.extensionChange.emit(this.extension); this.extensionChange.emit(this.extension);
this.scrollTop(); this.scrollTop();

View File

@@ -5,6 +5,9 @@ export default {
testEnvironment: 'jsdom', testEnvironment: 'jsdom',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'], setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../../coverage/libs/js-api', coverageDirectory: '../../../coverage/libs/js-api',
moduleMNameMapper: {
'^pdfjs-dist$': 'pdfjs-dist/legacy/build/pdf'
},
transform: { transform: {
'^.+\\.(ts|mjs|js|html)$': [ '^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular', 'jest-preset-angular',

View File

@@ -1 +1 @@
20.18.1 22.14.0

View File

@@ -381,7 +381,7 @@
"DESTINATION_FOLDER_PATH_ERROR": "La ruta de destino es incorrecta o no existe, vuelva a -mi- ubicación" "DESTINATION_FOLDER_PATH_ERROR": "La ruta de destino es incorrecta o no existe, vuelva a -mi- ubicación"
}, },
"OPEN_NEXT_TASK": { "OPEN_NEXT_TASK": {
"LABEL": "Open next task" "LABEL": "Abrir la siguiente tarea"
} }
}, },
"ADF_CLOUD_FORM_COMPONENT": { "ADF_CLOUD_FORM_COMPONENT": {

View File

@@ -381,7 +381,7 @@
"DESTINATION_FOLDER_PATH_ERROR": "Le chemin de destination est incorrect ou n'existe pas. Revenir à 'mon emplacement'" "DESTINATION_FOLDER_PATH_ERROR": "Le chemin de destination est incorrect ou n'existe pas. Revenir à 'mon emplacement'"
}, },
"OPEN_NEXT_TASK": { "OPEN_NEXT_TASK": {
"LABEL": "Open next task" "LABEL": "Ouvrir la tâche suivante"
} }
}, },
"ADF_CLOUD_FORM_COMPONENT": { "ADF_CLOUD_FORM_COMPONENT": {

View File

@@ -381,7 +381,7 @@
"DESTINATION_FOLDER_PATH_ERROR": "Il percorso di destinazione non è corretto o non esiste: eseguire il ripristino alla posizione personale" "DESTINATION_FOLDER_PATH_ERROR": "Il percorso di destinazione non è corretto o non esiste: eseguire il ripristino alla posizione personale"
}, },
"OPEN_NEXT_TASK": { "OPEN_NEXT_TASK": {
"LABEL": "Open next task" "LABEL": "Apri l'attività successiva"
} }
}, },
"ADF_CLOUD_FORM_COMPONENT": { "ADF_CLOUD_FORM_COMPONENT": {

View File

@@ -381,7 +381,7 @@
"DESTINATION_FOLDER_PATH_ERROR": "O caminho de destino está incorreto ou não existe, reverter para a localização -meu- " "DESTINATION_FOLDER_PATH_ERROR": "O caminho de destino está incorreto ou não existe, reverter para a localização -meu- "
}, },
"OPEN_NEXT_TASK": { "OPEN_NEXT_TASK": {
"LABEL": "Open next task" "LABEL": "Abrir a próxima tarefa"
} }
}, },
"ADF_CLOUD_FORM_COMPONENT": { "ADF_CLOUD_FORM_COMPONENT": {

View File

@@ -26,8 +26,8 @@ import { LocalPreferenceCloudService } from '../../../../services/local-preferen
import { mockProcessFilters } from '../../mock/process-filters-cloud.mock'; import { mockProcessFilters } from '../../mock/process-filters-cloud.mock';
import { AppConfigService, AppConfigServiceMock, NoopTranslateModule } from '@alfresco/adf-core'; import { AppConfigService, AppConfigServiceMock, NoopTranslateModule } from '@alfresco/adf-core';
import { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service'; import { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service';
import { ApolloModule } from 'apollo-angular';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { ApolloTestingModule } from 'apollo-angular/testing';
const ProcessFilterCloudServiceMock = { const ProcessFilterCloudServiceMock = {
getProcessFilters: () => of(mockProcessFilters), getProcessFilters: () => of(mockProcessFilters),
@@ -44,7 +44,7 @@ describe('ProcessFiltersCloudComponent', () => {
const configureTestingModule = (searchApiMethod: 'GET' | 'POST') => { const configureTestingModule = (searchApiMethod: 'GET' | 'POST') => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopTranslateModule, NoopAnimationsModule, ProcessFiltersCloudComponent], imports: [NoopTranslateModule, NoopAnimationsModule, ProcessFiltersCloudComponent, ApolloTestingModule],
providers: [ providers: [
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }, { provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
@@ -55,8 +55,7 @@ describe('ProcessFiltersCloudComponent', () => {
getProcessListCounter: () => of(10) getProcessListCounter: () => of(10)
} }
}, },
{ provide: ProcessFilterCloudService, useValue: ProcessFilterCloudServiceMock }, { provide: ProcessFilterCloudService, useValue: ProcessFilterCloudServiceMock }
ApolloModule
] ]
}); });
fixture = TestBed.createComponent(ProcessFiltersCloudComponent); fixture = TestBed.createComponent(ProcessFiltersCloudComponent);

View File

@@ -32,6 +32,7 @@ import {
import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model'; import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';
import { IdentityUserService } from '../../../people/services/identity-user.service'; import { IdentityUserService } from '../../../people/services/identity-user.service';
import { NotificationCloudService } from '../../../services/notification-cloud.service'; import { NotificationCloudService } from '../../../services/notification-cloud.service';
import { ApolloTestingModule } from 'apollo-angular/testing';
describe('ProcessFilterCloudService', () => { describe('ProcessFilterCloudService', () => {
let service: ProcessFilterCloudService; let service: ProcessFilterCloudService;
@@ -51,7 +52,7 @@ describe('ProcessFilterCloudService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessServiceCloudTestingModule], imports: [ProcessServiceCloudTestingModule, ApolloTestingModule],
providers: [{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }] providers: [{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }]
}); });
service = TestBed.inject(ProcessFilterCloudService); service = TestBed.inject(ProcessFilterCloudService);

View File

@@ -21,7 +21,6 @@ import { MatDialog } from '@angular/material/dialog';
import { of, Subject } from 'rxjs'; import { of, Subject } from 'rxjs';
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../../services/cloud-token.service'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../../services/cloud-token.service';
import { LocalPreferenceCloudService } from '../../../../../services/local-preference-cloud.service'; import { LocalPreferenceCloudService } from '../../../../../services/local-preference-cloud.service';
import { ProcessServiceCloudTestingModule } from '../../../../../testing/process-service-cloud.testing.module';
import { AppsProcessCloudService } from '../../../../../app/services/apps-process-cloud.service'; import { AppsProcessCloudService } from '../../../../../app/services/apps-process-cloud.service';
import { fakeApplicationInstance, fakeApplicationInstanceWithEnvironment } from '../../../../../app/mock/app-model.mock'; import { fakeApplicationInstance, fakeApplicationInstanceWithEnvironment } from '../../../../../app/mock/app-model.mock';
import { ServiceTaskFilterCloudService } from '../../../services/service-task-filter-cloud.service'; import { ServiceTaskFilterCloudService } from '../../../services/service-task-filter-cloud.service';
@@ -38,6 +37,11 @@ import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatExpansionPanelHarness } from '@angular/material/expansion/testing'; import { MatExpansionPanelHarness } from '@angular/material/expansion/testing';
import { MatSelectHarness } from '@angular/material/select/testing'; import { MatSelectHarness } from '@angular/material/select/testing';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing'; import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';
import { NoopAuthModule, NoopTranslateModule } from '@alfresco/adf-core';
import { ApolloTestingModule } from 'apollo-angular/testing';
import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
import { DateFnsAdapter } from '@angular/material-date-fns-adapter';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('EditServiceTaskFilterCloudComponent', () => { describe('EditServiceTaskFilterCloudComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -53,8 +57,19 @@ describe('EditServiceTaskFilterCloudComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessServiceCloudTestingModule, MatIconTestingModule, EditServiceTaskFilterCloudComponent], imports: [
providers: [MatDialog, { provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }] MatIconTestingModule,
NoopAnimationsModule,
EditServiceTaskFilterCloudComponent,
NoopTranslateModule,
ApolloTestingModule,
NoopAuthModule
],
providers: [
MatDialog,
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
{ provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] }
]
}); });
fixture = TestBed.createComponent(EditServiceTaskFilterCloudComponent); fixture = TestBed.createComponent(EditServiceTaskFilterCloudComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@@ -22,7 +22,6 @@ import { MatDialog } from '@angular/material/dialog';
import { of, Subject } from 'rxjs'; import { of, Subject } from 'rxjs';
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../../services/cloud-token.service'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../../services/cloud-token.service';
import { LocalPreferenceCloudService } from '../../../../../services/local-preference-cloud.service'; import { LocalPreferenceCloudService } from '../../../../../services/local-preference-cloud.service';
import { ProcessServiceCloudTestingModule } from '../../../../../testing/process-service-cloud.testing.module';
import { AppsProcessCloudService } from '../../../../../app/services/apps-process-cloud.service'; import { AppsProcessCloudService } from '../../../../../app/services/apps-process-cloud.service';
import { fakeApplicationInstance } from '../../../../../app/mock/app-model.mock'; import { fakeApplicationInstance } from '../../../../../app/mock/app-model.mock';
import { EditTaskFilterCloudComponent } from './edit-task-filter-cloud.component'; import { EditTaskFilterCloudComponent } from './edit-task-filter-cloud.component';
@@ -56,6 +55,11 @@ import { MatSelectHarness } from '@angular/material/select/testing';
import { MatExpansionPanelHarness } from '@angular/material/expansion/testing'; import { MatExpansionPanelHarness } from '@angular/material/expansion/testing';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing'; import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';
import { PeopleCloudComponent } from '@alfresco/adf-process-services-cloud'; import { PeopleCloudComponent } from '@alfresco/adf-process-services-cloud';
import { ApolloTestingModule } from 'apollo-angular/testing';
import { ADF_DATE_FORMATS, NoopAuthModule, NoopTranslateModule } from '@alfresco/adf-core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import { DateFnsAdapter } from '@angular/material-date-fns-adapter';
describe('EditTaskFilterCloudComponent', () => { describe('EditTaskFilterCloudComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -73,8 +77,21 @@ describe('EditTaskFilterCloudComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessServiceCloudTestingModule, PeopleCloudComponent, MatIconTestingModule, EditTaskFilterCloudComponent], imports: [
providers: [MatDialog, { provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }] NoopAuthModule,
NoopAnimationsModule,
NoopTranslateModule,
PeopleCloudComponent,
MatIconTestingModule,
EditTaskFilterCloudComponent,
ApolloTestingModule
],
providers: [
MatDialog,
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
{ provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] },
{ provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }
]
}); });
fixture = TestBed.createComponent(EditTaskFilterCloudComponent); fixture = TestBed.createComponent(EditTaskFilterCloudComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@@ -40,7 +40,6 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
import { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component'; import { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component';
import { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component'; import { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component';
import { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component'; import { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component';
import { ApolloModule } from 'apollo-angular';
@Component({ @Component({
selector: 'adf-cloud-edit-task-filter', selector: 'adf-cloud-edit-task-filter',
@@ -61,8 +60,7 @@ import { ApolloModule } from 'apollo-angular';
MatCheckboxModule, MatCheckboxModule,
DateRangeFilterComponent, DateRangeFilterComponent,
PeopleCloudComponent, PeopleCloudComponent,
TaskAssignmentFilterCloudComponent, TaskAssignmentFilterCloudComponent
ApolloModule
], ],
templateUrl: './edit-task-filter-cloud.component.html', templateUrl: './edit-task-filter-cloud.component.html',
styleUrls: ['./edit-task-filter-cloud.component.scss'], styleUrls: ['./edit-task-filter-cloud.component.scss'],

View File

@@ -15,14 +15,13 @@
* limitations under the License. * limitations under the License.
*/ */
import { AppConfigService } from '@alfresco/adf-core'; import { AppConfigService, NoopAuthModule, NoopTranslateModule } from '@alfresco/adf-core';
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed, fakeAsync, flush } from '@angular/core/testing'; import { ComponentFixture, TestBed, fakeAsync, flush } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { first, of, throwError } from 'rxjs'; import { first, of, throwError } from 'rxjs';
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../services/cloud-token.service'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../../services/cloud-token.service';
import { LocalPreferenceCloudService } from '../../../../services/local-preference-cloud.service'; import { LocalPreferenceCloudService } from '../../../../services/local-preference-cloud.service';
import { ProcessServiceCloudTestingModule } from '../../../../testing/process-service-cloud.testing.module';
import { defaultTaskFiltersMock, fakeGlobalFilter, taskNotifications } from '../../mock/task-filters-cloud.mock'; import { defaultTaskFiltersMock, fakeGlobalFilter, taskNotifications } from '../../mock/task-filters-cloud.mock';
import { TaskFilterCloudService } from '../../services/task-filter-cloud.service'; import { TaskFilterCloudService } from '../../services/task-filter-cloud.service';
import { TaskFiltersCloudComponent } from './task-filters-cloud.component'; import { TaskFiltersCloudComponent } from './task-filters-cloud.component';
@@ -31,6 +30,8 @@ import { HarnessLoader } from '@angular/cdk/testing';
import { MatActionListItemHarness } from '@angular/material/list/testing'; import { MatActionListItemHarness } from '@angular/material/list/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { TaskFilterCloudAdapter } from '../../../../models/filter-cloud-model'; import { TaskFilterCloudAdapter } from '../../../../models/filter-cloud-model';
import { ApolloTestingModule } from 'apollo-angular/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('TaskFiltersCloudComponent', () => { describe('TaskFiltersCloudComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@@ -46,7 +47,7 @@ describe('TaskFiltersCloudComponent', () => {
const configureTestingModule = (searchApiMethod: 'GET' | 'POST') => { const configureTestingModule = (searchApiMethod: 'GET' | 'POST') => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudComponent], imports: [NoopAuthModule, NoopAnimationsModule, NoopTranslateModule, TaskFiltersCloudComponent, ApolloTestingModule],
providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }] providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }]
}); });
taskFilterService = TestBed.inject(TaskFilterCloudService); taskFilterService = TestBed.inject(TaskFilterCloudService);

View File

@@ -34,9 +34,9 @@ import { HttpClientTestingModule } from '@angular/common/http/testing';
import { NotificationCloudService } from '../../../services/notification-cloud.service'; import { NotificationCloudService } from '../../../services/notification-cloud.service';
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module'; import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
import { IdentityUserService } from '../../../people/services/identity-user.service'; import { IdentityUserService } from '../../../people/services/identity-user.service';
import { ApolloModule } from 'apollo-angular';
import { StorageService } from '@alfresco/adf-core'; import { StorageService } from '@alfresco/adf-core';
import { TaskStatusFilter } from '../public-api'; import { TaskStatusFilter } from '../public-api';
import { ApolloTestingModule } from 'apollo-angular/testing';
describe('TaskFilterCloudService', () => { describe('TaskFilterCloudService', () => {
let service: TaskFilterCloudService; let service: TaskFilterCloudService;
@@ -56,7 +56,7 @@ describe('TaskFilterCloudService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, ProcessServiceCloudTestingModule, ApolloModule], imports: [HttpClientTestingModule, ProcessServiceCloudTestingModule, ApolloTestingModule],
providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }] providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }]
}); });
service = TestBed.inject(TaskFilterCloudService); service = TestBed.inject(TaskFilterCloudService);
@@ -265,7 +265,7 @@ describe('Inject [LocalPreferenceCloudService] into the TaskFilterCloudService',
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, ProcessServiceCloudTestingModule, ApolloModule], imports: [HttpClientTestingModule, ProcessServiceCloudTestingModule, ApolloTestingModule],
providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }] providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }]
}); });
service = TestBed.inject(TaskFilterCloudService); service = TestBed.inject(TaskFilterCloudService);

View File

@@ -20,8 +20,7 @@ import { of, throwError } from 'rxjs';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ComponentFixture, TestBed, fakeAsync, flush, discardPeriodicTasks } from '@angular/core/testing'; import { ComponentFixture, TestBed, fakeAsync, flush, discardPeriodicTasks } from '@angular/core/testing';
import { AlfrescoApiService } from '@alfresco/adf-content-services'; import { AlfrescoApiService } from '@alfresco/adf-content-services';
import { AppConfigService } from '@alfresco/adf-core'; import { AppConfigService, NoopAuthModule, NoopTranslateModule } from '@alfresco/adf-core';
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
import { TaskCloudService } from '../../services/task-cloud.service'; import { TaskCloudService } from '../../services/task-cloud.service';
import { import {
assignedTaskDetailsCloudMock, assignedTaskDetailsCloudMock,
@@ -34,6 +33,8 @@ import {
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatSelectHarness } from '@angular/material/select/testing'; import { MatSelectHarness } from '@angular/material/select/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('TaskHeaderCloudComponent', () => { describe('TaskHeaderCloudComponent', () => {
let component: TaskHeaderCloudComponent; let component: TaskHeaderCloudComponent;
@@ -60,7 +61,7 @@ describe('TaskHeaderCloudComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessServiceCloudTestingModule, TaskHeaderCloudComponent] imports: [TaskHeaderCloudComponent, HttpClientTestingModule, NoopTranslateModule, NoopAuthModule, NoopAnimationsModule]
}); });
appConfigService = TestBed.inject(AppConfigService); appConfigService = TestBed.inject(AppConfigService);
appConfigService.config = { appConfigService.config = {
@@ -188,8 +189,9 @@ describe('TaskHeaderCloudComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
expect(taskCloudService.updateTask).toHaveBeenCalled(); expect(taskCloudService.updateTask).toHaveBeenCalled();
}); });
// This test is keep failing even though not clearly it just triggers an error in the afterAll so it's hidden
it('should roll back task description on error', fakeAsync(() => { // eslint-disable-next-line
xit('should roll back task description on error', fakeAsync(() => {
spyOn(taskCloudService, 'updateTask').and.returnValue(throwError('fake')); spyOn(taskCloudService, 'updateTask').and.returnValue(throwError('fake'));
fixture.detectChanges(); fixture.detectChanges();

14725
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -29,26 +29,25 @@
"process services-cloud" "process services-cloud"
], ],
"dependencies": { "dependencies": {
"@angular/animations": "17.1.3", "@angular/animations": "18.2.13",
"@angular/cdk": "17.1.2", "@angular/cdk": "18.2.14",
"@angular/common": "17.1.3", "@angular/common": "18.2.13",
"@angular/compiler": "17.1.3", "@angular/compiler": "18.2.13",
"@angular/core": "17.1.3", "@angular/core": "18.2.13",
"@angular/forms": "17.1.3", "@angular/forms": "18.2.13",
"@angular/material": "17.1.2", "@angular/material": "18.2.14",
"@angular/material-date-fns-adapter": "17.1.2", "@angular/material-date-fns-adapter": "18.2.14",
"@angular/platform-browser": "17.1.3", "@angular/platform-browser": "18.2.13",
"@angular/platform-browser-dynamic": "17.1.3", "@angular/platform-browser-dynamic": "18.2.13",
"@angular/router": "17.1.3", "@angular/router": "18.2.13",
"@apollo/client": "^3.13.4", "@apollo/client": "3.13.1",
"@cspell/eslint-plugin": "8.16.1", "@cspell/eslint-plugin": "8.16.1",
"@mat-datetimepicker/core": "13.0.2", "@mat-datetimepicker/core": "14.0.0",
"@ngx-translate/core": "^14.0.0", "@ngx-translate/core": "^14.0.0",
"@nx/webpack": "^20.0.0", "@nx/webpack": "^20.0.0",
"@valano/change-font-size": "^1.0.0",
"angular-oauth2-oidc": "17.0.2", "angular-oauth2-oidc": "17.0.2",
"angular-oauth2-oidc-jwks": "^17.0.2", "angular-oauth2-oidc-jwks": "^17.0.2",
"apollo-angular": "6.0.0", "apollo-angular": "10.0.3",
"chart.js": "4.4.4", "chart.js": "4.4.4",
"cropperjs": "1.6.2", "cropperjs": "1.6.2",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
@@ -56,27 +55,28 @@
"event-emitter": "^0.3.5", "event-emitter": "^0.3.5",
"graphql-ws": "^5.16.0", "graphql-ws": "^5.16.0",
"material-icons": "^1.13.12", "material-icons": "^1.13.12",
"minimatch": "^10.0.1", "minimatch-browser": "1.0.0",
"ng2-charts": "^4.1.1", "ng2-charts": "^4.1.1",
"node-fetch": "^3.3.2",
"pdfjs-dist": "5.1.91", "pdfjs-dist": "5.1.91",
"raphael": "2.3.0", "raphael": "2.3.0",
"rxjs": "7.8.1", "rxjs": "7.8.1",
"superagent": "^9.0.1", "superagent": "^9.0.1",
"ts-morph": "^20.0.0", "ts-morph": "^20.0.0",
"tslib": "2.8.1", "tslib": "2.8.1",
"zone.js": "0.14.8" "zone.js": "0.14.10"
}, },
"devDependencies": { "devDependencies": {
"@alfresco/eslint-plugin-eslint-angular": "file:lib/eslint-angular", "@alfresco/eslint-plugin-eslint-angular": "file:lib/eslint-angular",
"@angular-devkit/architect": "0.1701.4", "@angular-devkit/architect": "0.1802.13",
"@angular-devkit/build-angular": "17.3.16", "@angular-devkit/build-angular": "18.2.14",
"@angular-devkit/core": "17.1.4", "@angular-devkit/core": "18.2.13",
"@angular-devkit/schematics": "17.1.4", "@angular-devkit/schematics": "18.2.13",
"@angular-eslint/eslint-plugin": "17.0.1", "@angular-eslint/eslint-plugin": "17.0.1",
"@angular-eslint/eslint-plugin-template": "17.0.1", "@angular-eslint/eslint-plugin-template": "17.0.1",
"@angular-eslint/template-parser": "17.0.1", "@angular-eslint/template-parser": "17.0.1",
"@angular/cli": "~17.1.0", "@angular/cli": "~17.1.0",
"@angular/compiler-cli": "17.1.3", "@angular/compiler-cli": "18.2.13",
"@chromatic-com/storybook": "1.7.0", "@chromatic-com/storybook": "1.7.0",
"@editorjs/code": "2.9.3", "@editorjs/code": "2.9.3",
"@editorjs/editorjs": "2.30.8", "@editorjs/editorjs": "2.30.8",
@@ -84,20 +84,20 @@
"@editorjs/inline-code": "1.5.1", "@editorjs/inline-code": "1.5.1",
"@editorjs/list": "2.0.4", "@editorjs/list": "2.0.4",
"@editorjs/marker": "1.4.0", "@editorjs/marker": "1.4.0",
"@editorjs/paragraph": "2.11.7", "@editorjs/paragraph": "^2.11.7",
"@editorjs/underline": "1.2.1", "@editorjs/underline": "1.2.1",
"@nx/angular": "17.3.1", "@nx/angular": "19.2.0",
"@nx/eslint-plugin": "20.6.0", "@nx/eslint-plugin": "20.6.0",
"@nx/js": "17.3.1", "@nx/js": "18.3.5",
"@nx/node": "20.6.2", "@nx/node": "20.6.2",
"@nx/storybook": "20.6.4", "@nx/storybook": "20.6.4",
"@nx/workspace": "17.3.1", "@nx/workspace": "18.3.5",
"@paperist/types-remark": "0.1.3", "@paperist/types-remark": "0.1.3",
"@playwright/test": "1.46.1", "@playwright/test": "1.46.1",
"@schematics/angular": "17.1.4", "@schematics/angular": "17.1.4",
"@storybook/addon-essentials": "8.4.7", "@storybook/addon-essentials": "8.4.7",
"@storybook/addon-interactions": "8.4.7", "@storybook/addon-interactions": "8.4.7",
"@storybook/angular": "^8.4.6", "@storybook/angular": "8.4.7",
"@storybook/core-server": "8.4.7", "@storybook/core-server": "8.4.7",
"@storybook/manager-api": "^8.4.5", "@storybook/manager-api": "^8.4.5",
"@storybook/theming": "^8.2.9", "@storybook/theming": "^8.2.9",
@@ -108,7 +108,6 @@
"@types/jest": "^29.5.14", "@types/jest": "^29.5.14",
"@types/jsdom": "^21.1.5", "@types/jsdom": "^21.1.5",
"@types/minimatch": "5.1.2", "@types/minimatch": "5.1.2",
"@types/mocha": "^10.0.6",
"@types/node": "^18.16.9", "@types/node": "^18.16.9",
"@types/pdfjs-dist": "2.10.378", "@types/pdfjs-dist": "2.10.378",
"@types/shelljs": "^0.8.15", "@types/shelljs": "^0.8.15",
@@ -117,6 +116,7 @@
"@typescript-eslint/parser": "6.21.0", "@typescript-eslint/parser": "6.21.0",
"@typescript-eslint/typescript-estree": "7.1.1", "@typescript-eslint/typescript-estree": "7.1.1",
"@typescript-eslint/utils": "^8.8.1", "@typescript-eslint/utils": "^8.8.1",
"@valano/change-font-size": "^1.0.1",
"ajv": "^8.12.0", "ajv": "^8.12.0",
"commander": "12.0.0", "commander": "12.0.0",
"dotenv": "16.4.7", "dotenv": "16.4.7",
@@ -159,9 +159,12 @@
"lint-staged": "15.2.9", "lint-staged": "15.2.9",
"mocha": "10.7.3", "mocha": "10.7.3",
"moment": "^2.29.4", "moment": "^2.29.4",
"ng-packagr": "17.1.2", "ng-packagr": "18.2.1",
"nock": "13.5.5", "nock": "13.5.5",
"npm-run-all": "^4.1.5",
"nx": "^20.0.0", "nx": "^20.0.0",
"postcss": "8.4.41",
"postcss-sass": "^0.5.0",
"prettier": "2.8.8", "prettier": "2.8.8",
"resize-observer-polyfill": "^1.5.1", "resize-observer-polyfill": "^1.5.1",
"rimraf": "6.0.1", "rimraf": "6.0.1",
@@ -171,8 +174,11 @@
"stylelint": "16.8.2", "stylelint": "16.8.2",
"stylelint-config-standard-scss": "^13.1.0", "stylelint-config-standard-scss": "^13.1.0",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "5.3.3", "tsconfig-paths": "^4.1.1",
"webpack": "5.97.1" "typescript": "5.5.4",
"webdriver-manager": "12.1.9",
"webpack": "5.97.1",
"webpack-cli": "^5.1.4"
}, },
"license": "Apache-2.0", "license": "Apache-2.0",
"engines": { "engines": {