diff --git a/.gitignore b/.gitignore
index d83b20cc6..8bea62915 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,9 @@
# generated files
dist/
!dist/LICENSE
+components/
+jsonforms.d.ts
+jsonforms.js
temp/
coverage/
reports/
diff --git a/package.json b/package.json
index 52b4dbae3..b0350514b 100644
--- a/package.json
+++ b/package.json
@@ -6,8 +6,10 @@
"bugs": "https://github.com/eclipsesource/jsonforms/issues",
"homepage": "http://github.eclipsesource.com/jsonforms/",
"license": "MIT",
- "main": "/",
+ "main": "jsonforms.js",
+ "typings": "jsonforms.d.ts",
"scripts": {
+ "tsc": "tsc",
"dev": "webpack --config webpack/webpack.dev.js && webpack-dev-server --config webpack/webpack.dev.js --NODE_ENV=dev --inline",
"dev-bootstrap": "webpack --config webpack/webpack.dev-bootstrap.js && webpack-dev-server --config webpack/webpack.dev-bootstrap.js --NODE_ENV=dev --inline",
"test": "karma start --NODE_ENV=test",
diff --git a/src/bootstrap/controls/boolean/boolean-directive.ts b/src/bootstrap/controls/boolean/boolean-directive.ts
index ae851c9ab..5e69b5940 100644
--- a/src/bootstrap/controls/boolean/boolean-directive.ts
+++ b/src/bootstrap/controls/boolean/boolean-directive.ts
@@ -1,7 +1,16 @@
+const booleanTemplate = `
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.controls.boolean',
['jsonforms-bootstrap.renderers.controls'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('boolean.html', require('./boolean.html'));
+ $templateCache.put('boolean.html', booleanTemplate);
}])
.name;
diff --git a/src/bootstrap/controls/boolean/boolean.html b/src/bootstrap/controls/boolean/boolean.html
deleted file mode 100644
index 098410ac6..000000000
--- a/src/bootstrap/controls/boolean/boolean.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
diff --git a/src/bootstrap/controls/bootstrap-controls-directive.ts b/src/bootstrap/controls/bootstrap-controls-directive.ts
index 969a70980..fe7eeafbc 100644
--- a/src/bootstrap/controls/bootstrap-controls-directive.ts
+++ b/src/bootstrap/controls/bootstrap-controls-directive.ts
@@ -1,6 +1,17 @@
+const controlTemplate = `
`;
+
export default angular
.module('jsonforms-bootstrap.renderers.controls', ['jsonforms-bootstrap'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('control.html', require('./control.html'));
+ $templateCache.put('control.html', controlTemplate);
}])
.name;
diff --git a/src/bootstrap/controls/control.html b/src/bootstrap/controls/control.html
deleted file mode 100644
index 0fdfec4f2..000000000
--- a/src/bootstrap/controls/control.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/src/bootstrap/controls/datetime/datetime-directive.ts b/src/bootstrap/controls/datetime/datetime-directive.ts
index f34818047..b4645cab8 100644
--- a/src/bootstrap/controls/datetime/datetime-directive.ts
+++ b/src/bootstrap/controls/datetime/datetime-directive.ts
@@ -1,8 +1,8 @@
import {RendererTester, NOT_FITTING} from '../../../components/renderers/renderer-service';
-import {IUISchemaElement} from '../../../jsonforms';
import {IPathResolver} from '../../../components/services/pathresolver/jsonforms-pathresolver';
import {DateTimeController, DateTimeControllerScope} from
'../../../components/renderers/controls/datetime/datetime-directive';
+import {IUISchemaElement} from "../../../../uischema";
class DateTimeDirective implements ng.IDirective {
restrict = 'E';
@@ -46,6 +46,27 @@ const DateTimeControlBootstrapRendererTester: RendererTester = function(element:
}
return NOT_FITTING;
};
+
+const datetimeTemplate = `
+
+
+
+
+
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.controls.datetime',
['jsonforms-bootstrap.renderers.controls'])
@@ -55,6 +76,6 @@ export default angular
DateTimeControlBootstrapRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('datetimeBootstrap.html', require('./datetimeBootstrap.html'));
+ $templateCache.put('datetimeBootstrap.html', datetimeTemplate);
}])
.name;
diff --git a/src/bootstrap/controls/datetime/datetimeBootstrap.html b/src/bootstrap/controls/datetime/datetimeBootstrap.html
deleted file mode 100644
index 4c00754ec..000000000
--- a/src/bootstrap/controls/datetime/datetimeBootstrap.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/bootstrap/layouts/categories/categorization-directive.ts b/src/bootstrap/layouts/categories/categorization-directive.ts
index 60f2e4e9c..712ae014b 100644
--- a/src/bootstrap/layouts/categories/categorization-directive.ts
+++ b/src/bootstrap/layouts/categories/categorization-directive.ts
@@ -1,7 +1,26 @@
+const categorizationTemplate = `
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.layouts.categories',
['jsonforms.renderers.layouts', 'jsonforms-bootstrap'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('categorization.html', require('./categorization.html'));
+ $templateCache.put('categorization.html', categorizationTemplate);
}])
.name;
diff --git a/src/bootstrap/layouts/categories/categorization.html b/src/bootstrap/layouts/categories/categorization.html
deleted file mode 100644
index c1127d108..000000000
--- a/src/bootstrap/layouts/categories/categorization.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
diff --git a/src/bootstrap/layouts/group/group-directive.ts b/src/bootstrap/layouts/group/group-directive.ts
index 74c7c510a..ef8cf91cb 100644
--- a/src/bootstrap/layouts/group/group-directive.ts
+++ b/src/bootstrap/layouts/group/group-directive.ts
@@ -1,7 +1,19 @@
+const groupTemplate = `
+
+
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.layouts.group',
['jsonforms.renderers.layouts', 'jsonforms-bootstrap'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('group.html', require('./group.html'));
+ $templateCache.put('group.html', groupTemplate);
}])
.name;
diff --git a/src/bootstrap/layouts/group/group.html b/src/bootstrap/layouts/group/group.html
deleted file mode 100644
index 1f033fc9a..000000000
--- a/src/bootstrap/layouts/group/group.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
diff --git a/src/bootstrap/layouts/horizontal/horizontal-directive.ts b/src/bootstrap/layouts/horizontal/horizontal-directive.ts
index 94d7d99c2..89ce28c54 100644
--- a/src/bootstrap/layouts/horizontal/horizontal-directive.ts
+++ b/src/bootstrap/layouts/horizontal/horizontal-directive.ts
@@ -34,6 +34,17 @@ const BootstrapHorizontalLayoutRendererTester: RendererTester = function(element
}
return 3;
};
+
+const horizontalTemplate = `
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.layouts.horizontal',
['jsonforms.renderers.layouts', 'jsonforms-bootstrap'])
@@ -43,6 +54,6 @@ export default angular
BootstrapHorizontalLayoutRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('horizontal.html', require('./horizontal.html'));
+ $templateCache.put('horizontal.html', horizontalTemplate);
}])
.name;
diff --git a/src/bootstrap/layouts/horizontal/horizontal.html b/src/bootstrap/layouts/horizontal/horizontal.html
deleted file mode 100644
index 9a9af06d7..000000000
--- a/src/bootstrap/layouts/horizontal/horizontal.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/src/bootstrap/layouts/masterdetail/masterdetail-collection.html b/src/bootstrap/layouts/masterdetail/masterdetail-collection.html
deleted file mode 100644
index d9bf477ca..000000000
--- a/src/bootstrap/layouts/masterdetail/masterdetail-collection.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{child.name!=undefined?child.name:child}}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts b/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts
index 3fa44e0d4..62145d84e 100644
--- a/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts
+++ b/src/bootstrap/layouts/masterdetail/masterdetail-directives.ts
@@ -1,11 +1,64 @@
+const masterDetailTemplate = `
+`;
+
+const masterDetailCollectionTemplate = `
+
+
+
+
+
+
+
+
+
+ {{child.name!=undefined?child.name:child}}
+
+
+
+
+
+
+
+
+
+
+
`;
+
export default angular
.module('jsonforms-bootstrap.renderers.layouts.masterdetail',
['jsonforms.renderers.layouts', 'jsonforms-bootstrap'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('masterdetail.html', require('./masterdetail.html'));
+ $templateCache.put('masterdetail.html', masterDetailTemplate);
}])
.run(['$templateCache', $templateCache => {
- $templateCache.put('masterdetail-collection.html',
- require('./masterdetail-collection.html'));
+ $templateCache.put('masterdetail-collection.html', masterDetailCollectionTemplate);
}])
.name;
diff --git a/src/bootstrap/layouts/masterdetail/masterdetail.html b/src/bootstrap/layouts/masterdetail/masterdetail.html
deleted file mode 100644
index c7f0d043b..000000000
--- a/src/bootstrap/layouts/masterdetail/masterdetail.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/src/bootstrap/layouts/vertical/vertical-directive.ts b/src/bootstrap/layouts/vertical/vertical-directive.ts
index 232d5d40e..6162fca04 100644
--- a/src/bootstrap/layouts/vertical/vertical-directive.ts
+++ b/src/bootstrap/layouts/vertical/vertical-directive.ts
@@ -1,7 +1,16 @@
+const verticalTemplate = `
+
+
+
+
+`;
+
export default angular
.module('jsonforms-bootstrap.renderers.layouts.vertical',
['jsonforms.renderers.layouts', 'jsonforms-bootstrap'])
.run(['$templateCache', $templateCache => {
- $templateCache.put('vertical.html', require('./vertical.html'));
+ $templateCache.put('vertical.html', verticalTemplate);
}])
.name;
diff --git a/src/bootstrap/layouts/vertical/vertical.html b/src/bootstrap/layouts/vertical/vertical.html
deleted file mode 100644
index 8a1244ac2..000000000
--- a/src/bootstrap/layouts/vertical/vertical.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/src/components/form/form-directive.ts b/src/components/form/form-directive.ts
index ebbc5ef38..2378d97ea 100644
--- a/src/components/form/form-directive.ts
+++ b/src/components/form/form-directive.ts
@@ -15,18 +15,26 @@ import {IDataProvider} from '../services/data/data-service';
import {RuleService} from '../services/rule/rule-service';
import {DefaultDataProvider} from '../services/data/data-services';
import {RendererService} from '../renderers/renderer-service';
-import {IUISchemaElement} from '../../jsonforms';
+import {IUISchemaElement} from '../../uischema';
+import {SchemaElement} from '../../jsonschema';
export class FormController {
static $inject = ['RendererService', 'PathResolver', 'UiSchemaRegistry',
'SchemaGenerator', '$compile', '$q', '$scope'];
-
public element: any;
public uiSchema: IUISchemaElement;
private isInitialized = false;
private childScope: ng.IScope;
+ private static isDataProvider(testMe: any): testMe is IDataProvider {
+ return testMe !== undefined && testMe.hasOwnProperty('fetchData');
+ }
+
+ private static isUiSchemaProvider(testMe: any): testMe is IUiSchemaProvider {
+ return testMe !== undefined && testMe.hasOwnProperty('fetchUiSchema');
+ }
+
constructor(
private rendererService: RendererService,
private PathResolver: IPathResolver,
@@ -37,13 +45,6 @@ export class FormController {
private scope: JsonFormsDirectiveScope
) { }
- private static isDataProvider(testMe: any): testMe is IDataProvider {
- return testMe !== undefined && testMe.hasOwnProperty('fetchData');
- }
-
- private static isUiSchemaProvider(testMe: any): testMe is IUiSchemaProvider {
- return testMe !== undefined && testMe.hasOwnProperty('fetchUiSchema');
- }
public init() {
if (this.isInitialized) {
@@ -166,11 +167,15 @@ export interface JsonFormsDirectiveScope extends ng.IScope {
data: any;
}
+const formTemplate = `
+
+
+
`;
-export class JsonFormsDirective implements ng.IDirective {
+export class JsonFormsDirective implements ng.IDirective {
restrict = 'E';
- template = require('./form.html');
+ templateUrl = 'form.html';
controller = FormController;
controllerAs = 'vm';
// we can't use bindToController because we want watchers
@@ -219,7 +224,7 @@ export interface JsonFormsInnerDirectiveScope extends ng.IScope {
export class JsonFormsInnerDirective implements ng.IDirective {
restrict = 'E';
- template = require('./form.html');
+ templateUrl = 'form.html';
controller = InnerFormController;
controllerAs = 'vm';
bindToController = {
@@ -231,3 +236,11 @@ export class JsonFormsInnerDirective implements ng.IDirective {
ctrl.init();
}
}
+
+export default angular.module('jsonforms.form.directives', ['jsonforms.form'])
+ .directive('jsonforms', () => new JsonFormsDirective())
+ .directive('jsonformsInner', () => new JsonFormsInnerDirective())
+ .run(['$templateCache', ($templateCache: ng.ITemplateCacheService) =>
+ $templateCache.put('form.html', formTemplate)]
+ )
+ .name;
diff --git a/src/components/form/form.ts b/src/components/form/form.ts
index d3afb71e1..a7d391c90 100644
--- a/src/components/form/form.ts
+++ b/src/components/form/form.ts
@@ -27,11 +27,10 @@ import arrayControlDirective from '../renderers/controls/array/array-directive';
import referenceControlDirective from '../renderers/controls/reference/reference-directive';
import datetimeControlDirective from '../renderers/controls/datetime/datetime-directive';
import enumControlDirective from '../renderers/controls/enum/enum-directive';
+import formsDirective from '../form/form-directive';
import norendererDirective from '../renderers/norenderer-directive';
-import {JsonFormsDirective, JsonFormsInnerDirective} from './form-directive';
-
export default angular
.module('jsonforms.form', [
rendererService,
@@ -41,6 +40,8 @@ export default angular
uiSchemaGenerator,
schemaGenerator,
+ formsDirective,
+
controlDirective,
layoutDirective,
norendererDirective,
@@ -62,6 +63,4 @@ export default angular
masterDetailDirectives,
])
- .directive('jsonforms', () => new JsonFormsDirective())
- .directive('jsonformsInner', () => new JsonFormsInnerDirective())
.name;
diff --git a/src/components/generators/jsonforms-uischemagenerator.ts b/src/components/generators/jsonforms-uischemagenerator.ts
index 73314f483..62df8035e 100644
--- a/src/components/generators/jsonforms-uischemagenerator.ts
+++ b/src/components/generators/jsonforms-uischemagenerator.ts
@@ -2,7 +2,7 @@
import {IUISchemaGenerator} from './generators';
import {PathUtil} from '../services/pathutil';
-import {IUISchemaElement, IControlObject, ILayout} from '../../jsonforms';
+import {IUISchemaElement, IControlObject, ILayout} from '../../uischema';
export class UISchemaGenerator implements IUISchemaGenerator {
diff --git a/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts b/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts
index 1f4ceb2ba..4a54b2d41 100644
--- a/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts
+++ b/src/components/ng-services/uischemaregistry/uischemaregistry-service.ts
@@ -1,4 +1,4 @@
-import {IUISchemaElement} from '../../../jsonforms';
+import {IUISchemaElement} from '../../../uischema';
import {IUISchemaGenerator} from '../../generators/generators';
export interface UiSchemaRegistry {
diff --git a/src/components/renderers/controls/abstract-control.ts b/src/components/renderers/controls/abstract-control.ts
index d9599881e..a5374239b 100644
--- a/src/components/renderers/controls/abstract-control.ts
+++ b/src/components/renderers/controls/abstract-control.ts
@@ -4,8 +4,8 @@ import {RendererTester, NOT_FITTING} from '../renderer-service';
import {Services, ServiceId, IValidationService, ISchemaProvider} from '../../services/services';
import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service';
import {IDataProvider} from '../../services/data/data-service';
-import {IControlObject, IRule, IWithLabel, ILabelObject, IUISchemaElement}
- from '../../../jsonforms';
+import {IRule, IControlObject, IWithLabel, ILabelObject, IUISchemaElement} from '../../../uischema';
+import {SchemaElement} from '../../../jsonschema';
export abstract class AbstractControl implements IRuleServiceCallBack {
diff --git a/src/components/renderers/controls/array/array-directive.ts b/src/components/renderers/controls/array/array-directive.ts
index 6bc60cecf..9657495c1 100644
--- a/src/components/renderers/controls/array/array-directive.ts
+++ b/src/components/renderers/controls/array/array-directive.ts
@@ -4,7 +4,8 @@ import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolv
import {PathUtil} from '../../../services/pathutil';
import {IUISchemaGenerator} from '../../../generators/generators';
import {AbstractControl, ControlRendererTester} from '../abstract-control';
-import {IUISchemaElement, IGroup} from '../../../../jsonforms';
+import {IUISchemaElement, IGroup} from '../../../../uischema';
+import {SchemaArray} from '../../../../jsonschema';
class ArrayReadOnlyDirective implements ng.IDirective {
restrict = 'E';
diff --git a/src/components/renderers/controls/boolean/boolean-directive.ts b/src/components/renderers/controls/boolean/boolean-directive.ts
index 8005d9570..173ee7f1c 100644
--- a/src/components/renderers/controls/boolean/boolean-directive.ts
+++ b/src/components/renderers/controls/boolean/boolean-directive.ts
@@ -17,6 +17,15 @@ class BooleanController extends AbstractControl {
}
}
+const booleanTemplate = `
+
+`;
+
export default angular
.module('jsonforms.renderers.controls.boolean', ['jsonforms.renderers.controls'])
.directive('booleanControl', () => new BooleanDirective())
@@ -24,6 +33,6 @@ export default angular
RendererService.register('boolean-control', ControlRendererTester('boolean', 1))
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('boolean.html', require('./boolean.html'));
+ $templateCache.put('boolean.html', booleanTemplate);
}])
.name;
diff --git a/src/components/renderers/controls/boolean/boolean.html b/src/components/renderers/controls/boolean/boolean.html
deleted file mode 100644
index 098410ac6..000000000
--- a/src/components/renderers/controls/boolean/boolean.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
diff --git a/src/components/renderers/controls/control.html b/src/components/renderers/controls/control.html
deleted file mode 100644
index 1ba807d1f..000000000
--- a/src/components/renderers/controls/control.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/renderers/controls/controls-directive.ts b/src/components/renderers/controls/controls-directive.ts
index 952b756a3..6ace90eb5 100644
--- a/src/components/renderers/controls/controls-directive.ts
+++ b/src/components/renderers/controls/controls-directive.ts
@@ -1,3 +1,14 @@
+const controlTemplate = `
+
+
+
+
+
+
+
`;
+
class ControlDirective implements ng.IDirective {
restrict = 'E';
transclude = true;
@@ -8,6 +19,6 @@ export default angular
.module('jsonforms.renderers.controls', ['jsonforms.renderers'])
.directive('jsonformsControl', () => new ControlDirective)
.run(['$templateCache', $templateCache => {
- $templateCache.put('control.html', require('./control.html'));
+ $templateCache.put('control.html', controlTemplate);
}])
.name;
diff --git a/src/components/renderers/controls/datetime/datetime-directive.ts b/src/components/renderers/controls/datetime/datetime-directive.ts
index 37e957f71..f0450b4ca 100644
--- a/src/components/renderers/controls/datetime/datetime-directive.ts
+++ b/src/components/renderers/controls/datetime/datetime-directive.ts
@@ -1,7 +1,7 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractControl} from '../abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
class DateTimeDirective implements ng.IDirective {
restrict = 'E';
@@ -50,6 +50,18 @@ const DateTimeControlRendererTester: RendererTester = function(element: IUISchem
return NOT_FITTING;
};
+const datetimeTemplate = `
+
+`;
+
export default angular
.module('jsonforms.renderers.controls.datetime', ['jsonforms.renderers.controls'])
.directive('datetimeControl', () => new DateTimeDirective())
@@ -57,6 +69,6 @@ export default angular
RendererService.register('datetime-control', DateTimeControlRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('datetime.html', require('./datetime.html'));
+ $templateCache.put('datetime.html', datetimeTemplate);
}])
.name;
diff --git a/src/components/renderers/controls/datetime/datetime.html b/src/components/renderers/controls/datetime/datetime.html
deleted file mode 100644
index 66e2fadc8..000000000
--- a/src/components/renderers/controls/datetime/datetime.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/src/components/renderers/controls/enum/enum-directive.ts b/src/components/renderers/controls/enum/enum-directive.ts
index 4db2343d4..e1d03695c 100644
--- a/src/components/renderers/controls/enum/enum-directive.ts
+++ b/src/components/renderers/controls/enum/enum-directive.ts
@@ -1,7 +1,8 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractControl} from '../abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {SchemaElement} from '../../../../jsonschema';
+import {IUISchemaElement} from '../../../../uischema';
class EnumDirective implements ng.IDirective {
restrict = 'E';
diff --git a/src/components/renderers/controls/reference/reference-directive.ts b/src/components/renderers/controls/reference/reference-directive.ts
index d6c1720d7..5b54f16c2 100644
--- a/src/components/renderers/controls/reference/reference-directive.ts
+++ b/src/components/renderers/controls/reference/reference-directive.ts
@@ -1,7 +1,7 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractControl} from '../abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
class ReferenceDirective implements ng.IDirective {
restrict = 'E';
diff --git a/src/components/renderers/controls/string/string-directive.ts b/src/components/renderers/controls/string/string-directive.ts
index e57e065b6..c5663eb92 100644
--- a/src/components/renderers/controls/string/string-directive.ts
+++ b/src/components/renderers/controls/string/string-directive.ts
@@ -1,7 +1,8 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractControl, ControlRendererTester} from '../abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
+
class StringDirective implements ng.IDirective {
restrict = 'E';
diff --git a/src/components/renderers/extras/label/label-directive.ts b/src/components/renderers/extras/label/label-directive.ts
index 867e9852a..a36a6de6c 100644
--- a/src/components/renderers/extras/label/label-directive.ts
+++ b/src/components/renderers/extras/label/label-directive.ts
@@ -1,6 +1,7 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
+
class LabelDirective implements ng.IDirective {
restrict = 'E';
template = `{{vm.text}}
`;
diff --git a/src/components/renderers/layouts/abstract-layout.ts b/src/components/renderers/layouts/abstract-layout.ts
index 3c4b90e82..738dc6171 100644
--- a/src/components/renderers/layouts/abstract-layout.ts
+++ b/src/components/renderers/layouts/abstract-layout.ts
@@ -1,7 +1,7 @@
import {Services, ServiceId} from '../../services/services';
import {IRuleService, IRuleServiceCallBack} from '../../services/rule/rule-service';
import {IDataProvider} from '../../services/data/data-service';
-import {ILayout, IRule} from '../../../jsonforms';
+import {ILayout, IRule} from '../../../uischema';
export abstract class AbstractLayout implements IRuleServiceCallBack {
diff --git a/src/components/renderers/layouts/categories/categorization-directive.ts b/src/components/renderers/layouts/categories/categorization-directive.ts
index c95f6f58e..42b1c8539 100644
--- a/src/components/renderers/layouts/categories/categorization-directive.ts
+++ b/src/components/renderers/layouts/categories/categorization-directive.ts
@@ -1,7 +1,7 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractLayout} from '../abstract-layout';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
class CategorizationDirective implements ng.IDirective {
restrict = 'E';
@@ -21,6 +21,29 @@ class CategorizationController extends AbstractLayout {
this.selectedCategory = category;
}
}
+
+const categorizationTemplate = `
+
+
+
+ -
+
+ {{category.label}}
+
+
+
+
+
+
+`;
+
const CategorizationLayoutRendererTester: RendererTester = function(element: IUISchemaElement,
dataSchema: any,
dataObject: any,
@@ -37,6 +60,6 @@ export default angular
RendererService.register('categorization', CategorizationLayoutRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('categorization.html', require('./categorization.html'));
+ $templateCache.put('categorization.html', categorizationTemplate);
}])
.name;
diff --git a/src/components/renderers/layouts/categories/categorization.html b/src/components/renderers/layouts/categories/categorization.html
deleted file mode 100644
index 601f4558c..000000000
--- a/src/components/renderers/layouts/categories/categorization.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- -
- {{category.label}}
-
-
-
-
-
-
diff --git a/src/components/renderers/layouts/categories/categorization.spec.ts b/src/components/renderers/layouts/categories/categorization.spec.ts
index 9aa8382e2..737fd3428 100644
--- a/src/components/renderers/layouts/categories/categorization.spec.ts
+++ b/src/components/renderers/layouts/categories/categorization.spec.ts
@@ -52,7 +52,7 @@ describe('Categorization', () => {
scope.data = { 'name': 'John Doe '};
let el = $compile('')(scope);
scope.$digest();
- expect(el.html()).toContain('>Tab1');
- expect(el.html()).toContain('>MyTab2');
+ expect(el.html()).toMatch(/>\s*Tab1\s*<\/span>/);
+ expect(el.html()).toMatch(/>\s*MyTab2\s*<\/span>/);
}));
});
diff --git a/src/components/renderers/layouts/group/group-directive.ts b/src/components/renderers/layouts/group/group-directive.ts
index be30162cf..2116114e6 100644
--- a/src/components/renderers/layouts/group/group-directive.ts
+++ b/src/components/renderers/layouts/group/group-directive.ts
@@ -1,7 +1,8 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractLayout} from '../abstract-layout';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
+
class GroupDirective implements ng.IDirective {
restrict = 'E';
templateUrl = 'group.html';
@@ -29,6 +30,17 @@ const GroupLayoutRendererTester: RendererTester = function(element: IUISchemaEle
return 2;
};
+const groupTemplate = `
+
+
+
+`;
+
export default angular
.module('jsonforms.renderers.layouts.group', ['jsonforms.renderers.layouts'])
.directive('grouplayout', () => new GroupDirective())
@@ -36,6 +48,6 @@ export default angular
RendererService.register('grouplayout', GroupLayoutRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('group.html', require('./group.html'));
+ $templateCache.put('group.html', groupTemplate);
}])
.name;
diff --git a/src/components/renderers/layouts/group/group.html b/src/components/renderers/layouts/group/group.html
deleted file mode 100644
index e9c4e393c..000000000
--- a/src/components/renderers/layouts/group/group.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/src/components/renderers/layouts/horizontal/horizontal-directive.ts b/src/components/renderers/layouts/horizontal/horizontal-directive.ts
index 469f0ca02..498e12ded 100644
--- a/src/components/renderers/layouts/horizontal/horizontal-directive.ts
+++ b/src/components/renderers/layouts/horizontal/horizontal-directive.ts
@@ -2,7 +2,8 @@ import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractLayout} from '../abstract-layout';
import {LabelObjectUtil} from '../../controls/abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
+
class HorizontalDirective implements ng.IDirective {
restrict = 'E';
@@ -43,6 +44,18 @@ const HorizontalLayoutRendererTester: RendererTester = function(element: IUISche
return 2;
};
+const horizontalTemplate = `
+
+`;
+
export default angular
.module('jsonforms.renderers.layouts.horizontal', ['jsonforms.renderers.layouts'])
.directive('horizontallayout', () => new HorizontalDirective())
@@ -50,6 +63,6 @@ export default angular
RendererService.register('horizontallayout', HorizontalLayoutRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('horizontal.html', require('./horizontal.html'));
+ $templateCache.put('horizontal.html', horizontalTemplate);
}])
.name;
diff --git a/src/components/renderers/layouts/horizontal/horizontal.html b/src/components/renderers/layouts/horizontal/horizontal.html
deleted file mode 100644
index 23678374f..000000000
--- a/src/components/renderers/layouts/horizontal/horizontal.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/src/components/renderers/layouts/layout-directive.ts b/src/components/renderers/layouts/layout-directive.ts
index a01f80101..24197d474 100644
--- a/src/components/renderers/layouts/layout-directive.ts
+++ b/src/components/renderers/layouts/layout-directive.ts
@@ -1,3 +1,5 @@
+const layoutTemplate = `
+
`;
export default angular
.module('jsonforms.renderers.layouts', ['jsonforms.renderers'])
@@ -9,6 +11,6 @@ export default angular
};
})
.run(['$templateCache', $templateCache => {
- $templateCache.put('layout.html', require('./layout.html'));
+ $templateCache.put('layout.html', layoutTemplate);
}])
.name;
diff --git a/src/components/renderers/layouts/layout.html b/src/components/renderers/layouts/layout.html
deleted file mode 100644
index ecf9a99b6..000000000
--- a/src/components/renderers/layouts/layout.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-collection.html b/src/components/renderers/layouts/masterdetail/masterdetail-collection.html
deleted file mode 100644
index ffed9e493..000000000
--- a/src/components/renderers/layouts/masterdetail/masterdetail-collection.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- -
-
- {{key}}
-
-
-
-
-
-
-
diff --git a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts
index 32ff1d7da..3b4f41f3c 100644
--- a/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts
+++ b/src/components/renderers/layouts/masterdetail/masterdetail-directives.ts
@@ -1,7 +1,9 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractControl} from '../../controls/abstract-control';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {SchemaElement} from '../../../../jsonschema';
+import {IUISchemaElement} from '../../../../uischema';
+
class MasterDetailDirective implements ng.IDirective {
restrict = 'E';
templateUrl = 'masterdetail.html';
@@ -117,6 +119,69 @@ class MasterDetailMember implements angular.IDirective {
}
}
+const masterDetailTemplate = `
+`;
+
+const masterDetailCollectionTemplate = `
+
+
+ -
+
+ {{key}}
+
+
+
+
+
+
+
`;
+
export default angular
.module('jsonforms.renderers.layouts.masterdetail', ['jsonforms.renderers.layouts'])
.directive('masterDetail', () => new MasterDetailDirective())
@@ -124,11 +189,10 @@ export default angular
RendererService.register('master-detail', MasterDetailControlRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('masterdetail.html', require('./masterdetail.html'));
+ $templateCache.put('masterdetail.html', masterDetailTemplate);
}])
.run(['$templateCache', $templateCache => {
- $templateCache.put('masterdetail-collection.html',
- require('./masterdetail-collection.html'));
+ $templateCache.put('masterdetail-collection.html', masterDetailCollectionTemplate);
}])
.directive('jsonformsMasterdetailCollection', () => new MasterDetailCollectionDirective())
.directive('jsonformsMasterdetailMember', () => new MasterDetailMember())
diff --git a/src/components/renderers/layouts/masterdetail/masterdetail.html b/src/components/renderers/layouts/masterdetail/masterdetail.html
deleted file mode 100644
index a724fb758..000000000
--- a/src/components/renderers/layouts/masterdetail/masterdetail.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/src/components/renderers/layouts/vertical/vertical-directive.ts b/src/components/renderers/layouts/vertical/vertical-directive.ts
index 1e377ca20..66806ab1e 100644
--- a/src/components/renderers/layouts/vertical/vertical-directive.ts
+++ b/src/components/renderers/layouts/vertical/vertical-directive.ts
@@ -1,7 +1,7 @@
import {RendererTester, NOT_FITTING} from '../../renderer-service';
import {IPathResolver} from '../../../services/pathresolver/jsonforms-pathresolver';
import {AbstractLayout} from '../abstract-layout';
-import {IUISchemaElement} from '../../../../jsonforms';
+import {IUISchemaElement} from '../../../../uischema';
class VerticalDirective implements ng.IDirective {
restrict = 'E';
@@ -27,6 +27,17 @@ const VerticalLayoutRendererTester: RendererTester = function(element: IUISchema
return 2;
};
+const verticalTemplate = `
+
+
+`;
+
export default angular
.module('jsonforms.renderers.layouts.vertical', ['jsonforms.renderers.layouts'])
.directive('verticallayout', () => new VerticalDirective())
@@ -34,6 +45,6 @@ export default angular
RendererService.register('verticallayout', VerticalLayoutRendererTester)
])
.run(['$templateCache', $templateCache => {
- $templateCache.put('vertical.html', require('./vertical.html'));
+ $templateCache.put('vertical.html', verticalTemplate);
}])
.name;
diff --git a/src/components/renderers/norenderer-directive.ts b/src/components/renderers/norenderer-directive.ts
index 0755252ed..9e2ebe438 100644
--- a/src/components/renderers/norenderer-directive.ts
+++ b/src/components/renderers/norenderer-directive.ts
@@ -1,4 +1,5 @@
-import {IUISchemaElement} from '../../jsonforms';
+import {IUISchemaElement} from '../../uischema';
+
class NoRendererDirective implements ng.IDirective {
restrict = 'E';
template = `
diff --git a/src/components/renderers/renderer-service.ts b/src/components/renderers/renderer-service.ts
index c60cacab6..8d46e83cc 100644
--- a/src/components/renderers/renderer-service.ts
+++ b/src/components/renderers/renderer-service.ts
@@ -1,5 +1,5 @@
import {IPathResolver} from '../services/pathresolver/jsonforms-pathresolver';
-import {IUISchemaElement} from '../../jsonforms';
+import {IUISchemaElement} from '../../uischema';
export interface RendererService {
register(directiveName: string, tester: RendererTester): void;
diff --git a/src/components/services/pathresolver/jsonforms-pathresolver.ts b/src/components/services/pathresolver/jsonforms-pathresolver.ts
index 59734b69d..5f3b19331 100644
--- a/src/components/services/pathresolver/jsonforms-pathresolver.ts
+++ b/src/components/services/pathresolver/jsonforms-pathresolver.ts
@@ -1,5 +1,6 @@
import {PathUtil} from '../pathutil';
+import {SchemaElement} from '../../../jsonschema';
export interface IPathResolver {
toInstancePath(schemaPath: string): string;
diff --git a/src/components/services/rule/rule-service.ts b/src/components/services/rule/rule-service.ts
index b8ecf3c41..5d2b301d5 100644
--- a/src/components/services/rule/rule-service.ts
+++ b/src/components/services/rule/rule-service.ts
@@ -1,7 +1,8 @@
import {ServiceId} from '../services';
import {IService} from '../services';
import {IPathResolver} from '../pathresolver/jsonforms-pathresolver';
-import {IRule, ILeafCondition, RuleEffect} from '../../../jsonforms';
+import {IRule, ILeafCondition, RuleEffect} from '../../../uischema';
+
export interface IRuleService extends IService {
addRuleTrack(ruleServiceCallback: IRuleServiceCallBack): void;
diff --git a/src/components/services/services.ts b/src/components/services/services.ts
index f30425c59..ef89ff1f0 100644
--- a/src/components/services/services.ts
+++ b/src/components/services/services.ts
@@ -1,6 +1,7 @@
-
import {PathResolver} from './pathresolver/jsonforms-pathresolver';
-import {IUISchemaElement} from '../../jsonforms';
+import {SchemaElement} from '../../jsonschema';
+import {IUISchemaElement} from '../../uischema';
+
// TODO: replace
let tv4 = require('tv4');
diff --git a/src/index.ts b/src/index.ts
index 2c86941ad..57f7033fe 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,3 +1,4 @@
+
import 'angular';
import form from './components/form/form';
import capitalize from './components/ng-services/capitalize/capitalize.filter';
@@ -11,3 +12,16 @@ export default angular.module('jsonforms', [
capitalize,
pathResolver
]).name;
+
+export interface JsonFormsScope extends angular.IScope {
+ data: any;
+ schema: any;
+ uiSchema: any;
+}
+
+export * from './uischema';
+export * from './jsonschema';
+
+export {AbstractControl, ControlRendererTester}
+ from './components/renderers/controls/abstract-control'
+export {IPathResolver} from './components/services/pathresolver/jsonforms-pathresolver';
diff --git a/src/jsonschema.ts b/src/jsonschema.ts
new file mode 100644
index 000000000..ebfaaaecc
--- /dev/null
+++ b/src/jsonschema.ts
@@ -0,0 +1,25 @@
+export interface SchemaElement {
+ type?: string;
+ enum?: SchemaElement[];
+}
+
+export interface SchemaObject extends SchemaElement {
+ // TODO: specify properties
+ properties?: any;
+ additionalProperties?: any;
+ required?: StringArray;
+}
+
+export interface SchemaArray extends SchemaElement {
+ // TODO: specify items
+ items?: any;
+}
+
+export interface SchemaString extends SchemaElement {
+ format?: string;
+}
+
+// Array type
+export interface StringArray {
+ [index: number]: string;
+}
diff --git a/src/jsonforms.ts b/src/uischema.ts
similarity index 90%
rename from src/jsonforms.ts
rename to src/uischema.ts
index 685ea3208..6adc01556 100644
--- a/src/jsonforms.ts
+++ b/src/uischema.ts
@@ -1,18 +1,19 @@
-
-import IScope = angular.IScope;
export interface IRule {
effect: RuleEffect;
condition: ICondition;
}
+
export enum RuleEffect {
HIDE = 'HIDE',
SHOW = 'SHOW',
ENABLE = 'ENABLE',
DISABLE = 'DISABLE'
}
+
export interface ICondition {
type: string; // nice to have
}
+
export interface ILeafCondition extends ICondition {
scope: {
$ref: string;
@@ -61,8 +62,3 @@ export interface IArrayControlObject extends IControlObject {
export interface IColumnControlObject extends IControlObject {
}
-export interface JsonFormsScope extends IScope {
- data: any;
- schema: any;
- uiSchema: any;
-}
diff --git a/tsconfig.json b/tsconfig.json
index 3e04bf01f..52760a94f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,10 +7,14 @@
"declaration":true,
"module": "commonjs",
"experimentalDecorators": true,
- "outDir": "dist"
+ "outDir": "."
},
+ "files": [
+ "./src/index.ts",
+ "./typings/main.d.ts",
+ "./src/declarations.d.ts"
+ ],
"exclude": [
- "out",
"node_modules",
"dist",
"dev",
diff --git a/typings/jsonschema.d.ts b/typings/jsonschema.d.ts
deleted file mode 100644
index 27e01e4bb..000000000
--- a/typings/jsonschema.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-interface SchemaElement{
- type?: string;
-enum?: SchemaElement[]
-}
-
-interface SchemaObject extends SchemaElement{
- //TODO: specify properties
- properties?: any;
- additionalProperties?: any;
- required?: StringArray;
-}
-
-interface SchemaArray extends SchemaElement{
- //TODO: specify items
- items?: any;
-}
-
-interface SchemaString extends SchemaElement {
- format?: string
-}
-
-// Array type
-interface StringArray{
- [index: number]: string;
-}
\ No newline at end of file