diff --git a/angular/package-lock.json b/angular/package-lock.json index e19fabf6c9..5465bf4a34 100644 --- a/angular/package-lock.json +++ b/angular/package-lock.json @@ -4,6 +4,15 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@angular/animations": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.9.tgz", + "integrity": "sha512-H/3fMs4PhYjKoA81II6D0PHifDrqlKet2u/EXzUBq3ehXby+N/0GBzqsBYwPeU5pTye7WPFfW+5sgoJpN8Ye6Q==", + "dev": true, + "requires": { + "tslib": "1.9.0" + } + }, "@angular/common": { "version": "5.2.9", "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.9.tgz", @@ -88,6 +97,27 @@ "tslib": "1.9.0" } }, + "@ionic/core": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.1.5.tgz", + "integrity": "sha512-BLg3PpuNlw5uE94fZkMYpOsqd+dHFcC/UzNzXEvNL4LtHhN9yOPa0Trhy1i8VxmGcHpn3UHOHHzo0oOVMa91yw==", + "dev": true, + "requires": { + "ionicons": "4.0.0-18" + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -252,6 +282,12 @@ "supports-color": "5.3.0" } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -269,6 +305,15 @@ "readdirp": "2.1.0" } }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, "cli-spinners": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", @@ -322,6 +367,12 @@ } } }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -344,9 +395,9 @@ "dev": true }, "commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "concat-map": { @@ -381,9 +432,9 @@ "dev": true }, "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "doctrine": { @@ -473,6 +524,17 @@ "fill-range": "2.2.3" } }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -482,6 +544,15 @@ "is-extglob": "1.0.0" } }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -1505,12 +1576,21 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1527,6 +1607,33 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "ionicons": { + "version": "4.0.0-18", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.0.0-18.tgz", + "integrity": "sha512-nPijotkyDVy1tX6IBuo9/uLnWLtvwYUxX5YGcJJ0meyx6XwUrc+9irDF/xXkVnnUrw9cHbGoJv2Hs0l65wMWLQ==", + "dev": true + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -1578,6 +1685,12 @@ "number-is-nan": "1.0.1" } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -1665,9 +1778,9 @@ "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { "argparse": "1.0.10", @@ -1712,7 +1825,7 @@ "log-update": "1.0.2", "ora": "0.2.3", "p-map": "1.2.0", - "rxjs": "5.5.7", + "rxjs": "5.5.8", "stream-to-observable": "0.2.0", "strip-ansi": "3.0.1" }, @@ -1752,15 +1865,6 @@ "object-assign": "4.1.1" } }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1835,6 +1939,12 @@ "object-assign": "4.1.1" } }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1910,7 +2020,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -1941,6 +2051,12 @@ } } }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -2019,7 +2135,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -2056,6 +2172,12 @@ "regex-cache": "0.4.4" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2088,6 +2210,12 @@ } } }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -2150,6 +2278,15 @@ "wrappy": "1.0.2" } }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, "ora": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", @@ -2198,7 +2335,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -2229,6 +2366,12 @@ } } }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -2394,18 +2537,37 @@ } }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, "rxjs": { - "version": "5.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.7.tgz", - "integrity": "sha512-Hxo2ac8gRQjwjtKgukMIwBRbq5+KAeEV5hXM4obYBOAghev41bDQWgFH4svYiU9UnQ5kNww2LgfyBdevCd2HXA==", + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.8.tgz", + "integrity": "sha512-Bz7qou7VAIoGiglJZbzbXa4vpX5BmTTN2Dj/se6+SwADtw4SihqBIiEa7VmTXJ8pynvq0iFr5Gx9VLyye1rIxQ==", "dev": true, "requires": { "symbol-observable": "1.0.1" @@ -2486,6 +2648,16 @@ "any-observable": "0.2.0" } }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -2495,6 +2667,15 @@ "safe-buffer": "5.1.1" } }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -2516,6 +2697,21 @@ "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, "tsickle": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.2.tgz", @@ -2543,15 +2739,15 @@ "babel-code-frame": "6.26.0", "builtin-modules": "1.1.1", "chalk": "2.3.2", - "commander": "2.14.1", - "diff": "3.4.0", + "commander": "2.15.1", + "diff": "3.5.0", "glob": "7.1.2", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "minimatch": "3.0.4", - "resolve": "1.5.0", + "resolve": "1.6.0", "semver": "5.5.0", "tslib": "1.9.0", - "tsutils": "2.22.1" + "tsutils": "2.25.0" } }, "tslint-eslint-rules": { @@ -2583,9 +2779,9 @@ } }, "tsutils": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.1.tgz", - "integrity": "sha512-j4Nx7aeMPyIrKtDftSfDiTFBYW3o/41T3zAxm0C/9fSKT62jnfqOZooC9uKLr4rQF9QsZaVTVY6QY+vVnWSisw==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.25.0.tgz", + "integrity": "sha512-SPgUlOAUAe6fCyPi0QR4U0jRuDsHHKvzIR6/hHd0YR0bb8MzeLJgCagkPSmZeJjWImnpJ0xq6XHa9goTvMBBCQ==", "dev": true, "requires": { "tslib": "1.9.0" diff --git a/angular/package.json b/angular/package.json index e18cf43748..1db1421309 100644 --- a/angular/package.json +++ b/angular/package.json @@ -20,7 +20,7 @@ "url": "https://github.com/ionic-team/ionic.git" }, "scripts": { - "build": "npm run clean && npm run compile && npm run clean-generated && npm run ionic-core", + "build": "npm run clean && npm run ionic-core && npm run compile && npm run clean-generated", "build.link": "npm run build && node scripts/link-copy.js", "clean": "node scripts/clean.js", "clean-generated": "node ./scripts/clean-generated.js", diff --git a/angular/src/control-value-accessors/boolean-value-accessor.ts b/angular/src/directives/control-value-accessors/boolean-value-accessor.ts similarity index 100% rename from angular/src/control-value-accessors/boolean-value-accessor.ts rename to angular/src/directives/control-value-accessors/boolean-value-accessor.ts diff --git a/angular/src/control-value-accessors/numeric-value-accesssor.ts b/angular/src/directives/control-value-accessors/numeric-value-accesssor.ts similarity index 100% rename from angular/src/control-value-accessors/numeric-value-accesssor.ts rename to angular/src/directives/control-value-accessors/numeric-value-accesssor.ts diff --git a/angular/src/control-value-accessors/radio-value-accessor.ts b/angular/src/directives/control-value-accessors/radio-value-accessor.ts similarity index 100% rename from angular/src/control-value-accessors/radio-value-accessor.ts rename to angular/src/directives/control-value-accessors/radio-value-accessor.ts diff --git a/angular/src/control-value-accessors/select-value-accessor.ts b/angular/src/directives/control-value-accessors/select-value-accessor.ts similarity index 100% rename from angular/src/control-value-accessors/select-value-accessor.ts rename to angular/src/directives/control-value-accessors/select-value-accessor.ts diff --git a/angular/src/control-value-accessors/text-value-accessor.ts b/angular/src/directives/control-value-accessors/text-value-accessor.ts similarity index 100% rename from angular/src/control-value-accessors/text-value-accessor.ts rename to angular/src/directives/control-value-accessors/text-value-accessor.ts diff --git a/angular/src/control-value-accessors/util/set-ionic-classes.ts b/angular/src/directives/control-value-accessors/util/set-ionic-classes.ts similarity index 100% rename from angular/src/control-value-accessors/util/set-ionic-classes.ts rename to angular/src/directives/control-value-accessors/util/set-ionic-classes.ts diff --git a/angular/src/directives/index.ts b/angular/src/directives/index.ts new file mode 100644 index 0000000000..af2cdab04a --- /dev/null +++ b/angular/src/directives/index.ts @@ -0,0 +1,18 @@ + +export { BooleanValueAccessor } from './control-value-accessors/boolean-value-accessor'; +export { NumericValueAccessor } from './control-value-accessors/numeric-value-accesssor'; +export { RadioValueAccessor } from './control-value-accessors/radio-value-accessor'; +export { SelectValueAccessor } from './control-value-accessors/select-value-accessor'; +export { TextValueAccessor } from './control-value-accessors/text-value-accessor'; + +export { GoBack } from './navigation/go-back'; +export { IonBackButton } from './navigation/ion-back-button'; +export { NavDelegate } from './navigation/nav-delegate'; +export { TabDelegate } from './navigation/tab-delegate'; +export { IonRouterOutlet } from './navigation/ion-router-outlet'; + +export { Icon } from './icon'; +export { VirtualScroll } from './virtual-scroll/virtual-scroll'; +export { VirtualItem } from './virtual-scroll/virtual-item'; +export { VirtualHeader } from './virtual-scroll/virtual-header'; +export { VirtualFooter } from './virtual-scroll/virtual-footer'; diff --git a/angular/src/navigation/go-back.ts b/angular/src/directives/navigation/go-back.ts similarity index 79% rename from angular/src/navigation/go-back.ts rename to angular/src/directives/navigation/go-back.ts index 7cf98502fc..649b88fa75 100644 --- a/angular/src/navigation/go-back.ts +++ b/angular/src/directives/navigation/go-back.ts @@ -1,5 +1,5 @@ import { Directive, HostListener } from '@angular/core'; -import { NavController } from './ion-nav-controller'; +import { NavController } from '../../providers/nav-controller'; @Directive({ selector: '[goBack]', diff --git a/angular/src/navigation/ion-back-button.ts b/angular/src/directives/navigation/ion-back-button.ts similarity index 100% rename from angular/src/navigation/ion-back-button.ts rename to angular/src/directives/navigation/ion-back-button.ts diff --git a/angular/src/navigation/ion-router-outlet.ts b/angular/src/directives/navigation/ion-router-outlet.ts similarity index 97% rename from angular/src/navigation/ion-router-outlet.ts rename to angular/src/directives/navigation/ion-router-outlet.ts index 9a1eec9a9a..0f80e59a1e 100644 --- a/angular/src/navigation/ion-router-outlet.ts +++ b/angular/src/directives/navigation/ion-router-outlet.ts @@ -1,8 +1,8 @@ import { Attribute, ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, Optional, Output, ViewContainerRef } from '@angular/core'; import { ActivatedRoute, ChildrenOutletContexts, PRIMARY_OUTLET, Router } from '@angular/router'; import { StackController } from './router-controller'; -import { NavController } from './ion-nav-controller'; -import { bindLifecycleEvents } from '../providers/angular-delegate'; +import { NavController } from '../../providers/nav-controller'; +import { bindLifecycleEvents } from '../../providers/angular-delegate'; @Directive({ selector: 'ion-router-outlet', diff --git a/angular/src/directives/navigation/nav-delegate.ts b/angular/src/directives/navigation/nav-delegate.ts new file mode 100644 index 0000000000..e6130f29c9 --- /dev/null +++ b/angular/src/directives/navigation/nav-delegate.ts @@ -0,0 +1,16 @@ +import { ComponentFactoryResolver, Directive, ElementRef, Injector } from '@angular/core'; +import { AngularDelegate } from '../../providers/angular-delegate'; + +@Directive({ + selector: 'ion-nav', +}) +export class NavDelegate { + constructor( + ref: ElementRef, + cfr: ComponentFactoryResolver, + injector: Injector, + angularDelegate: AngularDelegate, + ) { + ref.nativeElement.delegate = angularDelegate.create(cfr, injector); + } +} diff --git a/angular/src/navigation/router-controller.ts b/angular/src/directives/navigation/router-controller.ts similarity index 98% rename from angular/src/navigation/router-controller.ts rename to angular/src/directives/navigation/router-controller.ts index 9001bd2f61..2ca90f536c 100644 --- a/angular/src/navigation/router-controller.ts +++ b/angular/src/directives/navigation/router-controller.ts @@ -1,8 +1,9 @@ import { ComponentRef } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { NavController } from './ion-nav-controller'; import { NavDirection } from '@ionic/core'; +import { NavController } from '../../providers/nav-controller'; + export class StackController { diff --git a/angular/src/navigation/router-transition.ts b/angular/src/directives/navigation/router-transition.ts similarity index 100% rename from angular/src/navigation/router-transition.ts rename to angular/src/directives/navigation/router-transition.ts diff --git a/angular/src/directives/navigation/tab-delegate.ts b/angular/src/directives/navigation/tab-delegate.ts new file mode 100644 index 0000000000..9995400b2c --- /dev/null +++ b/angular/src/directives/navigation/tab-delegate.ts @@ -0,0 +1,32 @@ +import { ComponentFactoryResolver, Directive, ElementRef, HostListener, Injector, Optional } from '@angular/core'; +import { Router } from '@angular/router'; +import { AngularDelegate } from '../../providers/angular-delegate'; + + +@Directive({ + selector: 'ion-tab' +}) +export class TabDelegate { + + constructor( + @Optional() private router: Router, + ref: ElementRef, + cfr: ComponentFactoryResolver, + injector: Injector, + angularDelegate: AngularDelegate, + ) { + ref.nativeElement.delegate = angularDelegate.create(cfr, injector); + } + + @HostListener('ionTabbarClick', ['$event']) + ionTabbarClick(ev: UIEvent) { + const tabElm: HTMLIonTabElement = ev.detail as any; + if (this.router && tabElm && tabElm.href) { + console.log('tabElm', tabElm.href); + + this.router.navigateByUrl(tabElm.href); + } + } + +} + diff --git a/angular/src/directives/proxies-list.txt b/angular/src/directives/proxies-list.txt new file mode 100644 index 0000000000..b455dc6b30 --- /dev/null +++ b/angular/src/directives/proxies-list.txt @@ -0,0 +1,79 @@ + +import * as d from './proxies'; + +export const DIRECTIVES = [ + d.App, + d.Avatar, + d.BackButton, + d.Badge, + d.Button, + d.Buttons, + d.Card, + d.CardContent, + d.CardHeader, + d.CardSubtitle, + d.CardTitle, + d.Checkbox, + d.Chip, + d.ChipButton, + d.Col, + d.Content, + d.Datetime, + d.Fab, + d.FabButton, + d.FabList, + d.Footer, + d.Grid, + d.Header, + d.HideWhen, + d.InfiniteScroll, + d.InfiniteScrollContent, + d.Input, + d.Item, + d.ItemDivider, + d.ItemGroup, + d.ItemOption, + d.ItemOptions, + d.ItemSliding, + d.Label, + d.List, + d.ListHeader, + d.Menu, + d.MenuButton, + d.MenuToggle, + d.NavControllerBase, + d.NavPop, + d.NavPush, + d.NavSetRoot, + d.Note, + d.Radio, + d.RadioGroup, + d.Range, + d.Refresher, + d.RefresherContent, + d.Reorder, + d.ReorderGroup, + d.RippleEffect, + d.Row, + d.Scroll, + d.Searchbar, + d.Segment, + d.SegmentButton, + d.Select, + d.SelectOption, + d.SelectPopover, + d.ShowWhen, + d.SkeletonText, + d.Slide, + d.Slides, + d.Spinner, + d.SplitPane, + d.Tab, + d.Tabs, + d.Text, + d.Textarea, + d.Thumbnail, + d.Toggle, + d.Toolbar, + d.ToolbarTitle +]; diff --git a/angular/src/directives/proxies.ts b/angular/src/directives/proxies.ts index 20e9c13f6a..715b788133 100644 --- a/angular/src/directives/proxies.ts +++ b/angular/src/directives/proxies.ts @@ -15,16 +15,7 @@ export function inputs(instance: any, el: ElementRef, props: string[]) { }); } -const accept = 'accept', activated = 'activated', allowEmptySelection = 'allowEmptySelection', animated = 'animated', autoBlockAll = 'autoBlockAll', autoHide = 'autoHide', autocapitalize = 'autocapitalize', autocomplete = 'autocomplete', autocorrect = 'autocorrect', autofocus = 'autofocus', base = 'base', button = 'button', buttonType = 'buttonType', cancelButtonText = 'cancelButtonText', cancelText = 'cancelText', checked = 'checked', clearInput = 'clearInput', clearOnEdit = 'clearOnEdit', closeDuration = 'closeDuration', color = 'color', cols = 'cols', component = 'component', contentId = 'contentId', debounce = 'debounce', defaultHref = 'defaultHref', detail = 'detail', direction = 'direction', disableScroll = 'disableScroll', disabled = 'disabled', displayFormat = 'displayFormat', doneText = 'doneText', dualKnobs = 'dualKnobs', duration = 'duration', edge = 'edge', expandable = 'expandable', fill = 'fill', fixed = 'fixed', floating = 'floating', forceOverscroll = 'forceOverscroll', from = 'from', fullscreen = 'fullscreen', gestureName = 'gestureName', gesturePriority = 'gesturePriority', goBack = 'goBack', highlight = 'highlight', href = 'href', icon = 'icon', inputmode = 'inputmode', interfaceOptions = 'interfaceOptions', ionBackdropTap = 'ionBackdropTap', ionBlur = 'ionBlur', ionCancel = 'ionCancel', ionChange = 'ionChange', ionClear = 'ionClear', ionClick = 'ionClick', ionClose = 'ionClose', ionDecrease = 'ionDecrease', ionDrag = 'ionDrag', ionFocus = 'ionFocus', ionGestureCaptured = 'ionGestureCaptured', ionGestureEnd = 'ionGestureEnd', ionGestureMove = 'ionGestureMove', ionGestureNotCaptured = 'ionGestureNotCaptured', ionGestureStart = 'ionGestureStart', ionIncrease = 'ionIncrease', ionInfinite = 'ionInfinite', ionInput = 'ionInput', ionInputDidLoad = 'ionInputDidLoad', ionInputDidUnload = 'ionInputDidUnload', ionMenuChange = 'ionMenuChange', ionOpen = 'ionOpen', ionPress = 'ionPress', ionPull = 'ionPull', ionRadioDidLoad = 'ionRadioDidLoad', ionRadioDidUnload = 'ionRadioDidUnload', ionRefresh = 'ionRefresh', ionRouteChanged = 'ionRouteChanged', ionRouteDataChanged = 'ionRouteDataChanged', ionRouteRedirectChanged = 'ionRouteRedirectChanged', ionScroll = 'ionScroll', ionScrollEnd = 'ionScrollEnd', ionScrollStart = 'ionScrollStart', ionSelect = 'ionSelect', ionSelectOptionDidLoad = 'ionSelectOptionDidLoad', ionSelectOptionDidUnload = 'ionSelectOptionDidUnload', ionSlideDidChange = 'ionSlideDidChange', ionSlideDrag = 'ionSlideDrag', ionSlideNextEnd = 'ionSlideNextEnd', ionSlideNextStart = 'ionSlideNextStart', ionSlidePrevEnd = 'ionSlidePrevEnd', ionSlidePrevStart = 'ionSlidePrevStart', ionSlideReachEnd = 'ionSlideReachEnd', ionSlideReachStart = 'ionSlideReachStart', ionSlideTouchEnd = 'ionSlideTouchEnd', ionSlideTouchStart = 'ionSlideTouchStart', ionSlideTransitionEnd = 'ionSlideTransitionEnd', ionSlideTransitionStart = 'ionSlideTransitionStart', ionSlideWillChange = 'ionSlideWillChange', ionSplitPaneVisible = 'ionSplitPaneVisible', ionStart = 'ionStart', ionStyle = 'ionStyle', ionSwipe = 'ionSwipe', ionTabButtonDidLoad = 'ionTabButtonDidLoad', ionTabButtonDidUnload = 'ionTabButtonDidUnload', ionTabbarClick = 'ionTabbarClick', knob = 'knob', labelId = 'labelId', layout = 'layout', loadingSpinner = 'loadingSpinner', loadingText = 'loadingText', max = 'max', maxAngle = 'maxAngle', maxEdgeStart = 'maxEdgeStart', maxlength = 'maxlength', mediaQuery = 'mediaQuery', menu = 'menu', menuId = 'menuId', message = 'message', min = 'min', minlength = 'minlength', mode = 'mode', multiple = 'multiple', name = 'name', okText = 'okText', options = 'options', or = 'or', orientation = 'orientation', pager = 'pager', passive = 'passive', pattern = 'pattern', paused = 'paused', persistent = 'persistent', pickerFormat = 'pickerFormat', pin = 'pin', placeholder = 'placeholder', placement = 'placement', platform = 'platform', position = 'position', pressed = 'pressed', pullMax = 'pullMax', pullMin = 'pullMin', pullingIcon = 'pullingIcon', pullingText = 'pullingText', ratio = 'ratio', readonly = 'readonly', refreshingSpinner = 'refreshingSpinner', refreshingText = 'refreshingText', required = 'required', results = 'results', round = 'round', rows = 'rows', scrollEnabled = 'scrollEnabled', scrollEvents = 'scrollEvents', scrollable = 'scrollable', selected = 'selected', selectedText = 'selectedText', show = 'show', showCancelButton = 'showCancelButton', size = 'size', snapbackDuration = 'snapbackDuration', snaps = 'snaps', spellcheck = 'spellcheck', stacked = 'stacked', step = 'step', stopPropagation = 'stopPropagation', strong = 'strong', subTitle = 'subTitle', swipeEnabled = 'swipeEnabled', tappable = 'tappable', threshold = 'threshold', title = 'title', translucent = 'translucent', type = 'type', url = 'url', useHash = 'useHash', useTapClick = 'useTapClick', val = 'val', value = 'value', visible = 'visible', width = 'width', wrap = 'wrap'; - -@NgDirective({ selector: 'ion-anchor' }) -export class Anchor { - @NgInput() href: string; - @NgInput() goBack: boolean; - constructor(el: ElementRef) { - inputs(this, el, [href, goBack]); - } -} +const accept = 'accept', activated = 'activated', active = 'active', allowEmptySelection = 'allowEmptySelection', animated = 'animated', autoHide = 'autoHide', autocapitalize = 'autocapitalize', autocomplete = 'autocomplete', autocorrect = 'autocorrect', autofocus = 'autofocus', btnId = 'btnId', button = 'button', buttonType = 'buttonType', cancelButtonText = 'cancelButtonText', cancelText = 'cancelText', checked = 'checked', clearInput = 'clearInput', clearOnEdit = 'clearOnEdit', closeDuration = 'closeDuration', color = 'color', cols = 'cols', contentId = 'contentId', debounce = 'debounce', defaultHref = 'defaultHref', detail = 'detail', disabled = 'disabled', displayFormat = 'displayFormat', doneText = 'doneText', dualKnobs = 'dualKnobs', duration = 'duration', edge = 'edge', expandable = 'expandable', fill = 'fill', fixed = 'fixed', floating = 'floating', forceOverscroll = 'forceOverscroll', fullscreen = 'fullscreen', goBack = 'goBack', href = 'href', icon = 'icon', inputmode = 'inputmode', interfaceOptions = 'interfaceOptions', ionBlur = 'ionBlur', ionCancel = 'ionCancel', ionChange = 'ionChange', ionClear = 'ionClear', ionClick = 'ionClick', ionClose = 'ionClose', ionDrag = 'ionDrag', ionFocus = 'ionFocus', ionInfinite = 'ionInfinite', ionInput = 'ionInput', ionInputDidLoad = 'ionInputDidLoad', ionInputDidUnload = 'ionInputDidUnload', ionMenuChange = 'ionMenuChange', ionNavChanged = 'ionNavChanged', ionOpen = 'ionOpen', ionPull = 'ionPull', ionRadioDidLoad = 'ionRadioDidLoad', ionRadioDidUnload = 'ionRadioDidUnload', ionRefresh = 'ionRefresh', ionScroll = 'ionScroll', ionScrollEnd = 'ionScrollEnd', ionScrollStart = 'ionScrollStart', ionSelect = 'ionSelect', ionSelectOptionDidLoad = 'ionSelectOptionDidLoad', ionSelectOptionDidUnload = 'ionSelectOptionDidUnload', ionSlideDidChange = 'ionSlideDidChange', ionSlideDrag = 'ionSlideDrag', ionSlideNextEnd = 'ionSlideNextEnd', ionSlideNextStart = 'ionSlideNextStart', ionSlidePrevEnd = 'ionSlidePrevEnd', ionSlidePrevStart = 'ionSlidePrevStart', ionSlideReachEnd = 'ionSlideReachEnd', ionSlideReachStart = 'ionSlideReachStart', ionSlideTouchEnd = 'ionSlideTouchEnd', ionSlideTouchStart = 'ionSlideTouchStart', ionSlideTransitionEnd = 'ionSlideTransitionEnd', ionSlideTransitionStart = 'ionSlideTransitionStart', ionSlideWillChange = 'ionSlideWillChange', ionSplitPaneVisible = 'ionSplitPaneVisible', ionStart = 'ionStart', ionStyle = 'ionStyle', ionSwipe = 'ionSwipe', loadingSpinner = 'loadingSpinner', loadingText = 'loadingText', max = 'max', maxEdgeStart = 'maxEdgeStart', maxlength = 'maxlength', mediaQuery = 'mediaQuery', menu = 'menu', menuId = 'menuId', message = 'message', min = 'min', minlength = 'minlength', mode = 'mode', multiple = 'multiple', name = 'name', okText = 'okText', options = 'options', or = 'or', orientation = 'orientation', pager = 'pager', pattern = 'pattern', paused = 'paused', persistent = 'persistent', pickerFormat = 'pickerFormat', pin = 'pin', placeholder = 'placeholder', platform = 'platform', position = 'position', pullMax = 'pullMax', pullMin = 'pullMin', pullingIcon = 'pullingIcon', pullingText = 'pullingText', readonly = 'readonly', refreshingSpinner = 'refreshingSpinner', refreshingText = 'refreshingText', required = 'required', results = 'results', round = 'round', rows = 'rows', scrollEnabled = 'scrollEnabled', scrollEvents = 'scrollEvents', scrollable = 'scrollable', selected = 'selected', selectedText = 'selectedText', show = 'show', showCancelButton = 'showCancelButton', size = 'size', snapbackDuration = 'snapbackDuration', snaps = 'snaps', spellcheck = 'spellcheck', stacked = 'stacked', step = 'step', strong = 'strong', subTitle = 'subTitle', swipeBackEnabled = 'swipeBackEnabled', swipeEnabled = 'swipeEnabled', tabBadge = 'tabBadge', tabBadgeStyle = 'tabBadgeStyle', tabIcon = 'tabIcon', tabTitle = 'tabTitle', tabbarHidden = 'tabbarHidden', tabbarHighlight = 'tabbarHighlight', tabbarLayout = 'tabbarLayout', tabbarPlacement = 'tabbarPlacement', tabsHideOnSubPages = 'tabsHideOnSubPages', threshold = 'threshold', title = 'title', translucent = 'translucent', type = 'type', url = 'url', useTapClick = 'useTapClick', value = 'value', width = 'width', wrap = 'wrap'; @NgDirective({ selector: 'ion-app' }) export class App { @@ -43,18 +34,6 @@ export class BackButton { } } -@NgDirective({ selector: 'ion-backdrop' }) -export class Backdrop { - @NgInput() visible: boolean; - @NgInput() tappable: boolean; - @NgInput() stopPropagation: boolean; - @NgOutput() ionBackdropTap: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [visible, tappable, stopPropagation]); - outputs(this, [ionBackdropTap]); - } -} - @NgDirective({ selector: 'ion-badge' }) export class Badge { /** @@ -255,10 +234,6 @@ export class Content { } } -@NgDirective({ selector: 'ion-cordova-platform' }) -export class CordovaPlatform { -} - @NgDirective({ selector: 'ion-datetime' }) export class Datetime { /** @@ -366,37 +341,6 @@ export class Footer { } } -@NgDirective({ selector: 'ion-gesture' }) -export class Gesture { - @NgInput() disabled: boolean; - @NgInput() autoBlockAll: boolean; - @NgInput() disableScroll: boolean; - @NgInput() direction: string; - @NgInput() gestureName: string; - @NgInput() gesturePriority: number; - @NgInput() passive: boolean; - @NgInput() maxAngle: number; - @NgInput() threshold: number; - @NgInput() type: string; - @NgOutput() ionGestureMove: NgEventEmitter; - @NgOutput() ionGestureStart: NgEventEmitter; - @NgOutput() ionGestureEnd: NgEventEmitter; - @NgOutput() ionGestureNotCaptured: NgEventEmitter; - @NgOutput() ionPress: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [disabled, autoBlockAll, disableScroll, direction, gestureName, gesturePriority, passive, maxAngle, threshold, type]); - outputs(this, [ionGestureMove, ionGestureStart, ionGestureEnd, ionGestureNotCaptured, ionPress]); - } -} - -@NgDirective({ selector: 'ion-gesture-controller' }) -export class GestureController { - @NgOutput() ionGestureCaptured: NgEventEmitter; - constructor() { - outputs(this, [ionGestureCaptured]); - } -} - @NgDirective({ selector: 'ion-grid' }) export class Grid { } @@ -771,6 +715,17 @@ export class MenuToggle { } } +@NgDirective({ selector: 'ion-nav' }) +export class NavControllerBase { + @NgInput() swipeBackEnabled: boolean; + @NgInput() animated: boolean; + @NgOutput() ionNavChanged: NgEventEmitter; + constructor(el: ElementRef) { + inputs(this, el, [swipeBackEnabled, animated]); + outputs(this, [ionNavChanged]); + } +} + @NgDirective({ selector: 'ion-nav-pop' }) export class NavPop { } @@ -907,25 +862,6 @@ export class Range { } } -@NgDirective({ selector: 'ion-range-knob' }) -export class RangeKnob { - @NgInput() pressed: boolean; - @NgInput() pin: boolean; - @NgInput() min: number; - @NgInput() max: number; - @NgInput() val: number; - @NgInput() disabled: boolean; - @NgInput() labelId: string; - @NgInput() knob: string; - @NgInput() ratio: number; - @NgOutput() ionIncrease: NgEventEmitter; - @NgOutput() ionDecrease: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [pressed, pin, min, max, val, disabled, labelId, knob, ratio]); - outputs(this, [ionIncrease, ionDecrease]); - } -} - @NgDirective({ selector: 'ion-refresher' }) export class Refresher { /** @@ -1003,55 +939,6 @@ export class RippleEffect { } } -@NgDirective({ selector: 'ion-route' }) -export class Route { - /** - * Relative path that needs to match in order for this route to apply. - */ - @NgInput() url: string; - /** - * Name of the component to load/select in the navigation outlet (`ion-tabs`, `ion-nav`) when the route matches. The value of this property is not always the tagname of the component to load, in ion-tabs it actually refers to the name of the `ion-tab` to select. - */ - @NgInput() component: string; - @NgOutput() ionRouteDataChanged: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [url, component]); - outputs(this, [ionRouteDataChanged]); - } -} - -@NgDirective({ selector: 'ion-route-redirect' }) -export class RouteRedirect { - /** - * A redirect route, redirects "from" a URL "to" another URL. This property is that "from" URL. It needs to be an exact match of the navigated URL in order to apply. The path specified in this value is always an absolute path, even if the initial `/` slash is not specified. - */ - @NgInput() from: string; - @NgOutput() ionRouteRedirectChanged: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [from]); - outputs(this, [ionRouteRedirectChanged]); - } -} - -@NgDirective({ selector: 'ion-router' }) -export class Router { - @NgInput() base: string; - @NgInput() useHash: boolean; - @NgOutput() ionRouteChanged: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [base, useHash]); - outputs(this, [ionRouteChanged]); - } -} - -@NgDirective({ selector: 'ion-router-outlet' }) -export class RouterOutlet { - @NgInput() animated: boolean; - constructor(el: ElementRef) { - inputs(this, el, [animated]); - } -} - @NgDirective({ selector: 'ion-row' }) export class Row { } @@ -1343,45 +1230,96 @@ export class SplitPane { } } -@NgDirective({ selector: 'ion-status-tap' }) -export class StatusTap { - @NgInput() duration: number; - constructor(el: ElementRef) { - inputs(this, el, [duration]); - } -} - -@NgDirective({ selector: 'ion-tab-button' }) -export class TabButton { - @NgInput() selected: boolean; - @NgOutput() ionTabbarClick: NgEventEmitter; - @NgOutput() ionTabButtonDidLoad: NgEventEmitter; - @NgOutput() ionTabButtonDidUnload: NgEventEmitter; - constructor(el: ElementRef) { - inputs(this, el, [selected]); - outputs(this, [ionTabbarClick, ionTabButtonDidLoad, ionTabButtonDidUnload]); - } -} - -@NgDirective({ selector: 'ion-tabbar' }) -export class Tabbar { - @NgInput() placement: string; - @NgInput() scrollable: boolean; - @NgInput() layout: string; - @NgInput() highlight: boolean; +@NgDirective({ selector: 'ion-tab' }) +export class Tab { + @NgInput() active: boolean; + @NgInput() btnId: string; /** - * If true, the tabbar will be translucent. Defaults to `false`. + * The title of the tab. + */ + @NgInput() tabTitle: string; + /** + * The URL which will be used as the `href` within this tab's `` anchor. + */ + @NgInput() href: string; + /** + * The icon for the tab. + */ + @NgInput() tabIcon: string; + /** + * The badge for the tab. + */ + @NgInput() tabBadge: string; + /** + * The badge color for the tab button. + */ + @NgInput() tabBadgeStyle: string; + /** + * The name of the tab. + */ + @NgInput() name: string; + /** + * If true, the user cannot interact with the tab. Defaults to `false`. + */ + @NgInput() disabled: boolean; + /** + * If true, the tab will be selected. Defaults to `false`. + */ + @NgInput() selected: boolean; + /** + * If true, the tab button is visible within the tabbar. Defaults to `true`. + */ + @NgInput() show: boolean; + /** + * If true, hide the tabs on child pages. + */ + @NgInput() tabsHideOnSubPages: boolean; + @NgOutput() ionSelect: NgEventEmitter; + constructor(el: ElementRef) { + inputs(this, el, [active, btnId, tabTitle, href, tabIcon, tabBadge, tabBadgeStyle, name, disabled, selected, show, tabsHideOnSubPages]); + outputs(this, [ionSelect]); + } +} + +@NgDirective({ selector: 'ion-tabs' }) +export class Tabs { + /** + * The color to use from your Sass `$colors` map. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information, see [Theming your App](/docs/theming/theming-your-app). + */ + @NgInput() color: string; + /** + * A unique name for the tabs + */ + @NgInput() name: string; + /** + * If true, the tabbar + */ + @NgInput() tabbarHidden: boolean; + /** + * Set the tabbar layout: `icon-top`, `icon-start`, `icon-end`, `icon-bottom`, `icon-hide`, `title-hide`. + */ + @NgInput() tabbarLayout: string; + /** + * Set position of the tabbar: `top`, `bottom`. + */ + @NgInput() tabbarPlacement: string; + /** + * If true, show the tab highlight bar under the selected tab. + */ + @NgInput() tabbarHighlight: boolean; + /** + * If true, the tabs will be translucent. Note: In order to scroll content behind the tabs, the `fullscreen` attribute needs to be set on the content. Defaults to `false`. */ @NgInput() translucent: boolean; + @NgInput() scrollable: boolean; + @NgOutput() ionChange: NgEventEmitter; + @NgOutput() ionNavChanged: NgEventEmitter; constructor(el: ElementRef) { - inputs(this, el, [placement, scrollable, layout, highlight, translucent]); + inputs(this, el, [color, name, tabbarHidden, tabbarLayout, tabbarPlacement, tabbarHighlight, translucent, scrollable]); + outputs(this, [ionChange, ionNavChanged]); } } -@NgDirective({ selector: 'ion-tap-click' }) -export class TapClick { -} - @NgDirective({ selector: 'ion-text' }) export class Text { /** diff --git a/angular/src/directives/virtual-footer.ts b/angular/src/directives/virtual-scroll/virtual-footer.ts similarity index 100% rename from angular/src/directives/virtual-footer.ts rename to angular/src/directives/virtual-scroll/virtual-footer.ts diff --git a/angular/src/directives/virtual-header.ts b/angular/src/directives/virtual-scroll/virtual-header.ts similarity index 100% rename from angular/src/directives/virtual-header.ts rename to angular/src/directives/virtual-scroll/virtual-header.ts diff --git a/angular/src/directives/virtual-item.ts b/angular/src/directives/virtual-scroll/virtual-item.ts similarity index 100% rename from angular/src/directives/virtual-item.ts rename to angular/src/directives/virtual-scroll/virtual-item.ts diff --git a/angular/src/directives/virtual-scroll.ts b/angular/src/directives/virtual-scroll/virtual-scroll.ts similarity index 100% rename from angular/src/directives/virtual-scroll.ts rename to angular/src/directives/virtual-scroll/virtual-scroll.ts diff --git a/angular/src/directives/virtual-utils.ts b/angular/src/directives/virtual-scroll/virtual-utils.ts similarity index 100% rename from angular/src/directives/virtual-utils.ts rename to angular/src/directives/virtual-scroll/virtual-utils.ts diff --git a/angular/src/index.ts b/angular/src/index.ts index b5d291b99e..e8ab96999b 100644 --- a/angular/src/index.ts +++ b/angular/src/index.ts @@ -1,123 +1,16 @@ +// export module export { IonicModule } from './module'; -// providers -export { AngularDelegate } from './providers/angular-delegate'; -export { ActionSheetController } from './providers/action-sheet-controller'; -export { AlertController } from './providers/alert-controller'; -export { Events } from './providers/events'; -export { LoadingController } from './providers/loading-controller'; -export { MenuController } from './providers/menu-controller'; -export { PickerController } from './providers/picker-controller'; -export { ModalController } from './providers/modal-controller'; -export { Platform } from './providers/platform'; -export { PopoverController } from './providers/popover-controller'; -export { ToastController } from './providers/toast-controller'; +// export auto generated directive +export * from './directives/proxies'; -// navigation -export { GoBack } from './navigation/go-back'; -export { IonBackButton } from './navigation/ion-back-button'; -export { NavController } from './navigation/ion-nav-controller'; -export { Nav } from './navigation/ion-nav'; -export { IonRouterOutlet } from './navigation/ion-router-outlet'; -export { Tab } from './navigation/ion-tab'; -export { Tabs } from './navigation/ion-tabs'; +// export custom directives +export * from './directives'; -// directives -export { Icon } from './directives/icon'; -export { VirtualScroll } from './directives/virtual-scroll'; -export { VirtualItem } from './directives/virtual-item'; -export { VirtualHeader } from './directives/virtual-header'; -export { VirtualFooter } from './directives/virtual-footer'; - -// directive proxies -export { - Anchor, - App, - Avatar, - BackButton, - Backdrop, - Badge, - Button, - Buttons, - Card, - CardContent, - CardHeader, - CardSubtitle, - CardTitle, - Checkbox, - Chip, - ChipButton, - Col, - Content, - CordovaPlatform, - Datetime, - Fab, - FabButton, - FabList, - Footer, - Gesture, - GestureController, - Grid, - Header, - HideWhen, - InfiniteScroll, - InfiniteScrollContent, - Input, - Item, - ItemDivider, - ItemGroup, - ItemOption, - ItemOptions, - ItemSliding, - Label, - List, - ListHeader, - Menu, - MenuButton, - MenuToggle, - NavPop, - NavPush, - NavSetRoot, - Note, - Radio, - RadioGroup, - Range, - RangeKnob, - Refresher, - RefresherContent, - Reorder, - ReorderGroup, - RippleEffect, - Route, - RouteRedirect, - Router, - RouterOutlet, - Row, - Scroll, - Searchbar, - Segment, - SegmentButton, - Select, - SelectOption, - SelectPopover, - ShowWhen, - SkeletonText, - Slide, - Slides, - Spinner, - SplitPane, - StatusTap, - TabButton, - Tabbar, - TapClick, - Text, - Textarea, - Thumbnail, - Toggle, - Toolbar, - ToolbarTitle -} from './directives/proxies'; +// export custom providers +export * from './providers'; +// ionic types export * from './types/interfaces'; /*tslint:disable*/ diff --git a/angular/src/module.ts b/angular/src/module.ts index 3c6697cd5a..d7b7daec77 100644 --- a/angular/src/module.ts +++ b/angular/src/module.ts @@ -1,355 +1,131 @@ -import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core'; +import { ModuleWithProviders, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -// inputs -import { BooleanValueAccessor } from './control-value-accessors/boolean-value-accessor'; -import { NumericValueAccessor } from './control-value-accessors/numeric-value-accesssor'; -import { RadioValueAccessor } from './control-value-accessors/radio-value-accessor'; -import { SelectValueAccessor } from './control-value-accessors/select-value-accessor'; -import { TextValueAccessor } from './control-value-accessors/text-value-accessor'; +import * as c from './directives'; +import * as d from './directives/proxies'; +import * as p from './providers'; -// navigation -import { GoBack } from './navigation/go-back'; -import { IonBackButton } from './navigation/ion-back-button'; -import { NavController } from './navigation/ion-nav-controller'; -import { Nav } from './navigation/ion-nav'; -import { Tab } from './navigation/ion-tab'; -import { Tabs } from './navigation/ion-tabs'; -// router -import { IonRouterOutlet } from './navigation/ion-router-outlet'; +const DECLARATIONS = [ + // proxies + d.App, + d.Avatar, + d.BackButton, + d.Badge, + d.Button, + d.Buttons, + d.Card, + d.CardContent, + d.CardHeader, + d.CardSubtitle, + d.CardTitle, + d.Checkbox, + d.Chip, + d.ChipButton, + d.Col, + d.Content, + d.Datetime, + d.Fab, + d.FabButton, + d.FabList, + d.Footer, + d.Grid, + d.Header, + d.HideWhen, + d.InfiniteScroll, + d.InfiniteScrollContent, + d.Input, + d.Item, + d.ItemDivider, + d.ItemGroup, + d.ItemOption, + d.ItemOptions, + d.ItemSliding, + d.Label, + d.List, + d.ListHeader, + d.Menu, + d.MenuButton, + d.MenuToggle, + d.NavControllerBase, + d.NavPop, + d.NavPush, + d.NavSetRoot, + d.Note, + d.Radio, + d.RadioGroup, + d.Range, + d.Refresher, + d.RefresherContent, + d.Reorder, + d.ReorderGroup, + d.RippleEffect, + d.Row, + d.Scroll, + d.Searchbar, + d.Segment, + d.SegmentButton, + d.Select, + d.SelectOption, + d.SelectPopover, + d.ShowWhen, + d.SkeletonText, + d.Slide, + d.Slides, + d.Spinner, + d.SplitPane, + d.Tab, + d.Tabs, + d.Text, + d.Textarea, + d.Thumbnail, + d.Toggle, + d.Toolbar, + d.ToolbarTitle, -// providers -import { AngularDelegate } from './providers/angular-delegate'; -import { ActionSheetController } from './providers/action-sheet-controller'; -import { AlertController } from './providers/alert-controller'; -import { Events, setupProvideEvents } from './providers/events'; -import { LoadingController } from './providers/loading-controller'; -import { MenuController } from './providers/menu-controller'; -import { ModalController } from './providers/modal-controller'; -import { PickerController } from './providers/picker-controller'; -import { Platform } from './providers/platform'; -import { PopoverController } from './providers/popover-controller'; -import { ToastController } from './providers/toast-controller'; + // custom proxy + c.Icon, -// directives -import { Icon } from './directives/icon'; -import { VirtualScroll } from './directives/virtual-scroll'; -import { VirtualItem } from './directives/virtual-item'; -import { VirtualHeader } from './directives/virtual-header'; -import { VirtualFooter } from './directives/virtual-footer'; + // ngModel accessors + c.BooleanValueAccessor, + c.NumericValueAccessor, + c.RadioValueAccessor, + c.SelectValueAccessor, + c.TextValueAccessor, -// directive proxies -import { - Anchor, - App, - Avatar, - BackButton, - Backdrop, - Badge, - Button, - Buttons, - Card, - CardContent, - CardHeader, - CardSubtitle, - CardTitle, - Checkbox, - Chip, - ChipButton, - Col, - Content, - CordovaPlatform, - Datetime, - Fab, - FabButton, - FabList, - Footer, - Gesture, - GestureController, - Grid, - Header, - HideWhen, - InfiniteScroll, - InfiniteScrollContent, - Input, - Item, - ItemDivider, - ItemGroup, - ItemOption, - ItemOptions, - ItemSliding, - Label, - List, - ListHeader, - Menu, - MenuButton, - MenuToggle, - NavPop, - NavPush, - NavSetRoot, - Note, - Radio, - RadioGroup, - Range, - RangeKnob, - Refresher, - RefresherContent, - Reorder, - ReorderGroup, - RippleEffect, - Route, - RouteRedirect, - Router, - RouterOutlet, - Row, - Scroll, - Searchbar, - Segment, - SegmentButton, - Select, - SelectOption, - SelectPopover, - ShowWhen, - SkeletonText, - Slide, - Slides, - Spinner, - SplitPane, - StatusTap, - TabButton, - Tabbar, - TapClick, - Text, - Textarea, - Thumbnail, - Toggle, - Toolbar, - ToolbarTitle, -} from './directives/proxies'; + // navigation + c.GoBack, + c.IonBackButton, + c.IonRouterOutlet, + c.NavDelegate, + c.TabDelegate, + // virtual scroll + c.VirtualFooter, + c.VirtualHeader, + c.VirtualItem, + c.VirtualScroll, +]; + +const PROVIDERS = [ + p.ActionSheetController, + p.AlertController, + p.LoadingController, + p.ModalController, + p.PickerController, + p.PopoverController, + p.ToastController, + p.MenuController, + p.NavController, + p.Platform, + p.Events, +]; @NgModule({ - declarations: [ - Anchor, - App, - Avatar, - BackButton, - Backdrop, - Badge, - Button, - Buttons, - Card, - CardContent, - CardHeader, - CardSubtitle, - CardTitle, - Checkbox, - Chip, - ChipButton, - Col, - Content, - CordovaPlatform, - Datetime, - Fab, - FabButton, - FabList, - Footer, - Gesture, - GestureController, - Grid, - Header, - HideWhen, - Icon, - InfiniteScroll, - InfiniteScrollContent, - Input, - Item, - ItemDivider, - ItemGroup, - ItemOption, - ItemOptions, - ItemSliding, - Label, - List, - ListHeader, - Menu, - MenuButton, - MenuToggle, - NavPop, - NavPush, - NavSetRoot, - Note, - Radio, - RadioGroup, - Range, - RangeKnob, - Refresher, - RefresherContent, - Reorder, - ReorderGroup, - RippleEffect, - Route, - RouteRedirect, - Router, - RouterOutlet, - Row, - Scroll, - Searchbar, - Segment, - SegmentButton, - Select, - SelectOption, - SelectPopover, - ShowWhen, - SkeletonText, - Slide, - Slides, - Spinner, - SplitPane, - StatusTap, - TabButton, - Tabbar, - TapClick, - Text, - Textarea, - Thumbnail, - Toggle, - Toolbar, - ToolbarTitle, - - // navigation - Nav, - Tab, - Tabs, - GoBack, - IonBackButton, - - // router - IonRouterOutlet, - - // inputs - BooleanValueAccessor, - NumericValueAccessor, - RadioValueAccessor, - SelectValueAccessor, - TextValueAccessor, - - // directives - VirtualScroll, - VirtualItem, - VirtualHeader, - VirtualFooter, - ], - exports: [ - Anchor, - App, - Avatar, - BackButton, - Backdrop, - Badge, - Button, - Buttons, - Card, - CardContent, - CardHeader, - CardSubtitle, - CardTitle, - Checkbox, - Chip, - ChipButton, - Col, - Content, - CordovaPlatform, - Datetime, - Fab, - FabButton, - FabList, - Footer, - Gesture, - GestureController, - Grid, - Header, - HideWhen, - Icon, - InfiniteScroll, - InfiniteScrollContent, - Input, - Item, - ItemDivider, - ItemGroup, - ItemOption, - ItemOptions, - ItemSliding, - Label, - List, - ListHeader, - Menu, - MenuButton, - MenuToggle, - NavPop, - NavPush, - NavSetRoot, - Note, - Radio, - RadioGroup, - Range, - RangeKnob, - Refresher, - RefresherContent, - Reorder, - ReorderGroup, - RippleEffect, - Route, - RouteRedirect, - Router, - RouterOutlet, - Row, - Scroll, - Searchbar, - Segment, - SegmentButton, - Select, - SelectOption, - SelectPopover, - ShowWhen, - SkeletonText, - Slide, - Slides, - Spinner, - SplitPane, - StatusTap, - TabButton, - Tabbar, - TapClick, - Text, - Textarea, - Thumbnail, - Toggle, - Toolbar, - ToolbarTitle, - - BooleanValueAccessor, - Nav, - IonRouterOutlet, - GoBack, - IonBackButton, - Tab, - Tabs, - NumericValueAccessor, - RadioValueAccessor, - SelectValueAccessor, - TextValueAccessor, - - VirtualScroll, - VirtualItem, - VirtualHeader, - VirtualFooter - ], + declarations: DECLARATIONS, + exports: DECLARATIONS, providers: [ - AngularDelegate, - ModalController, - PopoverController, + p.AngularDelegate ], imports: [ CommonModule, @@ -360,17 +136,7 @@ export class IonicModule { return { ngModule: IonicModule, providers: [ - NavController, - AlertController, - ActionSheetController, - Events, - LoadingController, - PickerController, - MenuController, - Platform, - ToastController, - - { provide: APP_INITIALIZER, useFactory: setupProvideEvents, multi: true }, + ...PROVIDERS, ] }; } diff --git a/angular/src/navigation/ion-nav.ts b/angular/src/navigation/ion-nav.ts deleted file mode 100644 index faacf0b6b7..0000000000 --- a/angular/src/navigation/ion-nav.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { ComponentFactoryResolver, Directive, ElementRef, Injector, Input} from '@angular/core'; - -import { AngularDelegate } from '../providers/angular-delegate'; -import { ComponentProps, NavOptions, TransitionDoneFn, ViewController } from '@ionic/core'; -import { proxyEl } from '../util/util'; -import { inputs } from '../directives/proxies'; - - -@Directive({ - selector: 'ion-nav', -}) -export class Nav { - - @Input() root: any; - @Input() rootParams: any; - - constructor( - private ref: ElementRef, - cfr: ComponentFactoryResolver, - injector: Injector, - angularDelegate: AngularDelegate, - ) { - this.ref.nativeElement.delegate = angularDelegate.create(cfr, injector); - inputs(this, ref, ['root', 'rootParams']); - } - - push(page: any, params?: ComponentProps, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'push', page, params, opts, done); - } - - insert(insertIndex: number, page: any, params?: ComponentProps, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'insert', insertIndex, page, params, opts, done); - } - - insertPages(insertIndex: number, insertPages: any[], opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'insertPages', insertIndex, insertPages, opts, done); - } - - pop(opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'pop', opts, done); - } - - popTo(indexOrViewCtrl: any, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'popTo', indexOrViewCtrl, opts, done); - } - - popToRoot(opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'popToRoot', opts, done); - } - - popAll(): Promise { - return proxyEl(this.ref, 'popAll'); - } - - removeIndex(startIndex: number, removeCount = 1, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'removeIndex', startIndex, removeCount, opts, done); - } - - removeView(viewController: ViewController, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'removeView', viewController, opts, done); - } - - setRoot(pageOrViewCtrl: any, params?: any, opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'setRoot', pageOrViewCtrl, params, opts, done); - } - - setPages(pages: any[], opts?: NavOptions, done?: TransitionDoneFn): Promise { - return proxyEl(this.ref, 'setPages', pages, opts, done); - } - - getAllChildNavs(): any[] { - return proxyEl(this.ref, 'getAllChildNavs'); - } - - canGoBack(view?: ViewController): boolean { - return proxyEl(this.ref, 'canGoBack', view); - } - - getActive(): ViewController { - return proxyEl(this.ref, 'getActive'); - } - - getByIndex(index: number): ViewController { - return proxyEl(this.ref, 'getByIndex', index); - } - - getPrevious(view?: ViewController): ViewController|undefined { - return proxyEl(this.ref, 'getPrevious', view); - } - - getViews(): Array { - return proxyEl(this.ref, 'getViews'); - } - /** - * Return a view controller - */ - getViewById(id: string): ViewController|undefined { - return proxyEl(this.ref, 'getViewById', id); - } - - indexOf(viewController: ViewController) { - return proxyEl(this.ref, 'indexOf', viewController); - } - - length() { - return proxyEl(this.ref, 'length'); - } -} diff --git a/angular/src/navigation/ion-tab.ts b/angular/src/navigation/ion-tab.ts deleted file mode 100644 index 503d8d77dd..0000000000 --- a/angular/src/navigation/ion-tab.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Directive, ElementRef, Input, OnInit } from '@angular/core'; - - -@Directive({ - selector: 'ion-tab' -}) -export class Tab implements OnInit { - - @Input() tabLink: string; - - constructor(private elementRef: ElementRef) {} - - ngOnInit() { - console.log('routerLink', this.tabLink, this.elementRef.nativeElement); - } - -} diff --git a/angular/src/navigation/ion-tabs.ts b/angular/src/navigation/ion-tabs.ts deleted file mode 100644 index c0b96d43b6..0000000000 --- a/angular/src/navigation/ion-tabs.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Directive, HostListener } from '@angular/core'; -import { Router } from '@angular/router'; - - -@Directive({ - selector: 'ion-tabs' -}) -export class Tabs { - - constructor(private router: Router) {} - - @HostListener('ionTabbarClick', ['$event']) - ionTabbarClick(ev: UIEvent) { - const tabElm: HTMLIonTabElement = ev.detail as any; - if (tabElm && tabElm.href) { - console.log('tabElm', tabElm.href); - - this.router.navigateByUrl(tabElm.href); - } - } - -} - diff --git a/angular/src/providers/index.ts b/angular/src/providers/index.ts new file mode 100644 index 0000000000..7592f9a60b --- /dev/null +++ b/angular/src/providers/index.ts @@ -0,0 +1,13 @@ + +export { AngularDelegate } from './angular-delegate'; +export { ActionSheetController } from './action-sheet-controller'; +export { AlertController } from './alert-controller'; +export { Events } from './events'; +export { LoadingController } from './loading-controller'; +export { MenuController } from './menu-controller'; +export { PickerController } from './picker-controller'; +export { ModalController } from './modal-controller'; +export { Platform } from './platform'; +export { PopoverController } from './popover-controller'; +export { ToastController } from './toast-controller'; +export { NavController } from './nav-controller'; diff --git a/angular/src/navigation/ion-nav-controller.ts b/angular/src/providers/nav-controller.ts similarity index 100% rename from angular/src/navigation/ion-nav-controller.ts rename to angular/src/providers/nav-controller.ts diff --git a/angular/stencil.config.js b/angular/stencil.config.js index c1da692674..4f2065f943 100644 --- a/angular/stencil.config.js +++ b/angular/stencil.config.js @@ -12,31 +12,52 @@ exports.config.outputTargets = [ { type: 'angular', directivesProxyFile: 'src/directives/proxies.ts', + directivesArrayFile: 'src/directives/proxies-list.txt', empty: false, excludeComponents: [ + // overlays 'ion-action-sheet', 'ion-action-sheet-controller', 'ion-alert', 'ion-alert-controller', - 'ion-animation-controller', - 'ion-input-shims', 'ion-loading', 'ion-loading-controller', - 'ion-platform', - 'ion-menu-controller', 'ion-modal', 'ion-modal-controller', - 'ion-nav', 'ion-picker', - 'ion-picker-column', 'ion-picker-controller', 'ion-popover', 'ion-popover-controller', - 'ion-tab', - 'ion-tabs', 'ion-toast', 'ion-toast-controller', 'ion-toast', + + // controllers + 'ion-menu-controller', + 'ion-animation-controller', + 'ion-animation-controller', + 'ion-gesture-controller', + 'ion-platform', + 'ion-cordova-platform', + + // navigation + 'ion-router', + 'ion-route', + 'ion-route-redirect', + 'ion-router-outlet', + 'ion-anchor', + 'ion-tabbar', + 'ion-tab-button', + + // auxiliar + 'ion-gesture', + 'ion-status-tap', + 'ion-tap-click', + 'ion-picker-column', + 'ion-range-knob', + 'ion-input-shims', + 'ion-backdrop', + 'ion-anchor', 'ion-virtual-scroll' ] } diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 9fe77d255c..9f7a0fe7dd 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -95,6 +95,7 @@ import { import { AnimationBuilder as AnimationBuilder3, ComponentProps as ComponentProps2, + ComponentRef as ComponentRef2, FrameworkDelegate as FrameworkDelegate2, } from '.'; import { @@ -5759,7 +5760,7 @@ declare global { /** * The component to display inside of the tab. */ - 'component': any; + 'component': ComponentRef; 'delegate': FrameworkDelegate; /** * If true, the user cannot interact with the tab. Defaults to `false`. @@ -5826,7 +5827,7 @@ declare global { /** * The component to display inside of the tab. */ - 'component'?: any; + 'component'?: ComponentRef; 'delegate'?: FrameworkDelegate; /** * If true, the user cannot interact with the tab. Defaults to `false`. diff --git a/core/src/components/page/test/basic/index.html b/core/src/components/page/test/basic/index.html deleted file mode 100644 index 6e9d61b297..0000000000 --- a/core/src/components/page/test/basic/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Page - Basic - - - - - - - - - - Page - Basic - - - - - Ion Page Content - - - - - - diff --git a/core/src/components/page/test/host-element/index.html b/core/src/components/page/test/host-element/index.html deleted file mode 100644 index bac657e85d..0000000000 --- a/core/src/components/page/test/host-element/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Page - Host Element - - - - - - - - - - - - - diff --git a/core/src/components/page/test/no-ion-app-basic/index.html b/core/src/components/page/test/no-ion-app-basic/index.html deleted file mode 100644 index 40f3f4e976..0000000000 --- a/core/src/components/page/test/no-ion-app-basic/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Page - no-ion-app - - - - - -
- - - - Page - No Ion App Basic - - - - - Ion Page Content - - - - diff --git a/core/src/components/page/test/no-ion-app-host-element/index.html b/core/src/components/page/test/no-ion-app-host-element/index.html deleted file mode 100644 index bbc037ca67..0000000000 --- a/core/src/components/page/test/no-ion-app-host-element/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Page - No Ion App Host Element - - - - - - - -
- -
- - - diff --git a/core/src/components/page/test/preview/index.html b/core/src/components/page/test/preview/index.html deleted file mode 100644 index 6bbbb29fcd..0000000000 --- a/core/src/components/page/test/preview/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Page - - - - - - - - - - Page - - - - - Ion Page Content - - - - - - diff --git a/core/src/components/tab/readme.md b/core/src/components/tab/readme.md index 437258d7ee..8dc2680d55 100644 --- a/core/src/components/tab/readme.md +++ b/core/src/components/tab/readme.md @@ -62,7 +62,7 @@ string #### component -any + The component to display inside of the tab. @@ -156,7 +156,7 @@ string #### component -any + The component to display inside of the tab. diff --git a/core/src/components/tab/tab.tsx b/core/src/components/tab/tab.tsx index 5d07c63066..ebd26bd458 100644 --- a/core/src/components/tab/tab.tsx +++ b/core/src/components/tab/tab.tsx @@ -1,5 +1,6 @@ import { Build, Component, Element, Event, EventEmitter, Method, Prop, State, Watch } from '@stencil/core'; import { FrameworkDelegate, attachComponent } from '../../utils/framework-delegate'; +import { ComponentRef } from '../..'; @Component({ tag: 'ion-tab' @@ -44,7 +45,7 @@ export class Tab { /** * The component to display inside of the tab. */ - @Prop() component: any; + @Prop() component: ComponentRef; /** * The name of the tab. diff --git a/core/src/components/util/readme.md b/core/src/components/util/readme.md deleted file mode 100644 index b9013072a0..0000000000 --- a/core/src/components/util/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# ion-utils - - - - - - - ----------------------------------------------- - -*Built by [StencilJS](https://stenciljs.com/)*