From 1be46e7078d4608e220382a7c66c65e26af58478 Mon Sep 17 00:00:00 2001 From: "jan.marien" Date: Mon, 28 Aug 2017 10:35:08 +0200 Subject: [PATCH 1/3] demo for bug select object https://github.com/edcarroll/ng2-semantic-ui/issues/254 --- .../app/pages/modules/select/select.page.html | 11 ++++++ .../app/pages/modules/select/select.page.ts | 36 ++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/demo/src/app/pages/modules/select/select.page.html b/demo/src/app/pages/modules/select/select.page.html index dd86fb75e..5883df323 100644 --- a/demo/src/app/pages/modules/select/select.page.html +++ b/demo/src/app/pages/modules/select/select.page.html @@ -87,6 +87,17 @@

Remote Lookup

+ +
+

Object Lookup

+

A select with objects

+
+
+ +
+
+
+
Localization

diff --git a/demo/src/app/pages/modules/select/select.page.ts b/demo/src/app/pages/modules/select/select.page.ts index 84db911aa..811d50cee 100644 --- a/demo/src/app/pages/modules/select/select.page.ts +++ b/demo/src/app/pages/modules/select/select.page.ts @@ -162,6 +162,20 @@ const exampleSearchLookupTemplate = ` `; +const exampleSelectObjectLookupTemplate = ` + + + +

+

Currently selected: {{ selectedOption | json }}

+
+`; + @Component({ selector: "demo-page-select", templateUrl: "./select.page.html" @@ -515,6 +529,25 @@ export class SelectExampleLookupSearch { } } +@Component({ + selector:'example-select-object-lookup', + template: exampleSelectObjectLookupTemplate +}) +export class SelectObjectLookupComponent { + public selectedOption = {id: 2, name: "two"}; + private _options = [{id: 1, name: "one"}, {id: 2, name: "two"}, {id: 3, name: "three"}]; + + public optionsLookup = async (query:string, initial:IOption) => { + if (initial != undefined) { + return new Promise(resolve => + setTimeout(() => resolve(this._options.find(item => item.id === initial.id)), 500)); + } + + return new Promise(resolve => + setTimeout(() => resolve(this._options), 500)); + } +} + export const SelectPageComponents = [ SelectPage, @@ -522,5 +555,6 @@ export const SelectPageComponents = [ SelectExampleVariations, SelectExampleInMenuSearch, SelectExampleTemplate, - SelectExampleLookupSearch + SelectExampleLookupSearch, + SelectObjectLookupComponent ]; From bfa711dae8ad15f624cc9e18984ba4bbf2dd41ae Mon Sep 17 00:00:00 2001 From: "jan.marien" Date: Mon, 28 Aug 2017 10:38:45 +0200 Subject: [PATCH 2/3] fix: bug select object https://github.com/edcarroll/ng2-semantic-ui/issues/254 --- src/modules/select/components/select.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/select/components/select.ts b/src/modules/select/components/select.ts index 16ca41050..f959acc07 100644 --- a/src/modules/select/components/select.ts +++ b/src/modules/select/components/select.ts @@ -108,7 +108,7 @@ export class SuiSelect extends SuiSelectBase implements ICustomValue this.drawSelectedOption(); } if (this.selectedOption == undefined) { - if (this.valueField && this.searchService.hasItemLookup) { + if (this.searchService.hasItemLookup) { // If the search service has a selected lookup function, make use of that to load the initial value. this.searchService .initialLookup(value) From 8971ec62ed1864d884eb3c48040b7e070923e6d3 Mon Sep 17 00:00:00 2001 From: "jan.marien" Date: Tue, 29 Aug 2017 11:35:49 +0200 Subject: [PATCH 3/3] style: format code according to tslint specifications --- demo/src/app/pages/modules/select/select.page.html | 1 + demo/src/app/pages/modules/select/select.page.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/demo/src/app/pages/modules/select/select.page.html b/demo/src/app/pages/modules/select/select.page.html index 5883df323..dab4990e3 100644 --- a/demo/src/app/pages/modules/select/select.page.html +++ b/demo/src/app/pages/modules/select/select.page.html @@ -95,6 +95,7 @@

Object Lookup


+

A lookup function is used to match the initial value with one of the values in the option list.

diff --git a/demo/src/app/pages/modules/select/select.page.ts b/demo/src/app/pages/modules/select/select.page.ts index 811d50cee..ed5ee17aa 100644 --- a/demo/src/app/pages/modules/select/select.page.ts +++ b/demo/src/app/pages/modules/select/select.page.ts @@ -447,6 +447,7 @@ let lookupFn:LookupFn = (query, initial?) => { // Return a promise that resolves with a list of query results. } `; + public exampleSelectObjectLookupTemplate:string = exampleSelectObjectLookupTemplate; } @@ -530,19 +531,19 @@ export class SelectExampleLookupSearch { } @Component({ - selector:'example-select-object-lookup', + selector:"example-select-object-lookup", template: exampleSelectObjectLookupTemplate }) export class SelectObjectLookupComponent { - public selectedOption = {id: 2, name: "two"}; - private _options = [{id: 1, name: "one"}, {id: 2, name: "two"}, {id: 3, name: "three"}]; + public selectedOption:IOption = { id: 2, name: "two" }; + private _options:IOption[] = [{ id: 1, name: "one" }, { id: 2, name: "two" }, { id: 3, name: "three" }]; - public optionsLookup = async (query:string, initial:IOption) => { + public optionsLookup = async (query:string, initial:IOption) => { if (initial != undefined) { return new Promise(resolve => setTimeout(() => resolve(this._options.find(item => item.id === initial.id)), 500)); } - + return new Promise(resolve => setTimeout(() => resolve(this._options), 500)); }