Skip to content

Commit 002d569

Browse files
committed
Merge pull request #248 from eneufeld/feat_fixUiBootstrap
Fix broken directives due to angular ui bootstrap version bump
2 parents 4ac3208 + efb23e5 commit 002d569

File tree

8 files changed

+81
-60
lines changed

8 files changed

+81
-60
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
dist/
33
temp/
44
coverage/
5+
reports/
56

67
# npm
78
node_modules/

examples/app/local/local.controller.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ angular.module('makeithappen').controller('LocalController', function() {
217217
vm.data = {
218218
name: 'John Doe',
219219
vegetarian: false,
220-
birthDate: "02.06.1985"
220+
birthDate: "1985-06-02"
221221
};
222222
vm.users ={
223223
"users":

src/components/renderers/controls/datetime/datetime-directive.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@ class DateTimeDirective implements ng.IDirective {
88
template = `
99
<jsonforms-control>
1010
<div class="input-group">
11-
<input type="text"
12-
datepicker-popup="dd.MM.yyyy"
13-
close-text="Close"
14-
is-open="vm.isOpen"
15-
id="{{vm.id}}"
16-
class="form-control jsf-control-datetime"
17-
ng-change='vm.modelChanged()'
18-
ng-model="vm.modelValue[vm.fragment]"
11+
<input type="text"
12+
uib-datepicker-popup="dd.MM.yyyy"
13+
close-text="Close"
14+
is-open="vm.isOpen"
15+
id="{{vm.id}}"
16+
class="form-control jsf-control-datetime"
17+
ng-change='vm.modelChanged()'
18+
ng-model="vm.dt"
19+
ng-model-options="{timezone:'UTC'}"
1920
ng-readonly="vm.uiSchema.readOnly"/>
2021
<span class="input-group-btn">
21-
<button type="button" class="btn btn-default" ng-click="vm.openDate($event)">
22+
<button type="button" class="btn btn-default" ng-click="vm.openDate()">
2223
<i class="glyphicon glyphicon-calendar"></i>
2324
</button>
2425
</span>
@@ -32,14 +33,26 @@ interface DateTimeControllerScope extends ng.IScope {
3233
class DateTimeController extends AbstractControl {
3334
static $inject = ['$scope', 'PathResolver'];
3435
private isOpen: boolean = false;
36+
private dt: Date;
3537
constructor(scope: DateTimeControllerScope, pathResolver: IPathResolver) {
3638
super(scope, pathResolver);
39+
let value = this.modelValue[this.fragment];
40+
if (value) {
41+
this.dt = new Date(value);
42+
}
3743
}
38-
public openDate($event) {
39-
$event.preventDefault();
40-
$event.stopPropagation();
44+
public openDate() {
4145
this.isOpen = true;
4246
}
47+
protected modelChanged() {
48+
if (this.dt != null) {
49+
// returns a string in the form 'yyyy-mm-dd'
50+
this.modelValue[this.fragment] = this.dt.toISOString().substr(0, 10);
51+
} else {
52+
this.modelValue[this.fragment] = null;
53+
}
54+
super.modelChanged();
55+
}
4356
}
4457
const DateTimeControlRendererTester: RendererTester = function(element: IUISchemaElement,
4558
dataSchema: any,

src/components/renderers/layouts/categories/categorization-directive.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ class CategorizationDirective implements ng.IDirective {
99
<jsonforms-layout>
1010
<div class="row">
1111
<div class="col-sm-100">
12-
<tabset>
13-
<tab heading="{{category.label}}" ng-repeat="category in vm.uiSchema.elements">
14-
<fieldset>
15-
<jsonforms-inner ng-repeat="child in category.elements"
16-
ui-schema="child" >
12+
<uib-tabset>
13+
<uib-tab
14+
heading="{{category.label}}"
15+
ng-repeat="category in vm.uiSchema.elements"
16+
select="vm.changeSelectedCategory(category)">
17+
<fieldset ng-if="vm.selectedCategory===category">
18+
<jsonforms-inner ng-repeat="child in category.elements"
19+
ui-schema="child" >
1720
</jsonforms-inner>
1821
</fieldset>
19-
</tab>
20-
</tabset>
22+
</uib-tab>
23+
</uib-tabset>
2124
</div>
2225
</div>
2326
</jsonforms-layout>`;
@@ -28,9 +31,13 @@ interface CategorizationControllerScope extends ng.IScope {
2831
}
2932
class CategorizationController extends AbstractLayout {
3033
static $inject = ['$scope'];
34+
private selectedCategory;
3135
constructor(scope: CategorizationControllerScope) {
3236
super(scope);
3337
}
38+
public changeSelectedCategory(category) {
39+
this.selectedCategory = category;
40+
}
3441
}
3542
const CategorizationLayoutRendererTester: RendererTester = function(element: IUISchemaElement,
3643
dataSchema: any,

src/components/renderers/layouts/categories/categorization.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ describe('Categorization', () => {
5252
scope.data = { "name": "John Doe "};
5353
let el = $compile('<jsonforms schema="schema" ui-schema="uiSchema" data="data"/>')(scope);
5454
scope.$digest();
55-
expect(el.html()).toContain("</tabset>"); //this is not resolved completly
56-
expect(el.html()).toContain("</tab>"); //this is not resolved completly
55+
expect(el.html()).toContain("</uib-tabset>"); //this is not resolved completly
56+
expect(el.html()).toContain("</uib-tab>"); //this is not resolved completly
5757
expect(el.html()).toContain('heading="Tab1"');
5858
expect(el.html()).toContain('heading="MyTab2"');
5959
}));

src/components/renderers/layouts/masterdetail/masterdetail-directives.ts

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ class MasterDetailDirective implements ng.IDirective {
99
template = `<div class="row">
1010
<!-- Master -->
1111
<div class="col-sm-30 jsf-masterdetail">
12-
<jsonforms-masterdetail-collection properties="vm.subSchema.properties"
13-
instance="vm.data"
12+
<jsonforms-masterdetail-collection properties="vm.subSchema.properties"
13+
instance="vm.data"
1414
select="vm.select(child,childSchema)">
1515
</jsonforms-masterdetail-collection>
1616
</div>
1717
<!-- Detail -->
1818
<div class="col-sm-70">
19-
<jsonforms schema="vm.selectedSchema"
20-
data="vm.selectedChild"
19+
<jsonforms schema="vm.selectedSchema"
20+
data="vm.selectedChild"
2121
ng-if="vm.selectedChild"></jsonforms>
2222
</div>
2323
</div>`;
@@ -62,51 +62,50 @@ class MasterDetailCollectionDirective implements ng.IDirective {
6262
select: '&'
6363
};
6464
template = `<div>
65-
<accordion close-others="false">
66-
<accordion-group is-open="status_attribute.open"
67-
ng-repeat="(key, value) in filter(properties)"
68-
ng-class="{'jsf-masterdetail-empty':isEmptyInstance(key)}">
69-
<accordion-heading class="jsf-masterdetail-header">
70-
<span class="jsf-masterdetail-property">{{key}}</span>
71-
<i class="pull-right glyphicon"
65+
<uib-accordion close-others="false">
66+
<uib-accordion-group is-open="status_attribute.open"
67+
ng-repeat="(key, value) in filter(properties)"
68+
class="{{isEmptyInstance(key)?'jsf-masterdetail-empty':''}}">
69+
<uib-accordion-heading class="jsf-masterdetail-header">
70+
<span class="jsf-masterdetail-property">{{key}}</span>
71+
<i class="pull-right glyphicon"
7272
ng-class="{
73-
'glyphicon-chevron-down': status_attribute.open,
73+
'glyphicon-chevron-down': status_attribute.open,
7474
'glyphicon-chevron-right': !status_attribute.open
75-
}"
75+
}"
7676
ng-show="!isEmptyInstance(key)">
7777
</i>
78-
</accordion-heading>
78+
</uib-accordion-heading>
7979
80-
<accordion close-others="false"
80+
<uib-accordion close-others="false"
8181
ng-show="!isEmptyInstance(key)">
82-
<accordion-group is-open="status_object.open"
83-
ng-repeat="child in instance[key]"
84-
ng-class="{'
85-
jsf-masterdetail-empty':!hasKeys(value.items)
86-
}">
87-
<accordion-heading>
88-
<span ng-click="selectElement(child,value)"
82+
<uib-accordion-group
83+
is-open="status_object.open"
84+
ng-repeat="child in instance[key]"
85+
class="{{!hasKeys(value.items)?'jsf-masterdetail-empty':''}}">
86+
<uib-accordion-heading>
87+
<span ng-click="selectElement(child,value)"
8988
ng-class="{
9089
'jsf-masterdetail-selected':selectedChild==child
9190
}">
9291
{{child.name!=undefined?child.name:child}}
9392
</span>
94-
<i class="pull-right glyphicon"
93+
<i class="pull-right glyphicon"
9594
ng-class="{
96-
'glyphicon-chevron-down': status_object.open,
95+
'glyphicon-chevron-down': status_object.open,
9796
'glyphicon-chevron-right': !status_object.open
98-
}"
97+
}"
9998
ng-if="hasKeys(value.items)"></i>
100-
</accordion-heading>
101-
<jsonforms-masterdetail-member filter='filter'
102-
select='select'
103-
child-schema="value.items"
104-
child-data="child">
99+
</uib-accordion-heading>
100+
<jsonforms-masterdetail-member filter='filter'
101+
select='select'
102+
child-schema="value.items"
103+
child-data="child">
105104
</jsonforms-masterdetail-member>
106-
</accordion-group>
107-
</accordion>
108-
</accordion-group>
109-
</accordion>
105+
</uib-accordion-group>
106+
</uib-accordion>
107+
</uib-accordion-group>
108+
</uib-accordion>
110109
</div>`;
111110
link = (scope) => {
112111
scope.filter = (properties) => {
@@ -147,9 +146,9 @@ class MasterDetailMember implements angular.IDirective {
147146
link = (scope, element) => {
148147
if (Object.keys(scope.filter(scope.childSchema.properties)).length !== 0) {
149148
this.$compile(
150-
`<jsonforms-masterdetail-collection
151-
select="select"
152-
properties="childSchema.properties"
149+
`<jsonforms-masterdetail-collection
150+
select="select"
151+
properties="childSchema.properties"
153152
instance="childData">
154153
</jsonforms-masterdetail-collection>`
155154
)

src/components/renderers/layouts/masterdetail/masterdetail.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ describe('MasterDetail', () => {
6969
let nameInput_empty = el[0].querySelector("#\\#\\/properties\\/name");
7070
expect(nameInput_empty).toBeNull();
7171

72-
let x1 = el[0].querySelector("accordion accordion accordion-heading span");
72+
let x1 = el[0].querySelector("uib-accordion uib-accordion uib-accordion-heading span");
7373
angular.element(x1).triggerHandler("click");
7474
expect(el.html()).toContain("<label");
7575
let nameInput = el[0].querySelector("#\\#\\/properties\\/name");

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import pathResolver from './components/ng-services/pathresolver/pathresolver-ser
77
import '../jsf-bootstrap.css';
88

99
require('angular-ui-bootstrap');
10+
require('angular-ui-bootstrap/dist/ui-bootstrap-csp.css');
1011
require('angular-ui-validate');
1112

1213
angular.module('jsonforms', [

0 commit comments

Comments
 (0)