refactor(components): update to use shadow DOM and work with css variables

- updates components to use shadow DOM or scoped if they require css variables
- moves global styles to an external stylesheet that needs to be imported
- adds support for additional colors and removes the Sass loops to generate colors for each component
- several property renames, bug fixes, and test updates

Co-authored-by: Manu Mtz.-Almeida <manu.mtza@gmail.com>
Co-authored-by: Adam Bradley <adambradley25@gmail.com>
Co-authored-by: Cam Wiegert <cam@camwiegert.com>
This commit is contained in:
Brandy Carney
2018-07-09 12:57:21 -04:00
parent a4659f03b4
commit a7f1f4daa7
710 changed files with 20999 additions and 20853 deletions

View File

@@ -5,27 +5,27 @@
"requires": true,
"dependencies": {
"@angular/common": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.0.tgz",
"integrity": "sha512-oo/KESihAZo0FsZPHthO9PYhanN4Q+Lo7Lb2HNbWnD+xRIPa1yFC12JOWiD+SPPfFGWMI6aW3wAlcoej1+QKSw==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.3.tgz",
"integrity": "sha512-tqEYeEXoaw2kzSUfTrmC3ruJ87trS61SHayIf56f/jtEVn+4pbgJDTNvLSnB6QEaMTn7sX6QBroauMWmdTVSvA==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/compiler": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.0.tgz",
"integrity": "sha512-UsYfsvHf4VVtkhzM7tyabh8co7gqWZTm3p79hbLDeyCEojl0AkrwbSgh0DQnKRxp4Tu3DEeeDkg1ahA7n19I8A==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.3.tgz",
"integrity": "sha512-nS65UI6f7grs2k+ggtkwXSBUQ1D/LVSFfXjWR5olxATx25QbIKABec90JphPE4FfhhVm1uonQ/vaSVCjh83Euw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/compiler-cli": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0.tgz",
"integrity": "sha512-RV0xTSTPT3yOnbS5Gx6lMAETQeTUr72Ifu0+JZh9AV07xGVislZ+SdQGSeNgXoqxise6e65lJp3Nrb5KE4Lv6g==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.3.tgz",
"integrity": "sha512-n7L/g2leGSl1LffZ3ZuB5bY4sJoZWjkG5tg9IafXQ8nAIUtKPl+ovoiNUhAaA4CvlUlgYHMcbezKpc9285LnyQ==",
"dev": true,
"requires": {
"chokidar": "^1.4.2",
@@ -35,45 +35,45 @@
}
},
"@angular/core": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.0.tgz",
"integrity": "sha512-52X2ZKXOoaMRYaC/ycHePTkXuwku8qJFxoEXAFBItAkk9rebLU4CD8Fx1Z9vUd8aWu1uFfLTxqkgE0mUyBANZw==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.3.tgz",
"integrity": "sha512-YJk0kS/V9C2JFKMHfiw6TNxmfkYWGW4HzqGOm/VoPkvj9O4Erkz/OtOOc8hYGmXFmQz1UpOAByzY2XIlEi72XQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/forms": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.0.tgz",
"integrity": "sha512-4eVfCcSyPRhml7Xa6ia/DgDl3JhOnEdBdHo+jads1YL5AF6D08Tthngjf3KjuctGqZDACPyxNt6ciX4g8IbGCA==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.3.tgz",
"integrity": "sha512-YAjRMERggkzb3cIo8iKOz1xB89Ko4fSh4A1suqrv9o2Xu41Qxs6LwrWVW+6x+N5kBzvbKFZyADqSz1otMQP83Q==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/platform-browser": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.0.tgz",
"integrity": "sha512-ExI1o40BJIbJKFz1p1ivGSgLA1+T0uUo8rjheOZhcGDwCNx54/RapCFLdcHCNiW8NzAIzx+kt4DdXnCSKitnDA==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.3.tgz",
"integrity": "sha512-OTgOE6WzytV9fnnCwvoyyXI4Avzmfu9RbBUhVRVontov6LlN9XL8BrzLidT7/lPAEQmHuoRCuNrSSY8TokPJCA==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/platform-browser-dynamic": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0.tgz",
"integrity": "sha512-yk4wZYn2bosuvDaYaEq6UuEeI966/28uCljm5iBfo3l8Vuv2IChk5664M68O6C+KwWzCCWDHvIqm0q178YUYug==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.3.tgz",
"integrity": "sha512-OSaBiog3jH52c+pJhG6qsZjVipzw3ThTcFaymetlBwdRkZ9ch7eIQFhlIXPe4oM3wJt39LTG7peRymWPbnx4uw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"@angular/router": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.0.tgz",
"integrity": "sha512-ONrfgfYmFGz0Ht2MvymMvBMxPI9w5037ZfJWpTu1/Xo1XmVOawzj2SvYfEzTqexznWcTAALggq/A23k8r9ArKA==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.3.tgz",
"integrity": "sha512-7pQYu5DnNXwZ8nZrKtTpBo3HQoirKSP2hGAoHA0rPsqZvavBfuhUzsksYVvKvFEtoPmBe69uEYydhr115MTTNQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
@@ -87,6 +87,15 @@
"ionicons": "^4.1.1"
}
},
"@samverschueren/stream-to-observable": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
"integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
"dev": true,
"requires": {
"any-observable": "^0.3.0"
}
},
"ansi-escapes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
@@ -109,9 +118,9 @@
}
},
"any-observable": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz",
"integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=",
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
"integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
"dev": true
},
"anymatch": {
@@ -259,9 +268,9 @@
"dev": true
},
"chalk": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
@@ -382,9 +391,9 @@
"dev": true
},
"commander": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
"integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
"dev": true
},
"concat-map": {
@@ -592,14 +601,14 @@
"dev": true
},
"fsevents": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz",
"integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
"integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
"dev": true,
"optional": true,
"requires": {
"nan": "^2.9.2",
"node-pre-gyp": "^0.9.0"
"node-pre-gyp": "^0.10.0"
},
"dependencies": {
"abbrev": {
@@ -632,12 +641,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -652,17 +663,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -680,7 +694,7 @@
}
},
"deep-extend": {
"version": "0.4.2",
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true
@@ -779,7 +793,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@@ -791,6 +806,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -805,6 +821,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -812,12 +829,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@@ -836,6 +855,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -858,7 +878,7 @@
}
},
"node-pre-gyp": {
"version": "0.9.1",
"version": "0.10.0",
"bundled": true,
"dev": true,
"optional": true,
@@ -916,7 +936,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -928,6 +949,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@@ -967,12 +989,12 @@
"optional": true
},
"rc": {
"version": "1.2.6",
"version": "1.2.7",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "~0.4.0",
"deep-extend": "^0.5.1",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
@@ -1049,6 +1071,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -1332,18 +1355,18 @@
}
},
"is-observable": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz",
"integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
"integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
"dev": true,
"requires": {
"symbol-observable": "^0.2.2"
"symbol-observable": "^1.1.0"
},
"dependencies": {
"symbol-observable": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz",
"integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
"dev": true
}
}
@@ -1400,9 +1423,9 @@
"dev": true
},
"js-yaml": {
"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==",
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -1428,16 +1451,16 @@
}
},
"listr": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz",
"integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=",
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/listr/-/listr-0.14.1.tgz",
"integrity": "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"@samverschueren/stream-to-observable": "^0.3.0",
"cli-truncate": "^0.2.1",
"figures": "^1.7.0",
"indent-string": "^2.1.0",
"is-observable": "^0.2.0",
"is-observable": "^1.1.0",
"is-promise": "^2.1.0",
"is-stream": "^1.1.0",
"listr-silent-renderer": "^1.1.1",
@@ -1447,8 +1470,7 @@
"log-update": "^1.0.2",
"ora": "^0.2.3",
"p-map": "^1.1.1",
"rxjs": "^5.4.2",
"stream-to-observable": "^0.2.0",
"rxjs": "^6.1.0",
"strip-ansi": "^3.0.1"
},
"dependencies": {
@@ -1458,25 +1480,6 @@
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -1487,15 +1490,6 @@
"object-assign": "^4.1.0"
}
},
"rxjs": {
"version": "5.5.9",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.9.tgz",
"integrity": "sha512-DHG9AHmCmgaFWgjBcXp6NxFDmh3MvIA62GqTWmLnTzr/3oZ6h5hLD8NA+9j+GF0jEwklNIpI4KuuyLG8UWMEvQ==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -1504,12 +1498,6 @@
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
},
@@ -2158,9 +2146,9 @@
}
},
"resolve": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz",
"integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==",
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true,
"requires": {
"path-parse": "^1.0.5"
@@ -2186,9 +2174,9 @@
}
},
"rxjs": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz",
"integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.0.tgz",
"integrity": "sha512-qBzf5uu6eOKiCZuAE0SgZ0/Qp+l54oeVxFfC2t+mJ2SFI6IB8gmMdJHs5DUMu5kqifqcCtsKS2XHjhZu6RKvAw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
@@ -2246,9 +2234,9 @@
"dev": true
},
"source-map-support": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz",
"integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==",
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
"integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -2261,15 +2249,6 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"stream-to-observable": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz",
"integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=",
"dev": true,
"requires": {
"any-observable": "^0.2.0"
}
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
@@ -2305,9 +2284,9 @@
"dev": true
},
"supports-color": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
@@ -2353,9 +2332,9 @@
"dev": true
},
"tslint": {
"version": "5.9.1",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz",
"integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=",
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz",
"integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=",
"dev": true,
"requires": {
"babel-code-frame": "^6.22.0",
@@ -2401,9 +2380,9 @@
}
},
"tsutils": {
"version": "2.26.1",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz",
"integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==",
"version": "2.27.2",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.2.tgz",
"integrity": "sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
@@ -2443,9 +2422,9 @@
"dev": true
},
"zone.js": {
"version": "0.8.25",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.25.tgz",
"integrity": "sha512-/4HpggPPo8aVMDhB18X0734eZftRNPR8Y9kURWzwzXMFi5rp6Igk5kFrlIIY6AueLlm1zcvi2WBOqBTvrX+0Rw==",
"version": "0.8.26",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
"integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==",
"dev": true
}
}

