- Improvements to routing:
- Module specific routes are now specified with a call to the setRoutes(appRoutes, defaultRoute) method of an injected formRoutesProvider - see the breaking changes section for an example and details.
- Support for HTML5Mode and hashPrefix, including a service to simplify use
- Support for Twitter Bootstrap 3, including a service to simplify use. To use Bootstrap 3 you need to upgrade a few of the libraries that Bower installs. Change the following lines in bower.json:
"angular-ui-bootstrap-bower": "0.8.0",
"bootstrap": "2.3.2",
"select2-bootstrap-css": "~1.2",
to
"angular-ui-bootstrap-bower": "0.11.0",
"bootstrap": "3.1.1",
"select2-bootstrap-css": "~1.3",
- Routing has changed - replace
myModule.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/index', {templateUrl: 'partials/landing-page.html'}).
when('/someRoute', {templateUrl: 'partials/someTemplate.html'}).
... etc ...
when('/analyse/:model/:reportSchemaName', {templateUrl: 'partials/base-analysis.html'}).
when('/analyse/:model', {templateUrl: 'partials/base-analysis.html'}).
when('/:model/:id/edit', {templateUrl: 'partials/base-edit.html'}).
when('/:model/new', {templateUrl: 'partials/base-edit.html'}).
when('/:model', {templateUrl: 'partials/base-list.html'}).
when('/:model/:form/:id/edit', {templateUrl: 'partials/base-edit.html'}). // non default form (different fields etc)
when('/:model/:form/new', {templateUrl: 'partials/base-edit.html'}). // non default form (different fields etc)
when('/:model/:form', {templateUrl: 'partials/base-list.html'}). // list page with links to non default form
otherwise({redirectTo: '/index'});
}]);
with
myModule.config(['formRoutesProvider', function (formRoutes) {
formRoutes.setRoutes([
{route:'/index', options:{templateUrl: 'partials/landing-page.html'}},
{route:'/someRoute', options:{templateUrl: 'partials/someTemplate.html'}}
], '/index');
}]);
where the first parameter is an array of objects containing a route and a set of options (which are passed straight to $routeProvider and the second parameter is the default route.
- Stylesheets have moved down into a ./css folder relative to where they were, and there are now Bootstrap 2 and Bootstrap 3 versions.
- You should initialise formsAngular with something similar to:
formsAngular.config(['urlServiceProvider', 'cssFrameworkServiceProvider', function (urlService, cssFrameworkService) {
urlService.setOptions({html5Mode: false, hashPrefix: '!'});
cssFrameworkService.setOptions({framework: 'bs2'}); // bs2 and bs3 are supported
}]);
- Report drilldowns now start from the model
drilldown: '/#/g_conditional_fields/!_id!/edit'
drilldown: '/#!/g_conditional_fields/|_id|/edit'
both become
drilldown: 'g_conditional_fields/|_id|/edit'
- Support for radio button groups, CKEditor
- Internal changes to make better use of Angular JS forms capabilities
- Added support for HTML5 input capabilities: pattern, min, max, step
- All lookups are now handled as {id:xxx, text:yyy} on the client
- default ids now generated by form directive (and no longer by BaseCtrl)
- Added customFooter and customSubDoc for sub docs
- Improvements to search: now a directive; makes use of arrow keys and escape; some bug fixes
- showWhen conditional field display introduced (showIf will probably be deprecated)
- Changed form-input directive so that it creates a form tag, and rather than creating a per sub document it now creates a and builds the sub-form in the same pass. Only when using directives are multiple passes required.
- Bespoke directives that use schema need to be modified (changes will normally be from something like
var info = scope[attrs.schema][0];
to
var info = scope[attrs.schema];
- Password type is still used generated automatically if the label contains the string 'password', but the override method is now to use the form type (password is it is a password, text if not).
- We have followed ui-bootstrap's renaming of tabs / panes to tabsets / tabs, so any use of "pane" in your form objects needs to be changed to tab.
- Support for allowing crawling meant that !(shriek) had to be replaced with |(pipe) in report drill down urls replacement
- Some default id formats changed in subdocuments, which may affect tests etc
- Started CHANGELOG.md (but for now it is far from definitive, but is intended to include all breaking changes)
- Added support for containers (documented in Custom Form Schemas section of documentation)
- Added reporting capability
- New website
- Changes form-input directive so that it expects
<form-input schema="formSchema">
instead of
<form-input ng-repeat="field in formSchema" info={{field}}>
- findFunc option now returns a query object such as
{field:'value'}
rather than a MongooseJS Query such as
model.find().where('field', 'value')
- Bespoke directives that use schema need to be modified (changes will normally be from something like
var info = JSON.parse(attrs.info);
to
var info = scope[attrs.schema][0];
- One formInputDone is broadcast per form (instead of per field).