Compare commits

..
Author SHA1 Message Date
deepusingh1304 7fdc76b48f Recheck request 2025-06-18 06:43:06 -04:00
deepusingh1304 4edd377cd3 Draft 2025-06-18 05:15:09 -04:00
1478 changed files with 53503 additions and 34426 deletions
+21
View File
@@ -0,0 +1,21 @@
.git
.github
.vscode
assets
coverage
docs
e2e
e2e-output
node_modules
scripts
src
lib
tools
/angular.json
/desktop.ini
/cspell.json
/CODE_OF_CONDUCT.md
/.stylelintignore
/ALFRESCOCORS.md
/CONTRIBUTING.md
/BROWSER-SUPPORT.md
+1
View File
@@ -9,4 +9,5 @@ scripts
/angular.json
docs/**/*.md
lib/js-api/docs/**/*.md
.storybook
webpack.config.js
+14 -10
View File
@@ -1,7 +1,16 @@
module.exports = {
root: true,
ignorePatterns: ['projects/**/*', '**/node_modules/**/*', 'lib/cli/node_modules/**/*', '**/node_modules', '**/assets', '**/scripts', '**/docs'],
ignorePatterns: [
'projects/**/*',
'**/node_modules/**/*',
'lib/cli/node_modules/**/*',
'**/node_modules',
'**/docker',
'**/assets',
'**/scripts',
'**/docs'
],
plugins: ['@nx'],
@@ -19,11 +28,6 @@ module.exports = {
'plugin:@angular-eslint/recommended',
'plugin:@angular-eslint/template/process-inline-templates',
'plugin:jsdoc/recommended-typescript-error'
// Uncomment this once all linting issues are fixed
// Note to developers:
// you can uncomment the full ruleset locally when fixing issues, and then comment
// that will allow splitting the work into smaller chunks
// 'plugin:unicorn/recommended'
],
plugins: [
'eslint-plugin-unicorn',
@@ -148,7 +152,6 @@ module.exports = {
'rxjs/no-subject-value': 'error',
'rxjs/no-unsafe-takeuntil': 'error',
'unicorn/filename-case': 'error',
'unicorn/prefer-optional-catch-binding': 'error',
'@typescript-eslint/no-unused-expressions': [
'error',
{
@@ -191,8 +194,7 @@ module.exports = {
files: ['*.spec.ts'],
plugins: ['@alfresco/eslint-angular'],
rules: {
'@alfresco/eslint-angular/no-angular-material-selectors': 'error',
'@angular-eslint/component-class-suffix': 'off'
'@alfresco/eslint-angular/no-angular-material-selectors': 'error'
}
},
{
@@ -207,5 +209,7 @@ module.exports = {
'comma-dangle': ['error', 'never']
}
}
]
],
extends: ['plugin:storybook/recommended']
};
+8 -4
View File
@@ -9,6 +9,12 @@ inputs:
runs:
using: "composite"
steps:
- name: Before install
if: ${{ ! env.ACT }}
shell: bash
run: |
pip install --user --quiet awscli
- name: base vars
shell: bash
run: |
@@ -45,13 +51,11 @@ runs:
- name: RELEASE on master/develop patch branch
if: ${{ env.BREAK_ACTION == false && github.event.pull_request.merged }}
shell: bash
env:
REF_NAME: ${{ github.ref_name }}
run: |
if [[ "$REF_NAME" =~ ^master(-patch.*)?$ ]]; then
if [[ "${{ github.ref_name }}" =~ ^master(-patch.*)?$ ]]; then
# into master(-patch*)
echo "Setting up CI flags for Push on master patch"
elif [[ "$REF_NAME" =~ ^develop-patch.*$ ]]; then
elif [[ "${{ github.ref_name }}" =~ ^develop-patch.*$ ]]; then
# into develop-patch*
echo "Setting up CI flags for Push develop patch"
else
@@ -3,33 +3,17 @@ description: "Download build artifacts"
runs:
using: "composite"
steps:
- name: Restore dist from cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: dist
key: dist-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
dist-${{ github.run_id }}-
fail-on-cache-miss: true
- name: Restore nxcache from cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: nxcache
key: nxcache-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
nxcache-${{ github.run_id }}-
fail-on-cache-miss: true
- name: Restore node_modules from cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: node_modules
key: node-modules-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
node-modules-${{ github.run_id }}-
fail-on-cache-miss: true
- name: download and extract artifacts from s3
shell: bash
env:
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
run: |
packages=( dist nxcache node_modules )
for i in "${packages[@]}"; do
time aws s3 cp --no-progress s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz $i.tar.gz
du -h $i.tar.gz
time tar xzf $i.tar.gz
done
- name: show files
shell: bash
run: |
@@ -40,4 +24,4 @@ runs:
echo "====NXCACHE===="
find nxcache -maxdepth 1 -type d
echo "====ADF===="
find node_modules/@alfresco/ -maxdepth 1 -type d
find node_modules/@alfresco/ -maxdepth 1 -type d
+1 -3
View File
@@ -20,10 +20,8 @@ runs:
- name: set dryrun flag to TRUE
shell: bash
id: dryrun
env:
DRY_RUN_FLAG: ${{ inputs.dry-run-flag }}
run: |
if [[ '$DRY_RUN_FLAG' == 'true' ]]; then
if [[ '${{ inputs.dry-run-flag }}' == 'true' ]]; then
echo "dryrun=--dryrun" >> $GITHUB_OUTPUT;
echo "enabling dryrun"
else
+2 -7
View File
@@ -5,27 +5,22 @@ inputs:
branch_name:
description: "override GITHUB_REF_NAME"
required: false
default: ${{ github.ref_name }}
default: $GITHUB_REF_NAME
runs:
using: "composite"
steps:
- name: load "NPM TAG"
id: set-npm-tag
uses: ./.github/actions/set-npm-tag
with:
branch_name: ${{ inputs.branch_name }}
- name: check npm bundle
shell: bash
id: sha_out
env:
TAG_NPM: ${{ steps.set-npm-tag.outputs.npm-tag }}
run: |
if [[ -z $TAG_NPM ]]; then
echo "TAG_NPM not set, aborting"
exit 1
fi
ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
echo "check bundle on TAG_NPM='${TAG_NPM}' and ADF_VERSION='${ADF_VERSION}'"
./scripts/github/build/npm-check-bundles.sh -v ${ADF_VERSION}
./scripts/github/build/npm-check-bundles.sh
+21 -29
View File
@@ -2,44 +2,36 @@ name: "set npm tag"
description: "se NPM tag"
inputs:
event_name:
description: "override github.event_name"
required: false
default: ${{ github.event_name }}
branch_name:
description: "override GITHUB_REF_NAME"
required: false
default: ${{ github.ref_name }}
outputs:
npm-tag:
description: "NPM tag"
value: ${{ steps.set-npm-tag.outputs.npm-tag }}
default: $GITHUB_REF_NAME
runs:
using: "composite"
steps:
- name: set TAG_NPM
id: set-npm-tag
shell: bash
env:
BRANCH_NAME: ${{ inputs.branch_name }}
run: |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
TAG_NPM="branch"
else
TAG_NPM="alpha"
VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version)
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
if [[ $BRANCH_NAME =~ ^master(-patch.*)?$ ]]; then
# Pre-release versions
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]]; then
TAG_NPM=next
# Stable major versions
else
TAG_NPM=latest
fi
fi
if [[ $BRANCH_NAME =~ ^develop(-patch.*)?$ ]]; then
TAG_NPM=alpha
fi
TAG_NPM="alpha"
VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version)
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
if [[ ${{ inputs.branch_name }} =~ ^master(-patch.*)?$ ]]; then
# Pre-release versions
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]];
then
TAG_NPM=next
# Stable major versions
else
TAG_NPM=latest
fi
fi
echo "npm-tag=$TAG_NPM" >> $GITHUB_OUTPUT
echo "Computed tag: $TAG_NPM"
if [[ ${{ inputs.branch_name }} =~ ^develop(-patch.*)?$ ]]; then
TAG_NPM=alpha
fi
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
+16 -8
View File
@@ -1,6 +1,11 @@
name: 'Setup'
description: 'Initialize cache, env var load'
inputs:
enable-cache:
description: 'enable caching'
required: false
type: boolean
default: 'true'
enable-node-modules-cache:
description: 'enable caching for node modules'
required: false
@@ -11,26 +16,22 @@ inputs:
required: false
type: boolean
default: 'false'
outputs:
npm-tag:
description: 'NPM tag'
value: ${{ steps.set-npm-tag.outputs.npm-tag }}
runs:
using: "composite"
steps:
- name: install NPM
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
cache-dependency-path: package-lock.json
- name: get latest tag sha
id: tag-sha
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@2d8a74e98bfdcc78252004141137f6d14a03e175 # v10.4.0
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@c2278c8ec6744d3595478217e9736ebb47d501db # v8.23.3
# CACHE
- name: Node Modules cache
id: node-modules-cache
if: ${{ inputs.enable-node-modules-cache == 'true' }}
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
env:
cache-name: node-modules-cache
with:
@@ -41,8 +42,15 @@ runs:
node_modules-${{ runner.os }}-build-${{ env.cache-name }}-
node_modules-${{ runner.os }}-build-
node_modules-${{ runner.os }}-
- name: pip cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
if: ${{ inputs.enable-cache == 'true' }}
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-
restore-keys: |
${{ runner.os }}
- name: load "NPM TAG"
id: set-npm-tag
uses: ./.github/actions/set-npm-tag
- name: before install script
uses: ./.github/actions/before-install
@@ -4,22 +4,16 @@ description: "Upload build artifacts"
runs:
using: "composite"
steps:
- name: Save dist to cache
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: dist
key: dist-${{ github.run_id }}-${{ github.run_attempt }}
- name: Save nxcache to cache
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: nxcache
key: nxcache-${{ github.run_id }}-${{ github.run_attempt }}
- name: Save node_modules to cache
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: node_modules
key: node-modules-${{ github.run_id }}-${{ github.run_attempt }}
- name: tar and upload artifacts
shell: bash
env:
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
run: |
packages=( dist nxcache node_modules )
for i in "${packages[@]}"; do
time tar czf $i.tar.gz $i
du -h $i.tar.gz
time aws s3 cp --no-progress $i.tar.gz "s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz"
done
+4 -4
View File
@@ -22,7 +22,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -30,7 +30,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v3.29.5
uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
# Override language selection by uncommenting this and choosing your languages
with:
languages: javascript
@@ -39,7 +39,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v3.29.5
uses: github/codeql-action/autobuild@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -53,4 +53,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v3.29.5
uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
+23 -6
View File
@@ -13,16 +13,34 @@ on:
branches:
- master
- master-patch-*
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
LOG_LEVEL: "ERROR"
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
REDIRECT_URI: /
jobs:
@@ -41,18 +59,17 @@ jobs:
GITHUB_TOKEN: $BOT_GITHUB_TOKEN
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
dry-run-flag: ${{ inputs.dry-run-flag }}
- name: install NPM
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- name: "Release tag"
env:
DRYRUN_FLAG: ${{ steps.set-dryrun.outputs.dryrun }}
run: |
git fetch --all --quiet
BRANCH=${GITHUB_REF##*/} ./scripts/github/release/git-tag.sh $DRYRUN_FLAG
BRANCH=${GITHUB_REF##*/} ./scripts/github/release/git-tag.sh ${{ steps.set-dryrun.outputs.dryrun }}
+3 -6
View File
@@ -9,17 +9,14 @@ jobs:
if: github.event.registry_package.package_type == 'npm' && github.event.registry_package.name == 'adf-core'
steps:
- name: Dispatch event to monorepo
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
PACKAGE_NAME: ${{ github.event.registry_package.name }}
PACKAGE_VERSION: ${{ github.event.registry_package.package_version.name }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ secrets.PAT_WRITE_PKG }}
retries: 3
script: |
const payload = {
package_name: process.env.PACKAGE_NAME,
package_version: process.env.PACKAGE_VERSION
package_name: "${{ github.event.registry_package.name }}",
package_version: "${{ github.event.registry_package.package_version.name }}"
};
await github.rest.repos.createDispatchEvent({
+3 -3
View File
@@ -1,16 +1,16 @@
name: Pull Translations from Crowdin
on:
schedule:
- cron: "0 7-17 * * 1-5"
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
pull-from-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Pull translations from Crowdin
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # v2.13.0
uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1
with:
upload_sources: false
download_translations: true
+45 -39
View File
@@ -33,20 +33,38 @@ concurrency:
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
LOG_LEVEL: "ERROR"
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
REDIRECT_URI: /
jobs:
pre-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Ensure SHA pinned actions
uses: hyland/github-actions-ensure-sha-pinned-actions@22ca7a8cf33e873ba1d6fbcd2b71fa0ec5006b17 # v1.1.0
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@fc87bb5b5a97953d987372e74478de634726b3e5 # v3.0.25
- name: Check package-lock.json version
run: |
@@ -61,23 +79,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
fetch-depth: 0
- name: Get branch name
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@2d8a74e98bfdcc78252004141137f6d14a03e175 # v10.4.0
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@c2278c8ec6744d3595478217e9736ebb47d501db # v8.23.3
- name: Save commit message
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@2d8a74e98bfdcc78252004141137f6d14a03e175 # v10.4.0
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@c2278c8ec6744d3595478217e9736ebb47d501db # v8.23.3
- name: ci:force flag parser
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
ACTOR: ${{ github.actor }}
run: |
if [ "$EVENT_NAME" == "schedule" ] || [ "$ACTOR" == "dependabot[bot]" ]; then
if [ "${{ github.event_name }}" == "schedule" ] || [ "${{ github.actor }}" == "dependabot[bot]" ]; then
echo -e "\033[32mci:force check can be skipped\033[0m"
skip_check="true"
elif [[ "$COMMIT_MESSAGE" == *"[ci:force]"* ]]; then
@@ -94,21 +109,16 @@ jobs:
- name: show pr number
shell: bash
env:
PR_NUMBER: ${{ steps.action.outputs.number }}
run: |
echo "PR: $PR_NUMBER"
echo "PR: ${{ steps.action.outputs.number }}"
- name: check if pr is approved
env:
DEVEL_FLAG: ${{ inputs.devel }}
GH_TOKEN: ${{ github.token }}
skip_check: "false"
EVENT_NAME: ${{ github.event_name }}
ACTOR: ${{ github.actor }}
PR_NUMBER: ${{ steps.action.outputs.number }}
run: |
if [ "$EVENT_NAME" == "schedule" ] || [ "$ACTOR" == "dependabot[bot]" ]; then
if [ "${{ github.event_name }}" == "schedule" ] || [ "${{ github.actor }}" == "dependabot[bot]" ]; then
echo -e "\033[32mci:force check can be skipped\033[0m"
skip_check="true"
elif [[ "$COMMIT_MESSAGE" == *"[ci:force]"* ]]; then
@@ -116,11 +126,11 @@ jobs:
skip_check="true"
fi
if [ "$ACTOR" == "dependabot[bot]" ] || [ "$ACTOR" == "alfresco-build" ]; then
echo -e "\033[32mCommit by $ACTOR. No need for approval.\033[0m"
if [ "${{ github.actor }}" == "dependabot[bot]" ] || [ "${{ github.actor }}" == "alfresco-build" ]; then
echo -e "\033[32mCommit by ${{ github.actor }}. No need for approval.\033[0m"
skip_check="true"
fi
if [ "$EVENT_NAME" == "schedule" ] || [ "$EVENT_NAME" == "workflow_dispatch" ]; then
if [ "${{ github.event_name }}" == "schedule" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo -e "\033[32mSchedule event\033[0m"
skip_check="true"
fi
@@ -132,7 +142,7 @@ jobs:
if [ "$skip_check" == "false" ]; then
echo "Checking PR approval"
prNumber=$PR_NUMBER
prNumber=${{ steps.action.outputs.number }}
echo "PR: $prNumber"
checkApproval=$(gh api /repos/$GITHUB_REPOSITORY/pulls/$prNumber/reviews | jq '.[] | select(.state == "APPROVED") | .user.login')
if [[ $checkApproval ]]; then
@@ -151,15 +161,15 @@ jobs:
needs: [check-if-pr-is-approved, pre-checks]
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- name: install
run: |
npm ci
npm run bundle:js-api
npm run bundle:cli
npx nx run js-api:bundle
npx nx run cli:bundle
- uses: ./.github/actions/upload-node-modules-and-artifacts
unit-tests:
@@ -186,16 +196,14 @@ jobs:
exclude: "insights,core,extensions,content-services,process-services$,eslint-plugin-eslint-angular,js-api"
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: Run unit tests
env:
EXCLUDE_PATTERN: ${{ matrix.unit-tests.exclude }}
run: |
/usr/bin/xvfb-run --auto-servernum npm run test:affected -- $NX_CALCULATION_FLAGS --exclude=$EXCLUDE_PATTERN
/usr/bin/xvfb-run --auto-servernum npx nx affected:test $NX_CALCULATION_FLAGS --exclude=${{ matrix.unit-tests.exclude }}
lint:
# long timeout required when cache has to be recreated
@@ -205,12 +213,12 @@ jobs:
needs: [setup]
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- run: npm run lint:affected -- $NX_CALCULATION_FLAGS
- run: npx nx affected --target=lint $NX_CALCULATION_FLAGS
build-libs:
# long timeout required when cache has to be recreated
@@ -220,12 +228,13 @@ jobs:
needs: [setup]
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npm run build:affected -- $NX_CALCULATION_FLAGS --prod
- run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npx nx affected:build $NX_CALCULATION_FLAGS --prod
- run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npx nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration=ci
- uses: ./.github/actions/upload-node-modules-and-artifacts
PR-forbidden-labels:
@@ -234,12 +243,12 @@ jobs:
steps:
- id: checkoutRepo
name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 1
- name: PR contains forbidden labels
id: pr-forbidden
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const issueHasLabels = require('./scripts/github/update/check-issue-has-label.js');
@@ -251,12 +260,9 @@ jobs:
core.setFailed('The PR contains a forbidden label! You are not allowed to merge until the label is there.');
}
- name: Check value after
env:
STEP_RESULT: ${{ toJson(steps.pr-forbidden.*.result) }}
HAS_FAILURE: ${{ contains(toJson(steps.pr-forbidden.*.result), 'failure') }}
run: |
echo "Step result: $STEP_RESULT"
echo "Has failure: $HAS_FAILURE"
echo "result ${{ toJson(steps.pr-forbidden.*.result) }}" && echo "result ${{ steps.pr-forbidden.*.result }}"
echo "result ${{ contains(toJson(steps.pr-forbidden.*.result), 'failure') }}"
finalize:
if: ${{ always() }}
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Automatic Rebase
+128
View File
@@ -0,0 +1,128 @@
name: Release lib on branch
run-name: Release lib on branch ${{ github.ref_name }}
on:
workflow_dispatch:
inputs:
dry-run-flag:
description: 'enable dry-run on artifact push'
required: false
type: boolean
default: true
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
LOG_LEVEL: "ERROR"
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
REDIRECT_URI: /
jobs:
setup:
timeout-minutes: 20
name: "Setup"
runs-on: ubuntu-latest
steps:
- name: set TAG_NPM BRANCH
shell: bash
run: |
TAG_NPM="branch"
echo "Set TAG with name: ${TAG_NPM}"
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
- name: install
run: |
npm ci
npx nx run js-api:bundle
npx nx run cli:bundle
- uses: ./.github/actions/upload-node-modules-and-artifacts
release-npm:
needs: [setup]
timeout-minutes: 30
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
dry-run-flag: ${{ inputs.dry-run-flag }}
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: Set libraries versions
run: |
set -u;
./scripts/update-version.sh -gnu || exit 1;
- name: Set migrations
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const setMigrations = require('./scripts/github/release/set-migrations.js');
setMigrations();
- name: Build libraries
run: |
npx nx run-many --target=build --prod --skip-nx-cache
npx nx run-many --target=build-schematics
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries GH registry
with:
node-version-file: '.nvmrc'
registry-url: 'https://npm.pkg.github.com'
scope: '@alfresco'
- run: npx nx run-many --target=npm-publish --tag=branch|| exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }}
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries Npm registry
with:
node-version-file: '.nvmrc'
registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}'
scope: '@alfresco'
- run: npx nx run-many --target=npm-publish --tag=branch || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
npm-check-bundle:
needs: [release-npm]
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/npm-check-bundle
+86 -48
View File
@@ -8,13 +8,6 @@ on:
required: false
type: boolean
default: true
workflow_dispatch:
inputs:
dry-run-flag:
description: 'enable dry-run on artifact push'
required: false
type: boolean
default: true
pull_request:
types: [closed]
branches:
@@ -23,10 +16,6 @@ on:
- develop-patch*
- master-patch*
permissions:
id-token: write # Required for OIDC
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
@@ -34,51 +23,99 @@ concurrency:
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
LOG_LEVEL: "ERROR"
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
REDIRECT_URI: /
jobs:
setup:
timeout-minutes: 20
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' || github.event_name == 'workflow_dispatch'
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
name: "Setup"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
- name: install
run: |
npm ci
npm run bundle:js-api
npm run bundle:cli
npx nx run js-api:bundle
npx nx run cli:bundle
- uses: ./.github/actions/upload-node-modules-and-artifacts
release-storybook:
needs: [setup]
timeout-minutes: 15
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 1
- run: git fetch --all
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
dry-run-flag: ${{ inputs.dry-run-flag }}
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
act: ${{ inputs.dry-run-flag }}
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: release Storybook docker
run: |
npx nx run stories:build-storybook --configuration ci
. ./scripts/github/release/docker-tag.sh
./scripts/github/release/release-storybook-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
release-npm:
needs: [setup]
outputs:
release_version: ${{ steps.set-version.outputs.release_version }}
timeout-minutes: 30
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' || github.event_name == 'workflow_dispatch'
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-latest
permissions:
id-token: write # Required for OIDC
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- id: setup
uses: ./.github/actions/setup
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
@@ -91,42 +128,43 @@ jobs:
set -u;
./scripts/github/build/bumpversion.sh
- name: Set migrations
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const setMigrations = require('./scripts/github/release/set-migrations.js');
setMigrations();
- name: build libraries
run: |
npm run build:libs
npm run build:schematics
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
npx nx run-many -t build --prod --skip-nx-cache
npx nx run-many -t build-schematics
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries GH registry
with:
node-version-file: '.nvmrc'
registry-url: 'https://npm.pkg.github.com'
scope: '@alfresco'
- run: npm run publish -- --tag=${{ steps.setup.outputs.npm-tag }}
- run: npx nx run-many -t npm-publish --tag=$TAG_NPM || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }}
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries Npm registry
with:
node-version-file: '.nvmrc'
registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}'
scope: '@alfresco'
- run: npm run publish -- --tag=${{ steps.setup.outputs.npm-tag }}
- run: npx nx run-many -t npm-publish --tag=$TAG_NPM || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
create-git-tag:
runs-on: ubuntu-latest
needs: [setup, release-npm]
if: github.event_name != 'workflow_dispatch'
name: Create github tag
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 1
- uses: './.github/actions/create-git-tag'
@@ -139,7 +177,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: HxP upstream invoke
uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7 # v4.0.0
with:
@@ -156,16 +194,16 @@ jobs:
npm-check-bundle:
needs: [release-npm]
timeout-minutes: 15
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' || github.event_name == 'workflow_dispatch'
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: ./.github/actions/npm-check-bundle
push-translation-keys-to-crowdin:
name: Push translations keys to Crowdin
if: github.ref_name == 'develop' && github.event_name != 'workflow_dispatch'
if: ${{ github.ref == 'refs/heads/develop' }}
runs-on: ubuntu-latest
needs: [setup]
permissions:
@@ -174,10 +212,10 @@ jobs:
actions: read
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Push Source Files to Crowdin
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # v2.13.0
uses: crowdin/github-action@f214c8723025f41fc55b2ad26e67b60b80b1885d # v2.7.1
with:
upload_sources: true
upload_sources_args: --delete-obsolete
@@ -185,15 +223,15 @@ jobs:
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TRANSLATIONS_TOKEN }}
finalize:
if: always()
runs-on: ubuntu-latest
name: Final Results
needs: [release-npm, npm-check-bundle]
steps:
- name: Check job execution status
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
}}
run: exit 1
if: always()
runs-on: ubuntu-latest
name: Final Results
needs: [release-storybook, release-npm, npm-check-bundle]
steps:
- name: Check job execution status
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
}}
run: exit 1
-2
View File
@@ -22,5 +22,3 @@ desktop.ini
.nx
nxcache
.husky
.cursor/rules/nx-rules.mdc
.github/instructions/nx.instructions.md
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/sh
export NODE_OPTIONS=--max_old_space_size=8192
lint-staged
npx lint-staged
+1 -1
View File
@@ -1 +1 @@
24.11.1
22.14.0
+9
View File
@@ -0,0 +1,9 @@
import { create } from '@storybook/theming';
import alfrescoLogo from '../lib/core/src/lib/assets/images/alfresco-logo.svg';
export default create({
base: 'light',
brandTitle: 'Hyland | Alfresco Storybook App',
brandUrl: 'https://www.alfresco.com/',
brandImage: alfrescoLogo,
});
+10
View File
@@ -0,0 +1,10 @@
module.exports = {
framework: {
name: '@storybook/angular',
options: {}
},
staticDirs: [],
docs: {},
stories: [],
addons: ['@chromatic-com/storybook']
};
+5
View File
@@ -0,0 +1,5 @@
export const parameters = {
docs: { inlineStories: true },
controls: { expanded: true }
};
export const tags = ['autodocs', 'autodocs', 'autodocs'];
+10
View File
@@ -0,0 +1,10 @@
{
"extends": "../tsconfig.json",
"exclude": [
"../**/*.spec.js",
"../**/*.spec.ts",
"../**/*.spec.tsx",
"../**/*.spec.jsx"
],
"include": ["../**/*"]
}
+17
View File
@@ -0,0 +1,17 @@
specFile=$1;
configFile=$2;
findconfig() {
if [ -f "$1" ]; then
printf '%s\n' "${PWD%/}/$1"
elif [ "$PWD" = / ]; then
false
else
(cd .. && findconfig $1)
fi
}
DIR=$(dirname "$specFile")
cd $DIR
configFile=`findconfig "$configFile"`;
echo "$configFile";
+5
View File
@@ -0,0 +1,5 @@
{
"recommendations": [
"lucono.karma-test-explorer"
]
}
+27
View File
@@ -0,0 +1,27 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "e2e",
"program": "${workspaceFolder}/node_modules/protractor/bin/protractor",
"args": [
"./e2e/protractor.conf.js",
"--specs=${file}"
],
"envFile": "${workspaceFolder}/.env",
"console": "integratedTerminal",
"sourceMaps": true,
"smartStep": true,
"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js",
"<node_internals>/**/*.js"
],
"internalConsoleOptions": "neverOpen"
}
]
}
+1
View File
@@ -5,6 +5,7 @@
"**/.svn": true,
"**/.hg": true,
"**/.DS_Store": true,
"**/coverage": true,
"**/.happypack": true
},
"markdownlint.config": {
View File
+2
View File
@@ -103,6 +103,8 @@ Create a file next to the project's `package.json`, call it `proxy.conf.json` an
Note that if you are running the App, Content Service or Process Service on different ports, you should change the ports accordingly in your local configuration.
For further details about how to configure a webpack proxy please refer to the [official documentation](https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md).
## Configure nginx proxy
+27
View File
@@ -0,0 +1,27 @@
# 1. Generate licenses
FROM node:18.16-alpine3.17 AS builder
WORKDIR /usr/src/alfresco
COPY package.json package.json
# 2. Generate image
FROM nginxinc/nginx-unprivileged:1.21-alpine
USER root
RUN apk update && apk upgrade
USER 101
ARG PROJECT_NAME
COPY docker/default.conf.template /etc/nginx/templates/
COPY dist/$PROJECT_NAME /usr/share/nginx/html/
COPY dist/$PROJECT_NAME/app.config.json /etc/nginx/templates/app.config.json.template
USER root
RUN chmod a+w -R /etc/nginx/conf.d
USER 101
ENV BASE_PATH=/
ENV NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
+1
View File
@@ -35,6 +35,7 @@ ADF Libraries list:
- [Insights](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/insights)
- [Process Service Cloud](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services-cloud)
- [Process service](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services)
- [Stories](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/stories)
## Browser Support
+1
View File
@@ -86,6 +86,7 @@
"mouseenter",
"multiselect",
"mysites",
"nginx",
"numbervisibilityprocess",
"OAUTHCONFIG",
"oidc",
+57
View File
@@ -0,0 +1,57 @@
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
root /usr/share/nginx/html;
rewrite ^([^.]*[^/])$ $1/ permanent;
absolute_redirect off;
location ${BASE_PATH} {
set $EVAL_BASE_PATH "${BASE_PATH}";
if ($EVAL_BASE_PATH = "/") {
root /usr/share/nginx/html;
}
index index.html index.htm;
alias /usr/share/nginx/html;
}
location ~ /app.config.json {
alias ${NGINX_ENVSUBST_OUTPUT_DIR}/app.config.json;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
+4
View File
@@ -113,6 +113,7 @@ A collection of Angular components for generic use.
| [Json Cell component](core/components/json-cell.component.md) | Shows a JSON-formatted value inside a datatable component. | [Source](../lib/core/src/lib/datatable/components/json-cell/json-cell.component.ts) |
| [Language Menu component](core/components/language-menu.component.md) | Displays all the languages that are present in "app.config.json" and the default (EN). | [Source](../lib/core/src/lib/language-menu/language-menu.component.ts) |
| [Login Dialog Panel component](core/components/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/src/lib/login/components/login-dialog-panel.component.ts) |
| [Login Dialog component](core/components/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/src/lib/login/components/login-dialog.component.ts) |
| [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/src/lib/login/components/login.component.ts) |
| [Notification History component](core/components/notification-history.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | This component is in the current status just an experimental component. The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/src/lib/notifications/components/notification-history.component.ts) | |
| [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/src/lib/pagination/pagination.component.ts) |
@@ -221,6 +222,7 @@ A collection of Angular components for generic use.
| [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. | [Source](../lib/process-services-cloud/src/lib/people/services/identity-user.service.ts) |
| [JWT helper service](core/services/jwt-helper.service.md) | Decodes a JSON Web Token (JWT) to a JavaScript object. | [Source](../lib/core/src/lib/auth/services/jwt-helper.service.ts) |
| [Log Service](core/services/log.service.md) | Provides log functionality. | [Source](../lib/core/src/lib/common/services/log.service.ts) |
| [Login Dialog service](core/services/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/src/lib/services/login-dialog.service.ts) |
| [Nodes Api service](core/services/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/content-services/src/lib/common/services/nodes-api.service.ts) |
| [Notification Service](core/services/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/src/lib/notifications/services/notification.service.ts) |
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](../lib/core/src/lib/common/services/page-title.service.ts) |
@@ -470,10 +472,12 @@ for more information about installing and using the source code.
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [App List Cloud Component](process-services-cloud/components/app-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all deployed cloud application instances. | [Source](../lib/process-services-cloud/src/lib/app/components/app-list-cloud.component.ts) |
| [Edit Process Filter Cloud component](process-services-cloud/components/edit-process-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows/edits process filter details. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.ts) |
| [Edit Task Filter Cloud component](process-services-cloud/components/edit-task-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Edits task filter details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.ts) |
| [Form cloud custom outcomes component](process-services-cloud/components/form-cloud-custom-outcome.component.md) | Supplies custom outcome buttons to be included in Form cloud component. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud-custom-outcomes.component.ts) |
| [Form cloud component](process-services-cloud/components/form-cloud.component.md) | Shows a form from Process Services. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts) |
| [Form Definition Selector Cloud](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected from a dropdown list. For forms to be displayed in this component they will need to be compatible with standAlone tasks. | [Source](../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts) |
| [Group Cloud component](process-services-cloud/components/group-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) |
| [](process-services-cloud/components/people-cloud.component.md) | Title: People Cloud Component | |
@@ -69,7 +69,6 @@ Displays the documents from a repository.
| displayCheckboxesOnHover | `boolean` | false | Enables checkboxes in datatable rows being displayed on hover only. |
| displayDragAndDropHint | `boolean` | true | Display drag and drop hint. |
| emptyFolderImageUrl | `string` | | Custom image for empty folder. Default value: './assets/images/empty_doc_lib.svg' |
| filters | `string[]` | | Specifies additional filters to apply (joined with **AND**). Applied for recent files only |
| filterValue | `any` | | Initial value for filter. |
| headerFilters | `boolean` | false | Toggles the header filters mode. |
| imageResolver | `any \| null` | null | Custom function to choose image file paths to show. See the [Image Resolver Model](image-resolver.model.md) page for more information. |
@@ -15,8 +15,7 @@ Displays comments from users involved in a specified content and allows an invol
```html
<adf-node-comments
[nodeId]="YOUR_NODE_ID"
[readOnly]="YOUR_READ_ONLY_FLAG"
(commentAdded)="onCommentAdded($event)">
[readOnly]="YOUR_READ_ONLY_FLAG">
</adf-node-comments>
```
@@ -24,13 +23,7 @@ Displays comments from users involved in a specified content and allows an invol
### Properties
| Name | Type | Default value | Description |
| -------- | --------- | ------------- | ----------------------------------------------------------------------------------- |
| nodeId | `string` | | nodeId of the document that has comments |
| readOnly | `boolean` | | make the [comments component](../../core/components/comments.component.md) readOnly |
### Events
| Name | Type | Description |
| ------------ | ------------------------------------------------------------------------ | ------------------------------------------------- |
| commentAdded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)<CommentModel> | Emitted when a new comment is successfully added. |
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| nodeId | `string` | | nodeId of the document that has comments |
| readOnly | `boolean` | | make the [comments component](../../core/components/comments.component.md) readOnly |
@@ -25,13 +25,12 @@ before that release, please ensure that your component configuration is updated
### Properties
| Name | Type | Description |
|--------------|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| field | string | Field to apply the query to. Required value |
| maxDate | string | A fixed date (default format: dd-MMM-yy) or the string `"today"` that will set the maximum searchable date. Default is today. |
| dateFormat | string | Date format. Dates used by the datepicker are Javascript Date objects, using [date-fns](https://date-fns.org/v2.30.0/docs/format) for formatting, so you can use any date format supported by the library. Default is 'dd-MMM-yy (sample date - 07-Jun-23) |
| initialValue | SearchDateRange | Initial value for the component |
| onReset$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<void>` | Reset event observable |
| Name | Type | Description |
|--------------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| field | string | Field to apply the query to. Required value |
| maxDate | string | A fixed date (default format: dd-MMM-yy) or the string `"today"` that will set the maximum searchable date. Default is today. |
| dateFormat | string | Date format. Dates used by the datepicker are Javascript Date objects, using [date-fns](https://date-fns.org/v2.30.0/docs/format) for formatting, so you can use any date format supported by the library. Default is 'dd-MMM-yy (sample date - 07-Jun-23) |
| initialValue | SearchDateRange | Initial value for the component |
### Events
@@ -47,13 +47,12 @@ Manages Document List information that is specific to a user.
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) A string to restrict the returned objects by using a predicate
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/content-rest-api/docs/NodePaging.md)`>` - List of favorite files
- **loadFolderByNodeId**(nodeId: `string`, pagination: [`PaginationModel`](../../../lib/core/src/lib/models/pagination.model.ts), includeFields: `string[]` = `[]`, where?: `string`, filters?: `string[]`): `any`<br/>
- **loadFolderByNodeId**(nodeId: `string`, pagination: [`PaginationModel`](../../../lib/core/src/lib/models/pagination.model.ts), includeFields: `string[]` = `[]`, where?: `string`): `any`<br/>
Gets a folder's contents.
- _nodeId:_ `string` - ID of the target folder node
- _pagination:_ [`PaginationModel`](../../../lib/core/src/lib/models/pagination.model.ts) - Specifies how to paginate the results
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) Filters the Node list using the _where_ condition of the REST API (for example, isFolder=true). See the REST API documentation for more information.
- _filters:_ `string[]` - Specifies additional filters to apply (joined with **AND**). Applied for '-recent-' only.
- **Returns** `any` - List of items contained in the folder
- **loadMemberSites**(pagination: [`PaginationModel`](../../../lib/core/src/lib/models/pagination.model.ts), where?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SiteMemberPaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/content-rest-api/docs/SiteMemberPaging.md)`>`<br/>
Gets sites that the current user is a member of.
@@ -62,14 +62,13 @@ import { DocumentListService } from '@alfresco/adf-core';
- _nodeId:_ `any` -
- **Returns** `boolean` -
- **loadFolderByNodeId**(nodeId: `string`, pagination: `PaginationModel`, includeFields: `string[]`, where?: `string`, orderBy?: `string[]`, filters?: `string[]`): `Observable<DocumentLoaderNode>`<br/>
- **loadFolderByNodeId**(nodeId: `string`, pagination: `PaginationModel`, includeFields: `string[]`, where?: `string`, orderBy?: `string[]`): `Observable<DocumentLoaderNode>`<br/>
Load a folder by Node Id.
- _nodeId:_ `string` - ID of the folder node
- _pagination:_ `PaginationModel` - pagination model
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) Optionally filter the list
- _orderBy:_ `string[]` - (Optional) order by node property
- _filters:_ `string[]` - (Optional) Specifies additional filters to apply (joined with **AND**). Applied for recent files only
- **Returns** `Observable<DocumentLoaderNode>` - Details of the folder
- **moveNode**(nodeId: `string`, targetParentId: `string`): `Observable<NodeEntry>`<br/>
Moves a node to destination node.
@@ -20,7 +20,7 @@ Adds and retrieves comments for nodes in Content Services.
Gets all comments that have been added to a task.
- _id:_ `string` - ID of the target task
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CommentModel`](../../../lib/core/src/lib/models/comment.model.ts)`[]>` - Details for each comment
- **getUserImage**(userId: `string`): `string`<br/>
Returns the avatar URL for the specified user.
- _userId:_ `string` - ID of the user
- **Returns** `string` - URL of the user's avatar image
- **getUserImage**(avatarId: `string`): `string`<br/>
Gets the URL for the user's profile image.
- _avatarId:_ `string` - ID of the user
- **Returns** `string` - URL for the user's profile image
+8 -10
View File
@@ -15,8 +15,7 @@ Displays comments from users involved in a specified environment and allows an i
```html
<adf-comments
[id]="YOUR_ID"
[readOnly]="YOUR_READ_ONLY_FLAG"
(commentAdded)="onCommentAdded($event)">
[readOnly]="YOUR_READ_ONLY_FLAG">
</adf-comments>
```
@@ -24,14 +23,13 @@ Displays comments from users involved in a specified environment and allows an i
### Properties
| Name | Type | Default value | Description |
| -------- | --------- | ------------- | --------------------------- |
| id | `string` | | The numeric ID of the task. |
| readOnly | `boolean` | false | Are the comments read only? |
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| id | `string` | | The numeric ID of the task. |
| readOnly | `boolean` | false | Are the comments read only? |
### Events
| Name | Type | Description |
| ------------ | --------------------------------------------------------------------------- | --------------------------------------------------------------- |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs while displaying/adding a comment. |
| commentAdded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<CommentModel>` | Emitted when a new comment is successfully added. |
| Name | Type | Description |
| ---- | ---- | ----------- |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs while displaying/adding a comment. |
@@ -16,3 +16,12 @@ Shows and manages a login dialog.
| Name | Type | Description |
| ---- | ---- | ----------- |
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`LoginSuccessEvent`](../../../lib/core/src/lib/login/models/login-success.event.ts)`>` | Emitted when the login succeeds. |
## Details
This component has similar features to the [Login Dialog component](login-dialog.component.md)
but it also creates and manages the dialog for you.
## See also
- [Login Dialog component](login-dialog.component.md)
@@ -0,0 +1,89 @@
---
Title: Login Dialog component
Added: v2.6.0
Status: Active
Last reviewed: 2018-10-02
---
# [Login Dialog component](../../../lib/core/src/lib/login/components/login-dialog.component.ts "Defined in login-dialog.component.ts")
Allows a user to perform a login via a dialog.
## Details
The [Login Dialog component](login-dialog.component.md) allows you to perform a login via a dialog.
### Showing the dialog
Unlike most components, the [Login Dialog Component](login-dialog.component.md) is typically shown in a dialog box
rather than the main page and you are responsible for opening the dialog yourself. You can use the
[Angular Material Dialog](https://material.angular.io/components/dialog/overview) for this,
as shown in the usage example. ADF provides the [`LoginDialogComponentData`](../../../lib/core/src/lib/login/components/login-dialog-component-data.interface.ts) interface
to work with the Dialog's
[data option](https://material.angular.io/components/dialog/overview#sharing-data-with-the-dialog-component-):
```ts
export interface LoginDialogComponentData {
title: string;
actionName?: string;
logged: Subject<any>;
}
```
The properties are described in the table below:
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| title | `string` | "" | Dialog title |
| actionName | `string` | "" | Text to appear on the dialog's main action button ("Login", "Access", etc) |
| logged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | | Event emitted when the login succeeds. |
If you don't want to manage the dialog yourself then it is easier to use the
[Login Dialog Panel component](login-dialog-panel.component.md), or the
methods of the [Login Dialog service](../services/login-dialog.service.md), which create
the dialog for you.
### Usage example
```ts
import { MatDialog } from '@angular/material/dialog';
import { LoginDialogComponentData, LoginDialogComponent} from '@adf/core'
import { Subject } from 'rxjs/Subject';
...
constructor(dialog: MatDialog ... ) {}
openLoginDialog() {
data: LoginDialogComponentData = {
title: "Perform a Login",
actionName: "Access",
logged: new Subject<any>()
};
this.dialog.open(
LoginDialogComponent,
{
data, panelClass: 'adf-login-dialog',
width: '630px'
}
);
data.logged.subscribe(() => {
// Action after being logged in...
},
(error)=>{
//your error handling
},
()=>{
//action called when an action or cancel is clicked on the dialog
this.dialog.closeAll();
});
}
```
All the results will be streamed to the logged [subject](http://reactivex.io/rxjs/manual/overview.html#subject) present in the [`LoginDialogComponentData`](../../../lib/core/src/lib/login/components/login-dialog-component-data.interface.ts) object passed to the dialog.
When the dialog action is selected by clicking, the `data.logged` stream will be completed.
## See also
- [Login component](login.component.md)
+3
View File
@@ -196,6 +196,7 @@ You can access an external provider to get an auth token for a user:
"oauth2" : {
"host": "http://myhost.com",
"clientId": "my-client-id",
"secret": ""
}
}
```
@@ -293,6 +294,7 @@ enabled the setting in `app.config.json`) then the [login component](login.compo
"host": "<AUTH-SERVER>/auth/realms/alfresco",
"clientId": "activiti",
"scope": "openid",
"secret": "",
"implicitFlow": true,
"silentLogin": false,
"redirectUri": "/",
@@ -322,6 +324,7 @@ You can also enable automatic redirection to the OAuth provider using the follow
"host": "<AUTH-SERVER>/auth/realms/alfresco",
"clientId": "alfresco",
"scope": "openid",
"secret": "",
"implicitFlow": true,
"silentLogin": true,
"redirectSilentIframeUri": "/assets/silent-refresh.html",
+31 -32
View File
@@ -60,38 +60,37 @@ See the [Custom layout](#custom-layout) section for full details of all availabl
### Properties
| Name | Type | Default value | Description |
|-----------------------------| ---- | ------------- |-----------------------------------------------------------------------------------------------------------------------------------------|
| allowFullScreen | `boolean` | true | Toggles the 'Full Screen' feature. |
| allowGoBack | `boolean` | true | Allows `back` navigation. |
| closeButtonPosition | `CloseButtonPosition` | `left` | Set close button position right/left. |
| hideInfoButton | `boolean` | false | Toggles Info button. |
| allowLeftSidebar | `boolean` | false | Allow the left the sidebar. |
| allowNavigate | `boolean` | false | Toggles before/next navigation. You can use the arrow buttons to navigate between documents in the collection. |
| allowRightSidebar | `boolean` | false | Allow the right sidebar. |
| blobFile | [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | | Loads a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) File |
| canNavigateBefore | `boolean` | true | Toggles the "before" ("&lt;") button. Requires `allowNavigate` to be enabled. |
| canNavigateNext | `boolean` | true | Toggles the next (">") button. Requires `allowNavigate` to be enabled. |
| fileName | `string` | | Override Content filename. |
| title | `string` | | Override Content title. |
| mimeType | `string` | | Overload mimeType |
| overlayMode | `boolean` | false | If `true` then show the Viewer as a full page over the current content. Otherwise fit inside the parent div. |
| readOnly | `boolean` | true | Enable when where is possible the editing functionalities |
| allowedEditActions | `{ [key: string]: boolean }` | `{ rotate: true, crop: true }` | Controls which editing actions are enabled when not in read-only mode. Allows granular control over actions like rotation and cropping. |
| showLeftSidebar | `boolean` | false | Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. |
| showRightSidebar | `boolean` | false | Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. |
| showToolbar | `boolean` | true | Hide or show the toolbar |
| showViewer | `boolean` | true | Hide or show the viewer |
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded node data. |
| sidebarLeftTemplateContext | | null | Context object available for binding by the local sidebarLeftTemplate with let declarations. |
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded node data. |
| sidebarRightTemplateContext | | null | Context object available for binding by the local sidebarRightTemplate with let declarations. |
| tracks | [`Track`](../../../lib/core/src/lib/viewer/models/viewer.model.ts)`[]` | \[] | media subtitles for the media player |
| urlFile | `string` | "" | If you want to load an external file that does not come from ACS you can use this URL to specify where to load the file from. |
| viewerExtensions | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. |
| nodeId | `string` | null | Identifier of a node opened by a viewer. |
| nodeMimeType | `string` | undefined | Original node mime type, should be provided when renditiona mime type is different. |
| customError | `string` | undefined | Custom error message to be displayed in the viewer. |
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| allowFullScreen | `boolean` | true | Toggles the 'Full Screen' feature. |
| allowGoBack | `boolean` | true | Allows `back` navigation. |
| closeButtonPosition | `CloseButtonPosition` | `left` | Set close button position right/left. |
| hideInfoButton | `boolean` | false | Toggles Info button. |
| allowLeftSidebar | `boolean` | false | Allow the left the sidebar. |
| allowNavigate | `boolean` | false | Toggles before/next navigation. You can use the arrow buttons to navigate between documents in the collection. |
| allowRightSidebar | `boolean` | false | Allow the right sidebar. |
| blobFile | [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | | Loads a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) File |
| canNavigateBefore | `boolean` | true | Toggles the "before" ("&lt;") button. Requires `allowNavigate` to be enabled. |
| canNavigateNext | `boolean` | true | Toggles the next (">") button. Requires `allowNavigate` to be enabled. |
| fileName | `string` | | Override Content filename. |
| mimeType | `string` | | Overload mimeType |
| overlayMode | `boolean` | false | If `true` then show the Viewer as a full page over the current content. Otherwise fit inside the parent div. |
| readOnly | `boolean` | true | Enable when where is possible the editing functionalities |
| allowedEditActions | `{ [key: string]: boolean }` | `{ rotate: true, crop: true }` | Controls which editing actions are enabled when not in read-only mode. Allows granular control over actions like rotation and cropping. |
| showLeftSidebar | `boolean` | false | Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. |
| showRightSidebar | `boolean` | false | Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. |
| showToolbar | `boolean` | true | Hide or show the toolbar |
| showViewer | `boolean` | true | Hide or show the viewer |
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded node data. |
| sidebarLeftTemplateContext | | null | Context object available for binding by the local sidebarLeftTemplate with let declarations. |
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded node data. |
| sidebarRightTemplateContext | | null | Context object available for binding by the local sidebarRightTemplate with let declarations. |
| tracks | [`Track`](../../../lib/core/src/lib/viewer/models/viewer.model.ts)`[]` | \[] | media subtitles for the media player |
| urlFile | `string` | "" | If you want to load an external file that does not come from ACS you can use this URL to specify where to load the file from. |
| viewerExtensions | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. |
| nodeId | `string` | null | Identifier of a node opened by a viewer. |
| nodeMimeType | `string` | undefined | Original node mime type, should be provided when renditiona mime type is different. |
| customError | `string` | undefined | Custom error message to be displayed in the viewer. |
### Events
-1
View File
@@ -43,7 +43,6 @@ Contains the value and metadata for a field of a [`Form`](../../../lib/process-s
| displayText | string | | Displayed text for Hyperlink widgets |
| isVisible | boolean | true | Is the field shown on the form? |
| visibilityCondition | [`WidgetVisibilityModel`](../../../lib/core/src/lib/form/models/widget-visibility.model.ts) | null | Defines a expression that determines whether the field is visible or not, based on its logical relation to values in other fields |
| checkParentVisibilityForValidation | boolean | false | When enabled (and `FormModel.enableParentVisibilityCheck` is true), validation will be skipped if the field's parent container/group/section is hidden, even if the field itself is visible. |
| enableFractions | boolean | false | Are numeric values allowed to contain a decimal point? |
| currency | string | null | Currency symbol for Amount widgets |
| dateDisplayFormat | string | | Date/time display format template |
-3
View File
@@ -41,7 +41,6 @@ Contains the value and metadata for a form.
|isValid | true||is form valid|
|processVariables| ProcessVariableModel[] | []|process variables|
|variables| FormVariableModel[] | []|variables|
|enableParentVisibilityCheck| boolean | false|Enables checking parent container/group/section visibility for validation. When enabled, fields with `checkParentVisibilityForValidation: true` will skip validation if their parent is hidden.|
## Methods
@@ -113,5 +112,3 @@ Contains the value and metadata for a form.
Changes variable value
- `loadInjectedFieldValidators(injectedFieldValidators: FormFieldValidator[]): void`
Checks it there are any injectedValidators and adds them to the array of field validators.
- `isFieldOrParentHidden(field: FormFieldModel): boolean`
Checks if a field or any of its parent containers/groups/sections is hidden. Returns true if the field should skip validation. Only checks parent visibility if `enableParentVisibilityCheck` is true and the field has `checkParentVisibilityForValidation` set to true.
+71 -25
View File
@@ -2,10 +2,10 @@
Title: Authentication Service
Added: v2.0.0
Status: Active
Last reviewed: 2025-06-12
Last reviewed: 2019-03-19
---
# Authentication Service
# [Authentication Service](../../../lib/core/src/lib/auth/services/authentication.service.ts "Defined in authentication.service.ts")
Provides authentication to ACS and APS.
@@ -13,57 +13,103 @@ Provides authentication to ACS and APS.
### Methods
- **addTokenToHeader**(requestUrl: `string`, headersArg?: `HttpHeaders`): [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>`<br/>
- **addTokenToHeader**(headersArg?: `HttpHeaders`): [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>`<br/>
Adds the auth token to an HTTP header using the 'bearer' scheme.
- _requestUrl:_ `string` - The URL of the request for which to set authentication headers.
- _headersArg:_ `HttpHeaders` - (Optional) Header that will receive the token
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>` - The new header with the token added
- **getBearerExcludedUrls**()<br/>
Gets the set of URLs that the token bearer is excluded from.
- **getBpmLoggedUser**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`UserRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/activiti-rest-api/docs/UserRepresentation.md)`>`<br/>
Gets information about the user currently logged into APS.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`UserRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/activiti-rest-api/docs/UserRepresentation.md)`>` - User information
- **getBpmUsername**(): `string`<br/>
Gets the BPM username
- **Returns** `string` - The BPM username
- **getEcmUsername**(): `string`<br/>
Gets the ECM username.
- **Returns** `string` - The ECM username
- **getRedirect**(): `string`<br/>
Gets the URL to redirect to after login.
- **Returns** `string` - The redirect URL
- **getTicketBpm**(): `string|null`<br/>
Gets the BPM ticket stored in the Storage.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getTicketEcm**(): `string|null`<br/>
Gets the ECM ticket stored in the Storage.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getTicketEcmBase64**(): `string|null`<br/>
Gets the BPM ticket from the Storage in Base 64 format.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getToken**(): `string`<br/>
Gets the auth token.
- **Returns** `string` - Auth token string
- **getUsername**(): `string`<br/>
Gets the username of the authenticated user.
- **Returns** `string` - Username of the authenticated user
- **getAuthHeaders**(requestUrl: `string`, headers: `HttpHeaders`): `HttpHeaders`<br/>
Gets and sets the necessary authentication headers for a given request URL.
- _requestUrl:_ `string` - The URL of the request for which to obtain authentication headers.
- _headers:_ `HttpHeaders` - The existing HTTP headers to which authentication details might be added.
- **Returns** `HttpHeaders` - The HTTP headers object, potentially updated with authentication tokens.
- **handleError**(error: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Prints an error message in the console browser
- _error:_ `any` - Error message
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Object representing the error message
- **isALLProvider**(): `boolean`<br/>
Does the provider support both ECM and BPM?
- **Returns** `boolean` - True if both are supported, false otherwise
- **isAuthCodeFlow**(): `boolean`<br/>
- **Returns** `boolean` -
- **isBPMProvider**(): `boolean`<br/>
Does the provider support BPM?
- **Returns** `boolean` - True if supported, false otherwise
- **isBpmLoggedIn**(): `boolean`<br/>
Checks if the user is logged in on a BPM provider.
- **Returns** `boolean` - True if logged in, false otherwise
- **isECMProvider**(): `boolean`<br/>
Does the provider support ECM?
- **Returns** `boolean` - True if supported, false otherwise
- **isEcmLoggedIn**(): `boolean`<br/>
Checks if the user is logged in on an ECM provider.
- **Returns** `boolean` - True if logged in, false otherwise
- **isImplicitFlow**(): `boolean`<br/>
- **Returns** `boolean` -
- **isKerberosEnabled**(): `boolean`<br/>
Does kerberos enabled?
- **Returns** `boolean` - True if enabled, false otherwise
- **isLoggedIn**(): `boolean`<br/>
Checks if the user logged in.
- **Returns** `boolean` - True if logged in, false otherwise
- **isLoggedInWith**(provider: `string`): `boolean`<br/>
- _provider:_ `string` -
- **Returns** `boolean` -
- **isOauth**(): `boolean`<br/>
Does the provider support OAuth?
- **Returns** `boolean` - True if supported, false otherwise
- **login**(username: `string`, password: `string`, rememberMe?: `boolean`): [`Observable`](http://reactivex.io/documentation/observable.html)`<{ type: string; ticket: any }>`<br/>
- **isPublicUrl**(): `boolean`<br/>
- **Returns** `boolean` -
- **isRememberMeSet**(): `boolean`<br/>
Checks whether the "remember me" cookie was set or not.
- **Returns** `boolean` - True if set, false otherwise
- **login**(username: `string`, password: `string`, rememberMe: `boolean` = `false`): [`Observable`](http://reactivex.io/documentation/observable.html)`<Function>`<br/>
Logs the user in.
- _username:_ `string` - Username for the login
- _password:_ `string` - Password for the login
- _rememberMe:_ `boolean` - (Optional) Stores the user's login details if true
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<{ type: string; ticket: any }>` - An Observable that emits an object containing the authentication type (`type`) and the authentication ticket (`ticket`) upon successful login.
- **logout**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/> Logs the user out.
- _rememberMe:_ `boolean` - Stores the user's login details if true
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<Function>` - Object with auth type ("ECM", "BPM" or "ALL") and auth ticket
- **logout**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Logs the user out.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Response event called when logout is complete
- **reset**(): `void`<br/>Resets the authentication state of the service.
- **on**(event: `string`, listener: `Function`): `void`<br/> Adds an event listener for the specified event.
- **off**(event: `string`, listener?: `Function`): `void`<br/> Removes an event listener for the specified event.
- **once**(event: `string`, listener: `Function`): `void`<br/> Adds a one-time event listener for the specified event.
- **emit**(event: `string`, ...args: `any[]`): `void`<br/> Emits an event with optional arguments.
- **onLogin**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when the user logs in successfully.
- **onLogout**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when the user logs out.
- **onTokenReceived**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when an authentication token is received.
- **onError**: [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/> An Observable that emits an error object when an authentication-related error occurs.
- **reset**()<br/>
- **saveRememberMeCookie**(rememberMe: `boolean`)<br/>
Saves the "remember me" cookie as either a long-life cookie or a session cookie.
- _rememberMe:_ `boolean` - Enables a long-life cookie
- **setRedirect**(url?: [`RedirectionModel`](../../../lib/core/src/lib/auth/models/redirection.model.ts))<br/>
Sets the URL to redirect to after login.
- _url:_ [`RedirectionModel`](../../../lib/core/src/lib/auth/models/redirection.model.ts) - (Optional) URL to redirect to
- **ssoImplicitLogin**()<br/>
Logs the user in with SSO
## Details
@@ -0,0 +1,31 @@
---
Title: Login Dialog service
Added: v2.6.0
Status: Active
Last reviewed: 2019-02-08
---
# [Login Dialog service](../../../lib/core/src/lib/services/login-dialog.service.ts "Defined in login-dialog.service.ts")
Manages login dialogs.
## Methods
- **openLogin**(actionName: `string`, title: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<string>`<br/>
Opens a login dialog.
- _actionName:_ `string` - Text to show in the main action button
- _title:_ `string` - Title for the login dialog
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<string>` - Confirmation of login from the dialog
- **close**(): `<void>`<br/>
Closes the currently open login dialog.
## Details
Use the methods of this service to manage login dialogs from code. As an alternative, you may
find it easier to use the [Login dialog component](../components/login-dialog.component.md) to display the
dialog directly from HTML.
## See also
- [Login dialog component](../components/login-dialog.component.md)
- [Login component](../components/login.component.md)
+8 -69
View File
@@ -2,10 +2,10 @@
Title: User Preferences Service
Added: v2.0.0
Status: Active
Last reviewed: 2025-11-20
Last reviewed: 2019-01-16
---
# User Preferences Service
# [User Preferences Service](../../../lib/core/src/lib/common/services/user-preferences.service.ts "Defined in user-preferences.service.ts")
Stores preferences for the app and for individual components.
@@ -32,10 +32,10 @@ Stores preferences for the app and for individual components.
Check if an item is present in the storage
- _property:_ `string` - Name of the property
- **Returns** `boolean` - True if the item is present, false otherwise
- **select**(property: `string`): `Observable<any>`<br/>
- **select**(property: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Sets up a callback to notify when a property has changed.
- _property:_ `string` - The property to watch
- **Returns** `Observable<any>` - Notification callback
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Notification callback
- **set**(property: `string`, value: `any`)<br/>
Sets a preference property.
- _property:_ `string` - Name of the property
@@ -65,13 +65,13 @@ class AppComponent {
onLoggedIn() {
this.userPreferences.setStoragePrefix(
this.authService.getUsername()
this.authService.getEcmUsername()
);
}
}
```
As soon as you assign the storage prefix, all settings that you get or set via the `UserPreferencesService` will be saved to a dedicated profile.
As soon as you assign the storage prefix, all settings that you get or set via the [`UserPreferencesService`](../../core/services/user-preferences.service.md) will be saved to a dedicated profile.
You can import the service into your controller and use its APIs as shown below:
@@ -96,7 +96,7 @@ The service also provides quick access to a set of the "known" properties used a
| ---- | ---- | ----------- |
| authType | `string` | Authorization type (can be "ECM", "BPM" or "ALL"). |
| disableCSRF | `boolean` | Prevents the CSRF Token from being submitted if true. Only valid for Process Services. |
| paginationSize | `number` | `Pagination` size. |
| paginationSize | `number` | [`Pagination`](../../../lib/content-services/document-list/models/document-library.model.ts) size. |
| locale | `string` | Current locale setting. |
## User Preference onChange Stream
@@ -112,13 +112,7 @@ whole set of user properties. This is useful when a component needs to react to
```
You can also use the `select` method to get notification when a particular property is changed.
A set of basic properties is added into the enumeration `UserPreferenceValues` which gives you the key value to access the standard user preference service properties:
- `PaginationSize`
- `DisableCSRF`
- `Locale`
- `SupportedPageSizes`
- `ExpandedSideNavStatus`
A set of basic properties is added into the enumeration [`UserPreferenceValues`](lib/core/src/lib/services/user-preferences.service.ts) which gives you the key value to access the standard user preference service properties : **PaginationSize**, **DisableCSRF**, **Locale**, **SupportedPageSizes** and **ExpandedSideNavStatus**.
```ts
userPreferences.disableCSRF = true;
@@ -126,58 +120,3 @@ A set of basic properties is added into the enumeration `UserPreferenceValues` w
console.log(CSRFflag); //this will be true;
});
```
### Convenience Observables and Signals
For commonly accessed preferences like `locale`, the service provides both observables and signals that simplify access patterns.
#### Using Signals (Recommended - No Subscription Needed!)
Signals automatically handle cleanup and don't require manual unsubscription:
```ts
export class MyComponent {
private userPreferences = inject(UserPreferencesService);
// Signal - automatically reactive, no subscription needed!
currentLocale = this.userPreferences.localeSignal;
// Use in template or computed values
displayText = computed(() => `Current locale: ${this.currentLocale()}`);
}
```
Available signals:
- `localeSignal` - Current locale value
- `paginationSizeSignal` - Current pagination size
- `supportedPageSizesSignal` - Supported page sizes array
**Benefits of signals:**
- ✅ No manual subscription/unsubscription needed
- ✅ Automatic cleanup when component is destroyed
- ✅ Better performance with fine-grained reactivity
- ✅ Simpler code - just read the value with `()`
#### Using Observables (For Advanced Cases)
If you need RxJS operators or imperative subscriptions:
```ts
constructor(private userPreferences: UserPreferencesService) {
// Observable - requires takeUntilDestroyed() to prevent memory leaks
this.userPreferences.locale$
.pipe(takeUntilDestroyed())
.subscribe(locale => {
this.currentLocale = locale;
});
}
```
Available observables:
- `locale$` - Observable for locale changes
- `paginationSize$` - Observable for pagination size changes
- `supportedPageSizes$` - Observable for supported page sizes changes
**Note:** When subscribing to observables from a singleton service in a component, always use `takeUntilDestroyed()` or `takeUntil()` to prevent memory leaks.
-5
View File
@@ -55,8 +55,3 @@ The pages linked below contain the licenses for all third party dependencies of
- [ADF 7.0.0-alpha.6](license-info-7.0.0-alpha.6.md)
- [ADF 7.0.0-alpha.7](license-info-7.0.0-alpha.7.md)
- [ADF 7.0.0](license-info-7.0.0.md)
- [ADF 8.0.0](license-info-8.0.0.md)
- [ADF 8.1.0](license-info-8.1.0.md)
- [ADF 8.1.1](license-info-8.1.1.md)
- [ADF 8.2.0](license-info-8.2.0.md)
- [ADF 8.2.1](license-info-8.2.1.md)
-50
View File
@@ -1,50 +0,0 @@
---
Title: License info, alfresco-ng2-components 8.0.0
---
# License information for alfresco-ng2-components 8.0.0
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-morph](https://github.com/dsherret/ts-morph) | 26.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
-50
View File
@@ -1,50 +0,0 @@
---
Title: License info, alfresco-ng2-components 8.1.0
---
# License information for alfresco-ng2-components 8.1.0
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-morph](https://github.com/dsherret/ts-morph) | 26.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
-50
View File
@@ -1,50 +0,0 @@
---
Title: License info, alfresco-ng2-components 8.1.1
---
# License information for alfresco-ng2-components 8.1.1
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-morph](https://github.com/dsherret/ts-morph) | 26.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
-51
View File
@@ -1,51 +0,0 @@
---
Title: License info, alfresco-ng2-components 8.2.0
---
# License information for alfresco-ng2-components 8.2.0
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| editorjs-html | 4.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eventemitter3](https://github.com/primus/eventemitter3) | 4.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eventemitter3](https://github.com/primus/eventemitter3) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
-51
View File
@@ -1,51 +0,0 @@
---
Title: License info, alfresco-ng2-components 8.2.1
---
# License information for alfresco-ng2-components 8.2.1
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| editorjs-html | 4.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eventemitter3](https://github.com/primus/eventemitter3) | 4.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eventemitter3](https://github.com/primus/eventemitter3) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
@@ -0,0 +1,61 @@
---
Title: App List Cloud Component
Added: v3.0.0
Status: Experimental
Last reviewed: 2025-01-03
---
# App List Cloud Component
`standalone`, `component`
Shows all deployed cloud application instances.
## Basic Usage
```html
<adf-cloud-app-list [layoutType]="'GRID'" />
```
### [Transclusions](../../user-guide/transclusion.md)
You can show custom content when there are no apps available by supplying an
`<adf-custom-empty-content>` section:
```html
<adf-cloud-app-list [layoutType]="'GRID'">
<adf-custom-empty-content>
No Apps present
</adf-custom-empty-content>
</adf-cloud-app-list>
```
## Activiti 7
If you are generating a project for Activiti 7, you must add the list of apps you want to use in **app.config.json** .
For example :
```json
{
"alfresco-deployed-apps": [
{
"name": "simple-app"
}
]
}
```
## Class members
### Properties
| Name | Type | Default value | Description |
|------------|----------|---------------|--------------------------------------------------------------------------------------------------|
| layoutType | `string` | LAYOUT_GRID | (**required**) Defines the layout of the apps. There are two possible values, "GRID" and "LIST". |
### Events
| Name | Type | Description |
|----------|------------------------------------------|---------------------------------------|
| appClick | `EventEmitter<ApplicationInstanceModel>` | Emitted when an app entry is clicked. |
@@ -85,11 +85,13 @@ The template defined inside `empty-form` will be shown when no form definition i
| fieldValidators | [`FormFieldValidator`](../../../lib/core/src/lib/form/components/widgets/core/form-field-validator.ts)`[]` | | [FormFieldValidator](../../../lib/core/src/lib/form/components/widgets/core/form-field-validator.ts) allow to override the form field validators provided. |
| form | [`FormModel`](../../../lib/core/src/lib/form/components/widgets/core/form.model.ts) | | Underlying form model instance. |
| formId | `string` | | Task id to fetch corresponding form and values. |
| isNextTaskCheckboxChecked | `boolean` | false | Whether the `Open next task` checkbox is checked by default or not. |
| nameNode | `string` | | Name to assign to the new node where the metadata are stored. |
| path | `string` | | Path of the folder where the metadata will be stored. |
| processInstanceId | `string` | | ProcessInstanceId id to fetch corresponding form and values. |
| readOnly | `boolean` | false | Toggle readonly state of the form. Forces all form widgets to render as readonly if enabled. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` outcome button. |
| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox. |
| showRefreshButton | `boolean` | true | Toggle rendering of the `Refresh` button. |
| showSaveButton | `boolean` | true | Toggle rendering of the `Save` outcome button. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
@@ -0,0 +1,32 @@
---
Title: Form Definition Selector Cloud
Added: v3.3.0
Status: Active
---
# [Form Definition Selector Cloud](../../../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts "Defined in form-definition-selector-cloud.component.ts")
Allows one form to be selected from a dropdown list. For forms to be displayed in this component they will need to be compatible with standAlone tasks.
## Basic Usage
```html
<adf-cloud-form-definition-selector
[appName]="'simple-app'"
(selectForm)="onFormSelect($event)">
</adf-cloud-form-definition-selector>
```
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| appName | `string` | "" | Name of the application. If specified, this shows the users who have access to the app. |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| selectForm | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when a form is selected. |
@@ -60,12 +60,10 @@ export class YourService extends ScreenRenderingService {
| appName | `string` | "" | App id to fetch corresponding form and values. |
| canClaimTask | `boolean` | | Boolean informing if a task can be claimed. |
| canUnclaimTask | `boolean` | | Boolean informing if a task can be unclaimed. |
| isNextTaskCheckboxChecked | `boolean` | false | Whether the `Open next task` checkbox is checked by default or not. |
| processInstanceId | `string` | | Process Instance Id to fetch corresponding data. |
| rootProcessInstanceId | `string` | | Root Process Instance Id to fetch corresponding data. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox (controlled internally by parent component). |
| screenId | `string` | | Screen id to create dynamic component |
| taskId | `string` | | Task id to fetch corresponding form and values. |
| taskName | `string` | | Name of the task. |
@@ -37,9 +37,11 @@ Starts a process.
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| appName | `string` | "" | (required) Name of the app. |
| isNextTaskCheckboxChecked | `boolean` | false | Whether the `Open next task` checkbox is checked by default or not. |
| maxNameLength | `number` | MAX_NAME_LENGTH | Maximum length of the process name. |
| name | `string` | "" | Name of the process. |
| processDefinitionName | `string` | | Name of the process definition. |
| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox. |
| showSelectProcessDropdown | `boolean` | true | Show/hide the process dropdown list. |
| showTitle | `boolean` | true | Show/hide title. |
| values | [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` | | Parameter to pass form field values in the start form if one is associated. |
@@ -52,6 +54,7 @@ Starts a process.
| cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when the starting process is cancelled |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when an error occurs. |
| formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ContentLinkModel`](../../../lib/core/src/lib/form/components/widgets/core/content-link.model.ts)`>` | Emitted when form content is clicked. |
| nextTaskCheckboxCheckedChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`MatCheckboxChange`](https://material.angular.io/components/checkbox/api#MatCheckboxChange)`>` | Emitted when the `Open next task` checkbox was toggled. |
| processDefinitionSelection | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessDefinitionCloud`](../../../lib/process-services-cloud/src/lib/models/process-definition-cloud.model.ts)`>` | Emitted when process definition selection changes. |
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when the process is successfully started. |
@@ -36,9 +36,11 @@ Save and Complete buttons get disabled when at least one of the form's inputs ar
| Name | Type | Default value | Description |
| ------------------------- | ------------------------------------- | ------------- | ------------------------------------------------------------------- |
| appName | `string` | "" | App id to fetch corresponding form and values. |
| isNextTaskCheckboxChecked | `boolean` | false | Whether the `Open next task` checkbox is checked by default or not. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox. |
| showRefreshButton | `boolean` | false | Toggle rendering of the `Refresh` button. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
@@ -55,6 +57,7 @@ Save and Complete buttons get disabled when at least one of the form's inputs ar
| formCompleted | `EventEmitter<FormModel>` | Emitted when the form is submitted with the `Complete` outcome. |
| formContentClicked | `EventEmitter<ContentLinkModel>` | Emitted when form content is clicked. |
| formSaved | `EventEmitter<FormModel>` | Emitted when the form is saved. |
| nextTaskCheckboxCheckedChanged | `EventEmitter<MatCheckboxChange>` | Emitted when the `Open next task` checkbox was toggled. |
| onTaskLoaded | `EventEmitter<TaskDetailsCloudModel>` | Emitted when a task is loaded. |
| taskClaimed | `EventEmitter<string>` | Emitted when the task is claimed. |
| taskCompleted | `EventEmitter<string>` | Emitted when the task is completed. |
@@ -44,3 +44,7 @@ For example :
```json
"alfresco-deployed-apps" : [{"name": "simple-app"}]
```
## See also
- [App list cloud component](../components/app-list-cloud.component.md)
-5
View File
@@ -9,11 +9,6 @@ The first **General Availability** release was v2.0.0.
## General Availability
- [8.2.1](RelNote-8.2.1.md)
- [8.2.0](RelNote-8.2.0.md)
- [8.1.1](RelNote-8.1.1.md)
- [8.1.0](RelNote-8.1.0.md)
- [8.0.0](RelNote-8.0.0.md)
- [7.0.0](RelNote-7.0.0.md)
- [7.0.0-alpha.7](RelNote-7.0.0-alpha.7.md)
- [7.0.0-alpha.6](RelNote-7.0.0-alpha.6.md)
-129
View File
@@ -1,129 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v8.0.0
---
# Changelog
- [7aa07ef525](https://github.com/Alfresco/alfresco-ng2-components/commit/7aa07ef525) AAE-36614 new provideShell api (#11006)
- [2ebee4c024](https://github.com/Alfresco/alfresco-ng2-components/commit/2ebee4c024) AAE-36615 new provideI18N api (#11007)
- [b563e283c1](https://github.com/Alfresco/alfresco-ng2-components/commit/b563e283c1) [ACS-9789] Multiple styles issues for metadata sidebar (#11015)
- [f1bdbf63b0](https://github.com/Alfresco/alfresco-ng2-components/commit/f1bdbf63b0) AAE-36368 Fixing labels and form-fields on content-ee and apa (#10982)
- [0651dc25d5](https://github.com/Alfresco/alfresco-ng2-components/commit/0651dc25d5) [ACS-9790] Fix Tags and Categories content is missing during editing other panel (#11004)
- [ec145fb73c](https://github.com/Alfresco/alfresco-ng2-components/commit/ec145fb73c) [ADF-5583] Update style to make version visible outside dialog (#11005)
- [450a4a0a49](https://github.com/Alfresco/alfresco-ng2-components/commit/450a4a0a49) [ACS-9789] Multiple styles issues for metadata sidebar (#11002)
- [11cb2ea688](https://github.com/Alfresco/alfresco-ng2-components/commit/11cb2ea688) AAE-36484 improved standalone support for Core (#10998)
- [6a3623bd76](https://github.com/Alfresco/alfresco-ng2-components/commit/6a3623bd76) AAE-35676 Cleanup Open Next Task (#10952)
- [5438eef9db](https://github.com/Alfresco/alfresco-ng2-components/commit/5438eef9db) AAE-36260 global test setup (#10970)
- [e96f5b3c48](https://github.com/Alfresco/alfresco-ng2-components/commit/e96f5b3c48) [AAE-36397] ADF viewer image is no longer cropped (#10996)
- [54fd097fab](https://github.com/Alfresco/alfresco-ng2-components/commit/54fd097fab) [ACS-9327] Add prohibited symbols validation for Categories dialog (#10985)
- [9bed60befc](https://github.com/Alfresco/alfresco-ng2-components/commit/9bed60befc) AAE-30842 Fix rendering small devices again (#10986)
- [c863da0c5d](https://github.com/Alfresco/alfresco-ng2-components/commit/c863da0c5d) [MNT-24459] Aspect list get all aspects when not all were fetched by first call (#10980)
- [951b22e098](https://github.com/Alfresco/alfresco-ng2-components/commit/951b22e098) Angular 19 migration (#10795)
- [c7f28d54d6](https://github.com/Alfresco/alfresco-ng2-components/commit/c7f28d54d6) [ADF-5581] Reset filterValue when navigating to a new folder to ensur… (#10978)
- [d776c7c77d](https://github.com/Alfresco/alfresco-ng2-components/commit/d776c7c77d) AAE-35310 Displaying different text fields on an eform doesn&#39;t align vertically or horizontally (#10979)
- [6dafcb4447](https://github.com/Alfresco/alfresco-ng2-components/commit/6dafcb4447) [ADF-5580] emit commentAdded event from adf-comments component (#10966)
- [5d043e6987](https://github.com/Alfresco/alfresco-ng2-components/commit/5d043e6987) [PRODSEC-10305] Bump @nx/webpack &amp; webpack-dev-server (#10976)
- [57713dbe6e](https://github.com/Alfresco/alfresco-ng2-components/commit/57713dbe6e) [MNT-25175] configured scripts to execute are listed by node id and not by script name (#10969)
- [8b3b6ffbca](https://github.com/Alfresco/alfresco-ng2-components/commit/8b3b6ffbca) AAE-36173 switch to TranslatePipe (#10968)
- [16f42be08e](https://github.com/Alfresco/alfresco-ng2-components/commit/16f42be08e) AAE-35976 Adding auto required instead of manually handling styles manually (#10956)
- [dcab68d78a](https://github.com/Alfresco/alfresco-ng2-components/commit/dcab68d78a) AAE-35632 Priority filter unit tests (#10965)
- [f40107de33](https://github.com/Alfresco/alfresco-ng2-components/commit/f40107de33) AAE-34482 Modelling inconsistencies in mat form fields label alignments ii (#10929)
- [c16417cbff](https://github.com/Alfresco/alfresco-ng2-components/commit/c16417cbff) [ACS-9250] Adjust viewer to display properly under parent without overlay mode (#10950)
- [27502d5d67](https://github.com/Alfresco/alfresco-ng2-components/commit/27502d5d67) AAE-34902 Updating styles for input controls to maintain the ui consistency with studio hxp (#10900)
- [a4072aca74](https://github.com/Alfresco/alfresco-ng2-components/commit/a4072aca74) AAE-35694 Update section-start-form with Sections in Row (#10947)
- [22b62804d5](https://github.com/Alfresco/alfresco-ng2-components/commit/22b62804d5) AAE-35882 Studio modelling forms required dropdown has double asterisk (#10948)
- [eda59a1de8](https://github.com/Alfresco/alfresco-ng2-components/commit/eda59a1de8) [ACS-8746] yellow warning color (#10883)
- [3009fa6dec](https://github.com/Alfresco/alfresco-ng2-components/commit/3009fa6dec) AAE-35848 Fix dynamic viewer container scaling (#10932)
- [8cfc8d32f2](https://github.com/Alfresco/alfresco-ng2-components/commit/8cfc8d32f2) AAE-35855 Security fixes (#10933)
- [cdc7553915](https://github.com/Alfresco/alfresco-ng2-components/commit/cdc7553915) [MNT-24923] legal hold hold capabilities are not verified properly (#10930)
- [f8a75d4af7](https://github.com/Alfresco/alfresco-ng2-components/commit/f8a75d4af7) Viewer renderer stop loading when subsequent renderer throws error (#10931)
- [31c2cb2162](https://github.com/Alfresco/alfresco-ng2-components/commit/31c2cb2162) AAE-35728 Add aria label to viewer loading bars (#10927)
- [2c4764f89e](https://github.com/Alfresco/alfresco-ng2-components/commit/2c4764f89e) Adds loading state accessibility (#10926)
- [e2693f9304](https://github.com/Alfresco/alfresco-ng2-components/commit/e2693f9304) AAE-35668 Sending empty string instead of null after clearing value from numeric field (#10925)
- [5d9acaec0d](https://github.com/Alfresco/alfresco-ng2-components/commit/5d9acaec0d) [AAE-35649] Viewer renderer wait until subsequent renderers will finish (#10924)
- [0c147513cc](https://github.com/Alfresco/alfresco-ng2-components/commit/0c147513cc) AAE-35521 Refactor AuthenticationService unit tests (#10922)
- [920b7d3585](https://github.com/Alfresco/alfresco-ng2-components/commit/920b7d3585) AAE-34641 Fix ViewerRenderComponent hanging when in a mat-tab (#10913)
- [643b5f723a](https://github.com/Alfresco/alfresco-ng2-components/commit/643b5f723a) Revert &#34;AAE-34641 Refactor viewer-render loading (#10868)&#34; (#10912)
- [a6ab5fcbdd](https://github.com/Alfresco/alfresco-ng2-components/commit/a6ab5fcbdd) [ACS-9696] fix failing upgrade rxjs from 7.8.1 to 7.8.2 (#10911)
- [35970b4278](https://github.com/Alfresco/alfresco-ng2-components/commit/35970b4278) AAE-21284 Add migration guide for Angular 17 to 18 (#10910)
- [379fbbb508](https://github.com/Alfresco/alfresco-ng2-components/commit/379fbbb508) [MNT-25043] Skip adding json as content type for FormData body requests (#10903)
- [cdb65bf204](https://github.com/Alfresco/alfresco-ng2-components/commit/cdb65bf204) [ACS-9377] remove the join button for records management library for user s without permissions for that library (#10901)
- [8cb7a1719f](https://github.com/Alfresco/alfresco-ng2-components/commit/8cb7a1719f) AAE-34656 Hide all counters in Workspace which do not provide value (#10896)
- [1971980216](https://github.com/Alfresco/alfresco-ng2-components/commit/1971980216) [ACS-9619] Issues with trimming file&#39;s name in viewer (#10858)
- [467a19f3ec](https://github.com/Alfresco/alfresco-ng2-components/commit/467a19f3ec) AAE-34959 Fix withCredentials can not be set by app.config.json (#10897)
- [d1e48f9c33](https://github.com/Alfresco/alfresco-ng2-components/commit/d1e48f9c33) [ACS-9247] Extend library column context (#10894)
- [79163cbae0](https://github.com/Alfresco/alfresco-ng2-components/commit/79163cbae0) AAE-34482 Fixing label and alignment issues in forms (#10898)
- [06921783bf](https://github.com/Alfresco/alfresco-ng2-components/commit/06921783bf) AAE-33907 Adds input for &#39;Open next task&#39; checkbox (#10823)
- [1462560e6e](https://github.com/Alfresco/alfresco-ng2-components/commit/1462560e6e) AAE-35057 Change position of adf-cloud-form-content-card-fullscreen to relative (#10888)
- [413fce8cb7](https://github.com/Alfresco/alfresco-ng2-components/commit/413fce8cb7) AAE-34641 Refactor viewer-render loading (#10868)
- [f2fa458fe5](https://github.com/Alfresco/alfresco-ng2-components/commit/f2fa458fe5) AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event (#10867)
- [e37ef279e4](https://github.com/Alfresco/alfresco-ng2-components/commit/e37ef279e4) AAE-32986 Add custom-form-widget process to simpleapp (#10881)
- [2cc3ba4d6b](https://github.com/Alfresco/alfresco-ng2-components/commit/2cc3ba4d6b) [ACS-7706] create tags return promise tag paging instead of tag entry (#10869)
- [3fea334468](https://github.com/Alfresco/alfresco-ng2-components/commit/3fea334468) [AAE-34479] added class for custom outcome button (#10882)
- [b3900b96ed](https://github.com/Alfresco/alfresco-ng2-components/commit/b3900b96ed) AAE-34972 Test PR for adf link (#10861)
- [2fd960bf5c](https://github.com/Alfresco/alfresco-ng2-components/commit/2fd960bf5c) AAE-34885 Form with tabs has incomplete frame in preview (#10880)
- [8b47434c37](https://github.com/Alfresco/alfresco-ng2-components/commit/8b47434c37) AAE-33052 Deprecate custom theme (#10870)
- [fe53c5d5a8](https://github.com/Alfresco/alfresco-ng2-components/commit/fe53c5d5a8) MNT-25095 Update the documentation (#10864)
- [051b82684f](https://github.com/Alfresco/alfresco-ng2-components/commit/051b82684f) AAE-34959 Allow disabling withCredentials for the identity providers that disallow credentials (#10859)
- [b4eee9d631](https://github.com/Alfresco/alfresco-ng2-components/commit/b4eee9d631) AAE-34675 Fix default selection required (#10860)
- [3ad13d3e38](https://github.com/Alfresco/alfresco-ng2-components/commit/3ad13d3e38) AAE-34992 Improve crowdin update strategy (#10865)
- [efd6e5b1b0](https://github.com/Alfresco/alfresco-ng2-components/commit/efd6e5b1b0) AAE-34826 Incorrect scale for rendered pdf documents (#10857)
- [6257510056](https://github.com/Alfresco/alfresco-ng2-components/commit/6257510056) Ng18 migration (#10683)
- [28137d8a09](https://github.com/Alfresco/alfresco-ng2-components/commit/28137d8a09) Revert &#34;AAE-34641 Fix form loading when tab is changed (#10843)&#34; (#10862)
- [58a5732043](https://github.com/Alfresco/alfresco-ng2-components/commit/58a5732043) AAE-34888 fixing padding issues in form widgets (#10853)
- [685bc387b5](https://github.com/Alfresco/alfresco-ng2-components/commit/685bc387b5) AAE-34641 Fix form loading when tab is changed (#10843)
- [f0c90594ca](https://github.com/Alfresco/alfresco-ng2-components/commit/f0c90594ca) AAE-34731 Hide the open next task checkbox for the Start Process view (#10842)
- [ec47d8eac8](https://github.com/Alfresco/alfresco-ng2-components/commit/ec47d8eac8) AAE-34869 fixing padding issue (#10850)
- [f2845a36c6](https://github.com/Alfresco/alfresco-ng2-components/commit/f2845a36c6) [AAE-29434] Adding process with process variables to simpleapp (#10845)
- [acf9e3e11c](https://github.com/Alfresco/alfresco-ng2-components/commit/acf9e3e11c) Improvement/aae 30909 enhance user experience with tab navigation within the form (#10844)
- [adeb82c137](https://github.com/Alfresco/alfresco-ng2-components/commit/adeb82c137) AAE-34335 fix for styling discrepancies in form-widgets (#10841)
- [48defa2b5f](https://github.com/Alfresco/alfresco-ng2-components/commit/48defa2b5f) AAE-34594 Remove redundant scroll bar from form renderer (#10840)
- [9ee0e5ee3e](https://github.com/Alfresco/alfresco-ng2-components/commit/9ee0e5ee3e) AAE-19688 Persist feature flag overrides in session storage (#10832)
- [0f1200b5a2](https://github.com/Alfresco/alfresco-ng2-components/commit/0f1200b5a2) AAE-34514 Disable next task checkbox for forms (#10824)
- [997e82a6b0](https://github.com/Alfresco/alfresco-ng2-components/commit/997e82a6b0) AAE-34543 Remove unused mat-selectors (#10830)
- [b1113c51a7](https://github.com/Alfresco/alfresco-ng2-components/commit/b1113c51a7) AAE-34493 Improved internal mat-selectors (#10829)
- [dc35ef8a6f](https://github.com/Alfresco/alfresco-ng2-components/commit/dc35ef8a6f) AAE-34478 Hide Open next task checkbox on claim screen (#10822)
- [cb220968cf](https://github.com/Alfresco/alfresco-ng2-components/commit/cb220968cf) [AAE-34481] Field error message has preserved space (#10820)
- [50ad04aeb3](https://github.com/Alfresco/alfresco-ng2-components/commit/50ad04aeb3) [ACS-9564] Corrected models after change of Knowledge Retrieval answer structure (#10817)
- [b1fca8dd4b](https://github.com/Alfresco/alfresco-ng2-components/commit/b1fca8dd4b) fix datetime picker theming (#10821)
- [3d598cd0c2](https://github.com/Alfresco/alfresco-ng2-components/commit/3d598cd0c2) AAE-34470 Ignore content type of fetched pdfjs worker (#10818)
- [7b67c7cf3a](https://github.com/Alfresco/alfresco-ng2-components/commit/7b67c7cf3a) AAE-34458 Cleanup deprecated styles, bug fixes (#10819)
- [f34bbf59be](https://github.com/Alfresco/alfresco-ng2-components/commit/f34bbf59be) AAE-33589 Get task variables when preferences are updated (#10813)
- [9575fe633b](https://github.com/Alfresco/alfresco-ng2-components/commit/9575fe633b) AAE-34439 Cleanup Styles (#10815)
- [c6652f32b2](https://github.com/Alfresco/alfresco-ng2-components/commit/c6652f32b2) [ACS-959] [E2E] updated e2eapp v2 (#10816)
- [d6317a7b87](https://github.com/Alfresco/alfresco-ng2-components/commit/d6317a7b87) [ACS-9227] Fixed interactive controls must not be nested issue in datatable.component.html (#10681)
- [d829d8eefb](https://github.com/Alfresco/alfresco-ng2-components/commit/d829d8eefb) AAE-34390 Clean old theming files (#10800)
- [4cfda763b6](https://github.com/Alfresco/alfresco-ng2-components/commit/4cfda763b6) Simulate a change to upstream adf (#10814)
- [ff0885c265](https://github.com/Alfresco/alfresco-ng2-components/commit/ff0885c265) AAE-34328 Remove additional space in amount widget currency (#10812)
- [068bcc89d3](https://github.com/Alfresco/alfresco-ng2-components/commit/068bcc89d3) Create a git tag for every release (#10811)
- [69f92bcc61](https://github.com/Alfresco/alfresco-ng2-components/commit/69f92bcc61) [ACS-9565] Updated e2e application (#10810)
- [d0b2915c88](https://github.com/Alfresco/alfresco-ng2-components/commit/d0b2915c88) Revert &#34;AAE-29010 GH actions rerun after approval (#10772) (#10774)&#34; (#10809)
- [fdd4f6c081](https://github.com/Alfresco/alfresco-ng2-components/commit/fdd4f6c081) AAE-22975 update to the latest version of pdfjs-dist library (#10780)
- [0dc45e95af](https://github.com/Alfresco/alfresco-ng2-components/commit/0dc45e95af) [MNT-24715] App with APS does not show display value of dynamic table (#10799)
- [1f73f7fe40](https://github.com/Alfresco/alfresco-ng2-components/commit/1f73f7fe40) AAE-33955 Add placeholder for data table widget (preview) (#10796)
- [6fb9474d46](https://github.com/Alfresco/alfresco-ng2-components/commit/6fb9474d46) [ACS-9552] Add obsolete task list filters migration (#10798)
- [014fb9cfa8](https://github.com/Alfresco/alfresco-ng2-components/commit/014fb9cfa8) AAE-34100 Add group-with-sections process to simpleapp (#10791)
- [a426338f94](https://github.com/Alfresco/alfresco-ng2-components/commit/a426338f94) [MNT-24950] Fix process file preview button state (#10790)
- [c8f9bd21ea](https://github.com/Alfresco/alfresco-ng2-components/commit/c8f9bd21ea) [ACS-9454] Create upgrade guide for ADF 7.0.0 (#10779)
- [baf0e4552e](https://github.com/Alfresco/alfresco-ng2-components/commit/baf0e4552e) AAE-34135 add confirmation (#10783)
- [659805ab20](https://github.com/Alfresco/alfresco-ng2-components/commit/659805ab20) AAE-33090 Open Next Task Checkbox (#10757)
- [f6c446498a](https://github.com/Alfresco/alfresco-ng2-components/commit/f6c446498a) AAE-29010 GH actions rerun after approval (#10772) (#10774)
- [137088d4f6](https://github.com/Alfresco/alfresco-ng2-components/commit/137088d4f6) AAE-33939 Angular migration documentation (#10775)
- [8eef4e6eec](https://github.com/Alfresco/alfresco-ng2-components/commit/8eef4e6eec) [ACS-9440] Language in lang attribute is not changed after changing language (#10776)
- [82175bad80](https://github.com/Alfresco/alfresco-ng2-components/commit/82175bad80) [ACS-9435] Resolve a11y issues for &#39;Add use/group&#39; dialog (#10773)
- [cd63f67e0a](https://github.com/Alfresco/alfresco-ng2-components/commit/cd63f67e0a) [ACS-5184] Show progress spinner on file navigation (#10596)
- [2d21340947](https://github.com/Alfresco/alfresco-ng2-components/commit/2d21340947) [AAE-33096] added rootProcessInstanceId to dynamic component (#10762)
- [8e0ea373f0](https://github.com/Alfresco/alfresco-ng2-components/commit/8e0ea373f0) [ACS-9406] Add getContentRenditionTypePreview to process-content service (#10743)
- [90f5951cd8](https://github.com/Alfresco/alfresco-ng2-components/commit/90f5951cd8) AAE-33449 HXPMNT-748 Hidden dropdown validation (#10760)
- [555e6c027f](https://github.com/Alfresco/alfresco-ng2-components/commit/555e6c027f) AAE-33025 Updated process definition type to support constant values (#10751)
- [142c6ae754](https://github.com/Alfresco/alfresco-ng2-components/commit/142c6ae754) AAE-33340 Async Form Enrichment - Spinner doesnt hide on process completion (#10749)
- [abaf7df9c6](https://github.com/Alfresco/alfresco-ng2-components/commit/abaf7df9c6) AAE-33007 Display empty data table without error (#10744)
- [9bbbc8193d](https://github.com/Alfresco/alfresco-ng2-components/commit/9bbbc8193d) AAE-33137 Asynchronous Form Enrichment does Not Populate Date Fields (#10746)
- [eb2f543822](https://github.com/Alfresco/alfresco-ng2-components/commit/eb2f543822) upgrade guide (#10732)
- [6703b8b7da](https://github.com/Alfresco/alfresco-ng2-components/commit/6703b8b7da) AAE-32763 Custom column visibility is not persistent after refresh (#10728)
- [3475098f32](https://github.com/Alfresco/alfresco-ng2-components/commit/3475098f32) fix undefiend tooltip (#10731)
- [083755b41a](https://github.com/Alfresco/alfresco-ng2-components/commit/083755b41a) [ACS-5190] document name text alignement and long name trim issue (#10715)
- [015ce8a99e](https://github.com/Alfresco/alfresco-ng2-components/commit/015ce8a99e) [ACS-9375] Transparent background for hovered spinner (#10691)
- [b643054a15](https://github.com/Alfresco/alfresco-ng2-components/commit/b643054a15) AAE-32999 Removed subscriptions-transport-ws feature flag (#10727)
- [838b3e78b7](https://github.com/Alfresco/alfresco-ng2-components/commit/838b3e78b7) [ACS-9398] Add snackbar notifications for favorite node directive (#10714)
- [e8d1328244](https://github.com/Alfresco/alfresco-ng2-components/commit/e8d1328244) Post-release version bump (#10726)
-48
View File
@@ -1,48 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v8.1.0
---
# Changelog
- [2e20c3da45](https://github.com/Alfresco/alfresco-ng2-components/commit/2e20c3da45) [ACS-9978] DynamicChipListComponent not rendered as expected (#11132)
- [bf8c68e05f](https://github.com/Alfresco/alfresco-ng2-components/commit/bf8c68e05f) [ACS-9978] DynamicChipListComponent not rendered as expected (#11128)
- [f81348997b](https://github.com/Alfresco/alfresco-ng2-components/commit/f81348997b) [ACS-10010] [ACA] Label position problem in some perform actions like &#39;send-email&#39; (#11117)
- [cbc204519e](https://github.com/Alfresco/alfresco-ng2-components/commit/cbc204519e) [ACS-9986]: removes unneccesary styles (#11105)
- [9b6688ce10](https://github.com/Alfresco/alfresco-ng2-components/commit/9b6688ce10) CSX-73 Date and Select Satori (#11056)
- [9deaab4c11](https://github.com/Alfresco/alfresco-ng2-components/commit/9deaab4c11) AAE-37006 Fix floating label overlapping in dateitem component (#11118)
- [81e307c81e](https://github.com/Alfresco/alfresco-ng2-components/commit/81e307c81e) AAE-32587 new custom screen registration api (#11120)
- [0e4fced94e](https://github.com/Alfresco/alfresco-ng2-components/commit/0e4fced94e) AAE-37073 Fix error message location and field not highlighting red for card-view-textitem component (#11115)
- [b16e326ac3](https://github.com/Alfresco/alfresco-ng2-components/commit/b16e326ac3) AAE-36664 additional linting rules, cleanup (#11084)
- [794bc92b4a](https://github.com/Alfresco/alfresco-ng2-components/commit/794bc92b4a) AAE-37293 core auth provider api (#11104)
- [5213621023](https://github.com/Alfresco/alfresco-ng2-components/commit/5213621023) AAE-37287 provideExtensions provider api for Angular standalone (#11103)
- [67b1d67668](https://github.com/Alfresco/alfresco-ng2-components/commit/67b1d67668) AAE-37067 Extend QueryParams interface (#11102)
- [1fe4dd6fc9](https://github.com/Alfresco/alfresco-ng2-components/commit/1fe4dd6fc9) AAE-36822 Removes showNextTaskCheckbox input for the feature flag (#11066)
- [9a0b75caa1](https://github.com/Alfresco/alfresco-ng2-components/commit/9a0b75caa1) [ADF-5582] Fix avatar rendering logic in adf-node-comments (#10995)
- [8ef0aee768](https://github.com/Alfresco/alfresco-ng2-components/commit/8ef0aee768) AAE-36869 Handles error messages with wrong JSON format (#11078)
- [3eead3917e](https://github.com/Alfresco/alfresco-ng2-components/commit/3eead3917e) AAE-36582 Fix forms misalignment in form renderer (#11062)
- [c8f0860514](https://github.com/Alfresco/alfresco-ng2-components/commit/c8f0860514) AAE-35934 Cleanup dependencies (#11089)
- [b67d0a7886](https://github.com/Alfresco/alfresco-ng2-components/commit/b67d0a7886) [AAE-36538] Removed flex-direction:column for form section column large screens (#11090)
- [613de66244](https://github.com/Alfresco/alfresco-ng2-components/commit/613de66244) [MNT-25110] Unwanted duplicated Horizontal scrollbar (#11079)
- [8978e24c79](https://github.com/Alfresco/alfresco-ng2-components/commit/8978e24c79) [AAE-36983] Updated translation keys in search-text-input.component.html (#11083)
- [bf7f7ebf9f](https://github.com/Alfresco/alfresco-ng2-components/commit/bf7f7ebf9f) AAE-36536 fix for root section and mobile form input layout (#11081)
- [d5c2e7c585](https://github.com/Alfresco/alfresco-ng2-components/commit/d5c2e7c585) AAE-36664 Cleanup deprecated AppConfigModule (#11016)
- [4c4dd195a4](https://github.com/Alfresco/alfresco-ng2-components/commit/4c4dd195a4) Remove unused webdriver-manager dependency to eliminate vulnerable form-data ~2.3.2 (#11060)
- [a29d846f4a](https://github.com/Alfresco/alfresco-ng2-components/commit/a29d846f4a) AAE-35310 fixing alignment for checkboxes in sections (#11039)
- [7fbcfe7d6a](https://github.com/Alfresco/alfresco-ng2-components/commit/7fbcfe7d6a) AAE-36536 Allow form sections to be at the root level of form (#11070)
- [0706c9f6de](https://github.com/Alfresco/alfresco-ng2-components/commit/0706c9f6de) AAE-36388 Form Field alignment issues for one liner forms (#11054)
- [dcd15debf0](https://github.com/Alfresco/alfresco-ng2-components/commit/dcd15debf0) AAE-25571 Add title to file name (#11027)
- [fbacd5c51e](https://github.com/Alfresco/alfresco-ng2-components/commit/fbacd5c51e) Update form-section.component.scss (#11064)
- [19b69e024a](https://github.com/Alfresco/alfresco-ng2-components/commit/19b69e024a) AAE-33082 Fixing dropdown widget update value based on form rule (#11068)
- [71df219f94](https://github.com/Alfresco/alfresco-ng2-components/commit/71df219f94) AAE-36023 Making develop sync with ng18 backup branch (#11061)
- [49c0f44435](https://github.com/Alfresco/alfresco-ng2-components/commit/49c0f44435) Removed esm2022 check as is not supported anymore since Ng18 (#11058)
- [9a3ababb9c](https://github.com/Alfresco/alfresco-ng2-components/commit/9a3ababb9c) AAE-36716 fixing text-form-field blur mechanism in control Value Accessor (#11045)
- [d7ec3a1b77](https://github.com/Alfresco/alfresco-ng2-components/commit/d7ec3a1b77) AAE-35981 Form button customization (#11047)
- [06a9ddc068](https://github.com/Alfresco/alfresco-ng2-components/commit/06a9ddc068) AAE-36023 Some form fields are not properly aligned and cropped out ng19 (#11050)
- [0f9e4759ad](https://github.com/Alfresco/alfresco-ng2-components/commit/0f9e4759ad) AAE-0000 Added fix for stylus ban (#11051)
- [0b90affea4](https://github.com/Alfresco/alfresco-ng2-components/commit/0b90affea4) ACS-8770 Update the Auth Service api docs and deprecations (#9947)
- [45834e20f9](https://github.com/Alfresco/alfresco-ng2-components/commit/45834e20f9) AAE-36388 fixing form-field cut issue on preview (#11025)
- [f15014f295](https://github.com/Alfresco/alfresco-ng2-components/commit/f15014f295) [ACS-9880] Create ADF upgrade guide from 7.0.0 to 8.0.0 (#11029)
- [b28479b92b](https://github.com/Alfresco/alfresco-ng2-components/commit/b28479b92b) [AAE-32978] Move ADF &#34;RichTextEditorComponent&#34; to HxP monorepo (#10967)
- [89380f2905](https://github.com/Alfresco/alfresco-ng2-components/commit/89380f2905) [ACS-7266] checkboxes in sorting boxes are put on the right side of the text instead of the left side (#11009)
- [e5fcfde2ec](https://github.com/Alfresco/alfresco-ng2-components/commit/e5fcfde2ec) Post release version bump (#11021)
- [2e10d2c5c7](https://github.com/Alfresco/alfresco-ng2-components/commit/2e10d2c5c7) AAE-36718 Expose a landing page provider for the landing-page-token (#11020)
-7
View File
@@ -1,7 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v8.1.1
---
# Changelog
- [0576aac985](https://github.com/Alfresco/alfresco-ng2-components/commit/0576aac985) Revert &#34;CSX-73 Date and Select Satori (#11056)&#34; (#11144)
-120
View File
@@ -1,120 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v8.2.0
---
# Changelog
- [2ebe4ccfb0](https://github.com/Alfresco/alfresco-ng2-components/commit/2ebe4ccfb0) AAE-39923 Placeholder transformed with currency based on locale (#11342)
- [9af4b7a4b6](https://github.com/Alfresco/alfresco-ng2-components/commit/9af4b7a4b6) [MNT-25412] Chip autocomplete set input value when preselected options change (#11350)
- [a748541ca0](https://github.com/Alfresco/alfresco-ng2-components/commit/a748541ca0) AAE-39988 Fix dropdown conditional functionality (#11343)
- [ac3c30480b](https://github.com/Alfresco/alfresco-ng2-components/commit/ac3c30480b) AAE-39949 Fix error while deleting empty row in repeatable section (#11346)
- [002c5b4bf7](https://github.com/Alfresco/alfresco-ng2-components/commit/002c5b4bf7) [MNT-25423] Prevent minimizing menu again when previous and current route contain minimize URL (#11345)
- [d298d92214](https://github.com/Alfresco/alfresco-ng2-components/commit/d298d92214) [ACS-10592] Remove &#39;secret&#39; field from OAUTH config across ADF/ACA/ADW (#11332)
- [b7d687f3d2](https://github.com/Alfresco/alfresco-ng2-components/commit/b7d687f3d2) Adds quickRunDeployment property (#11340)
- [c2c3bff7bb](https://github.com/Alfresco/alfresco-ng2-components/commit/c2c3bff7bb) [AAE-39926] added missing locale param (#11341)
- [c2f4597309](https://github.com/Alfresco/alfresco-ng2-components/commit/c2f4597309) [MNT-25412] Proper date filter clean up after reset event (#11317)
- [0d670dd333](https://github.com/Alfresco/alfresco-ng2-components/commit/0d670dd333) AAE-27107 Improve repeatable section widget (#11336)
- [d85a261720](https://github.com/Alfresco/alfresco-ng2-components/commit/d85a261720) [ACS-10199] Add visible focus to the details tabs (#11335)
- [b61912e3eb](https://github.com/Alfresco/alfresco-ng2-components/commit/b61912e3eb) [ACS-10300] a11y Fix: visible and accessible Group label is missing (#11330)
- [ea58a5d794](https://github.com/Alfresco/alfresco-ng2-components/commit/ea58a5d794) [ACS-10310] Fix a11y - Screen reader announces column header as undefined (#11328)
- [e11aa6ddf3](https://github.com/Alfresco/alfresco-ng2-components/commit/e11aa6ddf3) AAE-38748 Fix ComputeTitle undefined error in upstream (#11334)
- [61e1395bfa](https://github.com/Alfresco/alfresco-ng2-components/commit/61e1395bfa) [ACS-10263] sr personal files mark all as read button incorrectly grouped as notification list (#11331)
- [43622266ce](https://github.com/Alfresco/alfresco-ng2-components/commit/43622266ce) AAE-21565 Replace deprecated @import with @use in all scss files (#11273)
- [38d98200a6](https://github.com/Alfresco/alfresco-ng2-components/commit/38d98200a6) [ACS-10196] other a11y all libraries error message not provided for name and library id fields (#11311)
- [e28e924b87](https://github.com/Alfresco/alfresco-ng2-components/commit/e28e924b87) AAE-38748 Change clipboard directive to be a tooltip (#11293)
- [3180ca8e9d](https://github.com/Alfresco/alfresco-ng2-components/commit/3180ca8e9d) AAE-37713 Amount locale display v.2 (#11319)
- [c2add07426](https://github.com/Alfresco/alfresco-ng2-components/commit/c2add07426) [ACS-9166]: Recreating PR changes for support legacy config based saved searches (#11329)
- [ab67ba3414](https://github.com/Alfresco/alfresco-ng2-components/commit/ab67ba3414) AAE-39155 Implement button widget on ADF (#11324)
- [c4f276e228](https://github.com/Alfresco/alfresco-ng2-components/commit/c4f276e228) AAE-39612 Registering click event on form widget twice (#11323)
- [f7d26d904f](https://github.com/Alfresco/alfresco-ng2-components/commit/f7d26d904f) AAE-27107 Create repeatable section widget (#11290)
- [e85a27e05b](https://github.com/Alfresco/alfresco-ng2-components/commit/e85a27e05b) Revert &#34;[ACS-10083] Filter not behaving correctly in file and site (#… (#11327)
- [4acda3b09b](https://github.com/Alfresco/alfresco-ng2-components/commit/4acda3b09b) [MNT-25413] ADW - First login after a clear cache does not show the s… (#11318)
- [4feba2f304](https://github.com/Alfresco/alfresco-ng2-components/commit/4feba2f304) [ACS-10332] Search: Editable Combobox Without Autocomplete Does Not D… (#11310)
- [a4f5cfc964](https://github.com/Alfresco/alfresco-ng2-components/commit/a4f5cfc964) AAE-39560: security fixes (#11315)
- [86093adf18](https://github.com/Alfresco/alfresco-ng2-components/commit/86093adf18) Revert &#34;AAE-37713 Amount locale display (#11285)&#34; (#11312)
- [59b148ea03](https://github.com/Alfresco/alfresco-ng2-components/commit/59b148ea03) AAE-37713 Amount locale display (#11285)
- [82b9b18891](https://github.com/Alfresco/alfresco-ng2-components/commit/82b9b18891) [ACS-10518]: Search input keyboard navigation accessibility fixes (#11270)
- [5016eff847](https://github.com/Alfresco/alfresco-ng2-components/commit/5016eff847) [ACS-10083] Filter not behaving correctly in file and site (#11237)
- [6ab54be7d0](https://github.com/Alfresco/alfresco-ng2-components/commit/6ab54be7d0) [ACS-10324]: checkbox enter key handling (#11271)
- [2d68cf9916](https://github.com/Alfresco/alfresco-ng2-components/commit/2d68cf9916) [AAE-39261] Fix Portuguese date format to display dd/mm/yyyy (#11303)
- [42a1ddf540](https://github.com/Alfresco/alfresco-ng2-components/commit/42a1ddf540) [ACS-10178] Remove deprecated ADF components (#11221)
- [8c9f6a0828](https://github.com/Alfresco/alfresco-ng2-components/commit/8c9f6a0828) AAE-39318 Break dependency on AWS S3 (#11300)
- [160b12993f](https://github.com/Alfresco/alfresco-ng2-components/commit/160b12993f) [ACS-10271][ACS-10236] a11y - Search filters have no visible labels (#11302)
- [f152953cc9](https://github.com/Alfresco/alfresco-ng2-components/commit/f152953cc9) [ACS-10333] Personal files: New File Title Not Announced by Screen Readers After Upload (#11298)
- [e202c693c1](https://github.com/Alfresco/alfresco-ng2-components/commit/e202c693c1) AAE-39314 Break dependencies on the &#34;commander&#34; lib in the CLI (#11299)
- [1c8af0467e](https://github.com/Alfresco/alfresco-ng2-components/commit/1c8af0467e) [ACS-9980] Add SSO integration API (#11297)
- [1685ee4c8b](https://github.com/Alfresco/alfresco-ng2-components/commit/1685ee4c8b) AAE-39268 Remove jasmine-marbles dependency and related test code from form-rules.model.spec.ts (#11296)
- [983d505309](https://github.com/Alfresco/alfresco-ng2-components/commit/983d505309) HXIDP-5126 Fix adf-cloud-task-screen re-initialization on completing (#11291)
- [81a0ee0963](https://github.com/Alfresco/alfresco-ng2-components/commit/81a0ee0963) AAE-39263 Remove Playwright dependencies (#11294)
- [b1f9f32e3f](https://github.com/Alfresco/alfresco-ng2-components/commit/b1f9f32e3f) Remove .dockerignore file to clean up unused configurations.
- [718df62173](https://github.com/Alfresco/alfresco-ng2-components/commit/718df62173) Remove nginx configuration file and update cspell dictionary to exclude &#39;nginx&#39;
- [e1d56be29c](https://github.com/Alfresco/alfresco-ng2-components/commit/e1d56be29c) [ACS-10325] a11y SR: Metadata edit button announced twice (#11275)
- [9b17f50401](https://github.com/Alfresco/alfresco-ng2-components/commit/9b17f50401) [ACS-10319] SR: Personal files: Focus returns to input field instead of remaining on Copy link button (#11272)
- [9fc7c22e18](https://github.com/Alfresco/alfresco-ng2-components/commit/9fc7c22e18) [ACS-10318] Fixed screen reader for date format in share dialog (#11274)
- [72555b7326](https://github.com/Alfresco/alfresco-ng2-components/commit/72555b7326) AAE-37097 Cleanup unused Docker layer (#11269)
- [5a8088a5ec](https://github.com/Alfresco/alfresco-ng2-components/commit/5a8088a5ec) [ACS-10321] SR: Personal Files:When navigating the breadcrumb with arrow keys, a button announced as &#39;dropdown&#39; (#11262)
- [dfc65ae45c](https://github.com/Alfresco/alfresco-ng2-components/commit/dfc65ae45c) AAE-38919 There is no deployment update without closing the panel (#11263)
- [cef71a2d71](https://github.com/Alfresco/alfresco-ng2-components/commit/cef71a2d71) [ACS-10275] a11y - Notification &amp; Filter indicators not announced by screen readers (#11267)
- [124fd66965](https://github.com/Alfresco/alfresco-ng2-components/commit/124fd66965) AAE-38328 Support screens on start process event (#11261)
- [0335a32a3a](https://github.com/Alfresco/alfresco-ng2-components/commit/0335a32a3a) [ACS-10334] Changed translations for save and cancel icons for image rotation and crop (#11258)
- [8ebb67d1cf](https://github.com/Alfresco/alfresco-ng2-components/commit/8ebb67d1cf) Adds lastModifiedAt to application instance (#11257)
- [84d32157ad](https://github.com/Alfresco/alfresco-ng2-components/commit/84d32157ad) [ACS-10165] filter out inaccessible locations from autocomplete (#11240)
- [816601fcec](https://github.com/Alfresco/alfresco-ng2-components/commit/816601fcec) AAE-38420 Allow any string in QueryParams include param (#11252)
- [cb5831450e](https://github.com/Alfresco/alfresco-ng2-components/commit/cb5831450e) [ACS-10327] Other A11y: Personal files: Duplicate Labels and Repeated Text in Personal Files Page (#11250)
- [b8d228d409](https://github.com/Alfresco/alfresco-ng2-components/commit/b8d228d409) [ACS-10328] SR: Personal files: Add permission title is not descriptive. (#11249)
- [970cd7d6e5](https://github.com/Alfresco/alfresco-ng2-components/commit/970cd7d6e5) [ACS-10238] sr personal files close button lacks appropriate label (#11248)
- [74437a01c0](https://github.com/Alfresco/alfresco-ng2-components/commit/74437a01c0) [ACS-10336] Tags in Tag Column Not Announced by Screen Readers (#11247)
- [56092ff2c1](https://github.com/Alfresco/alfresco-ng2-components/commit/56092ff2c1) [ACS-10189] Remove old api docs generators from ADF (#11224)
- [33ca9313be](https://github.com/Alfresco/alfresco-ng2-components/commit/33ca9313be) [ACS-10384] after recent changes search query builder can t process non latin characters (#11241)
- [8b553bb00f](https://github.com/Alfresco/alfresco-ng2-components/commit/8b553bb00f) [ACS-10145] Corrected font size and alignment for date field in metadata properties panel (#11228)
- [25ecfcf5e1](https://github.com/Alfresco/alfresco-ng2-components/commit/25ecfcf5e1) [ACS-10296] Upload new version button made accessible with keyboard (#11242)
- [3356dab434](https://github.com/Alfresco/alfresco-ng2-components/commit/3356dab434) [AAE-38312] fix start process error translation string (#11239)
- [dffa37f182](https://github.com/Alfresco/alfresco-ng2-components/commit/dffa37f182) [MNT-25336] ADW can&#39;t start a Microsoft 365 session when using Basic … (#11238)
- [622dcafbc4](https://github.com/Alfresco/alfresco-ng2-components/commit/622dcafbc4) AAE-38524 remove adf-core-theme (#11235)
- [29d341cc3b](https://github.com/Alfresco/alfresco-ng2-components/commit/29d341cc3b) [AAE-37563] Removed some CSS that was causing forms not to expand fully in the container (#11227)
- [b6ea1e056e](https://github.com/Alfresco/alfresco-ng2-components/commit/b6ea1e056e) AAE-38456 Reloading start process form (#11226)
- [40ff0d56af](https://github.com/Alfresco/alfresco-ng2-components/commit/40ff0d56af) [AAE-37563] Fix for extra padding on top of fullscreen toolbar (#11225)
- [6b9d3d2104](https://github.com/Alfresco/alfresco-ng2-components/commit/6b9d3d2104) AAE-38287 Cannot select dropdown options when selection type is multiple (#11220)
- [fb72ccffcc](https://github.com/Alfresco/alfresco-ng2-components/commit/fb72ccffcc) [ACS-9725] Fix preview for files attached to tasks with display value form field (#11219)
- [84fcc48c1a](https://github.com/Alfresco/alfresco-ng2-components/commit/84fcc48c1a) [ACS-10145] Fix truncated text in details info drawer (#11209)
- [731443ca1c](https://github.com/Alfresco/alfresco-ng2-components/commit/731443ca1c) Fixed js-api dep for superagent (#11212)
- [91d6b80965](https://github.com/Alfresco/alfresco-ng2-components/commit/91d6b80965) Revert &#34;AAE-30882 Replace superagent (#11134)&#34; (#11210)
- [ef29bafc75](https://github.com/Alfresco/alfresco-ng2-components/commit/ef29bafc75) [AAE-37563] Added grey background to fullscreen and standalone fullscreen forms (#11208)
- [591934db0e](https://github.com/Alfresco/alfresco-ng2-components/commit/591934db0e) [ACS-10117] Deprecate ADF Storybook and custom Docker builds (#11207)
- [4964ae94c5](https://github.com/Alfresco/alfresco-ng2-components/commit/4964ae94c5) AAE-0000 Trigger alpha build (#11206)
- [2b08e0c1d0](https://github.com/Alfresco/alfresco-ng2-components/commit/2b08e0c1d0) AAE-38287 Cannot select dropdown options when selection type is multiple (#11204)
- [1b212e8805](https://github.com/Alfresco/alfresco-ng2-components/commit/1b212e8805) AAE-38063 Default buttons are temporarily visible before the custom buttons in workspace (#11198)
- [d230176e7f](https://github.com/Alfresco/alfresco-ng2-components/commit/d230176e7f) AAE 38257 fixing js-api deps and bump some security versions (#11203)
- [d49575ba03](https://github.com/Alfresco/alfresco-ng2-components/commit/d49575ba03) [MNT-24388] fix location search facet (#11171)
- [1c8181fca8](https://github.com/Alfresco/alfresco-ng2-components/commit/1c8181fca8) [ACS-10100][Security] Remove npx usage from CI/CD and shell scripts to mitigate supply chain risks (#11201)
- [4f2b5329c6](https://github.com/Alfresco/alfresco-ng2-components/commit/4f2b5329c6) [AAE-30882] - removing ts-morph added back again on rebase (#11199)
- [a347b20f20](https://github.com/Alfresco/alfresco-ng2-components/commit/a347b20f20) AAE-30882 Replace superagent (#11134)
- [b400757ad1](https://github.com/Alfresco/alfresco-ng2-components/commit/b400757ad1) AAE-30878 Migrating from event-emitter to eventemitter3 (#11187)
- [10afe75e94](https://github.com/Alfresco/alfresco-ng2-components/commit/10afe75e94) [ACS-10100][Security] Remove npx usage from CI/CD and shell scripts to mitigate supply chain risks. [ACS-10117] Deprecate ADF Storybook and custom Docker builds (#11197)
- [196b60a7d9](https://github.com/Alfresco/alfresco-ng2-components/commit/196b60a7d9) AAE-22072 Update of a simpleapp (#11160)
- [82f96d9510](https://github.com/Alfresco/alfresco-ng2-components/commit/82f96d9510) AAE-36335 Handle custom redirects (#11167)
- [36b4c34008](https://github.com/Alfresco/alfresco-ng2-components/commit/36b4c34008) [ACS-10126] remove ts morph dependency from the adf core lib (#11190)
- [7206a6322d](https://github.com/Alfresco/alfresco-ng2-components/commit/7206a6322d) Revert &#34;AAE-37847 Create Git tag at the end of release branch process when on patch PR (#11162)&#34; (#11188)
- [fd29e953d6](https://github.com/Alfresco/alfresco-ng2-components/commit/fd29e953d6) Revert &#34;AAE-30878 Migrating from event-emitter to eventemitter3 which is … (#11116)&#34; (#11186)
- [c8c1ae7838](https://github.com/Alfresco/alfresco-ng2-components/commit/c8c1ae7838) [ACA] Label position problem in some perform actions like &#39;send-email&#39; (#11185)
- [3b5e98b182](https://github.com/Alfresco/alfresco-ng2-components/commit/3b5e98b182) [MNT-25285] Unable to change version preview from within the preview … (#11165)
- [09c35ea903](https://github.com/Alfresco/alfresco-ng2-components/commit/09c35ea903) AAE-37573 Add editorjs-html to process-services-cloud dependencies (#11183)
- [923feccdb9](https://github.com/Alfresco/alfresco-ng2-components/commit/923feccdb9) [MNT-25274] Fixed issue while uploading files with multi-valued properties (#11182)
- [dfa6db447f](https://github.com/Alfresco/alfresco-ng2-components/commit/dfa6db447f) AAE-37996 Updated Docker secrets (#11170)
- [e7bba32679](https://github.com/Alfresco/alfresco-ng2-components/commit/e7bba32679) AAE-37368 Applying new tasks and process count APIs (#11119)
- [ea81fcd6ad](https://github.com/Alfresco/alfresco-ng2-components/commit/ea81fcd6ad) AAE-37907 Move editorjs-html to dependencies (#11169)
- [f1fea0a70b](https://github.com/Alfresco/alfresco-ng2-components/commit/f1fea0a70b) AAE-37906 Extract rich text parsing service (#11164)
- [0564e67ba6](https://github.com/Alfresco/alfresco-ng2-components/commit/0564e67ba6) AAE-37923 - npm-check-bundle should take the released version to be sure to check the correct package on patch release (#11168)
- [88b857a8fe](https://github.com/Alfresco/alfresco-ng2-components/commit/88b857a8fe) bump @nx/workspace from 20.8.0 to 20.8.2 (#11163)
- [51c55674b4](https://github.com/Alfresco/alfresco-ng2-components/commit/51c55674b4) AAE-35340 Replace deprecated toPromise() usages with firstValueFrom / lastValueFrom (#11161)
- [49375181e4](https://github.com/Alfresco/alfresco-ng2-components/commit/49375181e4) AAE-30878 Migrating from event-emitter to eventemitter3 which is … (#11116)
- [aae4efdd92](https://github.com/Alfresco/alfresco-ng2-components/commit/aae4efdd92) AAE-30058 Integer form field should not allow more than 10 digits (#11146)
- [a4e62974ea](https://github.com/Alfresco/alfresco-ng2-components/commit/a4e62974ea) AAE-37847 Create Git tag at the end of release branch process when on patch PR (#11162)
- [81fed833f5](https://github.com/Alfresco/alfresco-ng2-components/commit/81fed833f5) AAE-35842 Admin - filter out form specific processes (in Process Instances tab) (#11131)
- [609144551c](https://github.com/Alfresco/alfresco-ng2-components/commit/609144551c) AAE-34139 Switch Yes and No button places and change focus from No to Yes. (#11148)
- [5bc4c02a94](https://github.com/Alfresco/alfresco-ng2-components/commit/5bc4c02a94) AAE-35385 Improve releasing-patches guide (#11149)
- [04d488b8ea](https://github.com/Alfresco/alfresco-ng2-components/commit/04d488b8ea) [ACS-9768] remove deprecated methods from auth related components (#11031)
- [dabab63f78](https://github.com/Alfresco/alfresco-ng2-components/commit/dabab63f78) Fix Post release version bump to align with ACA (#11153)
- [b277a29f32](https://github.com/Alfresco/alfresco-ng2-components/commit/b277a29f32) [ACS-4593] Fixed issue with too long notification text in snackbar (#11152)
- [bdeb8a8e51](https://github.com/Alfresco/alfresco-ng2-components/commit/bdeb8a8e51) [ACS-10101] Reduce cron job execution window (#11151)
- [f205cbc33c](https://github.com/Alfresco/alfresco-ng2-components/commit/f205cbc33c) Post release version bump (#11147)
-9
View File
@@ -1,9 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v8.2.1
---
# Changelog
- [97b563e967](https://github.com/Alfresco/alfresco-ng2-components/commit/97b563e967) AAE-39940 Localisation fixes (#11359)
- [ad41c0eae2](https://github.com/Alfresco/alfresco-ng2-components/commit/ad41c0eae2) fix create git tag (#11357)
- [5f76d8efad](https://github.com/Alfresco/alfresco-ng2-components/commit/5f76d8efad) AAE-40082 Use new action to check sha on github actions (#11356)
-164
View File
@@ -1,164 +0,0 @@
---
Title: Upgrading from ADF v7.0 to v8.0
---
# Upgrading from ADF v7.0 to v8.0
This guide provides instructions for upgrading your v7.0.0 ADF projects to v8.0.0.
## Before you begin
Always perform upgrades on a "clean" project state. Back up your changes or create a full project backup before proceeding.
```shell
# Recommended clean up
nx reset && rm -rf .angular .nx dist node_modules nxcache tmp
```
## Libraries
Update your dependencies to the versions introduced in the 8.0.0 release:
```json
{
"dependencies": {
"@alfresco/adf-core": "8.0.0",
"@alfresco/adf-content-services": "8.0.0",
"@alfresco/adf-process-services-cloud": "8.0.0",
"@alfresco/adf-insights": "8.0.0",
"@alfresco/adf-extensions": "8.0.0",
"@alfresco/adf-cli": "8.0.0",
"@alfresco/eslint-plugin-eslint-angular": "8.0.0",
"@alfresco/adf-testing": "8.0.0",
"@alfresco/js-api": "9.0.0"
}
}
```
Currently used Node version: 22.14.0.
### Breaking changes
Major version updates have been applied to the following core libraries:
- Angular: 19.2.6
- Angular Material: 19.2.9
- Typescript: 5.8.2
> Details on Angular update can be found in *Update Guide* from Angular documentation.
### Added libraries
```json
{
"dependencies": {
"node-fetch": "^3.3.2"
},
"devDependencies": {
"resize-observer-polyfill": "^1.5.1",
"webdriver-manager": "12.1.9"
}
}
```
### Deleted libraries
```json
{
"devDependencies": {
"mini-css-extract-plugin": "X.X.X",
"css-loader": "X.X.X"
}
}
```
Reinstall your dependencies and perform an initial build:
```shell
npm i
npm run build
```
Review your applications as some styles and classes of Angular Material components might have changed.
## Deprecations
The following table lists deprecated features and modules that will be removed in upcoming releases. Consider replacing them as soon as you update ADF to minimize future technical debt.
| Name | Notes |
|-------------------------------|-----------------------------------------------------------------------------------------------|
| Custom Theme | Refer to [Custom Theme documentation](../../lib/core/custom-theme/README.md) |
| ShellModule | Refer to [Shell documentation](../../lib/core/shell/README.md) |
| FormBaseModule | Use standalone components instead. |
| CoreTestingModule | Use standalone components instead. |
| ProcessServicesCloudModule | Refer to [ProcessServicesCloudModule replacement](#processservicescloudmodule-replacement) |
### ProcessServicesCloudModule replacement
To replace this module, import the standalone components directly or use the following provider API to replicate its behavior:
```typescript
providers: [
provideTranslations('adf-process-services-cloud', 'assets/adf-process-services-cloud'),
provideCloudPreferences(),
provideCloudFormRenderer(),
{ provide: TASK_LIST_CLOUD_TOKEN, useClass: TaskListCloudService }
]
```
## New features and APIs
You can start using the new features and APIs introduced in the 8.0.0 release.
### XMLHttpRequest.withCredentials
Support for disabling the `withCredentials` property in `app.config.json` for identity providers that disallow credentials has been introduced. You can configure it as shown below:
```json
{
"auth": {
"withCredentials": false
}
}
```
### provideShell
The new provideShell API for providing the main application layout can replace the `withRoutes(routes: Routes | AppShellRoutesConfig)` method, as shown below.
```typescript
import { provideShell } from '@alfresco/adf-core/shell';
provideShell(
{
routes: [],
appService: AppService,
authGuard: AuthGuard,
navBar: {
minWidth: 0,
maxWidth: 100
}
}
)
```
### provideI18N
The new `provideI18N` API for providing translation can replace `provideTranslations('app', 'assets')` method, as shown below.
```typescript
import { provideI18N } from '@alfresco/adf-core';
provideI18N(
{
defaultLanguage: "en", // optional, defaults to "en"
assets: [['en', '/assets/i18n/en.json'], ['fr', '/assets/i18n/fr.json']]
}
)
```
## Final steps
After updating your code, thoroughly test your application to ensure everything works as expected.
If you encounter any issues during the upgrade process, refer to the Angular update guide or seek assistance from the ADF community.
+22 -1
View File
@@ -33,7 +33,7 @@ OAuth2 is a protocol that allows the application to authorize operations without
silentLogin: Enables silent authentication.
secret: Deprecated and removed. The application's secret, used for secure authentication.
secret: The application's secret, used for secure authentication.
redirectUri: Where to redirect after a successful login.
@@ -86,6 +86,7 @@ OAuth2 is a protocol that allows the application to authorize operations without
"oauth2": {
"host": "https://your-idp.auth0.com",
"clientId": "",
"secret": "",
"scope": "openid profile email offline_access",
"implicitFlow": false,
"codeFlow": true,
@@ -111,6 +112,7 @@ OAuth2 is a protocol that allows the application to authorize operations without
"oauth2": {
"host": "https://cognito-idp.your-idp-url",
"clientId": "",
"secret": "",
"scope": "openid profile email",
"implicitFlow": false,
"codeFlow": true,
@@ -142,4 +144,23 @@ To address this, include the following script tag within the <head> section of y
</script>
```
# Docker Environment Variables
These settings can be customized in a Docker environment using the following environment variables:
APP_CONFIG_OAUTH2_HOST
APP_CONFIG_OAUTH2_CLIENTID
APP_CONFIG_OAUTH2_CLIENT_SECRET
APP_CONFIG_OAUTH2_IMPLICIT_FLOW
APP_CONFIG_OAUTH2_CODE_FLOW
APP_CONFIG_OAUTH2_AUDIENCE
APP_CONFIG_OAUTH2_SCOPE
APP_CONFIG_OAUTH2_LOGOUT_URL
APP_CONFIG_OAUTH2_LOGOUT_PARAMETERS
APP_CONFIG_OAUTH2_SILENT_LOGIN
APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI
APP_CONFIG_OAUTH2_REDIRECT_LOGIN
APP_CONFIG_OAUTH2_REDIRECT_LOGOUT
Adjust the above examples according to your specific environment and authentication provider settings. These configurations ensure that the application can securely authenticate users through OAuth2, aligning with the current best practices in web application security.
+8 -18
View File
@@ -19,24 +19,14 @@
4. Apply and commit your fix to **develop-patch-VERSION** branch.
5. Increment the version in the package.json with the following command where `-v` refers to the ADF version and `-vj` to the new js-api version.
The js-api must have a major version that is one higher than the other packages. For example, if adf-core is at version `4.11.1`, then js-api should be at version `5.11.1`
```bash
./scripts/update-version.sh -v X.X.X -vj X.X.X
# e.g. ./scripts/update-version.sh -v 4.1.11 -vj 5.1.11
```
6. The `"@alfresco/js-api"` dependency in the `lib/cli/package.json` has to remain unchanged
7. Run [release.sh](../../scripts/release.sh) script with proper patch version:
5. Run [release.sh](../../scripts/release.sh) script with proper patch version:
```bash
scripts/release.sh -v VERSION
# e.g. scripts/release.sh -v 4.11.1
```
8. Push your changes and run all tests:
6. Push your changes and run all tests:
```bash
git push -u origin develop-patch-VERSION
@@ -49,28 +39,28 @@ The js-api must have a major version that is one higher than the other packages.
git push
```
9. Verify if tests are green and if everything looks fine, you can proceed further.
7. Verify if tests are green and if everything looks fine, you can proceed further.
10. Create new branch from **master** and call it **master-patch-VERSION** (e.g. master-patch-4.11.1):
8. Create new branch from **master** and call it **master-patch-VERSION** (e.g. master-patch-4.11.1):
```bash
git checkout master
git checkout -b master-patch-VERSION
```
11. Merge **develop-patch-VERSION** into **master-patch-VERSION**:
9. Merge **develop-patch-VERSION** into **master-patch-VERSION**:
```bash
git checkout master-patch-VERSION
git merge develop-patch-VERSION
```
12. Push **master-patch-VERSION** branch:
10. Push **master-patch-VERSION** branch:
```bash
git push -u origin master-patch-VERSION
```
13. Verify if build is green and check if proper [tag](https://github.com/Alfresco/alfresco-ng2-components/tags) was created.
11. Verify if build is green and check if proper [tag](https://github.com/Alfresco/alfresco-ng2-components/tags) was created.
14. After all is done, you can **cherry-pick** your fix to develop.
12. After all is done, you can **cherry-pick** your fix to develop.
+69 -33
View File
@@ -32,30 +32,79 @@ an [online palette design tool](http://mcg.mbitson.com/).
See the [Material Design Style page](https://material.io/guidelines/style/color.html#) for
more information about color concepts.
## Using Angular Material theming
## Defining a custom theme
ADF is based on Angular Material library, which offers solutions for theming your application with either:
- Material Design 2 https://material.angular.dev/guide/material-2-theming
- Material Design 3 https://material.angular.dev/guide/theming
When you want more customization than a pre-built theme offers, you can create your own theme file. You only need to include the packages you actually use in your application.
If you already setup Angular Material theming in the application you use ADF in, there is no need for taking additional steps to theme ADF components - colors, typography and other parts of the theme will be taken from your setup.
```scss
/*
* Include only packages that you are using (and core by default)
*/
@use '@angular/material' as mat;
@import '~@angular/material/theming';
@import '~@alfresco/adf-core/theming';
## Customizing deprecated theme variables
@include mat.core();
Currently we have an amount of custom variables around components to mange libraries look and feel consistently and globally.
$primary: mat.define-palette($alfresco-accent-orange);
$accent: mat.define-palette($alfresco-accent-purple);
$warn: mat.define-palette($alfresco-warn);
$theme: mat.define-light-theme((
color: (
primary: $primary,
accent: $accent,
warn: $warn,
),
typography: $alfresco-typography
));
While they are getting deprecated to be replaced with [Angular Material system variables](https://material.angular.dev/guide/system-variables), for seamless integration with Angular Material's theming, you can provide values for those variables inside the `:root` element.
@include angular-material-theme($theme);
@include alfresco-material-theme($theme);
```
For example:
```css
:root {
--theme-primary-color: --mat-sys-primary;
--theme-accent-color: --mat-sys-tertiary;
### Multiple themes
You can create multiple themes for your application:
#### Example of defining multiple themes
```scss
@import '~@angular/material/theming';
@import '~@alfresco/adf-core/theming';
@include mat-core($alfresco-typography);
$primary: mat.define-palette($alfresco-accent-orange);
$accent: mat.define-palette($alfresco-accent-purple);
$warn: mat.define-palette($alfresco-warn);
$theme: mat.define-light-theme((
color: (
primary: $primary,
accent: $accent,
warn: $warn,
),
typography: $alfresco-typography
));
$dark-theme: mat.define-dark-theme((
color: (
primary: $primary,
accent: $accent,
warn: $warn,
),
typography: $alfresco-typography
));
@include alfresco-material-theme($theme);
...like above
.adf-dark-theme {
@include alfresco-material-theme($dark-theme);
...like above
}
```
**No new variables should be added to the project**
Any component with the `add-dark-theme` class will use the dark theme, while other components will fall back to the default.
[Reference list of overridable variables](https://github.com/Alfresco/alfresco-ng2-components/blob/29d341cc3b6a0842a776464027dcb1154875a8f0/lib/core/src/lib/styles/_index.scss#L25)
## Default reusable class
@@ -83,13 +132,13 @@ Avoid adding css variables with custom values, values should come from the theme
--new-variable: mat.get-color-from-palette($primary, 50), // good
```
When styling components use Angular Material system variables (colors, typography, elevation):
```scss
When styling components try to use theme related variables (colors, typography):
```
.my-class {
color:darkgrey; // bad
color:var(--mat-sys-primary); // good
color:var(--theme-primary-color); // good
font-size:23px; // bad
font:var(--mat-sys-body-small); // good
font-size:var(--theme-typography-body-1-font-size); // good
background:yellow; // bad
background:var(--my-component-nr-200-background-color); // bad
background:var(--theme-primary-color-50); // good
@@ -99,7 +148,7 @@ When styling components use Angular Material system variables (colors, typograph
When using library like Angular Material try to follow patterns from this library.
It helps to style components built with this library (just apply theme instead of custom styling).
For example when creating input:
```html
```
// bad
<div class="my-custom-input">
<div class="my-custom-label"></div>
@@ -117,16 +166,3 @@ For example when creating input:
<mat-error></mat-error>
</mat-form-field>
```
Avoid customizing Angular Material's internal selectors:
```scss
// bad - targeting internal Angular Material selectors
.mat-mdc-form-field .mdc-text-field__input {
color: red;
}
.mat-mdc-button .mdc-button__label {
font-weight: bold;
}
```
+2
View File
@@ -395,6 +395,8 @@ backend services have been tested with each released version of ADF.
<!--v260 start-->
- [Login dialog panel component](core/components/login-dialog-panel.component.md)
- [Login dialog component](core/components/login-dialog.component.md)
- [Login dialog service](core/services/login-dialog.service.md)
<!--v260 end-->
-5
View File
@@ -52,8 +52,3 @@ The pages linked below contain the audit for all third party dependencies of ADF
- [ADF 7.0.0-alpha.6](audit-info-7.0.0-alpha.6.md)
- [ADF 7.0.0-alpha.7](audit-info-7.0.0-alpha.7.md)
- [ADF 7.0.0](audit-info-7.0.0.md)
- [ADF 8.0.0](audit-info-8.0.0.md)
- [ADF 8.1.0](audit-info-8.1.0.md)
- [ADF 8.1.1](audit-info-8.1.1.md)
- [ADF 8.2.0](audit-info-8.2.0.md)
- [ADF 8.2.1](audit-info-8.2.1.md)
-23
View File
@@ -1,23 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 8.0.0
---
# Audit information for alfresco-ng2-components 8.0.0
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 0
- Moderate risk: 0
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
-23
View File
@@ -1,23 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 8.1.0
---
# Audit information for alfresco-ng2-components 8.1.0
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 0
- Moderate risk: 0
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
-23
View File
@@ -1,23 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 8.1.1
---
# Audit information for alfresco-ng2-components 8.1.1
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 0
- Moderate risk: 0
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
-27
View File
@@ -1,27 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 8.2.0
---
# Audit information for alfresco-ng2-components 8.2.0
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 3
- Moderate risk: 1
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
|high | @nx/webpack | &#34;&lt;=0.0.0-pr-32023-55176ba || 19.8.11 - 19.8.15 || 20.0.8 - 21.3.3 || 21.4.0-beta.0 - 21.4.0-canary.20250815-18ba315&#34; |
|high | glob | &#34;10.3.7 - 11.0.3&#34; |
|moderate | js-yaml | &#34;&lt;3.14.2 || &gt;=4.0.0 &lt;4.1.1&#34; |
|high | stylus | &#34;&gt;=0.64.0&#34; |
-24
View File
@@ -1,24 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 8.2.1
---
# Audit information for alfresco-ng2-components 8.2.1
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 1
- Moderate risk: 0
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
|high | glob | &#34;10.2.0 - 10.4.5&#34; |
Binary file not shown.
+3
View File
@@ -7,6 +7,7 @@ coverage
dist
content-services/**/*.js
!content-services/.storybook/*.js
!content-services/karma.conf.js
content-services/**/*.js.map
content-services/**/*.d.ts
@@ -17,6 +18,7 @@ process-services/**/*.js.map
process-services/**/*.d.ts
core/**/*.js
!core/.storybook/*.js
!core/karma.conf.js
core/**/*.js.map
core/**/*.d.ts
@@ -27,6 +29,7 @@ insights/**/*.js.map
insights/**/*.d.ts
process-services-cloud/**/*.js
!process-services-cloud/.storybook/*.js
!process-services-cloud/karma.conf.js
process-services-cloud/**/*.js.map
process-services-cloud/**/*.d.ts
+43 -45
View File
@@ -18,24 +18,12 @@ adf-cli <command> --help
## Developing
### Quick Setup
Link the project as a global tool (builds and links in one command):
Link the project as a global tool
```bash
npm run link
npm link
```
This will build the CLI and make the `adf-cli` command available globally on your system.
When you're done developing:
```bash
npm run unlink
```
### Development Mode
Build the tool in the **develop** mode (automatically watches for changes and rebuilds the commands):
```bash
@@ -50,32 +38,18 @@ DEVELOP=true adf-cli <command>
In develop mode, the CLI takes the prebuilt scripts from the dist folder.
### Manual Workflow
If you need more control, you can manually build and link:
```bash
# Build the CLI
npm run build
# Or build with full distribution (includes copying resources)
npm run dist
# Link from the dist directory
cd ../../dist/libs/cli && npm link
```
## Commands
| **Commands** | **Description** |
|------------------|----------------------------------------------------------------|
| changelog | Generate changelog report for two branches of git repository |
| check-cs-env | Check cs env is up |
| check-plugin-env | Check plugin status |
| init-aae-env | Init env |
| init-aps-env | Init aps |
| licenses | Create a 3th party license file |
| audit | Check the security risk dependency in your package.json |
| **Commands** |**Description** |
| --- | --- |
| changelog | Generate changelog report for two branches of git repository |
| check-cs-env | Check cs env is up |
| check-plugin-env | Check plugin status |
| docker | Build and publish a docker image or create additional tag link |
| init-aae-env | Init env |
| init-aps-env | Init aps |
| licenses | Create a 3th party license file |
| audit | Check the security risk dependency in your package.json |
## Examples
@@ -154,6 +128,29 @@ npm install
adf-cli audit
```
### Docker
The command provides 2 targets 'Publish' (default value) and 'Link'
Publish target
Move in the folder where you have your `Dockerfile` and run the command:
```bash
adf-cli docker --target "publish" --dockerRepo "${docker_repository}" --dockerTags "${TAGS}"
```
If you want to specify a different docker registry you can run
```bash
--loginCheck --loginUsername "username" --loginPassword "password" --loginRepo "quay.io"--dockerRepo "${docker_repository}" --dockerTags "${TAGS}"
```
Link target
In case you don't need to publish a new image but you would like to create a link to an already existing image (sourceTag) you can use the link target.
```bash
adf-cli docker --target "link" --dockerRepo "${docker_repository}" --dockerTags "${TAGS}" --sourceTag "develop"
```
### Initialize activiti cloud env
The following command is in charge of Initializing the activiti cloud env with the default apps:
@@ -170,13 +167,14 @@ adf-cli init-aae-env --host "gateway_env" --oauth "identity_env" --identityHost
If you want to add a new app the schema needs to be:
```text
TEST_APP: {
name: 'testapp',
file_location: 'https://github.com/Alfresco/alfresco-ng2-components/blob/branch/e2e/resources/testapp.zip?raw=true',
security:[
{'role': 'APS_ADMIN', groups': ['myadmingroup'], 'users': ['myadminuser']},
{'role': 'APS_USER', 'groups': ['myusergroup'], 'users': ['myuser']}]
},
TEST_APP: {
        name: 'testapp',
        file_location: 'https://github.com/Alfresco/alfresco-ng2-components/blob/branch/e2e/resources/testapp.zip?raw=true',
        security: [
            {'role': 'APS_ADMIN', 'groups': ['myadmingroup'], 'users': ['myadminuser']},
            {'role': 'APS_USER', 'groups': ['myusergroup'], 'users': ['myuser']
        }]
    },
```
### Checks plugin status
+3 -15
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env node
const { parseArgs } = require('node:util');
const minimist = require('minimist');
const { resolve, join } = require('node:path');
const { readFileSync, existsSync } = require('node:fs');
const { argv, exit, env, cwd } = require('node:process');
@@ -10,22 +10,10 @@ function printHelp() {
console.log(`${name} v${version}`);
}
const { values, positionals } = parseArgs({
args: argv.slice(2),
options: {
verbose: {
type: 'boolean'
}
},
allowPositionals: true,
strict: false
const args = minimist(argv.slice(2), {
boolean: ['verbose']
});
const args = {
...values,
_: positionals
};
if (args._.length === 0) {
printHelp();
exit(1);
+515 -485
View File
File diff suppressed because it is too large Load Diff
+8 -6
View File
@@ -1,7 +1,7 @@
{
"name": "@alfresco/adf-cli",
"description": "Alfresco ADF cli and utils",
"version": "8.3.0",
"version": "8.0.0",
"author": "Hyland Software, Inc. and its affiliates",
"bin": {
"adf-cli": "bin/adf-cli",
@@ -17,15 +17,16 @@
"scripts": {
"build": "tsc -p tsconfig.json",
"develop": "tsc -p tsconfig.json --watch",
"dist": "rm -rf ../../dist/libs/cli && npm run build && cp -R ./bin ../../dist/libs/cli && cp -R ./resources ../../dist/libs/cli && cp -R ./templates ../../dist/libs/cli && cp ./package.json ../../dist/libs/cli",
"link": "npm run dist && cd ../../dist/libs/cli && npm link",
"unlink": "cd ../../dist/libs/cli && npm unlink"
"dist": "rm -rf ../../dist/libs/cli && npm run build && cp -R ./bin ../../dist/libs/cli && cp -R ./resources ../../dist/libs/cli && cp -R ./templates ../../dist/libs/cli && cp ./package.json ../../dist/libs/cli"
},
"dependencies": {
"@alfresco/js-api": ">=9.2.0",
"ejs": "^3.1.10",
"@alfresco/js-api": ">=8.0.0-alpha.7",
"commander": "^6.2.1",
"ejs": "^3.1.9",
"license-checker": "^25.0.1",
"node-fetch": "^2.7.0",
"rxjs": "7.8.2",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
},
"keywords": [
@@ -35,6 +36,7 @@
"devDependencies": {
"@types/ejs": "^3.1.2",
"@types/node": "^20.1.7",
"@types/shelljs": "^0.8.12",
"typescript": "^4.9.5"
}
}
+15 -70
View File
@@ -17,12 +17,14 @@
* limitations under the License.
*/
import { spawnSync } from 'node:child_process';
import * as shell from 'shelljs';
import * as ejs from 'ejs';
import * as path from 'path';
import * as fs from 'fs';
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import { Command } from 'commander';
const program = new Command();
interface AuditCommandArgs {
package?: string;
@@ -37,39 +39,19 @@ interface AuditCommandArgs {
* @returns void
*/
export default function main(_args: string[], workingDir: string) {
program
.description('Generate an audit report')
.usage('audit [options]')
.option('-p, --package <path>', 'Path to package file (default: package.json in working directory)')
.option('-d, --outDir <dir>', 'Ouput directory (default: working directory)')
.parse(argv);
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: audit [options]
Generate an audit report
Options:
-p, --package <path> Path to package file (default: package.json in working directory)
-d, --outDir <dir> Output directory (default: working directory)
-h, --help Display help for command
`);
program.outputHelp();
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
package: {
type: 'string',
short: 'p'
},
outDir: {
type: 'string',
short: 'd'
}
},
allowPositionals: true
});
const options: AuditCommandArgs = {
package: values.package as string | undefined,
outDir: values.outDir as string | undefined
};
const options: AuditCommandArgs = program.opts();
let packagePath = path.resolve(workingDir, 'package.json');
@@ -93,45 +75,8 @@ Options:
console.log(`Running audit on ${packagePath}`);
const packageJson = JSON.parse(fs.readFileSync(packagePath).toString());
// Run in the directory containing the package.json
const packageDir = path.dirname(packagePath);
// Use spawnSync with array arguments for safer command execution (prevents shell injection)
// Cross-platform: npm is available on PATH on all platforms (Windows, macOS, Linux)
const result = spawnSync('npm', ['audit', '--json', '--prod'], {
cwd: packageDir,
encoding: 'utf-8',
// shell: false is the default and more secure (no shell interpretation)
shell: false,
// Set maxBuffer to handle large audit outputs
maxBuffer: 10 * 1024 * 1024 // 10MB
});
let jsonAudit;
// npm audit returns non-zero exit code when vulnerabilities are found
// We still want to parse the JSON output in this case
if (result.error) {
console.error('Failed to run npm audit:', result.error.message);
reject(result.error);
return;
}
const auditOutput = result.stdout;
if (!auditOutput) {
console.error('npm audit produced no output');
reject(new Error('npm audit produced no output'));
return;
}
try {
jsonAudit = JSON.parse(auditOutput);
} catch (parseError) {
console.error('Failed to parse npm audit output');
reject(parseError);
return;
}
const cmd = 'npm audit --json --prod';
const jsonAudit = JSON.parse(shell.exec(cmd, { silent: true }));
ejs.renderFile(
templatePath,
+31 -101
View File
@@ -20,13 +20,15 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import { spawnSync } from 'node:child_process';
import * as shell from 'shelljs';
import * as path from 'path';
import { Command } from 'commander';
import { logger } from './logger';
import * as fs from 'fs';
import * as ejs from 'ejs';
const program = new Command();
interface Commit {
hash: string;
author: string;
@@ -65,22 +67,10 @@ interface DiffOptions {
* @returns URL pointing to the git remote
*/
function getRemote(workingDir: string): string {
// Use spawnSync with array arguments for safer command execution (prevents shell injection)
const result = spawnSync('git', ['config', '--get', 'remote.origin.url'], {
cwd: workingDir,
encoding: 'utf-8',
shell: false
});
const command = 'git config --get remote.origin.url';
const remote = shell.exec(command, { cwd: workingDir, silent: true }).toString();
if (result.error) {
throw new Error(`Failed to get git remote: ${result.error.message}`);
}
if (result.status !== 0) {
throw new Error(`git config command failed with exit code ${result.status}: ${result.stderr}`);
}
return result.stdout.trim();
return remote.trim();
}
/**
@@ -99,14 +89,14 @@ function getCommits(options: DiffOptions): Array<Commit> {
authorFilter = `bot|Alfresco Build User`;
}
// Build git command arguments array for safe execution (prevents shell injection)
const args = [
'log',
`git`,
`log`,
options.range,
'--no-merges',
'--first-parent',
`--no-merges`,
`--first-parent`,
// this format is needed to allow parsing all characters in the commit message and safely convert to JSON
'--format={ ^@^hash^@^: ^@^%h^@^, ^@^author^@^: ^@^%an^@^, ^@^author_email^@^: ^@^%ae^@^, ^@^date^@^: ^@^%ad^@^, ^@^subject^@^: ^@^%s^@^ }'
`--format="{ ^@^hash^@^: ^@^%h^@^, ^@^author^@^: ^@^%an^@^, ^@^author_email^@^: ^@^%ae^@^, ^@^date^@^: ^@^%ad^@^, ^@^subject^@^: ^@^%s^@^ }"`
];
if (options.max !== undefined) {
@@ -117,23 +107,9 @@ function getCommits(options: DiffOptions): Array<Commit> {
args.push(`--skip=${options.skip}`);
}
// Use spawnSync with array arguments for safer command execution
const result = spawnSync('git', args, {
cwd: options.dir,
encoding: 'utf-8',
shell: false,
maxBuffer: 10 * 1024 * 1024 // 10MB to handle large git logs
});
const command = args.join(' ');
if (result.error) {
throw new Error(`Failed to get git commits: ${result.error.message}`);
}
if (result.status !== 0) {
throw new Error(`git log command failed with exit code ${result.status}: ${result.stderr}`);
}
let log = result.stdout;
let log = shell.exec(command, { cwd: options.dir, silent: true }).toString();
// https://stackoverflow.com/a/13928240/14644447
log = JSON.stringify(log.trim()).slice(1, -1).replace(/\^@\^/gm, '"');
@@ -175,74 +151,28 @@ function commitAuthorAllowed(commit: Commit, authorFilter: string): boolean {
* @returns void
*/
export default function main(_args: string[], workingDir: string) {
program
.description('Generate changelog report for two branches of git repository')
.version('0.0.1', '-v, --version')
.usage('changelog [options]')
.option('-r, --range <range>', 'Commit range, e.g. origin/master..develop', 'origin/master..develop')
.option('-d, --dir <dir>', 'Working directory (default: working directory)')
.option('-m, --max <number>', 'Limit the number of commits to output')
.option('-o, --output <dir>', 'Output directory, will use console output if not defined')
.option('--skip <number>', 'Skip number commits before starting to show the commit output')
.option('-f, --format <format>', 'Output format (md, html)', 'md')
.option('-e --exclude <string>', 'Exclude authors from the output, comma-delimited list')
.parse(argv);
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: changelog [options]
Generate changelog report for two branches of git repository
Options:
-v, --version Output the version number
-r, --range <range> Commit range, e.g. origin/master..develop (default: "origin/master..develop")
-d, --dir <dir> Working directory (default: working directory)
-m, --max <number> Limit the number of commits to output
-o, --output <dir> Output directory, will use console output if not defined
--skip <number> Skip number commits before starting to show the commit output
-f, --format <format> Output format (md, html) (default: "md")
-e, --exclude <string> Exclude authors from the output, comma-delimited list
-h, --help Display help for command
`);
program.outputHelp();
exit(0);
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.0.1');
exit(0);
}
const options = program.opts();
const { values } = parseArgs({
args: argv.slice(2),
options: {
range: {
type: 'string',
short: 'r',
default: 'origin/master..develop'
},
dir: {
type: 'string',
short: 'd'
},
max: {
type: 'string',
short: 'm'
},
output: {
type: 'string',
short: 'o'
},
skip: {
type: 'string'
},
format: {
type: 'string',
short: 'f',
default: 'md'
},
exclude: {
type: 'string',
short: 'e'
}
},
allowPositionals: true
});
const dir = path.resolve((values.dir as string) || workingDir);
const range = values.range as string;
const skip = values.skip ? parseInt(values.skip as string, 10) : undefined;
const max = values.max ? parseInt(values.max as string, 10) : undefined;
const format = values.format as string;
const output = values.output as string | undefined;
const exclude = values.exclude as string | undefined;
const dir = path.resolve(options.dir || workingDir);
const { range, skip, max, format, output, exclude } = options;
const remote = getRemote(dir);
+14 -57
View File
@@ -17,7 +17,7 @@
import { AlfrescoApi /*, NodesApi, UploadApi*/ } from '@alfresco/js-api';
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import { Command } from 'commander';
import { logger } from './logger';
interface CheckCsEnvArgs {
@@ -27,6 +27,8 @@ interface CheckCsEnvArgs {
time?: number;
retry?: number;
}
const program = new Command();
const MAX_RETRY = 3;
const TIMEOUT = 20000;
@@ -37,63 +39,18 @@ let alfrescoJsApi: AlfrescoApi;
* Check CS environment command
*/
export default async function main() {
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: check-cs-env [options]
Check Content service is up
Options:
-v, --version Output the version number
--host <host> Remote environment host adf.lab.com
-p, --password <pass> Password
-u, --username <user> Username
-t, --time <ms> Time in milliseconds
-r, --retry <num> Retry count
-h, --help Display help for command
`);
exit(0);
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.1.0');
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
host: {
type: 'string'
},
password: {
type: 'string',
short: 'p'
},
username: {
type: 'string',
short: 'u'
},
time: {
type: 'string',
short: 't'
},
retry: {
type: 'string',
short: 'r'
}
},
allowPositionals: true
});
const opts: CheckCsEnvArgs = {
host: values.host as string | undefined,
username: values.username as string | undefined,
password: values.password as string | undefined,
time: values.time ? parseInt(values.time as string, 10) : undefined,
retry: values.retry ? parseInt(values.retry as string, 10) : undefined
};
program
.version('0.1.0')
.description('Check Content service is up ')
.usage('check-cs-env [options]')
.option('--host [type]', 'Remote environment host adf.lab.com ')
.option('-p, --password [type]', 'password ')
.option('-u, --username [type]', 'username ')
.option('-t, --time [type]', 'time ')
.option('-r, --retry [type]', 'retry ')
.parse(argv);
const opts = program.opts();
await checkEnv(opts);
// TODO: https://alfresco.atlassian.net/browse/ACS-5873
// await checkDiskSpaceFullEnv();
+14 -69
View File
@@ -15,13 +15,14 @@
* limitations under the License.
*/
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import { argv } from 'node:process';
import { CheckEnv } from './plugins/check-env';
import { Command } from 'commander';
import { ProcessServiceCheckPlugin } from './plugins/process-service-check-plugin';
import { ProcessAutomationCheckPlugin } from './plugins/process-automation-check-plugin';
import { GovernanceCheckPlugin } from './plugins/governance-check-plugin';
const program = new Command();
let pluginEnv: CheckEnv;
interface CheckPluginArgs {
@@ -38,74 +39,18 @@ interface CheckPluginArgs {
* Check environment plugin
*/
export default async function main() {
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: check-plugin-env [options]
program
.version('0.1.0')
.option('--host [type]', 'Remote environment host')
.option('--pluginName [type]', 'pluginName')
.option('--clientId [type]', 'sso client', 'alfresco')
.option('--appName [type]', 'appName ', 'Deployed appName on activiti-cloud')
.option('-p, --password [type]', 'password ')
.option('-u, --username [type]', 'username ')
.option('--ui, --uiName [type]', 'uiName', 'Deployed app UI type on activiti-cloud')
.parse(argv);
Check plugin status
Options:
-v, --version Output the version number
--host <host> Remote environment host
--pluginName <name> Plugin name (processService, processAutomation, governance)
--clientId <id> SSO client (default: "alfresco")
--appName <name> Deployed appName on activiti-cloud
-p, --password <pass> Password
-u, --username <user> Username
--ui, --uiName <name> Deployed app UI type on activiti-cloud
-h, --help Display help for command
`);
exit(0);
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.1.0');
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
host: {
type: 'string'
},
pluginName: {
type: 'string'
},
clientId: {
type: 'string',
default: 'alfresco'
},
appName: {
type: 'string'
},
password: {
type: 'string',
short: 'p'
},
username: {
type: 'string',
short: 'u'
},
ui: {
type: 'string'
},
uiName: {
type: 'string'
}
},
allowPositionals: true
});
const options: CheckPluginArgs = {
host: values.host as string | undefined,
pluginName: values.pluginName as 'processService' | 'processAutomation' | 'governance' | undefined,
clientId: values.clientId as string | undefined,
appName: values.appName as string | undefined,
username: values.username as string | undefined,
password: values.password as string | undefined,
uiName: (values.ui || values.uiName) as string | undefined
};
const options = program.opts();
pluginEnv = new CheckEnv(options.host, options.username, options.password, options.clientId);
await pluginEnv.checkEnv();
+222
View File
@@ -0,0 +1,222 @@
#!/usr/bin/env node
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { argv, exit } from 'node:process';
import { exec } from './exec';
import { Command } from 'commander';
import { logger } from './logger';
import { resolve } from 'path';
const program = new Command();
// eslint-disable-next-line no-shadow
enum TARGETS {
publish = 'publish',
link = 'link'
}
const DOCKER_FILENAME = 'Dockerfile';
export interface PublishArgs {
tag?: string;
dryrun?: boolean;
verbose?: boolean;
loginCheck?: boolean;
loginUsername?: string;
loginPassword?: string;
loginRepo?: string;
dockerRepo?: string;
buildArgs?: string[];
dockerTags?: string;
pathProject: string;
fileName: string;
sourceTag?: string;
}
/**
* Perform a login
*
* @param args arguments
*/
function login(args: PublishArgs) {
logger.info(`Perform docker login...${args.loginRepo}`);
const loginDockerRes = exec('docker', ['login', `-u=${args.loginUsername}`, `-p=${args.loginPassword}`, `${args.loginRepo}`]);
logger.info(loginDockerRes);
}
/**
* Build Docker image
*
* @param args command arguments
* @param tag tag
*/
function buildImage(args: PublishArgs, tag: string) {
logger.info(`Perform docker build...${args.dockerRepo}:${tag}`);
const buildArgs = [];
if (typeof args.buildArgs === 'string') {
buildArgs.push(`--build-arg=${args.buildArgs}`);
} else {
args.buildArgs.forEach((envVar) => {
buildArgs.push(`--build-arg=${envVar}`);
});
}
if (args.verbose) {
logger.info(`Dry-run Perform docker build -t=${args.dockerRepo}:${tag} ${buildArgs} -f=${args.fileName} ${args.pathProject}`);
}
const response = exec('docker', ['build', `-t=${args.dockerRepo}:${tag}`, ...buildArgs, `-f=${args.fileName}`, args.pathProject], {});
logger.info(response);
}
/**
* Tag Docker image
*
* @param args command arguments
* @param imageTag image tag
* @param newTag new image tag
*/
function tagImage(args: PublishArgs, imageTag: string, newTag: string) {
logger.info(`Perform docker tag... ${args.dockerRepo}:${imageTag} on ${args.dockerRepo}:${newTag}`);
const response = exec('docker', ['tag', `${args.dockerRepo}:${imageTag}`, `${args.dockerRepo}:${newTag}`], {});
logger.info(response);
}
/**
* Pull Docker image
*
* @param dockerRepo repository
* @param sourceTag tag
*/
function pullImage(dockerRepo: string, sourceTag: string) {
logger.info(`Perform docker pull... ${dockerRepo}:${sourceTag}`);
const response = exec('docker', ['pull', `${dockerRepo}:${sourceTag}`], {});
logger.info(response);
}
/**
* Push Docker image
*
* @param args command arguments
* @param tag tag
*/
function pushImage(args: PublishArgs, tag: string) {
if (args.dryrun) {
logger.info(`Dry-run Perform docker push... ${args.dockerRepo}:${tag}`);
} else {
logger.info(`Perform docker push... ${args.dockerRepo}:${tag}`);
const response = exec('docker', ['push', `${args.dockerRepo}:${tag}`], {});
logger.info(response);
}
}
/**
* Clean Docker image
*
* @param args command arguments
* @param tag tag
*/
function cleanImage(args: PublishArgs, tag: string) {
logger.info(`Perform docker clean on tag:${tag}...`);
const response = exec('docker', ['rmi', `-f`, `${args.dockerRepo}:${tag}`], {});
logger.info(response);
}
/**
* Publish to Docker command
*
* @param args command arguments
*/
export default function main(args: PublishArgs) {
program
.version('0.1.0')
.description(
'Move in the folder where you have your Dockerfile and run the command:\n\n' +
'adf-cli docker-publish --dockerRepo "${docker_repository}" --dockerTags "${TAGS}"'
)
.option('--loginRepo [type]', 'URL registry')
.option('--loginPassword [type]', ' password')
.option('--loginUsername [type]', ' username')
.option('--dryrun [type]', 'dryrun')
.option('--verbose [type]', 'verbose')
.option('--loginCheck [type]', 'perform login')
.option('--pathProject [type]', 'the path build context')
.option('--sourceTag [type]', 'sourceTag')
.option('--buildArgs [type...]', 'buildArgs')
.option('--fileName [type...]', 'Docker file name', DOCKER_FILENAME)
.option('--target [type]', 'target: publish or link', TARGETS.publish)
.requiredOption('--dockerRepo [type]', 'docker repo')
.requiredOption('--dockerTags [type]', ' tags')
.parse(argv);
if (argv.includes('-h') || argv.includes('--help')) {
program.outputHelp();
return;
}
if (!Object.values(TARGETS).includes(program.opts().target)) {
logger.error(`error: invalid --target value. It can be ${Object.values(TARGETS)}`);
exit(1);
}
if (program.opts().target === TARGETS.publish && args.buildArgs === undefined) {
logger.error(`error: required option --buildArgs [type] in case the target is ${TARGETS.publish}`);
exit(1);
}
if (program.opts().target === TARGETS.link && args.sourceTag === undefined) {
logger.error(`error: required option --sourceTag [type] in case the target is ${TARGETS.link}`);
exit(1);
}
if (args.pathProject === undefined) {
args.pathProject = resolve('./');
}
if (args.fileName === undefined) {
args.fileName = DOCKER_FILENAME;
}
if (args.loginCheck === true) {
login(args);
}
let mainTag: string;
if (args.dockerTags !== '') {
args.dockerTags.split(',').forEach((tag, index) => {
if (tag) {
logger.info(`Analyzing tag:${tag} ... for target ${program.opts().target}`);
if (program.opts().target === TARGETS.publish) {
if (index === 0) {
logger.info(`Build only once`);
mainTag = tag;
buildImage(args, mainTag);
}
} else {
mainTag = args.sourceTag;
pullImage(args.dockerRepo, mainTag);
}
tagImage(args, mainTag, tag);
pushImage(args, tag);
}
});
cleanImage(args, mainTag);
} else {
logger.error(`dockerTags cannot be empty ...`);
}
}
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env node
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { spawnSync } from 'child_process';
import { logger } from './logger';
export interface ExecOptions {
cwd?: string;
}
/**
* Exec function
*
* @param command command to execute
* @param args command arguments
* @param opts optional settings
* @returns void function
*/
export function exec(command: string, args?: string[], opts?: ExecOptions) {
if (process.platform.startsWith('win')) {
args.unshift('/c', command);
command = 'cmd.exe';
}
const { status, error, stderr, stdout } = spawnSync(command, args, { ...opts });
if (status !== 0) {
if (args) {
logger.error(`Command failed: ${command} ${args.map((x) => JSON.stringify(x)).join(', ')}`);
} else {
logger.error(`Command failed ${command}`);
}
if (error) {
logger.error('Error: ' + (error ? error.message : 'undefined'));
} else {
logger.error(`STDERR:\n${stderr}`);
}
throw error;
} else {
return stdout.toString();
}
}
+2
View File
@@ -19,6 +19,8 @@ export * from './audit';
export * from './changelog';
export * from './check-cs-env';
export * from './check-plugin-env';
export * from './docker';
export * from './exec';
export * from './init-aae-env';
export * from './init-acs-env';
export * from './init-aps-env';
+28 -89
View File
@@ -17,12 +17,14 @@
* limitations under the License.
*/
import { parseArgs } from 'node:util';
import { Command } from 'commander';
import fetch from 'node-fetch';
import * as fs from 'fs';
import { logger } from './logger';
import { AlfrescoApi, AlfrescoApiConfig } from '@alfresco/js-api';
import { argv, exit } from 'node:process';
const program = new Command();
const ACTIVITI_CLOUD_APPS = require('./resources').ACTIVITI_CLOUD_APPS;
let alfrescoJsApiModeler: AlfrescoApi;
@@ -38,6 +40,7 @@ export interface ConfigArgs {
oauth: string;
tokenEndpoint: string;
clientId: string;
secret: string;
scope: string;
host: string;
tag: string;
@@ -449,6 +452,7 @@ function getAlfrescoJsApiInstance(configArgs: ConfigArgs): AlfrescoApi {
tokenUrl: `${ssoHost}/${configArgs.tokenEndpoint}`,
clientId: `${configArgs.clientId}`,
scope: `${configArgs.scope}`,
secret: `${configArgs.secret}`,
implicitFlow: false,
silentLogin: false,
redirectUri: '/'
@@ -726,98 +730,32 @@ async function sleep(time: number) {
* Init AAE environment command
*/
export default async function main() {
if (argv.includes('--help')) {
console.log(`
Usage: init-aae-env [options]
program
.version('0.1.0')
.description(
'The following command is in charge of Initializing the activiti cloud env with the default apps' +
'adf-cli init-aae-env --host "gateway_env" --modelerUsername "modelerusername" --modelerPassword "modelerpassword" --devopsUsername "devevopsusername" --devopsPassword "devopspassword"'
)
.option('-h, --host [type]', 'Host gateway')
.option('--oauth [type]', 'SSO host')
.option('--clientId [type]', 'sso client')
.option('--secret [type]', 'sso secret', '')
.option('--scope [type]', 'sso scope', 'openid')
.option('--tokenEndpoint [type]', 'discovery token Endpoint', 'auth/realms/${clientId}/protocol/openid-connect/token')
.option('--modelerUsername [type]', 'username of a user with role ACTIVIT_MODELER')
.option('--modelerPassword [type]', 'modeler password')
.option('--devopsUsername [type]', 'username of a user with role ACTIVIT_DEVOPS')
.option('--devopsPassword [type]', 'devops password')
.option('--tag [type]', 'tag name of the codebase')
.option('--envs [type...]', 'environment ids of the envs where to deploy the app')
.parse(argv);
Initialize the activiti cloud env with the default apps
Example:
adf-cli init-aae-env --host "gateway_env" --modelerUsername "modelerusername" \\
--modelerPassword "modelerpassword" --devopsUsername "devopsusername" \\
--devopsPassword "devopspassword"
Options:
-v, --version Output the version number
-h, --host <host> Host gateway
--oauth <host> SSO host
--clientId <id> SSO client
--secret <secret> SSO secret (default: "")
--scope <scope> SSO scope (default: "openid")
--tokenEndpoint <endpoint> Discovery token endpoint (default: "auth/realms/\${clientId}/protocol/openid-connect/token")
--modelerUsername <username> Username of a user with role ACTIVIT_MODELER
--modelerPassword <password> Modeler password
--devopsUsername <username> Username of a user with role ACTIVIT_DEVOPS
--devopsPassword <password> Devops password
--tag <tag> Tag name of the codebase
--envs <envs...> Environment ids of the envs where to deploy the app
--help Display help for command
`);
if (argv.includes('-h') || argv.includes('--help')) {
program.outputHelp();
return;
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.1.0');
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
host: {
type: 'string',
short: 'h'
},
oauth: {
type: 'string'
},
clientId: {
type: 'string'
},
scope: {
type: 'string',
default: 'openid'
},
tokenEndpoint: {
type: 'string',
default: 'auth/realms/${clientId}/protocol/openid-connect/token'
},
modelerUsername: {
type: 'string'
},
modelerPassword: {
type: 'string'
},
devopsUsername: {
type: 'string'
},
devopsPassword: {
type: 'string'
},
tag: {
type: 'string'
},
envs: {
type: 'string',
multiple: true
}
},
allowPositionals: true
});
const options = initializeDefaultToken({
host: values.host as string,
oauth: values.oauth as string,
clientId: values.clientId as string,
scope: values.scope as string,
tokenEndpoint: values.tokenEndpoint as string,
modelerUsername: values.modelerUsername as string,
modelerPassword: values.modelerPassword as string,
devopsUsername: values.devopsUsername as string,
devopsPassword: values.devopsPassword as string,
tag: values.tag as string,
envs: (values.envs as string[]) || []
} as ConfigArgs);
const options = initializeDefaultToken(program.opts() as ConfigArgs);
args = {
host: options.host,
@@ -829,6 +767,7 @@ Options:
oauth: options.oauth,
tokenEndpoint: options.tokenEndpoint,
scope: options.scope,
secret: options.secret,
tag: options.tag,
envs: options.envs
};
+11 -51
View File
@@ -17,7 +17,7 @@
import { AlfrescoApi, SharedlinksApi, FavoritesApi, NodesApi, UploadApi, NodeEntry } from '@alfresco/js-api';
import { exit, argv } from 'node:process';
import { parseArgs } from 'node:util';
import { Command } from 'commander';
import { createReadStream } from 'fs';
import * as path from 'path';
import { logger } from './logger';
@@ -28,6 +28,8 @@ interface InitAcsEnvArgs {
username?: string;
password?: string;
}
const program = new Command();
const MAX_RETRY = 10;
let counter = 0;
const TIMEOUT = 6000;
@@ -39,57 +41,15 @@ let alfrescoJsApi: AlfrescoApi;
* Init ACS environment command
*/
export default async function main() {
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: init-acs-env [options]
Initialize ACS environment
Options:
-v, --version Output the version number
--host <host> Remote environment host
--clientId <id> SSO client (default: "alfresco")
-p, --password <pass> Password
-u, --username <user> Username
-h, --help Display help for command
`);
exit(0);
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.1.0');
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
host: {
type: 'string'
},
clientId: {
type: 'string',
default: 'alfresco'
},
password: {
type: 'string',
short: 'p'
},
username: {
type: 'string',
short: 'u'
}
},
allowPositionals: true
});
const opts: InitAcsEnvArgs = {
host: values.host as string | undefined,
clientId: values.clientId as string | undefined,
username: values.username as string | undefined,
password: values.password as string | undefined
};
program
.version('0.1.0')
.option('--host [type]', 'Remote environment host')
.option('--clientId [type]', 'sso client', 'alfresco')
.option('-p, --password [type]', 'password ')
.option('-u, --username [type]', 'username ')
.parse(argv);
const opts = program.opts();
await checkEnv(opts);
logger.info(`***** Step initialize ACS *****`);
+16 -59
View File
@@ -26,11 +26,12 @@ import {
AppDefinitionUpdateResultRepresentation
} from '@alfresco/js-api';
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import { spawnSync } from 'node:child_process';
import { createReadStream } from 'node:fs';
import { Command } from 'commander';
import * as path from 'path';
import { logger } from './logger';
import { throwError } from 'rxjs';
interface InitApsEnvArgs {
host?: string;
@@ -39,6 +40,8 @@ interface InitApsEnvArgs {
password?: string;
license?: string;
}
const program = new Command();
const MAX_RETRY = 10;
let counter = 0;
const TIMEOUT = 6000;
@@ -53,62 +56,16 @@ let alfrescoJsApi: AlfrescoApi;
* Init APS command
*/
export default async function main() {
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: init-aps-env [options]
Initialize APS environment
Options:
-v, --version Output the version number
--host <host> Remote environment host
--clientId <id> SSO client (default: "alfresco")
-p, --password <pass> Password
-u, --username <user> Username
--license <path> APS license S3 path
-h, --help Display help for command
`);
exit(0);
}
if (argv.includes('-v') || argv.includes('--version')) {
console.log('0.1.0');
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
host: {
type: 'string'
},
clientId: {
type: 'string',
default: 'alfresco'
},
password: {
type: 'string',
short: 'p'
},
username: {
type: 'string',
short: 'u'
},
license: {
type: 'string'
}
},
allowPositionals: true
});
const opts: InitApsEnvArgs = {
host: values.host as string | undefined,
clientId: values.clientId as string | undefined,
username: values.username as string | undefined,
password: values.password as string | undefined,
license: values.license as string | undefined
};
program
.version('0.1.0')
.option('--host [type]', 'Remote environment host')
.option('--clientId [type]', 'sso client', 'alfresco')
.option('-p, --password [type]', 'password ')
.option('-u, --username [type]', 'username ')
.option('--license [type]', 'APS license S3 path ')
.parse(argv);
const opts = program.opts();
await checkEnv(opts);
logger.info(`***** Step 1 - Check License *****`);
@@ -250,9 +207,9 @@ async function hasDefaultTenant(tenantId: number, tenantName: string): Promise<b
logger.info(`Aps: has default tenantId: ${tenantId} and name ${tenantName}`);
return true;
} else {
const errorMessage = `Wrong configuration. Another tenant has been created with id ${tenant.id} and name ${tenant.name}`;
logger.error(errorMessage);
throw new Error(errorMessage);
logger.info(`Wrong configuration. Another tenant has been created with id ${tenant.id} and name ${tenant.name}`);
throwError(`Wrong configuration. Another tenant has been created with id ${tenant.id} and name ${tenant.name}`);
return false;
}
}
+12 -31
View File
@@ -18,12 +18,14 @@
*/
import { argv, exit } from 'node:process';
import { parseArgs } from 'node:util';
import * as path from 'path';
import * as fs from 'fs';
import * as checker from 'license-checker';
import * as licenseList from 'spdx-license-list';
import * as ejs from 'ejs';
import { Command } from 'commander';
const program = new Command();
interface LicensesCommandArgs {
package?: string;
@@ -101,40 +103,19 @@ function getPackageFile(packagePath: string): PackageInfo {
* @returns void function
*/
export default function main(_args: string[], workingDir: string) {
program
.description('Generate a licences report')
.usage('licenses [options]')
.option('-p, --package <path>', 'Path to package file (default: package.json in working directory)')
.option('-d, --outDir <dir>', 'Ouput directory (default: working directory)')
.parse(argv);
if (argv.includes('-h') || argv.includes('--help')) {
console.log(`
Usage: licenses [options]
Generate a licenses report
Options:
-p, --package <path> Path to package file (default: package.json in working directory)
-d, --outDir <dir> Output directory (default: working directory)
-h, --help Display help for command
`);
program.outputHelp();
exit(0);
}
const { values } = parseArgs({
args: argv.slice(2),
options: {
package: {
type: 'string',
short: 'p'
},
outDir: {
type: 'string',
short: 'd'
}
},
allowPositionals: true
});
const options: LicensesCommandArgs = {
package: values.package as string | undefined,
outDir: values.outDir as string | undefined
};
const options: LicensesCommandArgs = program.opts();
let packagePath = path.resolve(workingDir, 'package.json');
if (options.package) {
+1
View File
@@ -1 +1,2 @@
.storybook
coverage

Some files were not shown because too many files have changed in this diff Show More