View File

@@ -20,14 +20,14 @@
"url": "https://github.com/ionic-team/ionic.git"
},
"scripts": {
"build": "npm run clean && npm run compile && npm run clean-generated && npm run build.core",
"build.dev": "npm run clean && npm run compile && npm run clean-generated && npm run build.core.dev",
"build": "npm run clean && npm run build.core && npm run build.ng && npm run clean-generated",
"build.dev": "npm run clean && npm run build.core.dev && npm run build.ng && npm run clean-generated",
"build.core": "node scripts/build-core.js",
"build.core.dev": "node scripts/build-core.js --dev",
"build.link": "npm run build && node scripts/link-copy.js",
"build.ng": "./node_modules/.bin/ngc",
"clean": "node scripts/clean.js",
"clean-generated": "node ./scripts/clean-generated.js",
"compile": "./node_modules/.bin/ngc",
"lint": "tslint --project .",
"prerelease": "npm run validate && np prerelease --yolo --any-branch --tag next",
"test": "echo 'angular no tests yet'",
@@ -43,25 +43,25 @@
"@ionic/core": "4.0.0-alpha.7"
},
"devDependencies": {
"@angular/common": "^6.0.0",
"@angular/compiler": "^6.0.0",
"@angular/compiler-cli": "^6.0.0",
"@angular/core": "^6.0.0",
"@angular/forms": "^6.0.0",
"@angular/platform-browser": "^6.0.0",
"@angular/platform-browser-dynamic": "^6.0.0",
"@angular/router": "^6.0.0",
"chalk": "^2.3.2",
"@angular/common": "^6.0.3",
"@angular/compiler": "^6.0.3",
"@angular/compiler-cli": "^6.0.3",
"@angular/core": "^6.0.3",
"@angular/forms": "^6.0.3",
"@angular/platform-browser": "^6.0.3",
"@angular/platform-browser-dynamic": "^6.0.3",
"@angular/router": "^6.0.3",
"chalk": "^2.4.1",
"execa": "^0.10.0",
"fs-extra": "^5.0.0",
"glob": "7.1.2",
"inquirer": "^5.2.0",
"listr": "^0.13.0",
"rxjs": "^6.0.0",
"listr": "^0.14.1",
"rxjs": "^6.2.0",
"semver": "^5.5.0",
"tslint": "^5.8.0",
"tslint": "^5.10.0",
"tslint-ionic-rules": "0.0.14",
"typescript": "2.7.2",
"zone.js": "^0.8.20"
"zone.js": "^0.8.26"
}
}

