├── examples
├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── app
│ │ ├── app.component.css
│ │ ├── common
│ │ │ ├── simple.ts
│ │ │ ├── simple.model.ts
│ │ │ ├── simple.enum.ts
│ │ │ └── simple.interface.ts
│ │ ├── components
│ │ │ ├── project-folder-sturcture
│ │ │ │ ├── user-story
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── user-info
│ │ │ │ │ ├── _pipes
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _constants
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _directives
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _guards
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _models
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _resolvers
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _store
│ │ │ │ │ ├── actions
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── models
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── states
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── user-software
│ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── _components
│ │ │ │ │ ├── _smart
│ │ │ │ │ │ └── user-info
│ │ │ │ │ │ │ ├── user-info.component.html
│ │ │ │ │ │ │ ├── user-info.component.css
│ │ │ │ │ │ │ ├── user-info.component.ts
│ │ │ │ │ │ │ └── user-info.component.spec.ts
│ │ │ │ │ └── _dumb
│ │ │ │ │ │ └── user-info-details
│ │ │ │ │ │ ├── user-info-details.component.html
│ │ │ │ │ │ ├── user-info-details.component.css
│ │ │ │ │ │ ├── user-info-details.component.ts
│ │ │ │ │ │ └── user-info-details.component.spec.ts
│ │ │ │ │ ├── _services
│ │ │ │ │ ├── facade
│ │ │ │ │ │ ├── user.facade.ts
│ │ │ │ │ │ └── user-ngxs.facade.ts
│ │ │ │ │ └── api
│ │ │ │ │ │ ├── user-http.service.ts
│ │ │ │ │ │ ├── user-http-mock.service.ts
│ │ │ │ │ │ └── user-http-prod.service.ts
│ │ │ │ │ ├── _providers
│ │ │ │ │ ├── user-info.provider.ts
│ │ │ │ │ └── uesr-http.provider.ts
│ │ │ │ │ └── user-info.module.ts
│ │ │ ├── show-mock-usage
│ │ │ │ ├── show-mock-usage.component.css
│ │ │ │ ├── show-mock-usage.component.html
│ │ │ │ ├── show-mock-usage.component.ts
│ │ │ │ └── show-mock-usage.component.spec.ts
│ │ │ ├── tslint-wrong-takeuntil-rule
│ │ │ │ ├── tslint-wrong-takeuntil-rule.component.css
│ │ │ │ ├── tslint-wrong-takeuntil-rule.component.html
│ │ │ │ ├── tslint-wrong-takeuntil-rule.component.spec.ts
│ │ │ │ └── tslint-wrong-takeuntil-rule.component.ts
│ │ │ ├── how-to-unsubscribe
│ │ │ │ ├── unsubscribe.component.html
│ │ │ │ ├── unsubscribe.component.css
│ │ │ │ ├── unsubscribe.component.spec.ts
│ │ │ │ └── unsubscribe.component.ts
│ │ │ ├── display-block-by-default
│ │ │ │ ├── display-block-by-default.html
│ │ │ │ ├── display-block-by-default.css
│ │ │ │ └── display-block-by-default.ts
│ │ │ ├── smart-dumb-concept
│ │ │ │ ├── _smart
│ │ │ │ │ ├── smart.component.css
│ │ │ │ │ ├── smart.component.html
│ │ │ │ │ └── smart.component.ts
│ │ │ │ └── _dumb
│ │ │ │ │ ├── dumb-five
│ │ │ │ │ ├── dumb-five.component.css
│ │ │ │ │ ├── dumb-five.component.html
│ │ │ │ │ ├── dumb-five.component.ts
│ │ │ │ │ └── dumb-five.component.spec.ts
│ │ │ │ │ ├── dumb-four
│ │ │ │ │ ├── dumb-four.component.css
│ │ │ │ │ ├── dumb-four.component.html
│ │ │ │ │ ├── dumb-four.component.ts
│ │ │ │ │ └── dumb-four.component.spec.ts
│ │ │ │ │ ├── dumb-one
│ │ │ │ │ ├── dumb-one.component.css
│ │ │ │ │ ├── dumb-one.component.html
│ │ │ │ │ ├── dumb-one.component.ts
│ │ │ │ │ └── dumb-one.component.spec.ts
│ │ │ │ │ ├── dumb-three
│ │ │ │ │ ├── dumb-three.component.css
│ │ │ │ │ ├── dumb-three.component.html
│ │ │ │ │ ├── dumb-three.component.ts
│ │ │ │ │ └── dumb-three.component.spec.ts
│ │ │ │ │ └── dumb-two
│ │ │ │ │ ├── dumb-two.component.css
│ │ │ │ │ ├── dumb-two.component.html
│ │ │ │ │ ├── dumb-two.component.ts
│ │ │ │ │ └── dumb-two.component.spec.ts
│ │ │ ├── http-proxy-example
│ │ │ │ ├── http-proxy-example.component.html
│ │ │ │ ├── http-proxy-example.component.css
│ │ │ │ ├── http.service.ts
│ │ │ │ ├── http-proxy.module.ts
│ │ │ │ ├── http-proxy-example.component.ts
│ │ │ │ └── http-proxy-example.component.spec.ts
│ │ │ ├── change-detection-by-default
│ │ │ │ ├── change-detection-by-default.component.css
│ │ │ │ ├── change-detection-by-default.component.html
│ │ │ │ └── change-detection-by-default.component.ts
│ │ │ ├── input-changes-detection
│ │ │ │ ├── property-change
│ │ │ │ │ ├── property-change.component.css
│ │ │ │ │ ├── property-change.component.html
│ │ │ │ │ └── property-change.component.ts
│ │ │ │ └── property-changes-detection
│ │ │ │ │ ├── property-changes-detection.component.css
│ │ │ │ │ ├── property-changes-detection.component.html
│ │ │ │ │ └── property-changes-detection.component.ts
│ │ │ └── track-by-example
│ │ │ │ ├── track-by-example.component.css
│ │ │ │ ├── track-by-example.component.html
│ │ │ │ ├── track-by-example.component.spec.ts
│ │ │ │ └── track-by-example.component.ts
│ │ ├── app.component.html
│ │ ├── data-facade
│ │ │ ├── _models
│ │ │ │ ├── routes.ts
│ │ │ │ ├── animals.ts
│ │ │ │ ├── data-with-status.ts
│ │ │ │ └── status-data.ts
│ │ │ ├── _components
│ │ │ │ └── _smart
│ │ │ │ │ ├── animal
│ │ │ │ │ ├── animal.component.css
│ │ │ │ │ ├── animal.component.html
│ │ │ │ │ ├── animal.component.spec.ts
│ │ │ │ │ └── animal.component.ts
│ │ │ │ │ └── no-facade
│ │ │ │ │ ├── no-facade.component.css
│ │ │ │ │ ├── no-facade.component.html
│ │ │ │ │ ├── no-facade.component.spec.ts
│ │ │ │ │ └── no-facade.component.ts
│ │ │ ├── _store
│ │ │ │ ├── models
│ │ │ │ │ └── animal-state.ts
│ │ │ │ └── states
│ │ │ │ │ ├── animal.actions.ts
│ │ │ │ │ └── animal-state.ts
│ │ │ ├── _services
│ │ │ │ ├── api
│ │ │ │ │ ├── animal-http.service.ts
│ │ │ │ │ └── animal-http-production.service.ts
│ │ │ │ └── facade
│ │ │ │ │ ├── animal.facade.ts
│ │ │ │ │ └── animal-ngxs.facade.ts
│ │ │ ├── _providers
│ │ │ │ ├── animal-facde.provider.ts
│ │ │ │ └── animal-http.provider.ts
│ │ │ └── data-facade.module.ts
│ │ ├── dialog-as-service
│ │ │ ├── _components
│ │ │ │ ├── _smart
│ │ │ │ │ └── dialog-show-room
│ │ │ │ │ │ ├── dialog-show-room.component.html
│ │ │ │ │ │ ├── dialog-show-room.component.css
│ │ │ │ │ │ ├── dialog-show-room.component.spec.ts
│ │ │ │ │ │ └── dialog-show-room.component.ts
│ │ │ │ └── _dumb
│ │ │ │ │ └── info
│ │ │ │ │ ├── info.component.html
│ │ │ │ │ ├── info.component.css
│ │ │ │ │ ├── info.component.spec.ts
│ │ │ │ │ └── info.component.ts
│ │ │ ├── _models
│ │ │ │ ├── base-dialog-data.ts
│ │ │ │ └── one-button-dialog.model.ts
│ │ │ ├── _providers
│ │ │ │ └── dialog-as-service.provider.ts
│ │ │ ├── dialog-service.module.ts
│ │ │ └── _service
│ │ │ │ └── dialog.service.ts
│ │ ├── service
│ │ │ ├── logger.service.ts
│ │ │ ├── my-logger.service.ts
│ │ │ ├── my-logger-mock.service.ts
│ │ │ └── unsubscribe.service.ts
│ │ ├── app.component.ts
│ │ ├── providers
│ │ │ └── logger-service.provider.ts
│ │ ├── app.component.spec.ts
│ │ └── app.module.ts
│ ├── favicon.ico
│ ├── environments
│ │ ├── models
│ │ │ └── environment.ts
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── styles.css
│ ├── main.ts
│ ├── index.html
│ ├── test.ts
│ └── polyfills.ts
├── .prettierignore
├── dist
│ └── angular-best-practicies
│ │ ├── styles.3ff695c00d717f2d2a11.css
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── runtime.7b63b9fd40098a2e8207.js
│ │ ├── 3rdpartylicenses.txt
│ │ └── polyfills.94daefd414b8355106ab.js
├── proxy.conf.json
├── .idea
│ ├── .gitignore
│ ├── codeStyles
│ │ ├── codeStyleConfig.xml
│ │ └── Project.xml
│ ├── vcs.xml
│ ├── prettier.xml
│ ├── inspectionProfiles
│ │ └── Project_Default.xml
│ ├── modules.xml
│ └── angular-best-practicies.iml
├── .prettierrc.json
├── e2e
│ ├── src
│ │ ├── app.po.ts
│ │ └── app.e2e-spec.ts
│ ├── tsconfig.json
│ └── protractor.conf.js
├── .editorconfig
├── tsconfig.app.json
├── tsconfig.spec.json
├── .browserslistrc
├── tsconfig.json
├── karma.conf.js
├── package.json
├── tslint.json
└── angular.json
├── .gitattributes
├── .gitignore
└── LICENSE
/examples/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
--------------------------------------------------------------------------------
/examples/src/app/app.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/.prettierignore:
--------------------------------------------------------------------------------
1 | src/assets
2 |
--------------------------------------------------------------------------------
/examples/src/app/common/simple.ts:
--------------------------------------------------------------------------------
1 | export class Simple {}
2 |
--------------------------------------------------------------------------------
/examples/dist/angular-best-practicies/styles.3ff695c00d717f2d2a11.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/common/simple.model.ts:
--------------------------------------------------------------------------------
1 | export class SimpleModel {}
2 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-story/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/show-mock-usage/show-mock-usage.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_pipes/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_constants/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_directives/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_guards/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_models/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_resolvers/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_store/actions/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_store/models/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/_store/states/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/components/project-folder-sturcture/user-info/user-software/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
unsubscribe works!
2 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_models/routes.ts: -------------------------------------------------------------------------------- 1 | export enum Routes { 2 | ANIMAL = 'animal', 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/common/simple.enum.ts: -------------------------------------------------------------------------------- 1 | export enum SimpleEnum { 2 | SimpleEnum = 'SimpleEnum', 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/display-block-by-default/display-block-by-default.html: -------------------------------------------------------------------------------- 1 |test works!
2 | -------------------------------------------------------------------------------- /examples/src/app/components/show-mock-usage/show-mock-usage.component.html: -------------------------------------------------------------------------------- 1 |show-mock-usage works!
2 | -------------------------------------------------------------------------------- /examples/src/app/common/simple.interface.ts: -------------------------------------------------------------------------------- 1 | export interface ISimpleInterface { 2 | todo(): void; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/how-to-unsubscribe/unsubscribe.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_smart/smart.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_models/animals.ts: -------------------------------------------------------------------------------- 1 | export interface Animals { 2 | animals: string[]; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/http-proxy-example/http-proxy-example.component.html: -------------------------------------------------------------------------------- 1 |http-proxy-example works!
2 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_components/_smart/animal/animal.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/display-block-by-default/display-block-by-default.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/http-proxy-example/http-proxy-example.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_components/_smart/no-facade/no-facade.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evoytenkoapps/angular-best-practices/HEAD/examples/src/favicon.ico -------------------------------------------------------------------------------- /examples/proxy.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/data": { 3 | "target": "http://localhost:8082", 4 | "secure": false 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_dumb/dumb-five/dumb-five.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_dumb/dumb-four/dumb-four.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_dumb/dumb-one/dumb-one.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_dumb/dumb-three/dumb-three.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_dumb/dumb-two/dumb-two.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_components/_smart/animal/animal.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /examples/src/app/components/change-detection-by-default/change-detection-by-default.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/input-changes-detection/property-change/property-change.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/dialog-as-service/_components/_smart/dialog-show-room/dialog-show-room.component.html: -------------------------------------------------------------------------------- 1 |dialog-show-room works!
2 | -------------------------------------------------------------------------------- /examples/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /examples/src/app/components/track-by-example/track-by-example.component.css: -------------------------------------------------------------------------------- 1 | .table { 2 | display: flex; 3 | flex-direction: row; 4 | } 5 | -------------------------------------------------------------------------------- /examples/src/app/dialog-as-service/_components/_smart/dialog-show-room/dialog-show-room.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/change-detection-by-default/change-detection-by-default.component.html: -------------------------------------------------------------------------------- 1 |change-detection-by-default works!
2 | -------------------------------------------------------------------------------- /examples/src/app/components/project-folder-sturcture/user-info/_components/_smart/user-info/user-info.component.html: -------------------------------------------------------------------------------- 1 |user-info works!
2 | -------------------------------------------------------------------------------- /examples/src/app/components/tslint-wrong-takeuntil-rule/tslint-wrong-takeuntil-rule.component.html: -------------------------------------------------------------------------------- 1 |tslint-wrong-takeuntil-rule works!
2 | -------------------------------------------------------------------------------- /examples/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "useTabs": false, 5 | "tabWidth": 2, 6 | "semi": true 7 | } 8 | -------------------------------------------------------------------------------- /examples/src/app/data-facade/_store/models/animal-state.ts: -------------------------------------------------------------------------------- 1 | export interface AnimalStateModel { 2 | animals: string[]; 3 | counter: number; 4 | } 5 | -------------------------------------------------------------------------------- /examples/src/app/components/project-folder-sturcture/user-info/_components/_smart/user-info/user-info.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/input-changes-detection/property-changes-detection/property-changes-detection.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/app/components/input-changes-detection/property-changes-detection/property-changes-detection.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /examples/src/app/components/project-folder-sturcture/user-info/_components/_dumb/user-info-details/user-info-details.component.html: -------------------------------------------------------------------------------- 1 |user-info-details works!
2 | -------------------------------------------------------------------------------- /examples/dist/angular-best-practicies/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evoytenkoapps/angular-best-practices/HEAD/examples/dist/angular-best-practicies/favicon.ico -------------------------------------------------------------------------------- /examples/src/app/components/project-folder-sturcture/user-info/_components/_dumb/user-info-details/user-info-details.component.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /examples/src/environments/models/environment.ts: -------------------------------------------------------------------------------- 1 | export interface Environment { 2 | production: boolean; 3 | isUseLogger: boolean; 4 | iseUseApi: boolean; 5 | } 6 | -------------------------------------------------------------------------------- /examples/src/app/components/smart-dumb-concept/_smart/smart.component.html: -------------------------------------------------------------------------------- 1 |Smart component
2 |dumb-five works!
2 |dumb-one works!
2 |dumb-four works!
2 |dumb-two works!
2 |dumb-three works!
2 |Loading
3 |Error
4 |