diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..c9f1a454 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,231 @@ +name: Build, Publish + +on: + pull_request: + types: [opened, synchronize, reopened] + +env: + NODE_VERSION: 20.x + +jobs: + ##################################################################### + ## Setup + ##################################################################### + setup: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + steps: + - run: echo "Triggered by ${{ github.event_name }} event." + + - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + uses: actions/checkout@v3 + + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Cache node modules + uses: actions/cache@v3 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Installing dependencies + if: steps.cache.outputs.cache-hit != 'true' + uses: borales/actions-yarn@v4 + with: + cmd: install --frozen-lockfile + + # - name: Lint + # uses: borales/actions-yarn@v4 + # with: + # cmd: lint + + ##################################################################### + ## Build + ##################################################################### + build: + needs: setup + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x, 20.x] + steps: + - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + uses: actions/checkout@v3 + + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Restore node modules from cache + uses: actions/cache@v3 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Build + uses: borales/actions-yarn@v4 + with: + cmd: build:prod + + - name: Show build directory contents + run: | + ls -R ./dist/angular-formio + + - name: Cache dist directory + uses: actions/cache@v3 + with: + path: dist + key: ${{ runner.os }}-dist-${{ hashFiles('dist.tgz') }} + restore-keys: | + ${{ runner.os }}-dist- + + ##################################################################### + ## Test (Trys to launch a chrome browser, will need additional work) + ##################################################################### + # test-current: + # needs: setup + # runs-on: ubuntu-latest + # steps: + # - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + # uses: actions/checkout@v3 + + # - name: Restore node modules from cache + # uses: actions/cache@v3 + # with: + # path: node_modules + # key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} + # restore-keys: | + # ${{ runner.os }}-node- + + # - name: Test + # uses: borales/actions-yarn@v4 + # with: + # cmd: test + + # test-target: + # needs: setup + # runs-on: ubuntu-latest + # steps: + # - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + # uses: actions/checkout@v3 + # with: + # fetch-depth: 0 + + # - name: Merge target branch into current branch + # run: | + # git config --global user.email "pkgbot@form.io" + # git config --global user.name "pkgbot" + # git fetch origin ${{ github.event.pull_request.base.ref }}:${{ github.event.pull_request.base.ref }} + # git merge ${{ github.event.pull_request.base.ref }} --no-commit --no-ff + # if ! git merge --no-commit --no-ff ${{ github.event.pull_request.base.ref }}; then + # echo "Merge conflicts detected." + # git merge --abort + # exit 1 + # else + # echo "Merge successful." + # fi + + # - name: Set up Node.js ${{ env.NODE_VERSION }} + # uses: actions/setup-node@v3 + # with: + # node-version: ${{ env.NODE_VERSION }} + # cache: 'npm' + + # - name: Restore node modules from cache + # uses: actions/cache@v3 + # with: + # path: node_modules + # key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} + # restore-keys: | + # ${{ runner.os }}-node- + + # - name: Test + # uses: borales/actions-yarn@v4 + # with: + # cmd: test + + ##################################################################### + ## Publish + ##################################################################### + publish: + needs: [setup, build] + if: ${{ github.event_name == 'pull_request' && (github.event.action == 'opened' || github.event.action == 'synchronize') }} + runs-on: ubuntu-latest + steps: + - name: Check out repository code ${{ github.repository }} on ${{ github.ref }} + uses: actions/checkout@v3 + + - name: Set up Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'npm' + registry-url: 'https://registry.npmjs.org/' + + # Restore Build cache + - name: Restore dist cache + uses: actions/cache@v3 + with: + path: dist + key: ${{ runner.os }}-dist-${{ hashFiles('dist.tgz') }} + restore-keys: | + ${{ runner.os }}-dist- + + # - name: Switch to dist directory + # run: | + # cd ./dist/angular-formio + # ls -R . + + - name: Prepare version for publish + id: prep + working-directory: ./dist/angular-formio + run: | + # Extract the pull request number and the short SHA of the commit + PR_NUMBER=$(echo ${{ github.event.number }}) + COMMIT_SHORT_SHA=$(echo "${{ github.event.pull_request.head.sha }}" | cut -c1-7) + + # Extract the current version from package.json + CURRENT_VERSION=$(node -p "require('./package.json').version") + + # Get base SemVer to us for new dev version + BASE_VERSION=$(echo "$CURRENT_VERSION" | cut -d'-' -f1) + + # Construct the new version string + NEW_VERSION="${BASE_VERSION}-dev.${PR_NUMBER}.${COMMIT_SHORT_SHA}" + + # Output the new version for use in subsequent GitHub Actions steps + echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV + + - name: Echo version to Publish + run: | + echo "Version to publish: $NEW_VERSION" + + - name: Configure Git user + working-directory: ./dist/angular-formio + run: | + git config --global user.email "pkgbot@form.io" + git config --global user.name "pkgbot" + + - name: Add npm token to .npmrc + working-directory: ./dist/angular-formio + run: | + echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + + - name: Publish to npm + working-directory: ./dist/angular-formio + run: | + npm version $NEW_VERSION + yarn publish --tag=dev + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1f1d592b..cda97f59 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,5 @@ testem.log # System Files .DS_Store Thumbs.db + +.npmrc \ No newline at end of file diff --git a/.npmignore b/.npmignore index fdb7f4f4..b41ea20f 100644 --- a/.npmignore +++ b/.npmignore @@ -32,3 +32,5 @@ Desktop.ini # Library files src/* build/* + +.npmrc \ No newline at end of file diff --git a/projects/angular-formio/src/components/formioreport/formioreport.component.ts b/projects/angular-formio/src/components/formioreport/formioreport.component.ts index 2c8de4c5..99664460 100644 --- a/projects/angular-formio/src/components/formioreport/formioreport.component.ts +++ b/projects/angular-formio/src/components/formioreport/formioreport.component.ts @@ -17,8 +17,6 @@ export class FormioReportComponent extends FormioComponent implements OnInit, On @Output() fetchDataError = new EventEmitter(); @ViewChild('report', { static: true }) declare formioElement?: ElementRef; - public isLoading: boolean; - setFormFromSrc() { this.service.loadSubmission({ params: { live: 1 } }).subscribe( (report: FormioReport) => {