View File

@@ -6,43 +6,25 @@ const stencilPath = path.join(__dirname, '..', '..', 'core', 'node_modules', '.b
function buildIonicAngular() {
const cmd = 'stencil';
const args = [
'build',
'--config',
path.join(__dirname, '..', 'stencil.config.js'),
...process.argv.slice(2)
];
return new Promise((resolve, reject) => {
console.log(cmd, args.join(' '));
const cmd = 'stencil';
const args = [
'build',
'--config',
path.join(__dirname, '..', 'stencil.config.js'),
...process.argv.slice(2)
];
const p = spawn('./stencil', args, { cwd: stencilPath, stdio: 'inherit' });
p.on('close', (code) => {
if (code > 0) {
console.log(`@ionic/angular build exited with ${code}`);
}
});
}
function buildIonicCore() {
const cmd = 'stencil';
const args = [
'build',
'--config',
path.join(__dirname, '..', '..', 'core', 'stencil.config.js'),
...process.argv.slice(2)
];
console.log(cmd, args.join(' '));
const p = spawn('./stencil', args, { cwd: stencilPath, stdio: 'inherit' });
p.on('close', (code) => {
if (code > 0) {
console.log(`@ionic/core build exited with ${code}`);
} else {
copyIonicCore();
copyIonicons();
}
const p = spawn('./stencil', args, { cwd: stencilPath, stdio: 'inherit' });
p.on('close', (code) => {
if (code > 0) {
console.log(`@ionic/angular build exited with ${code}`);
reject();
} else {
resolve();
}
});
});
}
@@ -50,25 +32,18 @@ function copyIonicons() {
const src = path.join(__dirname, '..', '..', 'core', 'node_modules', 'ionicons');
const dst = path.join(__dirname, '..', 'node_modules', 'ionicons');
fs.emptyDirSync(dst);
fs.removeSync(dst);
fs.copySync(src, dst);
}
function copyIonicCore() {
const srcDir = path.join(__dirname, '..', '..', 'core');
const dstDir = path.join(__dirname, '..', 'node_modules', '@ionic', 'core');
function copyCSS() {
const src = path.join(__dirname, '..', '..', 'core', 'css');
const dst = path.join(__dirname, '..', 'css');
fs.emptyDirSync(dstDir);
const srcPkg = path.join(srcDir, 'package.json');
const dstPkg = path.join(dstDir, 'package.json');
fs.copySync(srcPkg, dstPkg);
const srcDist = path.join(srcDir, 'dist');
const dstDist = path.join(dstDir, 'dist');
fs.emptyDirSync(dstDist);
fs.copySync(srcDist, dstDist);
fs.removeSync(dst);
fs.copySync(src, dst);
}
buildIonicCore();
copyIonicons();
copyCSS();
buildIonicAngular();

View File

@@ -1,45 +0,0 @@
import { Directive, ElementRef, Input } from '@angular/core';
import { inputs } from '../util/util';
@Directive({ selector: 'ion-icon' })
export class Icon {
/**
* The color to use from your Sass `$colors` map.
* Default options are: `"primary"`, `"secondary"`, `"danger"`, `"light"`, and `"dark"`.
* For more information, see [Theming your App](/docs/theming/theming-your-app).
*/
@Input() color: string;
/**
* Specifies the label to use for accessibility. Defaults to the icon name.
*/
@Input() ariaLabel = '';
/**
* Specifies which icon to use on `ios` mode.
*/
@Input() ios = '';
/**
* Specifies which icon to use on `md` mode.
*/
@Input() md = '';
/**
* Specifies which icon to use. The appropriate icon will be used based on the mode.
* For more information, see [Ionicons](/docs/ionicons/).
*/
@Input() name = '';
/**
* The size of the icon.
* Available options are: `"small"` and `"large"`.
*/
@Input() size: string;
constructor(el: ElementRef) {
inputs(this, el, ['color', 'ariaLabel', 'ios', 'md', 'name', 'size']);
}
}

View File

@@ -14,7 +14,6 @@ export { IonRouterOutlet } from './navigation/ion-router-outlet';
export { HrefDelegate } from './navigation/href-delegate';
export { NavParams } from './navigation/nav-params';
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';

View File

@@ -16,6 +16,7 @@ export const DIRECTIVES = [
d.Checkbox,
d.Chip,
d.ChipButton,
d.ChipIcon,
d.Col,
d.Content,
d.Datetime,
@@ -26,6 +27,7 @@ export const DIRECTIVES = [
d.Grid,
d.Header,
d.HideWhen,
d.Icon,
d.Img,
d.InfiniteScroll,
d.InfiniteScrollContent,

View File

@@ -79,10 +79,10 @@ export class Card {
}
export declare interface CardContent extends StencilComponents.IonCardContent {}
@Directive({selector: 'ion-card-content', inputs: ['color', 'mode']})
@Directive({selector: 'ion-card-content', inputs: ['mode']})
export class CardContent {
constructor(r: ElementRef) {
proxyInputs(this, r, ['color', 'mode']);
proxyInputs(this, r, ['mode']);
}
}
@@ -139,17 +139,28 @@ export class ChipButton {
}
}
export declare interface ChipIcon extends StencilComponents.IonChipIcon {}
@Directive({selector: 'ion-chip-icon', inputs: ['color', 'mode', 'name']})
export class ChipIcon {
constructor(r: ElementRef) {
proxyInputs(this, r, ['color', 'mode', 'name']);
}
}
export declare interface Col extends StencilComponents.IonCol {}
@Directive({selector: 'ion-col'})
@Directive({selector: 'ion-col', inputs: ['offset', 'offsetXs', 'offsetSm', 'offsetMd', 'offsetLg', 'offsetXl', 'pull', 'pullXs', 'pullSm', 'pullMd', 'pullLg', 'pullXl', 'push', 'pushXs', 'pushSm', 'pushMd', 'pushLg', 'pushXl', 'size', 'sizeXs', 'sizeSm', 'sizeMd', 'sizeLg', 'sizeXl']})
export class Col {
constructor(r: ElementRef) {
proxyInputs(this, r, ['offset', 'offsetXs', 'offsetSm', 'offsetMd', 'offsetLg', 'offsetXl', 'pull', 'pullXs', 'pullSm', 'pullMd', 'pullLg', 'pullXl', 'push', 'pushXs', 'pushSm', 'pushMd', 'pushLg', 'pushXl', 'size', 'sizeXs', 'sizeSm', 'sizeMd', 'sizeLg', 'sizeXl']);
}
}
export declare interface Content extends StencilComponents.IonContent {}
@Directive({selector: 'ion-content', inputs: ['fullscreen', 'forceOverscroll', 'scrollEnabled', 'scrollEvents']})
@Directive({selector: 'ion-content', inputs: ['color', 'fullscreen', 'forceOverscroll', 'scrollEnabled', 'scrollEvents']})
export class Content {
constructor(r: ElementRef) {
proxyMethods(this, r, ['scrollToTop', 'scrollToBottom', 'scrollByPoint', 'scrollToPoint']);
proxyInputs(this, r, ['fullscreen', 'forceOverscroll', 'scrollEnabled', 'scrollEvents']);
proxyMethods(this, r, ['getScrollElement']);
proxyInputs(this, r, ['color', 'fullscreen', 'forceOverscroll', 'scrollEnabled', 'scrollEvents']);
}
}
@@ -190,31 +201,42 @@ export class FabList {
}
export declare interface Footer extends StencilComponents.IonFooter {}
@Directive({selector: 'ion-footer', inputs: ['translucent']})
@Directive({selector: 'ion-footer', inputs: ['mode']})
export class Footer {
constructor(r: ElementRef) {
proxyInputs(this, r, ['translucent']);
proxyInputs(this, r, ['mode']);
}
}
export declare interface Grid extends StencilComponents.IonGrid {}
@Directive({selector: 'ion-grid'})
@Directive({selector: 'ion-grid', inputs: ['fixed']})
export class Grid {
constructor(r: ElementRef) {
proxyInputs(this, r, ['fixed']);
}
}
export declare interface Header extends StencilComponents.IonHeader {}
@Directive({selector: 'ion-header', inputs: ['translucent']})
@Directive({selector: 'ion-header', inputs: ['mode']})
export class Header {
constructor(r: ElementRef) {
proxyInputs(this, r, ['translucent']);
proxyInputs(this, r, ['mode']);
}
}
export declare interface HideWhen extends StencilComponents.IonHideWhen {}
@Directive({selector: 'ion-hide-when', inputs: ['orientation', 'mediaQuery', 'size', 'platform', 'or']})
@Directive({selector: 'ion-hide-when', inputs: ['mode', 'orientation', 'mediaQuery', 'size', 'platform', 'or']})
export class HideWhen {
constructor(r: ElementRef) {
proxyInputs(this, r, ['orientation', 'mediaQuery', 'size', 'platform', 'or']);
proxyInputs(this, r, ['mode', 'orientation', 'mediaQuery', 'size', 'platform', 'or']);
}
}
export declare interface Icon extends StencilComponents.IonIcon {}
@Directive({selector: 'ion-icon', inputs: ['ariaLabel', 'color', 'icon', 'ios', 'md', 'mode', 'name', 'size', 'src']})
export class Icon {
constructor(r: ElementRef) {
proxyInputs(this, r, ['ariaLabel', 'color', 'icon', 'ios', 'md', 'mode', 'name', 'size', 'src']);
}
}
@@ -264,10 +286,10 @@ export class Input {
}
export declare interface Item extends StencilComponents.IonItem {}
@Directive({selector: 'ion-item', inputs: ['color', 'mode', 'button', 'detail', 'disabled', 'href', 'lines', 'routerDirection']})
@Directive({selector: 'ion-item', inputs: ['color', 'mode', 'button', 'detail', 'detailIcon', 'disabled', 'href', 'lines', 'state', 'routerDirection']})
export class Item {
constructor(r: ElementRef) {
proxyInputs(this, r, ['color', 'mode', 'button', 'detail', 'disabled', 'href', 'lines', 'routerDirection']);
proxyInputs(this, r, ['color', 'mode', 'button', 'detail', 'detailIcon', 'disabled', 'href', 'lines', 'state', 'routerDirection']);
}
}
@@ -325,11 +347,11 @@ export class Label {
}
export declare interface List extends StencilComponents.IonList {}
@Directive({selector: 'ion-list', inputs: ['lines']})
@Directive({selector: 'ion-list', inputs: ['lines', 'inset']})
export class List {
constructor(r: ElementRef) {
proxyMethods(this, r, ['getOpenItem', 'setOpenItem', 'closeSlidingItems']);
proxyInputs(this, r, ['lines']);
proxyInputs(this, r, ['lines', 'inset']);
}
}
@@ -342,14 +364,14 @@ export class ListHeader {
}
export declare interface Menu extends StencilComponents.IonMenu {}
@Directive({selector: 'ion-menu', inputs: ['contentId', 'menuId', 'type', 'disabled', 'side', 'swipeEnabled', 'persistent', 'maxEdgeStart'], outputs: ['ionOpen', 'ionClose', 'ionMenuChange']})
@Directive({selector: 'ion-menu', inputs: ['contentId', 'menuId', 'type', 'disabled', 'side', 'swipeEnabled', 'maxEdgeStart'], outputs: ['ionOpen', 'ionClose', 'ionMenuChange']})
export class Menu {
ionOpen: EventEmitter<any>;
ionClose: EventEmitter<any>;
ionMenuChange: EventEmitter<any>;
constructor(r: ElementRef) {
proxyMethods(this, r, ['isOpen', 'open', 'close', 'toggle', 'setOpen', 'isActive']);
proxyInputs(this, r, ['contentId', 'menuId', 'type', 'disabled', 'side', 'swipeEnabled', 'persistent', 'maxEdgeStart']);
proxyInputs(this, r, ['contentId', 'menuId', 'type', 'disabled', 'side', 'swipeEnabled', 'maxEdgeStart']);
proxyOutputs(this, ['ionOpen', 'ionClose', 'ionMenuChange']);
}
}
@@ -377,7 +399,7 @@ export class Nav {
ionNavWillChange: EventEmitter<any>;
ionNavDidChange: EventEmitter<any>;
constructor(r: ElementRef) {
proxyMethods(this, r, ['push', 'insert', 'insertPages', 'pop', 'popTo', 'popToRoot', 'removeIndex', 'setRoot', 'setPages', 'setRouteId', 'getRouteId', 'canGoBack', 'getActive', 'getByIndex', 'getPrevious', 'length']);
proxyMethods(this, r, ['push', 'insert', 'insertPages', 'pop', 'popTo', 'popToRoot', 'removeIndex', 'setRoot', 'setPages', 'setRouteId', 'getRouteId', 'canGoBack', 'getActive', 'getByIndex', 'getPrevious', 'isAnimating', 'length']);
proxyInputs(this, r, ['swipeBackEnabled', 'animated', 'delegate', 'rootParams', 'root']);
proxyOutputs(this, ['ionNavWillLoad', 'ionNavWillChange', 'ionNavDidChange']);
}
@@ -485,11 +507,11 @@ export class ReorderGroup {
}
export declare interface RippleEffect extends StencilComponents.IonRippleEffect {}
@Directive({selector: 'ion-ripple-effect', inputs: ['tapClick']})
@Directive({selector: 'ion-ripple-effect', inputs: ['parent', 'tapClick']})
export class RippleEffect {
constructor(r: ElementRef) {
proxyMethods(this, r, ['addRipple']);
proxyInputs(this, r, ['tapClick']);
proxyInputs(this, r, ['parent', 'tapClick']);
}
}
@@ -512,7 +534,7 @@ export class Scroll {
}
export declare interface Searchbar extends StencilComponents.IonSearchbar {}
@Directive({selector: 'ion-searchbar', inputs: ['color', 'mode', 'animated', 'autocomplete', 'autocorrect', 'cancelButtonText', 'debounce', 'placeholder', 'showCancelButton', 'spellcheck', 'type', 'value'], outputs: ['ionInput', 'ionChange', 'ionCancel', 'ionClear', 'ionBlur', 'ionFocus']})
@Directive({selector: 'ion-searchbar', inputs: ['color', 'mode', 'animated', 'autocomplete', 'autocorrect', 'cancelButtonIcon', 'cancelButtonText', 'clearIcon', 'debounce', 'placeholder', 'searchIcon', 'showCancelButton', 'spellcheck', 'type', 'value'], outputs: ['ionInput', 'ionChange', 'ionCancel', 'ionClear', 'ionBlur', 'ionFocus']})
export class Searchbar {
ionInput: EventEmitter<any>;
ionChange: EventEmitter<any>;
@@ -521,7 +543,7 @@ export class Searchbar {
ionBlur: EventEmitter<any>;
ionFocus: EventEmitter<any>;
constructor(r: ElementRef) {
proxyInputs(this, r, ['color', 'mode', 'animated', 'autocomplete', 'autocorrect', 'cancelButtonText', 'debounce', 'placeholder', 'showCancelButton', 'spellcheck', 'type', 'value']);
proxyInputs(this, r, ['color', 'mode', 'animated', 'autocomplete', 'autocorrect', 'cancelButtonIcon', 'cancelButtonText', 'clearIcon', 'debounce', 'placeholder', 'searchIcon', 'showCancelButton', 'spellcheck', 'type', 'value']);
proxyOutputs(this, ['ionInput', 'ionChange', 'ionCancel', 'ionClear', 'ionBlur', 'ionFocus']);
}
}
@@ -537,11 +559,11 @@ export class Segment {
}
export declare interface SegmentButton extends StencilComponents.IonSegmentButton {}
@Directive({selector: 'ion-segment-button', inputs: ['color', 'mode', 'checked', 'disabled', 'href', 'value'], outputs: ['ionSelect']})
@Directive({selector: 'ion-segment-button', inputs: ['color', 'mode', 'checked', 'disabled', 'value'], outputs: ['ionSelect']})
export class SegmentButton {
ionSelect: EventEmitter<any>;
constructor(r: ElementRef) {
proxyInputs(this, r, ['color', 'mode', 'checked', 'disabled', 'href', 'value']);
proxyInputs(this, r, ['color', 'mode', 'checked', 'disabled', 'value']);
proxyOutputs(this, ['ionSelect']);
}
}
@@ -580,10 +602,10 @@ export class SelectPopover {
}
export declare interface ShowWhen extends StencilComponents.IonShowWhen {}
@Directive({selector: 'ion-show-when', inputs: ['orientation', 'mediaQuery', 'size', 'platform', 'or']})
@Directive({selector: 'ion-show-when', inputs: ['mode', 'orientation', 'mediaQuery', 'size', 'platform', 'or']})
export class ShowWhen {
constructor(r: ElementRef) {
proxyInputs(this, r, ['orientation', 'mediaQuery', 'size', 'platform', 'or']);
proxyInputs(this, r, ['mode', 'orientation', 'mediaQuery', 'size', 'platform', 'or']);
}
}
@@ -601,7 +623,7 @@ export class Slide {
}
export declare interface Slides extends StencilComponents.IonSlides {}
@Directive({selector: 'ion-slides', inputs: ['options', 'pager'], outputs: ['ionSlideWillChange', 'ionSlideDidChange', 'ionSlideNextStart', 'ionSlidePrevStart', 'ionSlideNextEnd', 'ionSlidePrevEnd', 'ionSlideTransitionStart', 'ionSlideTransitionEnd', 'ionSlideDrag', 'ionSlideReachStart', 'ionSlideReachEnd', 'ionSlideTouchStart', 'ionSlideTouchEnd']})
@Directive({selector: 'ion-slides', inputs: ['options', 'pager', 'scrollbar'], outputs: ['ionSlideWillChange', 'ionSlideDidChange', 'ionSlideNextStart', 'ionSlidePrevStart', 'ionSlideNextEnd', 'ionSlidePrevEnd', 'ionSlideTransitionStart', 'ionSlideTransitionEnd', 'ionSlideDrag', 'ionSlideReachStart', 'ionSlideReachEnd', 'ionSlideTouchStart', 'ionSlideTouchEnd']})
export class Slides {
ionSlideWillChange: EventEmitter<any>;
ionSlideDidChange: EventEmitter<any>;
@@ -618,7 +640,7 @@ export class Slides {
ionSlideTouchEnd: EventEmitter<any>;
constructor(r: ElementRef) {
proxyMethods(this, r, ['update', 'slideTo', 'slideNext', 'slidePrev', 'getActiveIndex', 'getPreviousIndex', 'length', 'isEnd', 'isBeginning', 'startAutoplay', 'stopAutoplay', 'lockSwipeToNext', 'lockSwipeToPrev', 'lockSwipes']);
proxyInputs(this, r, ['options', 'pager']);
proxyInputs(this, r, ['options', 'pager', 'scrollbar']);
proxyOutputs(this, ['ionSlideWillChange', 'ionSlideDidChange', 'ionSlideNextStart', 'ionSlidePrevStart', 'ionSlideNextEnd', 'ionSlidePrevEnd', 'ionSlideTransitionStart', 'ionSlideTransitionEnd', 'ionSlideDrag', 'ionSlideReachStart', 'ionSlideReachEnd', 'ionSlideTouchStart', 'ionSlideTouchEnd']);
}
}

View File

@@ -24,6 +24,7 @@ const DECLARATIONS = [
d.Checkbox,
d.Chip,
d.ChipButton,
d.ChipIcon,
d.Col,
d.Content,
d.Datetime,
@@ -34,6 +35,7 @@ const DECLARATIONS = [
d.Grid,
d.Header,
d.HideWhen,
d.Icon,
d.Img,
d.InfiniteScroll,
d.InfiniteScrollContent,
@@ -86,9 +88,6 @@ const DECLARATIONS = [
d.Toolbar,
d.ToolbarTitle,
// custom proxy
c.Icon,
// ngModel accessors
c.BooleanValueAccessor,
c.NumericValueAccessor,

View File

@@ -40,8 +40,6 @@ exports.config.outputTargets = [
'ion-animation-controller',
'ion-animation-controller',
'ion-gesture-controller',
'ion-platform',
'ion-cordova-platform',
// navigation
'ion-router',
@@ -54,11 +52,9 @@ exports.config.outputTargets = [
// 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'