From 602ec635c2f0388e4dd9538cea42753cb577700b Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Mon, 10 Oct 2016 12:18:52 +0100 Subject: [PATCH 1/5] #632 fix display value widget for dates --- .../widgets/display-value/display-value.widget.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts index 5ea68a5901..64db3f7f07 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts @@ -22,6 +22,7 @@ import { FormService } from '../../../services/form.service'; import { FormFieldOption } from './../core/form-field-option'; declare var componentHandler; +declare var moment: any; @Component({ moduleId: module.id, @@ -84,6 +85,14 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { this.loadRadioButtonValue(); } break; + case FormFieldTypes.DATE: + if (this.value) { + let d = moment(this.value.split('T')[0]); + if (d.isValid()) { + this.value = d.format('D-M-YYYY'); + } + } + break; default: this.value = this.field.value; break; From 1394a493f3fad53f1fef4ffa899923c1bfae1e9d Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 11 Oct 2016 10:26:12 +0100 Subject: [PATCH 2/5] #634 fix amount currency rendering for completed forms --- .../widgets/display-value/display-value.widget.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts index 64db3f7f07..93c0b340ef 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts @@ -93,6 +93,12 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { } } break; + case FormFieldTypes.AMOUNT: + if (this.value) { + let currency = this.field.currency || '$'; + this.value = `${currency} ${this.field.value}`; + } + break; default: this.value = this.field.value; break; From 8151d3493e64e4bebf0d48821070647c53b57153 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 11 Oct 2016 11:03:59 +0100 Subject: [PATCH 3/5] Base class for 'textfield' widgets Reduces repetitive code needed to fix MDL problems for textfield-based components --- .../widgets/amount/amount.widget.ts | 25 ++-------- .../components/widgets/date/date.widget.ts | 25 ++-------- .../multiline-text/multiline-text.widget.ts | 25 ++-------- .../widgets/number/number.widget.ts | 22 ++------- .../components/widgets/tabs/tabs.widget.html | 1 - .../components/widgets/text/text.widget.ts | 25 ++-------- .../widgets/textfield-widget.component.ts | 47 +++++++++++++++++++ 7 files changed, 67 insertions(+), 103 deletions(-) create mode 100644 ng2-components/ng2-activiti-form/src/components/widgets/textfield-widget.component.ts diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/amount/amount.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/amount/amount.widget.ts index b40556b1fe..2915520260 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/amount/amount.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/amount/amount.widget.ts @@ -16,7 +16,7 @@ */ import { Component, ElementRef, OnInit } from '@angular/core'; -import { WidgetComponent } from './../widget.component'; +import { TextFieldWidgetComponent } from './../textfield-widget.component'; @Component({ moduleId: module.id, @@ -24,12 +24,12 @@ import { WidgetComponent } from './../widget.component'; templateUrl: './amount.widget.html', styleUrls: ['./amount.widget.css'] }) -export class AmountWidget extends WidgetComponent implements OnInit { +export class AmountWidget extends TextFieldWidgetComponent implements OnInit { currency: string = '$'; - constructor(private elementRef: ElementRef) { - super(); + constructor(elementRef: ElementRef) { + super(elementRef); } ngOnInit() { @@ -38,21 +38,4 @@ export class AmountWidget extends WidgetComponent implements OnInit { } } - setupMaterialComponents(componentHandler: any): boolean { - // workaround for MDL issues with dynamic components - if (componentHandler) { - componentHandler.upgradeAllRegistered(); - if (this.elementRef && this.hasValue()) { - let el = this.elementRef.nativeElement; - let container = el.querySelector('.mdl-textfield'); - if (container) { - container.MaterialTextfield.change(this.field.value); - } - } - - return true; - } - return false; - } - } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/date/date.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/date/date.widget.ts index 78bf35a398..1aa4962958 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/date/date.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/date/date.widget.ts @@ -16,7 +16,7 @@ */ import { Component, ElementRef } from '@angular/core'; -import { WidgetComponent } from './../widget.component'; +import { TextFieldWidgetComponent } from './../textfield-widget.component'; @Component({ moduleId: module.id, @@ -24,27 +24,10 @@ import { WidgetComponent } from './../widget.component'; templateUrl: './date.widget.html', styleUrls: ['./date.widget.css'] }) -export class DateWidget extends WidgetComponent { +export class DateWidget extends TextFieldWidgetComponent { - constructor(private elementRef: ElementRef) { - super(); - } - - setupMaterialComponents(componentHandler: any): boolean { - // workaround for MDL issues with dynamic components - if (componentHandler) { - componentHandler.upgradeAllRegistered(); - if (this.elementRef && this.hasValue()) { - let el = this.elementRef.nativeElement; - let container = el.querySelector('.mdl-textfield'); - if (container) { - container.MaterialTextfield.change(this.field.value); - } - } - - return true; - } - return false; + constructor(elementRef: ElementRef) { + super(elementRef); } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts index a14cd81be9..3a36db6320 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/multiline-text/multiline-text.widget.ts @@ -16,7 +16,7 @@ */ import { Component, ElementRef } from '@angular/core'; -import { WidgetComponent } from './../widget.component'; +import { TextFieldWidgetComponent } from './../textfield-widget.component'; @Component({ moduleId: module.id, @@ -24,27 +24,10 @@ import { WidgetComponent } from './../widget.component'; templateUrl: './multiline-text.widget.html', styleUrls: ['./multiline-text.widget.css'] }) -export class MultilineTextWidget extends WidgetComponent { +export class MultilineTextWidget extends TextFieldWidgetComponent { - constructor(private elementRef: ElementRef) { - super(); - } - - setupMaterialComponents(handler: any): boolean { - // workaround for MDL issues with dynamic components - if (handler) { - handler.upgradeAllRegistered(); - if (this.elementRef && this.hasValue()) { - let el = this.elementRef.nativeElement; - let container = el.querySelector('.mdl-textfield'); - if (container) { - container.MaterialTextfield.change(this.field.value); - } - } - - return true; - } - return false; + constructor(elementRef: ElementRef) { + super(elementRef); } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts index d888cb6d7d..f3a04d58a4 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/number/number.widget.ts @@ -16,7 +16,7 @@ */ import { Component, ElementRef } from '@angular/core'; -import { WidgetComponent } from './../widget.component'; +import { TextFieldWidgetComponent } from './../textfield-widget.component'; @Component({ moduleId: module.id, @@ -24,24 +24,10 @@ import { WidgetComponent } from './../widget.component'; templateUrl: './number.widget.html', styleUrls: ['./number.widget.css'] }) -export class NumberWidget extends WidgetComponent { +export class NumberWidget extends TextFieldWidgetComponent { - constructor(private elementRef: ElementRef) { - super(); + constructor(elementRef: ElementRef) { + super(elementRef); } - setupMaterialComponents(handler: any): boolean { - // workaround for MDL issues with dynamic components - if (handler) { - handler.upgradeAllRegistered(); - if (this.elementRef && this.hasValue()) { - let container = this.elementRef.nativeElement.querySelector('.mdl-textfield'); - if (container) { - container.MaterialTextfield.change(this.field.value.toString()); - } - } - return true; - } - return false; - } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html index 4cb709f601..f79783472b 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.html @@ -18,4 +18,3 @@ -- diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.ts index 5d1261d014..e8498ab545 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.ts @@ -16,7 +16,7 @@ */ import { Component, ElementRef } from '@angular/core'; -import { WidgetComponent } from './../widget.component'; +import { TextFieldWidgetComponent } from './../textfield-widget.component'; @Component({ moduleId: module.id, @@ -24,27 +24,10 @@ import { WidgetComponent } from './../widget.component'; templateUrl: './text.widget.html', styleUrls: ['./text.widget.css'] }) -export class TextWidget extends WidgetComponent { +export class TextWidget extends TextFieldWidgetComponent { - constructor(private elementRef: ElementRef) { - super(); - } - - setupMaterialComponents(componentHandler: any): boolean { - // workaround for MDL issues with dynamic components - if (componentHandler) { - componentHandler.upgradeAllRegistered(); - if (this.elementRef && this.hasValue()) { - let el = this.elementRef.nativeElement; - let container = el.querySelector('.mdl-textfield'); - if (container) { - container.MaterialTextfield.change(this.field.value); - } - } - - return true; - } - return false; + constructor(elementRef: ElementRef) { + super(elementRef); } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/textfield-widget.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/textfield-widget.component.ts new file mode 100644 index 0000000000..03f9e09fc9 --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/components/widgets/textfield-widget.component.ts @@ -0,0 +1,47 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ElementRef } from '@angular/core'; +import { WidgetComponent } from './widget.component'; + +export abstract class TextFieldWidgetComponent extends WidgetComponent { + + protected elementRef: ElementRef; + + constructor(elementRef: ElementRef) { + super(); + this.elementRef = elementRef; + } + + // Overrides base implementation + setupMaterialComponents(handler: any): boolean { + // workaround for MDL issues with dynamic components + if (handler) { + handler.upgradeAllRegistered(); + if (this.elementRef && this.hasValue()) { + let el = this.elementRef.nativeElement; + let container = el.querySelector('.mdl-textfield'); + if (container) { + container.MaterialTextfield.change(this.field.value.toString()); + } + } + return true; + } + return false; + } + +} From 3042ae8060a23ec7936af06cd6f568df1b881c78 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 11 Oct 2016 11:53:08 +0100 Subject: [PATCH 4/5] Code improvements - shared global declarations - reduced hyperlink-related repetitive code --- .../src/components/activiti-form.component.ts | 2 - .../widgets/attach/attach.widget.ts | 3 -- .../widgets/checkbox/checkbox.widget.ts | 2 - .../widgets/container/container.widget.ts | 2 - .../widgets/core/form-field-validator.ts | 2 - .../display-text/display-text.widget.ts | 2 - .../display-value/display-value.widget.ts | 37 ++++--------------- .../hyperlink/hyperlink.widget.spec.ts | 6 +-- .../widgets/hyperlink/hyperlink.widget.ts | 29 ++++----------- .../radio-buttons/radio-buttons.widget.ts | 2 - .../components/widgets/tabs/tabs.widget.ts | 2 - .../widgets/typeahead/typeahead.widget.ts | 2 - .../widgets/upload/upload.widget.ts | 2 - .../components/widgets/widget.component.ts | 24 ++++++++++-- .../ng2-activiti-form/src/declarations.d.ts | 23 ++++++++++++ .../ng2-activiti-form/tsconfig.json | 5 +-- 16 files changed, 64 insertions(+), 81 deletions(-) create mode 100644 ng2-components/ng2-activiti-form/src/declarations.d.ts diff --git a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts index 1085e80028..f57bbe56b0 100644 --- a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts @@ -28,8 +28,6 @@ import { FormService } from './../services/form.service'; import { NodeService } from './../services/node.service'; import { FormModel, FormOutcomeModel, FormValues, FormFieldModel, FormOutcomeEvent } from './widgets/core/index'; -declare var componentHandler; - import { WidgetVisibilityService } from './../services/widget-visibility.service'; /** diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts index bf9f40a2d8..370eaa66e7 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts @@ -22,9 +22,6 @@ import { ExternalContent } from '../core/external-content'; import { ExternalContentLink } from '../core/external-content-link'; import { FormFieldModel } from '../core/form-field.model'; -declare var componentHandler; -declare let dialogPolyfill: any; - @Component({ moduleId: module.id, selector: 'attach-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts index dd82162870..b49f0718a6 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts @@ -18,8 +18,6 @@ import { Component } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'checkbox-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts index 674166be3d..713de93949 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts @@ -18,8 +18,6 @@ import { Component, Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { ContainerModel, FormFieldModel } from './../core/index'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'container-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts index 0b6c13aa9f..3b043834db 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts @@ -18,8 +18,6 @@ import { FormFieldModel } from './form-field.model'; import { FormFieldTypes } from './form-field-types'; -declare var moment: any; - export interface FormFieldValidator { isSupported(field: FormFieldModel): boolean; diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts index 9f7621afe2..e95d6aecdb 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts @@ -18,8 +18,6 @@ import { Component } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'display-text-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts index 93c0b340ef..0f9d610483 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts @@ -21,9 +21,6 @@ import { FormFieldTypes } from '../core/form-field-types'; import { FormService } from '../../../services/form.service'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; -declare var moment: any; - @Component({ moduleId: module.id, selector: 'display-value-widget', @@ -32,11 +29,10 @@ declare var moment: any; }) export class DisplayValueWidget extends WidgetComponent implements OnInit { - DEFAULT_URL: string = '#'; - DEFAULT_URL_SCHEME: string = 'http://'; - value: any; fieldType: string; + linkUrl: string; + linkText: string; constructor(private formService: FormService) { super(); @@ -99,6 +95,12 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { this.value = `${currency} ${this.field.value}`; } break; + case FormFieldTypes.HYPERLINK: + if (this.value) { + this.linkUrl = this.getHyperlinkUrl(this.field); + this.linkText = this.getHyperlinkText(this.field); + } + break; default: this.value = this.field.value; break; @@ -137,27 +139,4 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { } ); } - - // TODO: TAKEN FROM hyperlink WIDGET, OPTIMIZE - get linkUrl(): string { - let url = this.DEFAULT_URL; - - if (this.field && this.field.hyperlinkUrl) { - url = this.field.hyperlinkUrl; - if (!/^https?:\/\//i.test(url)) { - url = this.DEFAULT_URL_SCHEME + url; - } - } - - return url; - } - - // TODO: TAKEN FROM hyperlink WIDGET, OPTIMIZE - get linkText(): string { - if (this.field) { - return this.field.displayText || this.field.hyperlinkUrl; - } - return null; - } - } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts index d944f10182..c619be10e5 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts @@ -64,7 +64,7 @@ describe('HyperlinkWidget', () => { it('should return default url for missing field', () => { widget.field = null; - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_URL); + expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); }); it('should return default url for missing field property', () => { @@ -72,7 +72,7 @@ describe('HyperlinkWidget', () => { hyperlinkUrl: null }); - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_URL); + expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); }); it('should prepend url with scheme', () => { @@ -81,7 +81,7 @@ describe('HyperlinkWidget', () => { hyperlinkUrl: url }); - expect(widget.linkUrl).toBe(`${HyperlinkWidget.DEFAULT_URL_SCHEME}${url}`); + expect(widget.linkUrl).toBe(`${HyperlinkWidget.DEFAULT_HYPERLINK_SCHEME}${url}`); }); it('should not prepend url with scheme', () => { diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts index 9e12d2ecc3..32857a7063 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts @@ -15,40 +15,25 @@ * limitations under the License. */ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'hyperlink-widget', templateUrl: './hyperlink.widget.html', styleUrls: ['./hyperlink.widget.css'] }) -export class HyperlinkWidget extends WidgetComponent { +export class HyperlinkWidget extends WidgetComponent implements OnInit { - static DEFAULT_URL: string = '#'; - static DEFAULT_URL_SCHEME: string = 'http://'; + linkUrl: string; + linkText: string; - get linkUrl(): string { - let url = HyperlinkWidget.DEFAULT_URL; - - if (this.field && this.field.hyperlinkUrl) { - url = this.field.hyperlinkUrl; - if (!/^https?:\/\//i.test(url)) { - url = HyperlinkWidget.DEFAULT_URL_SCHEME + url; - } - } - - return url; - } - - get linkText(): string { + ngOnInit() { if (this.field) { - return this.field.displayText || this.field.hyperlinkUrl; + this.linkUrl = this.getHyperlinkUrl(this.field); + this.linkText = this.getHyperlinkText(this.field); } - return null; } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts index 9eae35a7c8..0a30b3ffde 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts @@ -20,8 +20,6 @@ import { WidgetComponent } from './../widget.component'; import { FormService } from '../../../services/form.service'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'radio-buttons-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts index db946b9372..7472231fb6 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts @@ -18,8 +18,6 @@ import { Component, Input, AfterViewInit, EventEmitter, Output } from '@angular/core'; import { TabModel, FormFieldModel } from './../core/index'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'tabs-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts index 98817dce0e..8bdbca48b9 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts @@ -20,8 +20,6 @@ import { FormService } from './../../../services/form.service'; import { WidgetComponent } from './../widget.component'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'typeahead-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts index a6fba3bc23..ffc7c0cd29 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts @@ -19,8 +19,6 @@ import { Component, OnInit } from '@angular/core'; import { WidgetComponent } from './../widget.component'; import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'upload-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts index 0d7fbe3abd..6ba09fc9cf 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts @@ -18,14 +18,14 @@ import { Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { FormFieldModel } from './core/index'; -declare let __moduleName: string; -declare var componentHandler; - /** * Base widget component. */ export class WidgetComponent implements AfterViewInit { + static DEFAULT_HYPERLINK_URL: string = '#'; + static DEFAULT_HYPERLINK_SCHEME: string = 'http://'; + @Input() field: FormFieldModel; @@ -67,4 +67,22 @@ export class WidgetComponent implements AfterViewInit { this.fieldChanged.emit(field); } + protected getHyperlinkUrl(field: FormFieldModel) { + let url = WidgetComponent.DEFAULT_HYPERLINK_URL; + if (field && field.hyperlinkUrl) { + url = field.hyperlinkUrl; + if (!/^https?:\/\//i.test(url)) { + url = `${WidgetComponent.DEFAULT_HYPERLINK_SCHEME}${url}`; + } + } + return url; + } + + protected getHyperlinkText(field: FormFieldModel) { + if (field) { + return field.displayText || field.hyperlinkUrl; + } + return null; + } + } diff --git a/ng2-components/ng2-activiti-form/src/declarations.d.ts b/ng2-components/ng2-activiti-form/src/declarations.d.ts new file mode 100644 index 0000000000..9c84411ad7 --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/declarations.d.ts @@ -0,0 +1,23 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +declare var module: any; +declare var moment: any; + +// MDL +declare var componentHandler: any; +declare let dialogPolyfill: any; diff --git a/ng2-components/ng2-activiti-form/tsconfig.json b/ng2-components/ng2-activiti-form/tsconfig.json index 73d5b02d81..0ed9d674eb 100644 --- a/ng2-components/ng2-activiti-form/tsconfig.json +++ b/ng2-components/ng2-activiti-form/tsconfig.json @@ -8,14 +8,13 @@ "sourceMap": true, "removeComments": true, "declaration": true, - "outDir": "dist" + "outDir": "dist", + "types": ["core-js", "jasmine"] }, "exclude": [ "demo", "dist", "node_modules", - "typings/main", - "typings/main.d.ts", "dist" ] } From 1b3b9f24c03084c1692975e53ef06fd0b25c9fda Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 11 Oct 2016 12:07:37 +0100 Subject: [PATCH 5/5] Fix unit tests --- .../widgets/hyperlink/hyperlink.widget.spec.ts | 17 ++++++++++++++--- .../widgets/hyperlink/hyperlink.widget.ts | 4 ++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts index c619be10e5..d6ce5d8d78 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts @@ -18,6 +18,7 @@ import { HyperlinkWidget } from './hyperlink.widget'; import { FormModel } from './../core/form.model'; import { FormFieldModel } from './../core/form-field.model'; +import { WidgetComponent } from './../widget.component'; describe('HyperlinkWidget', () => { @@ -33,6 +34,7 @@ describe('HyperlinkWidget', () => { widget.field = new FormFieldModel(new FormModel(), { displayText: text }); + widget.ngOnInit(); expect(widget.linkText).toBe(text); }); @@ -44,12 +46,15 @@ describe('HyperlinkWidget', () => { displayText: null, hyperlinkUrl: url }); + widget.ngOnInit(); expect(widget.linkText).toBe(url); }); it('should require field to get link text', () => { widget.field = null; + widget.ngOnInit(); + expect(widget.linkText).toBeNull(); }); @@ -58,21 +63,25 @@ describe('HyperlinkWidget', () => { displayText: null, hyperlinkUrl: null }); + widget.ngOnInit(); expect(widget.linkText).toBeNull(); }); it('should return default url for missing field', () => { widget.field = null; - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); + widget.ngOnInit(); + + expect(widget.linkUrl).toBe(WidgetComponent.DEFAULT_HYPERLINK_URL); }); it('should return default url for missing field property', () => { widget.field = new FormFieldModel(new FormModel(), { hyperlinkUrl: null }); + widget.ngOnInit(); - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); + expect(widget.linkUrl).toBe(WidgetComponent.DEFAULT_HYPERLINK_URL); }); it('should prepend url with scheme', () => { @@ -80,8 +89,9 @@ describe('HyperlinkWidget', () => { widget.field = new FormFieldModel(new FormModel(), { hyperlinkUrl: url }); + widget.ngOnInit(); - expect(widget.linkUrl).toBe(`${HyperlinkWidget.DEFAULT_HYPERLINK_SCHEME}${url}`); + expect(widget.linkUrl).toBe(`${WidgetComponent.DEFAULT_HYPERLINK_SCHEME}${url}`); }); it('should not prepend url with scheme', () => { @@ -89,6 +99,7 @@ describe('HyperlinkWidget', () => { widget.field = new FormFieldModel(new FormModel(), { hyperlinkUrl: url }); + widget.ngOnInit(); expect(widget.linkUrl).toBe(url); }); diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts index 32857a7063..82983f9fd0 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts @@ -26,8 +26,8 @@ import { WidgetComponent } from './../widget.component'; }) export class HyperlinkWidget extends WidgetComponent implements OnInit { - linkUrl: string; - linkText: string; + linkUrl: string = WidgetComponent.DEFAULT_HYPERLINK_URL; + linkText: string = null; ngOnInit() { if (this.field) {