@abp/ng.core 9.0.4 → 9.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/abp-ng.core-locale.mjs +2 -1
- package/fesm2022/abp-ng.core-locale.mjs.map +1 -1
- package/fesm2022/abp-ng.core-testing.mjs +15 -15
- package/fesm2022/abp-ng.core.mjs +276 -288
- package/fesm2022/abp-ng.core.mjs.map +1 -1
- package/lib/providers/cookie-language.provider.d.ts +2 -3
- package/lib/utils/initial-utils.d.ts +2 -3
- package/package.json +2 -8
- package/esm2022/abp-ng.core.mjs +0 -5
- package/esm2022/lib/abstracts/abstract-guard.mjs +0 -2
- package/esm2022/lib/abstracts/auth-error-filter.mjs +0 -25
- package/esm2022/lib/abstracts/auth-response.model.mjs +0 -2
- package/esm2022/lib/abstracts/auth.guard.mjs +0 -24
- package/esm2022/lib/abstracts/auth.service.mjs +0 -67
- package/esm2022/lib/abstracts/index.mjs +0 -7
- package/esm2022/lib/abstracts/ng-model.component.mjs +0 -58
- package/esm2022/lib/clients/http.client.mjs +0 -28
- package/esm2022/lib/clients/index.mjs +0 -2
- package/esm2022/lib/components/dynamic-layout.component.mjs +0 -115
- package/esm2022/lib/components/index.mjs +0 -4
- package/esm2022/lib/components/replaceable-route-container.component.mjs +0 -42
- package/esm2022/lib/components/router-outlet.component.mjs +0 -15
- package/esm2022/lib/constants/default-layouts.mjs +0 -6
- package/esm2022/lib/constants/different-locales.mjs +0 -337
- package/esm2022/lib/constants/index.mjs +0 -3
- package/esm2022/lib/core.module.mjs +0 -203
- package/esm2022/lib/directives/autofocus.directive.mjs +0 -30
- package/esm2022/lib/directives/caps-lock.directive.mjs +0 -41
- package/esm2022/lib/directives/debounce.directive.mjs +0 -36
- package/esm2022/lib/directives/for.directive.mjs +0 -160
- package/esm2022/lib/directives/form-submit.directive.mjs +0 -77
- package/esm2022/lib/directives/index.mjs +0 -11
- package/esm2022/lib/directives/init.directive.mjs +0 -24
- package/esm2022/lib/directives/permission.directive.mjs +0 -75
- package/esm2022/lib/directives/replaceable-template.directive.mjs +0 -133
- package/esm2022/lib/directives/show-password.directive.mjs +0 -25
- package/esm2022/lib/directives/stop-propagation.directive.mjs +0 -32
- package/esm2022/lib/enums/common.mjs +0 -2
- package/esm2022/lib/enums/index.mjs +0 -2
- package/esm2022/lib/guards/index.mjs +0 -2
- package/esm2022/lib/guards/permission.guard.mjs +0 -62
- package/esm2022/lib/handlers/index.mjs +0 -2
- package/esm2022/lib/handlers/routes.handler.mjs +0 -51
- package/esm2022/lib/interceptors/api.interceptor.mjs +0 -27
- package/esm2022/lib/interceptors/index.mjs +0 -2
- package/esm2022/lib/localization.module.mjs +0 -16
- package/esm2022/lib/models/auth-events.mjs +0 -29
- package/esm2022/lib/models/auth.mjs +0 -2
- package/esm2022/lib/models/common.mjs +0 -2
- package/esm2022/lib/models/dtos.mjs +0 -137
- package/esm2022/lib/models/environment.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -12
- package/esm2022/lib/models/localization.mjs +0 -2
- package/esm2022/lib/models/replaceable-components.mjs +0 -2
- package/esm2022/lib/models/rest.mjs +0 -2
- package/esm2022/lib/models/session.mjs +0 -2
- package/esm2022/lib/models/sort.mjs +0 -2
- package/esm2022/lib/models/utility.mjs +0 -2
- package/esm2022/lib/pipes/index.mjs +0 -8
- package/esm2022/lib/pipes/localization.pipe.mjs +0 -33
- package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -23
- package/esm2022/lib/pipes/short-date-time.pipe.mjs +0 -34
- package/esm2022/lib/pipes/short-date.pipe.mjs +0 -34
- package/esm2022/lib/pipes/short-time.pipe.mjs +0 -34
- package/esm2022/lib/pipes/sort.pipe.mjs +0 -49
- package/esm2022/lib/pipes/to-injector.pipe.mjs +0 -29
- package/esm2022/lib/providers/cookie-language.provider.mjs +0 -22
- package/esm2022/lib/providers/core-module-config.provider.mjs +0 -135
- package/esm2022/lib/providers/include-localization-resources.provider.mjs +0 -6
- package/esm2022/lib/providers/index.mjs +0 -5
- package/esm2022/lib/providers/locale.provider.mjs +0 -26
- package/esm2022/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +0 -27
- package/esm2022/lib/proxy/pages/abp/multi-tenancy/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +0 -24
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +0 -24
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +0 -24
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.mjs +0 -6
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/http/modeling/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/http/modeling/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/localization/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/localization/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/models.mjs +0 -2
- package/esm2022/lib/services/config-state.service.mjs +0 -189
- package/esm2022/lib/services/content-projection.service.mjs +0 -17
- package/esm2022/lib/services/dom-insertion.service.mjs +0 -34
- package/esm2022/lib/services/environment.service.mjs +0 -54
- package/esm2022/lib/services/http-error-reporter.service.mjs +0 -29
- package/esm2022/lib/services/http-wait.service.mjs +0 -75
- package/esm2022/lib/services/index.mjs +0 -26
- package/esm2022/lib/services/internet-connection-service.mjs +0 -32
- package/esm2022/lib/services/lazy-load.service.mjs +0 -40
- package/esm2022/lib/services/list.service.mjs +0 -125
- package/esm2022/lib/services/local-storage-listener.service.mjs +0 -22
- package/esm2022/lib/services/local-storage.service.mjs +0 -32
- package/esm2022/lib/services/localization.service.mjs +0 -218
- package/esm2022/lib/services/multi-tenancy.service.mjs +0 -48
- package/esm2022/lib/services/permission.service.mjs +0 -63
- package/esm2022/lib/services/replaceable-components.service.mjs +0 -49
- package/esm2022/lib/services/resource-wait.service.mjs +0 -39
- package/esm2022/lib/services/rest.service.mjs +0 -78
- package/esm2022/lib/services/router-events.service.mjs +0 -51
- package/esm2022/lib/services/router-wait.service.mjs +0 -51
- package/esm2022/lib/services/routes.service.mjs +0 -200
- package/esm2022/lib/services/session-state.service.mjs +0 -84
- package/esm2022/lib/services/subscription.service.mjs +0 -43
- package/esm2022/lib/services/title-strategy.service.mjs +0 -46
- package/esm2022/lib/services/track-by.service.mjs +0 -21
- package/esm2022/lib/services/window.service.mjs +0 -41
- package/esm2022/lib/strategies/container.strategy.mjs +0 -38
- package/esm2022/lib/strategies/content-security.strategy.mjs +0 -30
- package/esm2022/lib/strategies/content.strategy.mjs +0 -52
- package/esm2022/lib/strategies/context.strategy.mjs +0 -37
- package/esm2022/lib/strategies/cross-origin.strategy.mjs +0 -28
- package/esm2022/lib/strategies/dom.strategy.mjs +0 -27
- package/esm2022/lib/strategies/index.mjs +0 -9
- package/esm2022/lib/strategies/loading.strategy.mjs +0 -58
- package/esm2022/lib/strategies/projection.strategy.mjs +0 -80
- package/esm2022/lib/tokens/app-config.token.mjs +0 -3
- package/esm2022/lib/tokens/check-authentication-state.mjs +0 -3
- package/esm2022/lib/tokens/compare-func.token.mjs +0 -31
- package/esm2022/lib/tokens/cookie-language-key.token.mjs +0 -5
- package/esm2022/lib/tokens/dynamic-layout.token.mjs +0 -3
- package/esm2022/lib/tokens/http-context.token.mjs +0 -3
- package/esm2022/lib/tokens/include-localization-resources.token.mjs +0 -3
- package/esm2022/lib/tokens/index.mjs +0 -20
- package/esm2022/lib/tokens/list.token.mjs +0 -3
- package/esm2022/lib/tokens/localization.token.mjs +0 -10
- package/esm2022/lib/tokens/lodaer-delay.token.mjs +0 -3
- package/esm2022/lib/tokens/manage-profile.token.mjs +0 -3
- package/esm2022/lib/tokens/options.token.mjs +0 -8
- package/esm2022/lib/tokens/others-group.token.mjs +0 -3
- package/esm2022/lib/tokens/pipe-to-login.token.mjs +0 -3
- package/esm2022/lib/tokens/queue.token.mjs +0 -3
- package/esm2022/lib/tokens/set-token-response-to-storage.token.mjs +0 -6
- package/esm2022/lib/tokens/tenant-key.token.mjs +0 -3
- package/esm2022/lib/tokens/tenant-not-found-by-name.mjs +0 -3
- package/esm2022/lib/tokens/title-strategy-disable-project-name.token.mjs +0 -3
- package/esm2022/lib/utils/array-utils.mjs +0 -7
- package/esm2022/lib/utils/common-utils.mjs +0 -35
- package/esm2022/lib/utils/date-extensions.mjs +0 -6
- package/esm2022/lib/utils/date-utils.mjs +0 -13
- package/esm2022/lib/utils/environment-utils.mjs +0 -36
- package/esm2022/lib/utils/factory-utils.mjs +0 -24
- package/esm2022/lib/utils/file-utils.mjs +0 -15
- package/esm2022/lib/utils/form-utils.mjs +0 -12
- package/esm2022/lib/utils/generator-utils.mjs +0 -43
- package/esm2022/lib/utils/http-utils.mjs +0 -19
- package/esm2022/lib/utils/index.mjs +0 -21
- package/esm2022/lib/utils/initial-utils.mjs +0 -60
- package/esm2022/lib/utils/internal-store-utils.mjs +0 -37
- package/esm2022/lib/utils/lazy-load-utils.mjs +0 -40
- package/esm2022/lib/utils/localization-utils.mjs +0 -49
- package/esm2022/lib/utils/multi-tenancy-utils.mjs +0 -93
- package/esm2022/lib/utils/number-utils.mjs +0 -4
- package/esm2022/lib/utils/object-utils.mjs +0 -37
- package/esm2022/lib/utils/queue.mjs +0 -41
- package/esm2022/lib/utils/route-utils.mjs +0 -26
- package/esm2022/lib/utils/string-utils.mjs +0 -30
- package/esm2022/lib/utils/tree-utils.mjs +0 -70
- package/esm2022/lib/validators/age.validator.mjs +0 -14
- package/esm2022/lib/validators/credit-card.validator.mjs +0 -21
- package/esm2022/lib/validators/index.mjs +0 -29
- package/esm2022/lib/validators/range.validator.mjs +0 -15
- package/esm2022/lib/validators/required.validator.mjs +0 -15
- package/esm2022/lib/validators/string-length.validator.mjs +0 -15
- package/esm2022/lib/validators/unique-character.validator.mjs +0 -13
- package/esm2022/lib/validators/url.validator.mjs +0 -17
- package/esm2022/lib/validators/username.validator.mjs +0 -14
- package/esm2022/locale/abp-ng.core-locale.mjs +0 -5
- package/esm2022/locale/public-api.mjs +0 -2
- package/esm2022/locale/utils/register-locale.mjs +0 -101
- package/esm2022/public-api.mjs +0 -28
- package/esm2022/testing/abp-ng.core-testing.mjs +0 -5
- package/esm2022/testing/lib/core-testing.module.mjs +0 -76
- package/esm2022/testing/lib/pipes/index.mjs +0 -2
- package/esm2022/testing/lib/pipes/localization.pipe.mjs +0 -20
- package/esm2022/testing/lib/services/index.mjs +0 -3
- package/esm2022/testing/lib/services/mock-permission.service.mjs +0 -35
- package/esm2022/testing/lib/services/mock-rest.service.mjs +0 -31
- package/esm2022/testing/lib/utils/clear-page.util.mjs +0 -10
- package/esm2022/testing/lib/utils/index.mjs +0 -3
- package/esm2022/testing/lib/utils/wait.util.mjs +0 -5
- package/esm2022/testing/public-api.mjs +0 -5
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TrackCapsLockDirective {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.capsLock = new EventEmitter();
|
|
6
|
-
}
|
|
7
|
-
onKeyDown(event) {
|
|
8
|
-
this.capsLock.emit(this.isCapsLockOpen(event));
|
|
9
|
-
}
|
|
10
|
-
onKeyUp(event) {
|
|
11
|
-
this.capsLock.emit(this.isCapsLockOpen(event));
|
|
12
|
-
}
|
|
13
|
-
isCapsLockOpen(e) {
|
|
14
|
-
const s = String.fromCharCode(e.which);
|
|
15
|
-
if ((s.toUpperCase() === s && s.toLowerCase() !== s && e.shiftKey) ||
|
|
16
|
-
(s.toUpperCase() !== s && s.toLowerCase() === s && e.shiftKey) ||
|
|
17
|
-
(e.getModifierState && e.getModifierState('CapsLock'))) {
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TrackCapsLockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: TrackCapsLockDirective, isStandalone: true, selector: "[abpCapsLock]", outputs: { capsLock: "abpCapsLock" }, host: { listeners: { "window:keydown": "onKeyDown($event)", "window:keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TrackCapsLockDirective, decorators: [{
|
|
26
|
-
type: Directive,
|
|
27
|
-
args: [{
|
|
28
|
-
standalone: true,
|
|
29
|
-
selector: '[abpCapsLock]',
|
|
30
|
-
}]
|
|
31
|
-
}], propDecorators: { capsLock: [{
|
|
32
|
-
type: Output,
|
|
33
|
-
args: ['abpCapsLock']
|
|
34
|
-
}], onKeyDown: [{
|
|
35
|
-
type: HostListener,
|
|
36
|
-
args: ['window:keydown', ['$event']]
|
|
37
|
-
}], onKeyUp: [{
|
|
38
|
-
type: HostListener,
|
|
39
|
-
args: ['window:keyup', ['$event']]
|
|
40
|
-
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwcy1sb2NrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2NhcHMtbG9jay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNOUUsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQUt5QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQXNCL0Q7SUFuQkMsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQW9CO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDZCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUNFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDdEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0QlUsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs4QkFFd0IsUUFBUTtzQkFBOUIsTUFBTTt1QkFBQyxhQUFhO2dCQUdyQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSzFDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdbYWJwQ2Fwc0xvY2tdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNrQ2Fwc0xvY2tEaXJlY3RpdmUge1xyXG4gIEBPdXRwdXQoJ2FicENhcHNMb2NrJykgY2Fwc0xvY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY2Fwc0xvY2suZW1pdCh0aGlzLmlzQ2Fwc0xvY2tPcGVuKGV2ZW50KSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXBzTG9jay5lbWl0KHRoaXMuaXNDYXBzTG9ja09wZW4oZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIGlzQ2Fwc0xvY2tPcGVuKGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUud2hpY2gpO1xyXG4gICAgaWYgKFxyXG4gICAgICAocy50b1VwcGVyQ2FzZSgpID09PSBzICYmIHMudG9Mb3dlckNhc2UoKSAhPT0gcyAmJiBlLnNoaWZ0S2V5KSB8fFxyXG4gICAgICAocy50b1VwcGVyQ2FzZSgpICE9PSBzICYmIHMudG9Mb3dlckNhc2UoKSA9PT0gcyAmJiBlLnNoaWZ0S2V5KSB8fFxyXG4gICAgICAoZS5nZXRNb2RpZmllclN0YXRlICYmIGUuZ2V0TW9kaWZpZXJTdGF0ZSgnQ2Fwc0xvY2snKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { fromEvent } from 'rxjs';
|
|
3
|
-
import { debounceTime } from 'rxjs/operators';
|
|
4
|
-
import { SubscriptionService } from '../services/subscription.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../services/subscription.service";
|
|
7
|
-
export class InputEventDebounceDirective {
|
|
8
|
-
constructor(el, subscription) {
|
|
9
|
-
this.el = el;
|
|
10
|
-
this.subscription = subscription;
|
|
11
|
-
this.debounce = 300;
|
|
12
|
-
this.debounceEvent = new EventEmitter();
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));
|
|
16
|
-
this.subscription.addOne(input$, (event) => {
|
|
17
|
-
this.debounceEvent.emit(event);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: InputEventDebounceDirective, deps: [{ token: i0.ElementRef }, { token: i1.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: InputEventDebounceDirective, isStandalone: true, selector: "[input.debounce]", inputs: { debounce: "debounce" }, outputs: { debounceEvent: "input.debounce" }, providers: [SubscriptionService], ngImport: i0 }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: InputEventDebounceDirective, decorators: [{
|
|
24
|
-
type: Directive,
|
|
25
|
-
args: [{
|
|
26
|
-
standalone: true,
|
|
27
|
-
selector: '[input.debounce]',
|
|
28
|
-
providers: [SubscriptionService],
|
|
29
|
-
}]
|
|
30
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SubscriptionService }], propDecorators: { debounce: [{
|
|
31
|
-
type: Input
|
|
32
|
-
}], debounceEvent: [{
|
|
33
|
-
type: Output,
|
|
34
|
-
args: ['input.debounce']
|
|
35
|
-
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGVib3VuY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFvQixFQUFjLEVBQVUsWUFBaUM7UUFBekQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUpwRSxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBRVcsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRUcsQ0FBQztJQUVqRixRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFhLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkUsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDNUIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FmVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwrSUFGM0IsQ0FBQyxtQkFBbUIsQ0FBQzs7MkZBRXJCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDO2lIQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTZCLGFBQWE7c0JBQS9DLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzZWxlY3RvcjogJ1tpbnB1dC5kZWJvdW5jZV0nLFxyXG4gIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRFdmVudERlYm91bmNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkZWJvdW5jZSA9IDMwMDtcclxuXHJcbiAgQE91dHB1dCgnaW5wdXQuZGVib3VuY2UnKSByZWFkb25seSBkZWJvdW5jZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQkID0gZnJvbUV2ZW50PElucHV0RXZlbnQ+KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUoaW5wdXQkLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, IterableDiffers, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import clone from 'just-clone';
|
|
3
|
-
import compare from 'just-compare';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
class AbpForContext {
|
|
6
|
-
constructor($implicit, index, count, list) {
|
|
7
|
-
this.$implicit = $implicit;
|
|
8
|
-
this.index = index;
|
|
9
|
-
this.count = count;
|
|
10
|
-
this.list = list;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
class RecordView {
|
|
14
|
-
constructor(record, view) {
|
|
15
|
-
this.record = record;
|
|
16
|
-
this.view = view;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export class ForDirective {
|
|
20
|
-
get compareFn() {
|
|
21
|
-
return this.compareBy || compare;
|
|
22
|
-
}
|
|
23
|
-
get trackByFn() {
|
|
24
|
-
return this.trackBy || ((index, item) => item.id || index);
|
|
25
|
-
}
|
|
26
|
-
constructor(tempRef, vcRef, differs) {
|
|
27
|
-
this.tempRef = tempRef;
|
|
28
|
-
this.vcRef = vcRef;
|
|
29
|
-
this.differs = differs;
|
|
30
|
-
}
|
|
31
|
-
iterateOverAppliedOperations(changes) {
|
|
32
|
-
const rw = [];
|
|
33
|
-
changes.forEachOperation((record, previousIndex, currentIndex) => {
|
|
34
|
-
if (record.previousIndex == null) {
|
|
35
|
-
const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex || 0);
|
|
36
|
-
rw.push(new RecordView(record, view));
|
|
37
|
-
}
|
|
38
|
-
else if (currentIndex == null && previousIndex !== null) {
|
|
39
|
-
this.vcRef.remove(previousIndex);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
if (previousIndex !== null) {
|
|
43
|
-
const view = this.vcRef.get(previousIndex);
|
|
44
|
-
if (view && currentIndex !== null) {
|
|
45
|
-
this.vcRef.move(view, currentIndex);
|
|
46
|
-
rw.push(new RecordView(record, view));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
for (let i = 0, l = rw.length; i < l; i++) {
|
|
52
|
-
rw[i].view.context.$implicit = rw[i].record.item;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
iterateOverAttachedViews(changes) {
|
|
56
|
-
for (let i = 0, l = this.vcRef.length; i < l; i++) {
|
|
57
|
-
const viewRef = this.vcRef.get(i);
|
|
58
|
-
viewRef.context.index = i;
|
|
59
|
-
viewRef.context.count = l;
|
|
60
|
-
viewRef.context.list = this.items;
|
|
61
|
-
}
|
|
62
|
-
changes.forEachIdentityChange((record) => {
|
|
63
|
-
if (record.currentIndex !== null) {
|
|
64
|
-
const viewRef = this.vcRef.get(record.currentIndex);
|
|
65
|
-
viewRef.context.$implicit = record.item;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
projectItems(items) {
|
|
70
|
-
if (!items.length && this.emptyRef) {
|
|
71
|
-
this.vcRef.clear();
|
|
72
|
-
this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;
|
|
73
|
-
this.isShowEmptyRef = true;
|
|
74
|
-
this.differ = null;
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (this.emptyRef && this.isShowEmptyRef) {
|
|
78
|
-
this.vcRef.clear();
|
|
79
|
-
this.isShowEmptyRef = false;
|
|
80
|
-
}
|
|
81
|
-
if (!this.differ && items) {
|
|
82
|
-
this.differ = this.differs.find(items).create(this.trackByFn);
|
|
83
|
-
}
|
|
84
|
-
if (this.differ) {
|
|
85
|
-
const changes = this.differ.diff(items);
|
|
86
|
-
if (changes) {
|
|
87
|
-
this.iterateOverAppliedOperations(changes);
|
|
88
|
-
this.iterateOverAttachedViews(changes);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
sortItems(items) {
|
|
93
|
-
const orderBy = this.orderBy;
|
|
94
|
-
if (orderBy) {
|
|
95
|
-
items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
items.sort();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
ngOnChanges() {
|
|
102
|
-
let items = clone(this.items);
|
|
103
|
-
if (!Array.isArray(items))
|
|
104
|
-
return;
|
|
105
|
-
const compareFn = this.compareFn;
|
|
106
|
-
const filterBy = this.filterBy;
|
|
107
|
-
if (typeof filterBy !== 'undefined' &&
|
|
108
|
-
typeof this.filterVal !== 'undefined' &&
|
|
109
|
-
this.filterVal !== '') {
|
|
110
|
-
items = items.filter(item => compareFn(item[filterBy], this.filterVal));
|
|
111
|
-
}
|
|
112
|
-
switch (this.orderDir) {
|
|
113
|
-
case 'ASC':
|
|
114
|
-
this.sortItems(items);
|
|
115
|
-
this.projectItems(items);
|
|
116
|
-
break;
|
|
117
|
-
case 'DESC':
|
|
118
|
-
this.sortItems(items);
|
|
119
|
-
items.reverse();
|
|
120
|
-
this.projectItems(items);
|
|
121
|
-
break;
|
|
122
|
-
default:
|
|
123
|
-
this.projectItems(items);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ForDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
127
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: ForDirective, isStandalone: true, selector: "[abpFor]", inputs: { items: ["abpForOf", "items"], orderBy: ["abpForOrderBy", "orderBy"], orderDir: ["abpForOrderDir", "orderDir"], filterBy: ["abpForFilterBy", "filterBy"], filterVal: ["abpForFilterVal", "filterVal"], trackBy: ["abpForTrackBy", "trackBy"], compareBy: ["abpForCompareBy", "compareBy"], emptyRef: ["abpForEmptyRef", "emptyRef"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
128
|
-
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ForDirective, decorators: [{
|
|
130
|
-
type: Directive,
|
|
131
|
-
args: [{
|
|
132
|
-
standalone: true,
|
|
133
|
-
selector: '[abpFor]',
|
|
134
|
-
}]
|
|
135
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }], propDecorators: { items: [{
|
|
136
|
-
type: Input,
|
|
137
|
-
args: ['abpForOf']
|
|
138
|
-
}], orderBy: [{
|
|
139
|
-
type: Input,
|
|
140
|
-
args: ['abpForOrderBy']
|
|
141
|
-
}], orderDir: [{
|
|
142
|
-
type: Input,
|
|
143
|
-
args: ['abpForOrderDir']
|
|
144
|
-
}], filterBy: [{
|
|
145
|
-
type: Input,
|
|
146
|
-
args: ['abpForFilterBy']
|
|
147
|
-
}], filterVal: [{
|
|
148
|
-
type: Input,
|
|
149
|
-
args: ['abpForFilterVal']
|
|
150
|
-
}], trackBy: [{
|
|
151
|
-
type: Input,
|
|
152
|
-
args: ['abpForTrackBy']
|
|
153
|
-
}], compareBy: [{
|
|
154
|
-
type: Input,
|
|
155
|
-
args: ['abpForCompareBy']
|
|
156
|
-
}], emptyRef: [{
|
|
157
|
-
type: Input,
|
|
158
|
-
args: ['abpForEmptyRef']
|
|
159
|
-
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsZUFBZSxFQUVmLFdBQVcsRUFFWCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQzs7QUFJbkMsTUFBTSxhQUFhO0lBQ2pCLFlBQ1MsU0FBYyxFQUNkLEtBQWEsRUFDYixLQUFhLEVBQ2IsSUFBVztRQUhYLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFNBQUksR0FBSixJQUFJLENBQU87SUFDakIsQ0FBQztDQUNMO0FBRUQsTUFBTSxVQUFVO0lBQ2QsWUFDUyxNQUFpQyxFQUNqQyxJQUFvQztRQURwQyxXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFnQztJQUMxQyxDQUFDO0NBQ0w7QUFNRCxNQUFNLE9BQU8sWUFBWTtJQThCdkIsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBRSxJQUFZLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxZQUNVLE9BQW1DLEVBQ25DLEtBQXVCLEVBQ3ZCLE9BQXdCO1FBRnhCLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBQ25DLFVBQUssR0FBTCxL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QUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUVSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDOzhHQW5LVSxZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxVQUFVO2lCQUNyQjs2SUFJQyxLQUFLO3NCQURKLEtBQUs7dUJBQUMsVUFBVTtnQkFJakIsT0FBTztzQkFETixLQUFLO3VCQUFDLGVBQWU7Z0JBSXRCLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBSXZCLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBSXZCLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBSXhCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxlQUFlO2dCQUl0QixTQUFTO3NCQURSLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUl4QixRQUFRO3NCQURQLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIElucHV0LFxyXG4gIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLFxyXG4gIEl0ZXJhYmxlQ2hhbmdlcyxcclxuICBJdGVyYWJsZURpZmZlcixcclxuICBJdGVyYWJsZURpZmZlcnMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSc7XHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21wYXJlRm48VCA9IGFueT4gPSAodmFsdWU6IFQsIGNvbXBhcmlzb246IFQpID0+IGJvb2xlYW47XHJcblxyXG5jbGFzcyBBYnBGb3JDb250ZXh0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyAkaW1wbGljaXQ6IGFueSxcclxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxyXG4gICAgcHVibGljIGNvdW50OiBudW1iZXIsXHJcbiAgICBwdWJsaWMgbGlzdDogYW55W10sXHJcbiAgKSB7fVxyXG59XHJcblxyXG5jbGFzcyBSZWNvcmRWaWV3IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4sXHJcbiAgICBwdWJsaWMgdmlldzogRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+LFxyXG4gICkge31cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzZWxlY3RvcjogJ1thYnBGb3JdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ2FicEZvck9mJylcclxuICBpdGVtcyE6IGFueVtdO1xyXG5cclxuICBASW5wdXQoJ2FicEZvck9yZGVyQnknKVxyXG4gIG9yZGVyQnk/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnYWJwRm9yT3JkZXJEaXInKVxyXG4gIG9yZGVyRGlyPzogJ0FTQycgfCAnREVTQyc7XHJcblxyXG4gIEBJbnB1dCgnYWJwRm9yRmlsdGVyQnknKVxyXG4gIGZpbHRlckJ5Pzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoJ2FicEZvckZpbHRlclZhbCcpXHJcbiAgZmlsdGVyVmFsOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgnYWJwRm9yVHJhY2tCeScpXHJcbiAgdHJhY2tCeT86IFRyYWNrQnlGdW5jdGlvbjxhbnk+O1xyXG5cclxuICBASW5wdXQoJ2FicEZvckNvbXBhcmVCeScpXHJcbiAgY29tcGFyZUJ5PzogQ29tcGFyZUZuO1xyXG5cclxuICBASW5wdXQoJ2FicEZvckVtcHR5UmVmJylcclxuICBlbXB0eVJlZj86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHByaXZhdGUgZGlmZmVyITogSXRlcmFibGVEaWZmZXI8YW55PiB8IG51bGw7XHJcblxyXG4gIHByaXZhdGUgaXNTaG93RW1wdHlSZWYhOiBib29sZWFuO1xyXG5cclxuICBnZXQgY29tcGFyZUZuKCk6IENvbXBhcmVGbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlQnkgfHwgY29tcGFyZTtcclxuICB9XHJcblxyXG4gIGdldCB0cmFja0J5Rm4oKTogVHJhY2tCeUZ1bmN0aW9uPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhY2tCeSB8fCAoKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gKGl0ZW0gYXMgYW55KS5pZCB8fCBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdGVtcFJlZjogVGVtcGxhdGVSZWY8QWJwRm9yQ29udGV4dD4sXHJcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIGl0ZXJhdGVPdmVyQXBwbGllZE9wZXJhdGlvbnMoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPGFueT4pIHtcclxuICAgIGNvbnN0IHJ3OiBSZWNvcmRWaWV3W10gPSBbXTtcclxuXHJcbiAgICBjaGFuZ2VzLmZvckVhY2hPcGVyYXRpb24oXHJcbiAgICAgIChcclxuICAgICAgICByZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4sXHJcbiAgICAgICAgcHJldmlvdXNJbmRleDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgICBjdXJyZW50SW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICAgICkgPT4ge1xyXG4gICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCA9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52Y1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcoXHJcbiAgICAgICAgICAgIHRoaXMudGVtcFJlZixcclxuICAgICAgICAgICAgbmV3IEFicEZvckNvbnRleHQobnVsbCwgLTEsIC0xLCB0aGlzLml0ZW1zKSxcclxuICAgICAgICAgICAgY3VycmVudEluZGV4IHx8IDAsXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHJ3LnB1c2gobmV3IFJlY29yZFZpZXcocmVjb3JkLCB2aWV3KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SW5kZXggPT0gbnVsbCAmJiBwcmV2aW91c0luZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZjUmVmLnJlbW92ZShwcmV2aW91c0luZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHByZXZpb3VzSW5kZXggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmNSZWYuZ2V0KHByZXZpb3VzSW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAodmlldyAmJiBjdXJyZW50SW5kZXggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZjUmVmLm1vdmUodmlldywgY3VycmVudEluZGV4KTtcclxuICAgICAgICAgICAgICBydy5wdXNoKG5ldyBSZWNvcmRWaWV3KHJlY29yZCwgdmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8QWJwRm9yQ29udGV4dD4pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBydy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgcndbaV0udmlldy5jb250ZXh0LiRpbXBsaWNpdCA9IHJ3W2ldLnJlY29yZC5pdGVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpdGVyYXRlT3ZlckF0dGFjaGVkVmlld3MoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPGFueT4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy52Y1JlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmNSZWYuZ2V0KGkpIGFzIEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PjtcclxuICAgICAgdmlld1JlZi5jb250ZXh0LmluZGV4ID0gaTtcclxuICAgICAgdmlld1JlZi5jb250ZXh0LmNvdW50ID0gbDtcclxuICAgICAgdmlld1JlZi5jb250ZXh0Lmxpc3QgPSB0aGlzLml0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4pID0+IHtcclxuICAgICAgaWYgKHJlY29yZC5jdXJyZW50SW5kZXggIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52Y1JlZi5nZXQocmVjb3JkLmN1cnJlbnRJbmRleCkgYXMgRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+O1xyXG4gICAgICAgIHZpZXdSZWYuY29udGV4dC4kaW1wbGljaXQgPSByZWNvcmQuaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2plY3RJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICghaXRlbXMubGVuZ3RoICYmIHRoaXMuZW1wdHlSZWYpIHtcclxuICAgICAgdGhpcy52Y1JlZi5jbGVhcigpO1xyXG4gICAgICB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmVtcHR5UmVmKS5yb290Tm9kZXM7XHJcbiAgICAgIHRoaXMuaXNTaG93RW1wdHlSZWYgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpZmZlciA9IG51bGw7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZW1wdHlSZWYgJiYgdGhpcy5pc1Nob3dFbXB0eVJlZikge1xyXG4gICAgICB0aGlzLnZjUmVmLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuaXNTaG93RW1wdHlSZWYgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZGlmZmVyICYmIGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoaXRlbXMpLmNyZWF0ZSh0aGlzLnRyYWNrQnlGbik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGlmZmVyKSB7XHJcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKGl0ZW1zKTtcclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5pdGVyYXRlT3ZlckFwcGxpZWRPcGVyYXRpb25zKGNoYW5nZXMpO1xyXG4gICAgICAgIHRoaXMuaXRlcmF0ZU92ZXJBdHRhY2hlZFZpZXdzKGNoYW5nZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnRJdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgIGNvbnN0IG9yZGVyQnkgPSB0aGlzLm9yZGVyQnk7XHJcbiAgICBpZiAob3JkZXJCeSkge1xyXG4gICAgICBpdGVtcy5zb3J0KChhLCBiKSA9PiAoYVtvcmRlckJ5XSA+IGJbb3JkZXJCeV0gPyAxIDogYVtvcmRlckJ5XSA8IGJbb3JkZXJCeV0gPyAtMSA6IDApKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1zLnNvcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgbGV0IGl0ZW1zID0gY2xvbmUodGhpcy5pdGVtcykgYXMgYW55W107XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY29tcGFyZUZuID0gdGhpcy5jb21wYXJlRm47XHJcbiAgICBjb25zdCBmaWx0ZXJCeSA9IHRoaXMuZmlsdGVyQnk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHR5cGVvZiBmaWx0ZXJCeSAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgdHlwZW9mIHRoaXMuZmlsdGVyVmFsICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICB0aGlzLmZpbHRlclZhbCAhPT0gJydcclxuICAgICkge1xyXG4gICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+IGNvbXBhcmVGbihpdGVtW2ZpbHRlckJ5XSwgdGhpcy5maWx0ZXJWYWwpKTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3JkZXJEaXIpIHtcclxuICAgICAgY2FzZSAnQVNDJzpcclxuICAgICAgICB0aGlzLnNvcnRJdGVtcyhpdGVtcyk7XHJcbiAgICAgICAgdGhpcy5wcm9qZWN0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnREVTQyc6XHJcbiAgICAgICAgdGhpcy5zb3J0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIGl0ZW1zLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLnByb2plY3RJdGVtcyhpdGVtcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMucHJvamVjdEl0ZW1zKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Input, Output, Self, } from '@angular/core';
|
|
2
|
-
import { FormGroupDirective } from '@angular/forms';
|
|
3
|
-
import { fromEvent } from 'rxjs';
|
|
4
|
-
import { debounceTime, filter } from 'rxjs/operators';
|
|
5
|
-
import { SubscriptionService } from '../services/subscription.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
|
-
import * as i2 from "../services/subscription.service";
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.
|
|
11
|
-
*/
|
|
12
|
-
export class FormSubmitDirective {
|
|
13
|
-
constructor(formGroupDirective, host, cdRef, subscription) {
|
|
14
|
-
this.formGroupDirective = formGroupDirective;
|
|
15
|
-
this.host = host;
|
|
16
|
-
this.cdRef = cdRef;
|
|
17
|
-
this.subscription = subscription;
|
|
18
|
-
this.debounce = 200;
|
|
19
|
-
this.markAsDirtyWhenSubmit = true;
|
|
20
|
-
this.ngSubmit = new EventEmitter();
|
|
21
|
-
this.executedNgSubmit = false;
|
|
22
|
-
}
|
|
23
|
-
ngOnInit() {
|
|
24
|
-
this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {
|
|
25
|
-
if (this.markAsDirtyWhenSubmit) {
|
|
26
|
-
this.markAsDirty();
|
|
27
|
-
}
|
|
28
|
-
this.executedNgSubmit = true;
|
|
29
|
-
});
|
|
30
|
-
const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(event => event && event.key === 'Enter'));
|
|
31
|
-
this.subscription.addOne(keyup$, () => {
|
|
32
|
-
if (!this.executedNgSubmit) {
|
|
33
|
-
this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
|
|
34
|
-
}
|
|
35
|
-
this.executedNgSubmit = false;
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
markAsDirty() {
|
|
39
|
-
const { form } = this.formGroupDirective;
|
|
40
|
-
setDirty(form.controls);
|
|
41
|
-
form.markAsDirty();
|
|
42
|
-
this.cdRef.detectChanges();
|
|
43
|
-
}
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FormSubmitDirective, deps: [{ token: i1.FormGroupDirective, self: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
45
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: FormSubmitDirective, isStandalone: true, selector: "form[ngSubmit][formGroup]", inputs: { debounce: "debounce", notValidateOnSubmit: "notValidateOnSubmit", markAsDirtyWhenSubmit: "markAsDirtyWhenSubmit" }, outputs: { ngSubmit: "ngSubmit" }, providers: [SubscriptionService], ngImport: i0 }); }
|
|
46
|
-
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FormSubmitDirective, decorators: [{
|
|
48
|
-
type: Directive,
|
|
49
|
-
args: [{
|
|
50
|
-
standalone: true,
|
|
51
|
-
selector: 'form[ngSubmit][formGroup]',
|
|
52
|
-
providers: [SubscriptionService],
|
|
53
|
-
}]
|
|
54
|
-
}], ctorParameters: () => [{ type: i1.FormGroupDirective, decorators: [{
|
|
55
|
-
type: Self
|
|
56
|
-
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.SubscriptionService }], propDecorators: { debounce: [{
|
|
57
|
-
type: Input
|
|
58
|
-
}], notValidateOnSubmit: [{
|
|
59
|
-
type: Input
|
|
60
|
-
}], markAsDirtyWhenSubmit: [{
|
|
61
|
-
type: Input
|
|
62
|
-
}], ngSubmit: [{
|
|
63
|
-
type: Output
|
|
64
|
-
}] } });
|
|
65
|
-
function setDirty(controls) {
|
|
66
|
-
if (Array.isArray(controls)) {
|
|
67
|
-
controls.forEach(group => {
|
|
68
|
-
setDirty(group.controls);
|
|
69
|
-
});
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
Object.keys(controls).forEach(key => {
|
|
73
|
-
controls[key].markAsDirty();
|
|
74
|
-
controls[key].updateValueAndValidity();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZm9ybS1zdWJtaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUd2RTs7R0FFRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFDa0Isa0JBQXNDLEVBQzlDLElBQWlDLEVBQ2pDLEtBQXdCLEVBQ3hCLFlBQWlDO1FBSHpCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDOUMsU0FBSSxHQUFKLElBQUksQ0FBNkI7UUFDakMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBakIzQyxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBT2YsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRVYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFakQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO0lBT3RCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDOUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMzRixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sWUFBWSxtQkFBbUIsQ0FBQyxDQUFDLEVBQy9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUNoRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDbkMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDekQsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRXpDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBaUQsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBdkRVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHlPQUZuQixDQUFDLG1CQUFtQixDQUFDOzsyRkFFckIsbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakM7OzBCQWlCSSxJQUFJO29JQWRQLFFBQVE7c0JBRFAsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUdhLFFBQVE7c0JBQTFCLE1BQU07O0FBK0NULFNBQVMsUUFBUSxDQUFDLFFBQWtCO0lBQ2xDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFpRCxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24uc2VydmljZSc7XHJcblxyXG50eXBlIENvbnRyb2xzID0geyBba2V5OiBzdHJpbmddOiBVbnR5cGVkRm9ybUNvbnRyb2wgfSB8IFVudHlwZWRGb3JtR3JvdXBbXTtcclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIEZvcm1TdWJtaXREaXJlY3RpdmUgd2lsbCBiZSByZW1vdmVkIGluIFY3LjAuMC4gVXNlIGBuZ1N1Ym1pdGAgaW5zdGVhZC5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdmb3JtW25nU3VibWl0XVtmb3JtR3JvdXBdJyxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TdWJtaXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgZGVib3VuY2UgPSAyMDA7XHJcblxyXG4gIC8vIFRPRE86IFJlbW92ZSB1bnVzZWQgaW5wdXRcclxuICBASW5wdXQoKVxyXG4gIG5vdFZhbGlkYXRlT25TdWJtaXQ/OiBzdHJpbmcgfCBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1hcmtBc0RpcnR5V2hlblN1Ym1pdCA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSByZWFkb25seSBuZ1N1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZXhlY3V0ZWROZ1N1Ym1pdCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlLm5nU3VibWl0LCAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBc0RpcnR5V2hlblN1Ym1pdCkge1xyXG4gICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5leGVjdXRlZE5nU3VibWl0ID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGtleXVwJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCwgJ2tleXVwJykucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSksXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUoa2V5dXAkLCAoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5leGVjdXRlZE5nU3VibWl0KSB7XHJcbiAgICAgICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcclxuICAgICAgICAgIG5ldyBFdmVudCgnc3VibWl0JywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZXhlY3V0ZWROZ1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtYXJrQXNEaXJ0eSgpIHtcclxuICAgIGNvbnN0IHsgZm9ybSB9ID0gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU7XHJcblxyXG4gICAgc2V0RGlydHkoZm9ybS5jb250cm9scyBhcyB7IFtrZXk6IHN0cmluZ106IFVudHlwZWRGb3JtQ29udHJvbCB9KTtcclxuICAgIGZvcm0ubWFya0FzRGlydHkoKTtcclxuXHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldERpcnR5KGNvbnRyb2xzOiBDb250cm9scykge1xyXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG4gICAgY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIHNldERpcnR5KGdyb3VwLmNvbnRyb2xzIGFzIHsgW2tleTogc3RyaW5nXTogVW50eXBlZEZvcm1Db250cm9sIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBPYmplY3Qua2V5cyhjb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgY29udHJvbHNba2V5XS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgY29udHJvbHNba2V5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfSk7XHJcbn1cclxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './autofocus.directive';
|
|
2
|
-
export * from './debounce.directive';
|
|
3
|
-
export * from './for.directive';
|
|
4
|
-
export * from './form-submit.directive';
|
|
5
|
-
export * from './init.directive';
|
|
6
|
-
export * from './permission.directive';
|
|
7
|
-
export * from './replaceable-template.directive';
|
|
8
|
-
export * from './stop-propagation.directive';
|
|
9
|
-
export * from './show-password.directive';
|
|
10
|
-
export * from './caps-lock.directive';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvZm9jdXMuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kZWJvdW5jZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc3VibWl0LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW5pdC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBsYWNlYWJsZS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0b3AtcHJvcGFnYXRpb24uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zaG93LXBhc3N3b3JkLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2Fwcy1sb2NrLmRpcmVjdGl2ZSc7XHJcbiJdfQ==
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Directive, Output, EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class InitDirective {
|
|
4
|
-
constructor(elRef) {
|
|
5
|
-
this.elRef = elRef;
|
|
6
|
-
this.init = new EventEmitter();
|
|
7
|
-
}
|
|
8
|
-
ngAfterViewInit() {
|
|
9
|
-
this.init.emit(this.elRef);
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: InitDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
12
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: InitDirective, isStandalone: true, selector: "[abpInit]", outputs: { init: "abpInit" }, ngImport: i0 }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: InitDirective, decorators: [{
|
|
15
|
-
type: Directive,
|
|
16
|
-
args: [{
|
|
17
|
-
standalone: true,
|
|
18
|
-
selector: '[abpInit]',
|
|
19
|
-
}]
|
|
20
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { init: [{
|
|
21
|
-
type: Output,
|
|
22
|
-
args: ['abpInit']
|
|
23
|
-
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9pbml0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNM0YsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUZULFNBQUksR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUUvQixDQUFDO0lBRXpDLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs4R0FQVSxhQUFhO2tHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxXQUFXO2lCQUN0QjsrRUFFNkIsSUFBSTtzQkFBL0IsTUFBTTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzZWxlY3RvcjogJ1thYnBJbml0XScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbml0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQE91dHB1dCgnYWJwSW5pdCcpIHJlYWRvbmx5IGluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPEVsZW1lbnRSZWY8YW55Pj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0LmVtaXQodGhpcy5lbFJlZik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, Inject, Input, Optional, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { ReplaySubject } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged, take } from 'rxjs/operators';
|
|
4
|
-
import { PermissionService } from '../services/permission.service';
|
|
5
|
-
import { QUEUE_MANAGER } from '../tokens/queue.token';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../services/permission.service";
|
|
8
|
-
export class PermissionDirective {
|
|
9
|
-
constructor(templateRef, vcRef, permissionService, cdRef, queue) {
|
|
10
|
-
this.templateRef = templateRef;
|
|
11
|
-
this.vcRef = vcRef;
|
|
12
|
-
this.permissionService = permissionService;
|
|
13
|
-
this.cdRef = cdRef;
|
|
14
|
-
this.queue = queue;
|
|
15
|
-
this.runChangeDetection = true;
|
|
16
|
-
this.cdrSubject = new ReplaySubject();
|
|
17
|
-
this.rendered = false;
|
|
18
|
-
}
|
|
19
|
-
check() {
|
|
20
|
-
if (this.subscription) {
|
|
21
|
-
this.subscription.unsubscribe();
|
|
22
|
-
}
|
|
23
|
-
this.subscription = this.permissionService
|
|
24
|
-
.getGrantedPolicy$(this.condition || '')
|
|
25
|
-
.pipe(distinctUntilChanged())
|
|
26
|
-
.subscribe(isGranted => {
|
|
27
|
-
this.vcRef.clear();
|
|
28
|
-
if (isGranted)
|
|
29
|
-
this.vcRef.createEmbeddedView(this.templateRef);
|
|
30
|
-
if (this.runChangeDetection) {
|
|
31
|
-
if (!this.rendered) {
|
|
32
|
-
this.cdrSubject.next();
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this.cdRef.detectChanges();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
this.cdRef.markForCheck();
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
ngOnDestroy() {
|
|
44
|
-
if (this.subscription)
|
|
45
|
-
this.subscription.unsubscribe();
|
|
46
|
-
}
|
|
47
|
-
ngOnChanges() {
|
|
48
|
-
this.check();
|
|
49
|
-
}
|
|
50
|
-
ngAfterViewInit() {
|
|
51
|
-
this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));
|
|
52
|
-
this.rendered = true;
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: i1.PermissionService }, { token: i0.ChangeDetectorRef }, { token: QUEUE_MANAGER }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: PermissionDirective, isStandalone: true, selector: "[abpPermission]", inputs: { condition: ["abpPermission", "condition"], runChangeDetection: ["abpPermissionRunChangeDetection", "runChangeDetection"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: PermissionDirective, decorators: [{
|
|
58
|
-
type: Directive,
|
|
59
|
-
args: [{
|
|
60
|
-
standalone: true,
|
|
61
|
-
selector: '[abpPermission]',
|
|
62
|
-
}]
|
|
63
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
|
|
64
|
-
type: Optional
|
|
65
|
-
}] }, { type: i0.ViewContainerRef }, { type: i1.PermissionService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
66
|
-
type: Inject,
|
|
67
|
-
args: [QUEUE_MANAGER]
|
|
68
|
-
}] }], propDecorators: { condition: [{
|
|
69
|
-
type: Input,
|
|
70
|
-
args: ['abpPermission']
|
|
71
|
-
}], runChangeDetection: [{
|
|
72
|
-
type: Input,
|
|
73
|
-
args: ['abpPermissionRunChangeDetection']
|
|
74
|
-
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQU90RCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQ3NCLFdBQTZCLEVBQ3pDLEtBQXVCLEVBQ3ZCLGlCQUFvQyxFQUNwQyxLQUF3QixFQUNGLEtBQW1CO1FBSjdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUN6QyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ0YsVUFBSyxHQUFMLEtBQUssQ0FBYztRQWJULHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUlwRSxlQUFVLEdBQUcsSUFBSSxhQUFhLEVBQVEsQ0FBQztRQUV2QyxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBUWQsQ0FBQztJQUVJLEtBQUs7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDdkMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7YUFDdkMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxTQUFTO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7OEdBckRVLG1CQUFtQiwrSkFnQnBCLGFBQWE7a0dBaEJaLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OzBCQWFJLFFBQVE7OzBCQUlSLE1BQU07MkJBQUMsYUFBYTt5Q0FmQyxTQUFTO3NCQUFoQyxLQUFLO3VCQUFDLGVBQWU7Z0JBRW9CLGtCQUFrQjtzQkFBM0QsS0FBSzt1QkFBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRVUVVRV9NQU5BR0VSIH0gZnJvbSAnLi4vdG9rZW5zL3F1ZXVlLnRva2VuJztcclxuaW1wb3J0IHsgUXVldWVNYW5hZ2VyIH0gZnJvbSAnLi4vdXRpbHMvcXVldWUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzZWxlY3RvcjogJ1thYnBQZXJtaXNzaW9uXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgnYWJwUGVybWlzc2lvbicpIGNvbmRpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoJ2FicFBlcm1pc3Npb25SdW5DaGFuZ2VEZXRlY3Rpb24nKSBydW5DaGFuZ2VEZXRlY3Rpb24gPSB0cnVlO1xyXG5cclxuICBzdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNkclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigpO1xyXG5cclxuICByZW5kZXJlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXHJcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoUVVFVUVfTUFOQUdFUikgcHVibGljIHF1ZXVlOiBRdWV1ZU1hbmFnZXIsXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIGNoZWNrKCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlXHJcbiAgICAgIC5nZXRHcmFudGVkUG9saWN5JCh0aGlzLmNvbmRpdGlvbiB8fCAnJylcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZShpc0dyYW50ZWQgPT4ge1xyXG4gICAgICAgIHRoaXMudmNSZWYuY2xlYXIoKTtcclxuICAgICAgICBpZiAoaXNHcmFudGVkKSB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgICBpZiAodGhpcy5ydW5DaGFuZ2VEZXRlY3Rpb24pIHtcclxuICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNkclN1YmplY3QubmV4dCgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNkclN1YmplY3QucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5xdWV1ZS5hZGQoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpKTtcclxuICAgIHRoaXMucmVuZGVyZWQgPSB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|