From aee13b8a4d23c04e9dc259f3dbe8e3ccb6fcb434 Mon Sep 17 00:00:00 2001 From: Park Byung Eun Date: Tue, 5 May 2020 21:06:50 +0900 Subject: [PATCH] sync --- package-lock.json | 924 +++++++++++------- package.json | 8 +- projects/ui-authentication/package.json | 2 +- .../src/lib/components/login.component.html | 5 +- projects/ui-group/ng-package.json | 1 + projects/ui-group/package.json | 2 +- .../lib/components/expansion.component.html | 97 ++ .../lib/components/expansion.component.scss | 0 .../components/expansion.component.spec.ts | 26 + .../components/expansion.component.stories.ts | 16 + .../src/lib/components/expansion.component.ts | 327 +++++++ projects/ui-group/src/lib/group-ui.module.ts | 21 +- projects/ui-group/src/public-api.ts | 2 +- projects/ui-organization/ng-package.json | 2 + projects/ui-organization/package.json | 2 +- .../profile-list-item.component.html | 1 + .../profile-list-item.component.scss | 0 .../profile-list-item.component.spec.ts | 26 + .../profile-list-item.component.stories.ts | 16 + .../components/profile-list-item.component.ts | 21 + .../src/lib/components/tree.component.html | 62 ++ .../src/lib/components/tree.component.scss | 0 .../src/lib/components/tree.component.spec.ts | 26 + .../lib/components/tree.component.stories.ts | 15 + .../src/lib/components/tree.component.ts | 169 ++++ .../src/lib/organization-ui.module.ts | 33 +- projects/ui-organization/src/public-api.ts | 3 + projects/ui/package.json | 2 +- .../float-action-button.component.html | 4 +- .../float-action-button.component.ts | 2 +- .../lib/components/split-button.component.ts | 4 +- .../virtual-scroll-tree-flat.data-source.ts | 41 +- ...virtual-scroll-viewport-patch.directive.ts | 12 +- 33 files changed, 1451 insertions(+), 421 deletions(-) create mode 100644 projects/ui-group/src/lib/components/expansion.component.html create mode 100644 projects/ui-group/src/lib/components/expansion.component.scss create mode 100644 projects/ui-group/src/lib/components/expansion.component.spec.ts create mode 100644 projects/ui-group/src/lib/components/expansion.component.stories.ts create mode 100644 projects/ui-group/src/lib/components/expansion.component.ts create mode 100644 projects/ui-organization/src/lib/components/profile-list-item.component.html create mode 100644 projects/ui-organization/src/lib/components/profile-list-item.component.scss create mode 100644 projects/ui-organization/src/lib/components/profile-list-item.component.spec.ts create mode 100644 projects/ui-organization/src/lib/components/profile-list-item.component.stories.ts create mode 100644 projects/ui-organization/src/lib/components/profile-list-item.component.ts create mode 100644 projects/ui-organization/src/lib/components/tree.component.html create mode 100644 projects/ui-organization/src/lib/components/tree.component.scss create mode 100644 projects/ui-organization/src/lib/components/tree.component.spec.ts create mode 100644 projects/ui-organization/src/lib/components/tree.component.stories.ts create mode 100644 projects/ui-organization/src/lib/components/tree.component.ts diff --git a/package-lock.json b/package-lock.json index 65592bb..e8cee95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,6 +155,12 @@ } } }, + "core-js": { + "version": "3.6.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, "json5": { "version": "2.1.3", "resolved": "https://nexus.loafle.net/repository/npm-all/json5/-/json5-2.1.3.tgz", @@ -164,6 +170,12 @@ "minimist": "^1.2.5" } }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, "rimraf": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/rimraf/-/rimraf-3.0.0.tgz", @@ -181,6 +193,12 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -218,6 +236,12 @@ "webpack-sources": "1.4.3" }, "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, "tslib": { "version": "1.10.0", "resolved": "https://nexus.loafle.net/repository/npm-all/tslib/-/tslib-1.10.0.tgz", @@ -275,24 +299,30 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, "@angular-devkit/schematics": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.1.tgz", - "integrity": "sha512-6wx2HcvafHvEjEa1tjDzW2hXrOiSE8ALqJUArb3+NoO1BDM42aGcqyPo0ODzKtDk12CgSsFXdNKRpQ5AmpSPtw==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.3.tgz", + "integrity": "sha512-nNRoQPqoin5jzLKmTabIPLSqVw2Zjnk78XC4AhAM7rSisWMsZ6pw5+BNDITiKfq0LkSXfOs0DoJV/Vr9mLkn/A==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", + "@angular-devkit/core": "9.1.3", "ora": "4.0.3", "rxjs": "6.5.4" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.3.tgz", + "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", "dev": true, "requires": { "ajv": "6.12.0", @@ -343,13 +373,19 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, "@angular/animations": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/animations/-/animations-9.1.2.tgz", - "integrity": "sha512-5UJ8SzCtFj4vZChVsni4K9oa4qE9tQ67bwnP6DKxkLEJKQWWyasYp+2siAi/7zD2ro2XA0qRMYhgQz5Vj6eBoQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/animations/-/animations-9.1.3.tgz", + "integrity": "sha512-QTQZSnXxr9SCgrN2SZsTMzS/UldrZ65y6Kuqs9yyghNc694eMbabgiPdeegjvcKlDhVPCN2x9Bjfb1vXPOfdvQ==", "dev": true }, "@angular/cdk": { @@ -371,16 +407,16 @@ } }, "@angular/cli": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.1.1.tgz", - "integrity": "sha512-sjRAV4UF8M5v+2gw+EwCYSgciBZDc05AbNxQt+uUdxdfR1QU9hifWq8WDxfOR6jdDP5YqMtQsNaFNwrUyjJJoQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.1.3.tgz", + "integrity": "sha512-/7yHOuiyMgpcoBuADPrF4Eo9VDysA57fsyrMlOH2WZmKdsjW032StS9EIOue5RNQ7y0DwrtgtnkjbpZ6nYo3Pw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.1", - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1", - "@schematics/angular": "9.1.1", - "@schematics/update": "0.901.1", + "@angular-devkit/architect": "0.901.3", + "@angular-devkit/core": "9.1.3", + "@angular-devkit/schematics": "9.1.3", + "@schematics/angular": "9.1.3", + "@schematics/update": "0.901.3", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", @@ -399,19 +435,19 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.901.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.901.1.tgz", - "integrity": "sha512-foWDAurMfBDYLAJxHpTFkJBub1c2A8+eWHbBjgqIHmT8xadnE7t8nSA9XDl+k/kIoWw/qFU+6IttPirudYc/vw==", + "version": "0.901.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.901.3.tgz", + "integrity": "sha512-CFjSj48nOJwejmFFtenIqSZWyxRe4fRQsg16l0R4sagW7YwMJSaW6Yl9hRHM8bviPRrTpGHnxeq1x506v1ARLw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", + "@angular-devkit/core": "9.1.3", "rxjs": "6.5.4" } }, "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.3.tgz", + "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", "dev": true, "requires": { "ajv": "6.12.0", @@ -485,6 +521,12 @@ "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, "uuid": { "version": "7.0.2", "resolved": "https://nexus.loafle.net/repository/npm-all/uuid/-/uuid-7.0.2.tgz", @@ -494,21 +536,21 @@ } }, "@angular/common": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/common/-/common-9.1.2.tgz", - "integrity": "sha512-MAQW0DGq2NhvJSETLTwuImdzwI+wboG+5Uzgc0L8C/hX7SrEE65Hmz4nIjmGi2CPGLpodfWEcCPlV0R0dHun4A==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/common/-/common-9.1.3.tgz", + "integrity": "sha512-OGrd/x+WoceskeJWZI3ur+KqVoBHn2kmbg57RyJ8Ng/BkdDVYiXzQ/UvvX1WYGH/YzmiiVdlnVq55xkHkzGaXw==", "dev": true }, "@angular/compiler": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler/-/compiler-9.1.2.tgz", - "integrity": "sha512-82DitvlZA5DoE++qiiJdgx6HE71h96sfLHCjjvYJHApoOcnX+zBZFBrflpbXK9W4YdvydU4Lc1Ql1eleQPeT/g==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler/-/compiler-9.1.3.tgz", + "integrity": "sha512-NTqGZUwwdm/RIG1rWPIqQwNyyRcPOmNlv+t1KpydFtycpTut0lAh0shiu57h83Cl2LgaFV4veyiAAtNmxFmqXA==", "dev": true }, "@angular/compiler-cli": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler-cli/-/compiler-cli-9.1.2.tgz", - "integrity": "sha512-zC/oIuT68vtuiYrgXqWsDNi/0DQ1Ti6J6gMTrXVvZXlEDikEExTAJKrrBV5jo6B0bpUofe/dDcJaKR3Ys3cM3Q==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler-cli/-/compiler-cli-9.1.3.tgz", + "integrity": "sha512-FqDPmEbJQmzzxqF08CJfqT9XKJFPYdyZuFFStKkJEZ5s1JrjrBlgQSqdF0qp5jWNsjTB87USLHC5zAlzJtMKxQ==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -714,9 +756,9 @@ } }, "@angular/core": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/core/-/core-9.1.2.tgz", - "integrity": "sha512-nAqRl+5drAnZlBT7AgSo2JJubmPNrGCvhZ83dosPEUqJoLr69/lYipnF/iqKzYn5xo4MM1O27WIhSNDtDjBmzQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/core/-/core-9.1.3.tgz", + "integrity": "sha512-r+GyeCuBw9SUBzpPWhKxzTOkNYotYp3gANSWndihLC9P6W5T8Hfyg8uYcxKy7L42bpx8eXZOXFq91cioVwZtqA==", "dev": true }, "@angular/flex-layout": { @@ -726,15 +768,15 @@ "dev": true }, "@angular/forms": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/forms/-/forms-9.1.2.tgz", - "integrity": "sha512-/f2WhMiKDo1/RoisTI71Dy4Z4+sAsAuzgIxJEXvgDGSYvzLl9G8erFx4N6be8Cy/xXwErmp3JOwXIAXjzxF8tA==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/forms/-/forms-9.1.3.tgz", + "integrity": "sha512-t3BexN5EHgCK6q0R04AuyNb6ZUP6sd9fJ+ER98yWws3HXV6FT+J5IB7dVnhelLoU1GTnql4TJSS+LTVradKZ7g==", "dev": true }, "@angular/language-service": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/language-service/-/language-service-9.1.2.tgz", - "integrity": "sha512-0BnDIFbIAtFKS/2HDI0efcnW3DSkAAFhUWluBnssvwGzuMHikOKGeamuWM27ki3IzPQKGJ7fGS2fz8A7sMeIYQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/language-service/-/language-service-9.1.3.tgz", + "integrity": "sha512-mcZDO6C2BpDinMjDeMAdohTefpFxNu/S0JEqewYQIQ8TXtKm77xDPUdNdNb4qD4zYW+c46f7UXNMX/tbYCicQw==", "dev": true }, "@angular/material": { @@ -750,21 +792,21 @@ "dev": true }, "@angular/platform-browser": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser/-/platform-browser-9.1.2.tgz", - "integrity": "sha512-/3L4DdvnebvaJUurusaq8RJBFfr/SHWG6DMmV1VVpADxe8kjREyN0LdNDSkZgVf/QcUSwNEA6153iwcF92Otew==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser/-/platform-browser-9.1.3.tgz", + "integrity": "sha512-ts6b7QBp4+UpuQS0Eb+FOT4MZVPUwWtWH4iIfBILJaG/0Bk4jHZeXuLFcpgeZkwMNCZEt9f0JrhnHfvuLCez5g==", "dev": true }, "@angular/platform-browser-dynamic": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.2.tgz", - "integrity": "sha512-BWHxy8S71z+NmUQmtR+/Dkohlj3LQIXltOqeVdCSpjV9cultBNN3bE1w0Rjp3BmCRGCIDH7qFlr4U5woHa7ldw==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.3.tgz", + "integrity": "sha512-9U8PkBflnQtKIZ4t0AqYUaKLg7Kx1BvJ1D/S8FZo/V5kBJK6NkGVu58XddWVc+dtO3V+vCC/VLG7fb2PMf/V5g==", "dev": true }, "@angular/router": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/router/-/router-9.1.2.tgz", - "integrity": "sha512-csxE4HkuhVR1X932Q3kSDqBoF7Awuq5dsjv0nFk78raiHgG3CNnfMLHt8xD9XtOmR7ZT+D4yh/YmIK6W7J5hbQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/router/-/router-9.1.3.tgz", + "integrity": "sha512-NmOazeJ2WVT5eTyNHXYxBRAHic6i6Ku5DgsGWBgjUIR/Qmwb/i/xpagbA9WQQZ2OrGbp4ICEYgGkikeIrlQLPA==", "dev": true }, "@babel/code-frame": { @@ -825,12 +867,6 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -844,14 +880,6 @@ "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/helper-annotate-as-pure": { @@ -1606,13 +1634,6 @@ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", "requires": { "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - } } }, "@babel/template": { @@ -1654,12 +1675,6 @@ "lodash": "^4.17.13", "source-map": "^0.5.0" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -1940,19 +1955,19 @@ } }, "@schematics/angular": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.1.1.tgz", - "integrity": "sha512-V0DcDNgHQ2YR+PGZI6+pf/mUNNxt5SusShkZ1PbwIMk/HUQpzEGkLjm3v1Jw9eIZKiuDx615GNU1xDzQ/KyNRQ==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.1.3.tgz", + "integrity": "sha512-3vxrPyvcIWvyWgbx/fpeQvMThXlmcnHTXVn2dpTcE2BzstAYdG17W3qouhvmlqd6m28orxkKKiZaJYMNTtnV/A==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1" + "@angular-devkit/core": "9.1.3", + "@angular-devkit/schematics": "9.1.3" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.3.tgz", + "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", "dev": true, "requires": { "ajv": "6.12.0", @@ -2003,17 +2018,23 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, "@schematics/update": { - "version": "0.901.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.901.1.tgz", - "integrity": "sha512-g5B8hjXKCbUNLKCkWQxc5r2D9lOQXRTLZJNIqva+l/ck0AML5MpelxkqQId9ZGLfQqfFk/XjdSHRWgcmUs1WnA==", + "version": "0.901.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.901.3.tgz", + "integrity": "sha512-kwfc9LMMi6ryN2oiat9vTqGMK1jKwI1c45Nm1xala35nsbQSQ12qeL3MrVmnSCeI14+cinFUbp8mWI9/3M+/Lg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.1", - "@angular-devkit/schematics": "9.1.1", + "@angular-devkit/core": "9.1.3", + "@angular-devkit/schematics": "9.1.3", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", @@ -2024,9 +2045,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.1.tgz", - "integrity": "sha512-57MNew2u1QwVb69jxZyhXgdW9kqcGyWyRy2ui/hWCkWLg7RumWtyypmdTs89FNExB4HqtXlQ2eO3JZxfs7QR3w==", + "version": "9.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.3.tgz", + "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", "dev": true, "requires": { "ajv": "6.12.0", @@ -2083,6 +2104,12 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.1.3.tgz", "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -2137,13 +2164,6 @@ "react-color": "^2.17.0", "react-lifecycles-compat": "^3.0.4", "react-select": "^3.0.8" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" - } } }, "@storybook/addon-links": { @@ -2162,14 +2182,6 @@ "prop-types": "^15.7.2", "qs": "^6.6.0", "ts-dedent": "^1.1.0" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true - } } }, "@storybook/addon-notes": { @@ -2296,26 +2308,6 @@ "stable": "^0.1.8", "ts-dedent": "^1.1.0", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "is-plain-object": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "requires": { - "isobject": "^4.0.0" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - }, - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" - } } }, "@storybook/client-logger": { @@ -2644,18 +2636,6 @@ } } }, - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.6.1.tgz", @@ -2760,13 +2740,6 @@ "memoizerific": "^1.11.3", "qs": "^6.6.0", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" - } } }, "@storybook/theming": { @@ -2786,13 +2759,6 @@ "prop-types": "^15.7.2", "resolve-from": "^5.0.0", "ts-dedent": "^1.1.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - } } }, "@storybook/ui": { @@ -2835,20 +2801,6 @@ "store2": "^2.7.1", "telejson": "^3.2.0", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, "@szmarczak/http-timer": { @@ -2990,9 +2942,9 @@ } }, "@types/node": { - "version": "12.12.36", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/node/-/node-12.12.36.tgz", - "integrity": "sha512-hmmypvyO/uTLFYCYu6Hlb3ydeJ11vXRxg8/WJ0E3wvwmPO0y47VqnfmXFVuWlysO0Zyj+je1Y33rQeuYkZ51GQ==", + "version": "12.12.37", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/node/-/node-12.12.37.tgz", + "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==", "dev": true }, "@types/normalize-package-data": { @@ -3380,29 +3332,28 @@ "dev": true }, "@ucap/ng-ui": { - "version": "file:pack/ucap-ng-ui-0.0.4.tgz", - "integrity": "sha512-LJjNjE426sbGOo8rc7KNMN+yI4yhqcuqgHwKPbjy7Of/y9VaFFbNZhIerlYA9U3lQf2X/qQmZ2Mwc5ct40iGVA==", + "version": "file:pack/ucap-ng-ui-0.0.5.tgz", + "integrity": "sha512-wPvFlE665jMppq8oq3oESeaLP2SjdP+mqoJlEpxf4Dc2psNyZ93bR/+/Cj6PwZz0TYIXc8ah6pdYTWI3140hOw==", "dev": true }, "@ucap/ng-ui-authentication": { - "version": "file:pack/ucap-ng-ui-authentication-0.0.16.tgz", - "integrity": "sha512-P0ZIx60oYuwRc4MlXaJwEpCtolrxbjDvCMrJF3zq6FQnKTxo5cRAoOPX8UGkVxkoDRFj94XIL7MZKPE/eMT0jQ==", + "version": "file:pack/ucap-ng-ui-authentication-0.0.19.tgz", + "integrity": "sha512-bzGQjmGTL8G1Awkz2zqGoqo/ODHh0jzCnBiwrRfJti4/IhCjCPcfG85DU8wRh6WW4Mij6CG0/h6D7SwcjJg9bQ==", "dev": true }, "@ucap/ng-ui-group": { - "version": "file:pack/ucap-ng-ui-group-0.0.4.tgz", - "integrity": "sha512-uRQGD9wWmEexu8sxEWQyb0207vzVaqT48CPgX5xUsKKf2B1G/wIe1aXZS/JkSAAmPr8t/1rn0EapSpMetj28eA==", + "version": "file:pack/ucap-ng-ui-group-0.0.27.tgz", + "integrity": "sha512-lVz68N1GHA8Ii+KsKcRp092ji+R/0U6u/5gWUinvO0bvPg0fL91DE556Tk07jHi+j7rgNp3KSsu/Se2RfYV/PA==", "dev": true }, "@ucap/ng-ui-organization": { - "version": "file:pack/ucap-ng-ui-organization-0.0.2.tgz", - "integrity": "sha512-YiuoK/P/rVLJ++aTlUqioX+sQ0Q6xJR/W0P9wLx6vBaw7let+emzXH+yJWDcLwCZTeXBJrXJe54slW1bqMARSw==", + "version": "file:pack/ucap-ng-ui-organization-0.0.12.tgz", + "integrity": "sha512-AEDukfFuW9+s2z0iRiJnuRxCGiaZhAyL8qTtAd0m1r9pZebyAcu4Pub4O3VhmgF1Wook3GJ1CdBpzWAQBoks0w==", "dev": true }, "@ucap/ng-ui-skin-default": { "version": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz", - "integrity": "sha512-lX5Idywy0jspDFDFHy9y0Wz048ReIM0/+6melCfDzMOeIb3UVf8U6Ata10ivZzkVHmISQOtukUG1P2IAb1NbYA==", - "dev": true + "integrity": "sha512-lX5Idywy0jspDFDFHy9y0Wz048ReIM0/+6melCfDzMOeIb3UVf8U6Ata10ivZzkVHmISQOtukUG1P2IAb1NbYA==" }, "@ucap/ng-web-socket": { "version": "file:pack/ucap-ng-web-socket-0.0.2.tgz", @@ -4489,9 +4440,9 @@ "dev": true }, "babel-plugin-dynamic-import-node": { - "version": "2.3.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.2.tgz", - "integrity": "sha512-yvczAMjbc73xira9yTyF1XnEmkX8QwlUhmxuhimeMUeAaA6s7busTPRVDzhVG7eeBdNcRiZ/mAwFrJ9It4vQcg==", + "version": "2.3.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -4512,13 +4463,6 @@ "escape-string-regexp": "^1.0.5", "find-root": "^1.1.0", "source-map": "^0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } } }, "babel-plugin-macros": { @@ -4529,50 +4473,6 @@ "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } } }, "babel-plugin-minify-builtins": { @@ -4841,6 +4741,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -5360,6 +5266,14 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "cacheable-request": { @@ -5419,6 +5333,14 @@ "dev": true, "requires": { "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } } }, "caller-path": { @@ -5437,10 +5359,9 @@ "dev": true }, "callsites": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camel-case": { "version": "4.1.1", @@ -5639,6 +5560,12 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -5763,6 +5690,23 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "clone-response": { @@ -5808,12 +5752,6 @@ "sprintf-js": "^1.1.2" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://nexus.loafle.net/repository/npm-all/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -6160,9 +6098,9 @@ }, "dependencies": { "make-dir": { - "version": "3.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -6387,9 +6325,9 @@ } }, "core-js": { - "version": "3.6.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "version": "3.6.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" }, "core-js-compat": { "version": "3.6.5", @@ -6429,26 +6367,18 @@ "requires": { "resolve-from": "^5.0.0", "webpack": "^4.38.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, "coverage-istanbul-loader": { @@ -6792,6 +6722,46 @@ "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/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" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "cssnano-preset-default": { @@ -7117,6 +7087,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -7297,6 +7273,23 @@ "dev": true, "requires": { "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "dns-equal": { @@ -7504,9 +7497,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.414", - "resolved": "https://nexus.loafle.net/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.3.414.tgz", - "integrity": "sha512-UfxhIvED++qLwWrAq9uYVcqF8FdeV9sU2S7qhiHYFODxzXRrd1GZRl/PjITHsTEejgibcWDraD8TQqoHb1aCBQ==", + "version": "1.3.415", + "resolved": "https://nexus.loafle.net/repository/npm-all/electron-to-chromium/-/electron-to-chromium-1.3.415.tgz", + "integrity": "sha512-GbtYqKffx3sU8G0HxwXuJFfs58Q7+iwLa5rBwaULwET6jWW8IAQSrVnu7vEfiUIcMVfbYyFg7cw3zdm+EbBJmw==", "dev": true }, "element-resize-detector": { @@ -8080,6 +8073,21 @@ "requires": { "is-plain-object": "^2.0.4" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -8412,9 +8420,9 @@ } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -9074,6 +9082,14 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "has-values": { @@ -9581,13 +9597,19 @@ } }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, + "version": "3.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } } }, "import-from": { @@ -9597,6 +9619,14 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "import-lazy": { @@ -10020,9 +10050,9 @@ "dev": true }, "is-function": { - "version": "1.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + "version": "1.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, "is-glob": { "version": "4.0.1", @@ -10129,12 +10159,11 @@ "dev": true }, "is-plain-object": { - "version": "2.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", "requires": { - "isobject": "^3.0.1" + "isobject": "^4.0.0" } }, "is-promise": { @@ -10267,10 +10296,9 @@ "dev": true }, "isobject": { - "version": "3.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" }, "isstream": { "version": "0.1.2", @@ -10879,6 +10907,16 @@ "strip-bom": "^3.0.0" }, "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/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" + } + }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -11426,6 +11464,12 @@ } } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "to-regex-range": { "version": "2.1.1", "resolved": "https://nexus.loafle.net/repository/npm-all/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -11651,6 +11695,21 @@ "requires": { "is-plain-object": "^2.0.4" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -11937,18 +11996,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, "read-pkg": { "version": "5.2.0", "resolved": "https://nexus.loafle.net/repository/npm-all/read-pkg/-/read-pkg-5.2.0.tgz", @@ -12289,6 +12336,21 @@ "string.prototype.padend": "^3.0.0" }, "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "read-pkg": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz", @@ -12418,6 +12480,14 @@ "dev": true, "requires": { "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "object.assign": { @@ -12472,6 +12542,14 @@ "dev": true, "requires": { "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "object.values": { @@ -12949,13 +13027,6 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } } }, "parse-asn1": { @@ -12986,13 +13057,14 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, "parse5": { @@ -13089,21 +13161,9 @@ "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pbkdf2": { "version": "3.0.17", @@ -13489,6 +13549,46 @@ "requires": { "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/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" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "postcss-loader": { @@ -14225,12 +14325,6 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "source-map-support": { "version": "0.4.18", "resolved": "https://nexus.loafle.net/repository/npm-all/source-map-support/-/source-map-support-0.4.18.tgz", @@ -14370,10 +14464,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "version": "6.9.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" }, "query-string": { "version": "4.3.4", @@ -15389,6 +15482,12 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", @@ -15468,6 +15567,15 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "path-type": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -15759,6 +15867,16 @@ "pify": "^3.0.0" }, "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/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" + } + }, "pify": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", @@ -15777,6 +15895,21 @@ "read-pkg": "^3.0.0" }, "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "read-pkg": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/read-pkg/-/read-pkg-3.0.0.tgz", @@ -15910,10 +16043,9 @@ } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", - "dev": true + "version": "0.13.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, "regenerator-transform": { "version": "0.14.4", @@ -16092,6 +16224,14 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } } }, "require-directory": { @@ -16118,9 +16258,9 @@ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, "resolve": { - "version": "1.16.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve/-/resolve-1.16.1.tgz", - "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "version": "1.17.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -16132,13 +16272,20 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, "resolve-url": { "version": "0.2.1", @@ -16753,6 +16900,21 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -16952,12 +17114,6 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -17009,6 +17165,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -17245,10 +17407,9 @@ "dev": true }, "source-map": { - "version": "0.7.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "version": "0.5.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-loader": { "version": "0.2.4", @@ -17801,6 +17962,12 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -17921,13 +18088,6 @@ "isobject": "^4.0.0", "lodash": "^4.17.15", "memoizerific": "^1.11.3" - }, - "dependencies": { - "isobject": { - "version": "4.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - } } }, "term-size": { @@ -18037,9 +18197,9 @@ } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -18650,6 +18810,12 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -19674,6 +19840,12 @@ "kind-of": "^3.0.2" } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", @@ -20616,6 +20788,12 @@ "kind-of": "^3.0.2" } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://nexus.loafle.net/repository/npm-all/kind-of/-/kind-of-3.2.2.tgz", diff --git a/package.json b/package.json index 98ca08c..67d7bd0 100644 --- a/package.json +++ b/package.json @@ -182,10 +182,10 @@ "@ucap/ng-store-chat": "file:pack/ucap-ng-store-chat-0.0.5.tgz", "@ucap/ng-store-group": "file:pack/ucap-ng-store-group-0.0.6.tgz", "@ucap/ng-store-organization": "file:pack/ucap-ng-store-organization-0.0.4.tgz", - "@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.4.tgz", - "@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.16.tgz", - "@ucap/ng-ui-group": "file:pack/ucap-ng-ui-group-0.0.4.tgz", - "@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.2.tgz", + "@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.5.tgz", + "@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.19.tgz", + "@ucap/ng-ui-group": "file:pack/ucap-ng-ui-group-0.0.27.tgz", + "@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.12.tgz", "@ucap/ng-ui-skin-default": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz", "@ucap/ng-web-socket": "file:pack/ucap-ng-web-socket-0.0.2.tgz", "@ucap/ng-web-storage": "file:pack/ucap-ng-web-storage-0.0.3.tgz", diff --git a/projects/ui-authentication/package.json b/projects/ui-authentication/package.json index 26af9e7..35fc791 100644 --- a/projects/ui-authentication/package.json +++ b/projects/ui-authentication/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-authentication", - "version": "0.0.16", + "version": "0.0.19", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, diff --git a/projects/ui-authentication/src/lib/components/login.component.html b/projects/ui-authentication/src/lib/components/login.component.html index 609dc27..f04f718 100644 --- a/projects/ui-authentication/src/lib/components/login.component.html +++ b/projects/ui-authentication/src/lib/components/login.component.html @@ -10,17 +10,18 @@ {{ company.companyName }} + > + {{ company.companyName }}
- 12345 diff --git a/projects/ui-group/ng-package.json b/projects/ui-group/ng-package.json index dcf91b0..8462562 100644 --- a/projects/ui-group/ng-package.json +++ b/projects/ui-group/ng-package.json @@ -4,6 +4,7 @@ "lib": { "entryFile": "src/public-api.ts", "umdModuleIds": { + "ngx-perfect-scrollbar": "ngx-perfect-scrollbar", "@ucap/core": "@ucap/core", "@ucap/ng-ui": "@ucap/ng-ui" } diff --git a/projects/ui-group/package.json b/projects/ui-group/package.json index 96086ed..37360d9 100644 --- a/projects/ui-group/package.json +++ b/projects/ui-group/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-group", - "version": "0.0.4", + "version": "0.0.27", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, diff --git a/projects/ui-group/src/lib/components/expansion.component.html b/projects/ui-group/src/lib/components/expansion.component.html new file mode 100644 index 0000000..14499e5 --- /dev/null +++ b/projects/ui-group/src/lib/components/expansion.component.html @@ -0,0 +1,97 @@ +
+ + + + + +
  • +
    + +
    +
  • +
    + + +
  • +
    + +
    + + + + + + + + +
    + + + + +
    +
      +
      +
      + +
      +
    +
  • +
    +
    +
    +
    diff --git a/projects/ui-group/src/lib/components/expansion.component.scss b/projects/ui-group/src/lib/components/expansion.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/ui-group/src/lib/components/expansion.component.spec.ts b/projects/ui-group/src/lib/components/expansion.component.spec.ts new file mode 100644 index 0000000..31dc1f4 --- /dev/null +++ b/projects/ui-group/src/lib/components/expansion.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ExpansionComponent } from './expansion.component'; + +describe('ucap::ui-group::ExpansionComponent', () => { + let component: ExpansionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ExpansionComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ExpansionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-group/src/lib/components/expansion.component.stories.ts b/projects/ui-group/src/lib/components/expansion.component.stories.ts new file mode 100644 index 0000000..6b76402 --- /dev/null +++ b/projects/ui-group/src/lib/components/expansion.component.stories.ts @@ -0,0 +1,16 @@ +import { action } from '@storybook/addon-actions'; +import { linkTo } from '@storybook/addon-links'; + +import { ExpansionComponent } from './expansion.component'; + +export default { + title: 'ExpansionComponent', + component: ExpansionComponent +}; + +export const Text = () => ({ + component: ExpansionComponent, + props: { + text: 'Hello ExpansionComponent' + } +}); diff --git a/projects/ui-group/src/lib/components/expansion.component.ts b/projects/ui-group/src/lib/components/expansion.component.ts new file mode 100644 index 0000000..5557a36 --- /dev/null +++ b/projects/ui-group/src/lib/components/expansion.component.ts @@ -0,0 +1,327 @@ +import { + Component, + OnInit, + OnDestroy, + Input, + Output, + EventEmitter, + ViewChild, + ContentChild, + TemplateRef, + ChangeDetectionStrategy, + ChangeDetectorRef, + Directive +} from '@angular/core'; + +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { FlatTreeControl } from '@angular/cdk/tree'; + +import { MatTreeFlattener, MatTree } from '@angular/material/tree'; + +import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; + +import { VirtualScrollTreeFlatDataSource } from '@ucap/ng-ui'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; + +export enum NodeType { + None = 'None', + Profile = 'Profile', + Favorite = 'Favorite', + Buddy = 'Buddy', + Default = 'Default' +} + +export interface GroupNode { + nodeType: NodeType; + userInfo?: UserInfo; + groupDetail?: GroupDetailData; + children?: GroupNode[]; +} + +export interface FlatNode { + expandable: boolean; + level: number; + node: GroupNode; +} + +@Directive({ + selector: '[ucapGroupExpansionNode]' +}) +export class ExpansionNodeDirective {} + +@Directive({ + selector: '[ucapGroupExpansionFavoriteHeader]' +}) +export class ExpansionFavoriteHeaderDirective {} + +@Directive({ + selector: '[ucapGroupExpansionDefaultHeader]' +}) +export class ExpansionDefaultHeaderDirective {} + +@Directive({ + selector: '[ucapGroupExpansionBuddyHeader]' +}) +export class ExpansionBuddyHeaderDirective {} + +@Component({ + selector: 'ucap-group-expansion', + templateUrl: './expansion.component.html', + styleUrls: ['./expansion.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ExpansionComponent implements OnInit, OnDestroy { + @Input() + displayOrder: NodeType[] = []; + + @Input() + set profile(userInfo: UserInfo) { + if (!userInfo) { + this.nodeMap.set(NodeType.Profile, []); + } else { + const node: GroupNode = { + nodeType: NodeType.Profile, + userInfo, + children: [] + }; + + this.nodeMap.set(NodeType.Profile, [node]); + } + + this.refreshNodes(); + } + + @Input() + set favorites(userInfos: UserInfo[]) { + if (!userInfos || 0 === userInfos.length) { + this.nodeMap.set(NodeType.Favorite, []); + } else { + const node: GroupNode = { + nodeType: NodeType.Favorite, + groupDetail: { + seq: -9999, + name: NodeType.Favorite, + isActive: true, + userSeqs: userInfos.map((userInfo) => String(userInfo.seq)) + } as GroupDetailData, + children: [] + }; + + userInfos.forEach((userInfo) => { + node.children.push({ + nodeType: NodeType.Favorite, + userInfo + }); + }); + + this.nodeMap.set(NodeType.Favorite, [node]); + } + + this.refreshNodes(); + } + + @Input() + set groupBuddies(list: { group: GroupDetailData; buddyList: UserInfo[] }[]) { + if (!list || 0 === list.length) { + this.nodeMap.set(NodeType.Default, []); + this.nodeMap.set(NodeType.Buddy, []); + } else { + this.nodeMap.set(NodeType.Default, []); + this.nodeMap.set(NodeType.Buddy, []); + + for (const item of list) { + let nodeType = NodeType.Buddy; + if (0 === item.group.seq) { + nodeType = NodeType.Default; + } + + const node: GroupNode = { + nodeType, + groupDetail: item.group, + children: [] + }; + + item.buddyList.sort((a, b) => + a.order < b.order + ? -1 + : a.order > b.order + ? 1 + : a.name < b.name + ? -1 + : a.name > b.name + ? 1 + : 0 + ); + + item.buddyList.forEach((userInfo) => { + node.children.push({ + nodeType, + groupDetail: item.group, + userInfo + }); + }); + + if (NodeType.Buddy === nodeType) { + this.nodeMap.get(NodeType.Buddy).push(node); + } else { + this.nodeMap.get(NodeType.Default).push(node); + } + } + } + + this.refreshNodes(); + } + + @Input() + checkable = false; + + @Input() + selectedUserList?: (UserInfo | UserInfoSS | UserInfoF | UserInfoDN)[] = []; + + @Input() + unselectableUserList?: ( + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + )[] = []; + + @ViewChild('treeList', { static: false }) + treeList: MatTree; + + @ViewChild('cvsvList', { static: false }) + cvsvList: CdkVirtualScrollViewport; + + @ContentChild(ExpansionNodeDirective, { + read: TemplateRef, + static: false + }) + nodeTemplate: TemplateRef; + + @ContentChild(ExpansionFavoriteHeaderDirective, { + read: TemplateRef, + static: false + }) + favoriteHeaderTemplate: TemplateRef; + + @ContentChild(ExpansionDefaultHeaderDirective, { + read: TemplateRef, + static: false + }) + defaultHeaderTemplate: TemplateRef; + + @ContentChild(ExpansionBuddyHeaderDirective, { + read: TemplateRef, + static: false + }) + buddyHeaderTemplate: TemplateRef; + + treeControl: FlatTreeControl; + treeFlattener: MatTreeFlattener; + dataSource: VirtualScrollTreeFlatDataSource; + + NodeType = NodeType; + + private nodeMap: Map = new Map(); + + constructor(private changeDetectorRef: ChangeDetectorRef) { + this.treeControl = new FlatTreeControl( + (node) => node.level, + (node) => node.expandable + ); + + this.treeFlattener = new MatTreeFlattener( + (node: GroupNode, level: number) => { + return { + expandable: !!node.children && node.children.length > 0, + level, + nodeType: node.nodeType, + node + }; + }, + (node) => node.level, + (node) => node.expandable, + (node) => node.children + ); + + this.dataSource = new VirtualScrollTreeFlatDataSource( + this.treeControl, + this.treeFlattener + ); + } + + ngOnInit(): void { + this.dataSource.cdkVirtualScrollViewport = this.cvsvList; + } + + ngOnDestroy(): void {} + + onClickHeaderMenu(event: MouseEvent, node: FlatNode) {} + + isCheckedGroup(node: FlatNode): boolean { + const groupDetail = node.node.groupDetail; + + if (!groupDetail || groupDetail === undefined) { + return false; + } + + if (groupDetail.userSeqs.length === 0) { + return false; + } + + if (!!this.selectedUserList && this.selectedUserList.length > 0) { + let allExist = true; + groupDetail.userSeqs.some((seq) => { + if ( + this.selectedUserList.filter((item) => item.seq === seq).length === 0 + ) { + allExist = false; + return true; + } + }); + return allExist; + } + return false; + } + + isCheckableGroup(node: FlatNode): boolean { + if (!!this.unselectableUserList && this.unselectableUserList.length > 0) { + const groupDetail = node.node.groupDetail; + let allExist = true; + groupDetail.userSeqs.some((seq) => { + if ( + this.unselectableUserList.filter((item) => item.seq === seq) + .length === 0 + ) { + allExist = false; + return true; + } + }); + + if (allExist) { + return false; + } + } + + return true; + } + + onChangeCheckGroup(value: boolean, node: FlatNode) {} + + isHeader = (_: number, node: FlatNode) => + NodeType.Profile !== node.node.nodeType && 0 === node.level; + + private refreshNodes() { + const rootNode: GroupNode[] = []; + + for (const nodeType of this.displayOrder) { + const subNode = this.nodeMap.get(nodeType); + if (!!subNode && 0 < subNode.length) { + rootNode.push(...subNode); + } + } + + this.dataSource.data = rootNode; + this.changeDetectorRef.detectChanges(); + } +} diff --git a/projects/ui-group/src/lib/group-ui.module.ts b/projects/ui-group/src/lib/group-ui.module.ts index 3c6a14e..61188aa 100644 --- a/projects/ui-group/src/lib/group-ui.module.ts +++ b/projects/ui-group/src/lib/group-ui.module.ts @@ -1,6 +1,8 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { FlexLayoutModule } from '@angular/flex-layout'; + import { ScrollingModule } from '@angular/cdk/scrolling'; import { MatRippleModule } from '@angular/material/core'; @@ -16,12 +18,23 @@ import { UiModule } from '@ucap/ng-ui'; import { ModuleConfig } from './config/module-config'; import { _MODULE_CONFIG } from './config/token'; -import { ExpansionListComponent } from './components/expansion-list.component'; +import { + ExpansionComponent, + ExpansionNodeDirective, + ExpansionFavoriteHeaderDirective, + ExpansionBuddyHeaderDirective, + ExpansionDefaultHeaderDirective +} from './components/expansion.component'; -const COMPONENTS = [ExpansionListComponent]; +const COMPONENTS = [ExpansionComponent]; const DIALOGS = []; const PIPES = []; -const DIRECTIVES = []; +const DIRECTIVES = [ + ExpansionNodeDirective, + ExpansionFavoriteHeaderDirective, + ExpansionBuddyHeaderDirective, + ExpansionDefaultHeaderDirective +]; const SERVICES = []; @NgModule({ @@ -34,6 +47,8 @@ export class GroupUiRootModule {} @NgModule({ imports: [ CommonModule, + + FlexLayoutModule, ScrollingModule, MatButtonModule, diff --git a/projects/ui-group/src/public-api.ts b/projects/ui-group/src/public-api.ts index 2001585..59f0846 100644 --- a/projects/ui-group/src/public-api.ts +++ b/projects/ui-group/src/public-api.ts @@ -4,6 +4,6 @@ export * from './lib/config/module-config'; -export * from './lib/components/expansion-list.component'; +export * from './lib/components/expansion.component'; export * from './lib/group-ui.module'; diff --git a/projects/ui-organization/ng-package.json b/projects/ui-organization/ng-package.json index 02ce55b..cafcd99 100644 --- a/projects/ui-organization/ng-package.json +++ b/projects/ui-organization/ng-package.json @@ -4,7 +4,9 @@ "lib": { "entryFile": "src/public-api.ts", "umdModuleIds": { + "ngx-perfect-scrollbar": "ngx-perfect-scrollbar", "@ucap/core": "@ucap/core", + "@ucap/ng-logger": "@ucap/ng-logger", "@ucap/ng-ui": "@ucap/ng-ui" } } diff --git a/projects/ui-organization/package.json b/projects/ui-organization/package.json index b6466aa..a78f9da 100644 --- a/projects/ui-organization/package.json +++ b/projects/ui-organization/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui-organization", - "version": "0.0.2", + "version": "0.0.12", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, diff --git a/projects/ui-organization/src/lib/components/profile-list-item.component.html b/projects/ui-organization/src/lib/components/profile-list-item.component.html new file mode 100644 index 0000000..906280c --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-list-item.component.html @@ -0,0 +1 @@ +
    diff --git a/projects/ui-organization/src/lib/components/profile-list-item.component.scss b/projects/ui-organization/src/lib/components/profile-list-item.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/ui-organization/src/lib/components/profile-list-item.component.spec.ts b/projects/ui-organization/src/lib/components/profile-list-item.component.spec.ts new file mode 100644 index 0000000..80e7d67 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-list-item.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ProfileListItemComponent } from './profile-list-item.component'; + +describe('ucap::ui-organization::ProfileListItemComponent', () => { + let component: ProfileListItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ProfileListItemComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileListItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-organization/src/lib/components/profile-list-item.component.stories.ts b/projects/ui-organization/src/lib/components/profile-list-item.component.stories.ts new file mode 100644 index 0000000..5811451 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-list-item.component.stories.ts @@ -0,0 +1,16 @@ +import { action } from '@storybook/addon-actions'; +import { linkTo } from '@storybook/addon-links'; + +import { ProfileListItemComponent } from './profile-list-item.component'; + +export default { + title: 'ProfileListItemComponent', + component: ProfileListItemComponent +}; + +export const Text = () => ({ + component: ProfileListItemComponent, + props: { + text: 'Hello ProfileListItemComponent' + } +}); diff --git a/projects/ui-organization/src/lib/components/profile-list-item.component.ts b/projects/ui-organization/src/lib/components/profile-list-item.component.ts new file mode 100644 index 0000000..b623c70 --- /dev/null +++ b/projects/ui-organization/src/lib/components/profile-list-item.component.ts @@ -0,0 +1,21 @@ +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef +} from '@angular/core'; + +@Component({ + selector: 'ucap-organization-profile-list-item', + templateUrl: './profile-list-item.component.html', + styleUrls: ['./profile-list-item.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileListItemComponent implements OnInit, OnDestroy { + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + ngOnInit(): void {} + + ngOnDestroy(): void {} +} diff --git a/projects/ui-organization/src/lib/components/tree.component.html b/projects/ui-organization/src/lib/components/tree.component.html new file mode 100644 index 0000000..3e28d02 --- /dev/null +++ b/projects/ui-organization/src/lib/components/tree.component.html @@ -0,0 +1,62 @@ +
    + + + + + +
  • +
    + {{ node?.data?.deptInfo | ucapOrganizationTranslate: 'name' }} +
    +
  • +
    + + +
  • +
    + + + {{ + node?.data?.deptInfo | ucapOrganizationTranslate: 'name' + }} +
    +
  • +
    +
    +
    +
    diff --git a/projects/ui-organization/src/lib/components/tree.component.scss b/projects/ui-organization/src/lib/components/tree.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/ui-organization/src/lib/components/tree.component.spec.ts b/projects/ui-organization/src/lib/components/tree.component.spec.ts new file mode 100644 index 0000000..8232f47 --- /dev/null +++ b/projects/ui-organization/src/lib/components/tree.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { TreeComponent } from './tree.component'; + +describe('ucap::ui-organization::TreeComponent', () => { + let component: TreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TreeComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/ui-organization/src/lib/components/tree.component.stories.ts b/projects/ui-organization/src/lib/components/tree.component.stories.ts new file mode 100644 index 0000000..b1a899c --- /dev/null +++ b/projects/ui-organization/src/lib/components/tree.component.stories.ts @@ -0,0 +1,15 @@ +import { action } from '@storybook/addon-actions'; +import { linkTo } from '@storybook/addon-links'; + +import { TreeComponent } from './tree.component'; + +const TITLE = 'organization::TreeComponent'; + +export default { + title: `${TITLE}`, + component: TreeComponent +}; + +export const Blank = () => ({ + props: {} +}); diff --git a/projects/ui-organization/src/lib/components/tree.component.ts b/projects/ui-organization/src/lib/components/tree.component.ts new file mode 100644 index 0000000..6a1ca7f --- /dev/null +++ b/projects/ui-organization/src/lib/components/tree.component.ts @@ -0,0 +1,169 @@ +import { + Component, + OnInit, + OnDestroy, + Input, + Output, + EventEmitter, + ViewChild, + ContentChild, + TemplateRef, + ChangeDetectionStrategy, + ChangeDetectorRef, + Directive +} from '@angular/core'; + +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { FlatTreeControl } from '@angular/cdk/tree'; + +import { MatTreeFlattener, MatTree } from '@angular/material/tree'; + +import { DeptInfo } from '@ucap/protocol-query'; + +import { VirtualScrollTreeFlatDataSource } from '@ucap/ng-ui'; +import { LogService } from '@ucap/ng-logger'; +import { LoginResponse } from '@ucap/protocol-authentication'; +import { trigger, transition, style, animate } from '@angular/animations'; + +export interface OrganizationNode { + deptInfo: DeptInfo; + children?: OrganizationNode[]; +} + +export interface FlatNode { + expandable: boolean; + level: number; + data: OrganizationNode; +} + +@Component({ + selector: 'ucap-organization-tree', + templateUrl: './tree.component.html', + styleUrls: ['./tree.component.scss'], + animations: [ + trigger('removeAdd', [ + transition('remove <=> add', [ + style({ + transform: `rotate(45deg)`, + opacity: 0 + }), + animate('.2s 0s ease-out') + ]) + ]) + ], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TreeComponent implements OnInit, OnDestroy { + @Input() + loginRes: LoginResponse; + + @Input() + set deptInfoList(data: { deptInfoList: DeptInfo[]; displayRoot?: boolean }) { + const deptInfoList = data.deptInfoList; + const displayRoot = + undefined === data.displayRoot ? true : data.displayRoot; + + if (!deptInfoList || 0 === deptInfoList.length) { + return; + } + const nodeMap = new Map(); + let rootNodeList: OrganizationNode[] = []; + const remainChildNodeList: OrganizationNode[] = []; + + deptInfoList.forEach((deptInfo) => { + const node: OrganizationNode = { + deptInfo, + children: [] + }; + if (nodeMap.has(deptInfo.seq)) { + this.logService.warn('duplicate seq', deptInfo.seq); + return; + } + nodeMap.set(deptInfo.seq, node); + + if (0 === deptInfo.parentSeq) { + rootNodeList.push(node); + return; + } + + if (nodeMap.has(deptInfo.parentSeq)) { + nodeMap.get(deptInfo.parentSeq).children.push(node); + } else { + remainChildNodeList.push(node); + } + }); + + if ( + !displayRoot && + 0 < rootNodeList.length && + 0 === rootNodeList[0].deptInfo.parentSeq && + !!rootNodeList[0].children && + 0 < rootNodeList[0].children.length + ) { + rootNodeList = [...rootNodeList[0].children]; + } + + this._deptInfoList = deptInfoList; + + remainChildNodeList.forEach((node) => { + if (nodeMap.has(node.deptInfo.parentSeq)) { + nodeMap.get(node.deptInfo.parentSeq).children.push(node); + } + }); + + this.dataSource.data = rootNodeList; + this.changeDetectorRef.detectChanges(); + } + + currentDeptSeq: number; + // tslint:disable-next-line: variable-name + _deptInfoList: DeptInfo[]; + + @ViewChild('treeList', { static: false }) + treeList: MatTree; + + @ViewChild('cvsvList', { static: false }) + cvsvList: CdkVirtualScrollViewport; + + treeControl: FlatTreeControl; + treeFlattener: MatTreeFlattener; + dataSource: VirtualScrollTreeFlatDataSource; + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) { + this.treeControl = new FlatTreeControl( + (node) => node.level, + (node) => node.expandable + ); + + this.treeFlattener = new MatTreeFlattener( + (node: OrganizationNode, level: number) => { + return { + expandable: !!node.children && node.children.length > 0, + level, + data: node + }; + }, + (node) => node.level, + (node) => node.expandable, + (node) => node.children + ); + + this.dataSource = new VirtualScrollTreeFlatDataSource< + OrganizationNode, + FlatNode + >(this.treeControl, this.treeFlattener); + } + + ngOnInit(): void { + this.dataSource.cdkVirtualScrollViewport = this.cvsvList; + } + + ngOnDestroy(): void {} + + hasChild = (_: number, node: FlatNode) => node.expandable; + + onClickNode(node: FlatNode) {} +} diff --git a/projects/ui-organization/src/lib/organization-ui.module.ts b/projects/ui-organization/src/lib/organization-ui.module.ts index 99c4743..bef91a8 100644 --- a/projects/ui-organization/src/lib/organization-ui.module.ts +++ b/projects/ui-organization/src/lib/organization-ui.module.ts @@ -1,16 +1,31 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { ScrollingModule } from '@angular/cdk/scrolling'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { MatRippleModule } from '@angular/material/core'; +import { MatTreeModule } from '@angular/material/tree'; + +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + import { UiModule } from '@ucap/ng-ui'; import { ModuleConfig } from './config/module-config'; import { _MODULE_CONFIG } from './config/token'; +import { ProfileListItemComponent } from './components/profile-list-item.component'; +import { TreeComponent } from './components/tree.component'; + import { TranslatePipe } from './pipes/translate.pipe'; import { TranslateService } from './services/translate.service'; -const COMPONENTS = []; +const COMPONENTS = [TreeComponent, ProfileListItemComponent]; const DIALOGS = []; const PIPES = [TranslatePipe]; const DIRECTIVES = []; @@ -24,7 +39,21 @@ const SERVICES = [TranslateService]; export class OrganizationUiRootModule {} @NgModule({ - imports: [CommonModule, UiModule], + imports: [ + CommonModule, + FlexLayoutModule, + ScrollingModule, + + MatButtonModule, + MatCheckboxModule, + MatIconModule, + MatRippleModule, + MatTreeModule, + + PerfectScrollbarModule, + + UiModule + ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIRECTIVES, ...PIPES], entryComponents: [...DIALOGS] diff --git a/projects/ui-organization/src/public-api.ts b/projects/ui-organization/src/public-api.ts index b355138..24552db 100644 --- a/projects/ui-organization/src/public-api.ts +++ b/projects/ui-organization/src/public-api.ts @@ -4,6 +4,9 @@ export * from './lib/config/module-config'; +export * from './lib/components/profile-list-item.component'; +export * from './lib/components/tree.component'; + export * from './lib/pipes/translate.pipe'; export * from './lib/services/translate.service'; diff --git a/projects/ui/package.json b/projects/ui/package.json index 5a426a4..55b07fc 100644 --- a/projects/ui/package.json +++ b/projects/ui/package.json @@ -1,6 +1,6 @@ { "name": "@ucap/ng-ui", - "version": "0.0.4", + "version": "0.0.5", "publishConfig": { "registry": "https://nexus.loafle.net/repository/npm-ucap/" }, diff --git a/projects/ui/src/lib/components/float-action-button.component.html b/projects/ui/src/lib/components/float-action-button.component.html index 96d9da8..ce3e51c 100644 --- a/projects/ui/src/lib/components/float-action-button.component.html +++ b/projects/ui/src/lib/components/float-action-button.component.html @@ -7,9 +7,9 @@ -
    +