Skip to content

Commit 57b2643

Browse files
author
pipeline
committed
Ej2 4436 auto complete master
1 parent ebea9bf commit 57b2643

36 files changed

+632
-17
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { NgModule, ModuleWithProviders, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2+
import { RouterModule } from '@angular/router';
3+
import { AutoCompleteModule } from '@syncfusion/ej2-ng-dropdowns';
4+
import { CheckBoxModule } from '@syncfusion/ej2-ng-buttons';
5+
import { FormsModule } from '@angular/forms';
6+
import { DefaultAutoCompleteComponent } from './default.component';
7+
import { GroupAndIconAutoCompleteComponent } from './groupingicon.component';
8+
import { DataBindingAutoCompleteComponent } from './databinding.component';
9+
import { TemplateAutoCompleteComponent } from './template.component';
10+
import { HighlightAutoCompleteComponent } from './highlight.component';
11+
import { SharedModule } from '../common/shared.module';
12+
export const autoCompleteAppRoutes: Object[] = [
13+
{
14+
path: ':theme/autocomplete/default', component: DefaultAutoCompleteComponent,
15+
name: 'Default Functionalities', category: 'AutoComplete'
16+
},
17+
{
18+
path: ':theme/autocomplete/groupingicon', component: GroupAndIconAutoCompleteComponent,
19+
name: 'Grouping and Icons', category: 'AutoComplete'
20+
},
21+
{
22+
path: ':theme/autocomplete/databinding', component: DataBindingAutoCompleteComponent,
23+
name: 'Data Binding', category: 'AutoComplete'
24+
},
25+
{
26+
path: ':theme/autocomplete/template', component: TemplateAutoCompleteComponent,
27+
name: 'Template', category: 'AutoComplete'
28+
},
29+
{
30+
path: ':theme/autocomplete/highlight', component: HighlightAutoCompleteComponent,
31+
name: 'Highlight', category: 'AutoComplete'
32+
}
33+
];
34+
35+
export const AutoCompleteRouter: ModuleWithProviders = RouterModule.forChild(autoCompleteAppRoutes);
36+
37+
@NgModule({
38+
imports: [AutoCompleteRouter, AutoCompleteModule, SharedModule, CheckBoxModule, FormsModule],
39+
declarations: [
40+
DefaultAutoCompleteComponent,
41+
GroupAndIconAutoCompleteComponent,
42+
DataBindingAutoCompleteComponent,
43+
TemplateAutoCompleteComponent,
44+
HighlightAutoCompleteComponent
45+
],
46+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
47+
})
48+
export class AutoCompleteSampleModule {
49+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"common/shared.module":"import { NgModule } from '@angular/core';\nimport { ButtonModule } from '@syncfusion/ej2-ng-buttons';\nimport { ListViewModule } from '@syncfusion/ej2-ng-lists';\nimport { DropDownListModule } from '@syncfusion/ej2-ng-dropdowns';\n\n\n@NgModule({\n imports: [\n ButtonModule,\n ListViewModule,\n DropDownListModule\n ],\n \n exports: [\n ButtonModule,\n ListViewModule,\n DropDownListModule\n ]\n})\nexport class SharedModule { }\n","app.module":"import { DataBindingAutoCompleteComponent } from './databinding.component';\nimport { HttpModule, JsonpModule } from '@angular/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport 'rxjs/add/operator/map';\nimport { NgModule, ModuleWithProviders, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\nimport { AutoCompleteModule } from '@syncfusion/ej2-ng-dropdowns';\nimport { CheckBoxModule } from '@syncfusion/ej2-ng-buttons';\nimport { FormsModule } from '@angular/forms';\n\n\n\n\n\nimport { SharedModule } from './common/shared.module';\n\n\n\n\n@NgModule({\n imports: [AutoCompleteModule, SharedModule, CheckBoxModule, FormsModule, HttpModule, JsonpModule, BrowserModule],\ndeclarations: [DataBindingAutoCompleteComponent],\nbootstrap: [DataBindingAutoCompleteComponent]\n})\nexport class AppModule { }","databinding.component":"/**\n * AutoComplete Remote-Data & Local-Data Samples\n */\nimport { Component, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Query, DataManager, ODataV4Adaptor } from '@syncfusion/ej2-data';\nimport { AutoCompleteComponent } from '@syncfusion/ej2-ng-dropdowns';\nimport { CheckBoxComponent } from '@syncfusion/ej2-ng-buttons';\n\n@Component({\n selector: 'control-content',\n templateUrl: 'databinding.html',\n styleUrls: ['databinding.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DataBindingAutoCompleteComponent {\n @ViewChild('local')\n public localObj: AutoCompleteComponent;\n @ViewChild('remote')\n public remoteObj: AutoCompleteComponent;\n @ViewChild('checkbox')\n public checkboxObj: CheckBoxComponent;\n public countries: { [key: string]: Object; }[] = [\n { name: 'Australia', code: 'AU' },\n { name: 'Bermuda', code: 'BM' },\n { name: 'Canada', code: 'CA' },\n { name: 'Cameroon', code: 'CM' },\n { name: 'Denmark', code: 'DK' },\n { name: 'France', code: 'FR' },\n { name: 'Finland', code: 'FI' },\n { name: 'Germany', code: 'DE' },\n { name: 'Greenland', code: 'GL' },\n { name: 'Hong Kong', code: 'HK' },\n { name: 'India', code: 'IN' },\n { name: 'Italy', code: 'IT' },\n { name: 'Japan', code: 'JP' },\n { name: 'Mexico', code: 'MX' },\n { name: 'Norway', code: 'NO' },\n { name: 'Poland', code: 'PL' },\n { name: 'Switzerland', code: 'CH' },\n { name: 'United Kingdom', code: 'GB' },\n { name: 'United States', code: 'US' }\n ];\n public localFields: Object = { value: 'name' };\n public localWaterMark: string = 'e.g. Australia';\n public data: DataManager = new DataManager({\n url: 'http://services.odata.org/V4/Northwind/Northwind.svc/Products',\n adaptor: new ODataV4Adaptor,\n crossDomain: true\n });\n public suggestionCount: number = 5;\n public query: Query = new Query().select(['ProductID', 'ProductName']);\n public remoteFields: Object = { text: 'ProductName', value: 'ProductID' };\n public remoteWaterMark: string = 'e.g. Alice Mutton';\n public loader: HTMLElement;\n public onActionBegin(): void {\n let spinner: HTMLElement = <HTMLElement>document.querySelector('.e-spinner-icon');\n if (!spinner) {\n this.loader = <HTMLElement>document.querySelectorAll('.e-clear-icon')[1];\n this.loader.classList.remove('e-clear-icon');\n this.loader.classList.add('e-spinner-icon');\n this.loader.classList.add('e-input-group-icon');\n }\n }\n public onActionComplete(): void {\n this.loader.classList.remove('e-spinner-icon');\n this.loader.classList.remove('e-input-group-icon');\n this.loader.classList.add('e-clear-icon');\n }\n public onActionFailure(): void {\n this.onActionComplete();\n }\n public onChange(): void {\n this.localObj.autofill = this.checkboxObj.checked;\n this.remoteObj.autofill = this.checkboxObj.checked;\n }\n}\n","databinding.html":"<div class=\"control-section\">\n <div class=\"col-lg-9 content-wrapper\">\n <div id='local' class='col-lg-6' style=\"margin: 0 auto;padding-top: 15px;\">\n <div style=\"width: 250px;margin: 0 auto;\">\n <h4> Local Data</h4>\n <ej-autocomplete id='country' #local [dataSource]='countries' [autofill]='true' [fields]='localFields' filterType='StartsWith'\n [placeholder]='localWaterMark'></ej-autocomplete>\n </div>\n </div>\n <div id='remote' class='col-lg-6' style=\"margin: 0 auto;padding-top: 15px;\">\n <div style=\"width: 250px; margin: 0 auto;\">\n <h4>Remote Data</h4>\n <ej-autocomplete id='products' #remote [dataSource]='data' [suggestionCount]='suggestionCount' (actionFailure)='onActionFailure()'\n filterType='StartsWith' (actionComplete)='onActionComplete()' (actionBegin)='onActionBegin()' [fields]='remoteFields'\n [autofill]='true' [query]='query' [placeholder]='remoteWaterMark' sortOrder='Ascending'></ej-autocomplete>\n </div>\n </div>\n </div>\n <div class=\"col-lg-3 property-section\">\n <div class=\"property-panel-section\">\n <div class=\"property-panel-header\">Properties</div>\n <div class=\"property-panel-content\">\n <div id=\"property\" class=\"property-panel-table\" title=\"Properties\">\n <div style=\"margin-left: 50px; padding-top:25px;\">\n <ej-checkbox #checkbox label=\"Autofill\" [checked]=\"true\" (change)=\"onChange()\"></ej-checkbox>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","databinding.css":".property-panel-content {\n padding: 0 10px 10px 0;\n}\n\n.content {\n width: 43%;\n margin: 0 auto;\n min-width: 185px;\n padding: 25px 0px;\n}\n\n.control-label {\n padding: 24px 0px 0px 0px;\n font-size: 12px;\n opacity: 0.54;\n}\n\n.control-section,\n.content-wrapper {\n min-height: 350px;\n}\n\n.e-input-group .e-input-group-icon.e-spinner-icon {\n background-image: url(./styles/images/Medium-36px-spin.gif) !important;\n background-size: 12px 12px !important;\n background-repeat: no-repeat !important;\n background-position: center center !important;\n top: -2px;\n}\n.e-input-group .e-spinner-icon.e-input-group-icon:active {\n background: transparent;\n}\n\n.e-input-group.e-ddl .e-input-group-icon.e-spinner-icon {\n border: none;\n}","index.html":"<!DOCTYPE html>\n<html>\n \n <head>\n <meta name=\"author\" content=\"Syncfusion\" />\n <link href=\"http://npmci.syncfusion.com/packages/production/material.css\" rel=\"stylesheet\" />\n <script src=\"https://unpkg.com/core-js/client/shim.min.js\"></script>\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.min.js\"></script>\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/zone.js/0.6.25/zone.min.js\"></script>\n <script src=\"https://unpkg.com/[email protected]\"></script>\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js\"></script>\n <script src=\"systemjs.config.js\"></script>\n </head>\n \n <body>\n <control-content>\n <div id='loader'>Loading...</div>\n </control-content>\n </body>\n \n </html>\n ","systemjs.config.js":"System.config({\n transpiler: \"typescript\",\n typescriptOptions: {\n compilerOptions: {\n target: \"umd\",\n module: \"commonjs\",\n moduleResolution: \"node\",\n emitDecoratorMetadata: true,\n experimentalDecorators: true\n }\n },\n paths: {\n \"syncfusion:\": \"http://npmci.syncfusion.com/packages/production/\",\n \"angular:\": \"https://unpkg.com/@angular/\"\n },\n map: {\n main: 'main.ts',\n typescript: \"https://unpkg.com/[email protected]/lib/typescript.js\",\n \"plugin-json\":\"https://cdnjs.cloudflare.com/ajax/libs/systemjs-plugin-json/0.3.0/json.min.js\",\n \"@syncfusion/ej2-base\": \"syncfusion:ej2-base/dist/ej2-base.umd.min.js\",\n \"@syncfusion/ej2-buttons\": \"syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js\",\n \"@syncfusion/ej2-calendars\": \"syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js\",\n \"@syncfusion/ej2-charts\": \"syncfusion:ej2-charts/dist/ej2-charts.umd.min.js\",\n \"@syncfusion/ej2-circulargauge\": \"syncfusion:ej2-circulargauge/dist/ej2-circulargauge.umd.min.js\",\n \"@syncfusion/ej2-data\": \"syncfusion:ej2-data/dist/ej2-data.umd.min.js\",\n \"@syncfusion/ej2-dropdowns\": \"syncfusion:ej2-dropdowns/dist/ej2-dropdowns.umd.min.js\",\n \"@syncfusion/ej2-grids\": \"syncfusion:ej2-grids/dist/ej2-grids.umd.min.js\",\n \"@syncfusion/ej2-inputs\": \"syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js\",\n \"@syncfusion/ej2-lists\": \"syncfusion:ej2-lists/dist/ej2-lists.umd.min.js\",\n \"@syncfusion/ej2-navigations\": \"syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js\",\n \"@syncfusion/ej2-popups\": \"syncfusion:ej2-popups/dist/ej2-popups.umd.min.js\",\n \"@syncfusion/ej2-lineargauge\": \"syncfusion:ej2-lineargauge/dist/ej2-lineargauge.umd.min.js\",\n\n \"@syncfusion/ej2-ng-base\": \"syncfusion:ej2-ng-base/dist/ej2-ng-base.umd.min.js\",\n \"@syncfusion/ej2-ng-buttons\": \"syncfusion:ej2-ng-buttons/dist/ej2-ng-buttons.umd.min.js\",\n \"@syncfusion/ej2-ng-calendars\": \"syncfusion:ej2-ng-calendars/dist/ej2-ng-calendars.umd.min.js\",\n \"@syncfusion/ej2-ng-charts\": \"syncfusion:ej2-ng-charts/dist/ej2-ng-charts.umd.min.js\",\n \"@syncfusion/ej2-ng-circulargauge\": \"syncfusion:ej2-ng-circulargauge/dist/ej2-ng-circulargauge.umd.min.js\",\n \"@syncfusion/ej2-ng-data\": \"syncfusion:ej2-ng-data/dist/ej2-ng-data.umd.min.js\",\n \"@syncfusion/ej2-ng-dropdowns\": \"syncfusion:ej2-ng-dropdowns/dist/ej2-ng-dropdowns.umd.min.js\",\n \"@syncfusion/ej2-ng-grids\": \"syncfusion:ej2-ng-grids/dist/ej2-ng-grids.umd.min.js\",\n \"@syncfusion/ej2-ng-inputs\": \"syncfusion:ej2-ng-inputs/dist/ej2-ng-inputs.umd.min.js\",\n \"@syncfusion/ej2-ng-lists\": \"syncfusion:ej2-ng-lists/dist/ej2-ng-lists.umd.min.js\",\n \"@syncfusion/ej2-ng-navigations\": \"syncfusion:ej2-ng-navigations/dist/ej2-ng-navigations.umd.min.js\",\n \"@syncfusion/ej2-ng-popups\": \"syncfusion:ej2-ng-popups/dist/ej2-ng-popups.umd.min.js\",\n \"@syncfusion/ej2-ng-lineargauge\": \"syncfusion:ej2-ng-lineargauge/dist/ej2-ng-lineargauge.umd.min.js\",\n\n '@angular/core': 'angular:core/bundles/core.umd.js',\n '@angular/common': 'angular:common/bundles/common.umd.js',\n '@angular/compiler': 'angular:compiler/bundles/compiler.umd.js',\n '@angular/http': 'angular:http/bundles/http.umd.js',\n '@angular/forms': 'angular:forms/bundles/forms.umd.js',\n '@angular/router': 'angular:router/bundles/router.umd.js',\n '@angular/platform-browser': 'angular:platform-browser/bundles/platform-browser.umd.js',\n '@angular/platform-browser-dynamic': 'angular:platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',\n '@angular/material': 'angular:material/bundles/material.umd.js',\n 'rxjs': 'https://unpkg.com/rxjs'\n },\n meta: { \n '*.json': { loader: 'plugin-json' }\n }\n});\n\nSystem.import('main.ts').catch(console.error.bind(console));\n","main.ts":"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { enableProdMode } from '@angular/core';\nimport { AppModule } from './app.module';\nimport { enableRipple } from '@syncfusion/ej2-base';\n\nenableRipple(true);\n\nenableProdMode();\nplatformBrowserDynamic().bootstrapModule(AppModule);"}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* AutoComplete Remote-Data & Local-Data Samples
3+
*/
4+
import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
5+
import { Query, DataManager, ODataV4Adaptor } from '@syncfusion/ej2-data';
6+
import { AutoCompleteComponent } from '@syncfusion/ej2-ng-dropdowns';
7+
import { CheckBoxComponent } from '@syncfusion/ej2-ng-buttons';
8+
9+
@Component({
10+
selector: 'control-content',
11+
templateUrl: 'databinding.html',
12+
styleUrls: ['databinding.css'],
13+
encapsulation: ViewEncapsulation.None
14+
})
15+
export class DataBindingAutoCompleteComponent {
16+
@ViewChild('local')
17+
public localObj: AutoCompleteComponent;
18+
@ViewChild('remote')
19+
public remoteObj: AutoCompleteComponent;
20+
@ViewChild('checkbox')
21+
public checkboxObj: CheckBoxComponent;
22+
public countries: { [key: string]: Object; }[] = [
23+
{ name: 'Australia', code: 'AU' },
24+
{ name: 'Bermuda', code: 'BM' },
25+
{ name: 'Canada', code: 'CA' },
26+
{ name: 'Cameroon', code: 'CM' },
27+
{ name: 'Denmark', code: 'DK' },
28+
{ name: 'France', code: 'FR' },
29+
{ name: 'Finland', code: 'FI' },
30+
{ name: 'Germany', code: 'DE' },
31+
{ name: 'Greenland', code: 'GL' },
32+
{ name: 'Hong Kong', code: 'HK' },
33+
{ name: 'India', code: 'IN' },
34+
{ name: 'Italy', code: 'IT' },
35+
{ name: 'Japan', code: 'JP' },
36+
{ name: 'Mexico', code: 'MX' },
37+
{ name: 'Norway', code: 'NO' },
38+
{ name: 'Poland', code: 'PL' },
39+
{ name: 'Switzerland', code: 'CH' },
40+
{ name: 'United Kingdom', code: 'GB' },
41+
{ name: 'United States', code: 'US' }
42+
];
43+
public localFields: Object = { value: 'name' };
44+
public localWaterMark: string = 'e.g. Australia';
45+
public data: DataManager = new DataManager({
46+
url: 'http://services.odata.org/V4/Northwind/Northwind.svc/Products',
47+
adaptor: new ODataV4Adaptor,
48+
crossDomain: true
49+
});
50+
public suggestionCount: number = 5;
51+
public query: Query = new Query().select(['ProductID', 'ProductName']);
52+
public remoteFields: Object = { text: 'ProductName', value: 'ProductID' };
53+
public remoteWaterMark: string = 'e.g. Alice Mutton';
54+
public loader: HTMLElement;
55+
public onActionBegin(): void {
56+
let spinner: HTMLElement = <HTMLElement>document.querySelector('.e-spinner-icon');
57+
if (!spinner) {
58+
this.loader = <HTMLElement>document.querySelectorAll('.e-clear-icon')[1];
59+
this.loader.classList.remove('e-clear-icon');
60+
this.loader.classList.add('e-spinner-icon');
61+
this.loader.classList.add('e-input-group-icon');
62+
}
63+
}
64+
public onActionComplete(): void {
65+
this.loader.classList.remove('e-spinner-icon');
66+
this.loader.classList.remove('e-input-group-icon');
67+
this.loader.classList.add('e-clear-icon');
68+
}
69+
public onActionFailure(): void {
70+
this.onActionComplete();
71+
}
72+
public onChange(): void {
73+
this.localObj.autofill = this.checkboxObj.checked;
74+
this.remoteObj.autofill = this.checkboxObj.checked;
75+
}
76+
}

src/autocomplete/databinding.css

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
.property-panel-content {
2+
padding: 0 10px 10px 0;
3+
}
4+
5+
.content {
6+
width: 43%;
7+
margin: 0 auto;
8+
min-width: 185px;
9+
padding: 25px 0px;
10+
}
11+
12+
.control-label {
13+
padding: 24px 0px 0px 0px;
14+
font-size: 12px;
15+
opacity: 0.54;
16+
}
17+
18+
.control-section,
19+
.content-wrapper {
20+
min-height: 350px;
21+
}
22+
23+
.e-input-group .e-input-group-icon.e-spinner-icon {
24+
background-image: url(./styles/images/Medium-36px-spin.gif) !important;
25+
background-size: 12px 12px !important;
26+
background-repeat: no-repeat !important;
27+
background-position: center center !important;
28+
top: -2px;
29+
}
30+
.e-input-group .e-spinner-icon.e-input-group-icon:active {
31+
background: transparent;
32+
}
33+
34+
.e-input-group.e-ddl .e-input-group-icon.e-spinner-icon {
35+
border: none;
36+
}

0 commit comments

Comments
 (0)