diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 000000000..4f9ac2698 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,16 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR diff --git a/.editorconfig b/.editorconfig index 54e4850b2..0a592d43d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,14 +1,17 @@ -# Editor configuration, see http://editorconfig.org +# Editor configuration, see https://editorconfig.org root = true [*] charset = utf-8 end_of_line = lf -indent_size = 2 indent_style = space +indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true +[*.ts] +quote_type = single + [*.md] max_line_length = off trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index 9725934af..941084510 100644 --- a/.gitignore +++ b/.gitignore @@ -2,14 +2,18 @@ # compiled output /dist -/dist-server /tmp /out-tsc +# Only exists if Bazel was run +/bazel-out # dependencies /node_modules package-lock.json +# profiling files +chrome-profiler-events*.json + # IDEs and editors /.idea .project @@ -25,8 +29,10 @@ package-lock.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json +.history/* # misc +/.angular/cache /.sass-cache /connect.lock /coverage diff --git a/CHANGELOG.md b/CHANGELOG.md index d3a96d6e5..ecd0e9536 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,702 @@ -## [angular](./README.md) version `changelog` +## [CoreUI for Angular](./README.md) version `changelog` + +###### `v2.13.0` + +- chore: update to `Angular 13.3` + +###### dependencies update +- update `@angular/animations` to `^13.3.0` +- update `@angular/cdk` to `^13.3.0` +- update `@angular/common` to `^13.3.0` +- update `@angular/compiler` to `^13.3.0` +- update `@angular/core` to `^13.3.0` +- update `@angular/forms` to `^13.3.0` +- update `@angular/localize` to `^13.3.0` +- update `@angular/platform-browser` to `^13.3.0` +- update `@angular/platform-browser-dynamic` to `^13.3.0` +- update `@angular/router` to `^13.3.0` +- update `@coreui/angular` to `~2.13.0` +- update `@angular-devkit/build-angular` to `^13.3.0` +- update `@angular/cli` to `^13.3.0` +- update `@angular/compiler-cli` to `^13.3.0` +- update `@angular/language-service` to `^13.3.0` +- update `typescript` to `~4.6.2` +- remove: `classlist.js` +- remove: `web-animations-js` + +###### `v2.12.0` + +- chore: update to `Angular 12.2` +- refactor: icons cleanup + +###### dependencies update +- update `@angular/animations` to `^12.2.16` +- update `@angular/cdk` to `^12.2.13` +- update `@angular/common` to `^12.2.16` +- update `@angular/compiler` to `^12.2.16` +- update `@angular/core` to `^12.2.16` +- update `@angular/forms` to `^12.2.16` +- update `@angular/localize` to `^12.2.16` +- update `@angular/platform-browser` to `^12.2.16` +- update `@angular/platform-browser-dynamic` to `^12.2.16` +- update `@angular/router` to `^12.2.16` +- update `@coreui/angular` to `~2.12.0` +- update `zone.js` to `~0.11.4` +- update `@angular-devkit/build-angular` to `^12.2.16` +- update `@angular/cli` to `^12.2.16` +- update `@angular/compiler-cli` to `^12.2.16` +- update `@angular/language-service` to `^12.2.16` +- update `jasmine-spec-reporter` to `~7.0.0` +- update `karma` to `~6.3.17` +- update `typescript` to `~4.3.5` + +###### `v2.11.3` + +- chore: dependencies update + +###### `v2.11.2` + +- chore: update to `Angular 11.2` + +###### dependencies update +- update `@angular/animations` to `^11.2.5` +- update `@angular/cdk` to `^11.2.4 +- update `@angular/common` to `^11.2.5` +- update `@angular/compiler` to `^11.2.5` +- update `@angular/core` to `^11.2.5` +- update `@angular/forms` to `^11.2.5` +- update `@angular/localize` to `^11.2.5` +- update `@angular/platform-browser` to `^11.2.5` +- update `@angular/platform-browser-dynamic` to `^11.2.5` +- update `@angular/router` to `^11.2.5` +- update `@coreui/angular` to `^2.11.2` +- update `core-js` to `^3.9.1` +- update `rxjs` to `^6.6.6` +- update `@angular-devkit/build-angular` to `^0.1102.4` +- update `@angular/cli` to `^11.2.4` +- update `@angular/compiler-cli` to `^11.2.5` +- update `@angular/language-service` to `^11.2.5` +- update `@types/jasmine` to `^3.6.6` +- update `@types/node` to `^14.14.33` +- update `typescript` to `^4.1.5` + +###### `v2.11.1` + +- chore: update to `Angular 11.1` + +###### dependencies update +- update `@angular/animations` to `^11.1.0` +- update `@angular/cdk` to `^11.1.0` +- update `@angular/common` to `^11.1.0` +- update `@angular/compiler` to `^11.1.0` +- update `@angular/core` to `^11.1.0` +- update `@angular/forms` to `^11.1.0` +- update `@angular/localize` to `^11.1.0` +- update `@angular/platform-browser` to `^11.1.0` +- update `@angular/platform-browser-dynamic` to `^11.1.0` +- update `@angular/router` to `^11.1.0` +- update `@coreui/angular` to `~2.11.1` +- update `bootstrap` to `^4.6.0` +- update `core-js` to `^3.8.3` +- update `@angular-devkit/build-angular` to `^0.1101.1` +- update `@angular/cli` to `^11.1.1` +- update `@angular/compiler-cli` to `^11.1.0` +- update `@angular/language-service` to `^11.1.0` +- update `@types/jasmine` to `^3.6.3` +- update `@types/node` to `^14.14.22` + +###### `v2.11.0` + +- chore: update to `Angular 11` and `TypeScript 4` + - [https://update.angular.io/](https://update.angular.io/?v=10.2-11.0) + - [https://v11.angular.io/guide/updating-to-version-11](https://v11.angular.io/guide/updating-to-version-11) + - [TypeScript: Documentation - TypeScript 4](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html) + - remove deprecated support for IE 9, 10, and IE mobile + +###### dependencies update +- update `@angular/animations` to `^11.0.9` +- update `@angular/cdk` to `^11.0.4` +- update `@angular/common` to `^11.0.9` +- update `@angular/compiler` to `^11.0.9` +- update `@angular/core` to `^11.0.9` +- update `@angular/forms` to `^11.0.9` +- update `@angular/localize` to `^11.0.9` +- update `@angular/platform-browser` to `^11.0.9` +- update `@angular/platform-browser-dynamic` to `^11.0.9` +- update `@angular/router` to `^11.0.9` +- update `@coreui/angular` to `~2.11.0` +- update `@angular-devkit/build-angular` to `^0.1100.7` +- update `@angular/cli` to `^11.0.7` +- update `@angular/compiler-cli` to `^11.0.9` +- update `@angular/language-service` to `^11.0.9` +- update `@types/jasmine` to `~3.6.0` +- update `codelyzer` to `^6.0.0` +- update `karma-coverage` to `~2.0.3` +- update `typescript` to `~4.0.5` + +###### `v2.10.0` + +- chore: update to `Angular 10` and `TypeScript 3.9` + - [https://update.angular.io/](https://update.angular.io/?v=9.1-10.2) + - [https://v10.angular.io/guide/updating-to-version-10](https://v10.angular.io/guide/updating-to-version-10) + - [TypeScript: Documentation - TypeScript 3.9](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html) + + +- test: deprecate `async()` in favour of `waitForAsync()` + +###### dependencies update +- update `@angular/animations` to `^10.2.4` +- update `@angular/cdk` to `^10.2.7` +- update `@angular/common` to `^10.2.4` +- update `@angular/compiler` to `^10.2.4` +- update `@angular/core` to `^10.2.4` +- update `@angular/forms` to `^10.2.4` +- update `@angular/localize` to `^10.2.4` +- update `@angular/platform-browser` to `^10.2.4` +- update `@angular/platform-browser-dynamic` to `^10.2.4` +- update `@angular/router` to `^10.2.4` +- update `@coreui/angular` to `~2.10.0` +- update `classlist.js` to `^1.1.20150312` +- update `ng2-charts` to `^2.4.2` +- update `ngx-bootstrap` to `^6.2.0` +- update `ngx-perfect-scrollbar` to `^10.1.0` +- update `tslib` to `^2.0.0` +- update `@angular-devkit/build-angular` to `^0.1002.1` +- update `@angular/cli` to `^10.2.1` +- update `@angular/compiler-cli` to `^10.2.4` +- update `@angular/language-service` to `^10.2.4` +- update `jasmine-core` to `~3.6.0` +- update `jasmine-spec-reporter` to `~5.0.0` +- update `karma` to `~5.2.0` +- update `karma-chrome-launcher` to `~3.1.0` +- update `karma-coverage-istanbul-reporter` to `~3.0.2` +- update `karma-jasmine` to `~4.0.0` +- update `karma-jasmine-html-reporter` to `^1.5.0` +- update `protractor` to `~7.0.0` +- update `tslint` to `~6.1.0` +- update `typescript` to `^3.9.7` + + +###### `v2.9.6` +- feat(icons): update to @coreui/icons v2 and @coreui/icons-angular + +###### dependencies update +- update `@angular/animations` to `^9.1.13` +- update `@angular/cdk` to `^9.2.4` +- update `@angular/common` to `^9.1.13` +- update `@angular/compiler` to `^9.1.13` +- update `@angular/core` to `^9.1.13` +- update `@angular/forms` to `^9.1.13` +- update `@angular/platform-browser` to `^9.1.13` +- update `@angular/platform-browser-dynamic` to `^9.1.13` +- update `@angular/router` to `^9.1.13` +- update `@coreui/angular`: `~2.9.6` +- update `@coreui/icons` to `^2.0.0-rc.0` +- update `@coreui/icons-angular` to `1.0.0-alpha.3` +- update `bootstrap` to `^4.5.3` +- update `chart.js` to `^2.9.4` +- update `core-js` to `^3.8.2` +- update `ng2-charts` to `~2.3.3` +- update `ngx-bootstrap` to `^5.6.2` +- update `rxjs` to `^6.6.3` +- update `simple-line-icons` to `^2.5.5` +- update `tslib` to `^1.14.1` +- update `@angular-devkit/build-angular` to `^0.901.13` +- update `@angular/cli` to `^9.1.13` +- update `@angular/compiler-cli` to `^9.1.13` +- update `@angular/language-service` to `^9.1.13` +- update `@types/jasmine` to `^3.6.2` +- update `@types/node` to `^14.14.20` +- update `karma` to `^5.2.3` + +###### `v2.9.5` +- fix(simple-line-icons): Can't resolve simple-line-icons.css - fixes #196 + +###### dependencies update +- update `simple-line-icons` to `^2.5.2` +- update `@angular-devkit/build-angular` to `^0.901.12` +- update `@angular/cli` to `^9.1.12` +- update `@types/jasmine` to `^3.5.12` +- update `jasmine-core` to `^3.6.0` +- update `jasmine-spec-reporter` to `^5.0.2` +- update `karma` to `^5.1.1` +- update `karma-coverage-istanbul-reporter` to `^3.0.3` +- update `tslint` to `^6.1.3` + +###### `v2.9.4` +- refactor(polyfills): update core-js polyfills imports + +###### dependencies update +- update `@angular/animations` to `^9.1.12` +- update `@angular/common` to `^9.1.12` +- update `@angular/compiler` to `^9.1.12` +- update `@angular/core` to `^9.1.12` +- update `@angular/forms` to `^9.1.12` +- update `@angular/platform-browser` to `^9.1.12` +- update `@angular/platform-browser-dynamic` to `^9.1.12` +- update `@angular/router` to `^9.1.12` +- update `@coreui/angular` to `~2.9.4` +- update `bootstrap` to `^4.5.0` +- update `core-js` to `^3.6.5` +- update `flag-icon-css` to `^3.5.0` +- update `moment` to `^2.27.0` +- update `mutationobserver-shim` to `^0.3.7` +- update `ng2-charts` to `^2.3.2` +- update `rxjs` to `^6.6.0` +- update `tslib` to `^1.13.0` +- update `@angular-devkit/build-angular` to `^0.901.11` +- update `@angular/cli` to `^9.1.11` +- update `@angular/compiler-cli` to `^9.1.12` +- update `@angular/language-service` to `^9.1.12` +- update `@types/jasmine` to `^3.5.11` +- update `@types/node` to `^13.13.14` +- update `karma` to `^5.1.0` +- update `karma-jasmine` to `^3.3.1` +- update `karma-jasmine-html-reporter` to `^1.5.4` +- update `protractor` to `^7.0.0` +- update `ts-node` to `^8.10.2` + +###### `v2.9.2` +- fix(navbars): cannot find module `ngx-bootstrap` + +###### dependencies update +- update `@angular/animations` to `^9.1.1` +- update `@angular/common` to `^9.1.1` +- update `@angular/compiler` to `^9.1.1` +- update `@angular/core` to `^9.1.1` +- update `@angular/forms` to `^9.1.1` +- update `@angular/platform-browser` to `^9.1.1` +- update `@angular/platform-browser-dynamic` to `^9.1.1` +- update `@angular/router` to `^9.1.1` +- update `@coreui/angular` to `^2.9.2` +- update `bootstrap` to `^4.4.1` +- update `chart.js` to `^2.9.3` +- update `mutationobserver-shim` to `^0.3.5` +- update `ngx-bootstrap` to `^5.6.1` +- update `ngx-perfect-scrollbar` to `^9.0.0` +- update `rxjs` to `^6.5.5` +- update `tslib` to `^1.11.1` +- update `zone.js` to `~0.10.3` +- update `@angular-devkit/build-angular` to `~0.901.1` +- update `@angular/cli` to `^9.1.1` +- update `@angular/compiler-cli` to `^9.1.1` +- update `@angular/language-service` to `^9.1.1` +- update `@types/jasmine` to `^3.5.10` +- update `@types/node` to `^13.11.1` +- update `codelyzer` to `^5.2.2` +- update `jasmine-spec-reporter` to `^5.0.1` +- update `karma` to `^5.0.1` +- update `karma-coverage-istanbul-reporter` to `^2.1.1` +- update `karma-jasmine` to `^3.1.1` +- update `karma-jasmine-html-reporter` to `^1.5.3` +- update `protractor` to `^5.4.3` +- update `ts-node` to `^8.8.2` +- update `tslint` to `^6.1.1` + +###### `v2.9.0` +- chore: update to `Angular 9.0.0` + - [https://update.angular.io/](https://update.angular.io/#8.0:9.0) + - [https://angular.io/guide/updating-to-version-9](https://angular.io/guide/updating-to-version-9) + - [https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived](https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived-23c97b63cfa3) + +- chore: update to `TypeScript 3.7` + - [https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html) + - [https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-6.html](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-6.html) + +###### dependencies update +- update `@angular/animations` to `^9.0.0` +- update `@angular/common` to `^9.0.0` +- update `@angular/compiler` to `^9.0.0` +- update `@angular/core` to `^9.0.0` +- update `@angular/forms` to `^9.0.0` +- update `@angular/platform-browser` to `^9.0.0` +- update `@angular/platform-browser-dynamic` to `^9.0.0` +- update `@angular/router` to `^9.0.0` +- update `@coreui/angular` to `^2.9.0` +- update `flag-icon-css` to `^3.4.6` +- update `@angular-devkit/build-angular` to `^0.900.1` +- update `@angular/cli` to `^9.0.1` +- update `@angular/compiler-cli` to `^9.0.0` +- update `@angular/language-service` to `^9.0.0` +- update `@types/jasmine` to `^3.5.3` +- update `karma-jasmine-html-reporter` to `^1.5.2` +- update `typescript` to `~3.7.5` + +###### `v2.7.5` +- fix(carousels): move to picsum.photos + +###### dependencies update +- update `@coreui/angular` to `^2.7.5` +- update `@angular/animations` to `^9.0.0-rc.12` +- update `@angular/common` to `^9.0.0-rc.12` +- update `@angular/compiler` to `^9.0.0-rc.12` +- update `@angular/core` to `^9.0.0-rc.12` +- update `@angular/forms` to `^9.0.0-rc.12` +- update `@angular/platform-browser` to `^9.0.0-rc.12` +- update `@angular/platform-browser-dynamic` to `^9.0.0-rc.12` +- update `@angular/router` to `^9.0.0-rc.12` +- update `@angular-devkit/build-angular` to `^0.900.0-rc.12` +- update `@angular/cli` to `^9.0.0-rc.12` +- update `@angular/compiler-cli` to `^9.0.0-rc.12` +- update `@angular/language-service` to `^9.0.0-rc.12` + +###### `v2.7.2` +- feat: add missing Navbars example - thanks @EliasDerHai + +###### dependencies update +- update `@angular/animations` to `^9.0.0-rc.7` +- update `@angular/common` to `^9.0.0-rc.7` +- update `@angular/compiler` to `^9.0.0-rc.7` +- update `@angular/core` to `^9.0.0-rc.7` +- update `@angular/forms` to `^9.0.0-rc.7` +- update `@angular/platform-browser` to `^9.0.0-rc.7` +- update `@angular/platform-browser-dynamic` to `^9.0.0-rc.7` +- update `@angular/router` to `^9.0.0-rc.7` +- update `@coreui/angular` to `^2.7.2` +- update `core-js` to `^2.6.11` +- update `@angular-devkit/build-angular` to `^0.900.0-rc.7` +- update `@angular/cli` to `^9.0.0-rc.7` +- update `@angular/compiler-cli` to `^9.0.0-rc.7` +- update `@angular/language-service` to `^9.0.0-rc.7` +- update `codelyzer` to `^5.2.1` + +###### `v2.7.0` for Angular 9 +- chore: upgrade to Angular 9 - see also: + - `https://next.angular.io/guide/updating-to-version-9` + - `https://update.angular.io/#8.0:9.0` + +###### dependencies update +- update `@coreui/angular` to `^2.7.0` +- update `@angular/animations` to `^9.0.0-rc.0` +- update `@angular/common` to `^9.0.0-rc.0` +- update `@angular/compiler` to `^9.0.0-rc.0` +- update `@angular/core` to `^9.0.0-rc.0` +- update `@angular/forms` to `^9.0.0-rc.0` +- update `@angular/platform-browser` to `^9.0.0-rc.0` +- update `@angular/platform-browser-dynamic` to `^9.0.0-rc.0` +- update `@angular/router` to `^9.0.0-rc.0` +- update `zone.js` to `~0.10.2` +- update `@angular-devkit/build-angular` to `~0.900.0-rc.0` +- update `@angular/cli` to `^9.0.0-rc.0` +- update `@angular/compiler-cli` to `^9.0.0-rc.0` +- update `@angular/language-service` to `^9.0.0-rc.0` +- update `@types/jasmine` to `^3.4.5` +- update `@types/node` to `^12.11.1` +- update `codelyzer` to `^5.1.2` +- update `typescript` to `~3.6.4` +- update `chart.js` to `^2.9.2` + +###### `v2.5.3` +- fix(polyfills): add optional settings for IE10 issues +- refactor(_nav.ts): INavData moved from _nav.ts to import from @coreui/angular +- refactor(default-layout): drop MutationObserver, add minimizedChange event +- fix(dashboard): `scales.[x/y]Axes.barPercentage` is deprecated. Please use `dataset.barPercentage` instead +- fix(widgets): `scales.[x/y]Axes.barPercentage` is deprecated. Please use `dataset.barPercentage` instead +- test: add e2e test bed with some tests + +###### dependencies update +- update `@angular/animations` to `^8.2.10` +- update `@angular/common` to `^8.2.12` +- update `@angular/compiler` to `^8.2.12` +- update `@angular/core` to `^8.2.12` +- update `@angular/forms` to `^8.2.12` +- update `@angular/platform-browser` to `^8.2.12` +- update `@angular/platform-browser-dynamic` to `^8.2.12` +- update `@angular/router` to `^8.2.12` +- update `@coreui/angular` to `^2.6.3` +- update `@coreui/coreui` to `^2.1.16` +- update `chart.js` to `^2.9.1` +- update `core-js` to `^2.6.10` +- update `flag-icon-css` to `^3.4.5` +- update `ngx-bootstrap` to `^5.2.0` +- update `rxjs` to `^6.5.3` +- update `web-animations-js` to `^2.3.2` +- update `zone.js` to `^0.10.2` +- update `@angular-devkit/build-angular` to `^0.803.15` +- update `@angular/cli` to `^8.3.15` +- update `@angular/compiler-cli` to `^8.2.12` +- update `@angular/language-service` to `^8.2.12` +- update `@types/jasmine` to `^3.4.4` +- update `@types/jasminewd2` to `^2.0.8` +- update `@types/node` to `^12.7.12` +- update `codelyzer` to `^5.2.0` +- update `jasmine-core` to `^3.5.0` +- update `karma` to `^4.4.1` +- update `karma-chrome-launcher` to `^3.1.0` +- update `karma-coverage-istanbul-reporter` to `^2.1.0` +- update `ts-node` to `^8.4.1` +- update `tslint` to `^5.20.0` + +###### `v2.5.2` +- fix(cards): card with header actions +- fix(carousels): images and intervals cleanup + +###### dependencies update +- update `@angular/animations` to `^8.0.2` +- update `@angular/common` to `^8.0.2` +- update `@angular/compiler` to `^8.0.2` +- update `@angular/core` to `^8.0.2` +- update `@angular/forms` to `^8.0.2` +- update `@angular/platform-browser` to `^8.0.2` +- update `@angular/platform-browser-dynamic` to `^8.0.2` +- update `@angular/router` to `^8.0.2` +- update `@coreui/angular` to `^2.5.2` +- update `@coreui/coreui` to `^2.1.12` +- update `@angular-devkit/build-angular` to `^0.800.3` +- update `@angular/cli` to `^8.0.3` +- update `@angular/compiler-cli` to `^8.0.2` +- update `@angular/language-service` to `^8.0.2` +- update `@types/node` to `^12.0.8` +- update `ts-node` to `^8.3.0` + +###### `v2.5.1` +###### dependencies update +- update `@coreui/angular` to `^2.5.1` +- update `ngx-bootstrap` to `^5.0.0` +- update `ngx-perfect-scrollbar` to `^8.0.0` +- update `tslib` to `^1.10.0` +- update `@angular-devkit/build-angular` to `^0.800.2` +- update `@angular/cli` to `^8.0.2` +- update `@types/node` to `^12.0.7` + +###### `v2.5.0` +- refactor(app.routing): lazy loading via dynamic import() +- refactor(modals): `ViewChild` second parameter +- refactor(tsconfig): `module: esnext` and `target: es5` +- chore: update `ng2-charts@2.3.0` imports +- chore: update `ngx-bootstrap@4.2.0` +- fix(collapse): `No provider for AnimationBuilder` add import `BrowserAnimationsModule` to app.module +- fix(polyfill): import `web-animations-js` +- chore(tslint): remove depracated/undefined rules +- chore(tsconfig): set "target" to "es5" / IE11 compatible + +###### breaking changes +- `Angular v8.0.0` (see https://update.angular.io/) +- `@ViewChild` second parameter required +- `BrowserAnimationsModule` required +- routing: lazy loading via dynamic import() + +###### dependencies update +- update: Angular to `v8.0.0` +- update: `@angular/animations` to `^8.0.0` +- update: `@angular/common` to `^8.0.0` +- update: `@angular/compiler` to `^8.0.0` +- update: `@angular/core` to `^8.0.0` +- update: `@angular/forms` to `^8.0.0` +- update: `@angular/http` to `^8.0.0-beta.10` +- update: `@angular/platform-browser` to `^8.0.0` +- update: `@angular/platform-browser-dynamic` to `^8.0.0` +- update: `@angular/router` to `^8.0.0` +- update: `@coreui/angular` to `^2.5.0` +- update: `@coreui/coreui` to `^2.1.11` +- update: `@coreui/coreui-plugin-chartjs-custom-tooltips` to `^1.3.1` +- update: `core-js` to `^2.6.9` +- update: `ng2-charts` to `^2.3.0` +- update: `ngx-boottsrap` to `^4.2.0` +- update: `rxjs` to `^6.5.2` +- update: `tsickle` to `^0.35.0` +- update: `tslib` to `^1.9.3` +- update: `zone.js` to `^0.9.1` +- update: `@angular-devkit/build-angular` to `^0.800.1` +- update: `@angular/cli` to `^8.0.1` +- update: `@angular/compiler-cli` to `^8.0.0` +- update: `@angular/language-service` to `^8.0.0` +- update: `@types/node` to `^12.0.4` +- update: `codelyzer` to `^5.1.0` +- update: `jasmine-core` to `^3.4.0` +- update: `karma` to `^4.1.0` +- update: `karma-jasmine-html-reporter` to `^1.4.2` +- update: `ts-node` to `^8.2.0` +- update: `tslint` to `^5.17.0` +- update: `typescript` to `~3.4.5` + +###### `v2.4.5` +- refactor(modals): add `@ViewChild` +- update: `@coreui/angular` to `^2.4.5` +- update: `@coreui/coreui` to `^2.1.8` +- update: `@angular/animations` to `^7.2.10` +- update: `@angular/common` to `^7.2.10` +- update: `@angular/compiler` to `^7.2.10` +- update: `@angular/core` to `^7.2.10` +- update: `@angular/forms` to `^7.2.10` +- update: `@angular/http` to `^7.2.10` +- update: `@angular/platform-browser` to `^7.2.10` +- update: `@angular/platform-browser-dynamic` to `^7.2.10` +- update: `@angular/router` to `^7.2.10` +- update: `chart.js` to `^2.8.0` +- update: `flag-icon-css` to `^3.3.0` +- update: `@angular-devkit/build-angular` to `^0.13.6` +- update: `@angular/cli` to `^7.3.6` +- update: `@angular/compiler-cli` to `^7.2.10` +- update: `@angular/language-service` to `^7.2.10` +- update: `@types/jasmine` to `^3.3.12` +- update: `@types/node` to `^11.11.4` +- update: `karma` to `^4.0.1` +- update: `ts-node` to `^8.0.3` +- update: `tslint` to `^5.14.0` + +###### `v2.4.3` +- update: `@coreui/angular` to `^2.4.3` +- update: `@coreui/coreui` to `^2.1.7` +- update: `@angular/animations` to `^7.2.6` +- update: `@angular/common` to `^7.2.6` +- update: `@angular/compiler` to `^7.2.6` +- update: `@angular/core` to `^7.2.6` +- update: `@angular/forms` to `^7.2.6` +- update: `@angular/http` to `^7.2.6` +- update: `@angular/platform-browser` to `^7.2.6` +- update: `@angular/platform-browser-dynamic` to `^7.2.6` +- update: `@angular/router` to `^7.2.6` +- update: `@angular-devkit/build-angular` to `^0.13.3` +- update: `@angular/cli` to `^7.3.3` +- update: `@angular/compiler-cli` to `^7.2.6` +- update: `@angular/language-service` to `^7.2.6` +- update: `ngx-perfect-scrollbar` to `^7.2.1` + +###### `v2.4.0` +- fix(sidebar): navItems reassignment bug #126, #42 +- refactor(default-layout): use `cui-breadcrumb` instead of deprecated `app-breadcrumb` (migrate when ready) +- fix(polyfills.ts): ie issues add `core-js/es7/array` and `core-js/es7/object` +- update: `@angular/animations` to `^7.2.5` +- update: `@angular/common` to `^7.2.5` +- update: `@angular/compiler` to `^7.2.5` +- update: `@angular/core` to `^7.2.5` +- update: `@angular/forms` to `^7.2.5` +- update: `@angular/http` to `^7.2.5` +- update: `@angular/platform-browser` to `^7.2.5` +- update: `@angular/platform-browser-dynamic` to `^7.2.5` +- update: `@angular/router` to `^7.2.5` +- update: `@coreui/angular` to `^2.4.1` +- update: `bootstrap` to `^4.3.1` +- update: `core-js` to `^2.6.5` +- update: `moment` to `^2.24.0` +- update: `ngx-bootstrap` to `^3.2.0` +- update: `rxjs` to `^6.4.0` +- update: `tsickle` to `^0.34.3` +- update: `zone.js` to `^0.8.29` +- update: `@angular-devkit/build-angular` to `^0.13.2` +- update: `@angular/cli` to `^7.3.2` +- update: `@angular/compiler-cli` to `^7.2.5` +- update: `@angular/language-service` to `^7.2.5` +- update: `@types/jasmine` to `^3.3.9` +- update: `@types/node` to `^10.12.26` +- update: `karma` to `^4.0.0` +- update: `karma-coverage-istanbul-reporter` to `^2.0.5` + +###### `v2.2.4` +- refactor(colors): use 'DOCUMENT' of '@angular/common' +- refactor(default-layout): use 'DOCUMENT' of '@angular/common' #133 - thanks @damingerdai +- refactor(main): add compiler option `preserveWhitespaces` #128 - thanks @ctaleck +- refactor(routing): added URL 404 default #125 - thanks @slam24 +- refactor(dropdowns): remove temp css fix +- refactor(_nav.ts): NavData interface add semicolons +- update: `@angular/animations` to `^7.2.1` +- update: `@angular/common` to `^7.2.1` +- update: `@angular/compiler` to `^7.2.1` +- update: `@angular/core` to `^7.2.1` +- update: `@angular/forms` to `^7.2.1` +- update: `@angular/http` to `^7.2.1` +- update: `@angular/platform-browser` to `^7.2.1` +- update: `@angular/platform-browser-dynamic` to `^7.2.1` +- update: `@angular/router` to `^7.2.1` +- update: `@coreui/angular` to `^2.2.4` +- update: `mutationobserver-shim` to `^0.3.3` +- update: `zone.js` to `^0.8.28` +- update: `@angular-devkit/build-angular` to `^0.12.2` +- update: `@angular/cli` to `^7.2.2` +- update: `@angular/compiler-cli` to `^7.2.1` +- update: `@angular/language-service` to `^7.2.1` +- update: `@types/jasmine` to `^3.3.7` +- update: `typescript` to `~3.2.4` + +###### `v2.2.3` +- refactor(_nav.ts): add NavData interface +- update: `bootstrap` to `^4.2.1` +- update: `@coreui/angular` to `^2.2.3` +- update: `@coreui/coreui` to `^2.1.6` +- update: `@angular/animations` to `^7.2.0` +- update: `@angular/common` to `^7.2.0` +- update: `@angular/compiler` to `^7.2.0` +- update: `@angular/core` to `^7.2.0` +- update: `@angular/forms` to `^7.2.0` +- update: `@angular/http` to `^7.2.0` +- update: `@angular/platform-browser` to `^7.2.0` +- update: `@angular/platform-browser-dynamic` to `^7.2.0` +- update: `@angular/router` to `^7.2.0` +- update: `core-js` to `^2.6.2` +- update: `moment` to `^2.23.0` +- update: `ngx-bootstrap` to `^3.1.4` +- update: `ngx-perfect-scrollbar` to `^7.2.0` +- update: `zone.js` to `^0.8.27` +- update: `@angular-devkit/build-angular` to `^0.12.1` +- update: `@angular/cli` to `^7.2.1` +- update: `@angular/compiler-cli` to `^7.2.0` +- update: `@angular/language-service` to `^7.2.0` +- update: `@types/jasmine` to `^3.3.5` +- update: `@types/node` to `^10.12.18` +- update: `karma` to `^3.1.4` +- update: `protractor` to `^5.4.2` +- update: `tslint` to `^5.12.1` + +###### `v2.2.1` +- fix(routes): add default routes +- fix(colors): class order for `bg-blue` +- refactor(dafault-layout): observer add `attributeFilter` prop & `disconnect()` +- update: `@coreui/angular` to `2.2.1` +- update: `core-js` to `2.6.0` +- update: `@types/node` to `10.12.12` +- update: `@angular/cli` to `7.1.1` +- update: `@angular-devkit/build-angular` to `0.11.1` +- update: `@types/jasmine` to `3.3.1` + +###### `v2.2.0` +- chore: update Angular to `^7.1.0` see: https://update.angular.io/ +- update: `@angular/animations` to `^7.1.1` +- update: `@angular/common` to `^7.1.1` +- update: `@angular/compiler` to `^7.1.1` +- update: `@angular/core` to `^7.1.1` +- update: `@angular/forms` to `^7.1.1` +- update: `@angular/http` to `^7.1.1` +- update: `@angular/platform-browser` to `^7.1.1` +- update: `@angular/platform-browser-dynamic` to `^7.1.1` +- update: `@angular/router` to `^7.1.1` +- update: `@coreui/angular` to `^2.2.0` +- update: `ngx-perfect-scrollbar` to `^7.1.0` +- update: `tslib` to `^1.9.0` +- update: `@angular-devkit/build-angular` to `~0.11.0` +- update: `@angular/cli` to `^7.1.0` +- update: `@angular/compiler-cli` to `^7.1.1` +- update: `@angular/language-service` to `^7.1.1` +- update: `@types/jasmine` to `^3.3.0` +- update: `karma-jasmine` to `^2.0.1` +- update: `typescript` to `3.1.x` + +###### `v2.1.0` +- feat: sidebar nav-link `attributes` - optional JS object with valid JS API naming: + - valid attributes: `rel`, `target`, `hidden`, `disabled`, etc... + - item example (`_nav.ts`): +``` +... +{ + name: 'Try CoreUI PRO', + url: 'https://coreui.io/pro/react/', + icon: 'cui-layers icons', + variant: 'danger', + attributes: { target: '_blank', rel: "noopener" }, +}, +... +``` +- update: `@coreui/angular` to `2.1.0` +- update: `@coreui/coreui` to `^2.1.3` +- update: `ngx-bootstrap` to `^3.1.2` +- update: `@angular/cli` to `^6.2.8` +- update: `@types/jasmine` to `^2.8.12` +- update: `@types/jasminewd2` to `^2.0.6` +- update: `@types/node` to `^10.12.11` +- update: `jasmine-core` to `^3.3.0` +- update: `karma` to `^3.1.3` +- update: `karma-jasmine-html-reporter` to `^1.4.0` + ###### `v2.0.1` - refactor(modals): buttons spacing @@ -39,7 +737,7 @@ - fix(forms): autocomplete - fix(login): form, autocomplete - fix(register): form, autocomplete -- update: `@types/node` to `10.7.0`",` +- update: `@types/node` to `10.7.0` - update: `codelyzer` to `4.4.4` - update: `karma-jasmine-html-reporter` to `1.3.0` - update: `typescript` to `2.9.2` @@ -58,7 +756,7 @@ - update: `codelyzer` to `4.4.3` - update: `jasmine-core` to `3.2.0` - update: `karma` to `3.0.0` -- update: `protractor": "5.4.0` +- update: `protractor` to `5.4.0` - update: `ts-node` to `7.0.1` - update: `tslint` to `5.11.0` diff --git a/LICENSE b/LICENSE index 0e8afdb39..b9c1de91a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 creativeLabs Łukasz Holeczek. +Copyright (c) 2017-2022 creativeLabs Łukasz Holeczek. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index fe661c9ed..4040c1d62 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,24 @@ + +[![npm package][npm-coreui-angular-badge-v2]][npm-coreui-angular] +[![npm package][npm-coreui-angular-badge-latest]][npm-coreui-angular] +[![NPM downloads][npm-coreui-angular-download]][npm-coreui-angular] +[](https://github.com/coreui/coreui) +[![npm package][npm-coreui-badge-v2]][npm-coreui] +[![npm package][npm-coreui-badge]][npm-coreui] +[![NPM downloads][npm-coreui-download]][npm-coreui] + + +[npm-coreui-angular]: https://www.npmjs.com/package/@coreui/angular +[npm-coreui-angular-badge-v2]: https://img.shields.io/npm/v/@coreui/angular/v2-lts?style=flat-square&color=red +[npm-coreui-angular-badge-latest]: https://img.shields.io/npm/v/@coreui/angular/latest?style=flat-square&color=red +[npm-coreui-angular-badge-next]: https://img.shields.io/npm/v/@coreui/angular/next?style=flat-square&color=red +[npm-coreui-angular-download]: https://img.shields.io/npm/dm/@coreui/angular.svg?style=flat-square +[npm-coreui-angular-next]: https://img.shields.io/npm/v/@coreui/angular/next?style=flat-square +[npm-coreui]: https://www.npmjs.com/package/@coreui/coreui +[npm-coreui-badge]: https://img.shields.io/npm/v/@coreui/coreui/latest?style=flat-square +[npm-coreui-badge-v2]: https://img.shields.io/npm/v/@coreui/coreui/v2-lts?style=flat-square +[npm-coreui-download]: https://img.shields.io/npm/dm/@coreui/coreui.svg?style=flat-square + # CoreUI Free Angular 2+ Admin Template [](https://twitter.com/intent/tweet?text=CoreUI%20-%20Free%20Bootstrap%204%20Admin%20Template%20&url=https://coreui.io&hashtags=bootstrap,admin,template,dashboard,panel,free,angular,react,vue) Please help us on [Product Hunt](https://www.producthunt.com/posts/coreui-open-source-bootstrap-4-admin-template-with-angular-2-react-js-vue-js-support) and [Designer News](https://www.designernews.co/stories/81127). Thanks in advance! @@ -6,51 +27,72 @@ Curious why I decided to create CoreUI? Please read this article: [Jack of all t CoreUI is an Open Source Bootstrap Admin Template. But CoreUI is not just another Admin Template. It goes way beyond hitherto admin templates thanks to transparent code and file structure. And if that's not enough, let’s just add that CoreUI consists bunch of unique features and over 1000 high quality icons. -CoreUI is based on Bootstrap 4 and offers 6 versions: [HTML5 AJAX](https://github.com/coreui/free-bootstrap-admin-template-ajax), [HTML5](https://github.com/coreui/free-angular-admin-template), [Angular 2+](https://github.com/coreui/free-angular-admin-template), [React.js](https://github.com/coreui/free-react-admin-template) & [Vue.js](https://github.com/coreui/free-vue-admin-template), [.NET Core 2](https://github.com/coreui/free-dotnet-admin-template). +CoreUI is based on Bootstrap 4 and offers 4 versions: +[HTML5](https://github.com/coreui/coreui-free-bootstrap-admin-template), +[Angular 2+](https://github.com/coreui/coreui-free-angular-admin-template), +[React.js](https://github.com/coreui/coreui-free-react-admin-template), +[Vue.js](https://github.com/coreui/coreui-free-vue-admin-template). CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all! ## Table of Contents -* [Versions](#versions) -* [CoreUI Pro](#coreui-pro) -* [Admin Templates built on top of CoreUI Pro](#admin-templates-built-on-top-of-coreui-pro) -* [Installation](#installation) -* [Usage](#usage) -* [What's included](#whats-included) -* [Documentation](#documentation) -* [Contributing](#contributing) -* [Versioning](#versioning) -* [Creators](#creators) -* [Community](#community) -* [Community Projects](#community-projects) -* [License](#license) -* [Support CoreUI Development](#support-coreui-development) +- [CoreUI Free Angular 2+ Admin Template ](#coreui-free-angular-2-admin-template-tweethttpstwittercomintenttweettextcoreui20-20free20bootstrap20420admin20template20urlhttpscoreuiiohashtagsbootstrapadmintemplatedashboardpanelfreeangularreactvue) + - [Table of Contents](#table-of-contents) + - [Versions](#versions) + - [CoreUI Pro](#coreui-pro) + - [Admin Templates built on top of CoreUI Pro](#admin-templates-built-on-top-of-coreui-pro) + - [Prerequisites](#prerequisites) + - [Node.js](#nodejs) + - [Angular CLI](#angular-cli) + - [Update to Angular 13](#update-to-angular-13) + - [Installation](#installation) + - [Clone repo](#clone-repo) + - [Usage](#usage) + - [What's included](#whats-included) + - [Documentation](#documentation) + - [Contributing](#contributing) + - [Versioning](#versioning) + - [Creators](#creators) + - [Community](#community) + - [Community Projects](#community-projects) + - [Copyright and license](#copyright-and-license) + - [Support CoreUI Development](#support-coreui-development) ## Versions CoreUI is built on top of Bootstrap 4 and supports popular frameworks. * [CoreUI Free Bootstrap Admin Template](https://github.com/coreui/coreui-free-bootstrap-admin-template) -* [CoreUI Free Bootstrap Admin Template (Ajax)](https://github.com/coreui/coreui-free-bootstrap-admin-template-ajax) * [CoreUI Free Angular 2+ Admin Template](https://github.com/coreui/coreui-free-angular-admin-template) -* 🚧 CoreUI Free .NET Core 2 Admin Template (Available Soon) * [CoreUI Free React.js Admin Template](https://github.com/coreui/coreui-free-react-admin-template) * [CoreUI Free Vue.js Admin Template](https://github.com/coreui/coreui-free-vue-admin-template) ## CoreUI Pro * 💪 [CoreUI Pro Bootstrap Admin Template](https://coreui.io/pro/) -* 💪 [CoreUI Pro Bootstrap Admin Template (Ajax)](https://coreui.io/pro/) * 💪 [CoreUI Pro Angular Admin Template](https://coreui.io/pro/angular) * 💪 [CoreUI Pro React Admin Template](https://coreui.io/pro/react) * 💪 [CoreUI Pro Vue Admin Template](https://coreui.io/pro/vue) -## Admin Templates built on top of CoreUI Pro +#### Prerequisites +Before you begin, make sure your development environment includes `Node.js®` and an `npm` package manager. + +###### Node.js +Angular 13 requires `Node.js` version 12.20 or later. + +- To check your version, run `node -v` in a terminal/console window. +- To get `Node.js`, go to [nodejs.org](https://nodejs.org/). + +###### Angular CLI +Install the Angular CLI globally using a terminal/console window. +```bash +npm install -g @angular/cli +``` -| CoreUI Pro | Prime | Root | Alba | Leaf | -| --- | --- | --- | --- | --- | -| [](https://coreui.io/pro/angular/) | [](https://genesisui.com/admin-templates/angular/prime/?support=1) | [](https://genesisui.com/admin-templates/angular/root/?support=1) | [](https://genesisui.com/admin-templates/angular/alba/?support=1) | [](https://genesisui.com/admin-templates/angular/leaf/?support=1) +##### Update to Angular 13 +Angular 13 requires `Node.js` version 12.20 or newer +Update guide - see: [https://update.angular.io](https://update.angular.io) ## Installation @@ -109,7 +151,7 @@ Editor preferences are available in the [editor config](https://github.com/coreu ## Versioning -For transparency into our release cycle and in striving to maintain backward compatibility,CoreUI Free Admin Template is maintained under [the Semantic Versioning guidelines](http://semver.org/). +For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI Free Admin Template is maintained under [the Semantic Versioning guidelines](http://semver.org/). See [the Releases section of our project](https://github.com/coreui/coreui-free-angular-admin-template/releases) for changelogs for each release version. @@ -129,7 +171,7 @@ See [the Releases section of our project](https://github.com/coreui/coreui-free- Get updates on CoreUI's development and chat with the project maintainers and community members. - Follow [@core_ui on Twitter](https://twitter.com/core_ui). -- Read and subscribe to [CoreUI Blog](https://coreui.ui/blog/). +- Read and subscribe to [CoreUI Blog](https://coreui.io/blog/). ### Community Projects @@ -140,11 +182,11 @@ Some of projects created by community but not maintained by CoreUI team. ## Copyright and license -copyright 2018 creativeLabs Łukasz Holeczek. Code released under [the MIT license](https://github.com/coreui/coreui-free-angular-admin-template/blob/master/LICENSE). +copyright 2017-2022 creativeLabs Łukasz Holeczek. Code released under [the MIT license](https://github.com/coreui/coreui-free-angular-admin-template/blob/master/LICENSE). There is only one limitation you can't re-distribute the CoreUI as stock. You can’t do this if you modify the CoreUI. In past we faced some problems with persons who tried to sell CoreUI based templates. ## Support CoreUI Development CoreUI is an MIT licensed open source project and completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by donating on [PayPal](https://www.paypal.me/holeczek), buying [CoreUI Pro Version](https://coreui.io/pro) or buying one of our [premium admin templates](https://genesisui.com/?support=1). -As of now I am exploring the possibility of working on CoreUI fulltime - if you are a business that is building core products using CoreUI, I am also open to conversations regarding custom sponsorship / consulting arrangements. Get in touch on [Twitter](https://twitter.com/lukaszholeczek). +As of now I am exploring the possibility of working on CoreUI full-time - if you are a business that is building core products using CoreUI, I am also open to conversations regarding custom sponsorship / consulting arrangements. Get in touch on [Twitter](https://twitter.com/lukaszholeczek). diff --git a/angular.json b/angular.json index d673a8436..450da9e54 100644 --- a/angular.json +++ b/angular.json @@ -4,9 +4,18 @@ "newProjectRoot": "projects", "projects": { "ng": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": false + } + }, "root": "", "sourceRoot": "src", - "projectType": "application", + "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", @@ -14,55 +23,76 @@ "outputPath": "dist", "index": "src/index.html", "main": "src/main.ts", - "tsConfig": "src/tsconfig.app.json", "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "preserveSymlinks": true, "assets": [ + "src/favicon.ico", "src/assets" ], "styles": [ - "node_modules/@coreui/icons/css/coreui-icons.css", + "node_modules/@coreui/icons/css/free.css", "node_modules/flag-icon-css/css/flag-icon.css", "node_modules/font-awesome/css/font-awesome.css", - "node_modules/simple-line-icons/css/simple-line-icons.css", + "node_modules/simple-line-icons/dist/styles/simple-line-icons.css", "src/scss/style.scss" ], "stylePreprocessorOptions": { - "includePaths": ["./node_modules"] + "includePaths": [ + "./node_modules" + ] }, - "scripts": [ - "node_modules/chart.js/dist/Chart.min.js" + "scripts": [], + "allowedCommonJsDependencies": [ + "chart.js", + "classnames" ] }, "configurations": { "production": { - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "extractCss": true, - "namedChunks": false, - "aot": true, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "1500kb", + "maximumError": "2mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "12kb" + } + ], "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } - ] + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true } - } + }, + "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "ng:build" - }, "configurations": { "production": { "browserTarget": "ng:build:production" + }, + "development": { + "browserTarget": "ng:build:development" } - } + }, + "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", @@ -74,37 +104,26 @@ "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", - "karmaConfig": "./karma.conf.js", "polyfills": "src/polyfills.ts", - "tsConfig": "src/tsconfig.spec.json", - "scripts": [ - "node_modules/chart.js/dist/Chart.min.js" + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" ], "styles": [ + "node_modules/@coreui/icons/css/free.css", "node_modules/flag-icon-css/css/flag-icon.css", "node_modules/font-awesome/css/font-awesome.css", - "node_modules/simple-line-icons/css/simple-line-icons.css", + "node_modules/simple-line-icons/dist/styles/simple-line-icons.css", "src/scss/style.scss" ], "stylePreprocessorOptions": { - "includePaths": ["./node_modules"] - }, - "assets": [ - "src/assets", - "src/favicon.ico" - ] - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "src/tsconfig.app.json", - "src/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] + "includePaths": [ + "./node_modules" + ] + } } } } @@ -120,29 +139,12 @@ "protractorConfig": "./protractor.conf.js", "devServerTarget": "ng:serve" } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "e2e/tsconfig.e2e.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } } } } }, "defaultProject": "ng", - "schematics": { - "@schematics/angular:component": { - "prefix": "app", - "styleext": "scss" - }, - "@schematics/angular:directive": { - "prefix": "app" - } + "cli": { + "analytics": false } } diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts index 7487ceaec..15b73d541 100644 --- a/e2e/app.e2e-spec.ts +++ b/e2e/app.e2e-spec.ts @@ -1,14 +1,72 @@ -import { CoreUIPage } from './app.po'; +import { AppDashboard } from './app.po'; -describe('core-ui App', function() { - let page: CoreUIPage; +describe('CoreUI template', () => { + let page: AppDashboard; + const sleep = 300; - beforeEach(() => { - page = new CoreUIPage(); + page = new AppDashboard(); + const browser = page.getBrowser(); + browser.driver.manage().window().setSize(600, 800); + browser.sleep(sleep); + page.navigateTo(); + + // beforeEach(() => { + // page = new AppDashboard(); + // page.navigateTo(); + // }); + + it('should display CoreUI Dashboard', async () => { + expect(await page.getParagraphText()).toEqual('Traffic'); + }); + + it('should display footer containing creativeLabs', async () => { + expect(await page.getFooterText()).toContain('creativeLabs'); + }); + + it('should toggle `sidebar-minimized` body.class on `sidebar-minimizer` click', () => { + browser.manage().window().maximize(); + browser.sleep(1000); + const body = page.getBody(); + expect(body.getAttribute('class')).not.toContain('sidebar-minimized'); + const button = page.getByCss('.sidebar-minimizer'); + button.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).toContain('sidebar-minimized'); + browser.sleep(sleep); + button.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).not.toContain('sidebar-minimized'); + }); + + it('should toggle `sidebar-show` body.class on `navbar-toggler` click', () => { + browser.driver.manage().window().setSize(600, 800); + browser.sleep(1000); + const body = page.getBody(); + expect(body.getAttribute('class')).not.toContain('sidebar-show'); + const button1 = page.getByCss('.navbar-toggler.d-lg-none').first(); + browser.sleep(sleep); + button1.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).toContain('sidebar-show'); + const button2 = page.getByCss('.navbar-toggler').first(); + browser.sleep(sleep); + button2.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).not.toContain('sidebar-show'); }); - it('should display footer containing creativeLabs', () => { - page.navigateTo(); - expect(page.getParagraphText()).toContain('creativeLabs'); + it('should toggle `aside-menu-lg-show` body.class on `navbar-toggler` click', () => { + browser.manage().window().maximize(); + browser.sleep(1000); + const body = page.getBody(); + expect(body.getAttribute('class')).not.toContain('aside-menu-lg-show'); + const button1 = page.getByCss('.navbar-toggler.d-none.d-lg-block').last(); + button1.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).toContain('aside-menu-lg-show'); + browser.sleep(sleep); + button1.click(); + browser.sleep(sleep); + expect(body.getAttribute('class')).not.toContain('aside-menu-lg-show'); }); }); diff --git a/e2e/app.po.ts b/e2e/app.po.ts index aea5a60d8..eb36d6c09 100644 --- a/e2e/app.po.ts +++ b/e2e/app.po.ts @@ -1,11 +1,25 @@ -import { browser, element, by } from 'protractor'; +import { browser, by, element } from 'protractor'; + +export class AppDashboard { + + getBrowser() { + return browser; + } -export class CoreUIPage { navigateTo() { return browser.get('/'); } getParagraphText() { - return element(by.tagName('footer')).getText(); + return element(by.xpath('/html/body/app-dashboard/div/main/div/ng-component/div/div[2]/div[1]/div[1]/div[1]/h4')).getText(); + } + getBody() { + return element(by.xpath('/html/body')); + } + getByCss(selector) { + return element.all(by.css(selector)); + } + getFooterText() { + return element(by.className('app-footer')).getText(); } } diff --git a/karma.conf.js b/karma.conf.js index 84af9d19a..b97545491 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -9,18 +9,28 @@ module.exports = function (config) { require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), + require('karma-coverage'), require('@angular-devkit/build-angular/plugins/karma') ], - client:{ + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], - fixWebpackSourcePaths: true + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces }, - angularCli: { - environment: 'dev' + coverageReporter: { + dir: require('path').join(__dirname, './coverage/coreui-free-angular-admin-template'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] }, reporters: ['progress', 'kjhtml'], port: 9876, @@ -28,6 +38,7 @@ module.exports = function (config) { logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], - singleRun: false + singleRun: false, + restartOnFileChange: true }); }; diff --git a/package.json b/package.json index 614dc49bf..4322b81ae 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@coreui/coreui-free-angular-admin-template", - "version": "2.0.1", - "description": "CoreUI Free Angular 2+ Admin Template", + "version": "2.13.0", + "description": "CoreUI Free Angular 13 Admin Template", "author": { "name": "Łukasz Holeczek", "url": "http://holeczek.pl/", @@ -15,71 +15,68 @@ } ], "homepage": "https://coreui.io/angular", - "copyright": "Copyright 2018 creativeLabs Łukasz Holeczek", + "copyright": "Copyright 2017-2022 creativeLabs Łukasz Holeczek", "license": "MIT", "scripts": { "ng": "ng", "start": "ng serve", - "build": "ng build --prod", + "build": "ng build", + "watch": "ng build --watch --configuration development", "test": "ng test", - "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { - "@angular/animations": "^6.1.10", - "@angular/common": "^6.1.10", - "@angular/compiler": "^6.1.10", - "@angular/core": "^6.1.10", - "@angular/forms": "^6.1.10", - "@angular/http": "^6.1.10", - "@angular/platform-browser": "^6.1.10", - "@angular/platform-browser-dynamic": "^6.1.10", - "@angular/router": "^6.1.10", - "@coreui/angular": "^2.0.0-rc.1", - "@coreui/coreui": "^2.0.20", - "@coreui/coreui-plugin-chartjs-custom-tooltips": "^1.2.0", - "@coreui/icons": "0.3.0", - "bootstrap": "^4.1.3", - "chart.js": "^2.7.3", - "core-js": "^2.5.7", - "flag-icon-css": "^3.2.1", + "@angular/animations": "^13.3.0", + "@angular/cdk": "^13.3.0", + "@angular/common": "^13.3.0", + "@angular/compiler": "^13.3.0", + "@angular/core": "^13.3.0", + "@angular/forms": "^13.3.0", + "@angular/localize": "^13.3.0", + "@angular/platform-browser": "^13.3.0", + "@angular/platform-browser-dynamic": "^13.3.0", + "@angular/router": "^13.3.0", + "@coreui/angular": "~2.13.0", + "@coreui/coreui": "^2.1.16", + "@coreui/coreui-plugin-chartjs-custom-tooltips": "^1.3.1", + "@coreui/icons": "^2.1.0", + "@coreui/icons-angular": "1.0.0-alpha.3", + "bootstrap": "^4.6.1", + "chart.js": "^2.9.4", + "core-js": "^3.21.1", + "flag-icon-css": "^3.5.0", "font-awesome": "^4.7.0", - "moment": "^2.22.2", - "mutationobserver-shim": "^0.3.2", - "ng2-charts": "^1.6.0", - "ngx-bootstrap": "^3.0.1", - "ngx-perfect-scrollbar": "^6.3.1", - "rxjs": "^6.3.3", - "rxjs-compat": "^6.3.3", - "simple-line-icons": "^2.4.1", + "ng2-charts": "^2.4.3", + "ngx-bootstrap": "^6.2.0", + "ngx-perfect-scrollbar": "^10.1.1", + "rxjs": "^6.6.7", + "simple-line-icons": "^2.5.5", "ts-helpers": "^1.1.2", - "tsickle": "^0.33.0", - "zone.js": "^0.8.26" + "tslib": "^2.3.1", + "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.7.5", - "@angular/cli": "^6.2.6", - "@angular/compiler-cli": "^6.1.10", - "@angular/language-service": "^6.1.10", - "@types/jasmine": "^2.8.9", - "@types/jasminewd2": "^2.0.5", - "@types/node": "^10.12.0", - "codelyzer": "^4.5.0", - "jasmine-core": "^3.2.1", - "jasmine-spec-reporter": "^4.2.1", - "karma": "^3.0.0", - "karma-chrome-launcher": "^2.2.0", - "karma-coverage-istanbul-reporter": "^2.0.4", - "karma-jasmine": "^1.1.2", - "karma-jasmine-html-reporter": "^1.3.1", - "protractor": "^5.4.1", - "ts-node": "^7.0.1", - "tslint": "^5.11.0", - "typescript": "^2.9.2" + "@angular-devkit/build-angular": "^13.3.0", + "@angular/cli": "^13.3.0", + "@angular/compiler-cli": "^13.3.0", + "@angular/language-service": "^13.3.0", + "@types/jasmine": "~3.8.0", + "@types/jasminewd2": "^2.0.10", + "@types/node": "^14.18.12", + "jasmine-core": "~3.8.0", + "jasmine-spec-reporter": "^7.0.0", + "karma": "~6.3.17", + "karma-chrome-launcher": "~3.1.1", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.1", + "karma-jasmine-html-reporter": "^1.7.0", + "protractor": "~7.0.0", + "ts-node": "^9.1.1", + "typescript": "~4.6.2" }, "engines": { - "node": ">= 8.9.4", - "npm": ">= 5.6.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": ">= 6" } } diff --git a/protractor.conf.js b/protractor.conf.js index 7ee3b5ee8..eed36ab59 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -12,7 +12,7 @@ exports.config = { 'browserName': 'chrome' }, directConnect: true, - baseUrl: 'http://localhost:4200/', + baseUrl: 'http://localhost:4202/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, diff --git a/src/app/_nav.ts b/src/app/_nav.ts index 12a3d0929..264c3c292 100644 --- a/src/app/_nav.ts +++ b/src/app/_nav.ts @@ -1,4 +1,6 @@ -export const navItems = [ +import { INavData } from '@coreui/angular'; + +export const navItems: INavData[] = [ { name: 'Dashboard', url: '/dashboard', @@ -51,6 +53,12 @@ export const navItems = [ url: '/base/forms', icon: 'icon-puzzle' }, + { + name: 'Navbars', + url: '/base/navbars', + icon: 'icon-puzzle' + + }, { name: 'Pagination', url: '/base/paginations', @@ -215,17 +223,29 @@ export const navItems = [ } ] }, + { + name: 'Disabled', + url: '/dashboard', + icon: 'icon-ban', + badge: { + variant: 'secondary', + text: 'NEW' + }, + attributes: { disabled: true }, + }, { name: 'Download CoreUI', url: 'http://coreui.io/angular/', icon: 'icon-cloud-download', class: 'mt-auto', - variant: 'success' + variant: 'success', + attributes: { target: '_blank', rel: 'noopener' } }, { name: 'Try CoreUI PRO', url: 'http://coreui.io/pro/angular/', icon: 'icon-layers', - variant: 'danger' + variant: 'danger', + attributes: { target: '_blank', rel: 'noopener' } } ]; diff --git a/src/app/app.component.html b/src/app/app.component.html deleted file mode 100644 index fa2706a40..000000000 --- a/src/app/app.component.html +++ /dev/null @@ -1,20 +0,0 @@ - -
Nulla vitae elit libero, a pharetra augue mollis interdum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent commodo cursus magna, vel scelerisque nisl consectetur.
@@ -67,23 +67,23 @@Nulla vitae elit libero, a pharetra augue mollis interdum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent commodo cursus magna, vel scelerisque nisl consectetur.
diff --git a/src/app/views/base/carousels.component.ts b/src/app/views/base/carousels.component.ts index 0e4c8c9cb..f2971be37 100644 --- a/src/app/views/base/carousels.component.ts +++ b/src/app/views/base/carousels.component.ts @@ -1,14 +1,15 @@ -import { Component } from '@angular/core'; +import {Component, OnDestroy} from '@angular/core'; import { CarouselConfig } from 'ngx-bootstrap/carousel'; @Component({ - templateUrl: 'carousels.component.html', providers: [ - { provide: CarouselConfig, useValue: { interval: 1500, noPause: true } } + templateUrl: 'carousels.component.html', + providers: [ + { provide: CarouselConfig, useValue: { interval: 1500, noPause: false } }, ] }) -export class CarouselsComponent { +export class CarouselsComponent implements OnDestroy { - myInterval: number = 6000; + myInterval: number | false = 6000; slides: any[] = []; activeSlideIndex: number = 0; noWrapSlides: boolean = false; @@ -19,10 +20,19 @@ export class CarouselsComponent { } } + ngOnDestroy(): void { + this.myInterval = 0; + this.noWrapSlides = true; + this.myInterval = false; + } + addSlide(): void { - this.slides.push({ - image: `https://loremflickr.com/900/500/sailing?random=${this.slides.length % 8 + 1}/` - }); + setTimeout( () => { + const seed = Math.random().toString(36).slice(-6); + this.slides.push({ + image: `https://picsum.photos/seed/${seed}/900/500` + }); + }, 500); } removeSlide(index?: number): void { diff --git a/src/app/views/base/navbars/navbars.component.css b/src/app/views/base/navbars/navbars.component.css new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/views/base/navbars/navbars.component.html b/src/app/views/base/navbars/navbars.component.html new file mode 100644 index 000000000..55c1dacbc --- /dev/null +++ b/src/app/views/base/navbars/navbars.component.html @@ -0,0 +1,48 @@ +