diff --git a/.agignore b/.agignore new file mode 100644 index 00000000000..30b81dbfd01 --- /dev/null +++ b/.agignore @@ -0,0 +1 @@ +release \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index f1cc3ad329c..0eef3827dd9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,15 +1,18 @@ -# http://editorconfig.org +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org root = true [*] +end_of_line = lf charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +# Tabs in JS unless otherwise specified +[**.js] indent_style = space indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true [*.md] -insert_final_newline = false trim_trailing_whitespace = false diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000000..ac980e3a038 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,44 @@ +{ + "env": { + "browser": true + }, + "globals": { + "ionic": true, + "IonicModule": true, + "angular": true, + "jqLite": true, + "forEach": true, + "isDefined": true, + "isNumber": true, + "isString": true, + "noop": true, + "extend": true, + "deprecated": true, + "cordova": true, + "DocumentTouch": true, + "describe": true, + "ddescribe": true, + "it": true, + "iit": true, + "inject": true, + "beforeEach": true, + "afterEach": true, + "expect": true + }, + "rules": { + "quotes": false, + "no-underscore-dangle": false, + "no-unused-expressions": false, + "curly": [2, "multi-line"], + "strict": false, + "no-use-before-define": false, + "eqeqeq": false, + "new-cap": [2, {"capIsNew": false}], + "dot-notation": [2, {"allowKeywords": false}], + "no-console": false, + "no-return-assign": false, + "no-shadow": false, + "comma-dangle": false, + "camelcase": [2, {"properties": "never"}] + } +} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 6313b56c578..00000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index b1f04ad75d3..00000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,14 +0,0 @@ -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. - -# More details are here: https://help.github.com/articles/about-codeowners/ - -# The '*' pattern is global owners. - -# Order is important. The last matching pattern has the most precedence. -# The folders are ordered as follows: - -# In each subsection folders are ordered first by depth, then alphabetically. -# This should make it easy to add new rules without breaking existing ones. - -* @ionic-team/framework diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 2fa1c3e3549..00000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - -**Ionic version:** - - -[x] **4.x** -[ ] **5.x** - -**I'm submitting a ...** - -[ ] bug report -[ ] feature request - - - -**Current behavior:** - - -**Expected behavior:** - - -**Steps to reproduce:** - - -**Related code:** - - - -``` -insert short code snippets here -``` - -**Other information:** - - -**Ionic info:** - - -``` -insert the output from ionic info here -``` diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index e44acd31374..00000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: 🐛 Bug Report -description: Create a report to help us improve Ionic Framework -title: 'bug: ' - -body: - - type: checkboxes - id: prerequisites - attributes: - label: Prerequisites - description: Please ensure you have completed all of the following. - options: - - label: I have read the [Contributing Guidelines](https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#creating-an-issue). - required: true - - label: I agree to follow the [Code of Conduct](https://ionicframework.com/code-of-conduct). - required: true - - label: I have searched for [existing issues](https://github.com/ionic-team/ionic-framework/issues) that already report this problem, without success. - required: true - - - type: dropdown - id: affected-versions - attributes: - label: Ionic Framework Version - description: Which version(s) of Ionic Framework does this issue impact? [Ionic Framework 1.x to 6.x are no longer supported](https://ionicframework.com/docs/reference/support#framework-maintenance-and-support-status). For extended support, considering visiting [Ionic's Enterprise offering](https://ionic.io/enterprise). - options: - - v7.x - - v8.x - - Nightly - multiple: true - validations: - required: true - - - type: textarea - id: current-behavior - attributes: - label: Current Behavior - description: A clear description of what the bug is and how it manifests. - validations: - required: true - - - type: textarea - id: expected-behavior - attributes: - label: Expected Behavior - description: A clear description of what you expected to happen. - validations: - required: true - - - type: textarea - id: steps-to-reproduce - attributes: - label: Steps to Reproduce - description: Explain the steps required to reproduce this issue. - placeholder: | - 1. Go to '...' - 2. Click on '...' - 3. Observe: '...' - validations: - required: true - - - type: input - id: reproduction-url - attributes: - label: Code Reproduction URL - description: | - Reproduce this issue in a blank [Ionic Framework starter application](https://ionicframework.com/start#basics) or a Stackblitz example. - - You can use the Stackblitz button available on any of the [component playgrounds](https://ionicframework.com/docs/components) to open an editable example. Remember to save your changes to obtain a link to copy. - - Reproductions cases must be minimal and focused around the specific problem you are experiencing. This is the best way to ensure this issue is triaged quickly. Issues without a code reproduction may be closed if the Ionic Team cannot reproduce the issue you are reporting. - placeholder: https://github.com/... - validations: - required: true - - - type: textarea - id: ionic-info - attributes: - label: Ionic Info - description: Please run `ionic info` from within your Ionic Framework project directory and paste the output below. - validations: - required: true - - - type: textarea - id: additional-information - attributes: - label: Additional Information - description: List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 25a8dbb606f..00000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -contact_links: - - name: 📚 Documentation - url: https://github.com/ionic-team/ionic-docs/issues/new/choose - about: This issue tracker is not for documentation issues. Please file documentation issues on the Ionic Docs repo. - - name: 💻 CLI - url: https://github.com/ionic-team/ionic-cli/issues/new/choose - about: This issue tracker is not for CLI issues. Please file CLI issues on the Ionic CLI repo. - - name: 🤔 Support Question - url: https://forum.ionicframework.com/ - about: This issue tracker is not for support questions. Please post your question on the Ionic Forums. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 788d41e3a2e..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: 💡 Feature Request -description: Suggest an idea for Ionic Framework -title: 'feat: ' -body: - - - type: checkboxes - id: prerequisites - attributes: - label: Prerequisites - description: Please ensure you have completed all of the following. - options: - - label: I have read the [Contributing Guidelines](https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#creating-an-issue). - required: true - - label: I agree to follow the [Code of Conduct](https://ionicframework.com/code-of-conduct). - required: true - - label: I have searched for [existing issues](https://github.com/ionic-team/ionic-framework/issues) that already include this feature request, without success. - required: true - - - type: textarea - id: description - attributes: - label: Describe the Feature Request - description: A clear and concise description of what the feature does. - validations: - required: true - - - type: textarea - id: use-case - attributes: - label: Describe the Use Case - description: A clear and concise use case for what problem this feature would solve. - validations: - required: true - - - type: textarea - id: proposed-solution - attributes: - label: Describe Preferred Solution - description: A clear and concise description of what you how you want this feature to be added to Ionic Framework. - - - type: textarea - id: alternatives-considered - attributes: - label: Describe Alternatives - description: A clear and concise description of any alternative solutions or features you have considered. - - - type: textarea - id: related-code - attributes: - label: Related Code - description: If you are able to illustrate the feature request with an example, please provide a sample Ionic Framework application. Try out our [Getting Started Wizard](https://ionicframework.com/start#basics) to quickly spin up an Ionic Framework starter app. - - - type: textarea - id: additional-information - attributes: - label: Additional Information - description: List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to implement, Stack Overflow links, forum links, etc. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 29910b7b2b2..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,34 +0,0 @@ -Issue number: resolves # - ---------- - - - - - -## What is the current behavior? - - -## What is the new behavior? - - -- -- -- - -## Does this introduce a breaking change? - -- [ ] Yes -- [ ] No - - - - -## Other information - - diff --git a/.github/assets/logo.png b/.github/assets/logo.png deleted file mode 100644 index 42c5f25bfae..00000000000 Binary files a/.github/assets/logo.png and /dev/null differ diff --git a/.github/ionic-issue-bot.yml b/.github/ionic-issue-bot.yml deleted file mode 100644 index 8db735ce2d8..00000000000 --- a/.github/ionic-issue-bot.yml +++ /dev/null @@ -1,210 +0,0 @@ -triage: - label: triage - removeLabelWhenProjectAssigned: true - dryRun: false - -comment: - labels: - - label: "help wanted" - message: > - This issue has been labeled as `help wanted`. This label is added to issues - that we believe would be good for contributors. - - - If you'd like to work on this issue, please comment here letting us know that - you would like to submit a pull request for it. This helps us to keep track of - the pull request and make sure there isn't duplicated effort. - - - For a guide on how to create a pull request and test this project locally to see - your changes, see our [contributing documentation](https://ionicframework.com/docs/building/contributing). - - - Thank you! - - label: "ionitron: needs reproduction" - message: > - Thanks for the issue! This issue has been labeled as `needs reproduction`. This label - is added to issues that need a code reproduction. - - - Please reproduce this issue in an Ionic starter application and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed. - - - If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue. - - - For a guide on how to create a good reproduction, see our [Contributing Guide](https://ionicframework.com/docs/contributing/how-to-contribute#creating-a-good-code-reproduction). - - label: "community feedback wanted" - message: > - This issue has been labeled as `community feedback wanted`. This label is added to issues that we would like to hear from the community on before moving forward with any final decision on the feature request. - - - If the requested feature is something you would find useful for your applications, please react to the original post with 👍 (`+1`). If you would like to provide an additional use case for the feature, please post a comment. - - - The team will review this feedback and make a final decision. Any decision will be posted on this thread, but please note that we may ultimately decide not to pursue this feature. - - - Thank you! - dryRun: false - -closeAndLock: - labels: - - label: "ionitron: support" - message: > - Thanks for the issue! This issue appears to be a support request. We use this issue tracker exclusively for - bug reports and feature requests. Please use our [forum](https://forum.ionicframework.com) for questions about the framework. - - - Thank you for using Ionic! - - label: "ionitron: appflow" - message: > - Thanks for the issue! This issue appears to be related to Ionic Appflow. We use this issue tracker exclusively for - bug reports and feature requests. Please use the [Ionic Appflow Support Forum](https://ionic.zendesk.com/hc/en-us/requests/new) - to report this issue. - - - Thank you for using Ionic! - - label: "ionitron: missing template" - message: > - Thanks for the issue! It appears that you have not filled out the provided issue template. We use this issue - template in order to gather more information and further assist you. Please create a new issue and ensure the - template is fully filled out. - - - Thank you for using Ionic! - close: true - lock: true - dryRun: false - -lockClosed: - days: 30 - maxIssuesPerRun: 100 - message: > - Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. - If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out. - dryRun: false - -stale: - days: 365 - maxIssuesPerRun: 100 - exemptLabels: - - "good first issue" - - "triage" - - "type: bug" - - "type: feature request" - exemptAssigned: true - exemptProjects: true - exemptMilestones: true - label: "ionitron: stale issue" - message: > - Thanks for the issue! This issue is being closed due to inactivity. If this is still - an issue with the latest version of Ionic, please create a new issue and ensure the - template is fully filled out. - - - Thank you for using Ionic! - close: true - lock: true - dryRun: false - -noReply: - days: 14 - maxIssuesPerRun: 100 - label: "needs: reply" - responseLabel: triage - exemptProjects: true - exemptMilestones: true - message: > - Thanks for the issue! This issue is being closed due to the lack of a reply. If this is still - an issue with the latest version of Ionic, please create a new issue and ensure the - template is fully filled out. - - - Thank you for using Ionic! - close: true - lock: true - dryRun: false - -noReproduction: - days: 14 - maxIssuesPerRun: 100 - label: "ionitron: needs reproduction" - responseLabel: triage - exemptProjects: true - exemptMilestones: true - message: > - Thanks for the issue! This issue is being closed due to the lack of a code reproduction. If this is still - an issue with the latest version of Ionic, please create a new issue and ensure the - template is fully filled out. - - - Thank you for using Ionic! - close: true - lock: true - dryRun: false - -wrongRepo: - repos: - - label: "ionitron: capacitor" - repo: capacitor - message: > - Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests - associated with the Ionic Framework. It appears that this issue is associated with Capacitor. - I am moving this issue to the Capacitor repository. Please track this issue over there. - - - Thank you for using Ionic! - - label: "ionitron: v3" - repo: ionic-v3 - message: > - Thanks for the issue! We have moved the source code and issues for Ionic 3 into a separate repository. - I am moving this issue to the repository for Ionic 3. Please track this issue over there. - - - Thank you for using Ionic! - - label: "ionitron: cli" - repo: ionic-cli - message: > - Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests - associated with the Ionic Framework. It appears that this issue is associated with the Ionic CLI. - I am moving this issue to the Ionic CLI repository. Please track this issue over there. - - - Thank you for using Ionic! - - label: "ionitron: docs" - repo: ionic-docs - message: > - Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests - associated with the Ionic Framework. It appears that this issue is associated with the Ionic Documentation. - I am moving this issue to the Ionic Docs repository. Please track this issue over there. - - - Thank you for using Ionic! - - label: "ionitron: stencil" - repo: stencil - message: > - Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests - associated with the Ionic Framework. It appears that this issue is associated with Stencil. - I am moving this issue to the Stencil repository. Please track this issue over there. - - - Thank you for using Ionic! - - label: "ionitron: native" - repo: ionic-native - message: > - Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests - associated with the Ionic Framework. It appears that this issue is associated with Ionic Native. - I am moving this issue to the Ionic Native repository. Please track this issue over there. - - - Thank you for using Ionic! - close: true - lock: true - dryRun: false - -screenshot: - appId: 18001 - checkName: "build" - baseUrl: "https://screenshot.ionicframework.com/" - dryRun: false diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 7ea70aaf7f1..00000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,22 +0,0 @@ -# This is used with the label workflow which -# will triage pull requests and apply a label based on the -# paths that are modified in the pull request. -# -# For more information, see: -# https://github.com/actions/labeler - -'package: core': -- changed-files: - - any-glob-to-any-file: ['core/**/*'] - -'package: angular': -- changed-files: - - any-glob-to-any-file: ['packages/angular/**/*', 'packages/angular-*/**/*'] - -'package: react': -- changed-files: - - any-glob-to-any-file: ['packages/react/**/*', 'packages/react-*/**/*'] - -'package: vue': -- changed-files: - - any-glob-to-any-file: ['packages/vue/**/*', 'packages/vue-*/**/*'] diff --git a/.github/workflows/actions/build-angular-server/action.yml b/.github/workflows/actions/build-angular-server/action.yml deleted file mode 100644 index b530d300788..00000000000 --- a/.github/workflows/actions/build-angular-server/action.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: 'Build Ionic Angular Server' -description: 'Build Ionic Angular Server' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Install Angular Server Dependencies - run: npm ci - shell: bash - working-directory: ./packages/angular-server - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/angular-server - - name: Build - run: npm run build.prod - shell: bash - working-directory: ./packages/angular-server - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-angular-server - output: packages/angular-server/AngularServerBuild.zip - paths: packages/angular-server/dist diff --git a/.github/workflows/actions/build-angular/action.yml b/.github/workflows/actions/build-angular/action.yml deleted file mode 100644 index 80da1c353d7..00000000000 --- a/.github/workflows/actions/build-angular/action.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: 'Build Ionic Angular' -description: 'Build Ionic Angular' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Install Angular Dependencies - run: npm ci - shell: bash - working-directory: ./packages/angular - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/angular - - name: Lint - run: npm run lint - shell: bash - working-directory: ./packages/angular - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/angular - - name: Check Diff - run: git diff --exit-code - shell: bash - working-directory: ./packages/angular - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-angular - output: ./packages/angular/AngularBuild.zip - paths: ./packages/angular/dist diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml deleted file mode 100644 index de2a0ee98c5..00000000000 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: 'Build Ionic Core with Stencil Prerelease' -description: 'Build Ionic Core with a Prerelease Build of Stencil' -inputs: - stencil-version: - description: 'The NPM tag of @stencil/core to install.' - type: string - required: true -runs: - using: 'composite' - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - - name: Install Dependencies - run: npm ci - working-directory: ./core - shell: bash - - name: Install Stencil ${{ inputs.stencil-version }} - working-directory: ./core - run: npm i @stencil/core@${{ inputs.stencil-version }} - shell: bash - - name: Build Core - run: npm run build -- --ci --debug --verbose - working-directory: ./core - shell: bash - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-core - output: core/CoreBuild.zip - paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml deleted file mode 100644 index 28006742feb..00000000000 --- a/.github/workflows/actions/build-core/action.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: 'Build Ionic Core' -description: 'Build Ionic Core' -inputs: - ionicons-version: - description: 'The NPM tag of ionicons to install.' - type: string - required: false -runs: - using: 'composite' - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - name: Install Dependencies - run: npm install - working-directory: ./core - shell: bash - # If an Ionicons version was specified install that. - # Otherwise just use the version defined in the package.json. - - name: Install Ionicons Version - if: inputs.ionicons-version != '' - run: npm install ionicons@${{ inputs.ionicons-version }} - working-directory: ./core - shell: bash - - name: Build Core - run: npm run build -- --ci - working-directory: ./core - shell: bash - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-core - output: core/CoreBuild.zip - paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts core/api.txt diff --git a/.github/workflows/actions/build-react-router/action.yml b/.github/workflows/actions/build-react-router/action.yml deleted file mode 100644 index 390378cb12d..00000000000 --- a/.github/workflows/actions/build-react-router/action.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: 'Build Ionic React Router' -description: 'Build Ionic React Router' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react - path: ./packages/react - filename: ReactBuild.zip - - name: Install Dependencies - run: npm ci - shell: bash - working-directory: ./packages/react-router - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/react-router - - name: Lint - run: npm run lint - shell: bash - working-directory: ./packages/react-router - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/react-router - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-react-router - output: packages/react-router/ReactRouterBuild.zip - paths: packages/react-router/dist diff --git a/.github/workflows/actions/build-react/action.yml b/.github/workflows/actions/build-react/action.yml deleted file mode 100644 index 3ea565d62e3..00000000000 --- a/.github/workflows/actions/build-react/action.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: 'Build Ionic React' -description: 'Build Ionic React' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Install React Dependencies - run: npm ci - shell: bash - working-directory: ./packages/react - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/react - - name: Lint - run: npm run lint - shell: bash - working-directory: ./packages/react - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/react - - name: Test Spec - run: npm run test.spec - shell: bash - working-directory: ./packages/react - - name: Check Diff - run: git diff --exit-code - shell: bash - working-directory: ./packages/react - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-react - output: packages/react/ReactBuild.zip - paths: packages/react/dist packages/react/css diff --git a/.github/workflows/actions/build-vue-router/action.yml b/.github/workflows/actions/build-vue-router/action.yml deleted file mode 100644 index 623bdc4c7a1..00000000000 --- a/.github/workflows/actions/build-vue-router/action.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: 'Build Ionic Vue Router' -description: 'Builds Ionic Vue Router' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-vue - path: ./packages/vue - filename: VueBuild.zip - - name: Install Vue Router Dependencies - run: npm ci - shell: bash - working-directory: ./packages/vue-router - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/vue-router - - name: Lint - run: npm run lint - shell: bash - working-directory: ./packages/vue-router - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/vue-router - - name: Test Spec - run: npm run test.spec - shell: bash - working-directory: ./packages/vue-router - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-vue-router - output: ./packages/vue-router/VueRouterBuild.zip - paths: packages/vue-router/dist diff --git a/.github/workflows/actions/build-vue/action.yml b/.github/workflows/actions/build-vue/action.yml deleted file mode 100644 index f2be91e1090..00000000000 --- a/.github/workflows/actions/build-vue/action.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: 'Build Ionic Vue' -description: 'Build Ionic Vue' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Install Vue Dependencies - run: npm ci - shell: bash - working-directory: ./packages/vue - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/vue - - name: Lint - run: npm run lint - shell: bash - working-directory: ./packages/vue - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/vue - - name: Check Diff - run: git diff --exit-code - shell: bash - working-directory: ./packages/vue - - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-vue - output: packages/vue/VueBuild.zip - paths: packages/vue/dist packages/vue/css diff --git a/.github/workflows/actions/download-archive/action.yml b/.github/workflows/actions/download-archive/action.yml deleted file mode 100644 index 04cf5108f26..00000000000 --- a/.github/workflows/actions/download-archive/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 'Ionic Framework Archive Download' -description: 'Downloads and decompresses an archive from a previous job' -inputs: - path: - description: 'Input archive name' - filename: - description: 'Input file name' - name: - description: 'Archive name' -runs: - using: 'composite' - steps: - - uses: actions/download-artifact@v4 - with: - name: ${{ inputs.name }} - path: ${{ inputs.path }} - - name: Extract Archive - run: unzip -q -o ${{ inputs.path }}/${{ inputs.filename }} - shell: bash diff --git a/.github/workflows/actions/publish-npm/action.yml b/.github/workflows/actions/publish-npm/action.yml deleted file mode 100644 index 6bd557db3b9..00000000000 --- a/.github/workflows/actions/publish-npm/action.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: 'Release' -description: 'Releases a package' -inputs: - scope: - description: 'The package to release. Must match a package specified in lerna.json.' - version: - description: 'The type of version to release.' - tag: - description: 'The tag to publish to on NPM.' - preid: - description: 'The prerelease identifier used when doing a prerelease.' - working-directory: - description: 'The directory of the package.' - folder: - default: './' - description: 'A folder containing a package.json file.' - token: - description: 'The NPM authentication token required to publish.' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - # Provenance requires npm 9.5.0+ - - name: Install latest npm - run: npm install -g npm@latest - shell: bash - # This ensures the local version of Lerna is installed - # and that we do not use the global Lerna version - - name: Install root dependencies - run: npm ci - shell: bash - - name: Install Dependencies - run: npx lerna@5 bootstrap --include-dependencies --scope ${{ inputs.scope }} --ignore-scripts -- --legacy-peer-deps - shell: bash - working-directory: ${{ inputs.working-directory }} - - name: Update Version - run: npx lerna@5 version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version --preid=${{ inputs.preid }} - shell: bash - working-directory: ${{ inputs.working-directory }} - - name: Run Build - run: npm run build - shell: bash - working-directory: ${{ inputs.working-directory }} - - name: Prepare NPM Token - run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc - working-directory: ${{ inputs.working-directory }} - shell: bash - env: - NPM_TOKEN: ${{ inputs.token }} - - name: Publish to NPM - run: npm publish ${{ inputs.folder }} --tag ${{ inputs.tag }} --provenance - shell: bash - working-directory: ${{ inputs.working-directory }} diff --git a/.github/workflows/actions/test-angular-e2e/action.yml b/.github/workflows/actions/test-angular-e2e/action.yml deleted file mode 100644 index 50c5907af03..00000000000 --- a/.github/workflows/actions/test-angular-e2e/action.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: 'Test Angular E2E' -description: 'Test Angular E2E' -inputs: - app: - description: 'The specific test application' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-angular - path: ./angular - filename: AngularBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-angular-server - path: ./packages/angular-server - filename: AngularServerBuild.zip - - name: Create Test App - run: ./build.sh ${{ inputs.app }} - shell: bash - working-directory: ./packages/angular/test - - name: Install Dependencies - run: npm install - shell: bash - working-directory: ./packages/angular/test/build/${{ inputs.app }} - - name: Sync Built Changes - run: npm run sync - shell: bash - working-directory: ./packages/angular/test/build/${{ inputs.app }} - - name: Run Tests - run: npm run test - shell: bash - working-directory: ./packages/angular/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/test-core-clean-build/action.yml b/.github/workflows/actions/test-core-clean-build/action.yml deleted file mode 100644 index d822e69468d..00000000000 --- a/.github/workflows/actions/test-core-clean-build/action.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: 'Test Core Clean Build' -description: 'Test Core Clean Build' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Check Diff - run: | - git diff --exit-code || { - echo -e "\033[1;31m⚠️ Error: Differences Detected ⚠️\033[0m" - echo -e "\033[1;31mThere are uncommitted changes between the build outputs from CI and your branch.\033[0m" - echo -e "\033[1;31mPlease ensure you have followed these steps:\033[0m" - echo -e "\033[1;31m1. Run 'npm run build' locally to generate the latest build output.\033[0m" - echo -e "\033[1;31m2. Commit and push all necessary changes to your branch.\033[0m" - echo -e "\033[1;31m3. Compare and validate the differences before proceeding.\033[0m" - exit 1 - } - shell: bash - working-directory: ./core diff --git a/.github/workflows/actions/test-core-lint/action.yml b/.github/workflows/actions/test-core-lint/action.yml deleted file mode 100644 index a4298c2c0a1..00000000000 --- a/.github/workflows/actions/test-core-lint/action.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: 'Test Core Lint' -description: 'Test Core Lint' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - name: Install Dependencies - run: npm ci - working-directory: ./core - shell: bash - - name: Lint - run: npm run lint - shell: bash - working-directory: ./core - # Lint changes should be pushed - # to the branch before the branch - # is merge eligible. - - name: Check Lint Results - run: git diff --exit-code - shell: bash - working-directory: ./core diff --git a/.github/workflows/actions/test-core-screenshot/action.yml b/.github/workflows/actions/test-core-screenshot/action.yml deleted file mode 100644 index 588c310b462..00000000000 --- a/.github/workflows/actions/test-core-screenshot/action.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: 'Test Core Screenshot' -description: 'Test Core Screenshot' -inputs: - shard: - description: 'Playwright Test Shard (ex: 2)' - totalShards: - description: 'Playwright total number of test shards (ex: 4)' - update: - description: 'Whether or not to update the reference snapshots' - component: - description: 'The component to update the reference snapshots' - -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Install Dependencies - run: npm install - shell: bash - working-directory: ./core - - name: Test - if: inputs.update != 'true' - run: npm run test.e2e.docker.ci ${{ inputs.component }} -- --shard=${{ inputs.shard }}/${{ inputs.totalShards }} - shell: bash - working-directory: ./core - - name: Test and Update - id: test-and-update - if: inputs.update == 'true' - # Keep track of the files that were - # changed so they can be correctly restored - # in the combine step. - # To do this, we move only the changed files - # to a separate directory, while preserving the - # directory structure of the source. - # When, we create and archive of these results - # so that the combine step can simply - # unzip and move the changed files into place. - # We have extra logic added so that job runners - # that do not have any new screenshots do not create - # an unnecessary .zip. - # Note that we need to unzip directory to be "core" - # which is why we not using the upload-archive - # composite step here. - run: | - npm run test.e2e.docker.ci ${{ inputs.component }} -- --shard=${{ inputs.shard }}/${{ inputs.totalShards }} --update-snapshots='changed' - git add src/\*.png --force - mkdir updated-screenshots - cd ../ && rsync -R --progress $(git diff --name-only --cached) core/updated-screenshots - if [ -d core/updated-screenshots/core ]; then - echo "hasUpdatedScreenshots=$(echo 'true')" >> $GITHUB_OUTPUT - cd core/updated-screenshots - zip -q -r ../../UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip core - fi - shell: bash - working-directory: ./core - - name: Archive Updated Screenshots - if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true' - uses: actions/upload-artifact@v4 - with: - name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }} - path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip - - name: Archive Test Results - # The always() ensures that this step - # runs even if the previous step fails. - # We want the test results to be archived - # even if the test fails in the previous - # step, otherwise there would be no way - # to debug these tests. - if: always() - uses: ./.github/workflows/actions/upload-archive - with: - name: test-results-${{ inputs.shard }}-${{ inputs.totalShards }} - output: core/TestResults-${{ inputs.shard }}-${{ inputs.totalShards }}.zip - paths: core/playwright-report diff --git a/.github/workflows/actions/test-core-spec/action.yml b/.github/workflows/actions/test-core-spec/action.yml deleted file mode 100644 index f6246664066..00000000000 --- a/.github/workflows/actions/test-core-spec/action.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: 'Test Core Spec' -description: 'Test Core Spec' -inputs: - stencil-version: - description: 'The NPM tag of @stencil/core to install.' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - name: Install Dependencies - run: npm ci - working-directory: ./core - shell: bash - - name: Install Stencil ${{ inputs.stencil-version }} - run: npm install @stencil/core@${{ inputs.stencil-version }} - shell: bash - working-directory: ./core - if: ${{ inputs.stencil-version != '' }} - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Test - run: npm run test.spec -- --ci - shell: bash - working-directory: ./core diff --git a/.github/workflows/actions/test-react-e2e/action.yml b/.github/workflows/actions/test-react-e2e/action.yml deleted file mode 100644 index ab056ac667b..00000000000 --- a/.github/workflows/actions/test-react-e2e/action.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: 'Test React E2E' -description: 'Test React E2E' -inputs: - app: - description: 'The specific test application' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react - path: ./packages/react - filename: ReactBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react-router - path: ./packages/react-router - filename: ReactRouterBuild.zip - - name: Create Test App - run: ./build.sh ${{ inputs.app }} - shell: bash - working-directory: ./packages/react/test - - name: Install Dependencies - run: npm install - shell: bash - working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Sync Built Changes - run: npm run sync - shell: bash - working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/react/test/build/${{ inputs.app }} - - name: Run Tests - run: npm run e2e - shell: bash - working-directory: ./packages/react/test/build/${{ inputs.app }} - diff --git a/.github/workflows/actions/test-react-router-e2e/action.yml b/.github/workflows/actions/test-react-router-e2e/action.yml deleted file mode 100644 index cf71e4da5aa..00000000000 --- a/.github/workflows/actions/test-react-router-e2e/action.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: 'Test React Router E2E' -description: 'Test React Router' -inputs: - app: - description: 'The specific test application' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react - path: ./packages/react - filename: ReactBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react-router - path: ./packages/react-router - filename: ReactRouterBuild.zip - - name: Create Test App - run: ./build.sh ${{ inputs.app }} - shell: bash - working-directory: ./packages/react-router/test - - name: Install Dependencies - run: npm install - shell: bash - working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Sync Built Changes - run: npm run sync - shell: bash - working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Build - run: npm run build - shell: bash - working-directory: ./packages/react-router/test/build/${{ inputs.app }} - - name: Run Tests - run: npm run e2e - shell: bash - working-directory: ./packages/react-router/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/test-vue-e2e/action.yml b/.github/workflows/actions/test-vue-e2e/action.yml deleted file mode 100644 index 93a21db7855..00000000000 --- a/.github/workflows/actions/test-vue-e2e/action.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: 'Test Vue E2E' -description: 'Test Vue E2E' -inputs: - app: - description: 'The specific test application' -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-vue - path: ./packages/vue - filename: VueBuild.zip - - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-vue-router - path: ./packages/vue-router - filename: VueRouterBuild.zip - - name: Create Test App - run: ./build.sh ${{ inputs.app }} - shell: bash - working-directory: ./packages/vue/test - - name: Install Dependencies - run: npm install - shell: bash - working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Sync - run: npm run sync - shell: bash - working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Run Spec Tests - run: npm run test:unit - shell: bash - working-directory: ./packages/vue/test/build/${{ inputs.app }} - - name: Run E2E Tests - run: npm run test:e2e - shell: bash - working-directory: ./packages/vue/test/build/${{ inputs.app }} diff --git a/.github/workflows/actions/update-reference-screenshots/action.yml b/.github/workflows/actions/update-reference-screenshots/action.yml deleted file mode 100644 index 256676fe484..00000000000 --- a/.github/workflows/actions/update-reference-screenshots/action.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: 'Update Reference Screenshots' -description: 'Update Reference Screenshots' - -on: - workflow_dispatch: - -runs: - using: 'composite' - steps: - - uses: actions/setup-node@v4 - with: - node-version: 22.x - - uses: actions/download-artifact@v4 - with: - path: ./artifacts - - name: Extract Archives - # This finds all .zip files in the ./artifacts - # directory, including nested directories. - # It then unzips every .zip to the root directory - run: | - find . -type f -name 'UpdatedScreenshots-*.zip' -exec unzip -q -o -d ../ {} \; - shell: bash - working-directory: ./artifacts - - name: Push Screenshots - # Configure user as Ionitron - # and push only the changed .png snapshots - # to the remote branch. - # Non-Linux screenshots are in .gitignore - # to prevent local screenshots from getting - # pushed to Git. - run: | - git config user.name ionitron - git config user.email hi@ionicframework.com - - # This adds an empty entry for new - # screenshot files so we can track them with - # git diff - git add src/\*.png -N - - if git diff --exit-code; then - echo -e "\033[1;31m⚠️ Error: No new screenshots generated ⚠️\033[0m" - echo -e "\033[1;31mThis means that there were zero visual diffs when running screenshot tests.\033[0m" - echo -e "\033[1;31mMake sure you have pushed any code changes that would result in visual diffs.\033[0m" - exit 1 - else - # This actually adds the contents - # of the screenshots (including new ones) - git add src/\*.png - git commit -m "chore(): add updated snapshots" - git push - fi - - shell: bash - working-directory: ./core diff --git a/.github/workflows/actions/upload-archive/action.yml b/.github/workflows/actions/upload-archive/action.yml deleted file mode 100644 index 966b80e3a00..00000000000 --- a/.github/workflows/actions/upload-archive/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 'Ionic Framework Archive Upload' -description: 'Compresses and uploads an archive to be reused across jobs' -inputs: - paths: - description: 'Paths to files or directories to archive' - output: - description: 'Output file name' - name: - description: 'Archive name' -runs: - using: 'composite' - steps: - - name: Create Archive - run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }} - shell: bash - - uses: actions/upload-artifact@v4 - with: - name: ${{ inputs.name }} - path: ${{ inputs.output }} diff --git a/.github/workflows/assign-issues.yml b/.github/workflows/assign-issues.yml deleted file mode 100644 index d06c1f52e10..00000000000 --- a/.github/workflows/assign-issues.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Assign issues to triage - -on: - issues: - types: [opened] - -jobs: - auto-assign: - runs-on: ubuntu-latest - permissions: - issues: write - steps: - - name: 'Auto-assign issue' - uses: pozil/auto-assign-issue@39c06395cbac76e79afc4ad4e5c5c6db6ecfdd2e # v2.2.0 - with: - assignees: brandyscarney, thetaPC, ShaneK - numOfAssignee: 1 - allowSelfAssign: false diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 7d1fedca923..00000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,217 +0,0 @@ -name: 'Ionic Framework Build' - -on: - pull_request: - branches: [ '**' ] - merge_group: - workflow_dispatch: - inputs: - ionicons_npm_release_tag: - required: false - type: string - description: What version of ionicons should be pulled from NPM? Use this if you want to test a custom version of Ionicons with Ionic. - -# When pushing a new commit we should -# cancel the previous test run to not -# consume more runners than we need to. -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -jobs: - build-core: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-core - with: - ionicons-version: ${{ inputs.ionicons_npm_release_tag }} - - test-core-clean-build: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-clean-build - - test-core-lint: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-lint - - test-core-spec: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-spec - - test-core-screenshot: - strategy: - matrix: - # Divide the tests into n buckets - # and run those buckets in parallel. - # To increase the number of shards, - # add new items to the shard array - # and change the value of totalShards - # to be the length of the shard array. - shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] - totalShards: [20] - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-screenshot - with: - shard: ${{ matrix.shard }} - totalShards: ${{ matrix.totalShards }} - - # Screenshots are required to pass - # in order for the branch to be merge - # eligible. However, the screenshot tests - # are run on n runners where n can change - # over time. The verify-screenshots step allows - # us to have a required status check for screenshot - # results without having to manually add each - # matrix run in the branch protection rules - # Source: https://github.community/t/status-check-for-a-matrix-jobs/127354 - verify-screenshots: - if: ${{ always() }} - needs: test-core-screenshot - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-core-screenshot.result != 'success' }} - run: exit 1 - - build-vue: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-vue - - build-vue-router: - needs: [build-vue] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-vue-router - - test-vue-e2e: - strategy: - fail-fast: false - matrix: - apps: [vue3] - needs: [build-vue, build-vue-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-vue-e2e - with: - app: ${{ matrix.apps }} - - verify-test-vue-e2e: - if: ${{ always() }} - needs: test-vue-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-vue-e2e.result != 'success' }} - run: exit 1 - - build-angular: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-angular - - build-angular-server: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-angular-server - - test-angular-e2e: - strategy: - fail-fast: false - matrix: - apps: [ng16, ng17, ng18, ng19] - needs: [build-angular, build-angular-server] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-angular-e2e - with: - app: ${{ matrix.apps }} - - verify-test-angular-e2e: - if: ${{ always() }} - needs: test-angular-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-angular-e2e.result != 'success' }} - run: exit 1 - - build-react: - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-react - - build-react-router: - needs: [build-react] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-react-router - - test-react-router-e2e: - strategy: - fail-fast: false - matrix: - apps: [reactrouter5] - needs: [build-react, build-react-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-react-router-e2e - with: - app: ${{ matrix.apps }} - - verify-test-react-router-e2e: - if: ${{ always() }} - needs: test-react-router-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-react-router-e2e.result != 'success' }} - run: exit 1 - - test-react-e2e: - strategy: - fail-fast: false - matrix: - apps: [react17, react18, react19] - needs: [build-react, build-react-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-react-e2e - with: - app: ${{ matrix.apps }} - - verify-test-react-e2e: - if: ${{ always() }} - needs: test-react-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-react-e2e.result != 'success' }} - run: exit 1 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index fbb39d4d5d6..00000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: CodeQL - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - analyze: - runs-on: ubuntu-latest - permissions: - security-events: write - steps: - - uses: actions/checkout@v4 - - uses: github/codeql-action/init@v3 - with: - languages: javascript - - uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/conventional-commit.yml b/.github/workflows/conventional-commit.yml deleted file mode 100644 index fe310a565a8..00000000000 --- a/.github/workflows/conventional-commit.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: PR Conventional Commit Validation - -on: - pull_request: - types: [opened, synchronize, reopened, edited] - -jobs: - validate-pr-title: - runs-on: ubuntu-latest - steps: - - name: Validate PR title - uses: amannn/action-semantic-pull-request@v5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - # Configure that a scope must always be provided. - requireScope: true - # Configure additional validation for the subject based on a regex. - # This example ensures the subject doesn't start with an uppercase character. - subjectPattern: ^(?![A-Z]).+$ - # If `subjectPattern` is configured, you can use this property to - # override the default error message that is shown when the pattern - # doesn't match. The variables `subject` and `title` can be used - # within the message. - subjectPatternError: | - The subject "{subject}" found in the pull request title "{title}" didn't match the configured pattern. Please ensure that the subject doesn't start with an uppercase character. - # If the PR contains one of these newline-delimited labels, the - # validation is skipped. If you want to rerun the validation when - # labels change, you might want to use the `labeled` and `unlabeled` - # event triggers in your workflow. - ignoreLabels: | - release diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml deleted file mode 100644 index 48dc911c622..00000000000 --- a/.github/workflows/dev-build.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: 'Ionic Dev Build' - -on: - workflow_dispatch: - -jobs: - create-dev-hash: - runs-on: ubuntu-latest - outputs: - dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} - steps: - - uses: actions/checkout@v4 - # A 1 is required before the timestamp - # as lerna will fail when there is a leading 0 - # See https://github.com/lerna/lerna/issues/2840 - - name: Install Dependencies - run: npm ci - shell: bash - - id: create-dev-hash - name: Create Dev Hash - run: | - echo "DEV_HASH=$(node ./.scripts/bump-version.js)-dev.1$(date +%s).1$(git log -1 --format=%H | cut -c 1-7)" >> $GITHUB_OUTPUT - shell: bash - - release-ionic: - needs: [create-dev-hash] - permissions: - id-token: write - uses: ./.github/workflows/release-ionic.yml - with: - tag: dev - version: ${{ needs.create-dev-hash.outputs.dev-hash }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - get-build: - name: Get your dev build! - runs-on: ubuntu-latest - needs: [create-dev-hash, release-ionic] - steps: - - run: echo ${{ needs.create-dev-hash.outputs.dev-hash }} - diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml deleted file mode 100644 index a4e35060dfb..00000000000 --- a/.github/workflows/label.yml +++ /dev/null @@ -1,19 +0,0 @@ -# This workflow will triage pull requests and apply a label based on the -# paths that are modified in the pull request. -# -# To use this workflow, you will need to set up a .github/labeler.yml -# file with configuration. For more information, see: -# https://github.com/actions/labeler - -name: "Pull Request Labeler" -on: -- pull_request_target - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v5 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" - sync-labels: true diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml deleted file mode 100644 index 6f812a02f6c..00000000000 --- a/.github/workflows/nightly.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: 'Ionic Nightly Build' - -on: - schedule: - # Run every Monday-Friday - # at 6:00 UTC (6:00 am UTC) - - cron: '00 06 * * 1-5' - -jobs: - create-nightly-hash: - runs-on: ubuntu-latest - outputs: - nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} - steps: - - uses: actions/checkout@v4 - # A 1 is required before the timestamp - # as lerna will fail when there is a leading 0 - # See https://github.com/lerna/lerna/issues/2840 - - name: Install Dependencies - run: npm ci - shell: bash - - id: create-nightly-hash - name: Create Nightly Hash - # The date should output YYYYMMDD - # so that it is human readable - run: | - echo "NIGHTLY_HASH=$(node ./.scripts/bump-version.js)-nightly.$(date +%Y%m%d)" >> $GITHUB_OUTPUT - shell: bash - - release-ionic: - needs: [create-nightly-hash] - permissions: - id-token: write - uses: ./.github/workflows/release-ionic.yml - with: - tag: nightly - version: ${{ needs.create-nightly-hash.outputs.nightly-hash }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml deleted file mode 100644 index 4be91285a4a..00000000000 --- a/.github/workflows/release-ionic.yml +++ /dev/null @@ -1,217 +0,0 @@ -name: 'Release Ionic' - -on: - workflow_call: - inputs: - version: - description: 'The type of version to release.' - type: string - required: true - tag: - description: 'The tag to publish to NPM.' - type: string - required: true - preid: - description: 'The prerelease identifier used when doing a prerelease.' - type: string - secrets: - NPM_TOKEN: - required: true - -jobs: - release-core: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/core' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'core' - token: ${{ secrets.NPM_TOKEN }} - - name: Cache Built @ionic/core - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-core - output: core/CoreBuild.zip - paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts - - name: Cache Built @ionic/docs - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-docs - output: packages/docs/DocsBuild.zip - paths: packages/docs/core.json packages/docs/core.d.ts - - release-docs: - needs: [release-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/docs built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-docs - path: ./packages/docs - filename: DocsBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/docs' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/docs' - token: ${{ secrets.NPM_TOKEN }} - - release-angular: - needs: [release-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/angular' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/angular' - folder: './dist' - token: ${{ secrets.NPM_TOKEN }} - - name: Cache Built @ionic/angular - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-angular - output: packages/angular/AngularBuild.zip - paths: packages/angular/dist - - release-react: - needs: [release-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/react' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/react' - token: ${{ secrets.NPM_TOKEN }} - - name: Cache Built @ionic/react - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-react - output: packages/react/ReactBuild.zip - paths: packages/react/dist packages/react/css - - release-vue: - needs: [release-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/vue' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/vue' - token: ${{ secrets.NPM_TOKEN }} - - name: Cache Built @ionic/vue - uses: ./.github/workflows/actions/upload-archive - with: - name: ionic-vue - output: packages/vue/VueBuild.zip - paths: packages/vue/dist packages/vue/css - - release-angular-server: - needs: [release-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/angular-server' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/angular-server' - folder: './dist' - token: ${{ secrets.NPM_TOKEN }} - - release-react-router: - needs: [release-react] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Restore @ionic/react built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-react - path: ./packages/react - filename: ReactBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/react-router' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/react-router' - token: ${{ secrets.NPM_TOKEN }} - - release-vue-router: - needs: [release-vue] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Restore @ionic/core built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-core - path: ./core - filename: CoreBuild.zip - - name: Restore @ionic/vue built cache - uses: ./.github/workflows/actions/download-archive - with: - name: ionic-vue - path: ./packages/vue - filename: VueBuild.zip - - uses: ./.github/workflows/actions/publish-npm - with: - scope: '@ionic/vue-router' - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - working-directory: 'packages/vue-router' - token: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index bb27e8a5f5e..00000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,129 +0,0 @@ -name: 'Ionic Production Release' - -on: - workflow_dispatch: - inputs: - version: - required: true - type: choice - description: Which version should be published? - options: - - patch - - minor - - major - - prepatch - - preminor - - premajor - - prerelease - tag: - required: true - type: choice - description: Which npm tag should this be published to? - options: - - latest - - next - preid: - type: choice - description: Which prerelease identifier should be used? This is only needed when version is "prepatch", "preminor", "premajor", or "prerelease". - options: - - '' - - alpha - - beta - - rc - - next - -jobs: - release-ionic: - permissions: - id-token: write - uses: ./.github/workflows/release-ionic.yml - with: - tag: ${{ inputs.tag }} - version: ${{ inputs.version }} - preid: ${{ inputs.preid }} - secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - finalize-release: - needs: [release-ionic] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - token: ${{ secrets.IONITRON_TOKEN }} - fetch-depth: 0 - - name: Configure Identity - # Commits from github-actions do not - # trigger other GitHub Actions. As a result, - # we publish releases from Ionitron instead - # so actions run when merging the release branch - # back into main. - run: | - git config user.name ionitron - git config user.email hi@ionicframework.com - shell: bash - - name: Create GitHub Release - run: lerna version ${{ inputs.version }} --yes --force-publish='*' --conventional-commits --create-release github --preid=${{ inputs.preid }} - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - shell: bash - - update-package-lock: - # This needs to run after finalize-release - # because we also push to the repo in that - # job. If these jobs ran in parallel then it is - # possible for them to push at the same time. - needs: [finalize-release] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - # Pull the latest version of the reference - # branch instead of the revision that triggered - # the workflow otherwise we won't get the commit - # created in the previous job and this next job - # will fail. - with: - ref: ${{ github.ref }} - - name: Configure Identity - # Commits from github-actions do not - # trigger other GitHub Actions. As a result, - # we push from Ionitron instead so actions - # run when merging the release branch - # back into main. - run: | - git config user.name ionitron - git config user.email hi@ionicframework.com - shell: bash - # Lerna does not automatically bump versions - # of Ionic dependencies that have changed, - # so we do that here. - - name: Bump Package Lock - run: | - lerna exec "npm install --package-lock-only" - git add . - git commit -m "chore(): update package lock files" - git push - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - shell: bash - - purge-cdn-cache: - needs: [release-ionic] - runs-on: ubuntu-latest - steps: - - name: Purge JSDelivr Cache - run: | - curl -X POST \ - https://purge.jsdelivr.net/ \ - -H 'cache-control: no-cache' \ - -H 'content-type: application/json' \ - -d '{ - "path": [ - "/npm/@ionic/core@6/dist/ionic/ionic.esm.js", - "/npm/@ionic/core@latest/dist/ionic/ionic.esm.js", - "/npm/@ionic/core@next/dist/ionic/ionic.esm.js", - "/npm/@ionic/core@6/css/ionic.bundle.css", - "/npm/@ionic/core@latest/css/ionic.bundle.css" - "/npm/@ionic/core@next/css/ionic.bundle.css" - ]}' - shell: bash diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml deleted file mode 100644 index f03ec871256..00000000000 --- a/.github/workflows/stencil-nightly.yml +++ /dev/null @@ -1,227 +0,0 @@ -# This workflow is intended to run against the `HEAD` of Stencil's primary branch. -# See https://github.com/ionic-team/stencil for contents of the repository -name: 'Stencil Nightly Build' - -on: - schedule: - # Run every Monday-Friday - # at 6:00 UTC (6:00 am UTC) - - cron: '00 06 * * 1-5' - workflow_dispatch: - inputs: - npm_release_tag: - required: true - type: string - description: What version should be pulled from NPM? - default: nightly - -# When pushing a new commit we should -# cancel the previous test run to not -# consume more runners than we need to. -concurrency: - group: ${{ github.ref }} - cancel-in-progress: false - -jobs: - build-core-with-stencil-nightly: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-core-stencil-prerelease - with: - stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} - - test-core-clean-build: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-clean-build - - test-core-lint: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-lint - - test-core-spec: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-spec - with: - stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} - - test-core-screenshot: - strategy: - # This ensures that all screenshot shard - # failures are reported so the dev can - # review everything at once. - fail-fast: false - matrix: - # Divide the tests into n buckets - # and run those buckets in parallel. - # To increase the number of shards, - # add new items to the shard array - # and change the value of totalShards - # to be the length of the shard array. - shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] - totalShards: [20] - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-screenshot - with: - shard: ${{ matrix.shard }} - totalShards: ${{ matrix.totalShards }} - - # Screenshots are required to pass - # in order for the branch to be merge - # eligible. However, the screenshot tests - # are run on n runners where n can change - # over time. The verify-screenshots step allows - # us to have a required status check for screenshot - # results without having to manually add each - # matrix run in the branch protection rules - # Source: https://github.community/t/status-check-for-a-matrix-jobs/127354 - verify-screenshots: - if: ${{ always() }} - needs: test-core-screenshot - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-core-screenshot.result != 'success' }} - run: exit 1 - - build-vue: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-vue - - build-vue-router: - needs: [build-vue] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-vue-router - - test-vue-e2e: - strategy: - fail-fast: false - matrix: - apps: [vue3] - needs: [build-vue, build-vue-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-vue-e2e - with: - app: ${{ matrix.apps }} - - verify-test-vue-e2e: - if: ${{ always() }} - needs: test-vue-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-vue-e2e.result != 'success' }} - run: exit 1 - - build-angular: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-angular - - build-angular-server: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-angular-server - - test-angular-e2e: - strategy: - fail-fast: false - matrix: - apps: [ng16, ng17, ng18, ng19] - needs: [build-angular, build-angular-server] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-angular-e2e - with: - app: ${{ matrix.apps }} - - verify-test-angular-e2e: - if: ${{ always() }} - needs: test-angular-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-angular-e2e.result != 'success' }} - run: exit 1 - - build-react: - needs: [build-core-with-stencil-nightly] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-react - - build-react-router: - needs: [build-react] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-react-router - - test-react-router-e2e: - strategy: - fail-fast: false - matrix: - apps: [reactrouter5] - needs: [build-react, build-react-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-react-router-e2e - with: - app: ${{ matrix.apps }} - - verify-test-react-router-e2e: - if: ${{ always() }} - needs: test-react-router-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-react-router-e2e.result != 'success' }} - run: exit 1 - - test-react-e2e: - strategy: - fail-fast: false - matrix: - apps: [react17, react18, react19] - needs: [build-react, build-react-router] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-react-e2e - with: - app: ${{ matrix.apps }} - - verify-test-react-e2e: - if: ${{ always() }} - needs: test-react-e2e - runs-on: ubuntu-latest - steps: - - name: Check build matrix status - if: ${{ needs.test-react-e2e.result != 'success' }} - run: exit 1 diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml deleted file mode 100644 index 5bb35c5905a..00000000000 --- a/.github/workflows/update-screenshots.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: 'Update Reference Screenshots' - -on: - workflow_dispatch: - inputs: - # Screenshots can be updated for all components or specified component(s). - # If the `component` variable is set, then the test has the option to - # - run all the instances of the specified component(s) in the `src/components` folder - # -- For example: if the `component` value is "item", then the following command will be: `npm run test.e2e item` - # - run the specified file path - # -- For example: if the `component` value is "src/components/item/test/basic", then the following command will be: `npm run test.e2e src/components/item/test/basic` - # - run multiple specified components based on the space-separated value - # -- For example: if the `component` value is "item basic", then the following command will be: `npm run test.e2e item basic` - # -- For example: if the `component` value is "src/components/item/test/basic src/components/item/test/a11y", then the following command will be: `npm run test.e2e src/components/item/test/basic src/components/item/test/a11y` - # - # If the `component` variable is not set, then the test will run all the instances of the components in the `src/components` folder. - # - For example: `npm run test.e2e` - # - # More common options can be found at the Playwright Command line page: https://playwright.dev/docs/test-cli - component: - description: 'What component(s) should be updated? (leave blank to update all or use a space-separated list for multiple components)' - required: false - default: '' - -jobs: - build-core: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/build-core - - test-core-screenshot: - strategy: - # This ensures that all screenshot shard - # failures are reported so the dev can - # review everything at once. - fail-fast: false - matrix: - # Divide the tests into n buckets - # and run those buckets in parallel. - # To increase the number of shards, - # add new items to the shard array - # and change the value of totalShards - # to be the length of the shard array. - shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] - totalShards: [20] - needs: [build-core] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/workflows/actions/test-core-screenshot - with: - shard: ${{ matrix.shard }} - totalShards: ${{ matrix.totalShards }} - update: true - component: ${{ inputs.component }} - - update-reference-screenshots: - runs-on: ubuntu-latest - needs: [test-core-screenshot] - steps: - - uses: actions/checkout@v4 - # Normally, we could just push with the - # default GITHUB_TOKEN, but that will - # not cause the build workflow - # to re-run. We use Ionitron's - # Personal Access Token instead - # to allow for this build workflow - # to run when the screenshots are pushed. - with: - token: ${{ secrets.IONITRON_TOKEN }} - - uses: ./.github/workflows/actions/update-reference-screenshots diff --git a/.gitignore b/.gitignore index e610d8a11dd..af2746ae217 100644 --- a/.gitignore +++ b/.gitignore @@ -1,96 +1,32 @@ -*~ +.DS_Store +node_modules *.sw[mnpcod] *.log -*.lock *.tmp *.tmp.* log.txt -*.sublime-project -*.sublime-workspace -*.tgz +example/cordova/iOS/www/js/framework -.idea/ -.vscode/ +example/cordova/iOS/www/js/framework .sass-cache/ -.versions/ -coverage/ -collection/ -dist/ -dist-transpiled/ -node_modules/ -tmp/ -temp/ -core/theme-builder/ -core/test-components/ -core/css/ -$RECYCLE.BIN/ +framework.sublime-project -.DS_Store -Thumbs.db +framework.sublime-workspace UserInterfaceState.xcuserstate -.env - -.package.tmp.json - -src/themes/version.scss -scripts/e2e/webpackEntryPoints.json -scripts/build/e2e-generated-tsconfig.json -*.css.ts - -stats.json -# demo stuff -demos/node_modules -demos/polyfills -demos/css -demos/fonts -demos/src/**/*.js -demos/src/**/*.map -demos/src/**/*.ngfactory.ts -demos/src/**/*.d.ts -demos/src/**/*.metadata.json -demos/src/**/*.css.shim.ts -prerender.html -prerender-domino.html -prerender-hydrated.html -prerender-static.html - -# stencil -packages/react/css/ -packages/vue/css/ -core/components/ -core/css/ -core/hydrate/ -core/loader/ -core/www/ -.stencil/ - -# playwright -core/test-results/ -core/playwright-report/ - -# ground truths generated outside of docker should not be committed to the repo -core/**/*-snapshots/* - -# new ground truths should only be generated inside of docker which will result in -linux.png screenshots -!core/**/*-snapshots/*-linux.png - -# these files are going to be different per-developer environment so do not add them to the repo -core/docker-display.txt -core/docker-display-volume.txt +*.sublime-project -# angular -packages/angular/css/ -packages/angular/test/build/ -.angular/ +*.sublime-workspace -# vue -packages/vue/test/build/ +bower_components/ +components/ +tmp +temp +dist -# react -packages/react/test/build/ +.idea -# react router -packages/react-router/test/build/ +.versions -.npmrc +# Coverage directory used by tools like istanbul +coverage/ diff --git a/.jscs.json b/.jscs.json new file mode 100644 index 00000000000..ad929f37376 --- /dev/null +++ b/.jscs.json @@ -0,0 +1,40 @@ +{ + "excludeFiles": ["src/ngLocale/**"], + "disallowKeywords": ["with"], + "disallowMixedSpacesAndTabs": true, + "disallowMultipleLineStrings": true, + "disallowNewlineBeforeBlockStatements": true, + "disallowSpaceAfterObjectKeys": true, + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "disallowSpaceBeforeBinaryOperators": [","], + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "disallowSpacesInAnonymousFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInFunctionDeclaration": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInNamedFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInsideArrayBrackets": true, + "disallowTrailingComma": true, + "disallowTrailingWhitespace": true, + "requireCommaBeforeLineBreak": true, + "requireLineFeedAtFileEnd": true, + "requireSpaceAfterBinaryOperators": ["?", ":", "+", "-", "/", "*", "%", "==", "===", "!=", "!==", ">", ">=", "<", "<=", "&&", "||"], + "requireSpaceBeforeBinaryOperators": ["?", ":", "+", "-", "/", "*", "%", "==", "===", "!=", "!==", ">", ">=", "<", "<=", "&&", "||"], + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "requireSpaceBeforeBlockStatements": true, + "requireSpacesInConditionalExpression": { + "afterTest": true, + "beforeConsequent": true, + "afterConsequent": true, + "beforeAlternate": true + }, + "requireSpacesInFunction": { + "beforeOpeningCurlyBrace": true + }, + "validateLineBreaks": "LF", + "validateParameterSeparator": ", " +} diff --git a/.jshintignore b/.jshintignore new file mode 100644 index 00000000000..6ce1b00721a --- /dev/null +++ b/.jshintignore @@ -0,0 +1,4 @@ +js/ext/angular/test/**/*.js +js/views/scrollView.js +js/views/sliderView.js +js/utils/utils.js diff --git a/.scripts/bump-version.js b/.scripts/bump-version.js deleted file mode 100644 index 4ef17c089f8..00000000000 --- a/.scripts/bump-version.js +++ /dev/null @@ -1,10 +0,0 @@ -const semver = require('semver'); - -const getDevVersion = () => { - const originalVersion = require('../lerna.json').version; - const baseVersion = semver.inc(originalVersion, 'patch'); - - return baseVersion; -} - -console.log(getDevVersion()); diff --git a/.stackblitz/codeflow.json b/.stackblitz/codeflow.json deleted file mode 100644 index 6354218ee30..00000000000 --- a/.stackblitz/codeflow.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "bot": { - "issues": { - "enabled": false - }, - "pullRequests": { - "enabled": false - } - } -} diff --git a/.vercelignore b/.vercelignore deleted file mode 100644 index c18553dfa1e..00000000000 --- a/.vercelignore +++ /dev/null @@ -1 +0,0 @@ -core/src/components/**/*/*.png diff --git a/BREAKING.md b/BREAKING.md deleted file mode 100644 index bf44f563dc8..00000000000 --- a/BREAKING.md +++ /dev/null @@ -1,293 +0,0 @@ -# Breaking Changes - -This is a comprehensive list of the breaking changes introduced in the major version releases of Ionic Framework. - -## Versions - -- [Version 8.x](#version-8x) -- [Version 7.x](./BREAKING_ARCHIVE/v7.md) -- [Version 6.x](./BREAKING_ARCHIVE/v6.md) -- [Version 5.x](./BREAKING_ARCHIVE/v5.md) -- [Version 4.x](./BREAKING_ARCHIVE/v4.md) -- [Legacy](https://github.com/ionic-team/ionic-v3/blob/master/CHANGELOG.md) - -## Version 8.x - -- [Browser and Platform Support](#version-8x-browser-platform-support) -- [Dark Mode](#version-8x-dark-mode) -- [Global Styles](#version-8x-global-styles) -- [Haptics](#version-8x-haptics) -- [Components](#version-8x-components) - - [Button](#version-8x-button) - - [Checkbox](#version-8x-checkbox) - - [Content](#version-8x-content) - - [Datetime](#version-8x-datetime) - - [Input](#version-8x-input) - - [Item](#version-8x-item) - - [Modal](#version-8x-modal) - - [Nav](#version-8x-nav) - - [Picker](#version-8x-picker) - - [Progress bar](#version-8x-progress-bar) - - [Radio](#version-8x-radio) - - [Range](#version-8x-range) - - [Searchbar](#version-8x-searchbar) - - [Select](#version-8x-select) - - [Textarea](#version-8x-textarea) - - [Toggle](#version-8x-toggle) -- [Framework Specific](#version-8x-framework-specific) - - [Angular](#version-8x-angular) - -