diff --git a/gulpfile.js b/gulpfile.js
index 140020f..8fb7869 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,13 +1,16 @@
-let gulp = require('gulp'),
+const gulp = require('gulp'),
childProcess = require('child_process'),
_ = require('lodash'),
uglify = require('gulp-uglify-es').default,
rename = require('gulp-rename'),
jsonEditor = require('gulp-json-editor'),
fs = require('fs'),
- sass = require('gulp-sass');
-
-let packageJson = JSON.parse(fs.readFileSync('./package.json')),
+ sass = require('gulp-sass'),
+ path = require('path'),
+ ngPackagr = require('ng-packagr'),
+ ngPackagePath = path.normalize(path.join(__dirname, './ng-package.json')),
+ tsConfigPath = path.normalize(path.join(__dirname, './tsconfig.dist.json')),
+ packageConfig = JSON.parse(fs.readFileSync('./package.json')),
paths = {
gulp: 'node_modules/gulp/bin/gulp.js',
ngPackagr: 'node_modules/ng-packagr/cli/main.js',
@@ -16,26 +19,26 @@ let packageJson = JSON.parse(fs.readFileSync('./package.json')),
root: 'images/'
},
src: {
- css: `src/app/components/${packageJson.name}/${packageJson.name}.component.scss`
+ css: `src/app/components/${packageConfig.name}/${packageConfig.name}.component.scss`
},
dist: {
root: 'dist/',
package: 'dist/package.json',
bundles: {
root: 'dist/bundles/',
- file: `dist/bundles/${packageJson.name}.umd.js`,
- mapFile: `dist/bundles/${packageJson.name}.umd.js.map`,
- minFile: `${packageJson.name}.umd.min.js`
+ file: `dist/bundles/${packageConfig.name}.umd.js`,
+ mapFile: `dist/bundles/${packageConfig.name}.umd.js.map`,
+ minFile: `${packageConfig.name}.umd.min.js`
},
esm5: {
root: 'dist/esm5/',
- file: `dist/esm5/${packageJson.name}.js`,
- minFile: `${packageJson.name}.min.js`
+ file: `dist/esm5/${packageConfig.name}.js`,
+ minFile: `${packageConfig.name}.min.js`
},
esm2015: {
root: 'dist/esm2015/',
- file: `dist/esm2015/${packageJson.name}.js`,
- minFile: `${packageJson.name}.min.js`
+ file: `dist/esm2015/${packageConfig.name}.js`,
+ minFile: `${packageConfig.name}.min.js`
}
}
};
@@ -43,8 +46,6 @@ let packageJson = JSON.parse(fs.readFileSync('./package.json')),
function executeCommand(command, parameters) {
if (command === 'gulp') {
command = paths.gulp;
- } else if (command === 'ng-packagr') {
- command = paths.ngPackagr;
} else if (command === 'ionic') {
command = paths.ionic;
}
@@ -55,13 +56,13 @@ function executeCommand(command, parameters) {
childProcess.spawnSync('node', _parameters, { stdio: 'inherit' });
}
-function copyCss() {
+async function copyCss() {
return Promise.all([
new Promise(function (resolve, reject) {
// Copy original SCSS file to "module" folder from package.json.
// That's where Ionic will be looking for it.
fs.createReadStream(paths.src.css).pipe(
- fs.createWriteStream(`${paths.dist.esm5.root}${packageJson.name}.component.scss`)
+ fs.createWriteStream(`${paths.dist.esm5.root}${packageConfig.name}.component.scss`)
.on('error', reject)
.on('close', resolve)
);
@@ -73,7 +74,7 @@ function copyCss() {
.pipe(sass({
outputStyle: 'compressed'
}))
- .pipe(rename(`${packageJson.name}.component.min.css`))
+ .pipe(rename(`${packageConfig.name}.component.min.css`))
.pipe(gulp.dest(paths.dist.esm5.root))
.on('error', reject)
.on('end', resolve);
@@ -81,7 +82,7 @@ function copyCss() {
]);
}
-function copyImages() {
+async function copyImages() {
return new Promise(function (resolve, reject) {
gulp.src(`${paths.images.root}**/*`)
.pipe(gulp.dest(`${paths.dist.root}${paths.images.root}`))
@@ -90,7 +91,7 @@ function copyImages() {
});
}
-function minifyJS() {
+async function minifyJS() {
// Minify files.
return Promise.all([
new Promise(function (resolve, reject) {
@@ -120,7 +121,7 @@ function minifyJS() {
});
}
-function modifyPackageJson() {
+async function modifyPackageJson() {
return new Promise(function (resolve, reject) {
gulp.src(paths.dist.package)
.pipe(jsonEditor(function (json) {
@@ -138,23 +139,27 @@ function modifyPackageJson() {
});
}
-gulp.task('heroku', function () {
- executeCommand('ionic', ['build', '--minifyjs', '--minifycss', '--optimizejs']);
-});
+async function build() {
+ await ngPackagr
+ .ngPackagr()
+ .forProject(ngPackagePath)
+ .withTsConfig(tsConfigPath)
+ .build()
+ .catch(error => {
+ console.error(error);
+ process.exit(1);
+ });
+ await minifyJS();
+ await modifyPackageJson();
+ await copyCss();
+ await copyImages();
-gulp.task('build', function () {
- executeCommand('ng-packagr', ['-p', 'ng-package.json']);
+ // Remove archive created by ng-packagr.
+ fs.unlinkSync('dist.tgz');
+}
- minifyJS().then(function () {
- modifyPackageJson().then(function () {
- copyCss().then(function () {
- copyImages().then(function () {
- // Remove archive created by ng-packagr.
- fs.unlinkSync('dist.tgz');
- });
- });
- });
- });
+gulp.task('heroku', function () {
+ executeCommand('ionic', ['build', '--minifyjs', '--minifycss', '--optimizejs']);
});
-
+gulp.task('build', build);
gulp.task('default', ['build']);
diff --git a/ionic-selectable.code-workspace b/ionic-selectable.code-workspace
index 07f9953..bff2079 100644
--- a/ionic-selectable.code-workspace
+++ b/ionic-selectable.code-workspace
@@ -5,7 +5,7 @@
}
],
"settings": {
- "editor.formatOnSave": true,
+ "editor.formatOnSave": false,
"editor.wordWrap": "on",
"editor.detectIndentation": false,
"search.exclude": {
@@ -21,7 +21,6 @@
"source.organizeImports": true
}
},
- "beautify.tabSize": 2,
"editor.tabSize": 2
}
}
diff --git a/package-lock.json b/package-lock.json
index bfa9265..7f3a03d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "ionic-selectable",
- "version": "3.1.0",
+ "version": "3.4.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -665,7 +665,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
- "core-js": "2.5.7",
+ "core-js": "2.6.5",
"regenerator-runtime": "0.11.1"
}
},
@@ -1392,7 +1392,7 @@
"graceful-fs": "4.1.15",
"make-dir": "1.3.0",
"unique-string": "1.0.0",
- "write-file-atomic": "2.3.0",
+ "write-file-atomic": "2.4.2",
"xdg-basedir": "3.0.0"
}
},
@@ -1496,9 +1496,9 @@
"dev": true
},
"core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
+ "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==",
"dev": true
},
"core-util-is": {
@@ -1873,7 +1873,7 @@
},
"duplexer": {
"version": "0.1.1",
- "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
"integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
"dev": true
},
@@ -2098,7 +2098,7 @@
},
"es6-promise": {
"version": "3.3.1",
- "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
"integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
"dev": true
},
@@ -3708,7 +3708,7 @@
},
"got": {
"version": "6.7.1",
- "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
@@ -4516,7 +4516,7 @@
},
"is-obj": {
"version": "1.0.1",
- "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
@@ -5507,21 +5507,21 @@
"dev": true,
"requires": {
"safe-buffer": "5.1.2",
- "yallist": "3.0.2"
+ "yallist": "3.0.3"
},
"dependencies": {
"yallist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
- "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true
}
}
},
"minizlib": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz",
- "integrity": "sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
+ "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
"dev": true,
"requires": {
"minipass": "2.3.5"
@@ -5573,7 +5573,7 @@
},
"moment": {
"version": "2.21.0",
- "resolved": "http://registry.npmjs.org/moment/-/moment-2.21.0.tgz",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz",
"integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==",
"dev": true
},
@@ -5694,7 +5694,7 @@
"strip-bom": "3.0.0",
"stylus": "0.54.5",
"tar": "4.4.8",
- "uglify-js": "3.4.9",
+ "uglify-js": "3.5.9",
"update-notifier": "2.5.0"
},
"dependencies": {
@@ -5778,7 +5778,7 @@
},
"rollup": {
"version": "0.55.5",
- "resolved": "http://registry.npmjs.org/rollup/-/rollup-0.55.5.tgz",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.55.5.tgz",
"integrity": "sha512-2hke9NOy332kxvnmMQOgl7DHm94zihNyYJNd8ZLWo4U0EjFvjUkeWa0+ge+70bTg+mY0xJ7NUsf5kIhDtrGrtA==",
"dev": true
},
@@ -5816,34 +5816,34 @@
"chownr": "1.1.1",
"fs-minipass": "1.2.5",
"minipass": "2.3.5",
- "minizlib": "1.1.1",
+ "minizlib": "1.2.1",
"mkdirp": "0.5.1",
"safe-buffer": "5.1.2",
- "yallist": "3.0.2"
+ "yallist": "3.0.3"
}
},
"uglify-js": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
- "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "version": "3.5.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.9.tgz",
+ "integrity": "sha512-WpT0RqsDtAWPNJK955DEnb6xjymR8Fn0OlK4TT4pS0ASYsVPqr5ELhgwOwLCP5J5vHeJ4xmMmz3DEgdqC10JeQ==",
"dev": true,
"requires": {
- "commander": "2.17.1",
+ "commander": "2.20.0",
"source-map": "0.6.1"
},
"dependencies": {
"commander": {
- "version": "2.17.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
}
}
},
"yallist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
- "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true
}
}
@@ -6350,7 +6350,7 @@
"dev": true,
"requires": {
"got": "6.7.1",
- "registry-auth-token": "3.3.2",
+ "registry-auth-token": "3.4.0",
"registry-url": "3.1.0",
"semver": "5.6.0"
}
@@ -7218,9 +7218,9 @@
}
},
"registry-auth-token": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
- "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
+ "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
"dev": true,
"requires": {
"rc": "1.2.8",
@@ -7933,7 +7933,7 @@
"buffer-crc32": "0.2.13",
"minimist": "1.2.0",
"sander": "0.5.1",
- "sourcemap-codec": "1.4.3"
+ "sourcemap-codec": "1.4.4"
}
},
"source-list-map": {
@@ -7977,9 +7977,9 @@
"dev": true
},
"sourcemap-codec": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz",
- "integrity": "sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA==",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
+ "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
"dev": true
},
"sparkles": {
@@ -8218,13 +8218,13 @@
},
"sax": {
"version": "0.5.8",
- "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
"integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
"dev": true
},
"source-map": {
"version": "0.1.43",
- "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"dev": true,
"requires": {
@@ -9786,9 +9786,9 @@
"dev": true
},
"write-file-atomic": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+ "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
"dev": true,
"requires": {
"graceful-fs": "4.1.15",
diff --git a/package.json b/package.json
index b036e09..2b2b923 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "version": "3.4.0",
+ "version": "3.4.2",
"name": "ionic-selectable",
"title": "Ionic Selectable",
"description": "An Ionic component similar to Ionic Select, that allows to search items, including async search, group, add, edit, delete items, and much more.",
diff --git a/src/app/components/ionic-selectable/ionic-selectable-modal.component.html b/src/app/components/ionic-selectable/ionic-selectable-modal.component.html
index 0ccd6b0..44b5454 100644
--- a/src/app/components/ionic-selectable/ionic-selectable-modal.component.html
+++ b/src/app/components/ionic-selectable/ionic-selectable-modal.component.html
@@ -125,7 +125,7 @@
{
+ return _item[this.itemValueField] === item;
+ });
+
+ return this._formatItem(selectedItem);
+ } else {
+ return this._formatItem(item);
+ }
+ }
+
_getItemValue(item: any): any {
if (!this._hasObjects) {
return item;
@@ -1204,19 +1217,6 @@ export class IonicSelectableComponent implements ControlValueAccessor, OnInit, O
this._hasFilteredItems = !this._areGroupsEmpty(this._filteredGroups);
}
- private _formatValueItem(item: any): string {
- if (this._shouldStoreItemValue) {
- // Get item text from the list as we store it's value only.
- let selectedItem = this.items.find(_item => {
- return _item[this.itemValueField] === item;
- });
-
- return this._formatItem(selectedItem);
- } else {
- return this._formatItem(item);
- }
- }
-
private _getPropertyValue(object: any, property: string): any {
if (!property) {
return null;
diff --git a/tsconfig.dist.json b/tsconfig.dist.json
new file mode 100644
index 0000000..4f0805f
--- /dev/null
+++ b/tsconfig.dist.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json",
+ "angularCompilerOptions": {
+ "annotateForClosureCompiler": true,
+ "flatModuleId": "AUTOGENERATED",
+ "flatModuleOutFile": "AUTOGENERATED",
+ "skipTemplateCodegen": true,
+ "strictMetadataEmit": true,
+ "fullTemplateTypeCheck": false
+ }
+}