diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.css b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.css index 2973977f9a..92502b7c0a 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.css +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.css @@ -6,4 +6,15 @@ border-bottom: 1px solid rgba(0,0,0,.87); margin-left: 10px; margin-right: 10px; + cursor: default; + + user-select: none; + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE/Edge */ + -webkit-touch-callout: none; /* iOS Safari */ +} + +.container-widget__header-text.collapsible { + cursor: pointer; } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html index a190e528b8..30c3ee6b38 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.html @@ -1,8 +1,17 @@
-

{{content.name}}

+

+ + {{content.name}} +

-
+
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 6e0b3b88ad..955bd81965 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,6 +18,7 @@ import { Component, Input, AfterViewInit } from '@angular/core'; import { ContainerModel } from './../widget.model'; +import { MATERIAL_DESIGN_DIRECTIVES } from 'ng2-alfresco-core'; import { TextWidget } from './../text/text.widget'; import { NumberWidget } from './../number/number.widget'; import { CheckboxWidget } from './../checkbox/checkbox.widget'; @@ -33,6 +34,7 @@ declare var componentHandler; templateUrl: './container.widget.html', styleUrls: ['./container.widget.css'], directives: [ + MATERIAL_DESIGN_DIRECTIVES, TextWidget, NumberWidget, CheckboxWidget, @@ -45,6 +47,12 @@ export class ContainerWidget implements AfterViewInit { @Input() content: ContainerModel; + onExpanderClicked() { + if (this.content && this.content.isCollapsible()) { + this.content.isExpanded = !this.content.isExpanded; + } + } + ngAfterViewInit() { // workaround for MDL issues with dynamic components if (componentHandler) { diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.model.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.model.ts index d1c85baa7a..c9635be834 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.model.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.model.ts @@ -159,6 +159,7 @@ export class ContainerColumnModel { } } +// TODO: inherit FormFieldModel export class ContainerModel extends FormWidgetModel { fieldType: string; @@ -167,6 +168,7 @@ export class ContainerModel extends FormWidgetModel { type: string; tab: string; numberOfColumns: number = 1; + params: FormFieldMetadata = {}; columns: ContainerColumnModel[] = []; @@ -174,6 +176,28 @@ export class ContainerModel extends FormWidgetModel { return this.type == FormFieldTypes.GROUP; } + isExpanded: boolean = true; + + isCollapsible(): boolean { + let allowCollapse = false; + + if (this.isGroup() && this.params['allowCollapse']) { + allowCollapse = this.params['allowCollapse']; + } + + return allowCollapse; + } + + isCollapsedByDefault(): boolean { + let collapseByDefault = false; + + if (this.isCollapsible() && this.params['collapseByDefault']) { + collapseByDefault = this.params['collapseByDefault']; + } + + return collapseByDefault; + } + constructor(form: FormModel, json?: any) { super(form, json); @@ -184,6 +208,7 @@ export class ContainerModel extends FormWidgetModel { this.type = json.type; this.tab = json.tab; this.numberOfColumns = json.numberOfColumns; + this.params = json.params || {}; let columnSize: number = 12; if (this.numberOfColumns > 1) { @@ -201,6 +226,8 @@ export class ContainerModel extends FormWidgetModel { let col = this.columns[parseInt(key, 10) - 1]; col.fields = fields; }); + + this.isExpanded = !this.isCollapsedByDefault(); } } }