diff --git a/.editorconfig b/.editorconfig
index 54e4850b..0a592d43 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/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
similarity index 100%
rename from CODE_OF_CONDUCT.md
rename to .github/CODE_OF_CONDUCT.md
diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md
similarity index 100%
rename from CONTRIBUTING.md
rename to .github/CONTRIBUTING.md
diff --git a/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
similarity index 100%
rename from ISSUE_TEMPLATE.md
rename to .github/ISSUE_TEMPLATE.md
diff --git a/.github/workflows/daily-project-check.yml b/.github/workflows/daily-project-check.yml
new file mode 100644
index 00000000..b6b2ef3c
--- /dev/null
+++ b/.github/workflows/daily-project-check.yml
@@ -0,0 +1,54 @@
+name: Daily project check
+
+on:
+ schedule:
+ # build runs every weekday at 3AM UTC
+ - cron: '0 3 * * 1-5'
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [18.x]
+ os: [ubuntu-latest, windows-latest, macOS-latest]
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: project check
+ run: |
+ npm i
+ npm run build-lib:prod
+ npm run test-lib:prod
+# npm run lint
+ env:
+ CI: true
+
+ e2e-chrome:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Use Node.js 18
+ uses: actions/setup-node@v4
+ with:
+ node-version: 18
+ - run: npm i
+ - name: e2e chrome test
+ uses: cypress-io/github-action@v6
+ timeout-minutes: 5
+ with:
+ browser: chrome
+ build: npm run build-lib:prod
+ start: npm start
+ wait-on: 'http://localhost:4200'
+ env:
+ BROWSER: chrome
diff --git a/.github/workflows/project-check.yml b/.github/workflows/project-check.yml
new file mode 100644
index 00000000..f01022a3
--- /dev/null
+++ b/.github/workflows/project-check.yml
@@ -0,0 +1,58 @@
+name: Project check
+
+on:
+ push:
+ branches:
+ - master
+ - v2
+ pull_request:
+ branches:
+ - master
+ - v2
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [18.x]
+ os: [ubuntu-latest, windows-latest, macOS-latest]
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: project check
+ run: |
+ npm i
+ npm run build-lib:prod
+ npm run test-lib:prod
+# npm run lint
+ env:
+ CI: true
+
+ e2e-chrome:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Use Node.js 18
+ uses: actions/setup-node@v4
+ with:
+ node-version: 18
+ - run: npm i
+ - name: e2e chrome test
+ uses: cypress-io/github-action@v6
+ timeout-minutes: 5
+ with:
+ browser: chrome
+ build: npm run build-lib:prod
+ start: npm start
+ wait-on: 'http://localhost:4200'
+ env:
+ BROWSER: chrome
diff --git a/.gitignore b/.gitignore
index 1b28fd59..eabd950d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,46 @@
-# Misc
-# package-lock.json
+# See http://help.github.com/ignore-files/ for more about ignoring files.
-# Folders to ignore
-node_modules
-/coverage
+# Compiled output
+/dist
+/tmp
+/out-tsc
+/bazel-out
+
+# Node
+/node_modules
+npm-debug.log
+yarn-error.log
+
+# profiling files
+chrome-profiler-events*.json
+speed-measure-plugin*.json
# IDEs and editors
-/.idea
+.idea/
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
-# IDE - VSCode
+# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
+.history/*
+
+# Miscellaneous
+/.angular/cache
+.sass-cache/
+/connect.lock
+/coverage
+/libpeerconnection.log
+testem.log
+/typings
-# System Files
+# System files
.DS_Store
Thumbs.db
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 39636466..3d9bb8b8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,707 @@
### [@coreui/angular](https://coreui.io/) changelog
+##### `v2.18.0`
+
+- update to `Angular 18`
+
+##### `v2.17.0`
+
+- update to `Angular 17` - thanks: @vag1830
+
+##### `v2.16.1`
+
+- chore(dependencies): update
+
+##### `v2.16.0`
+
+- update to `Angular 16` - thanks: @vag1830
+
+##### `v2.15.1`
+
+- chore(e2e): migration to Cypress
+- fix(testapp): remove Ivy incompatible ngx-perfect-scrollbar
+- chore(workflows): update to npm 18
+- chore(dependencies): update
+
+##### `v2.15.0`
+
+- update to `Angular 15`
+- feat: standalone components
+
+##### `v2.14.1`
+
+- update to `Angular 14.3`
+
+##### `v2.14.0`
+
+- update to `Angular 14`
+
+##### `v2.13.0`
+
+- update to `Angular 13.3`
+
+###### dependencies update
+- update `@angular/animations` 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 `rxjs` to `^7.5.5`
+- 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 `@types/jasmine` to `^3.10.4`
+- update `@types/node` to `^16.11.26`
+- update `jasmine-core` to `~4.0.1`
+- update `karma-coverage` to `~2.1.1`
+- update `ng-packagr` to `^13.3.0`
+- update `typescript` to `~4.6.2`
+- update `node` to `^14.15.0 || >=16.10.0`
+
+##### `v2.12.0`
+
+- update to `Angular 12.2`
+- refactor(library): typings, api surface
+- refactor(app): minor fixes
+
+###### dependencies update
+- update `@angular/animations` to `^12.2.16`
+- 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 `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 `@types/jasminewd2` to `^2.0.10`
+- update `jasmine-spec-reporter` to `~7.0.0`
+- update `karma` to `^6.3.17`
+- update `ng-packagr` to `^12.2.7`
+- update `typescript` to `~4.3.5`
+
+##### `v2.11.3`
+
+- ##### `update to Angular 11.2.14`
+
+###### dependencies update
+- update `@angular/animations` to `^11.2.14`
+- update `@angular/common` to `^11.2.14`
+- update `@angular/compiler` to `^11.2.14`
+- update `@angular/core` to `^11.2.14`
+- update `@angular/forms` to `^11.2.14`
+- update `@angular/localize` to `^11.2.14`
+- update `@angular/platform-browser` to `^11.2.14`
+- update `@angular/platform-browser-dynamic` to `^11.2.14`
+- update `@angular/router` to `^11.2.14`
+- update `rxjs` to `^6.6.7`
+- update `tslib` to `^2.3.1`
+- update `zone.js` to `^0.11.5`
+- update `@angular-devkit/build-angular` to `^0.1102.18`
+- update `@angular/cli` to `^11.2.18`
+- update `@angular/compiler-cli` to `^11.2.14`
+- update `@angular/language-service` to `^11.2.14`
+- update `@types/jasmine` to `^3.6.11`
+- update `@types/node` to `^14.18.12`
+- update `codelyzer` to `^6.0.2`
+- update `jasmine-core` to `~3.10.1`
+- update `karma-chrome-launcher` to `~3.1.1`
+- update `karma-jasmine-html-reporter` to `^1.7.0`
+- update `ngx-perfect-scrollbar` to `^10.1.1`
+- update `shelljs` to `^0.8.5`
+- update `typescript` to `~4.0.8`
+
+##### `v2.11.2`
+
+- ##### `update to Angular 11.2`
+
+###### dependencies update
+- update `@angular/animations` to `^11.2.2`
+- update `@angular/common` to `^11.2.2`
+- update `@angular/compiler` to `^11.2.2`
+- update `@angular/core` to `^11.2.2`
+- update `@angular/forms` to `^11.2.2`
+- update `@angular/localize` to `^11.2.2`
+- update `@angular/platform-browser` to `^11.2.2`
+- update `@angular/platform-browser-dynamic` to `^11.2.2`
+- update `@angular/router` to `^11.2.2`
+- update `tslib` to `^2.1.0`
+- update `zone.js` to `^0.11.4`
+- update `@angular-devkit/build-angular` to `^0.1102.1`
+- update `@angular/cli` to `^11.2.1`
+- update `@angular/compiler-cli` to `^11.2.2`
+- update `@angular/language-service` to `^11.2.2`
+- update `@types/jasmine` to `^3.6.4`
+- update `@types/node` to `^14.14.31`
+- update `codelyzer` to `^6.0.1`
+- update `jasmine-spec-reporter` to `~5.0.2`
+- update `karma-jasmine` to `~4.0.1`
+- update `karma-jasmine-html-reporter` to `^1.5.4`
+- update `ng-packagr` to `^11.2.4`
+- update `tslint` to `~6.1.3`
+
+
+##### `v2.11.1`
+
+- ##### `update to Angular 11.1`
+
+###### dependencies update
+- update `@angular/animations` 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 `@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`
+- update `ng-packagr` to `^11.1.2`
+
+
+##### `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://angular.io/guide/updating-to-version-11)
+ - [TypeScript: Documentation - TypeScript 4.0](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/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 `zone.js` to `^0.11.3`
+- 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 `jasmine-core` to `~3.6.0`
+- update `karma` to `^5.2.3`
+- update `karma-coverage` to `~2.0.3`
+- update `ng-packagr` to `^11.0.3`
+- update `ts-node` to `^9.1.1`
+- 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/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 `tslib` to `^2.0.0`
+- update `@angular-devkit/build-angular` to `^0.1002.1`
+- update `@angular-devkit/build-ng-packagr` 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 `codelyzer` to `^6.0.1`
+- update `jasmine-spec-reporter` to `~5.0.0`
+- update `karma` to `~5.0.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 `ng-packagr` to `^10.1.0`
+- update `ngx-perfect-scrollbar` to `^10.1.0`
+- update `protractor` to `~7.0.0`
+- update `tslint` to `~6.1.0`
+- update `typescript` to `~3.9.7`
+
+##### `v2.9.6`
+- fix: use type INavData instead of any
+- chore(.github): add project checks workflows
+- test: minor updates e2e, unit
+
+###### dependencies update
+- update `@angular/animations` to `^9.1.13`
+- 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/localize` 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 `rxjs` to `^6.6.3`
+- update `tslib` to `^1.14.1`
+- update `@angular-devkit/build-angular` to `^0.901.13`
+- update `@angular-devkit/build-ng-packagr` 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`
+- update `simple-line-icons` to `^2.5.5`
+---
+- update `stylus@0.54.8` with `npm --depth 2 update stylus`
+
+##### `v2.9.4`
+- fix: routerLinkActiveOptions not passed to SidebarNavLink - thanks @CloudStrife28492 fixes #107
+
+##### `v2.9.3`
+- fix: add missing AppSidebarNavComponent/AppSidebarMinimizer to public api - thanks @coyoteecd fixes #110
+
+###### 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/localize` 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 `rxjs` to `^6.6.0`
+- update `tslib` to `^1.13.0`
+- update `@angular-devkit/build-angular` to `^0.901.11`
+- update `@angular-devkit/build-ng-packagr` 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 `jasmine-spec-reporter` to `^5.0.2`
+- update `karma` to `^5.1.0`
+- update `karma-jasmine` to `^3.3.1`
+- update `karma-jasmine-html-reporter` to `^1.5.4`
+- update `ng-packagr` to `^9.1.5`
+- update `protractor` to `^7.0.0`
+- update `shelljs` to `^0.8.4`
+- update `ts-node` to `^8.10.2`
+- update `tslint` to `^6.1.2`
+
+##### `v2.9.2`
+- chore: update to `Angular 9.1.1`
+- chore: remove build artifacts from git
+
+###### 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/localize` 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 `rxjs` to `^6.5.5`
+- update `zone.js` to `^0.10.3`
+- update `@angular-devkit/build-angular` to `~0.901.1`
+- update `@angular-devkit/build-ng-packagr` 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/jasminewd2` to `~2.0.8`
+- 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-chrome-launcher` to `^3.1.0`
+- 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 `ng-packagr` to `^9.1.0`
+- update `protractor` to `^5.4.3`
+- update `ts-node` to `^8.8.2`
+- update `tslint` to `^6.1.1`
+- update `typescript` to `~3.6.5`
+
+##### `v2.9.1`
+- fix: downgrade TypeScript to ~3.6.4 - thanks @jrocha closes #103
+
+###### dependencies update
+- update `typescript` to `~3.6.4`
+- update `@angular/animations` to `~9.0.5`
+- update `@angular/common` to `~9.0.5`
+- update `@angular/compiler` to `~9.0.5`
+- update `@angular/core` to `~9.0.5`
+- update `@angular/forms` to `~9.0.5`
+- update `@angular/localize` to `^9.0.5`
+- update `@angular/platform-browser` to `~9.0.5`
+- update `@angular/platform-browser-dynamic` to `~9.0.5`
+- update `@angular/router` to `~9.0.5`
+- update `tslib` to `^1.11.1`
+- update `@angular-devkit/build-angular` to `~0.900.5`
+- update `@angular-devkit/build-ng-packagr` to `~0.900.5`
+- update `@angular/cli` to `~9.0.5`
+- update `@angular/compiler-cli` to `~9.0.5`
+- update `@angular/language-service` to `~9.0.5`
+- update `@types/jasmine` to `^3.5.7`
+- update `@types/node` to `^12.12.29`
+- update `ng-packagr` to `^9.0.2`
+- update `ngx-perfect-scrollbar` to `^9.0.0`
+
+##### `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/localize` 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 `@angular-devkit/build-angular` to `~0.900.1`
+- update `@angular-devkit/build-ng-packagr` 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/node` to `^12.12.26`
+- update `@types/jasmine` to `~3.5.3`
+- update `karma-jasmine-html-reporter` to `^1.5.2`
+- update `ng-packagr` to `^9.0.0`
+- update `typescript` to `~3.7.5`
+
+##### `v2.7.5`
+- chore: update to `Angular 9.0.0-rc.12`
+
+###### dependencies update
+- 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/localize` 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-devkit/build-ng-packagr` 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.4`
+- fix: add `SidebarNavHelper` to public-api surface - see: #67
+
+##### `v2.7.3`
+- chore: update to `Angular 9.0.0-rc.9`
+- refactor: `@coreui/angular` components library
+- tests: fix and add some missing tests
+
+###### dependencies update
+- update `@angular/animations` to `~9.0.0-rc.9`
+- update `@angular/common` to `~9.0.0-rc.9`
+- update `@angular/compiler` to `~9.0.0-rc.9`
+- update `@angular/core` to `~9.0.0-rc.9`
+- update `@angular/forms` to `~9.0.0-rc.9`
+- update `@angular/platform-browser` to `~9.0.0-rc.9`
+- update `@angular/platform-browser-dynamic` to `~9.0.0-rc.9`
+- update `@angular/router` to `~9.0.0-rc.9`
+- update `@angular-devkit/build-angular` to `~0.900.0-rc.9`
+- update `@angular-devkit/build-ng-packagr` to `~0.900.0-rc.9`
+- update `@angular/cli` to `~9.0.0-rc.9`
+- update `@angular/compiler-cli` to `~9.0.0-rc.9`
+- update `@angular/language-service` to `~9.0.0-rc.9`
+- update `@types/node` to `^12.11.1`
+- update `@types/jasmine` to `~3.5.0`
+- update `@types/jasminewd2` to `~2.0.3`
+- update `codelyzer` to `^5.1.2`
+- update `jasmine-core` to `~3.5.0`
+- update `jasmine-spec-reporter` to `~4.2.1`
+- update `karma` to `~4.3.0`
+- update `karma-chrome-launcher` to `~3.1.0`
+- update `karma-coverage-istanbul-reporter` to `~2.1.0`
+- update `ng-packagr` to `^9.0.0-rc.7`
+- update `protractor` to `~5.4.2`
+- update `ts-node` to `~8.3.0`
+- update `tslint` to `~5.18.0`
+
+##### `v2.7.2`
+- fix(sidebar-nav): AppSidebarNavLabelComponent is not exported in the AppSidebarModule - thanks @zwiras #63
+
+###### 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 `@angular-devkit/build-angular` to `^0.900.0-rc.7`
+- update `@angular-devkit/build-ng-packagr` 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 `@types/node` to `^12.12.21`
+- update `codelyzer` to `^5.2.1`
+
+##### `v2.7.1`
+- fix(sidebar-nav): @angular/router has no exported member QueryParamsHandling, see:
+ - https://github.com/angular/angular/issues/30925
+ - https://github.com/angular/angular/issues/30816
+
+###### dependencies update
+- update `@angular/animations` to `^9.0.0-rc.5`
+- update `@angular/common` to `^9.0.0-rc.5`
+- update `@angular/compiler` to `^9.0.0-rc.5`
+- update `@angular/core` to `^9.0.0-rc.5`
+- update `@angular/forms` to `^9.0.0-rc.5`
+- update `@angular/platform-browser` to `^9.0.0-rc.5`
+- update `@angular/platform-browser-dynamic` to `^9.0.0-rc.5`
+- update `@angular/router` to `^9.0.0-rc.5`
+- update `core-js` to `^2.6.11`
+- update `@angular-devkit/build-angular` to `^0.900.0-rc.5`
+- update `@angular-devkit/build-ng-packagr` to `^0.900.0-rc.5`
+- update `@angular/cli` to `^9.0.0-rc.5`
+- update `@angular/compiler-cli` to `^9.0.0-rc.5`
+- update `@angular/language-service` to `^9.0.0-rc.5`
+- update `@types/jasmine` to `^3.5.0`
+- update `@types/node` to `^12.12.17`
+- update `karma-coverage-istanbul-reporter` to `^2.1.1`
+- update `ng-packagr` to `^9.0.0-rc.3`
+- update `ts-node` to `^8.5.4`
+- update `tslint` to `^5.20.1`
+
+##### `v2.7.0`
+- chore: upgrade to Angular 9 - see also:
+ - `https://next.angular.io/guide/updating-to-version-9`
+ - `https://update.angular.io/#8.0:9.0`
+ - add missing `@Injectable` decorator to `SidebarNavHelper`
+ - add a generic type to `ModuleWithProviders`
+ - tsconfig.lib `enableIvy: false` for library backward compatibility
+ - tsconfig.lib `annotateForClosureCompiler: false` and remove `tsickle` dependency
+ - move `tslib` to `dependencies`
+ - tsconfig.app: add files[]
+ - test: deprecate TestBed.get() use TestBed.inject()
+- refactor(SidebarNavItem): add INavData items type
+
+###### dependencies update
+- 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 `@angular-devkit/build-angular` to `~0.900.0-rc.0`
+- update `@angular-devkit/build-ng-packagr` 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 `ng-packagr` to `^9.0.0-rc.1`
+- update `typescript` to `~3.6.4"
+- update `@types/node` to `^12.11.1`
+- update `codelyzer` to `^5.1.2`
+- update `@coreui/coreui` to `^2.1.16`
+- update `@types/jasmine` to `^3.4.5`
+
+##### `v2.6.3`
+- refactor: change renderer.addClass to HostBinding
+- test: add e2e test bed with some tests
+
+###### dependencies update
+- update `@angular-devkit/build-angular` to `^0.803.14`
+- update `@angular-devkit/build-ng-packagr` to `^0.803.14`
+- update `@angular/cli` to `^8.3.14`
+- update `@angular/compiler-cli` to `^8.2.12`
+- update `@angular/language-service` to `^8.2.12`
+- update `@angular/animations` to `^8.2.12`
+- 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`
+- rollback `protractor` to `^5.4.2`
+- add `@coreui/coreui` (e2e)
+- add `simple-line-icons` (e2e)
+- add `ngx-perfect-scrollbar` (e2e)
+
+##### `v2.6.2`
+- feat(Sidebar): `minimized` state @Input/@Output - thanks @Hagith #84
+- test(Sidebar): `minimized` state - thanks @Hagith #84
+- feat(SidebarService): add SidebarService with observable actions
+- refactor(Sidebar): inject SidebarService, subscribe and toggle action events
+- refactor(SidebarMinimizer): inject SidebarService, toggle action events
+- refactor(Sidebar): onDestroy remove minimized classes
+
+###### dependencies update
+- update `@angular-devkit/build-angular` to `^0.803.13`
+- update `@angular-devkit/build-ng-packagr` to `^0.803.13`
+- update `@angular/cli` to `^8.3.13`
+- update `codelyzer` to `^5.2.0`
+- update `jasmine-core` to `^3.5.0`
+- update `jasmine-spec-reporter` to `^4.2.1`
+- update `karma` to `^4.4.1`
+- update `karma-chrome-launcher` to `^3.1.0`
+- update `karma-jasmine-html-reporter` to `^1.4.2`
+- update `protractor` to `^6.0.0`
+
+##### `v2.6.1`
+- chore: add "cui" prefixed selector alias to all components - thanks @Hagith #80
+- fix(INavData): add missing `href` for explicit external links
+- refactor(SidebarNavLink): add `INavData` type to items, cleanup
+- test: add `test-lib` script & make it work - thanks @Hagith #83
+
+###### dependencies update
+- update `@angular-devkit/build-angular` to `^0.803.12`
+- update `@angular-devkit/build-ng-packagr` to `^0.803.12`
+- update `@angular/cli` to `^8.3.12`
+- update `karma` to `^4.4.0`
+
+##### `v2.6.0`
+- fix(SidebarNavLink): nav link target doesn't work through appHtmlAttr - thanks @Hagith #79
+- fix(SidebarNavLink): allow link parameters array
+- refactor(SidebarNavLink): extract disabled link type
+- fix(SidebarNavLink): test for item.attributes presence
+- refactor(SidebarNavLink): add `item.href` for explicit external links
+- refactor(SidebarNavLink): extract SidebarNavLinkContent component
+- fix(SidebarNavBadge): add missing badge.class prop
+- feat(SidebarNavLink): allow `routerLink` properties as `item.linkProps`
+- refactor(SidebarNavLink): `active` class workaround with NavigationEnd Observable
+- refactor(SidebarNavLink): add pipe SidebarNavLink
+
+```typescript
+export interface INavLinkProps {
+ queryParams?: {[k: string]: any};
+ fragment?: string;
+ queryParamsHandling?: 'merge' | 'preserve' | '';
+ preserveFragment?: boolean;
+ skipLocationChange?: boolean;
+ replaceUrl?: boolean;
+ state?: {[k: string]: any};
+}
+```
+
+###### dependencies update
+- update `@angular/animations` to `^8.2.11`
+- update `@angular/common` to `^8.2.11`
+- update `@angular/compiler` to `^8.2.11`
+- update `@angular/core` to `^8.2.11`
+- update `@angular/forms` to `^8.2.11`
+- update `@angular/platform-browser` to `^8.2.11`
+- update `@angular/platform-browser-dynamic` to `^8.2.11`
+- update `@angular/router` to `^8.2.11`
+- update `core-js` to `^2.6.10`
+- update `@angular-devkit/build-angular` to `^0.803.10`
+- update `@angular-devkit/build-ng-packagr` to `^0.803.10`
+- update `@angular/cli` to `^8.3.10`
+- update `@angular/compiler-cli` to `^8.2.11`
+- update `@angular/language-service` to `^8.2.11`
+- update `@types/jasmine` to `^3.4.4`
+- update `@types/jasminewd2` to `^2.0.8`
+- update `@types/node` to `^11.13.22`
+- update `codelyzer` to `^5.1.2`
+- update `ng-packagr` to `^5.7.0`
+
+##### `v2.5.5`
+- fix: regression build issue - Please add a @NgModule annotation
+
+##### `v2.5.4`
+- refactor(sidebar): move INavData interface to @coreui/angular library - thanks @Fredx87 #72
+- refactor(sidebar): add pipe SidebarNavItemClass #74
+- refactor(sidebar): use pipes in sidebar-nav-dropdown - thanks @coyoteecd #74
+- refactor(sidebar): use pipes in sidebar-nav-items pipe #74
+- refactor(sidebar): sidebar-nav-service cleanup
+- refactor: public_api
+
+###### dependencies update
+- update `@angular/animations` to `^8.2.7`
+- update `@angular/common` to `^8.2.7`
+- update `@angular/compiler` to `^8.2.7`
+- update `@angular/core` to `^8.2.7`
+- update `@angular/forms` to `^8.2.7`
+- update `@angular/platform-browser` to `^8.2.7`
+- update `@angular/platform-browser-dynamic` to `^8.2.7`
+- update `@angular/router` to `^8.2.7`
+- update `rxjs` to `^6.5.3`
+- update `zone.js` to `^0.10.2`
+- update `@angular-devkit/build-angular` to `^0.803.5`
+- update `@angular-devkit/build-ng-packagr` to `^0.803.5`
+- update `@angular/cli` to `^8.3.5`
+- update `@angular/compiler-cli` to `^8.2.7`
+- update `@angular/language-service` to `^8.2.7`
+- update `@types/jasmine` to `^3.4.0`
+- update `@types/node` to `^11.13.20`
+- update `codelyzer` to `^5.1.1`
+- update `karma` to `^4.3.0`
+- update `ng-packagr` to `^5.5.1`
+- update `ts-node` to `^8.4.1`
+- update `tsickle` to `~0.37.0`
+- update `tslint` to `^5.20.0`
+
+##### `v2.5.3`
+- fix(sidebar): performance issues with app-sidebar-nav components due to ngClass bindings - thanks @coyoteecd #74
+- fix(sidebar): app-sidebar-nav-label.component sets an incomplete variant style - thanks @coyoteecd closes #75
+
+###### dependencies update
+- update `@angular/animations` to `^8.2.0`
+- update `@angular/common` to `^8.2.0`
+- update `@angular/compiler` to `^8.2.0`
+- update `@angular/core` to `^8.2.0`
+- update `@angular/forms` to `^8.2.0`
+- update `@angular/platform-browser` to `^8.2.0`
+- update `@angular/platform-browser-dynamic` to `^8.2.0`
+- update `@angular/router` to `^8.2.0`
+- update `zone.js` to `~0.10.0`
+- update `@angular-devkit/build-angular` to `^0.802.0`
+- update `@angular-devkit/build-ng-packagr` to `^0.802.0`
+- update `@angular/cli` to `^8.2.0`
+- update `@angular/compiler-cli` to `^8.2.0`
+- update `@angular/language-service` to `^8.2.0`
+- update `@types/jasmine` to `^3.3.16`
+- update `@types/node` to `^11.13.18`
+- update `karma` to `^4.2.0`
+- update `karma-coverage-istanbul-reporter` to `^2.1.0`
+- update `ng-packagr` to `^5.4.3`
+- update `tsickle` to `^0.36.0`
+- update `tslint` to `^5.18.0`
+
##### `v2.5.2`
- refactor(AppHeader): add reactive toggler class based on breakpoint
usage: set toggler breakpoint
@@ -287,7 +989,7 @@ usage: set toggler breakpoint
##### `v2.2.1`
- fix: remove `-fixed` class on layout components destroy
- chore: commit `package-lock.json`
-- chore: add [README](./projects/coreui/angular/README.md)
+- chore: add [README](projects/coreui-angular/README.md)
- update: `core-js` to `2.6.0`
- update: `@angular-devkit/build-angular` to `0.11.1`
- update: `@angular-devkit/build-ng-packagr` to `0.11.1`
diff --git a/CLI.md b/CLI.md
new file mode 100644
index 00000000..8df002e0
--- /dev/null
+++ b/CLI.md
@@ -0,0 +1,27 @@
+# Angular
+
+This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.
+
+## Code scaffolding
+
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
+
+## Build
+
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
+
+## Publishing
+
+After building your library with `ng build angular`, go to the dist folder `cd dist/angular` and run `npm publish`.
+
+## Running unit tests
+
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+
+## Running end-to-end tests
+
+Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
+
+## Further help
+
+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
diff --git a/README.md b/README.md
index 5aadfe82..cdd3f663 100644
--- a/README.md
+++ b/README.md
@@ -1,63 +1,66 @@
# [@coreui/angular](https://coreui.io/angular)
-[](https://github.com/coreui/angular)
-[![npm package][npm-coreui-angular-badge]][npm-coreui-angular]
+
+[![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-angular)
-[![npm-coreui-angular-next][npm-coreui-angular-next]][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 downloads][npm-coreui-download]][npm-coreui]
+
[npm-coreui-angular]: https://www.npmjs.com/package/@coreui/angular
-[npm-coreui-angular-badge]: https://img.shields.io/npm/v/@coreui/angular.png?style=flat-square
+[npm-coreui-angular-badge-v2]: https://img.shields.io/npm/v/@coreui/angular/v2-ng18?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.png?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.png?style=flat-square
+[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 for Angular 2+ - Free WebApp UI Kit built on top of Bootstrap 4 [](https://twitter.com/intent/tweet?text=CoreUI%20-%20Free%20Bootstrap%204%20Admin%20Template%20&url=https://coreui.io&hashtags=,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!
-
-Curious why I decided to create CoreUI? Please read this article: [Jack of all trades, master of none. Why Bootstrap Admin Templates suck.](https://medium.com/@lukaszholeczek/jack-of-all-trades-master-of-none-5ea53ef8a1f#.7eqx1bcd8)
+> [@coreui/angular](https://coreui.io/angular) v2 library project
+> for use with [CoreUI](https://coreui.io/angular/) v2 Bootstrap Admin Template
CoreUI is an Open Source UI Kit built on top of Bootstrap 4. CoreUI is the fastest way to build modern dashboard for any platforms, browser or device. A complete Dashboard and WebApp UI Kit that allows you to quickly build eye-catching, high-quality, high-performance responsive applications using your framework of choice.
## Table of Contents
-* [Templates](#templates)
-* [Admin Templates built on top of CoreUI Pro](#admin-templates-built-on-top-of-coreui-pro)
+* [Template](#template)
* [Prerequisites](#prerequisites)
* [Installation](#coreui-installation)
* [Usage](#usage)
* [What's included](#whats-included)
* [Documentation](#documentation)
-* [Contributing](#contributing)
+* [Changelog](#changelog)
+* [Frameworks](#frameworks)
+* [Templates](#templates)
* [Versioning](#versioning)
+* [Contributing](#contributing)
* [Creators](#creators)
* [Community](#community)
-* [License](#license)
* [Support CoreUI Development](#support-coreui-development)
+* [Copyright and license](#copyright-and-license)
-## Templates
+## Template
* [CoreUI Free Angular Admin Template](https://github.com/coreui/coreui-free-angular-admin-template)
-* 💪 [CoreUI Pro Angular Admin Template](https://coreui.io/pro/angular/)
-
-## Admin Templates built on top of CoreUI Pro
+* 💪 [CoreUI Pro Angular Admin Template](https://coreui.io/angular/)
-| CoreUI Pro | Prime | Root | Alba | Leaf |
-| --- | --- | --- | --- | --- |
-| [](https://coreui.io/pro/angular/)| [](https://coreui.io/admin-templates/angular/prime/?support=1)| [](https://coreui.io/admin-templates/angular/root/?support=1)| [](https://coreui.io/admin-templates/angular/alba/?support=1)| [](https://coreui.io/admin-templates/angular/leaf/?support=1)
#### Prerequisites
-Before you begin, make sure your development environment includes `Node.js®` and an `npm` package manager.
+Before you begin, make sure your development environment includes the supported version `Typescript` as well as `Node.js®` and an `npm` package manager.
+
+###### Typescript
+Angular 18 requires `Typescript` version `^5.4.0` or newer.
+
+- To check your version, run `tsc -v` in a terminal/console window.
+- To get `Typescript`, go to [www.typescriptlang.org](https://www.typescriptlang.org/).
###### Node.js
-Angular 8 requires `Node.js` version 12.x
+Angular 18 requires `Node.js` version `^18.19.0` or newer.
- To check your version, run `node -v` in a terminal/console window.
- To get `Node.js`, go to [nodejs.org](https://nodejs.org/).
@@ -65,13 +68,13 @@ Angular 8 requires `Node.js` version 12.x
###### Angular CLI
Install the Angular CLI globally using a terminal/console window.
```bash
-npm install -g @angular/cli
+npm install -g @angular/cli@18
```
-##### Update to Angular 8
-see: [https://update.angular.io](https://update.angular.io)
+##### Update to Angular 18
+see: [https://angular.dev/update-guide](https://angular.dev/update-guide?v=17.0-18.0&l=3)
-## CoreUI Installation
+## Installation
Several options are available:
@@ -84,20 +87,21 @@ $ git clone https://github.com/coreui/coreui-angular.git
### NPM
``` bash
-$ npm install @coreui/angular --save
-```
-
-### Yarn
-
-``` bash
-$ yarn add @coreui/angular
+$ npm install @coreui/angular@2.18 --save
```
## Usage
### CSS
-Copy-paste the stylesheet `` into your `
` before all other stylesheets to load our CSS.
+Import scss in `src/scss/style.scss`
+
+```scss
+// Import styles
+@import "@coreui/coreui/scss/coreui";
+```
+
+Or copy-paste the stylesheet `` into your `` before all other stylesheets to load our CSS.
``` html
@@ -111,25 +115,40 @@ Within the download you'll find the following directories and files, logically g
coreui/
├── build/
├── dist/
-├── scripts/
+├── projects/
└── src/
```
## Documentation
-The documentation for the CoreUI Free Bootstrap Admin Template is hosted at our website [CoreUI](https://coreui.io/angular/)
+The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI for Angular](https://coreui.io/angular/docs/)
-## Contributing
+### Changelog
-Please read through our [contributing guidelines](https://github.com/coreui/coreui-angular/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+See the GitHub [release history](https://github.com/coreui/coreui-angular/releases).
-Editor preferences are available in the [editor config](https://github.com/coreui/coreui-angular/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at .
+## Frameworks
-## Versioning
+CoreUI supports most popular frameworks.
-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/).
+- [CoreUI for Bootstap(Vanilla JS)](https://github.com/coreui/coreui)
+- [CoreUI for React](https://github.com/coreui/coreui-react)
+- [CoreUI for Vue](https://github.com/coreui/coreui-vue)
+
+## Templates
+
+Fully featured, out-of-the-box, templates for your application based on CoreUI.
+
+- [Angular Admin Template](https://coreui.io/angular)
+- [Bootstrap Admin Template](https://coreui.io/)
+- [React Admin Template](https://coreui.io/react)
+- [Vue Admin Template](https://coreui.io/vue)
+
+## Contributing
-See [the Releases section of our project](https://github.com/coreui/coreui-angular/releases) for changelogs for each release version.
+Please read through our [contributing guidelines](https://github.com/coreui/coreui-angular/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Editor preferences are available in the [editor config](https://github.com/coreui/coreui-angular/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at .
## Creators
@@ -142,20 +161,55 @@ See [the Releases section of our project](https://github.com/coreui/coreui-angul
*
-## Community
+**The CoreUI Team**
-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.io/blog/).
+## Community
-## Copyright and license
+Stay up to date on the development of CoreUI and reach out to the community with these helpful resources.
-copyright 2017-2019 creativeLabs Łukasz Holeczek. Code released under [the MIT license](https://github.com/coreui/coreui-angular/blob/master/LICENSE).
-There is only one limitation you can't 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.
+- Read and subscribe to [The Official CoreUI Blog](https://blog.coreui.io/).
+- You can also follow [@core_ui on Twitter](https://twitter.com/core_ui).
## 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).
+CoreUI is an MIT-licensed open source project and is 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 buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/).
+
+
+
+### Platinum Sponsors
+
+Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website.
+
+
+
+### Gold Sponsors
+
+Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website.
+
+
+
+### Silver Sponsors
+
+Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website.
+
+
+
+### Bronze Sponsors
+
+Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile.
+
+
+
+### Backers
+
+Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/).
+
+
+
+
+
+## Copyright and license
-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).
+Copyright 2025 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-angular/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
diff --git a/angular.json b/angular.json
index 6b199969..c910e80e 100644
--- a/angular.json
+++ b/angular.json
@@ -3,76 +3,108 @@
"version": 1,
"newProjectRoot": "projects",
"projects": {
- "coreui": {
+ "coreui-demo": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:component": {
+ "style": "scss"
+ },
+ "@schematics/angular:application": {
+ "strict": true
+ }
+ },
"root": "",
"sourceRoot": "src",
- "projectType": "application",
"prefix": "app",
- "schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
- "outputPath": "dist/coreui",
+ "outputPath": "dist/coreui-demo",
"index": "src/index.html",
"main": "src/main.ts",
- "polyfills": "src/polyfills.ts",
+ "polyfills": [
+ "@angular/localize/init",
+ "zone.js",
+ "zone.js/testing"
+ ],
"tsConfig": "src/tsconfig.app.json",
+ "inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
- "src/styles.css"
+ "node_modules/simple-line-icons/css/simple-line-icons.css",
+ "src/scss/style.scss"
],
"scripts": []
},
"configurations": {
"production": {
+ "budgets": [
+ {
+ "type": "initial",
+ "maximumWarning": "500kb",
+ "maximumError": "1mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "6kb"
+ }
+ ],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
- "optimization": true,
- "outputHashing": "all",
- "sourceMap": false,
- "extractCss": true,
- "namedChunks": false,
- "aot": true,
- "extractLicenses": true,
- "vendorChunk": false,
- "buildOptimizer": true
+ "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": "coreui:build"
- },
"configurations": {
"production": {
- "browserTarget": "coreui:build:production"
+ "buildTarget": "coreui-demo:build:production"
+ },
+ "development": {
+ "buildTarget": "coreui-demo:build:development"
}
- }
+ },
+ "defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
- "browserTarget": "coreui:build"
+ "buildTarget": "coreui-demo:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
- "polyfills": "src/polyfills.ts",
+ "polyfills": [
+ "@angular/localize/init",
+ "zone.js",
+ "zone.js/testing"
+ ],
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
+ "inlineStyleLanguage": "scss",
"styles": [
- "src/styles.css"
+ "src/scss/style.scss"
],
"scripts": [],
"assets": [
@@ -81,82 +113,76 @@
]
}
},
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
+ "cypress-run": {
+ "builder": "@cypress/schematic:cypress",
"options": {
- "tsConfig": [
- "src/tsconfig.app.json",
- "src/tsconfig.spec.json"
- ],
- "exclude": [
- "**/node_modules/**"
- ]
+ "devServerTarget": "coreui-demo:serve"
+ },
+ "configurations": {
+ "production": {
+ "devServerTarget": "coreui-demo:serve:production"
+ }
}
- }
- }
- },
- "coreui-e2e": {
- "root": "e2e/",
- "projectType": "application",
- "architect": {
- "e2e": {
- "builder": "@angular-devkit/build-angular:protractor",
+ },
+ "cypress-open": {
+ "builder": "@cypress/schematic:cypress",
"options": {
- "protractorConfig": "e2e/protractor.conf.js",
- "devServerTarget": "coreui:serve"
+ "watch": true,
+ "headless": false
}
},
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
+ "e2e": {
+ "builder": "@cypress/schematic:cypress",
"options": {
- "tsConfig": "e2e/tsconfig.e2e.json",
- "exclude": [
- "**/node_modules/**"
- ]
+ "devServerTarget": "coreui-demo:serve",
+ "watch": false,
+ "headless": true
+ },
+ "configurations": {
+ "production": {
+ "devServerTarget": "coreui-demo:serve:production"
+ }
}
}
}
},
- "@coreui/angular": {
- "root": "projects/coreui/angular",
- "sourceRoot": "projects/coreui/angular/src",
+ "coreui-angular": {
"projectType": "library",
+ "root": "projects/coreui-angular",
+ "sourceRoot": "projects/coreui-angular/src",
"prefix": "lib",
"architect": {
"build": {
- "builder": "@angular-devkit/build-ng-packagr:build",
+ "builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
- "tsConfig": "projects/coreui/angular/tsconfig.lib.json",
- "project": "projects/coreui/angular/ng-package.json"
+ "project": "projects/coreui-angular/ng-package.json"
},
"configurations": {
"production": {
- "project": "projects/coreui/angular/ng-package.prod.json"
+ "tsConfig": "projects/coreui-angular/tsconfig.lib.prod.json"
+ },
+ "development": {
+ "tsConfig": "projects/coreui-angular/tsconfig.lib.json"
}
- }
+ },
+ "defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
- "main": "projects/coreui/angular/src/test.ts",
- "tsConfig": "projects/coreui/angular/tsconfig.spec.json",
- "karmaConfig": "projects/coreui/angular/karma.conf.js"
- }
- },
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
- "options": {
- "tsConfig": [
- "projects/coreui/angular/tsconfig.lib.json",
- "projects/coreui/angular/tsconfig.spec.json"
- ],
- "exclude": [
- "**/node_modules/**"
- ]
+ "main": "projects/coreui-angular/src/test.ts",
+ "tsConfig": "projects/coreui-angular/tsconfig.spec.json",
+ "karmaConfig": "projects/coreui-angular/karma.conf.js"
}
}
}
}
},
- "defaultProject": "coreui"
+ "cli": {
+ "analytics": false,
+ "schematicCollections": [
+ "@cypress/schematic",
+ "@schematics/angular"
+ ]
+ }
}
diff --git a/browserslist b/browserslist
deleted file mode 100644
index 8e09ab49..00000000
--- a/browserslist
+++ /dev/null
@@ -1,9 +0,0 @@
-# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
-# For additional information regarding the format and rule options, please see:
-# https://github.com/browserslist/browserslist#queries
-# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
-> 0.5%
-last 2 versions
-Firefox ESR
-not dead
-# IE 9-11
\ No newline at end of file
diff --git a/cypress.config.ts b/cypress.config.ts
new file mode 100644
index 00000000..c038da15
--- /dev/null
+++ b/cypress.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from 'cypress'
+
+export default defineConfig({
+
+ e2e: {
+ 'baseUrl': 'http://localhost:4200'
+ },
+
+})
diff --git a/cypress/e2e/spec.cy.ts b/cypress/e2e/spec.cy.ts
new file mode 100644
index 00000000..cc3b5a74
--- /dev/null
+++ b/cypress/e2e/spec.cy.ts
@@ -0,0 +1,41 @@
+///
+
+describe('CoreUI v2 template', () => {
+
+ beforeEach(() => {
+ cy.visit('/');
+ });
+
+ it('should display CoreUI Dashboard', () => {
+ cy.viewport(600, 800);
+ const paragraph = cy.get('ng-component');
+ paragraph.should('contain.text', 'CoreUI Dashboard');
+ });
+
+ it('should toggle `sidebar-minimized` body.class on `sidebar-minimizer` click', () => {
+ cy.viewport('macbook-16');
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'sidebar-minimized');
+ cy.get('.sidebar-minimizer').click();
+ cy.get('.app').invoke('attr', 'class').should('contain', 'sidebar-minimized');
+ cy.get('.sidebar-minimizer').click();
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'sidebar-minimized');
+ });
+
+ it('should toggle `sidebar-show` body.class on `navbar-toggler` click', () => {
+ cy.viewport(600, 800);
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'sidebar-show');
+ cy.get('.navbar-toggler.d-lg-none').first().click();
+ cy.get('.app').invoke('attr', 'class').should('contain', 'sidebar-show');
+ cy.get('.navbar-toggler').first().click();
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'sidebar-show');
+ });
+
+ it('should toggle `aside-menu-lg-show` body.class on `navbar-toggler` click', () => {
+ cy.viewport('macbook-16');
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'aside-menu-lg-show');
+ cy.get('.navbar-toggler.d-none.d-lg-block').last().click();
+ cy.get('.app').invoke('attr', 'class').should('contain', 'aside-menu-lg-show');
+ cy.get('.navbar-toggler.d-none.d-lg-block').last().click();
+ cy.get('.app').invoke('attr', 'class').should('not.contain', 'aside-menu-lg-show');
+ });
+});
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
new file mode 100644
index 00000000..20b22a17
--- /dev/null
+++ b/cypress/fixtures/example.json
@@ -0,0 +1,5 @@
+{
+ "name": "Using fixtures to represent data",
+ "email": "hello@cypress.io"
+}
+
\ No newline at end of file
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
new file mode 100644
index 00000000..af1f44a0
--- /dev/null
+++ b/cypress/support/commands.ts
@@ -0,0 +1,43 @@
+// ***********************************************
+// This example namespace declaration will help
+// with Intellisense and code completion in your
+// IDE or Text Editor.
+// ***********************************************
+// declare namespace Cypress {
+// interface Chainable {
+// customCommand(param: any): typeof customCommand;
+// }
+// }
+//
+// function customCommand(param: any): void {
+// console.warn(param);
+// }
+//
+// NOTE: You can use it like so:
+// Cypress.Commands.add('customCommand', customCommand);
+//
+// ***********************************************
+// This example commands.js shows you how to
+// create various custom commands and overwrite
+// existing commands.
+//
+// For more comprehensive examples of custom
+// commands please read more here:
+// https://on.cypress.io/custom-commands
+// ***********************************************
+//
+//
+// -- This is a parent command --
+// Cypress.Commands.add("login", (email, password) => { ... })
+//
+//
+// -- This is a child command --
+// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
+//
+//
+// -- This is a dual command --
+// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
+//
+//
+// -- This will overwrite an existing command --
+// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts
new file mode 100644
index 00000000..55540ff7
--- /dev/null
+++ b/cypress/support/e2e.ts
@@ -0,0 +1,17 @@
+// ***********************************************************
+// This example support/e2e.ts is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// When a command from ./commands is ready to use, import with `import './commands'` syntax
+// import './commands';
diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json
new file mode 100644
index 00000000..9202a7ab
--- /dev/null
+++ b/cypress/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../tsconfig.json",
+ "include": ["**/*.ts"],
+ "compilerOptions": {
+ "sourceMap": false,
+ "types": ["cypress"],
+ },
+ "exclude": [],
+}
diff --git a/dist/@coreui/angular/README.md b/dist/@coreui/angular/README.md
deleted file mode 100644
index f136003c..00000000
--- a/dist/@coreui/angular/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# [@coreui/angular](https://coreui.io/angular)
-
-[](https://github.com/coreui/angular)
-[![npm package][npm-coreui-angular-badge]][npm-coreui-angular]
-[![NPM downloads][npm-coreui-angular-download]][npm-coreui-angular]
-[](https://github.com/coreui/coreui-angular)
-[![npm-coreui-angular-next][npm-coreui-angular-next]][npm-coreui-angular]
-[](https://github.com/coreui/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]: https://img.shields.io/npm/v/@coreui/angular.png?style=flat-square
-[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.png?style=flat-square
-[npm-coreui]: https://www.npmjs.com/package/@coreui/coreui
-[npm-coreui-badge]: https://img.shields.io/npm/v/@coreui/coreui.png?style=flat-square
-[npm-coreui-download]: https://img.shields.io/npm/dm/@coreui/coreui.svg?style=flat-square
-
-> [@coreui/angular](https://coreui.io/angular) v2 library project
-> for use with [CoreUI](https://coreui.io/angular/) v2 Bootstrap Admin Template
-
-
-#### Prerequisites
-Before you begin, make sure your development environment includes `Node.js®` and an `npm` package manager.
-
-###### Node.js
-Angular requires `Node.js` version 8.x or 10.x.
-
-- 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
-```
-
-### Installation
-Go to the workspace folder and install `@coreui/angular` as a dependency.
-```bash
-npm install @coreui/angular
-```
-
-### Changelog
-
-See the GitHub [release history](https://github.com/coreui/coreui-angular/releases).
-
-### Contributing
-
-See [CONTRIBUTING.md](https://github.com/coreui/coreui-angular/blob/master/CONTRIBUTING.md).
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js b/dist/@coreui/angular/bundles/coreui-angular.umd.js
deleted file mode 100644
index e5b07678..00000000
--- a/dist/@coreui/angular/bundles/coreui-angular.umd.js
+++ /dev/null
@@ -1,2097 +0,0 @@
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/router'), require('rxjs'), require('rxjs/operators')) :
- typeof define === 'function' && define.amd ? define('@coreui/angular', ['exports', '@angular/common', '@angular/core', '@angular/router', 'rxjs', 'rxjs/operators'], factory) :
- (global = global || self, factory((global.coreui = global.coreui || {}, global.coreui.angular = {}), global.ng.common, global.ng.core, global.ng.router, global.rxjs, global.rxjs.operators));
-}(this, function (exports, common, core, router, rxjs, operators) { 'use strict';
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /** @type {?} */
- var sidebarCssClasses = [
- 'sidebar-show',
- 'sidebar-sm-show',
- 'sidebar-md-show',
- 'sidebar-lg-show',
- 'sidebar-xl-show'
- ];
- /** @type {?} */
- var asideMenuCssClasses = [
- 'aside-menu-show',
- 'aside-menu-sm-show',
- 'aside-menu-md-show',
- 'aside-menu-lg-show',
- 'aside-menu-xl-show'
- ];
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var ClassToggler = /** @class */ (function () {
- function ClassToggler(document, renderer) {
- this.document = document;
- this.renderer = renderer;
- }
- /**
- * @param {?} NewClassNames
- * @return {?}
- */
- ClassToggler.prototype.removeClasses = /**
- * @param {?} NewClassNames
- * @return {?}
- */
- function (NewClassNames) {
- var _this = this;
- /** @type {?} */
- var MatchClasses = NewClassNames.map((/**
- * @param {?} Class
- * @return {?}
- */
- function (Class) { return _this.document.body.classList.contains(Class); }));
- return MatchClasses.indexOf(true) !== -1;
- };
- /**
- * @param {?} Toggle
- * @param {?} ClassNames
- * @return {?}
- */
- ClassToggler.prototype.toggleClasses = /**
- * @param {?} Toggle
- * @param {?} ClassNames
- * @return {?}
- */
- function (Toggle, ClassNames) {
- var _this = this;
- /** @type {?} */
- var Level = ClassNames.indexOf(Toggle);
- /** @type {?} */
- var NewClassNames = ClassNames.slice(0, Level + 1);
- if (this.removeClasses(NewClassNames)) {
- NewClassNames.map((/**
- * @param {?} Class
- * @return {?}
- */
- function (Class) { return _this.renderer.removeClass(_this.document.body, Class); }));
- }
- else {
- this.renderer.addClass(this.document.body, Toggle);
- }
- };
- ClassToggler.decorators = [
- { type: core.Injectable }
- ];
- /** @nocollapse */
- ClassToggler.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 }
- ]; };
- return ClassToggler;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Allows the sidebar to be toggled via click.
- */
- var SidebarToggleDirective = /** @class */ (function () {
- function SidebarToggleDirective(classToggler) {
- this.classToggler = classToggler;
- }
- /**
- * @return {?}
- */
- SidebarToggleDirective.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.bp = this.breakpoint;
- };
- /**
- * @param {?} $event
- * @return {?}
- */
- SidebarToggleDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var cssClass = this.bp ? "sidebar-" + this.bp + "-show" : sidebarCssClasses[0];
- this.classToggler.toggleClasses(cssClass, sidebarCssClasses);
- };
- SidebarToggleDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appSidebarToggler]',
- providers: [ClassToggler]
- },] }
- ];
- /** @nocollapse */
- SidebarToggleDirective.ctorParameters = function () { return [
- { type: ClassToggler }
- ]; };
- SidebarToggleDirective.propDecorators = {
- breakpoint: [{ type: core.Input, args: ['appSidebarToggler',] }],
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return SidebarToggleDirective;
- }());
- var SidebarMinimizeDirective = /** @class */ (function () {
- function SidebarMinimizeDirective(document, renderer) {
- this.document = document;
- this.renderer = renderer;
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- SidebarMinimizeDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var body = this.document.body;
- body.classList.contains('sidebar-minimized') ?
- this.renderer.removeClass(body, 'sidebar-minimized') :
- this.renderer.addClass(body, 'sidebar-minimized');
- };
- SidebarMinimizeDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appSidebarMinimizer]'
- },] }
- ];
- /** @nocollapse */
- SidebarMinimizeDirective.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 }
- ]; };
- SidebarMinimizeDirective.propDecorators = {
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return SidebarMinimizeDirective;
- }());
- var MobileSidebarToggleDirective = /** @class */ (function () {
- function MobileSidebarToggleDirective(document, renderer) {
- this.document = document;
- this.renderer = renderer;
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- MobileSidebarToggleDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var body = this.document.body;
- body.classList.contains('sidebar-show') ?
- this.renderer.removeClass(body, 'sidebar-show') :
- this.renderer.addClass(body, 'sidebar-show');
- };
- MobileSidebarToggleDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appMobileSidebarToggler]'
- },] }
- ];
- /** @nocollapse */
- MobileSidebarToggleDirective.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 }
- ]; };
- MobileSidebarToggleDirective.propDecorators = {
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return MobileSidebarToggleDirective;
- }());
- /**
- * Allows the off-canvas sidebar to be closed via click.
- */
- var SidebarOffCanvasCloseDirective = /** @class */ (function () {
- function SidebarOffCanvasCloseDirective(document, renderer) {
- this.document = document;
- this.renderer = renderer;
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- SidebarOffCanvasCloseDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var body = this.document.body;
- if (body.classList.contains('sidebar-off-canvas')) {
- body.classList.contains('sidebar-show') ?
- this.renderer.removeClass(body, 'sidebar-show') :
- this.renderer.addClass(body, 'sidebar-show');
- }
- };
- SidebarOffCanvasCloseDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appSidebarClose]'
- },] }
- ];
- /** @nocollapse */
- SidebarOffCanvasCloseDirective.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 }
- ]; };
- SidebarOffCanvasCloseDirective.propDecorators = {
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return SidebarOffCanvasCloseDirective;
- }());
- var BrandMinimizeDirective = /** @class */ (function () {
- function BrandMinimizeDirective(document, renderer) {
- this.document = document;
- this.renderer = renderer;
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- BrandMinimizeDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var body = this.document.body;
- body.classList.contains('brand-minimized') ?
- this.renderer.removeClass(body, 'brand-minimized') :
- this.renderer.addClass(body, 'brand-minimized');
- };
- BrandMinimizeDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appBrandMinimizer]'
- },] }
- ];
- /** @nocollapse */
- BrandMinimizeDirective.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 }
- ]; };
- BrandMinimizeDirective.propDecorators = {
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return BrandMinimizeDirective;
- }());
- /**
- * Allows the aside to be toggled via click.
- */
- var AsideToggleDirective = /** @class */ (function () {
- function AsideToggleDirective(classToggler) {
- this.classToggler = classToggler;
- }
- /**
- * @return {?}
- */
- AsideToggleDirective.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.bp = this.breakpoint;
- };
- /**
- * @param {?} $event
- * @return {?}
- */
- AsideToggleDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var cssClass = this.bp ? "aside-menu-" + this.bp + "-show" : asideMenuCssClasses[0];
- this.classToggler.toggleClasses(cssClass, asideMenuCssClasses);
- };
- AsideToggleDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appAsideMenuToggler]',
- providers: [ClassToggler]
- },] }
- ];
- /** @nocollapse */
- AsideToggleDirective.ctorParameters = function () { return [
- { type: ClassToggler }
- ]; };
- AsideToggleDirective.propDecorators = {
- breakpoint: [{ type: core.Input, args: ['appAsideMenuToggler',] }],
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return AsideToggleDirective;
- }());
- var HtmlAttributesDirective = /** @class */ (function () {
- function HtmlAttributesDirective(renderer, el) {
- this.renderer = renderer;
- this.el = el;
- }
- /**
- * @return {?}
- */
- HtmlAttributesDirective.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var attribs = this.appHtmlAttr;
- for (var attr in attribs) {
- if (attr === 'style' && typeof (attribs[attr]) === 'object') {
- this.setStyle(attribs[attr]);
- }
- else if (attr === 'class') {
- this.addClass(attribs[attr]);
- }
- else {
- this.setAttrib(attr, attribs[attr]);
- }
- }
- };
- /**
- * @private
- * @param {?} styles
- * @return {?}
- */
- HtmlAttributesDirective.prototype.setStyle = /**
- * @private
- * @param {?} styles
- * @return {?}
- */
- function (styles) {
- for (var style in styles) {
- this.renderer.setStyle(this.el.nativeElement, style, styles[style]);
- }
- };
- /**
- * @private
- * @param {?} classes
- * @return {?}
- */
- HtmlAttributesDirective.prototype.addClass = /**
- * @private
- * @param {?} classes
- * @return {?}
- */
- function (classes) {
- var _this = this;
- /** @type {?} */
- var classArray = (Array.isArray(classes) ? classes : classes.split(' '));
- classArray.filter((/**
- * @param {?} element
- * @return {?}
- */
- function (element) { return element.length > 0; })).forEach((/**
- * @param {?} element
- * @return {?}
- */
- function (element) {
- _this.renderer.addClass(_this.el.nativeElement, element);
- }));
- };
- /**
- * @private
- * @param {?} key
- * @param {?} value
- * @return {?}
- */
- HtmlAttributesDirective.prototype.setAttrib = /**
- * @private
- * @param {?} key
- * @param {?} value
- * @return {?}
- */
- function (key, value) {
- value !== null ?
- this.renderer.setAttribute(this.el.nativeElement, key, value) :
- this.renderer.removeAttribute(this.el.nativeElement, key);
- };
- HtmlAttributesDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appHtmlAttr]'
- },] }
- ];
- /** @nocollapse */
- HtmlAttributesDirective.ctorParameters = function () { return [
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- HtmlAttributesDirective.propDecorators = {
- appHtmlAttr: [{ type: core.Input }]
- };
- return HtmlAttributesDirective;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var LayoutModule = /** @class */ (function () {
- function LayoutModule() {
- }
- LayoutModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [
- common.CommonModule
- ],
- exports: [
- AsideToggleDirective,
- BrandMinimizeDirective,
- MobileSidebarToggleDirective,
- SidebarToggleDirective,
- SidebarMinimizeDirective,
- SidebarOffCanvasCloseDirective,
- HtmlAttributesDirective
- ],
- declarations: [
- AsideToggleDirective,
- BrandMinimizeDirective,
- MobileSidebarToggleDirective,
- SidebarToggleDirective,
- SidebarMinimizeDirective,
- SidebarOffCanvasCloseDirective,
- HtmlAttributesDirective
- ],
- providers: [
- ClassToggler
- ]
- },] }
- ];
- return LayoutModule;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * @param {?} el
- * @return {?}
- */
- function Replace(el) {
- /** @type {?} */
- var nativeElement = el.nativeElement;
- /** @type {?} */
- var parentElement = nativeElement.parentElement;
- // move all children out of the element
- while (nativeElement.firstChild) {
- parentElement.insertBefore(nativeElement.firstChild, nativeElement);
- }
- // remove the empty element(the host)
- parentElement.removeChild(nativeElement);
- }
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppAsideComponent = /** @class */ (function () {
- function AppAsideComponent(document, renderer, hostElement) {
- this.document = document;
- this.renderer = renderer;
- this.hostElement = hostElement;
- this.fixedClass = 'aside-menu-fixed';
- renderer.addClass(hostElement.nativeElement, 'aside-menu');
- }
- /**
- * @return {?}
- */
- AppAsideComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.isFixed(this.fixed);
- this.isOffCanvas(this.offCanvas);
- this.displayBreakpoint(this.display);
- };
- /**
- * @return {?}
- */
- AppAsideComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, this.fixedClass);
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- AppAsideComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, this.fixedClass);
- }
- };
- /**
- * @param {?=} offCanvas
- * @return {?}
- */
- AppAsideComponent.prototype.isOffCanvas = /**
- * @param {?=} offCanvas
- * @return {?}
- */
- function (offCanvas) {
- if (offCanvas === void 0) { offCanvas = this.offCanvas; }
- if (offCanvas) {
- this.renderer.addClass(this.document.body, 'aside-menu-off-canvas');
- }
- };
- /**
- * @param {?=} display
- * @return {?}
- */
- AppAsideComponent.prototype.displayBreakpoint = /**
- * @param {?=} display
- * @return {?}
- */
- function (display) {
- if (display === void 0) { display = this.display; }
- if (display !== false) {
- /** @type {?} */
- var cssClass = this.display ? "aside-menu-" + this.display + "-show" : asideMenuCssClasses[0];
- this.renderer.addClass(this.document.body, cssClass);
- }
- };
- AppAsideComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-aside, cui-aside',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppAsideComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppAsideComponent.propDecorators = {
- display: [{ type: core.Input }],
- fixed: [{ type: core.Input }],
- offCanvas: [{ type: core.Input }]
- };
- return AppAsideComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppAsideModule = /** @class */ (function () {
- function AppAsideModule() {
- }
- AppAsideModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [
- common.CommonModule,
- LayoutModule
- ],
- exports: [
- AppAsideComponent,
- LayoutModule
- ],
- declarations: [
- AppAsideComponent
- ]
- },] }
- ];
- return AppAsideModule;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppBreadcrumbService = /** @class */ (function () {
- function AppBreadcrumbService(router$1, route) {
- var _this = this;
- this.router = router$1;
- this.route = route;
- this._breadcrumbs = new rxjs.BehaviorSubject(new Array());
- this.breadcrumbs = this._breadcrumbs.asObservable();
- this.router.events.pipe(operators.filter((/**
- * @param {?} event
- * @return {?}
- */
- function (event) { return event instanceof router.NavigationEnd; }))).subscribe((/**
- * @param {?} event
- * @return {?}
- */
- function (event) {
- /** @type {?} */
- var breadcrumbs = [];
- /** @type {?} */
- var currentRoute = _this.route.root;
- /** @type {?} */
- var url = '';
- do {
- /** @type {?} */
- var childrenRoutes = currentRoute.children;
- currentRoute = null;
- // tslint:disable-next-line:no-shadowed-variable
- childrenRoutes.forEach((/**
- * @param {?} route
- * @return {?}
- */
- function (route) {
- if (route.outlet === 'primary') {
- /** @type {?} */
- var routeSnapshot = route.snapshot;
- url += '/' + routeSnapshot.url.map((/**
- * @param {?} segment
- * @return {?}
- */
- function (segment) { return segment.path; })).join('/');
- breadcrumbs.push({
- label: route.snapshot.data,
- url: url
- });
- currentRoute = route;
- }
- }));
- } while (currentRoute);
- _this._breadcrumbs.next(Object.assign([], breadcrumbs));
- return breadcrumbs;
- }));
- }
- AppBreadcrumbService.decorators = [
- { type: core.Injectable }
- ];
- /** @nocollapse */
- AppBreadcrumbService.ctorParameters = function () { return [
- { type: router.Router },
- { type: router.ActivatedRoute }
- ]; };
- return AppBreadcrumbService;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppBreadcrumbComponent = /** @class */ (function () {
- function AppBreadcrumbComponent(document, renderer, service, el) {
- this.document = document;
- this.renderer = renderer;
- this.service = service;
- this.el = el;
- this.fixedClass = 'breadcrumb-fixed';
- }
- /**
- * @return {?}
- */
- AppBreadcrumbComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- Replace(this.el);
- this.isFixed(this.fixed);
- this.breadcrumbs = this.service.breadcrumbs;
- };
- /**
- * @return {?}
- */
- AppBreadcrumbComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, this.fixedClass);
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- AppBreadcrumbComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, this.fixedClass);
- }
- };
- AppBreadcrumbComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-breadcrumb',
- template: "\n \n \n {{breadcrumb.label.title}}\n {{breadcrumb.label.title}}\n \n \n "
- }] }
- ];
- /** @nocollapse */
- AppBreadcrumbComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: AppBreadcrumbService },
- { type: core.ElementRef }
- ]; };
- AppBreadcrumbComponent.propDecorators = {
- fixed: [{ type: core.Input }]
- };
- return AppBreadcrumbComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var CuiBreadcrumbComponent = /** @class */ (function () {
- function CuiBreadcrumbComponent(document, renderer, service) {
- this.document = document;
- this.renderer = renderer;
- this.service = service;
- this.fixedClass = 'breadcrumb-fixed';
- }
- /**
- * @return {?}
- */
- CuiBreadcrumbComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.isFixed(this.fixed);
- this.breadcrumbs = this.service.breadcrumbs;
- };
- /**
- * @return {?}
- */
- CuiBreadcrumbComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, this.fixedClass);
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- CuiBreadcrumbComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, this.fixedClass);
- }
- };
- CuiBreadcrumbComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'cui-breadcrumb',
- template: "\r\n \r\n - \r\n {{breadcrumb.label.title}}\r\n {{breadcrumb.label.title}}\r\n
\r\n \r\n \r\n
\r\n"
- }] }
- ];
- /** @nocollapse */
- CuiBreadcrumbComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: AppBreadcrumbService }
- ]; };
- CuiBreadcrumbComponent.propDecorators = {
- fixed: [{ type: core.Input }]
- };
- return CuiBreadcrumbComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- // @dynamic
- var AppBreadcrumbModule = /** @class */ (function () {
- function AppBreadcrumbModule() {
- }
- /**
- * @param {?=} config
- * @return {?}
- */
- AppBreadcrumbModule.forRoot = /**
- * @param {?=} config
- * @return {?}
- */
- function (config) {
- return {
- ngModule: AppBreadcrumbModule,
- providers: [
- AppBreadcrumbService
- ]
- };
- };
- AppBreadcrumbModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [common.CommonModule, router.RouterModule],
- exports: [AppBreadcrumbComponent, CuiBreadcrumbComponent],
- declarations: [AppBreadcrumbComponent, CuiBreadcrumbComponent]
- },] }
- ];
- return AppBreadcrumbModule;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppFooterComponent = /** @class */ (function () {
- function AppFooterComponent(document, renderer, hostElement) {
- this.document = document;
- this.renderer = renderer;
- this.hostElement = hostElement;
- this.fixedClass = 'footer-fixed';
- renderer.addClass(hostElement.nativeElement, 'app-footer');
- }
- /**
- * @return {?}
- */
- AppFooterComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.isFixed(this.fixed);
- };
- /**
- * @return {?}
- */
- AppFooterComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, this.fixedClass);
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- AppFooterComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, this.fixedClass);
- }
- };
- AppFooterComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-footer, cui-footer',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppFooterComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppFooterComponent.propDecorators = {
- fixed: [{ type: core.Input }]
- };
- return AppFooterComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppFooterModule = /** @class */ (function () {
- function AppFooterModule() {
- }
- AppFooterModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [common.CommonModule],
- exports: [AppFooterComponent],
- declarations: [AppFooterComponent]
- },] }
- ];
- return AppFooterModule;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppHeaderComponent = /** @class */ (function () {
- function AppHeaderComponent(document, renderer, hostElement) {
- this.document = document;
- this.renderer = renderer;
- this.hostElement = hostElement;
- this.navbarBrandText = { icon: '🅲', text: '🅲 CoreUI' };
- // deprecated, use navbarBrandRouterLink instead
- this.navbarBrandRouterLink = '';
- this.fixedClass = 'header-fixed';
- this.breakpoints = ['xl', 'lg', 'md', 'sm', 'xs'];
- this.sidebarTogglerClass = 'd-none d-md-block';
- this.sidebarTogglerMobileClass = 'd-lg-none';
- this.asideTogglerClass = 'd-none d-md-block';
- this.asideTogglerMobileClass = 'd-lg-none';
- renderer.addClass(hostElement.nativeElement, 'app-header');
- renderer.addClass(hostElement.nativeElement, 'navbar');
- }
- /**
- * @return {?}
- */
- AppHeaderComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.isFixed(this.fixed);
- this.navbarBrandImg = Boolean(this.navbarBrand || this.navbarBrandFull || this.navbarBrandMinimized);
- this.navbarBrandRouterLink = this.navbarBrandRouterLink[0] ? this.navbarBrandRouterLink : this.navbarBrandHref;
- this.sidebarTogglerClass = this.setToggerBreakpointClass((/** @type {?} */ (this.sidebarToggler)));
- this.sidebarTogglerMobileClass = this.setToggerMobileBreakpointClass((/** @type {?} */ (this.sidebarToggler)));
- this.asideTogglerClass = this.setToggerBreakpointClass((/** @type {?} */ (this.asideMenuToggler)));
- this.asideTogglerMobileClass = this.setToggerMobileBreakpointClass((/** @type {?} */ (this.asideMenuToggler)));
- };
- /**
- * @return {?}
- */
- AppHeaderComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, this.fixedClass);
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- AppHeaderComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, this.fixedClass);
- }
- };
- /**
- * @param {?=} breakpoint
- * @return {?}
- */
- AppHeaderComponent.prototype.setToggerBreakpointClass = /**
- * @param {?=} breakpoint
- * @return {?}
- */
- function (breakpoint) {
- if (breakpoint === void 0) { breakpoint = 'md'; }
- /** @type {?} */
- var togglerClass = 'd-none d-md-block';
- if (this.breakpoints.includes(breakpoint)) {
- /** @type {?} */
- var breakpointIndex = this.breakpoints.indexOf(breakpoint);
- togglerClass = "d-none d-" + breakpoint + "-block";
- }
- return togglerClass;
- };
- /**
- * @param {?=} breakpoint
- * @return {?}
- */
- AppHeaderComponent.prototype.setToggerMobileBreakpointClass = /**
- * @param {?=} breakpoint
- * @return {?}
- */
- function (breakpoint) {
- if (breakpoint === void 0) { breakpoint = 'lg'; }
- /** @type {?} */
- var togglerClass = 'd-lg-none';
- if (this.breakpoints.includes(breakpoint)) {
- togglerClass = "d-" + breakpoint + "-none";
- }
- return togglerClass;
- };
- AppHeaderComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-header, cui-header',
- template: "\n \n\n\n \n
\n
\n
\n \n \n \n \n \n\n\n \n\n\n\n \n\n\n \n\n"
- }] }
- ];
- /** @nocollapse */
- AppHeaderComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppHeaderComponent.propDecorators = {
- fixed: [{ type: core.Input }],
- navbarBrand: [{ type: core.Input }],
- navbarBrandFull: [{ type: core.Input }],
- navbarBrandMinimized: [{ type: core.Input }],
- navbarBrandText: [{ type: core.Input }],
- navbarBrandHref: [{ type: core.Input }],
- navbarBrandRouterLink: [{ type: core.Input }],
- sidebarToggler: [{ type: core.Input }],
- mobileSidebarToggler: [{ type: core.Input }],
- asideMenuToggler: [{ type: core.Input }],
- mobileAsideMenuToggler: [{ type: core.Input }]
- };
- return AppHeaderComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppHeaderModule = /** @class */ (function () {
- function AppHeaderModule() {
- }
- AppHeaderModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [
- common.CommonModule,
- router.RouterModule,
- LayoutModule
- ],
- exports: [
- AppHeaderComponent,
- LayoutModule
- ],
- declarations: [
- AppHeaderComponent
- ]
- },] }
- ];
- return AppHeaderModule;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarComponent = /** @class */ (function () {
- function AppSidebarComponent(document, renderer, hostElement) {
- this.document = document;
- this.renderer = renderer;
- this.hostElement = hostElement;
- renderer.addClass(hostElement.nativeElement, 'sidebar');
- }
- /**
- * @return {?}
- */
- AppSidebarComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.displayBreakpoint(this.display);
- this.isCompact(this.compact);
- this.isFixed(this.fixed);
- this.isMinimized(this.minimized);
- this.isOffCanvas(this.offCanvas);
- };
- /**
- * @return {?}
- */
- AppSidebarComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.renderer.removeClass(this.document.body, 'sidebar-fixed');
- };
- /**
- * @param {?=} compact
- * @return {?}
- */
- AppSidebarComponent.prototype.isCompact = /**
- * @param {?=} compact
- * @return {?}
- */
- function (compact) {
- if (compact === void 0) { compact = this.compact; }
- if (compact) {
- this.renderer.addClass(this.document.body, 'sidebar-compact');
- }
- };
- /**
- * @param {?=} fixed
- * @return {?}
- */
- AppSidebarComponent.prototype.isFixed = /**
- * @param {?=} fixed
- * @return {?}
- */
- function (fixed) {
- if (fixed === void 0) { fixed = this.fixed; }
- if (fixed) {
- this.renderer.addClass(this.document.body, 'sidebar-fixed');
- }
- };
- /**
- * @param {?=} minimized
- * @return {?}
- */
- AppSidebarComponent.prototype.isMinimized = /**
- * @param {?=} minimized
- * @return {?}
- */
- function (minimized) {
- if (minimized === void 0) { minimized = this.minimized; }
- if (minimized) {
- this.renderer.addClass(this.document.body, 'sidebar-minimized');
- }
- };
- /**
- * @param {?=} offCanvas
- * @return {?}
- */
- AppSidebarComponent.prototype.isOffCanvas = /**
- * @param {?=} offCanvas
- * @return {?}
- */
- function (offCanvas) {
- if (offCanvas === void 0) { offCanvas = this.offCanvas; }
- if (offCanvas) {
- this.renderer.addClass(this.document.body, 'sidebar-off-canvas');
- }
- };
- /**
- * @param {?=} display
- * @return {?}
- */
- AppSidebarComponent.prototype.displayBreakpoint = /**
- * @param {?=} display
- * @return {?}
- */
- function (display) {
- if (display === void 0) { display = this.display; }
- if (display !== false) {
- /** @type {?} */
- var cssClass = display ? "sidebar-" + display + "-show" : sidebarCssClasses[0];
- this.renderer.addClass(this.document.body, cssClass);
- }
- };
- AppSidebarComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppSidebarComponent.propDecorators = {
- compact: [{ type: core.Input }],
- display: [{ type: core.Input }],
- fixed: [{ type: core.Input }],
- minimized: [{ type: core.Input }],
- offCanvas: [{ type: core.Input }]
- };
- return AppSidebarComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarFooterComponent = /** @class */ (function () {
- function AppSidebarFooterComponent(renderer, hostElement) {
- this.renderer = renderer;
- this.hostElement = hostElement;
- renderer.addClass(hostElement.nativeElement, 'app-sidebar-footer');
- }
- /**
- * @return {?}
- */
- AppSidebarFooterComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () { };
- AppSidebarFooterComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-footer',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarFooterComponent.ctorParameters = function () { return [
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- return AppSidebarFooterComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarFormComponent = /** @class */ (function () {
- function AppSidebarFormComponent(renderer, hostElement) {
- this.renderer = renderer;
- this.hostElement = hostElement;
- renderer.addClass(hostElement.nativeElement, 'sidebar-form');
- }
- /**
- * @return {?}
- */
- AppSidebarFormComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () { };
- AppSidebarFormComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-form',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarFormComponent.ctorParameters = function () { return [
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- return AppSidebarFormComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarHeaderComponent = /** @class */ (function () {
- function AppSidebarHeaderComponent(renderer, hostElement) {
- this.renderer = renderer;
- this.hostElement = hostElement;
- renderer.addClass(hostElement.nativeElement, 'sidebar-header');
- }
- /**
- * @return {?}
- */
- AppSidebarHeaderComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () { };
- AppSidebarHeaderComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-header',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarHeaderComponent.ctorParameters = function () { return [
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- return AppSidebarHeaderComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarMinimizerComponent = /** @class */ (function () {
- function AppSidebarMinimizerComponent(document, renderer, hostElement) {
- this.document = document;
- this.renderer = renderer;
- this.hostElement = hostElement;
- this.role = 'button';
- renderer.addClass(hostElement.nativeElement, 'sidebar-minimizer');
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- AppSidebarMinimizerComponent.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- /** @type {?} */
- var body = this.document.body;
- body.classList.contains('sidebar-minimized') ?
- this.renderer.removeClass(body, 'sidebar-minimized') :
- this.renderer.addClass(body, 'sidebar-minimized');
- body.classList.contains('brand-minimized') ?
- this.renderer.removeClass(body, 'brand-minimized') :
- this.renderer.addClass(body, 'brand-minimized');
- };
- /**
- * @return {?}
- */
- AppSidebarMinimizerComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () { };
- AppSidebarMinimizerComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-minimizer',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarMinimizerComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppSidebarMinimizerComponent.propDecorators = {
- role: [{ type: core.HostBinding, args: ['attr.role',] }],
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return AppSidebarMinimizerComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var NavDropdownDirective = /** @class */ (function () {
- function NavDropdownDirective(el) {
- this.el = el;
- }
- /**
- * @return {?}
- */
- NavDropdownDirective.prototype.toggle = /**
- * @return {?}
- */
- function () {
- this.el.nativeElement.classList.toggle('open');
- };
- NavDropdownDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appNavDropdown]'
- },] }
- ];
- /** @nocollapse */
- NavDropdownDirective.ctorParameters = function () { return [
- { type: core.ElementRef }
- ]; };
- return NavDropdownDirective;
- }());
- /**
- * Allows the dropdown to be toggled via click.
- */
- var NavDropdownToggleDirective = /** @class */ (function () {
- function NavDropdownToggleDirective(dropdown) {
- this.dropdown = dropdown;
- }
- /**
- * @param {?} $event
- * @return {?}
- */
- NavDropdownToggleDirective.prototype.toggleOpen = /**
- * @param {?} $event
- * @return {?}
- */
- function ($event) {
- $event.preventDefault();
- this.dropdown.toggle();
- };
- NavDropdownToggleDirective.decorators = [
- { type: core.Directive, args: [{
- selector: '[appNavDropdownToggle]'
- },] }
- ];
- /** @nocollapse */
- NavDropdownToggleDirective.ctorParameters = function () { return [
- { type: NavDropdownDirective }
- ]; };
- NavDropdownToggleDirective.propDecorators = {
- toggleOpen: [{ type: core.HostListener, args: ['click', ['$event'],] }]
- };
- return NavDropdownToggleDirective;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavComponent = /** @class */ (function () {
- function AppSidebarNavComponent(router, renderer, hostElement) {
- this.router = router;
- this.renderer = renderer;
- this.hostElement = hostElement;
- this.role = 'nav';
- renderer.addClass(hostElement.nativeElement, 'sidebar-nav');
- }
- /**
- * @param {?} changes
- * @return {?}
- */
- AppSidebarNavComponent.prototype.ngOnChanges = /**
- * @param {?} changes
- * @return {?}
- */
- function (changes) {
- this.navItemsArray = JSON.parse(JSON.stringify(this.navItems || []));
- };
- AppSidebarNavComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav',
- template: "\r\n\r\n"
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavComponent.ctorParameters = function () { return [
- { type: router.Router },
- { type: core.Renderer2 },
- { type: core.ElementRef }
- ]; };
- AppSidebarNavComponent.propDecorators = {
- navItems: [{ type: core.Input }],
- role: [{ type: core.HostBinding, args: ['attr.role',] }]
- };
- return AppSidebarNavComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavDividerComponent = /** @class */ (function () {
- function AppSidebarNavDividerComponent() {
- }
- /**
- * @return {?}
- */
- AppSidebarNavDividerComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () { };
- AppSidebarNavDividerComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-divider',
- template: ""
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavDividerComponent.ctorParameters = function () { return []; };
- AppSidebarNavDividerComponent.propDecorators = {
- item: [{ type: core.Input }]
- };
- return AppSidebarNavDividerComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var SidebarNavHelper = /** @class */ (function () {
- function SidebarNavHelper() {
- this.hasBadge = (/**
- * @param {?} item
- * @return {?}
- */
- function (item) { return Boolean(item.badge); });
- this.hasIcon = (/**
- * @param {?} item
- * @return {?}
- */
- function (item) { return Boolean(item.icon); });
- }
- /**
- * @param {?} item
- * @return {?}
- */
- SidebarNavHelper.prototype.itemType = /**
- * @param {?} item
- * @return {?}
- */
- function (item) {
- if (item.divider) {
- return 'divider';
- }
- else if (item.title) {
- return 'title';
- }
- else if (item.children) {
- return 'dropdown';
- }
- else if (item.label) {
- return 'label';
- }
- else if (!Object.keys(item).length) {
- return 'empty';
- }
- else {
- return 'link';
- }
- };
- /**
- * @param {?} item
- * @return {?}
- */
- SidebarNavHelper.prototype.getClass = /**
- * @param {?} item
- * @return {?}
- */
- function (item) {
- /** @type {?} */
- var itemType = this.itemType(item);
- /** @type {?} */
- var itemClass;
- if (['divider', 'title'].includes(itemType)) {
- itemClass = "nav-" + itemType;
- }
- else if (itemType === 'dropdown') {
- itemClass = 'nav-item nav-dropdown';
- }
- else {
- itemClass = 'nav-item';
- }
- return item.class ? itemClass + " " + item.class : itemClass;
- };
- /**
- * @param {?} router
- * @param {?} item
- * @return {?}
- */
- SidebarNavHelper.prototype.isActive = /**
- * @param {?} router
- * @param {?} item
- * @return {?}
- */
- function (router, item) {
- return router.isActive(item.url, false);
- };
- /**
- * @param {?} item
- * @return {?}
- */
- SidebarNavHelper.prototype.getIconClass = /**
- * @param {?} item
- * @return {?}
- */
- function (item) {
- /** @type {?} */
- var classes = {
- 'nav-icon': true
- };
- /** @type {?} */
- var icon = item.icon;
- classes[icon] = !!item.icon;
- return classes;
- };
- /**
- * @param {?} item
- * @return {?}
- */
- SidebarNavHelper.prototype.getBadgeClass = /**
- * @param {?} item
- * @return {?}
- */
- function (item) {
- /** @type {?} */
- var classes = {
- 'badge': true
- };
- /** @type {?} */
- var variant = "badge-" + item.badge.variant;
- classes[variant] = !!item.badge.variant;
- return classes;
- };
- return SidebarNavHelper;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavDropdownComponent = /** @class */ (function () {
- function AppSidebarNavDropdownComponent(helper) {
- this.helper = helper;
- }
- AppSidebarNavDropdownComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-dropdown',
- template: "\n \n \n {{item.name}}\n {{ item.badge.text }}\n \n \n \n ",
- providers: [SidebarNavHelper],
- styles: ['.nav-dropdown-toggle { cursor: pointer; }',
- '.nav-dropdown-items { display: block; }']
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavDropdownComponent.ctorParameters = function () { return [
- { type: SidebarNavHelper }
- ]; };
- AppSidebarNavDropdownComponent.propDecorators = {
- item: [{ type: core.Input }]
- };
- return AppSidebarNavDropdownComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavItemsComponent = /** @class */ (function () {
- function AppSidebarNavItemsComponent(router, helper) {
- this.router = router;
- this.helper = helper;
- }
- AppSidebarNavItemsComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-items',
- template: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n "
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavItemsComponent.ctorParameters = function () { return [
- { type: router.Router },
- { type: SidebarNavHelper }
- ]; };
- AppSidebarNavItemsComponent.propDecorators = {
- items: [{ type: core.Input }]
- };
- return AppSidebarNavItemsComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavLinkComponent = /** @class */ (function () {
- function AppSidebarNavLinkComponent(document, renderer, helper) {
- this.document = document;
- this.renderer = renderer;
- this.helper = helper;
- }
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- this.linkType = this.getLinkType();
- this.href = this.isDisabled() ? '' : this.item.url;
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.getLinkClass = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var disabled = this.isDisabled();
- /** @type {?} */
- var classes = {
- 'nav-link': true,
- 'disabled': disabled,
- 'btn-link': disabled
- };
- if (this.hasVariant()) {
- /** @type {?} */
- var variant = "nav-link-" + this.item.variant;
- classes[variant] = true;
- }
- return classes;
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.getLinkType = /**
- * @return {?}
- */
- function () {
- return this.isExternalLink() ? 'external' : 'link';
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.hasVariant = /**
- * @return {?}
- */
- function () {
- return !!this.item.variant;
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.isDisabled = /**
- * @return {?}
- */
- function () {
- return (this.item.attributes && this.item.attributes.disabled) ? true : null;
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.isExternalLink = /**
- * @return {?}
- */
- function () {
- return this.item.url.substring(0, 4) === 'http';
- };
- /**
- * @return {?}
- */
- AppSidebarNavLinkComponent.prototype.hideMobile = /**
- * @return {?}
- */
- function () {
- if (this.document.body.classList.contains('sidebar-show')) {
- this.renderer.removeClass(this.document.body, 'sidebar-show');
- }
- };
- AppSidebarNavLinkComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-link',
- template: "\r\n \r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n \r\n \r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n \r\n\r\n",
- providers: [SidebarNavHelper]
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavLinkComponent.ctorParameters = function () { return [
- { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },
- { type: core.Renderer2 },
- { type: SidebarNavHelper }
- ]; };
- AppSidebarNavLinkComponent.propDecorators = {
- item: [{ type: core.Input }]
- };
- return AppSidebarNavLinkComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavTitleComponent = /** @class */ (function () {
- function AppSidebarNavTitleComponent(el, renderer) {
- this.el = el;
- this.renderer = renderer;
- }
- /**
- * @return {?}
- */
- AppSidebarNavTitleComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var nativeElement = this.el.nativeElement;
- /** @type {?} */
- var name = this.renderer.createText(this.item.name);
- if (this.item.class) {
- /** @type {?} */
- var classes = this.item.class;
- this.renderer.addClass(nativeElement, classes);
- }
- if (this.item.wrapper) {
- /** @type {?} */
- var wrapper = this.renderer.createElement(this.item.wrapper.element);
- this.addAttribs(this.item.wrapper.attributes, wrapper);
- this.renderer.appendChild(wrapper, name);
- this.renderer.appendChild(nativeElement, wrapper);
- }
- else {
- this.renderer.appendChild(nativeElement, name);
- }
- };
- /**
- * @private
- * @param {?} attribs
- * @param {?} element
- * @return {?}
- */
- AppSidebarNavTitleComponent.prototype.addAttribs = /**
- * @private
- * @param {?} attribs
- * @param {?} element
- * @return {?}
- */
- function (attribs, element) {
- if (attribs) {
- for (var attr in attribs) {
- if (attr === 'style' && typeof (attribs[attr]) === 'object') {
- this.setStyle(attribs[attr], element);
- }
- else if (attr === 'class') {
- this.addClass(attribs[attr], element);
- }
- else {
- this.setAttrib(attr, attribs[attr], element);
- }
- }
- }
- };
- /**
- * @private
- * @param {?} styles
- * @param {?} el
- * @return {?}
- */
- AppSidebarNavTitleComponent.prototype.setStyle = /**
- * @private
- * @param {?} styles
- * @param {?} el
- * @return {?}
- */
- function (styles, el) {
- for (var style in styles) {
- this.renderer.setStyle(el, style, styles[style]);
- }
- };
- /**
- * @private
- * @param {?} classes
- * @param {?} el
- * @return {?}
- */
- AppSidebarNavTitleComponent.prototype.addClass = /**
- * @private
- * @param {?} classes
- * @param {?} el
- * @return {?}
- */
- function (classes, el) {
- var _this = this;
- /** @type {?} */
- var classArray = (Array.isArray(classes) ? classes : classes.split(' '));
- classArray.filter((/**
- * @param {?} element
- * @return {?}
- */
- function (element) { return element.length > 0; })).forEach((/**
- * @param {?} element
- * @return {?}
- */
- function (element) {
- _this.renderer.addClass(el, element);
- }));
- };
- /**
- * @private
- * @param {?} key
- * @param {?} value
- * @param {?} el
- * @return {?}
- */
- AppSidebarNavTitleComponent.prototype.setAttrib = /**
- * @private
- * @param {?} key
- * @param {?} value
- * @param {?} el
- * @return {?}
- */
- function (key, value, el) {
- this.renderer.setAttribute(el, key, value);
- };
- AppSidebarNavTitleComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-title',
- template: ''
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavTitleComponent.ctorParameters = function () { return [
- { type: core.ElementRef },
- { type: core.Renderer2 }
- ]; };
- AppSidebarNavTitleComponent.propDecorators = {
- item: [{ type: core.Input }]
- };
- return AppSidebarNavTitleComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarNavLabelComponent = /** @class */ (function () {
- function AppSidebarNavLabelComponent(helper) {
- this.helper = helper;
- }
- /**
- * @return {?}
- */
- AppSidebarNavLabelComponent.prototype.ngOnInit = /**
- * @return {?}
- */
- function () {
- };
- /**
- * @return {?}
- */
- AppSidebarNavLabelComponent.prototype.getItemClass = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var labelClass = {
- 'nav-label': true,
- 'active': true
- };
- /** @type {?} */
- var itemClass = this.item.class;
- labelClass[itemClass] = !!itemClass;
- return labelClass;
- };
- /**
- * @return {?}
- */
- AppSidebarNavLabelComponent.prototype.getLabelIconClass = /**
- * @return {?}
- */
- function () {
- /** @type {?} */
- var classes = this.helper.getIconClass(this.item);
- /** @type {?} */
- var variant = "text-" + this.item.label.variant;
- classes[variant] = !!variant;
- /** @type {?} */
- var labelClass = this.item.label.class;
- classes[labelClass] = !!labelClass;
- return classes;
- };
- AppSidebarNavLabelComponent.decorators = [
- { type: core.Component, args: [{
- selector: 'app-sidebar-nav-label',
- template: "\r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n\r\n"
- }] }
- ];
- /** @nocollapse */
- AppSidebarNavLabelComponent.ctorParameters = function () { return [
- { type: SidebarNavHelper }
- ]; };
- AppSidebarNavLabelComponent.propDecorators = {
- item: [{ type: core.Input }]
- };
- return AppSidebarNavLabelComponent;
- }());
-
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- var AppSidebarModule = /** @class */ (function () {
- function AppSidebarModule() {
- }
- AppSidebarModule.decorators = [
- { type: core.NgModule, args: [{
- imports: [
- common.CommonModule,
- router.RouterModule,
- LayoutModule
- ],
- exports: [
- AppSidebarFooterComponent,
- AppSidebarFormComponent,
- AppSidebarHeaderComponent,
- AppSidebarMinimizerComponent,
- AppSidebarComponent,
- AppSidebarNavItemsComponent,
- AppSidebarNavComponent,
- AppSidebarNavDividerComponent,
- AppSidebarNavDropdownComponent,
- AppSidebarNavLinkComponent,
- AppSidebarNavTitleComponent,
- NavDropdownDirective,
- NavDropdownToggleDirective,
- LayoutModule
- ],
- declarations: [
- AppSidebarFooterComponent,
- AppSidebarFormComponent,
- AppSidebarHeaderComponent,
- AppSidebarMinimizerComponent,
- AppSidebarMinimizerComponent,
- AppSidebarComponent,
- AppSidebarNavItemsComponent,
- AppSidebarNavComponent,
- AppSidebarNavDividerComponent,
- AppSidebarNavDropdownComponent,
- AppSidebarNavLinkComponent,
- AppSidebarNavTitleComponent,
- NavDropdownDirective,
- NavDropdownToggleDirective,
- AppSidebarNavLabelComponent
- ],
- providers: [
- SidebarNavHelper
- ]
- },] }
- ];
- return AppSidebarModule;
- }());
-
- exports.AppAsideModule = AppAsideModule;
- exports.AppBreadcrumbModule = AppBreadcrumbModule;
- exports.AppFooterModule = AppFooterModule;
- exports.AppHeaderModule = AppHeaderModule;
- exports.AppSidebarModule = AppSidebarModule;
- exports.ɵa = LayoutModule;
- exports.ɵb = SidebarToggleDirective;
- exports.ɵba = AppSidebarNavTitleComponent;
- exports.ɵbb = NavDropdownDirective;
- exports.ɵbc = NavDropdownToggleDirective;
- exports.ɵbd = AppSidebarNavLabelComponent;
- exports.ɵc = SidebarMinimizeDirective;
- exports.ɵd = MobileSidebarToggleDirective;
- exports.ɵe = SidebarOffCanvasCloseDirective;
- exports.ɵf = BrandMinimizeDirective;
- exports.ɵg = AsideToggleDirective;
- exports.ɵh = HtmlAttributesDirective;
- exports.ɵi = ClassToggler;
- exports.ɵj = AppAsideComponent;
- exports.ɵk = AppBreadcrumbComponent;
- exports.ɵl = AppBreadcrumbService;
- exports.ɵm = CuiBreadcrumbComponent;
- exports.ɵn = AppFooterComponent;
- exports.ɵo = AppHeaderComponent;
- exports.ɵp = AppSidebarFooterComponent;
- exports.ɵq = AppSidebarFormComponent;
- exports.ɵr = AppSidebarHeaderComponent;
- exports.ɵs = AppSidebarMinimizerComponent;
- exports.ɵt = AppSidebarComponent;
- exports.ɵu = AppSidebarNavItemsComponent;
- exports.ɵv = SidebarNavHelper;
- exports.ɵw = AppSidebarNavComponent;
- exports.ɵx = AppSidebarNavDividerComponent;
- exports.ɵy = AppSidebarNavDropdownComponent;
- exports.ɵz = AppSidebarNavLinkComponent;
-
- Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
-//# sourceMappingURL=coreui-angular.umd.js.map
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js.map b/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
deleted file mode 100644
index bfcd4de7..00000000
--- a/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"coreui-angular.umd.js","sources":["ng://@coreui/angular/lib/shared/classes.ts","ng://@coreui/angular/lib/shared/toggle-classes.ts","ng://@coreui/angular/lib/shared/layout/layout.directive.ts","ng://@coreui/angular/lib/shared/layout/layout.module.ts","ng://@coreui/angular/lib/shared/replace.ts","ng://@coreui/angular/lib/aside/app-aside.component.ts","ng://@coreui/angular/lib/aside/app-aside.module.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.service.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.component.ts","ng://@coreui/angular/lib/breadcrumb/cui-breadcrumb.component.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.module.ts","ng://@coreui/angular/lib/footer/app-footer.component.ts","ng://@coreui/angular/lib/footer/app-footer.module.ts","ng://@coreui/angular/lib/header/app-header.component.ts","ng://@coreui/angular/lib/header/app-header.module.ts","ng://@coreui/angular/lib/sidebar/app-sidebar.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-footer.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-form.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-header.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-minimizer.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.directive.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-divider.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.service.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-dropdown.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-items.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-link.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-title.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-label.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar.module.ts"],"sourcesContent":["export const sidebarCssClasses: Array = [\r\n 'sidebar-show',\r\n 'sidebar-sm-show',\r\n 'sidebar-md-show',\r\n 'sidebar-lg-show',\r\n 'sidebar-xl-show'\r\n];\r\n\r\nexport const asideMenuCssClasses: Array = [\r\n 'aside-menu-show',\r\n 'aside-menu-sm-show',\r\n 'aside-menu-md-show',\r\n 'aside-menu-lg-show',\r\n 'aside-menu-xl-show'\r\n];\r\n","import {Inject, Injectable, Renderer2} from '@angular/core';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\nconst RemoveClasses = (NewClassNames) => {\r\n const MatchClasses = NewClassNames.map((Class) => document.body.classList.contains(Class));\r\n return MatchClasses.indexOf(true) !== -1;\r\n};\r\n\r\nexport const ToggleClasses = (Toggle, ClassNames) => {\r\n const Level = ClassNames.indexOf(Toggle);\r\n const NewClassNames = ClassNames.slice(0, Level + 1);\r\n\r\n if (RemoveClasses(NewClassNames)) {\r\n NewClassNames.map((Class) => document.body.classList.remove(Class));\r\n } else {\r\n document.body.classList.add(Toggle);\r\n }\r\n};\r\n\r\n@Injectable()\r\nexport class ClassToggler {\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n removeClasses(NewClassNames) {\r\n const MatchClasses = NewClassNames.map((Class) => this.document.body.classList.contains(Class));\r\n return MatchClasses.indexOf(true) !== -1;\r\n }\r\n\r\n toggleClasses(Toggle, ClassNames) {\r\n const Level = ClassNames.indexOf(Toggle);\r\n const NewClassNames = ClassNames.slice(0, Level + 1);\r\n\r\n if (this.removeClasses(NewClassNames)) {\r\n NewClassNames.map((Class) => this.renderer.removeClass(this.document.body, Class));\r\n } else {\r\n this.renderer.addClass(this.document.body, Toggle);\r\n }\r\n }\r\n}\r\n","import {Directive, ElementRef, HostListener, Inject, Input, OnInit, Renderer2} from '@angular/core';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\nimport { asideMenuCssClasses, sidebarCssClasses } from '../classes';\r\nimport { ClassToggler } from '../toggle-classes';\r\n\r\n/**\r\n* Allows the sidebar to be toggled via click.\r\n*/\r\n@Directive({\r\n selector: '[appSidebarToggler]',\r\n providers: [ClassToggler]\r\n})\r\nexport class SidebarToggleDirective implements OnInit {\r\n @Input('appSidebarToggler') breakpoint: string;\r\n public bp;\r\n constructor(private classToggler: ClassToggler) {}\r\n ngOnInit(): void {\r\n this.bp = this.breakpoint;\r\n }\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n const cssClass = this.bp ? `sidebar-${this.bp}-show` : sidebarCssClasses[0];\r\n this.classToggler.toggleClasses(cssClass, sidebarCssClasses);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appSidebarMinimizer]'\r\n})\r\nexport class SidebarMinimizeDirective {\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n const body = this.document.body;\r\n body.classList.contains('sidebar-minimized') ?\r\n this.renderer.removeClass(body, 'sidebar-minimized') :\r\n this.renderer.addClass(body, 'sidebar-minimized');\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appMobileSidebarToggler]'\r\n})\r\nexport class MobileSidebarToggleDirective {\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n const body = this.document.body;\r\n body.classList.contains('sidebar-show') ?\r\n this.renderer.removeClass(body, 'sidebar-show') :\r\n this.renderer.addClass(body, 'sidebar-show');\r\n }\r\n}\r\n\r\n/**\r\n* Allows the off-canvas sidebar to be closed via click.\r\n*/\r\n@Directive({\r\n selector: '[appSidebarClose]'\r\n})\r\nexport class SidebarOffCanvasCloseDirective {\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n\r\n const body = this.document.body;\r\n if (body.classList.contains('sidebar-off-canvas')) {\r\n body.classList.contains('sidebar-show') ?\r\n this.renderer.removeClass(body, 'sidebar-show') :\r\n this.renderer.addClass(body, 'sidebar-show');\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appBrandMinimizer]'\r\n})\r\nexport class BrandMinimizeDirective {\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n const body = this.document.body;\r\n body.classList.contains('brand-minimized') ?\r\n this.renderer.removeClass(body, 'brand-minimized') :\r\n this.renderer.addClass(body, 'brand-minimized');\r\n }\r\n}\r\n\r\n\r\n/**\r\n* Allows the aside to be toggled via click.\r\n*/\r\n@Directive({\r\n selector: '[appAsideMenuToggler]',\r\n providers: [ClassToggler]\r\n})\r\nexport class AsideToggleDirective implements OnInit {\r\n @Input('appAsideMenuToggler') breakpoint: string;\r\n public bp;\r\n constructor(private classToggler: ClassToggler) {}\r\n ngOnInit(): void {\r\n this.bp = this.breakpoint;\r\n }\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n const cssClass = this.bp ? `aside-menu-${this.bp}-show` : asideMenuCssClasses[0];\r\n this.classToggler.toggleClasses(cssClass, asideMenuCssClasses);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appHtmlAttr]'\r\n})\r\nexport class HtmlAttributesDirective implements OnInit {\r\n @Input() appHtmlAttr: {[key: string]: string };\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private el: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n const attribs = this.appHtmlAttr;\r\n for (const attr in attribs) {\r\n if (attr === 'style' && typeof(attribs[attr]) === 'object' ) {\r\n this.setStyle(attribs[attr]);\r\n } else if (attr === 'class') {\r\n this.addClass(attribs[attr]);\r\n } else {\r\n this.setAttrib(attr, attribs[attr]);\r\n }\r\n }\r\n }\r\n\r\n private setStyle(styles) {\r\n for (const style in styles) {\r\n this.renderer.setStyle(this.el.nativeElement, style, styles[style] );\r\n }\r\n }\r\n\r\n private addClass(classes) {\r\n const classArray = (Array.isArray(classes) ? classes : classes.split(' '));\r\n classArray.filter((element) => element.length > 0).forEach(element => {\r\n this.renderer.addClass(this.el.nativeElement, element );\r\n });\r\n }\r\n\r\n private setAttrib(key, value) {\r\n value !== null ?\r\n this.renderer.setAttribute(this.el.nativeElement, key, value ) :\r\n this.renderer.removeAttribute(this.el.nativeElement, key);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule} from '@angular/core';\r\nimport {\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective,\r\n HtmlAttributesDirective\r\n} from './layout.directive';\r\nimport { ClassToggler } from '../toggle-classes';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective,\r\n HtmlAttributesDirective\r\n ],\r\n declarations: [\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective,\r\n HtmlAttributesDirective\r\n ],\r\n providers: [\r\n ClassToggler\r\n ]\r\n})\r\nexport class LayoutModule { }\r\n","export function Replace(el: any): any {\r\n const nativeElement: HTMLElement = el.nativeElement;\r\n const parentElement: HTMLElement = nativeElement.parentElement;\r\n // move all children out of the element\r\n while (nativeElement.firstChild) {\r\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\r\n }\r\n // remove the empty element(the host)\r\n parentElement.removeChild(nativeElement);\r\n}\r\n","import {Component, ElementRef, Input, OnInit, OnDestroy, Inject, Renderer2} from '@angular/core';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\nimport { asideMenuCssClasses } from '../shared';\r\n\r\n@Component({\r\n selector: 'app-aside, cui-aside',\r\n template: ``\r\n})\r\nexport class AppAsideComponent implements OnInit, OnDestroy {\r\n @Input() display: any;\r\n @Input() fixed: boolean;\r\n @Input() offCanvas: boolean;\r\n\r\n private readonly fixedClass = 'aside-menu-fixed';\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n private hostElement: ElementRef\r\n ) {\r\n renderer.addClass(hostElement.nativeElement, 'aside-menu');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isFixed(this.fixed);\r\n this.isOffCanvas(this.offCanvas);\r\n this.displayBreakpoint(this.display);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.renderer.removeClass(this.document.body, this.fixedClass);\r\n }\r\n\r\n isFixed(fixed: boolean = this.fixed): void {\r\n if (fixed) {\r\n this.renderer.addClass(this.document.body, this.fixedClass);\r\n }\r\n }\r\n\r\n isOffCanvas(offCanvas: boolean = this.offCanvas): void {\r\n if (offCanvas) {\r\n this.renderer.addClass(this.document.body, 'aside-menu-off-canvas');\r\n }\r\n }\r\n\r\n displayBreakpoint(display: any = this.display): void {\r\n if (display !== false ) {\r\n const cssClass = this.display ? `aside-menu-${this.display}-show` : asideMenuCssClasses[0];\r\n this.renderer.addClass(this.document.body, cssClass);\r\n }\r\n }\r\n}\r\n","import { CommonModule} from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LayoutModule } from './../shared/layout/layout.module';\r\n\r\nimport { AppAsideComponent } from './app-aside.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n LayoutModule\r\n ],\r\n exports: [\r\n AppAsideComponent,\r\n LayoutModule\r\n ],\r\n declarations: [\r\n AppAsideComponent\r\n ]\r\n})\r\nexport class AppAsideModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class AppBreadcrumbService {\r\n\r\n breadcrumbs: Observable>;\r\n\r\n private _breadcrumbs: BehaviorSubject>;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute) {\r\n\r\n this._breadcrumbs = new BehaviorSubject