From 420c2c18b6ee12f5b050fcccb075114da589cf4f Mon Sep 17 00:00:00 2001 From: Yubing325 <35515298+Yubing325@users.noreply.github.com> Date: Mon, 6 Jul 2020 12:21:52 -0500 Subject: [PATCH] seperate ng-select into a ng-select lib --- angular.json | 40 +++++ projects/poweredsoft/ng-select/README.md | 24 +++ projects/poweredsoft/ng-select/karma.conf.js | 32 ++++ .../poweredsoft/ng-select/ng-package.json | 7 + projects/poweredsoft/ng-select/package.json | 11 ++ .../multi-select/multi-select.component.html | 1 + .../multi-select/multi-select.component.scss | 0 .../multi-select/multi-select.component.ts | 15 ++ .../ng-select/ng-select.component.html | 17 +++ .../ng-select/ng-select.component.scss | 0 .../ng-select/ng-select.component.ts | 143 ++++++++++++++++++ .../ps-ng-selectors/ps-ng-selectors.module.ts | 24 +++ .../select-label-template.directive.spec.ts | 8 + .../select-label-template.directive.ts | 10 ++ .../poweredsoft/ng-select/src/public-api.ts | 11 ++ projects/poweredsoft/ng-select/src/test.ts | 26 ++++ .../poweredsoft/ng-select/tsconfig.lib.json | 23 +++ .../ng-select/tsconfig.lib.prod.json | 6 + .../poweredsoft/ng-select/tsconfig.spec.json | 17 +++ projects/poweredsoft/ng-select/tslint.json | 17 +++ .../ng-select/ng-select.component.html | 17 --- src/app/app.module.ts | 2 + .../ng-select-demo/ng-select-demo.module.ts | 5 +- .../ng-select-demo.component.html | 16 +- tsconfig.json | 4 + 25 files changed, 450 insertions(+), 26 deletions(-) create mode 100644 projects/poweredsoft/ng-select/README.md create mode 100644 projects/poweredsoft/ng-select/karma.conf.js create mode 100644 projects/poweredsoft/ng-select/ng-package.json create mode 100644 projects/poweredsoft/ng-select/package.json create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.html create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.scss create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.ts create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.html create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.scss create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.ts create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ps-ng-selectors.module.ts create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.spec.ts create mode 100644 projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.ts create mode 100644 projects/poweredsoft/ng-select/src/public-api.ts create mode 100644 projects/poweredsoft/ng-select/src/test.ts create mode 100644 projects/poweredsoft/ng-select/tsconfig.lib.json create mode 100644 projects/poweredsoft/ng-select/tsconfig.lib.prod.json create mode 100644 projects/poweredsoft/ng-select/tsconfig.spec.json create mode 100644 projects/poweredsoft/ng-select/tslint.json diff --git a/angular.json b/angular.json index fad436f..c83e8ec 100644 --- a/angular.json +++ b/angular.json @@ -204,6 +204,46 @@ } } } + }, + "@poweredsoft/ng-select": { + "projectType": "library", + "root": "projects/poweredsoft/ng-select", + "sourceRoot": "projects/poweredsoft/ng-select/src", + "prefix": "ps-ng", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/poweredsoft/ng-select/tsconfig.lib.json", + "project": "projects/poweredsoft/ng-select/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/poweredsoft/ng-select/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/poweredsoft/ng-select/src/test.ts", + "tsConfig": "projects/poweredsoft/ng-select/tsconfig.spec.json", + "karmaConfig": "projects/poweredsoft/ng-select/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/poweredsoft/ng-select/tsconfig.lib.json", + "projects/poweredsoft/ng-select/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } }}, "defaultProject": "ngx-cdk-ui" } diff --git a/projects/poweredsoft/ng-select/README.md b/projects/poweredsoft/ng-select/README.md new file mode 100644 index 0000000..26c0003 --- /dev/null +++ b/projects/poweredsoft/ng-select/README.md @@ -0,0 +1,24 @@ +# NgSelect + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.9. + +## Code scaffolding + +Run `ng generate component component-name --project ng-select` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ng-select`. +> Note: Don't forget to add `--project ng-select` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ng-select` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ng-select`, go to the dist folder `cd dist/ng-select` and run `npm publish`. + +## Running unit tests + +Run `ng test ng-select` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/poweredsoft/ng-select/karma.conf.js b/projects/poweredsoft/ng-select/karma.conf.js new file mode 100644 index 0000000..1b4e689 --- /dev/null +++ b/projects/poweredsoft/ng-select/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../../coverage/poweredsoft/ng-select'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/projects/poweredsoft/ng-select/ng-package.json b/projects/poweredsoft/ng-select/ng-package.json new file mode 100644 index 0000000..70f4cbd --- /dev/null +++ b/projects/poweredsoft/ng-select/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/poweredsoft/ng-select", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/projects/poweredsoft/ng-select/package.json b/projects/poweredsoft/ng-select/package.json new file mode 100644 index 0000000..e724836 --- /dev/null +++ b/projects/poweredsoft/ng-select/package.json @@ -0,0 +1,11 @@ +{ + "name": "@poweredsoft/ng-select", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^9.1.9", + "@angular/core": "^9.1.9" + }, + "dependencies": { + "tslib": "^1.10.0" + } +} \ No newline at end of file diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.html b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.html new file mode 100644 index 0000000..a83ce66 --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.html @@ -0,0 +1 @@ +

