Skip to content

Commit

Permalink
feat: angular 17 migration (#6621)
Browse files Browse the repository at this point in the history
* chore: updated nx and angular to the 17th versions

- updated @nx/* and @angular/* family to their latest versions

- updated via migrations

- regenerated package-lock.json and now it uses v3 format

- docs polyfills used old `dist` imports, replaced it to `plugins`

- updated README.md, mentioning that next major version will require/support Angular 17

- removed unused variables from tests to fight eslint errors

BREAKING CHANGE: Angular 17 is required now

* chore: fixed eslint issues and silenced few ones

* fix: fixed prettier config and launched nx format:write

* chore: updated ngx-bootstrap root min angular version

* chore: updated prettier to the latest version

* feat: get-doc now uses prettier for writing files in ng-api-docs
  • Loading branch information
g-cheishvili authored Nov 28, 2023
1 parent 2df6e6a commit ad594eb
Show file tree
Hide file tree
Showing 131 changed files with 10,764 additions and 27,244 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,5 @@ scully.log
**/playwright/.cache/

migration.json

.nx/cache
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@

/dist
/coverage

/.nx/cache
40 changes: 39 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,43 @@
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": true,
"parser": "typescript"
"parser": "typescript",
"overrides": [
{
"files": "*.json",
"options": {
"parser": "json"
}
},
{
"files": "*.html",
"options": {
"parser": "html"
}
},
{
"files": ["*.components.html", "*.component.html"],
"options": {
"parser": "angular"
}
},
{
"files": "*.md",
"options": {
"parser": "markdown"
}
},
{
"files": "*.yml",
"options": {
"parser": "yaml"
}
},
{
"files": "*.scss",
"options": {
"parser": "scss"
}
}
]
}
70 changes: 42 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<a href="http://valor-software.com/ngx-bootstrap/#/">
<div align="center">
<img class="mx-auto center-block d-block" src="https://valor-software.com/ngx-bootstrap/assets/images/logos/ngx-bootstrap-logo.svg" alt="ngx-bootstrap" width="200" height="200">
<img class="mx-auto center-block d-block" src="https://valor-software.com/ngx-bootstrap/assets/images/logos/ngx-bootstrap-logo.svg" alt="ngx-bootstrap" width="200" height="200" />
<h1>ngx-bootstrap</h1>
</div>
</a>
Expand Down Expand Up @@ -39,6 +39,7 @@ development
-->

## Table of contents

