diff --git a/.gitignore b/.gitignore index 36f0142bae..d5035e0d90 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,8 @@ yarn-error.log testem.log /typings docker/browser -lintReport.json +angularBusinessLintReport.json +angularPublicLintReport.json # System Files .DS_Store diff --git a/.travis.yml b/.travis.yml index 0ef2d30f7a..cd3a5cdfa3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,14 +5,15 @@ dist: trusty sudo: required addons: chrome: stable + firefox: latest cache: npm script: - npm run build:libs - - if [ "$TRAVIS_TAG" == "" ] && [[ "$TRAVIS_COMMIT_MESSAGE" != *"skip-tests"* ]]; then npm run test; fi - - if [ "$TRAVIS_TAG" == "" ] && [[ "$TRAVIS_COMMIT_MESSAGE" != *"skip-tests"* ]]; then npm run lint; fi - - if [ "$TRAVIS_TAG" == "" ] && [[ "$TRAVIS_COMMIT_MESSAGE" != *"skip-tests"* ]]; then npm run sonar; fi + - if [ "$TRAVIS_TAG" == "" ]; then npm run test; fi + - if [ "$TRAVIS_TAG" == "" ]; then npm run lint; fi + - if [ "$TRAVIS_TAG" == "" ]; then npm run sonar; fi - npm run build:angular-showcase before_deploy: - echo "//registry.npmjs.org/:_authToken=\${NPM_AUTH_TOKEN}" > ~/.npmrc diff --git a/angular.json b/angular.json index 8a189f6b3a..22a460e311 100644 --- a/angular.json +++ b/angular.json @@ -101,9 +101,9 @@ "configurations": { "ci": { "watch": false, - "codeCoverage": false, + "codeCoverage": true, "browsers": "ChromeHeadless", - "sourceMap": true, + "sourceMap": false, "preserveSymlinks": false } } @@ -179,7 +179,7 @@ "ci": { "watch": false, "codeCoverage": true, - "browsers": "HeadlessChromeNoSandbox,BsChrome", + "browsers": "ChromeHeadless", "sourceMap": false, "progress": false }, diff --git a/package-lock.json b/package-lock.json index f8da66d7d4..beaf20bd66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1053,6 +1053,23 @@ "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", "dev": true }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha1-WCu1MfX53GfS/LaCl5iU914lPxI=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha1-MuWcmm+5saSv8JtJMMotRHc0NEc=", + "dev": true + } + } + }, "@babel/template": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", @@ -1242,6 +1259,15 @@ "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", "dev": true }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha1-7N9I1TLFjqR3rPyrgDSEJPjQZi8=", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, "@schematics/angular": { "version": "8.0.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/@schematics/angular/-/angular-8.0.2.tgz", @@ -2094,6 +2120,12 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha1-r5M0deWAamfQ198JDdXovvZdEZs=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -3548,6 +3580,24 @@ "restore-cursor": "^2.0.0" } }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + } + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/cli-width/-/cli-width-2.2.0.tgz", @@ -5300,6 +5350,12 @@ "whatwg-url": "^7.0.0" } }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=", + "dev": true + }, "date-format": { "version": "1.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/date-format/-/date-format-1.2.0.tgz", @@ -5502,6 +5558,12 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-equal": { "version": "1.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/deep-equal/-/deep-equal-1.0.1.tgz", @@ -6280,6 +6342,12 @@ "integrity": "sha1-XhaQnc/SWrfNFmURTuOBCDo+6Fg=", "dev": true }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, "elliptic": { "version": "6.4.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/elliptic/-/elliptic-6.4.1.tgz", @@ -7587,6 +7655,12 @@ "readable-stream": "^2.3.6" } }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, "follow-redirects": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", @@ -8362,6 +8436,17 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "g-status": { + "version": "2.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha1-Jw/TIRno/JSW8Gb+X+iOCmvHi5c=", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + } + }, "gauge": { "version": "2.7.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/gauge/-/gauge-2.7.4.tgz", @@ -8399,6 +8484,12 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha1-uHe0mlwWrvrDZV8u0upbaE340gM=", + "dev": true + }, "get-pkg-repo": { "version": "1.4.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", @@ -10186,6 +10277,148 @@ "ms": "^2.0.0" } }, + "husky": { + "version": "2.4.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/husky/-/husky-2.4.1.tgz", + "integrity": "sha1-3QD5ZG+Gk7k/ezoSukvgC+Dv96s=", + "dev": true, + "requires": { + "cosmiconfig": "^5.2.0", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^7.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^4.1.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^5.1.1", + "run-node": "^1.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha1-jV3pjxUXGhJcXlFmQ8em0OqKlvY=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + } + } + }, + "read-pkg": { + "version": "5.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/read-pkg/-/read-pkg-5.1.1.tgz", + "integrity": "sha1-XPI03eekBckMiKUZq3PEZ+nLg/U=", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^4.0.0", + "type-fest": "^0.4.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/slash/-/slash-3.0.0.tgz", + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", + "dev": true + } + } + }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -10751,6 +10984,15 @@ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", "dev": true }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14=", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -12044,6 +12286,208 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "lint-staged": { + "version": "8.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/lint-staged/-/lint-staged-8.2.1.tgz", + "integrity": "sha1-dS/PIi2dKPMjo7gPHmaPNlT/Ih8=", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.2.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.27.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", + "dev": true + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/listr/-/listr-0.14.3.tgz", + "integrity": "sha1-L+qQlgTkNL5GTFC926DUlpKPpYY=", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/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://bin.sbb.ch/artifactory/api/npm/npm/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, "livereload-js": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", @@ -12292,6 +12736,60 @@ "chalk": "^2.4.2" } }, + "log-update": { + "version": "2.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, "log4js": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", @@ -12552,6 +13050,15 @@ } } }, + "matcher": { + "version": "1.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha1-UdgwHhOPhAmCszixFrsMCa9iwcI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, "mathml-tag-names": { "version": "2.1.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", @@ -13690,6 +14197,15 @@ "npm-bundled": "^1.0.1" } }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha1-xkE0el/51qCeTZvOVYDE9QUnjmQ=", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, "npm-pick-manifest": { "version": "2.2.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", @@ -13795,6 +14311,17 @@ "path-key": "^2.0.0" } }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -14699,6 +15226,15 @@ } } }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": "sha1-7TIAUd/MUCT65pZxLIKImTWV6Kw=", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, "plugin-error": { "version": "0.1.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/plugin-error/-/plugin-error-0.1.2.tgz", @@ -15083,6 +15619,12 @@ "retry": "^0.10.0" } }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha1-IuhwaJSgyOKNWHNYBPa6OjZzMU8=", + "dev": true + }, "proto-list": { "version": "1.2.4", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/proto-list/-/proto-list-1.2.4.tgz", @@ -16147,6 +16689,12 @@ "is-promise": "^2.1.0" } }, + "run-node": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha1-RrULlGoqotSUeuHYhumFb9nKvl4=", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/run-queue/-/run-queue-1.0.3.tgz", @@ -16654,6 +17202,12 @@ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "semver-diff": { "version": "2.1.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/semver-diff/-/semver-diff-2.1.0.tgz", @@ -16888,6 +17442,32 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-git": { + "version": "1.116.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/simple-git/-/simple-git-1.116.0.tgz", + "integrity": "sha1-6m5TNGbx4BUhhuMG4ATU7vpuPgA=", + "dev": true, + "requires": { + "debug": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + } + } + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -17586,6 +18166,12 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha1-QybTOIbcns+immGTv1EbqQpGRUs=", + "dev": true + }, "standard-version": { "version": "6.0.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/standard-version/-/standard-version-6.0.1.tgz", @@ -18295,6 +18881,12 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, "string-template": { "version": "0.2.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/string-template/-/string-template-0.2.1.tgz", @@ -18344,6 +18936,17 @@ "is-hexadecimal": "^1.0.0" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "stringify-package": { "version": "1.0.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/stringify-package/-/stringify-package-1.0.0.tgz", @@ -19094,6 +19697,12 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "synchronous-promise": { + "version": "2.0.9", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/synchronous-promise/-/synchronous-promise-2.0.9.tgz", + "integrity": "sha1-uD25jp566Ca/nIJh/YrIWRJseAo=", + "dev": true + }, "table": { "version": "5.4.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/table/-/table-5.4.0.tgz", @@ -19504,6 +20113,12 @@ "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", "dev": true }, + "toposort": { + "version": "2.0.2", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -21329,6 +21944,20 @@ "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", "dev": true }, + "yup": { + "version": "0.27.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/yup/-/yup-0.27.0.tgz", + "integrity": "sha1-+MsZjI590hJL7dwkV1cTKQlrBuc=", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + } + }, "zone.js": { "version": "0.9.1", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/zone.js/-/zone.js-0.9.1.tgz", diff --git a/package.json b/package.json index 0a398fa5da..a23cb70c3b 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,15 @@ "ng": "ng", "start": "ng serve", "clean": "rimraf dist coverage lintReport.json", - "lint": "run-p lint:angular-icons lint:angular-public lint:angular-showcase", + "format": "prettier --write **/*.{js,ts,css,scss,json,md,html}", + "lint": "run-p lint:angular-icons lint:angular-public lint:angular-business lint:angular-showcase", "lint:angular-icons": "ng lint @sbb-esta/angular-icons", - "lint:angular-business": "ng lint @sbb-esta/angular-business", + "lint:angular-business": "run-p lint:angular-business:*", + "lint:angular-business:console": "ng lint @sbb-esta/angular-business", + "lint:angular-business:report": "ng lint @sbb-esta/angular-business --format=json > angularBusinessLintReport.json", "lint:angular-public": "run-p lint:angular-public:*", - "lint:angular-public:console": "ng lint @sbb-esta/angular-icons", - "lint:angular-public:report": "ng lint @sbb-esta/angular-icons --format=json > lintReport.json", + "lint:angular-public:console": "ng lint @sbb-esta/angular-public", + "lint:angular-public:report": "ng lint @sbb-esta/angular-public --format=json > angularPublicLintReport.json", "lint:angular-showcase": "ng lint angular-showcase", "build": "run-s build:libs build:angular-showcase", "build:libs": "run-s build:angular-icons build:angular-public build:angular-business", @@ -110,6 +113,7 @@ "gulp-transform": "^3.0.5", "gulp-util": "^3.0.8", "highlight.js": "^9.15.6", + "husky": "^2.4.1", "jasmine-core": "~2.99.1", "jasmine-spec-reporter": "~4.2.1", "karma": "~3.1.0", @@ -123,6 +127,7 @@ "karma-parallel": "^0.3.1", "karma-sonarqube-reporter": "^1.2.3", "karma-sourcemap-loader": "^0.3.7", + "lint-staged": "^8.2.1", "lodash": "^4.17.11", "ng-bullet": "^1.0.3", "ng-packagr": "^5.1.0", @@ -197,8 +202,7 @@ "lint-staged": { "*.{js,ts,css,scss,json,md,html}": [ "npx prettier --write", - "git add", - "npx ng lint @sbb-esta/angular-public" + "git add" ] } } diff --git a/projects/sbb-esta/angular-business/karma.conf.js b/projects/sbb-esta/angular-business/karma.conf.js index 478f13481a..d1190f1dc3 100644 --- a/projects/sbb-esta/angular-business/karma.conf.js +++ b/projects/sbb-esta/angular-business/karma.conf.js @@ -2,35 +2,91 @@ // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function(config) { + const dist = require('path').join(__dirname, '../../../coverage/sbb-esta/angular-business'); config.set({ basePath: '', frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), + require('karma-firefox-launcher'), + require('karma-browserstack-launcher'), require('karma-jasmine-html-reporter'), + require('karma-sonarqube-reporter'), require('karma-coverage-istanbul-reporter'), require('@angular-devkit/build-angular/plugins/karma') ], client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser + clearContext: false, // leave Jasmine Spec Runner output visible in browser + jasmine: { + timeout: 100000 + } + }, + browserStack: { + project: '@sbb-esta/angular-business Unit Tests', + startTunnel: true, + retryLimit: 3, + timeout: 1800, + video: false + }, + sonarqubeReporter: { + basePath: 'projects/sbb-esta/angular-business/src', + outputFolder: dist, + reportName: () => 'sonarqube.xml' }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../../coverage/sbb-esta/angular-business'), - reports: ['html', 'lcovonly'], + dir: dist, + reports: ['html', 'lcovonly', 'cobertura'], fixWebpackSourcePaths: true }, - reporters: ['progress', 'kjhtml'], + reporters: ['progress', 'kjhtml', 'sonarqube'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], + customLaunchers: { + BsChrome: { + base: 'BrowserStack', + os: 'Windows', + os_version: '10', + browser: 'Chrome' + }, + BsFirefox: { + base: 'BrowserStack', + os: 'Windows', + os_version: '10', + browser: 'Firefox' + } + }, singleRun: false, - restartOnFileChange: true, - captureTimeout: 100000, - browserNoActivityTimeout: 100000, - browserDisconnectTimeout: 100000, - browserDisconnectTolerance: 3 + // Try Websocket for a faster transmission first. Fallback to polling if necessary. + transports: ['websocket', 'polling'], + browserNoActivityTimeout: 300000, + browserDisconnectTolerance: 1 }); + + if (process.env.TRAVIS) { + // This defines how often a given browser should be launched in the same Travis + // container. This is helpful if we want to shard tests across the same browser. + const parallelBrowserInstances = Number(process.env.KARMA_PARALLEL_BROWSERS) || 1; + + // In case there should be multiple instances of the browsers, we need to set up the + // the karma-parallel plugin. + if (parallelBrowserInstances > 1) { + config.frameworks.unshift('parallel'); + config.plugins.push(require('karma-parallel')); + config.parallelOptions = { + executors: parallelBrowserInstances, + shardStrategy: 'round-robin' + }; + } + + if (process.env.BROWSERSTACK_USERNAME && process.env.BROWSERSTACK_ACCESS_KEY) { + config.browsers.push('BsCrhome', 'BsFirefox'); + config.browserDisconnectTimeout = 180000; + config.browserDisconnectTolerance = 3; + config.captureTimeout = 180000; + } + } }; diff --git a/projects/sbb-esta/angular-business/package.json b/projects/sbb-esta/angular-business/package.json index e461015653..15fb0d3991 100644 --- a/projects/sbb-esta/angular-business/package.json +++ b/projects/sbb-esta/angular-business/package.json @@ -1,6 +1,6 @@ { "name": "@sbb-esta/angular-business", - "version": "0.0.0-PLACEHOLDER", + "version": "0.1.0", "publishConfig": { "access": "public" }, diff --git a/projects/sbb-esta/angular-business/src/lib/button/button.module.ts b/projects/sbb-esta/angular-business/src/lib/button/button.module.ts index b420abd7f1..b469bdcf29 100644 --- a/projects/sbb-esta/angular-business/src/lib/button/button.module.ts +++ b/projects/sbb-esta/angular-business/src/lib/button/button.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { ButtonIconDirective } from '../../../../angular-public/src/lib/button/button/button-icon.directive'; + import { ButtonComponent } from './button/button.component'; @NgModule({ diff --git a/projects/sbb-esta/angular-business/src/lib/button/button/button.component.spec.ts b/projects/sbb-esta/angular-business/src/lib/button/button/button.component.spec.ts index d6213a614e..c2d3ab29ed 100644 --- a/projects/sbb-esta/angular-business/src/lib/button/button/button.component.spec.ts +++ b/projects/sbb-esta/angular-business/src/lib/button/button/button.component.spec.ts @@ -1,5 +1,5 @@ import { Component, DebugElement, Type, ViewChild } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { IconArrowRightComponent as TestIconComponent, @@ -8,6 +8,7 @@ import { import { configureTestSuite } from 'ng-bullet'; import { ButtonIconDirective } from '../../../../../angular-public/src/lib/button/button/button-icon.directive'; + import { ButtonComponent } from './button.component'; // tslint:disable:i18n diff --git a/projects/sbb-esta/angular-business/src/lib/button/button/button.component.ts b/projects/sbb-esta/angular-business/src/lib/button/button/button.component.ts index 197528b720..d2c2f39046 100644 --- a/projects/sbb-esta/angular-business/src/lib/button/button/button.component.ts +++ b/projects/sbb-esta/angular-business/src/lib/button/button/button.component.ts @@ -5,6 +5,7 @@ import { Input, ViewEncapsulation } from '@angular/core'; + import { BaseButton } from '../../../../../angular-public/src/lib/button/button/base-button'; @Component({ diff --git a/projects/sbb-esta/angular-business/src/test.ts b/projects/sbb-esta/angular-business/src/test.ts index c48e230870..39d6dfc20c 100644 --- a/projects/sbb-esta/angular-business/src/test.ts +++ b/projects/sbb-esta/angular-business/src/test.ts @@ -3,6 +3,7 @@ import 'core-js/es7/reflect'; import 'zone.js/dist/zone'; import 'zone.js/dist/zone-testing'; +// tslint:disable-next-line: ordered-imports import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/projects/sbb-esta/angular-public/karma.conf.js b/projects/sbb-esta/angular-public/karma.conf.js index 2bfe155b59..d852bac7f9 100644 --- a/projects/sbb-esta/angular-public/karma.conf.js +++ b/projects/sbb-esta/angular-public/karma.conf.js @@ -52,14 +52,11 @@ module.exports = function(config) { os_version: '10', browser: 'Chrome' }, - HeadlessChromeNoSandbox: { - base: 'ChromeHeadless', - flags: [ - '--no-sandbox', - '--disable-renderer-backgrounding', - '--disable-device-discovery-notifications', - '--disable-web-security' - ] + BsFirefox: { + base: 'BrowserStack', + os: 'Windows', + os_version: '10', + browser: 'Firefox' } }, singleRun: false, @@ -86,6 +83,7 @@ module.exports = function(config) { } if (process.env.BROWSERSTACK_USERNAME && process.env.BROWSERSTACK_ACCESS_KEY) { + config.browsers.push('BsCrhome', 'BsFirefox'); config.browserDisconnectTimeout = 180000; config.browserDisconnectTolerance = 3; config.captureTimeout = 180000; diff --git a/projects/sbb-esta/angular-public/src/lib/autocomplete/styles/_autocomplete-variables.scss b/projects/sbb-esta/angular-public/src/lib/autocomplete/styles/_autocomplete-variables.scss index d4e17d26eb..0b0e644347 100644 --- a/projects/sbb-esta/angular-public/src/lib/autocomplete/styles/_autocomplete-variables.scss +++ b/projects/sbb-esta/angular-public/src/lib/autocomplete/styles/_autocomplete-variables.scss @@ -17,4 +17,3 @@ $autocompleteInputActiveBorderBottomColor: $sbbColorCloud; } $autocompleteBorderTopReverse: $autocompleteBorder; - diff --git a/projects/sbb-esta/angular-public/src/lib/button/button/base-button.ts b/projects/sbb-esta/angular-public/src/lib/button/button/base-button.ts index 7d3b7bda1e..dbe292a95b 100644 --- a/projects/sbb-esta/angular-public/src/lib/button/button/base-button.ts +++ b/projects/sbb-esta/angular-public/src/lib/button/button/base-button.ts @@ -1,9 +1,5 @@ -import { - ContentChild, - HostBinding, - Input, - TemplateRef -} from '@angular/core'; +import { ContentChild, HostBinding, Input, TemplateRef } from '@angular/core'; + import { ButtonIconDirective } from './button-icon.directive'; export abstract class BaseButton { diff --git a/projects/sbb-esta/angular-public/src/lib/button/styles/_button-base.scss b/projects/sbb-esta/angular-public/src/lib/button/styles/_button-base.scss index e3926972ea..f0cc2fdf83 100644 --- a/projects/sbb-esta/angular-public/src/lib/button/styles/_button-base.scss +++ b/projects/sbb-esta/angular-public/src/lib/button/styles/_button-base.scss @@ -92,7 +92,7 @@ padding-left: toEm(40 / $buttonSizeFontDefault); padding-right: toEm(70 / $buttonSizeFontDefault); transition: height $linkiconAnimation, padding-left $linkiconAnimation, - padding-right $linkiconAnimation, color $linkiconAnimation; + padding-right $linkiconAnimation, color $linkiconAnimation; @include mq($from: desktop4k) { font-size: pxToRem($sizeFontDefault4k); diff --git a/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-input.scss b/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-input.scss index 49a94a9f60..8a46c6a5c0 100644 --- a/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-input.scss +++ b/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-input.scss @@ -14,13 +14,13 @@ @include publicOnly() { @include mq($from: desktop4k) { padding-left: pxToEm( - $dateInputOneIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k + $dateInputOneIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k ); } @include mq($from: desktop5k) { padding-left: pxToEm( - $dateInputOneIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k + $dateInputOneIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k ); } } @@ -32,13 +32,13 @@ @include publicOnly() { @include mq($from: desktop4k) { padding-right: pxToEm( - $dateInputOneIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k + $dateInputOneIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k ); } @include mq($from: desktop5k) { padding-right: pxToEm( - $dateInputOneIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k + $dateInputOneIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k ); } } @@ -50,13 +50,13 @@ @include publicOnly() { @include mq($from: desktop4k) { padding-left: pxToEm( - $dateInputTwoIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k + $dateInputTwoIconPadding * $scalingFactor4k - $dateInputBorderWidth * $scalingFactor4k ); } @include mq($from: desktop5k) { padding-left: pxToEm( - $dateInputTwoIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k + $dateInputTwoIconPadding * $scalingFactor5k - $dateInputBorderWidth * $scalingFactor5k ); } } diff --git a/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-variables.scss b/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-variables.scss index 1c60c6fc1d..8724d940a8 100644 --- a/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-variables.scss +++ b/projects/sbb-esta/angular-public/src/lib/datepicker/styles/_datepicker-variables.scss @@ -82,8 +82,12 @@ $datePickerDisabledCellLeft: 16; $datePickerToggleWrapperArrowWidth: 12; $datePickerToggleWrapperArrowHeight: pxToEm(8); - $datePickerToggleWrapperArrowLeftOffset: $defaultToggleLeftOffset + ($defaultPickerIconSize - $datePickerToggleWrapperArrowWidth) / 2; - $datePickerToggleWithArrowsWrapperArrowLeftOffset: $withArrowsToggleLeftOffset + ($defaultPickerIconSize - $datePickerToggleWrapperArrowWidth) / 2; + $datePickerToggleWrapperArrowLeftOffset: $defaultToggleLeftOffset + + ($defaultPickerIconSize - $datePickerToggleWrapperArrowWidth) / + 2; + $datePickerToggleWithArrowsWrapperArrowLeftOffset: $withArrowsToggleLeftOffset + + ($defaultPickerIconSize - $datePickerToggleWrapperArrowWidth) / + 2; $datePickerToggleArrowWidth: 9; $datePickerToggleArrowHeight: pxToEm(1); $datePickerToggleArrowBeforeOffset: pxToEm(-2); @@ -92,7 +96,7 @@ $datePickerDisabledCellLeft: 16; $datePickerCalendarDisabledTextCellColor: $sbbColorSilver; $datePickerDisabledCellWidth: 24; $datePickerDisabledCellTop: 19; - $datePickerDisabledCellLeft: 10 + $datePickerDisabledCellLeft: 10; } $datePickerToggleArrowTopOffset: -($datePickerToggleWrapperArrowHeight - diff --git a/projects/sbb-esta/angular-public/src/lib/field/styles/_input-field.scss b/projects/sbb-esta/angular-public/src/lib/field/styles/_input-field.scss index 242d6dcd66..98f02a68a4 100644 --- a/projects/sbb-esta/angular-public/src/lib/field/styles/_input-field.scss +++ b/projects/sbb-esta/angular-public/src/lib/field/styles/_input-field.scss @@ -1,7 +1,6 @@ @import 'common'; @mixin sbbLabel { - @include publicOnly() { margin-bottom: pxToEm(5, 13); padding-left: pxToEm(10, 13); diff --git a/projects/sbb-esta/angular-public/src/lib/lightbox/lightbox.module.ts b/projects/sbb-esta/angular-public/src/lib/lightbox/lightbox.module.ts index 7567a6c9e6..596281b621 100644 --- a/projects/sbb-esta/angular-public/src/lib/lightbox/lightbox.module.ts +++ b/projects/sbb-esta/angular-public/src/lib/lightbox/lightbox.module.ts @@ -2,8 +2,8 @@ import { OverlayModule } from '@angular/cdk/overlay'; import { PortalModule } from '@angular/cdk/portal'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { IconCrossModule } from '@sbb-esta/angular-icons'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { LightboxContainerComponent } from './lightbox/lightbox-container.component'; import { diff --git a/projects/sbb-esta/angular-public/src/lib/option/styles/_option-base.scss b/projects/sbb-esta/angular-public/src/lib/option/styles/_option-base.scss index bed0101756..c509959c9d 100644 --- a/projects/sbb-esta/angular-public/src/lib/option/styles/_option-base.scss +++ b/projects/sbb-esta/angular-public/src/lib/option/styles/_option-base.scss @@ -85,7 +85,7 @@ color: $autocompleteOptionActiveColor; &:not(.sbb-option-multiple) { - @include optionBorderLeft($autocompleteOptionActiveColor) + @include optionBorderLeft($autocompleteOptionActiveColor); } } @@ -95,8 +95,9 @@ &:focus .highlight { color: $autocompleteOptionHoverColor; - &, &:not(.sbb-option-multiple) { - @include optionBorderLeft($autocompleteOptionHoverColor) + &, + &:not(.sbb-option-multiple) { + @include optionBorderLeft($autocompleteOptionHoverColor); } } diff --git a/projects/sbb-esta/angular-public/src/lib/select/select.module.ts b/projects/sbb-esta/angular-public/src/lib/select/select.module.ts index 740e89674d..36486a18d9 100644 --- a/projects/sbb-esta/angular-public/src/lib/select/select.module.ts +++ b/projects/sbb-esta/angular-public/src/lib/select/select.module.ts @@ -1,8 +1,8 @@ import { OverlayModule } from '@angular/cdk/overlay'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { IconChevronSmallDownModule } from '@sbb-esta/angular-icons'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { OptionModule } from '../option/option.module'; diff --git a/projects/sbb-esta/angular-public/src/lib/svg-icons/webshop/utilization/icon-collection-webshop-utilization.module.ts b/projects/sbb-esta/angular-public/src/lib/svg-icons/webshop/utilization/icon-collection-webshop-utilization.module.ts index a6d2327c15..dbc9146ca7 100644 --- a/projects/sbb-esta/angular-public/src/lib/svg-icons/webshop/utilization/icon-collection-webshop-utilization.module.ts +++ b/projects/sbb-esta/angular-public/src/lib/svg-icons/webshop/utilization/icon-collection-webshop-utilization.module.ts @@ -9,15 +9,7 @@ import { IconUtilizationMediumModule } from './icon-utilization-medium.module'; /** @deprecated Use `@sbb-esta/angular-icons` instead. */ @NgModule({ - imports: [ - IconUtilizationHighModule, - IconUtilizationLowModule, - IconUtilizationMediumModule - ], - exports: [ - IconUtilizationHighModule, - IconUtilizationLowModule, - IconUtilizationMediumModule - ] + imports: [IconUtilizationHighModule, IconUtilizationLowModule, IconUtilizationMediumModule], + exports: [IconUtilizationHighModule, IconUtilizationLowModule, IconUtilizationMediumModule] }) export class IconCollectionWebshopUtilizationModule {} diff --git a/projects/sbb-esta/angular-public/src/lib/toggle/toggle-option/toggle-option.component.ts b/projects/sbb-esta/angular-public/src/lib/toggle/toggle-option/toggle-option.component.ts index 44c155b0b0..f73f12554a 100644 --- a/projects/sbb-esta/angular-public/src/lib/toggle/toggle-option/toggle-option.component.ts +++ b/projects/sbb-esta/angular-public/src/lib/toggle/toggle-option/toggle-option.component.ts @@ -9,11 +9,11 @@ import { forwardRef, HostBinding, Inject, + Injector, Input, TemplateRef, ViewChild, - ViewEncapsulation, - Injector + ViewEncapsulation } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { Subject } from 'rxjs'; diff --git a/projects/sbb-esta/angular-public/src/styles/typography/_form.scss b/projects/sbb-esta/angular-public/src/styles/typography/_form.scss index 5bd99655db..ed05669e62 100644 --- a/projects/sbb-esta/angular-public/src/styles/typography/_form.scss +++ b/projects/sbb-esta/angular-public/src/styles/typography/_form.scss @@ -36,7 +36,6 @@ } @mixin timeInputBase { - text-align: center; @include publicOnly() { diff --git a/sonar-project.properties b/sonar-project.properties index 2211eb2cd8..7cee308ad8 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -7,6 +7,6 @@ sonar.exclusions=**/node_modules/**,**/*.module.ts sonar.tests=projects/sbb-esta/angular-public/src sonar.test.inclusions=**/*.spec.ts sonar.typescript.lcov.reportPaths=coverage/sbb-esta/angular-public/lcov.info -sonar.typescript.tslint.reportPaths=lintReport.json +sonar.typescript.tslint.reportPaths=angularPublicLintReport.json,angularBusinessLintReport.json sonar.typescript.tsconfigPath=projects/sbb-esta/angular-public/tsconfig.lib.json sonar.testExecutionReportPaths=coverage/sbb-esta/angular-public/sonarqube.xml diff --git a/tslint.json b/tslint.json index 7261f86fbf..b5395b6007 100644 --- a/tslint.json +++ b/tslint.json @@ -80,7 +80,6 @@ // allow leading underscores for public properties and methods due to internals, all other rules still apply { "type": "member", - "modifiers": "public", "leadingUnderscore": "allow" }, // require leading underscores for private properties and methods, all other rules still apply