multi-select works!

diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.scss b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.ts b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.ts new file mode 100644 index 0000000..7da49d0 --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/multi-select/multi-select.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ps-ng-multi-select', + templateUrl: './multi-select.component.html', + styleUrls: ['./multi-select.component.scss'] +}) +export class MultiSelectComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.html b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.html new file mode 100644 index 0000000..feb5be1 --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.html @@ -0,0 +1,17 @@ + + + + + + + diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.scss b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.ts b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.ts new file mode 100644 index 0000000..d93d4a7 --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ng-select/ng-select.component.ts @@ -0,0 +1,143 @@ +import { Component, OnInit, ContentChild, ViewChild, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef } from '@angular/core'; +import { SelectLabelTemplateDirective } from '../select-label-template.directive'; +import { IDataSource, ISimpleFilter } from '@poweredsoft/data'; +import { Observable, Subject, Subscription } from 'rxjs'; +import { map, distinctUntilChanged, debounceTime } from 'rxjs/operators'; +import { NgSelectComponent as SelectComponent } from '@ng-select/ng-select'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; + +@Component({ + selector: 'ps-ng-select', + templateUrl: './ng-select.component.html', + providers: [{ + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => NgSelectComponent), + multi: true +}], + styleUrls: ['./ng-select.component.scss'] +}) +export class NgSelectComponent implements OnInit { + + @ContentChild(SelectLabelTemplateDirective) LabelTemplate: SelectLabelTemplateDirective; + @ViewChild(SelectComponent, { static: true }) selectComponent: SelectComponent; + @Input() dataSource: IDataSource; + @Input() searchPath: string; + @Input() searchType: string; + @Input() sortingPath: string; + @Input() serverFiltering:boolean; + @Input() bindLabel:string; + @Input() bindValue: string; + + @Output('change') changeEvent = new EventEmitter(); + + trackFn: (item: any) => any; + data$ : Observable; + isLoading:boolean = false; + searchInput$ = new Subject(); + + private _loadingSubscription: Subscription; + + constructor(private cdr: ChangeDetectorRef) { + this.trackFn = this.trackBy.bind(this); + + } + + valueChanged(event) { + this.changeEvent.emit(event); + } + + writeValue(obj: any): void { + this.selectComponent.writeValue(obj); + } + registerOnChange(fn: any): void { + this.selectComponent.registerOnChange(fn); + } + registerOnTouched(fn: any): void { + this.selectComponent.registerOnTouched(fn); + } + setDisabledState?(isDisabled: boolean): void { + if (this.selectComponent.setDisabledState) + this.selectComponent.setDisabledState(isDisabled); + } + + trackBy(item: any) { + return this.dataSource.resolveIdField(item); + } + + ngOnDestroy(): void { + this._loadingSubscription.unsubscribe(); + } + + ngOnInit(): void { + this.dataFetching(); + this.detectLoading(); + + console.log(this.serverFiltering); + + if(this.serverFiltering){ + this.searchOnServer(); + }else{ + this.refreshDataSource(); + } + } + + dataFetching(){ + this.data$ = this.dataSource.data$.pipe( + map(t => { + if (t == null) + return []; + return t.data; + }) + ); + } + + detectLoading(){ + this._loadingSubscription = this.dataSource.loading$.subscribe(loading => { + this.isLoading = loading; + this.cdr.detectChanges(); + }); + } + + searchOnServer(){ + this.searchInput$.pipe( + distinctUntilChanged(), // emit the difference from previous input + debounceTime(500) // this is for delaying searching speed + ).subscribe(searchTerm => this.refreshDataSource(searchTerm, 1, 100)); // page: 1, pageSize: 50 + + this.refreshDataSource(); //send the query to server to sorting & filtering by default + } + + get selectedModel() { + return this.selectComponent.hasValue ? this.selectComponent.selectedItems[0].value : null; + } + + refreshDataSource(searchTerm:any = null, page:number = null, pageSize:number = null){ + let searchfilters:ISimpleFilter[] = null; + if(searchTerm){ + searchfilters = [{ + path: this.searchPath || this.bindLabel, + type: this.searchType || 'Contains', // Default: Contains + value: searchTerm + }] + } + this.dataSource.query({ + page: page, + pageSize: pageSize, + filters:searchfilters, + sorts:[ + {path: this.sortingPath || this.bindLabel, ascending: true} + ] + }) + } + + get hasOptionTemplate() { + return this.LabelTemplate ? true : false; + } + + get selectOptionTemplate(){ + if (this.LabelTemplate) + return this.LabelTemplate.template; + return null; + } + +} diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ps-ng-selectors.module.ts b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ps-ng-selectors.module.ts new file mode 100644 index 0000000..df8f1fa --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/ps-ng-selectors.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NgSelectComponent } from './ng-select/ng-select.component'; +import { MultiSelectComponent } from './multi-select/multi-select.component'; +import { FormsModule } from '@angular/forms'; +import { NgSelectModule } from '@ng-select/ng-select'; +import { SelectLabelTemplateDirective } from './select-label-template.directive'; + + + +@NgModule({ + declarations: [NgSelectComponent, MultiSelectComponent, SelectLabelTemplateDirective], + imports: [ + CommonModule, + FormsModule, + NgSelectModule, + ], + exports:[ + NgSelectComponent, + MultiSelectComponent, + SelectLabelTemplateDirective + ] +}) +export class PsNgSelectorsModule { } diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.spec.ts b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.spec.ts new file mode 100644 index 0000000..d6da15f --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.spec.ts @@ -0,0 +1,8 @@ +import { SelectLabelTemplateDirective } from './select-label-template.directive'; + +describe('SelectLabelTemplateDirective', () => { + it('should create an instance', () => { + const directive = new SelectLabelTemplateDirective(); + expect(directive).toBeTruthy(); + }); +}); diff --git a/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.ts b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.ts new file mode 100644 index 0000000..1c0af77 --- /dev/null +++ b/projects/poweredsoft/ng-select/src/lib/ps-ng-selectors/select-label-template.directive.ts @@ -0,0 +1,10 @@ +import { Directive, TemplateRef } from '@angular/core'; + +@Directive({ + selector: '[psNgSelectLabel]' +}) +export class SelectLabelTemplateDirective { + + constructor(public template: TemplateRef) { } + +} diff --git a/projects/poweredsoft/ng-select/src/public-api.ts b/projects/poweredsoft/ng-select/src/public-api.ts new file mode 100644 index 0000000..262f25f --- /dev/null +++ b/projects/poweredsoft/ng-select/src/public-api.ts @@ -0,0 +1,11 @@ +/* + * Public API Surface of ng-select + */ + +export * from './lib/ps-ng-selectors/ps-ng-selectors.module'; +export * from './lib/ps-ng-selectors/ng-select/ng-select.component'; +export * from './lib/ps-ng-selectors/multi-select/multi-select.component'; +export * from './lib/ps-ng-selectors/select-label-template.directive'; + + + diff --git a/projects/poweredsoft/ng-select/src/test.ts b/projects/poweredsoft/ng-select/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/projects/poweredsoft/ng-select/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/projects/poweredsoft/ng-select/tsconfig.lib.json b/projects/poweredsoft/ng-select/tsconfig.lib.json new file mode 100644 index 0000000..38a679b --- /dev/null +++ b/projects/poweredsoft/ng-select/tsconfig.lib.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/poweredsoft/ng-select/tsconfig.lib.prod.json b/projects/poweredsoft/ng-select/tsconfig.lib.prod.json new file mode 100644 index 0000000..cbae794 --- /dev/null +++ b/projects/poweredsoft/ng-select/tsconfig.lib.prod.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.lib.json", + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/projects/poweredsoft/ng-select/tsconfig.spec.json b/projects/poweredsoft/ng-select/tsconfig.spec.json new file mode 100644 index 0000000..4acf941 --- /dev/null +++ b/projects/poweredsoft/ng-select/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/poweredsoft/ng-select/tslint.json b/projects/poweredsoft/ng-select/tslint.json new file mode 100644 index 0000000..3aa2f4c --- /dev/null +++ b/projects/poweredsoft/ng-select/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/projects/poweredsoft/ngx-cdk-ui/src/lib/ps-selectors/ng-select/ng-select.component.html b/projects/poweredsoft/ngx-cdk-ui/src/lib/ps-selectors/ng-select/ng-select.component.html index feb5be1..e69de29 100644 --- a/projects/poweredsoft/ngx-cdk-ui/src/lib/ps-selectors/ng-select/ng-select.component.html +++ b/projects/poweredsoft/ngx-cdk-ui/src/lib/ps-selectors/ng-select/ng-select.component.html @@ -1,17 +0,0 @@ - - - - - - - diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d4f35bf..8db6dce 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,6 +12,7 @@ import { InMemoryCache } from 'apollo-cache-inmemory'; import { HttpClientModule } from '@angular/common/http'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + export function app_Init(apollo: Apollo, httpLink: HttpLink) { return async () => { const defaultOptions: DefaultOptions = { @@ -50,6 +51,7 @@ export function app_Init(apollo: Apollo, httpLink: HttpLink) { declarations: [ AppComponent, HomeComponent, + //SelectLabelTemplateDirective, ], imports: [ diff --git a/src/app/ng-select-demo/ng-select-demo.module.ts b/src/app/ng-select-demo/ng-select-demo.module.ts index ffa7b5e..0bd078e 100644 --- a/src/app/ng-select-demo/ng-select-demo.module.ts +++ b/src/app/ng-select-demo/ng-select-demo.module.ts @@ -4,7 +4,8 @@ import { NgSelectDemoComponent } from './ng-select-demo/ng-select-demo.component import { NgSelectDemoRoutingModule } from './ng-select-demo-routing.module'; import { NgSelectModule } from '@ng-select/ng-select'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { PsSelectorsModule } from '@poweredsoft/ngx-cdk-ui'; +import { PsNgSelectorsModule } from '@poweredsoft/ng-select'; + @@ -16,7 +17,7 @@ import { PsSelectorsModule } from '@poweredsoft/ngx-cdk-ui'; FormsModule, ReactiveFormsModule, NgSelectDemoRoutingModule, - PsSelectorsModule //our ng select module + PsNgSelectorsModule ] }) export class NgSelectDemoModule { } diff --git a/src/app/ng-select-demo/ng-select-demo/ng-select-demo.component.html b/src/app/ng-select-demo/ng-select-demo/ng-select-demo.component.html index 9cf5f05..1c1b924 100644 --- a/src/app/ng-select-demo/ng-select-demo/ng-select-demo.component.html +++ b/src/app/ng-select-demo/ng-select-demo/ng-select-demo.component.html @@ -1,25 +1,27 @@

Single Select Demo

-
+
{{ item.name }} - {{ item.address }}
-

Multi-Select Demo

- + + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 8259035..ba18609 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,10 @@ "@poweredsoft/ngx-bootstrap": [ "dist/poweredsoft/ngx-bootstrap/poweredsoft-ngx-bootstrap", "dist/poweredsoft/ngx-bootstrap" + ], + "@poweredsoft/ng-select": [ + "dist/poweredsoft/ng-select/poweredsoft-ng-select", + "dist/poweredsoft/ng-select" ] } },