1. [Getting Started](#getting-started)
2. [Usage & Demo](#usage--demo)
3. [Supporting](#supporting-ngx-bootstrap)
Expand All @@ -54,45 +55,52 @@ development

ngx-bootstrap provides Bootstrap components powered by Angular, so you don't need to include original JS components.

Check our [Getting started guide](https://valor-software.com/ngx-bootstrap/#/documentation#getting-started) if it's your
Check our [Getting started guide](https://valor-software.com/ngx-bootstrap/#/documentation#getting-started) if it's your
first project with Angular Bootstrap.

## Usage & Demo

Bootstrap components for Angular applications, dozens of demos and API documentation could be found here:
[https://valor-software.com/ngx-bootstrap/](https://valor-software.com/ngx-bootstrap/).

<!-- Server side rendered version of this documentation available <a href="https://ngx-universal.herokuapp.com/">here</a>
<!-- Server side rendered version of this documentation available <a href="https://ngx-universal.herokuapp.com/">here</a>
served with Angular universal and [nest.js](https://nestjs.com/). -->

## Supporting ngx-bootstrap
ngx-bootstrap is an Open Source (MIT Licensed) project, it's an independent project with ongoing development made possible

ngx-bootstrap is an Open Source (MIT Licensed) project, it's an independent project with ongoing development made possible
thanks to the support of our awesome backers.
If you also would like to show support or simply give back to Open Source community, please consider becoming a backing
If you also would like to show support or simply give back to Open Source community, please consider becoming a backing
sponsor of [ngx-bootstrap on OpenCollective](https://opencollective.com/ngx-bootstrap).

All donated funds are managed transparently on OpenCollective and will be used solely for compensating work and expenses
All donated funds are managed transparently on OpenCollective and will be used solely for compensating work and expenses
for contributors. Valor Software employees and contractors are not eligible for use of these funds.

What's in it for you? Proper recognition and exposure of your name/logo/website on our page.
Our main sponsors will be presented under this section! Be the first!

## Installation

You can see the below simple example working on [StackBlitz](https://stackblitz.com/edit/vs-ngx-bootstrap-tooltip?file=src%2Findex.html)

##### Angular CLI way

Use the Angular CLI ng add command for updating your Angular project.

```bash
ng add ngx-bootstrap
```

##### Manual way

Install `ngx-bootstrap` from `npm`:

```bash
npm install ngx-bootstrap --save
```

Add wanted package to NgModule imports:

```
import { TooltipModule } from 'ngx-bootstrap/tooltip';
Expand All @@ -104,6 +112,7 @@ import { TooltipModule } from 'ngx-bootstrap/tooltip';
```

Add component to your page:

```
<button type="button" class="btn btn-primary"
tooltip="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
Expand All @@ -112,29 +121,33 @@ Add component to your page:
```

You will need to add bootstrap css:
This can be done with the css file directly in the index.html, or alternatively through a styles import in the
This can be done with the css file directly in the index.html, or alternatively through a styles import in the
`angular.json` file or via `styles.scss` import. However the latter two options require additionally installing bootstrap via npm.

- `Bootstrap 5`

```
<!--- index.html -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
```

- `Bootstrap 4`

```
<!--- index.html -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2">
```

### Setting up the bootstrap version manually

As you may know `ngx-bootstrap` supports several `bootstrap.css` versions at the same time and has automatic tool
to guess current used version of library, but if this guess fails you can specify version of `bootstrap.css` manually.
As you may know `ngx-bootstrap` supports several `bootstrap.css` versions at the same time and has automatic tool
to guess current used version of library, but if this guess fails you can specify version of `bootstrap.css` manually.

Sometimes, your project might contain some library that could interfere with the bootstrap framework, or you might
have a customized version of bootstrap. The consequence is that the process of determining bootstrap version might
be failed, which can break the UI. In that case, we can still set the bootstrap version manually in the bootstrapping
have a customized version of bootstrap. The consequence is that the process of determining bootstrap version might
be failed, which can break the UI. In that case, we can still set the bootstrap version manually in the bootstrapping
component (i.e. `AppComponent`):

```
import { setTheme } from 'ngx-bootstrap/utils';
Expand Down Expand Up @@ -164,29 +177,29 @@ npm start
The only two dependencies are [Angular](https://angular.io) and [Bootstrap](https://getbootstrap.com) CSS.
Here is the version compatibility list:

| ngx-bootstrap | Angular | Bootstrap CSS |
|---------------|-----------------|----------------|
| 11.x.x | 16.x.x | 5.x.x or 4.x.x |
| 10.x.x | 15.x.x | 5.x.x or 4.x.x |
| ngx-bootstrap | Angular | Bootstrap CSS |
| ------------- | --------------- | ----------------------- |
| 12.x.x | 17.x.x | 5.x.x or 4.x.x |
| 11.x.x | 16.x.x | 5.x.x or 4.x.x |
| 10.x.x | 15.x.x | 5.x.x or 4.x.x |
| 9.0.0 | 14.x.x | 5.x.x or 4.x.x or 3.x.x |
| 8.0.0 | 12.x.x - 13.x.x | 5.x.x or 4.x.x or 3.x.x |
| 7.1.0 | 11.x.x - 12.x.x | 5.x.x or 4.x.x or 3.x.x |
| 7.0.0 | 11.x.x - 12.x.x | 3.x.x or 4.x.x |
| 6.0.0 | 9.x.x - 10.x.x | 3.x.x or 4.x.x |
| 5.6.x | 7.x.x - 9.1.0 | 3.x.x or 4.x.x |
| 5.0.0 - 5.6.0 | 7.x.x - 8.x.x | 3.x.x or 4.x.x |
| 4.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x |
| 3.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x |
| 2.x.x | 2.x.x - 4.x.x | 3.x.x or 4.x.x |
| 1.x.x | 2.x.x | 3.x.x or 4.x.x |

| 7.0.0 | 11.x.x - 12.x.x | 3.x.x or 4.x.x |
| 6.0.0 | 9.x.x - 10.x.x | 3.x.x or 4.x.x |
| 5.6.x | 7.x.x - 9.1.0 | 3.x.x or 4.x.x |
| 5.0.0 - 5.6.0 | 7.x.x - 8.x.x | 3.x.x or 4.x.x |
| 4.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x |
| 3.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x |
| 2.x.x | 2.x.x - 4.x.x | 3.x.x or 4.x.x |
| 1.x.x | 2.x.x | 3.x.x or 4.x.x |

## Troubleshooting

So if you are in trouble, here's where you can look for help.

The best place to ask questions is on [StackOverflow (under the `ngx-bootstrap` tag)](https://stackoverflow.com/questions/tagged/ngx-bootstrap)
where there is a strong community of individuals asking and answering questions.
The best place to ask questions is on [StackOverflow (under the `ngx-bootstrap` tag)](https://stackoverflow.com/questions/tagged/ngx-bootstrap)
where there is a strong community of individuals asking and answering questions.

You can also join [our Slack channel](https://join.slack.com/t/ngx-home/shared_invite/enQtNTExMTY5MzcwMTM0LWVjZGU2MjI4MTVhMGVlMTc2OWRiMzA0NzBhNDU5YzQ0MDM3MWI5NzJjZTUzNzIxZmNjYmFlMjU2MzE0YmY0NWY) and link your stackoverflow question there. But try to avoid asking generic help questions directly on Slack since they can easily get lost in the chat. You can also [search among the existing GitHub issues](https://github.com/valor-software/ngx-bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue).

Expand All @@ -199,6 +212,7 @@ All contributions very welcome! And remember, contribution is not only PRs and c
Please read our [contribution guidelines](https://github.com/valor-software/ngx-bootstrap/blob/development/CONTRIBUTING.md).

### Credits

Crossbrowser testing sponsored by [Saucelabs](https://saucelabs.com/)
[<img src="https://avatars2.githubusercontent.com/u/88837?s=200&v=4" alt="Saucelabs" width="31" height="31" align="middle">](https://saucelabs.com/)

Expand All @@ -208,6 +222,6 @@ Crossbrowser testing sponsored by [Saucelabs](https://saucelabs.com/)

### Valor Software Can Help

At [Valor Software](https://valor-software.com/) our people are not resources, our people are human beings, helping to create a better world through our efforts and knowledge.
We are here to assist you with your project. We have a wonderful, ever-growing team that is ready and able. If you're looking for someone to guide you and your team
At [Valor Software](https://valor-software.com/) our people are not resources, our people are human beings, helping to create a better world through our efforts and knowledge.
We are here to assist you with your project. We have a wonderful, ever-growing team that is ready and able. If you're looking for someone to guide you and your team
please feel free to reach out to us on our site or at [email protected], we would love to chat.
23 changes: 7 additions & 16 deletions apps/ngx-bootstrap-docs-e2e/project.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{
"name": "ngx-bootstrap-docs-e2e",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/ngx-bootstrap-docs-e2e/src",
"projectType": "application",
"targets": {
"e2e": {
"executor": "@nxkit/playwright:test",
"outputs": [
"{options.outputPath}"
],
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/apps/ngx-bootstrap-docs-e2e/test-results",
"playwrightConfig": "apps/ngx-bootstrap-docs-e2e/playwright.config.ts",
Expand All @@ -24,9 +23,7 @@
},
"debug": {
"builder": "@nxkit/playwright:test",
"outputs": [
"{options.outputPath}"
],
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/apps/ngx-bootstrap-docs-e2e/test-results",
"playwrightConfig": "apps/ngx-bootstrap-docs-e2e/playwright.config.ts",
Expand All @@ -46,19 +43,13 @@
}
},
"lint": {
"executor": "@nx/linter:eslint",
"outputs": [
"{options.outputPath}"
],
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputPath}"],
"options": {
"lintFilePatterns": [
"apps/ngx-bootstrap-docs-e2e/**/*.{js,ts}"
]
"lintFilePatterns": ["apps/ngx-bootstrap-docs-e2e/**/*.{js,ts}"]
}
}
},
"tags": [],
"implicitDependencies": [
"ngx-bootstrap-docs"
]
"implicitDependencies": ["ngx-bootstrap-docs"]
}
34 changes: 14 additions & 20 deletions apps/ngx-bootstrap-docs-e2e/src/full/modals_directive_page_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ describe('Modals demo page testing suite: Directive examples', () => {

const staticModalDemo = modals.exampleDemosArr.directiveStatic;
const btnText = 'Static modal';
const btnX = '×';

it('example contains the button "Static modal"', () => {
modals.isButtonExist(staticModalDemo, btnText);
Expand Down Expand Up @@ -68,12 +67,11 @@ describe('Modals demo page testing suite: Directive examples', () => {
modals.isButtonExist(childModalDemo, btnText);
});

it('when user clicks on the "Open child modal" button then modal is opened from the parent component',
() => {
modals.clickByText(childModalDemo, btnText);
modals.isModalVisible(modals.modalDialog, true, 3);
modals.isChildElemExist(childModalDemo, modals.modalContent);
});
it('when user clicks on the "Open child modal" button then modal is opened from the parent component', () => {
modals.clickByText(childModalDemo, btnText);
modals.isModalVisible(modals.modalDialog, true, 3);
modals.isChildElemExist(childModalDemo, modals.modalContent);
});
});

describe('Nested modals', () => {
Expand Down Expand Up @@ -134,7 +132,6 @@ describe('Modals demo page testing suite: Directive examples', () => {

const eventsModalsDemo = modals.exampleDemosArr.directiveEvents;
const btnText = 'Open a modal';
const btnX = '×';
const eventOnShowFired = 'event onShow is fired';
const eventOnShownFired = 'event onShown is fired';
const eventOnHide = 'event onHide is fired';
Expand Down Expand Up @@ -188,23 +185,20 @@ describe('Modals demo page testing suite: Directive examples', () => {

const autoDemo = modals.exampleDemosArr.directiveAutoShow;
const btnText = 'Render auto-shown modal';
const btnX = '×';

it('example contains the button "Render auto-shown modal"', () => {
modals.isButtonExist(autoDemo, btnText);
});

it(`when user clicks on the "Render auto-shown modal" button, then modal is opened, it appeared in the DOM`,
() => {
modals.clickByText(autoDemo, btnText);
modals.isDirectModalVisible(autoDemo, true);
});
it(`when user clicks on the "Render auto-shown modal" button, then modal is opened, it appeared in the DOM`, () => {
modals.clickByText(autoDemo, btnText);
modals.isDirectModalVisible(autoDemo, true);
});

it(`when user closes the modal then modal is removed from the DOM`,
() => {
modals.clickByText(autoDemo, btnText);
modals.clickCloseBtn(autoDemo);
modals.isModalEnabled(autoDemo, false);
});
it(`when user closes the modal then modal is removed from the DOM`, () => {
modals.clickByText(autoDemo, btnText);
modals.clickCloseBtn(autoDemo);
modals.isModalEnabled(autoDemo, false);
});
});
});
Loading

0 comments on commit ad594eb

Please sign in to comment.