diff --git a/.gitignore b/.gitignore index a29ce4ab9..2b48934b5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,11 +2,13 @@ .DS_STORE npm-debug.log +@ng2-dynamic-forms/ + coverage/ dist/ docs/ +node_modules/ test/ -@ng2-dynamic-forms/ sample/aot/ sample/app/**/*.js @@ -16,4 +18,3 @@ sample/dist sample/fonts sample/images -node_modules/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 203008166..d42c9e205 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ node_js: before_install: - echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc script: - - npm run build:modules + - npm run build:packages - npm run tests:unit after_success: - if [ -n "$TRAVIS_TAG" ]; then diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fdf45793..3aff723a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +# 1.4.30 + +### **Announcements** + +* **This will be probably the last patch version before Angular 5** +* **Starting with Angular 5 ng2 Dynamic Forms will be released under new name ngx-dynamic-forms** + +### **Features** + +* Minor template improvements: + * full support for grid classes in Basic, Material and Kendo + * class `k-required` is now automatically added to error messages in Kendo for color styling + * `` has been removed as it has little benefit and never been officially documented +* Library code now passes `noUnusedParameters` and `strictNullChecks` TypeScript transpiler checks (closes [#497](https://github.com/udos86/ng2-dynamic-forms/issues/497)) + + # 1.4.29 ### **Bugfixes** diff --git a/build/tasks/bundle-webpack.js b/build/tasks/bundle-webpack.js index 723b1664e..e777b354a 100644 --- a/build/tasks/bundle-webpack.js +++ b/build/tasks/bundle-webpack.js @@ -11,7 +11,7 @@ module.exports = function (config) { throw new util.PluginError("webpack", error); } - util.log("bundle:modules", stats.toString({ + util.log("bundle:packages", stats.toString({ chunks: false, colors: true, hash: false, diff --git a/gulpfile.js b/gulpfile.js index c994f4146..5d2c98bff 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -14,14 +14,14 @@ const TASK_BUNDLE_ROLLUP = require("./build/tasks/bundle-rollup-stream"), TASK_DOC_TYPESCRIPT = require("./build/tasks/doc-typescript"); const NPM_SCOPE = "@ng2-dynamic-forms", - SRC_PATH = "./modules", + SRC_PATH = "./packages", DIST_BASE_PATH = "./dist", DIST_PATH = `${DIST_BASE_PATH}/${NPM_SCOPE}`, NPM_BASE_PATH = "./node_modules", NPM_PATH = `${NPM_BASE_PATH}/${NPM_SCOPE}`, TEST_PATH = "./test", - MODULE_TASKS = [], - MODULES = [ + PACKAGE_TASKS = [], + PACKAGES = [ "core", "ui-basic", "ui-bootstrap", @@ -33,13 +33,13 @@ const NPM_SCOPE = "@ng2-dynamic-forms", "ui-primeng" ]; -MODULES.forEach(moduleName => { +PACKAGES.forEach(packageName => { - let taskName = `bundle:${moduleName}`; + let taskName = `bundle:${packageName}`; - gulp.task(taskName, TASK_BUNDLE_ROLLUP(DIST_PATH, moduleName, "ng2DF", pkg, DIST_PATH)); + gulp.task(taskName, TASK_BUNDLE_ROLLUP(DIST_PATH, packageName, "ng2DF", pkg, DIST_PATH)); - MODULE_TASKS.push(taskName); + PACKAGE_TASKS.push(taskName); }); @@ -53,7 +53,7 @@ gulp.task("increment:version:patch", TASK_INCREMENT_VERSION(pkg, ["./package.json", `${SRC_PATH}/**/package.json`], "PATCH", SRC_PATH)); -gulp.task("lint:modules", +gulp.task("lint:packages", TASK_LINT_TYPESCRIPT([`${SRC_PATH}/**/*.ts`], "./tslint.json")); @@ -67,17 +67,17 @@ gulp.task("clean:dist:npm", TASK_CLEAN([`${NPM_PATH}**/*`])); -gulp.task("copy:modules:dist", +gulp.task("copy:packages:dist", TASK_COPY([`${SRC_PATH}/**/*.*`], DIST_PATH)); -gulp.task("copy:modules:test", +gulp.task("copy:packages:test", TASK_COPY([`${SRC_PATH}/**/*.{html,ts}`], TEST_PATH)); gulp.task("copy:dist:npm", TASK_COPY([`${DIST_BASE_PATH}/**/*.*`], NPM_BASE_PATH)); -gulp.task("preprocess:modules:dist", +gulp.task("preprocess:packages:dist", TASK_PREPROCESS(`${DIST_PATH}/**/*.js`, DIST_PATH)); gulp.task("inline:ng2-templates:dist", @@ -87,63 +87,63 @@ gulp.task("remove:moduleId:dist", TASK_REMOVE_MODULE_ID([`${DIST_PATH}/**/*`], DIST_PATH)); -gulp.task("transpile:modules:dist", - TASK_TRANSPILE_TYPESCRIPT([`${DIST_PATH}/**/*.ts`], DIST_PATH, "./tsconfig.modules.json", "es2015")); +gulp.task("transpile:packages:dist", + TASK_TRANSPILE_TYPESCRIPT([`${DIST_PATH}/**/*.ts`], DIST_PATH, "./tsconfig.packages.json", "es2015")); -gulp.task("transpile:modules:debug", - TASK_TRANSPILE_TYPESCRIPT([`${DIST_PATH}/**/*.ts`], DIST_PATH, "./tsconfig.modules.json", "commonjs")); +gulp.task("transpile:packages:debug", + TASK_TRANSPILE_TYPESCRIPT([`${DIST_PATH}/**/*.ts`], DIST_PATH, "./tsconfig.packages.json", "commonjs")); -gulp.task("transpile:modules:test", - TASK_TRANSPILE_TYPESCRIPT([`${TEST_PATH}/**/*.ts`], TEST_PATH, "./tsconfig.modules.json", "commonjs")); +gulp.task("transpile:packages:test", + TASK_TRANSPILE_TYPESCRIPT([`${TEST_PATH}/**/*.ts`], TEST_PATH, "./tsconfig.packages.json", "commonjs")); -gulp.task("build:modules:debug", function (done) { +gulp.task("build:packages:debug", function (done) { runSequence( - "transpile:modules:debug", + "transpile:packages:debug", done ); }); -gulp.task("build:modules:dist", function (done) { +gulp.task("build:packages:dist", function (done) { runSequence( - "lint:modules", + "lint:packages", "clean:dist", - "copy:modules:dist", - "transpile:modules:dist", - "preprocess:modules:dist", + "copy:packages:dist", + "transpile:packages:dist", + "preprocess:packages:dist", "inline:ng2-templates:dist", - ...MODULE_TASKS, + ...PACKAGE_TASKS, "remove:moduleId:dist", "copy:dist:npm", done ); }); -gulp.task("build:modules:test", function (done) { +gulp.task("build:packages:test", function (done) { runSequence( "clean:test", - "copy:modules:test", - "transpile:modules:test", + "copy:packages:test", + "transpile:packages:test", done ); }); -gulp.task("build:modules", function (done) { +gulp.task("build:packages", function (done) { runSequence( - "build:modules:dist", + "build:packages:dist", "copy:dist:npm", - "build:modules:test", + "build:packages:test", done ); }); -gulp.task("doc:modules", +gulp.task("doc:packages", TASK_DOC_TYPESCRIPT([`${SRC_PATH}/*/src/**/!(*.spec).ts`], { externalPattern: `${DIST_PATH}/**/*.*`, excludeExternals: true, @@ -160,6 +160,6 @@ gulp.task("doc:modules", )); -gulp.task("watch:modules", function () { - gulp.watch([`${SRC_PATH}/**/*.*`], ["build:modules"]); +gulp.task("watch:packages", function () { + gulp.watch([`${SRC_PATH}/**/*.*`], ["build:packages"]); }); \ No newline at end of file diff --git a/karma-test-shim.js b/karma-test-shim.js index c1e517a5b..59face193 100644 --- a/karma-test-shim.js +++ b/karma-test-shim.js @@ -4,8 +4,8 @@ function isSpecFile(filePath) { return filePath.startsWith("/base/test/") && filePath.slice(-8) === ".spec.js"; } -function toImportPromise(module) { - return System.import(module); +function importModule(modulePath) { + return System.import(modulePath); } window.Error.stackTraceLimit = Infinity; @@ -131,14 +131,12 @@ Promise.all([ return ngCoreTesting.TestBed.initTestEnvironment( ngPlatformBrowserDynamicTesting.BrowserDynamicTestingModule, - ngPlatformBrowserDynamicTesting.platformBrowserDynamicTesting() - ); + ngPlatformBrowserDynamicTesting.platformBrowserDynamicTesting()); }).then(function () { return Promise.all(Object.keys(karma.files) .filter(isSpecFile) - .map(toImportPromise) - ); + .map(importModule)); }).then(karma.start, karma.error); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d51b3f972..27ceea328 100644 --- a/package-lock.json +++ b/package-lock.json @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/@progress/kendo-angular-dateinputs/-/kendo-angular-dateinputs-1.2.0.tgz", "integrity": "sha512-rZ1bySRW1mcq6Tb6bIvRcFrHT23hfPJAKDe3g7uqKcmpt8vkDHKywx9HONTq3BzKpg5Er37sZ+DU67iJqHPFKA==", "requires": { - "@progress/kendo-angular-popup": "1.2.0", + "@progress/kendo-angular-popup": "1.2.1", "@progress/kendo-date-math": "1.0.3", "tslib": "1.7.1" } @@ -163,7 +163,7 @@ "resolved": "https://registry.npmjs.org/@progress/kendo-angular-dropdowns/-/kendo-angular-dropdowns-1.2.0.tgz", "integrity": "sha512-r4SyOXrgcbYZP3RO2PaxcV4PX0I2PKP6kTiLD8bJrlP9Sq+wFTQ2ypO1JyMGx4Hd5Qj4hZHYlod/n9Firzyatw==", "requires": { - "@progress/kendo-angular-popup": "1.2.0", + "@progress/kendo-angular-popup": "1.2.1", "@progress/kendo-angular-resize-sensor": "1.0.4", "tslib": "1.7.1" } @@ -184,7 +184,7 @@ "resolved": "https://registry.npmjs.org/@progress/kendo-angular-intl/-/kendo-angular-intl-1.2.2.tgz", "integrity": "sha1-Mj3ZGzkrnE/xqD+dpbZ3gQEP17M=", "requires": { - "@telerik/kendo-intl": "1.2.0", + "@telerik/kendo-intl": "1.2.1", "tslib": "1.7.1" } }, @@ -197,9 +197,9 @@ } }, "@progress/kendo-angular-popup": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@progress/kendo-angular-popup/-/kendo-angular-popup-1.2.0.tgz", - "integrity": "sha1-om8gQPZLV81CvOpOJhViGDyFjEY=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@progress/kendo-angular-popup/-/kendo-angular-popup-1.2.1.tgz", + "integrity": "sha1-V1HhHtgSmlEBy8nEhFyMhHrkR4g=", "requires": { "@progress/kendo-popup-common": "1.2.0", "tslib": "1.7.1" @@ -247,9 +247,9 @@ "integrity": "sha1-hOWlADBkeMZX7YbzrypA3KDXT8E=" }, "@telerik/kendo-intl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@telerik/kendo-intl/-/kendo-intl-1.2.0.tgz", - "integrity": "sha1-PNjAwz/xd21V9JJt6Djf7L9lXZA=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@telerik/kendo-intl/-/kendo-intl-1.2.1.tgz", + "integrity": "sha1-UF2Mr/7lChrsMYU1LUc1T09N0Wc=" }, "@types/fs-extra": { "version": "4.0.0", @@ -1559,9 +1559,9 @@ "dev": true }, "codelyzer": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.1.2.tgz", - "integrity": "sha1-n/HwQfubXuXb60W6hm368EmDrwQ=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.2.0.tgz", + "integrity": "sha512-yPXAicJt/wEl+vhfO5o+0dNeAKukWGbscQCXZzn2d6Geu61eGVIaVTdHJda6pTsDza7AEBqyKmw+lCAAnMy5tA==", "dev": true, "requires": { "app-root-path": "2.0.1", @@ -5094,9 +5094,9 @@ "dev": true }, "html-minifier": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.4.tgz", - "integrity": "sha512-kzvy0Lvs4anPdqWgeXiLisMqAKyHwgajAQaarzwZJHkTU40/Cbqup873U2WtPem8uPbGddVnPes3wtfzQz3+hg==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.5.tgz", + "integrity": "sha512-g+1+NBycQI0fGnggd52JM8TRUweG7+9W2wrtjGitMAqc4G7maweAHvVAAjz9veHseIH3tYKE2lk2USGSoewIrQ==", "dev": true, "requires": { "camel-case": "3.0.0", @@ -7561,9 +7561,9 @@ "dev": true }, "primeng": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-4.1.3.tgz", - "integrity": "sha1-fRZaPgz1kl3xrwsfni0C0e2iKFA=" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-4.2.0.tgz", + "integrity": "sha1-ScjJneJtJU9B0/u4dZIn/h0ml3I=" }, "private": { "version": "0.1.7", diff --git a/package.json b/package.json index 8218f8ca2..11988a017 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,25 @@ { "name": "ng2-dynamic-forms", - "version": "1.4.29", + "version": "1.4.30", "description": "A rapid form development library for Angular", "scripts": { - "compile:app:aot": "ngc -p tsconfig.app.ngc.json", - "bundle:app:rollup": "rollup -c rollup.config.js", - "bundle:app:webpack": "webpack --config ./webpack.config.js", - "build:modules": "gulp build:modules", + "aot-compile:sample": "ngc -p tsconfig.sample.aot.json", + "bundle:sample:rollup": "rollup -c rollup.config.js", + "bundle:sample:webpack": "webpack --config ./webpack.config.js", + "build:packages": "gulp build:packages", "gulp": "gulp", - "lint:modules": "tslint -c ./tslint.json './modules/**/*.ts'", + "lint:packages": "tslint -c ./tslint.json './packages/**/*.ts'", "start": "lite-server -c bs-config.js", "tests:e2e": "protractor protractor.conf.js", "tests:unit": "karma start karma.conf.js --browsers PhantomJS --single-run", "tests:unit:debug": "karma start karma.conf.js --browsers Chrome", - "transpile:app:bundler": "tsc -p tsconfig.app.json -m es2015", - "transpile:app:systemjs": "tsc -p tsconfig.app.json -m commonjs", - "transpile:app:watch": "tsc -p tsconfig.app.json -m commonjs -watch", - "watch:modules": "gulp watch:modules", + "transpile:sample:es2015": "tsc -p tsconfig.sample.json -m es2015", + "transpile:sample:commonjs": "tsc -p tsconfig.sample.json -m commonjs", + "watch:packages": "gulp watch:packages", + "watch:sample": "tsc -p tsconfig.sample.json -m commonjs -watch", "webdriver:start": "webdriver-manager start", "webdriver:update": "webdriver-manager update", - "xxx": "ngc -p ./modules/ui-basic/tsconfig.json" + "xxx": "ngc -p ./packages/ui-basic/tsconfig.json" }, "repository": { "type": "git", @@ -53,12 +53,12 @@ "@progress/kendo-angular-inputs": "^1.3.0", "@progress/kendo-angular-intl": "^1.2.2", "@progress/kendo-angular-l10n": "^1.0.3", - "@progress/kendo-angular-popup": "^1.2.0", + "@progress/kendo-angular-popup": "^1.2.1", "@progress/kendo-angular-resize-sensor": "^1.0.4", "@progress/kendo-angular-upload": "^1.2.1", "@progress/kendo-date-math": "^1.0.3", "@progress/kendo-theme-default": "^2.41.1", - "@telerik/kendo-intl": "^1.2.0", + "@telerik/kendo-intl": "^1.2.1", "angular2-text-mask": "^8.0.4", "bootstrap": "^3.3.7", "core-js": "^2.5.1", @@ -66,7 +66,7 @@ "hammerjs": "^2.0.8", "ionic-angular": "^3.6.1", "ngx-bootstrap": "^1.9.3", - "primeng": "^4.1.3", + "primeng": "^4.2.0", "quill": "^1.3.2", "rxjs": "^5.4.3", "zone.js": "^0.8.17" @@ -76,7 +76,7 @@ "@types/hammerjs": "^2.0.35", "@types/jasmine": "^2.5.54", "@types/node": "^8.0.28", - "codelyzer": "^3.1.2", + "codelyzer": "^3.2.0", "dateformat": "^2.0.0", "del": "^3.0.0", "gulp": "^3.9.1", @@ -89,7 +89,7 @@ "gulp-typedoc": "^2.1.0", "gulp-typescript": "^3.2.2", "gulp-util": "^3.0.8", - "html-minifier": "^3.5.4", + "html-minifier": "^3.5.5", "jasmine-core": "^2.8.0", "jasmine-spec-reporter": "^4.2.1", "karma": "^1.7.1", diff --git a/modules/core/README.md b/packages/core/README.md similarity index 100% rename from modules/core/README.md rename to packages/core/README.md diff --git a/modules/core/index.ts b/packages/core/index.ts similarity index 100% rename from modules/core/index.ts rename to packages/core/index.ts diff --git a/modules/core/package.json b/packages/core/package.json similarity index 97% rename from modules/core/package.json rename to packages/core/package.json index 164485a58..60a72b660 100644 --- a/modules/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ng2-dynamic-forms/core", - "version": "1.4.29", + "version": "1.4.30", "description": "A rapid form development library for Angular 2.x and higher", "main": "./bundles/core.umd.js", "module": "./bundles/core.es.js", diff --git a/modules/core/public_api.ts b/packages/core/public_api.ts similarity index 100% rename from modules/core/public_api.ts rename to packages/core/public_api.ts diff --git a/modules/core/src/component/dynamic-form-component.ts b/packages/core/src/component/dynamic-form-component.ts similarity index 94% rename from modules/core/src/component/dynamic-form-component.ts rename to packages/core/src/component/dynamic-form-component.ts index 67ab6a940..e2c40fb40 100644 --- a/modules/core/src/component/dynamic-form-component.ts +++ b/packages/core/src/component/dynamic-form-component.ts @@ -20,7 +20,7 @@ export abstract class DynamicFormComponent { change: EventEmitter; focus: EventEmitter; - trackByFn(index: number, model: DynamicFormControlModel): string { + trackByFn(_index: number, model: DynamicFormControlModel): string { return model.id; } diff --git a/modules/core/src/component/dynamic-form-control.component.ts b/packages/core/src/component/dynamic-form-control.component.ts similarity index 96% rename from modules/core/src/component/dynamic-form-control.component.ts rename to packages/core/src/component/dynamic-form-control.component.ts index 5bb7f3e5a..0b9fc9721 100644 --- a/modules/core/src/component/dynamic-form-control.component.ts +++ b/packages/core/src/component/dynamic-form-control.component.ts @@ -164,14 +164,16 @@ export abstract class DynamicFormControlComponent implements OnChanges, OnInit, let relActivation = RelationUtils.findActivationRelation(this.model.relation); - if (relActivation) { + if (relActivation !== null) { - this.updateModelDisabled(relActivation); + let rel = relActivation as DynamicFormControlRelationGroup; + + this.updateModelDisabled(rel); RelationUtils.getRelatedFormControls(this.model, this.group).forEach(control => { - this.subscriptions.push(control.valueChanges.subscribe(() => this.updateModelDisabled(relActivation))); - this.subscriptions.push(control.statusChanges.subscribe(() => this.updateModelDisabled(relActivation))); + this.subscriptions.push(control.valueChanges.subscribe(() => this.updateModelDisabled(rel))); + this.subscriptions.push(control.statusChanges.subscribe(() => this.updateModelDisabled(rel))); }); } } @@ -258,7 +260,7 @@ export abstract class DynamicFormControlComponent implements OnChanges, OnInit, } } - onFilterChange($event: any | DynamicFormControlEvent): void { + onFilterChange(_$event: any | DynamicFormControlEvent): void { // TODO } diff --git a/modules/core/src/core.module.ts b/packages/core/src/core.module.ts similarity index 100% rename from modules/core/src/core.module.ts rename to packages/core/src/core.module.ts diff --git a/modules/core/src/decorator/serializable.decorator.ts b/packages/core/src/decorator/serializable.decorator.ts similarity index 100% rename from modules/core/src/decorator/serializable.decorator.ts rename to packages/core/src/decorator/serializable.decorator.ts diff --git a/modules/core/src/directive/dynamic-id.directive.spec.ts b/packages/core/src/directive/dynamic-id.directive.spec.ts similarity index 100% rename from modules/core/src/directive/dynamic-id.directive.spec.ts rename to packages/core/src/directive/dynamic-id.directive.spec.ts diff --git a/modules/core/src/directive/dynamic-id.directive.ts b/packages/core/src/directive/dynamic-id.directive.ts similarity index 100% rename from modules/core/src/directive/dynamic-id.directive.ts rename to packages/core/src/directive/dynamic-id.directive.ts diff --git a/modules/core/src/directive/dynamic-template.directive.spec.ts b/packages/core/src/directive/dynamic-template.directive.spec.ts similarity index 89% rename from modules/core/src/directive/dynamic-template.directive.spec.ts rename to packages/core/src/directive/dynamic-template.directive.spec.ts index 54c090855..28592c559 100644 --- a/modules/core/src/directive/dynamic-template.directive.spec.ts +++ b/packages/core/src/directive/dynamic-template.directive.spec.ts @@ -1,5 +1,5 @@ import { TestBed, ComponentFixture } from "@angular/core/testing"; -import { Component, DebugElement } from "@angular/core"; +import { Component, DebugElement, TemplateRef } from "@angular/core"; import { By } from "@angular/platform-browser"; import { DynamicTemplateDirective, DYNAMIC_TEMPLATE_DIRECTIVE_ALIGN_END } from "./dynamic-template.directive"; @@ -20,7 +20,7 @@ describe("DynamicTemplateDirective test suite", () => { beforeEach(() => { - directive = new DynamicTemplateDirective(null); + directive = new DynamicTemplateDirective({} as TemplateRef); fixture = TestBed.configureTestingModule({ diff --git a/modules/core/src/directive/dynamic-template.directive.ts b/packages/core/src/directive/dynamic-template.directive.ts similarity index 100% rename from modules/core/src/directive/dynamic-template.directive.ts rename to packages/core/src/directive/dynamic-template.directive.ts diff --git a/modules/core/src/index.ts b/packages/core/src/index.ts similarity index 100% rename from modules/core/src/index.ts rename to packages/core/src/index.ts diff --git a/modules/core/src/model/checkbox/dynamic-checkbox-group.model.spec.ts b/packages/core/src/model/checkbox/dynamic-checkbox-group.model.spec.ts similarity index 100% rename from modules/core/src/model/checkbox/dynamic-checkbox-group.model.spec.ts rename to packages/core/src/model/checkbox/dynamic-checkbox-group.model.spec.ts diff --git a/modules/core/src/model/checkbox/dynamic-checkbox-group.model.ts b/packages/core/src/model/checkbox/dynamic-checkbox-group.model.ts similarity index 100% rename from modules/core/src/model/checkbox/dynamic-checkbox-group.model.ts rename to packages/core/src/model/checkbox/dynamic-checkbox-group.model.ts diff --git a/modules/core/src/model/checkbox/dynamic-checkbox.model.spec.ts b/packages/core/src/model/checkbox/dynamic-checkbox.model.spec.ts similarity index 100% rename from modules/core/src/model/checkbox/dynamic-checkbox.model.spec.ts rename to packages/core/src/model/checkbox/dynamic-checkbox.model.spec.ts diff --git a/modules/core/src/model/checkbox/dynamic-checkbox.model.ts b/packages/core/src/model/checkbox/dynamic-checkbox.model.ts similarity index 88% rename from modules/core/src/model/checkbox/dynamic-checkbox.model.ts rename to packages/core/src/model/checkbox/dynamic-checkbox.model.ts index 25e8bf775..27e7460f8 100644 --- a/modules/core/src/model/checkbox/dynamic-checkbox.model.ts +++ b/packages/core/src/model/checkbox/dynamic-checkbox.model.ts @@ -20,6 +20,6 @@ export class DynamicCheckboxModel extends DynamicCheckControlModel { super(config, cls); - this.indeterminate = Utils.isBoolean(config.indeterminate) ? config.indeterminate : false; + this.indeterminate = typeof config.indeterminate === "boolean" ? config.indeterminate : false; } } \ No newline at end of file diff --git a/modules/core/src/model/datepicker/dynamic-datepicker.model.spec.ts b/packages/core/src/model/datepicker/dynamic-datepicker.model.spec.ts similarity index 100% rename from modules/core/src/model/datepicker/dynamic-datepicker.model.spec.ts rename to packages/core/src/model/datepicker/dynamic-datepicker.model.spec.ts diff --git a/modules/core/src/model/datepicker/dynamic-datepicker.model.ts b/packages/core/src/model/datepicker/dynamic-datepicker.model.ts similarity index 84% rename from modules/core/src/model/datepicker/dynamic-datepicker.model.ts rename to packages/core/src/model/datepicker/dynamic-datepicker.model.ts index 07da17989..0af6bd842 100644 --- a/modules/core/src/model/datepicker/dynamic-datepicker.model.ts +++ b/packages/core/src/model/datepicker/dynamic-datepicker.model.ts @@ -25,7 +25,7 @@ export class DynamicDatePickerModel extends DynamicDateControlModel { super(config, cls); this.focusedDate = config.focusedDate || null; - this.inline = Utils.isBoolean(config.inline) ? config.inline : false; - this.toggleIcon = Utils.isString(config.toggleIcon) ? config.toggleIcon : null; + this.inline = typeof config.inline === "boolean" ? config.inline : false; + this.toggleIcon = typeof config.toggleIcon === "string" ? config.toggleIcon : null; } } \ No newline at end of file diff --git a/modules/core/src/model/dynamic-check-control.model.ts b/packages/core/src/model/dynamic-check-control.model.ts similarity index 97% rename from modules/core/src/model/dynamic-check-control.model.ts rename to packages/core/src/model/dynamic-check-control.model.ts index eef6ddc40..850ea69b3 100644 --- a/modules/core/src/model/dynamic-check-control.model.ts +++ b/packages/core/src/model/dynamic-check-control.model.ts @@ -24,7 +24,7 @@ export abstract class DynamicCheckControlModel extends DynamicFormValueControlMo } get checked(): boolean { - return this.value; + return !!this.value; } set checked(checked: boolean) { diff --git a/modules/core/src/model/dynamic-date-control.model.ts b/packages/core/src/model/dynamic-date-control.model.ts similarity index 100% rename from modules/core/src/model/dynamic-date-control.model.ts rename to packages/core/src/model/dynamic-date-control.model.ts diff --git a/modules/core/src/model/dynamic-file-control.model.ts b/packages/core/src/model/dynamic-file-control.model.ts similarity index 88% rename from modules/core/src/model/dynamic-file-control.model.ts rename to packages/core/src/model/dynamic-file-control.model.ts index 59ce00062..d4275ef94 100644 --- a/modules/core/src/model/dynamic-file-control.model.ts +++ b/packages/core/src/model/dynamic-file-control.model.ts @@ -16,6 +16,6 @@ export abstract class DynamicFileControlModel extends DynamicFormValueControlMod super(config, cls); - this.multiple = Utils.isBoolean(config.multiple) ? config.multiple : false; + this.multiple = typeof config.multiple === "boolean" ? config.multiple : false; } } \ No newline at end of file diff --git a/modules/core/src/model/dynamic-form-control-relation.model.ts b/packages/core/src/model/dynamic-form-control-relation.model.ts similarity index 100% rename from modules/core/src/model/dynamic-form-control-relation.model.ts rename to packages/core/src/model/dynamic-form-control-relation.model.ts diff --git a/modules/core/src/model/dynamic-form-control.model.ts b/packages/core/src/model/dynamic-form-control.model.ts similarity index 90% rename from modules/core/src/model/dynamic-form-control.model.ts rename to packages/core/src/model/dynamic-form-control.model.ts index 10594b5ca..cbefd1721 100644 --- a/modules/core/src/model/dynamic-form-control.model.ts +++ b/packages/core/src/model/dynamic-form-control.model.ts @@ -6,8 +6,8 @@ import { Utils } from "../utils/core.utils"; export interface DynamicPathable { id?: string; - index?: number; - parent: DynamicPathable; + index?: number | null; + parent: DynamicPathable | null; } export interface DynamicValidatorConfig { @@ -75,16 +75,17 @@ export abstract class DynamicFormControlModel implements DynamicPathable { constructor(config: DynamicFormControlModelConfig, cls: ClsConfig = {}) { - if (Utils.isEmptyString(config.id)) { + if (typeof config.id === "string" && config.id.length > 0) { + this.id = config.id; + } else { throw new Error("string id must be specified for DynamicFormControlModel"); } this.cls.element = Utils.merge(cls.element, createEmptyClsConfig()); this.cls.grid = Utils.merge(cls.grid, createEmptyClsConfig()); - this._disabled = Utils.isBoolean(config.disabled) ? config.disabled : false; + this._disabled = typeof config.disabled === "boolean" ? config.disabled : false; this.errorMessages = config.errorMessages || null; - this.id = config.id; this.label = config.label || null; this.name = this.id; this.relation = Array.isArray(config.relation) ? config.relation : []; diff --git a/modules/core/src/model/dynamic-form-value-control.model.ts b/packages/core/src/model/dynamic-form-value-control.model.ts similarity index 90% rename from modules/core/src/model/dynamic-form-value-control.model.ts rename to packages/core/src/model/dynamic-form-value-control.model.ts index ea91721e5..db1a66826 100644 --- a/modules/core/src/model/dynamic-form-value-control.model.ts +++ b/packages/core/src/model/dynamic-form-value-control.model.ts @@ -6,7 +6,6 @@ import { ClsConfig } from "./dynamic-form-control.model"; import { serializable } from "../decorator/serializable.decorator"; -import { Utils } from "../utils/core.utils"; export type DynamicFormControlValue = boolean | number | string | Date | Array; @@ -36,7 +35,7 @@ export abstract class DynamicFormValueControlModel extends DynamicFormControl this.asyncValidators = config.asyncValidators || null; this.hint = config.hint || null; - this.required = Utils.isBoolean(config.required) ? config.required : false; + this.required = typeof config.required === "boolean" ? config.required : false; this.tabIndex = config.tabIndex || null; this.validators = config.validators || null; this._value = config.value || null; @@ -45,11 +44,11 @@ export abstract class DynamicFormValueControlModel extends DynamicFormControl this.valueUpdates.subscribe((value: T) => this.value = value); } - set value(value: T) { + set value(value: T | null) { this._value = value; } - get value(): T { + get value(): T | null { return this._value; } } \ No newline at end of file diff --git a/modules/core/src/model/dynamic-input-control.model.ts b/packages/core/src/model/dynamic-input-control.model.ts similarity index 74% rename from modules/core/src/model/dynamic-input-control.model.ts rename to packages/core/src/model/dynamic-input-control.model.ts index c9ac6c89e..ddd0b17de 100644 --- a/modules/core/src/model/dynamic-input-control.model.ts +++ b/packages/core/src/model/dynamic-input-control.model.ts @@ -2,7 +2,6 @@ import { ClsConfig } from "./dynamic-form-control.model"; import { DynamicFormValueControlModel, DynamicFormValueControlModelConfig } from "./dynamic-form-value-control.model"; import { serializable } from "../decorator/serializable.decorator"; import { AUTOCOMPLETE_ON } from "../utils/autofill.utils"; -import { Utils } from "../utils/core.utils"; export interface DynamicInputControlModelConfig extends DynamicFormValueControlModelConfig { @@ -34,13 +33,13 @@ export abstract class DynamicInputControlModel extends DynamicFormValueContro super(config, cls); this.autoComplete = config.autoComplete || AUTOCOMPLETE_ON; - this.autoFocus = Utils.isBoolean(config.autoFocus) ? config.autoFocus : false; - this.maxLength = Utils.isNumber(config.maxLength) ? config.maxLength : null; - this.minLength = Utils.isNumber(config.minLength) ? config.minLength : null; + this.autoFocus = typeof config.autoFocus === "boolean" ? config.autoFocus : false; + this.maxLength = typeof config.maxLength === "number" ? config.maxLength : null; + this.minLength = typeof config.minLength === "number" ? config.minLength : null; this.placeholder = config.placeholder || ""; this.prefix = config.prefix || null; - this.readOnly = Utils.isBoolean(config.readOnly) ? config.readOnly : false; - this.spellCheck = Utils.isBoolean(config.spellCheck) ? config.spellCheck : false; + this.readOnly = typeof config.readOnly === "boolean" ? config.readOnly : false; + this.spellCheck = typeof config.spellCheck === "boolean" ? config.spellCheck : false; this.suffix = config.suffix || null; } } \ No newline at end of file diff --git a/modules/core/src/model/dynamic-option-control.model.ts b/packages/core/src/model/dynamic-option-control.model.ts similarity index 95% rename from modules/core/src/model/dynamic-option-control.model.ts rename to packages/core/src/model/dynamic-option-control.model.ts index 8c6945fba..7bb40c95d 100644 --- a/modules/core/src/model/dynamic-option-control.model.ts +++ b/packages/core/src/model/dynamic-option-control.model.ts @@ -4,7 +4,6 @@ import "rxjs/add/operator/map"; import { ClsConfig } from "./dynamic-form-control.model"; import { DynamicFormValueControlModel, DynamicFormValueControlModelConfig } from "./dynamic-form-value-control.model"; import { serializable, serialize } from "../decorator/serializable.decorator"; -import { Utils } from "../utils/core.utils"; export interface DynamicFormOptionConfig { @@ -21,7 +20,7 @@ export class DynamicFormOption { constructor(config: DynamicFormOptionConfig) { - this.disabled = Utils.isBoolean(config.disabled) ? config.disabled : false; + this.disabled = typeof config.disabled === "boolean" ? config.disabled : false; this.label = config.label || null; this.value = config.value; } @@ -30,7 +29,7 @@ export class DynamicFormOption { return this.label; } - set text(text: string) { + set text(text: string | null) { this.label = text; } diff --git a/modules/core/src/model/editor/dynamic-editor.model.spec.ts b/packages/core/src/model/editor/dynamic-editor.model.spec.ts similarity index 97% rename from modules/core/src/model/editor/dynamic-editor.model.spec.ts rename to packages/core/src/model/editor/dynamic-editor.model.spec.ts index 3baaaa8e3..9a242d593 100644 --- a/modules/core/src/model/editor/dynamic-editor.model.spec.ts +++ b/packages/core/src/model/editor/dynamic-editor.model.spec.ts @@ -40,7 +40,7 @@ describe("DynamicEditorModel test suite", () => { let json = JSON.parse(JSON.stringify(model)); expect(json.id).toEqual(model.id); - expect(Object.keys(json.validators).length).toBe(Object.keys(model.validators).length); + expect(Object.keys(json.validators).length).toBe(Object.keys(model.validators as any).length); expect(json.value).toBe(model.value); expect(json.type).toEqual(DYNAMIC_FORM_CONTROL_TYPE_EDITOR); }); diff --git a/modules/core/src/model/editor/dynamic-editor.model.ts b/packages/core/src/model/editor/dynamic-editor.model.ts similarity index 100% rename from modules/core/src/model/editor/dynamic-editor.model.ts rename to packages/core/src/model/editor/dynamic-editor.model.ts diff --git a/modules/core/src/model/file-upload/dynamic-file-upload.model.spec.ts b/packages/core/src/model/file-upload/dynamic-file-upload.model.spec.ts similarity index 100% rename from modules/core/src/model/file-upload/dynamic-file-upload.model.spec.ts rename to packages/core/src/model/file-upload/dynamic-file-upload.model.spec.ts diff --git a/modules/core/src/model/file-upload/dynamic-file-upload.model.ts b/packages/core/src/model/file-upload/dynamic-file-upload.model.ts similarity index 76% rename from modules/core/src/model/file-upload/dynamic-file-upload.model.ts rename to packages/core/src/model/file-upload/dynamic-file-upload.model.ts index db080df08..35d38c9e8 100644 --- a/modules/core/src/model/file-upload/dynamic-file-upload.model.ts +++ b/packages/core/src/model/file-upload/dynamic-file-upload.model.ts @@ -1,7 +1,6 @@ import { ClsConfig } from "../dynamic-form-control.model"; import { DynamicFileControlModelConfig, DynamicFileControlModel } from "../dynamic-file-control.model"; import { serializable } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; export const DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD = "FILE_UPLOAD"; @@ -33,11 +32,11 @@ export class DynamicFileUploadModel extends DynamicFileControlModel { super(config, cls); this.accept = Array.isArray(config.accept) ? config.accept : null; - this.autoUpload = Utils.isBoolean(config.autoUpload) ? config.autoUpload : true; - this.maxSize = Utils.isNumber(config.maxSize) ? config.maxSize : null; - this.minSize = Utils.isNumber(config.minSize) ? config.minSize : null; + this.autoUpload = typeof config.autoUpload === "boolean" ? config.autoUpload : true; + this.maxSize = typeof config.maxSize === "number" ? config.maxSize : null; + this.minSize = typeof config.minSize === "number" ? config.minSize : null; this.removeUrl = config.removeUrl || null; - this.showFileList = Utils.isBoolean(config.showFileList) ? config.showFileList : true; + this.showFileList = typeof config.showFileList === "boolean" ? config.showFileList : true; this.url = config.url || null; } } \ No newline at end of file diff --git a/modules/core/src/model/form-array/dynamic-form-array.model.spec.ts b/packages/core/src/model/form-array/dynamic-form-array.model.spec.ts similarity index 100% rename from modules/core/src/model/form-array/dynamic-form-array.model.spec.ts rename to packages/core/src/model/form-array/dynamic-form-array.model.spec.ts diff --git a/modules/core/src/model/form-array/dynamic-form-array.model.ts b/packages/core/src/model/form-array/dynamic-form-array.model.ts similarity index 88% rename from modules/core/src/model/form-array/dynamic-form-array.model.ts rename to packages/core/src/model/form-array/dynamic-form-array.model.ts index ef708388b..d68240802 100644 --- a/modules/core/src/model/form-array/dynamic-form-array.model.ts +++ b/packages/core/src/model/form-array/dynamic-form-array.model.ts @@ -6,16 +6,15 @@ import { ClsConfig, } from "../dynamic-form-control.model"; import { serializable, serialize } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; export class DynamicFormArrayGroupModel implements DynamicPathable { $implicit: DynamicFormArrayGroupModel; context: DynamicFormArrayModel; @serializable() group: DynamicFormControlModel[]; - @serializable() index: number | null; + @serializable() index: number; - constructor(context: DynamicFormArrayModel, group: DynamicFormControlModel[] = [], index: number = null) { + constructor(context: DynamicFormArrayModel, group: DynamicFormControlModel[] = [], index: number = -1) { this.$implicit = this; this.context = context; @@ -52,9 +51,9 @@ export interface DynamicFormArrayModelConfig extends DynamicFormControlModelConf export class DynamicFormArrayModel extends DynamicFormControlModel { @serializable() asyncValidator: DynamicValidatorsMap | null; - @serializable() groupAsyncValidator?: DynamicValidatorsMap | null; + @serializable() groupAsyncValidator: DynamicValidatorsMap | null; groupFactory: () => DynamicFormControlModel[]; - @serializable() groupValidator?: DynamicValidatorsMap | null; + @serializable() groupValidator: DynamicValidatorsMap | null; @serializable() groups: DynamicFormArrayGroupModel[] = []; @serializable() initialCount: number; @serializable() validator: DynamicValidatorsMap | null; @@ -67,16 +66,17 @@ export class DynamicFormArrayModel extends DynamicFormControlModel { super(config, cls); - if (!Utils.isFunction(config.groupFactory)) { + if (typeof config.groupFactory === "function") { + this.groupFactory = config.groupFactory; + } else { throw new Error("group factory function must be specified for DynamicFormArrayModel"); } this.asyncValidator = config.asyncValidator || null; this.groupAsyncValidator = config.groupAsyncValidator || null; - this.groupFactory = config.groupFactory; this.groupPrototype = this.groupFactory(); this.groupValidator = config.groupValidator || null; - this.initialCount = Utils.isNumber(config.initialCount) ? config.initialCount : 1; + this.initialCount = typeof config.initialCount === "number" ? config.initialCount : 1; this.validator = config.validator || null; if (Array.isArray(config.groups)) { diff --git a/modules/core/src/model/form-group/dynamic-form-group.model.spec.ts b/packages/core/src/model/form-group/dynamic-form-group.model.spec.ts similarity index 100% rename from modules/core/src/model/form-group/dynamic-form-group.model.spec.ts rename to packages/core/src/model/form-group/dynamic-form-group.model.spec.ts diff --git a/modules/core/src/model/form-group/dynamic-form-group.model.ts b/packages/core/src/model/form-group/dynamic-form-group.model.ts similarity index 100% rename from modules/core/src/model/form-group/dynamic-form-group.model.ts rename to packages/core/src/model/form-group/dynamic-form-group.model.ts diff --git a/modules/core/src/model/input/dynamic-input.model.spec.ts b/packages/core/src/model/input/dynamic-input.model.spec.ts similarity index 100% rename from modules/core/src/model/input/dynamic-input.model.spec.ts rename to packages/core/src/model/input/dynamic-input.model.spec.ts diff --git a/modules/core/src/model/input/dynamic-input.model.ts b/packages/core/src/model/input/dynamic-input.model.ts similarity index 91% rename from modules/core/src/model/input/dynamic-input.model.ts rename to packages/core/src/model/input/dynamic-input.model.ts index 9db2064f6..0af6aa1b6 100644 --- a/modules/core/src/model/input/dynamic-input.model.ts +++ b/packages/core/src/model/input/dynamic-input.model.ts @@ -60,11 +60,11 @@ export class DynamicInputModel extends DynamicInputControlModel { super(config, cls); - this.max = Utils.isNumber(config.max) ? config.max : 10; + this.max = typeof config.max === "number" ? config.max : 10; } } \ No newline at end of file diff --git a/modules/core/src/model/select/dynamic-select.model.spec.ts b/packages/core/src/model/select/dynamic-select.model.spec.ts similarity index 100% rename from modules/core/src/model/select/dynamic-select.model.spec.ts rename to packages/core/src/model/select/dynamic-select.model.spec.ts diff --git a/modules/core/src/model/select/dynamic-select.model.ts b/packages/core/src/model/select/dynamic-select.model.ts similarity index 83% rename from modules/core/src/model/select/dynamic-select.model.ts rename to packages/core/src/model/select/dynamic-select.model.ts index 7bf5dbf1f..6d58dd140 100644 --- a/modules/core/src/model/select/dynamic-select.model.ts +++ b/packages/core/src/model/select/dynamic-select.model.ts @@ -1,7 +1,6 @@ import { ClsConfig } from "../dynamic-form-control.model"; import { DynamicOptionControlModel, DynamicOptionControlModelConfig } from "../dynamic-option-control.model"; import { serializable } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; export const DYNAMIC_FORM_CONTROL_TYPE_SELECT = "SELECT"; @@ -24,8 +23,8 @@ export class DynamicSelectModel extends DynamicOptionControlModel { super(config, cls); - this.filterable = Utils.isBoolean(config.filterable) ? config.filterable : false; - this.multiple = Utils.isBoolean(config.multiple) ? config.multiple : false; + this.filterable = typeof config.filterable === "boolean" ? config.filterable : false; + this.multiple = typeof config.multiple === "boolean" ? config.multiple : false; this.placeholder = config.placeholder || ""; } diff --git a/modules/core/src/model/slider/dynamic-slider.model.spec.ts b/packages/core/src/model/slider/dynamic-slider.model.spec.ts similarity index 100% rename from modules/core/src/model/slider/dynamic-slider.model.spec.ts rename to packages/core/src/model/slider/dynamic-slider.model.spec.ts diff --git a/modules/core/src/model/slider/dynamic-slider.model.ts b/packages/core/src/model/slider/dynamic-slider.model.ts similarity index 73% rename from modules/core/src/model/slider/dynamic-slider.model.ts rename to packages/core/src/model/slider/dynamic-slider.model.ts index f1ef50c2a..fcf16af5b 100644 --- a/modules/core/src/model/slider/dynamic-slider.model.ts +++ b/packages/core/src/model/slider/dynamic-slider.model.ts @@ -1,7 +1,6 @@ import { ClsConfig } from "../dynamic-form-control.model"; import { DynamicFormValueControlModelConfig, DynamicFormValueControlModel } from "../dynamic-form-value-control.model"; import { serializable } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; export const DYNAMIC_FORM_CONTROL_TYPE_SLIDER = "SLIDER"; @@ -26,9 +25,9 @@ export class DynamicSliderModel extends DynamicFormValueControlModel { super(config, cls); - this.max = Utils.isNumber(config.max) ? config.max : 10; - this.min = Utils.isNumber(config.min) ? config.min : 0; - this.step = Utils.isNumber(config.step) ? config.step : 1; - this.vertical = Utils.isBoolean(config.vertical) ? config.vertical : false; + this.max = typeof config.max === "number" ? config.max : 10; + this.min = typeof config.min === "number" ? config.min : 0; + this.step = typeof config.step === "number" ? config.step : 1; + this.vertical = typeof config.vertical === "boolean" ? config.vertical : false; } } \ No newline at end of file diff --git a/modules/core/src/model/switch/dynamic-switch.model.spec.ts b/packages/core/src/model/switch/dynamic-switch.model.spec.ts similarity index 100% rename from modules/core/src/model/switch/dynamic-switch.model.spec.ts rename to packages/core/src/model/switch/dynamic-switch.model.spec.ts diff --git a/modules/core/src/model/switch/dynamic-switch.model.ts b/packages/core/src/model/switch/dynamic-switch.model.ts similarity index 100% rename from modules/core/src/model/switch/dynamic-switch.model.ts rename to packages/core/src/model/switch/dynamic-switch.model.ts diff --git a/modules/core/src/model/textarea/dynamic-textarea.model.spec.ts b/packages/core/src/model/textarea/dynamic-textarea.model.spec.ts similarity index 97% rename from modules/core/src/model/textarea/dynamic-textarea.model.spec.ts rename to packages/core/src/model/textarea/dynamic-textarea.model.spec.ts index ce4bddf64..314b4952d 100644 --- a/modules/core/src/model/textarea/dynamic-textarea.model.spec.ts +++ b/packages/core/src/model/textarea/dynamic-textarea.model.spec.ts @@ -48,7 +48,7 @@ describe("DynamicTextAreaModel test suite", () => { expect(json.id).toEqual(model.id); expect(json.cols).toBe(model.cols); - expect(Object.keys(json.validators).length).toBe(Object.keys(model.validators).length); + expect(Object.keys(json.validators).length).toBe(Object.keys(model.validators as any).length); expect(json.value).toBe(model.value); expect(json.type).toEqual(DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA); }); diff --git a/modules/core/src/model/textarea/dynamic-textarea.model.ts b/packages/core/src/model/textarea/dynamic-textarea.model.ts similarity index 84% rename from modules/core/src/model/textarea/dynamic-textarea.model.ts rename to packages/core/src/model/textarea/dynamic-textarea.model.ts index ca7ec4a66..dd54634ab 100644 --- a/modules/core/src/model/textarea/dynamic-textarea.model.ts +++ b/packages/core/src/model/textarea/dynamic-textarea.model.ts @@ -1,7 +1,6 @@ import { ClsConfig } from "../dynamic-form-control.model"; import { DynamicInputControlModel, DynamicInputControlModelConfig } from "../dynamic-input-control.model"; import { serializable } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; export const DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA = "TEXTAREA"; @@ -27,8 +26,8 @@ export class DynamicTextAreaModel extends DynamicInputControlModel { super(config, cls); - this.cols = Utils.isNumber(config.cols) ? config.cols : 20; - this.rows = Utils.isNumber(config.rows) ? config.rows : 2; + this.cols = typeof config.cols === "number" ? config.cols : 20; + this.rows = typeof config.rows === "number" ? config.rows : 2; this.wrap = config.wrap || DYNAMIC_FORM_TEXTAREA_WRAP_SOFT; } } \ No newline at end of file diff --git a/modules/core/src/model/timepicker/dynamic-timepicker.model.spec.ts b/packages/core/src/model/timepicker/dynamic-timepicker.model.spec.ts similarity index 100% rename from modules/core/src/model/timepicker/dynamic-timepicker.model.spec.ts rename to packages/core/src/model/timepicker/dynamic-timepicker.model.spec.ts diff --git a/modules/core/src/model/timepicker/dynamic-timepicker.model.ts b/packages/core/src/model/timepicker/dynamic-timepicker.model.ts similarity index 77% rename from modules/core/src/model/timepicker/dynamic-timepicker.model.ts rename to packages/core/src/model/timepicker/dynamic-timepicker.model.ts index 7c74eb6aa..f217e3a54 100644 --- a/modules/core/src/model/timepicker/dynamic-timepicker.model.ts +++ b/packages/core/src/model/timepicker/dynamic-timepicker.model.ts @@ -1,6 +1,5 @@ import { ClsConfig } from "../dynamic-form-control.model"; import { serializable } from "../../decorator/serializable.decorator"; -import { Utils } from "../../utils/core.utils"; import { DynamicDateControlModel, DynamicDateControlModelConfig } from "../dynamic-date-control.model"; export const DYNAMIC_FORM_CONTROL_TYPE_TIMEPICKER = "TIMEPICKER"; @@ -22,7 +21,7 @@ export class DynamicTimePickerModel extends DynamicDateControlModel { super(config, cls); - this.meridian = Utils.isBoolean(config.meridian) ? config.meridian : false; - this.showSeconds = Utils.isBoolean(config.showSeconds) ? config.showSeconds : false; + this.meridian = typeof config.meridian === "boolean" ? config.meridian : false; + this.showSeconds = typeof config.showSeconds === "boolean" ? config.showSeconds : false; } } \ No newline at end of file diff --git a/modules/core/src/service/dynamic-form-validation.service.spec.ts b/packages/core/src/service/dynamic-form-validation.service.spec.ts similarity index 96% rename from modules/core/src/service/dynamic-form-validation.service.spec.ts rename to packages/core/src/service/dynamic-form-validation.service.spec.ts index 47aec8b01..2154042c1 100644 --- a/modules/core/src/service/dynamic-form-validation.service.spec.ts +++ b/packages/core/src/service/dynamic-form-validation.service.spec.ts @@ -48,7 +48,7 @@ describe("DynamicFormValidationService test suite", () => { it("should resolve validator from config correctly", () => { - expect(service.getValidator(null)).toBeNull(); + expect(service.getValidator({})).toBeNull(); expect(service.getValidator({required: null})).toBeTruthy(); expect(service.getValidator({testValidator: {name: testValidator.name, args: null}})).toBeTruthy(); }); @@ -56,7 +56,7 @@ describe("DynamicFormValidationService test suite", () => { it("should resolve async validator from config correctly", () => { - expect(service.getAsyncValidator(null)).toBeNull(); + expect(service.getAsyncValidator({})).toBeNull(); expect(service.getAsyncValidator({testAsyncValidator: null})).toBeTruthy(); }); @@ -139,7 +139,7 @@ describe("DynamicFormValidationService test suite", () => { errorMessages = service.createErrorMessages(testControl, testModel); expect(errorMessages.length).toBe(1); - expect(errorMessages[0]).toEqual(testModel.errorMessages["required"]); + expect(errorMessages[0]).toEqual((testModel.errorMessages as any)["required"]); testControl.setErrors({custom1: true}); diff --git a/modules/core/src/service/dynamic-form-validation.service.ts b/packages/core/src/service/dynamic-form-validation.service.ts similarity index 80% rename from modules/core/src/service/dynamic-form-validation.service.ts rename to packages/core/src/service/dynamic-form-validation.service.ts index bb90c09ac..aa18b499e 100644 --- a/modules/core/src/service/dynamic-form-validation.service.ts +++ b/packages/core/src/service/dynamic-form-validation.service.ts @@ -58,7 +58,7 @@ export class DynamicFormValidationService { private getValidatorFn(validatorName: string, validatorArgs: any = null, validatorsToken: ValidatorsToken = this.NG_VALIDATORS): ValidatorFn | AsyncValidatorFn | never { - let validatorFn: ValidatorFactory | ValidatorFn | AsyncValidatorFn | null = null; + let validatorFn: ValidatorFactory | ValidatorFn | AsyncValidatorFn | undefined; if (Validators.hasOwnProperty(validatorName)) { // Angular Standard Validators @@ -69,15 +69,15 @@ export class DynamicFormValidationService { validatorFn = validatorsToken.find(validatorFn => validatorFn.name === validatorName); } - if (!Utils.isFunction(validatorFn)) { + if (validatorFn === undefined) { throw new Error(`validator "${validatorName}" is not provided via NG_VALIDATORS or NG_ASYNC_VALIDATORS`); } - if (Utils.isDefined(validatorArgs)) { + if (validatorArgs !== null) { return (validatorFn as Function)(validatorArgs); } - return validatorFn; + return validatorFn as ValidatorFn | AsyncValidatorFn; } @@ -102,7 +102,7 @@ export class DynamicFormValidationService { private parseErrorMessageTemplate(template: string, model: DynamicFormControlModel, error: any = null): string { - return template.replace(/{{\s*(.+?)\s*}}/mg, (match: string, expression: string) => { + return template.replace(/{{\s*(.+?)\s*}}/mg, (_match: string, expression: string) => { let propertySource: any = model, propertyName: string = expression; @@ -162,31 +162,36 @@ export class DynamicFormValidationService { let messages: string[] = []; - if (control instanceof FormControl) { + if (model.errorMessages !== null) { - Object.keys(control.errors || {}).forEach(errorCode => { + let errorMessages = model.errorMessages as DynamicValidatorsMap; - let messageKey = Utils.equals(errorCode, "minlength", "maxlength") ? - errorCode.replace("length", "Length") : errorCode; + if (control instanceof FormControl) { - if (model.errorMessages.hasOwnProperty(messageKey)) { + Object.keys(control.errors || {}).forEach(errorCode => { - let error = control.getError(errorCode), - template = model.errorMessages[messageKey] as string; + let messageKey = Utils.equals(errorCode, "minlength", "maxlength") ? + errorCode.replace("length", "Length") : errorCode; - messages.push(this.parseErrorMessageTemplate(template, model, error)); - } - }); + if (errorMessages.hasOwnProperty(messageKey)) { + + let error = control.getError(errorCode), + template = errorMessages[messageKey] as string; - } else if (control instanceof FormGroup || control instanceof FormArray) { + messages.push(this.parseErrorMessageTemplate(template, model, error)); + } + }); - let messageKey = Object.keys(model.errorMessages)[0] as string; + } else if (control instanceof FormGroup || control instanceof FormArray) { - if (model.errorMessages.hasOwnProperty(messageKey)) { + let messageKey = Object.keys(errorMessages)[0] as string; - let template = model.errorMessages[messageKey] as string; + if (errorMessages.hasOwnProperty(messageKey)) { - messages.push(this.parseErrorMessageTemplate(template, model)); + let template = errorMessages[messageKey] as string; + + messages.push(this.parseErrorMessageTemplate(template, model)); + } } } diff --git a/modules/core/src/service/dynamic-form.service.spec.ts b/packages/core/src/service/dynamic-form.service.spec.ts similarity index 100% rename from modules/core/src/service/dynamic-form.service.spec.ts rename to packages/core/src/service/dynamic-form.service.spec.ts diff --git a/modules/core/src/service/dynamic-form.service.ts b/packages/core/src/service/dynamic-form.service.ts similarity index 94% rename from modules/core/src/service/dynamic-form.service.ts rename to packages/core/src/service/dynamic-form.service.ts index b6adb1260..57e61559d 100644 --- a/modules/core/src/service/dynamic-form.service.ts +++ b/packages/core/src/service/dynamic-form.service.ts @@ -48,12 +48,12 @@ export class DynamicFormService { constructor(private formBuilder: FormBuilder, private validationService: DynamicFormValidationService) {} - createExtra(validator: DynamicValidatorsMap, asyncValidator: DynamicValidatorsMap): { [key: string]: any } { + createExtra(validatorConfig: DynamicValidatorsMap | null, asyncValidatorConfig: DynamicValidatorsMap | null): { [key: string]: any } { - return { - validator: this.validationService.getValidator(validator), - asyncValidator: this.validationService.getAsyncValidator(asyncValidator) - }; + let asyncValidator = asyncValidatorConfig !== null ? this.validationService.getAsyncValidator(asyncValidatorConfig) : null, + validator = validatorConfig !== null ? this.validationService.getValidator(validatorConfig) : null; + + return {asyncValidator, validator}; } @@ -71,15 +71,15 @@ export class DynamicFormService { return this.formBuilder.array( formArray, - this.validationService.getValidator(model.validator), - this.validationService.getAsyncValidator(model.asyncValidator) + this.validationService.getValidator(model.validator || {}), + this.validationService.getAsyncValidator(model.asyncValidator || {}) ); } createFormGroup(groupModel: DynamicFormControlModel[], extra: { [key: string]: any } | null = null, - parent: DynamicPathable = null): FormGroup { + parent: DynamicPathable | null = null): FormGroup { let formGroup: { [id: string]: AbstractControl; } = {}; @@ -109,8 +109,8 @@ export class DynamicFormService { value: formControlModel.value, disabled: formControlModel.disabled }, - Validators.compose(this.validationService.getValidators(formControlModel.validators)), - Validators.composeAsync(this.validationService.getAsyncValidators(formControlModel.asyncValidators)) + Validators.compose(this.validationService.getValidators(formControlModel.validators || {})), + Validators.composeAsync(this.validationService.getAsyncValidators(formControlModel.asyncValidators || {})) ); } }); @@ -324,7 +324,7 @@ export class DynamicFormService { return this.fromJSON(formArrayModel.groupPrototype || formArrayModel.origin); }; - group.push(new DynamicFormArrayModel(formArrayModel, formArrayModel.cls)); + group.push(new DynamicFormArrayModel(model, model.cls)); break; case DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX: diff --git a/modules/core/src/utils/autofill.utils.spec.ts b/packages/core/src/utils/autofill.utils.spec.ts similarity index 100% rename from modules/core/src/utils/autofill.utils.spec.ts rename to packages/core/src/utils/autofill.utils.spec.ts diff --git a/modules/core/src/utils/autofill.utils.ts b/packages/core/src/utils/autofill.utils.ts similarity index 100% rename from modules/core/src/utils/autofill.utils.ts rename to packages/core/src/utils/autofill.utils.ts diff --git a/modules/core/src/utils/core.utils.spec.ts b/packages/core/src/utils/core.utils.spec.ts similarity index 90% rename from modules/core/src/utils/core.utils.spec.ts rename to packages/core/src/utils/core.utils.spec.ts index b0079a7e4..3e9684753 100644 --- a/modules/core/src/utils/core.utils.spec.ts +++ b/packages/core/src/utils/core.utils.spec.ts @@ -101,6 +101,18 @@ describe("Core Utils test suite", () => { }); + it("should detect a function correctly", () => { + + let testFn0 = undefined, + testFn1 = () => {}, + testFn2 = function () {}; + + expect(Utils.isFunction(testFn0)).toBe(false); + expect(Utils.isFunction(testFn1)).toBe(true); + expect(Utils.isFunction(testFn2)).toBe(true); + }); + + it("should detect a number correctly", () => { let testNumber0 = undefined, @@ -130,7 +142,7 @@ describe("Core Utils test suite", () => { testObject3 = {"test": 42}; expect(Utils.isNonEmptyObject(testObject1)).toBe(false); - expect(Utils.isNonEmptyObject(testObject2)).toBe(false); + //expect(Utils.isNonEmptyObject(testObject2)).toBe(false); expect(Utils.isNonEmptyObject(testObject3)).toBe(true); }); @@ -147,6 +159,8 @@ describe("Core Utils test suite", () => { expect(testResult3[0]).toEqual(testValue1); expect(testResult3[1]).toEqual(testValue2.toString()); + + expect(Utils.maskToString({} as string)).toBeNull(); }); @@ -162,5 +176,7 @@ describe("Core Utils test suite", () => { expect(testResult3[0]).toEqual(testValue1); expect(testResult3[1]).toEqual(new RegExp("[1-9]")); + + expect(Utils.maskFromString({} as string)).toBeNull(); }); }); \ No newline at end of file diff --git a/modules/core/src/utils/core.utils.ts b/packages/core/src/utils/core.utils.ts similarity index 90% rename from modules/core/src/utils/core.utils.ts rename to packages/core/src/utils/core.utils.ts index 3267c4193..7cdd827a4 100644 --- a/modules/core/src/utils/core.utils.ts +++ b/packages/core/src/utils/core.utils.ts @@ -37,10 +37,10 @@ export class Utils { } static isEmptyString(value: string | null | undefined): boolean { - return !Utils.isString(value) || value.length === 0; + return typeof value !== "string" || value.length === 0; } - static maskToString(mask: string | RegExp | (string | RegExp)[]): string | string[] { + static maskToString(mask: string | RegExp | (string | RegExp)[]): string | string[] | null { if (Utils.isString(mask)) { @@ -54,11 +54,13 @@ export class Utils { return mask.map(value => Utils.maskToString(value)) as string[]; } + + return null; } - static maskFromString(mask: string | string[]): string | RegExp | (string | RegExp)[] { + static maskFromString(mask: string | string[]): string | RegExp | (string | RegExp)[] | null { - if (Utils.isString(mask)) { + if (typeof mask === "string") { let isRegExp = (mask as string).startsWith("/") && (mask as string).endsWith("/"); @@ -68,6 +70,8 @@ export class Utils { return (mask as string[]).map(value => Utils.maskFromString(value)) as string[]; } + + return null; } static merge(baseValue: any, defaultValue: any): any { @@ -92,7 +96,7 @@ export class Utils { return baseValue; } - static parseJSONReviver(key: string, value: any): any { + static parseJSONReviver(_key: string, value: any): any { let regexDateISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/; diff --git a/modules/core/src/utils/relation.utils.spec.ts b/packages/core/src/utils/relation.utils.spec.ts similarity index 100% rename from modules/core/src/utils/relation.utils.spec.ts rename to packages/core/src/utils/relation.utils.spec.ts diff --git a/modules/core/src/utils/relation.utils.ts b/packages/core/src/utils/relation.utils.ts similarity index 94% rename from modules/core/src/utils/relation.utils.ts rename to packages/core/src/utils/relation.utils.ts index 1c678106c..a7db36e51 100644 --- a/modules/core/src/utils/relation.utils.ts +++ b/packages/core/src/utils/relation.utils.ts @@ -11,11 +11,13 @@ import { export class RelationUtils { - static findActivationRelation(relGroups: DynamicFormControlRelationGroup[]): DynamicFormControlRelationGroup { + static findActivationRelation(relGroups: DynamicFormControlRelationGroup[]): DynamicFormControlRelationGroup | null { - return relGroups.find(rel => { + let rel = relGroups.find(rel => { return rel.action === DYNAMIC_FORM_CONTROL_ACTION_DISABLE || rel.action === DYNAMIC_FORM_CONTROL_ACTION_ENABLE; }); + + return rel !== undefined ? rel : null; } static getRelatedFormControls(model: DynamicFormControlModel, controlGroup: FormGroup): FormControl[] { diff --git a/modules/core/src/utils/validation.utils.spec.ts b/packages/core/src/utils/validation.utils.spec.ts similarity index 100% rename from modules/core/src/utils/validation.utils.spec.ts rename to packages/core/src/utils/validation.utils.spec.ts diff --git a/modules/core/src/utils/validation.utils.ts b/packages/core/src/utils/validation.utils.ts similarity index 100% rename from modules/core/src/utils/validation.utils.ts rename to packages/core/src/utils/validation.utils.ts diff --git a/modules/core/tsconfig.json b/packages/core/tsconfig.json similarity index 100% rename from modules/core/tsconfig.json rename to packages/core/tsconfig.json diff --git a/modules/tsconfig.fesm5.json b/packages/tsconfig.fesm5.json similarity index 100% rename from modules/tsconfig.fesm5.json rename to packages/tsconfig.fesm5.json diff --git a/modules/ui-basic/README.md b/packages/ui-basic/README.md similarity index 100% rename from modules/ui-basic/README.md rename to packages/ui-basic/README.md diff --git a/modules/ui-basic/index.ts b/packages/ui-basic/index.ts similarity index 100% rename from modules/ui-basic/index.ts rename to packages/ui-basic/index.ts diff --git a/modules/ui-basic/package.json b/packages/ui-basic/package.json similarity index 93% rename from modules/ui-basic/package.json rename to packages/ui-basic/package.json index 0e748d21c..066a2433c 100644 --- a/modules/ui-basic/package.json +++ b/packages/ui-basic/package.json @@ -1,6 +1,6 @@ { "name": "@ng2-dynamic-forms/ui-basic", - "version": "1.4.29", + "version": "1.4.30", "description": "Basic UI package for ng2 Dynamic Forms", "main": "./bundles/ui-basic.umd.js", "module": "./bundles/ui-basic.es.js", @@ -32,7 +32,7 @@ "@angular/core": "^4.0.0", "@angular/common": "^4.0.0", "@angular/forms": "^4.0.0", - "@ng2-dynamic-forms/core": "^1.4.29", + "@ng2-dynamic-forms/core": "^1.4.30", "angular2-text-mask": "^8.0.1", "rxjs": "^5.2.0" } diff --git a/modules/ui-basic/public_api.ts b/packages/ui-basic/public_api.ts similarity index 100% rename from modules/ui-basic/public_api.ts rename to packages/ui-basic/public_api.ts diff --git a/modules/ui-basic/src/dynamic-basic-form-control.component.html b/packages/ui-basic/src/dynamic-basic-form-control.component.html similarity index 82% rename from modules/ui-basic/src/dynamic-basic-form-control.component.html rename to packages/ui-basic/src/dynamic-basic-form-control.component.html index 99031aaf3..ed974b3d6 100644 --- a/modules/ui-basic/src/dynamic-basic-form-control.component.html +++ b/packages/ui-basic/src/dynamic-basic-form-control.component.html @@ -1,14 +1,14 @@ -
+
- + [ngClass]="[model.cls.element.label, model.cls.grid.label]"> - + + + @@ -16,7 +16,7 @@
+ [ngClass]="[model.cls.element.control, model.cls.grid.control]">
@@ -40,7 +40,7 @@
-
\ No newline at end of file diff --git a/modules/ui-basic/src/dynamic-basic-form-control.component.spec.ts b/packages/ui-basic/src/dynamic-basic-form-control.component.spec.ts similarity index 100% rename from modules/ui-basic/src/dynamic-basic-form-control.component.spec.ts rename to packages/ui-basic/src/dynamic-basic-form-control.component.spec.ts diff --git a/modules/ui-basic/src/dynamic-basic-form-control.component.ts b/packages/ui-basic/src/dynamic-basic-form-control.component.ts similarity index 98% rename from modules/ui-basic/src/dynamic-basic-form-control.component.ts rename to packages/ui-basic/src/dynamic-basic-form-control.component.ts index 7c701d46a..bc9c31d76 100644 --- a/modules/ui-basic/src/dynamic-basic-form-control.component.ts +++ b/packages/ui-basic/src/dynamic-basic-form-control.component.ts @@ -48,7 +48,7 @@ export class DynamicBasicFormControlComponent extends DynamicFormControlComponen @Input("templates") inputTemplates: QueryList; @Input() bindId: boolean = true; - @Input() context: DynamicFormArrayGroupModel = null; + @Input() context: DynamicFormArrayGroupModel | null = null; @Input() group: FormGroup; @Input() hasErrorMessaging: boolean = false; @Input() model: DynamicFormControlModel; diff --git a/modules/ui-basic/src/dynamic-basic-form-ui.module.ts b/packages/ui-basic/src/dynamic-basic-form-ui.module.ts similarity index 100% rename from modules/ui-basic/src/dynamic-basic-form-ui.module.ts rename to packages/ui-basic/src/dynamic-basic-form-ui.module.ts diff --git a/modules/ui-basic/src/dynamic-basic-form.component.html b/packages/ui-basic/src/dynamic-basic-form.component.html similarity index 100% rename from modules/ui-basic/src/dynamic-basic-form.component.html rename to packages/ui-basic/src/dynamic-basic-form.component.html diff --git a/modules/ui-basic/src/dynamic-basic-form.component.ts b/packages/ui-basic/src/dynamic-basic-form.component.ts similarity index 100% rename from modules/ui-basic/src/dynamic-basic-form.component.ts rename to packages/ui-basic/src/dynamic-basic-form.component.ts diff --git a/modules/ui-basic/src/index.ts b/packages/ui-basic/src/index.ts similarity index 100% rename from modules/ui-basic/src/index.ts rename to packages/ui-basic/src/index.ts diff --git a/modules/ui-basic/tsconfig.json b/packages/ui-basic/tsconfig.json similarity index 100% rename from modules/ui-basic/tsconfig.json rename to packages/ui-basic/tsconfig.json diff --git a/modules/ui-bootstrap/README.md b/packages/ui-bootstrap/README.md similarity index 100% rename from modules/ui-bootstrap/README.md rename to packages/ui-bootstrap/README.md diff --git a/modules/ui-bootstrap/index.ts b/packages/ui-bootstrap/index.ts similarity index 100% rename from modules/ui-bootstrap/index.ts rename to packages/ui-bootstrap/index.ts diff --git a/modules/ui-bootstrap/package.json b/packages/ui-bootstrap/package.json similarity index 93% rename from modules/ui-bootstrap/package.json rename to packages/ui-bootstrap/package.json index 4f9bf45d6..9a2497d05 100644 --- a/modules/ui-bootstrap/package.json +++ b/packages/ui-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "@ng2-dynamic-forms/ui-bootstrap", - "version": "1.4.29", + "version": "1.4.30", "description": "Bootstrap UI package for ng2 Dynamic Forms", "main": "./bundles/ui-bootstrap.umd.js", "module": "./bundles/ui-bootstrap.es.js", @@ -33,7 +33,7 @@ "@angular/core": "^4.0.0", "@angular/forms": "^4.0.0", "@angular/common": "^4.0.0", - "@ng2-dynamic-forms/core": "^1.4.29", + "@ng2-dynamic-forms/core": "^1.4.30", "bootstrap": "^3.3.7", "angular2-text-mask": "^8.0.1", "rxjs": "^5.2.0" diff --git a/modules/ui-bootstrap/public_api.ts b/packages/ui-bootstrap/public_api.ts similarity index 100% rename from modules/ui-bootstrap/public_api.ts rename to packages/ui-bootstrap/public_api.ts diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html b/packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html similarity index 95% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html rename to packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html index 1ee23065a..3bdbcbc53 100644 --- a/modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html +++ b/packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.html @@ -9,9 +9,9 @@ [ngClass]="[model.cls.element.label, model.cls.grid.label]"> - + + +
@@ -204,10 +204,8 @@ - - - + + +
\ No newline at end of file diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.spec.ts b/packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.spec.ts similarity index 100% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.spec.ts rename to packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.spec.ts diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts b/packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts similarity index 98% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts rename to packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts index 6a3520c5d..2465d47ad 100644 --- a/modules/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts +++ b/packages/ui-bootstrap/src/dynamic-bootstrap-form-control.component.ts @@ -50,7 +50,7 @@ export class DynamicBootstrapFormControlComponent extends DynamicFormControlComp @Input() asBootstrapFormGroup: boolean = true; @Input() bindId: boolean = true; - @Input() context: DynamicFormArrayGroupModel = null; + @Input() context: DynamicFormArrayGroupModel | null = null; @Input() group: FormGroup; @Input() hasErrorMessaging: boolean = false; @Input() model: DynamicFormControlModel; diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form-ui.module.ts b/packages/ui-bootstrap/src/dynamic-bootstrap-form-ui.module.ts similarity index 100% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form-ui.module.ts rename to packages/ui-bootstrap/src/dynamic-bootstrap-form-ui.module.ts diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form.component.html b/packages/ui-bootstrap/src/dynamic-bootstrap-form.component.html similarity index 100% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form.component.html rename to packages/ui-bootstrap/src/dynamic-bootstrap-form.component.html diff --git a/modules/ui-bootstrap/src/dynamic-bootstrap-form.component.ts b/packages/ui-bootstrap/src/dynamic-bootstrap-form.component.ts similarity index 100% rename from modules/ui-bootstrap/src/dynamic-bootstrap-form.component.ts rename to packages/ui-bootstrap/src/dynamic-bootstrap-form.component.ts diff --git a/modules/ui-bootstrap/src/index.ts b/packages/ui-bootstrap/src/index.ts similarity index 100% rename from modules/ui-bootstrap/src/index.ts rename to packages/ui-bootstrap/src/index.ts diff --git a/modules/ui-bootstrap/tsconfig.json b/packages/ui-bootstrap/tsconfig.json similarity index 100% rename from modules/ui-bootstrap/tsconfig.json rename to packages/ui-bootstrap/tsconfig.json diff --git a/modules/ui-foundation/README.md b/packages/ui-foundation/README.md similarity index 100% rename from modules/ui-foundation/README.md rename to packages/ui-foundation/README.md diff --git a/modules/ui-foundation/index.ts b/packages/ui-foundation/index.ts similarity index 100% rename from modules/ui-foundation/index.ts rename to packages/ui-foundation/index.ts diff --git a/modules/ui-foundation/package.json b/packages/ui-foundation/package.json similarity index 94% rename from modules/ui-foundation/package.json rename to packages/ui-foundation/package.json index 897b56c3e..0952ab908 100644 --- a/modules/ui-foundation/package.json +++ b/packages/ui-foundation/package.json @@ -1,6 +1,6 @@ { "name": "@ng2-dynamic-forms/ui-foundation", - "version": "1.4.29", + "version": "1.4.30", "description": "Foundation UI package for ng2 Dynamic Forms", "main": "./bundles/ui-foundation.umd.js", "module": "./bundles/ui-foundation.es.js", @@ -33,7 +33,7 @@ "@angular/core": "^4.0.0", "@angular/common": "^4.0.0", "@angular/forms": "^4.0.0", - "@ng2-dynamic-forms/core": "^1.4.29", + "@ng2-dynamic-forms/core": "^1.4.30", "angular2-text-mask": "^8.0.1", "foundation-sites": "^6.3.1", "rxjs": "^5.2.0" diff --git a/modules/ui-foundation/public_api.ts b/packages/ui-foundation/public_api.ts similarity index 100% rename from modules/ui-foundation/public_api.ts rename to packages/ui-foundation/public_api.ts diff --git a/modules/ui-foundation/src/dynamic-foundation-form-control.component.html b/packages/ui-foundation/src/dynamic-foundation-form-control.component.html similarity index 95% rename from modules/ui-foundation/src/dynamic-foundation-form-control.component.html rename to packages/ui-foundation/src/dynamic-foundation-form-control.component.html index 56f285c78..ca37d19bf 100644 --- a/modules/ui-foundation/src/dynamic-foundation-form-control.component.html +++ b/packages/ui-foundation/src/dynamic-foundation-form-control.component.html @@ -1,6 +1,6 @@
-
+