@coolon/angular-ui-powerups 0.0.25 → 0.0.27
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/bundles/coolon-angular-ui-powerups.umd.js +3926 -0
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -0
- package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -0
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -0
- package/coolon-angular-ui-powerups.d.ts +30 -0
- package/coolon-angular-ui-powerups.metadata.json +1 -0
- package/esm2015/coolon-angular-ui-powerups.js +33 -0
- package/esm2015/index.js +6 -0
- package/esm2015/lib/angular-ui-powerups.module.js +54 -0
- package/esm2015/lib/animations/index.js +9 -0
- package/esm2015/lib/animations/slideDownAndUpAnimation.js +30 -0
- package/esm2015/lib/components/disposable-component.js +14 -0
- package/esm2015/lib/components/forms/abstract-input.component.js +183 -0
- package/esm2015/lib/components/forms/number-input/number-input.component.js +26 -0
- package/esm2015/lib/components/forms/password-input/password-input.component.js +26 -0
- package/esm2015/lib/components/forms/select-input/select-input.component.js +60 -0
- package/esm2015/lib/components/forms/string-input/string-input.component.js +26 -0
- package/esm2015/lib/components/index.js +18 -0
- package/esm2015/lib/components/resize-aware.component.js +96 -0
- package/esm2015/lib/components/types/bounds.class.js +56 -0
- package/esm2015/lib/components/types/dimension.class.js +21 -0
- package/esm2015/lib/components/types/point.class.js +36 -0
- package/esm2015/lib/directives/command.directive.js +135 -0
- package/esm2015/lib/directives/focus-binding.directive.js +179 -0
- package/esm2015/lib/directives/index.js +10 -0
- package/esm2015/lib/interaction/abstract-activity.js +129 -0
- package/esm2015/lib/interaction/activity.js +27 -0
- package/esm2015/lib/interaction/alert.js +23 -0
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +144 -0
- package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
- package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +169 -0
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +37 -0
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +46 -0
- package/esm2015/lib/interaction/confirm.js +17 -0
- package/esm2015/lib/interaction/index.js +21 -0
- package/esm2015/lib/interaction/interaction-context.js +35 -0
- package/esm2015/lib/interaction/interaction.module.js +41 -0
- package/esm2015/lib/interaction/result.js +24 -0
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +114 -0
- package/esm2015/lib/place/abstract-place-component.js +59 -0
- package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +44 -0
- package/esm2015/lib/place/components/empty-state/empty-state.component.js +28 -0
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +67 -0
- package/esm2015/lib/place/components/place-outlet/route-animations.js +35 -0
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +50 -0
- package/esm2015/lib/place/guards/leave-place.guard.js +52 -0
- package/esm2015/lib/place/guards/place-route.guard.js +74 -0
- package/esm2015/lib/place/index.js +27 -0
- package/esm2015/lib/place/place-component.js +17 -0
- package/esm2015/lib/place/place.decorator.js +72 -0
- package/esm2015/lib/place/place.module.js +49 -0
- package/esm2015/lib/place/place.service.js +61 -0
- package/esm2015/lib/place/route/json-types.js +13 -0
- package/esm2015/lib/place/route/parameter-decorators.js +178 -0
- package/esm2015/lib/place/route/parameter-definition.class.js +24 -0
- package/esm2015/lib/place/route/parameter-sanitiser.js +17 -0
- package/esm2015/lib/place/route/parameter-type.js +43 -0
- package/esm2015/lib/place/route/route-parameter-bindings.js +294 -0
- package/esm2015/lib/place/route/route-parameter-sanitiser.js +280 -0
- package/esm2015/public_api.js +11 -0
- package/esm5/coolon-angular-ui-powerups.js +33 -0
- package/esm5/index.js +6 -0
- package/esm5/lib/angular-ui-powerups.module.js +58 -0
- package/esm5/lib/animations/index.js +9 -0
- package/esm5/lib/animations/slideDownAndUpAnimation.js +30 -0
- package/esm5/lib/components/disposable-component.js +24 -0
- package/esm5/lib/components/forms/abstract-input.component.js +232 -0
- package/esm5/lib/components/forms/number-input/number-input.component.js +33 -0
- package/esm5/lib/components/forms/password-input/password-input.component.js +33 -0
- package/esm5/lib/components/forms/select-input/select-input.component.js +67 -0
- package/esm5/lib/components/forms/string-input/string-input.component.js +33 -0
- package/esm5/lib/components/index.js +18 -0
- package/esm5/lib/components/resize-aware.component.js +124 -0
- package/esm5/lib/components/types/bounds.class.js +59 -0
- package/esm5/lib/components/types/dimension.class.js +19 -0
- package/esm5/lib/components/types/point.class.js +43 -0
- package/esm5/lib/directives/command.directive.js +155 -0
- package/esm5/lib/directives/focus-binding.directive.js +231 -0
- package/esm5/lib/directives/index.js +10 -0
- package/esm5/lib/interaction/abstract-activity.js +173 -0
- package/esm5/lib/interaction/activity.js +27 -0
- package/esm5/lib/interaction/alert.js +23 -0
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +181 -0
- package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
- package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +206 -0
- package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +42 -0
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +54 -0
- package/esm5/lib/interaction/confirm.js +17 -0
- package/esm5/lib/interaction/index.js +21 -0
- package/esm5/lib/interaction/interaction-context.js +45 -0
- package/esm5/lib/interaction/interaction.module.js +45 -0
- package/esm5/lib/interaction/result.js +24 -0
- package/esm5/lib/interaction/services/dialog-interaction.service.js +140 -0
- package/esm5/lib/place/abstract-place-component.js +66 -0
- package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +49 -0
- package/esm5/lib/place/components/empty-state/empty-state.component.js +29 -0
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +81 -0
- package/esm5/lib/place/components/place-outlet/route-animations.js +35 -0
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +57 -0
- package/esm5/lib/place/guards/leave-place.guard.js +57 -0
- package/esm5/lib/place/guards/place-route.guard.js +78 -0
- package/esm5/lib/place/index.js +27 -0
- package/esm5/lib/place/place-component.js +17 -0
- package/esm5/lib/place/place.decorator.js +69 -0
- package/esm5/lib/place/place.module.js +53 -0
- package/esm5/lib/place/place.service.js +75 -0
- package/esm5/lib/place/route/json-types.js +13 -0
- package/esm5/lib/place/route/parameter-decorators.js +178 -0
- package/esm5/lib/place/route/parameter-definition.class.js +24 -0
- package/esm5/lib/place/route/parameter-sanitiser.js +17 -0
- package/esm5/lib/place/route/parameter-type.js +65 -0
- package/esm5/lib/place/route/route-parameter-bindings.js +339 -0
- package/esm5/lib/place/route/route-parameter-sanitiser.js +395 -0
- package/esm5/public_api.js +11 -0
- package/fesm2015/coolon-angular-ui-powerups.js +3145 -0
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -0
- package/fesm5/coolon-angular-ui-powerups.js +3699 -0
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -0
- package/lib/angular-ui-powerups.module.d.ts +2 -0
- package/{src/lib/animations/index.ts → lib/animations/index.d.ts} +0 -1
- package/lib/animations/slideDownAndUpAnimation.d.ts +5 -0
- package/lib/components/disposable-component.d.ts +5 -0
- package/lib/components/forms/abstract-input.component.d.ts +35 -0
- package/lib/components/forms/number-input/number-input.component.d.ts +6 -0
- package/lib/components/forms/password-input/password-input.component.d.ts +6 -0
- package/lib/components/forms/select-input/select-input.component.d.ts +11 -0
- package/lib/components/forms/string-input/string-input.component.d.ts +6 -0
- package/{src/lib/components/index.ts → lib/components/index.d.ts} +0 -1
- package/lib/components/resize-aware.component.d.ts +22 -0
- package/lib/components/types/bounds.class.d.ts +16 -0
- package/lib/components/types/dimension.class.d.ts +5 -0
- package/lib/components/types/point.class.d.ts +10 -0
- package/lib/directives/command.directive.d.ts +14 -0
- package/lib/directives/focus-binding.directive.d.ts +22 -0
- package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +0 -1
- package/lib/interaction/abstract-activity.d.ts +17 -0
- package/lib/interaction/activity.d.ts +11 -0
- package/lib/interaction/alert.d.ts +5 -0
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +32 -0
- package/{src/lib/interaction/components/activity-outlet/activity-outlet-context.ts → lib/interaction/components/activity-outlet/activity-outlet-context.d.ts} +5 -7
- package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +30 -0
- package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +8 -0
- package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +9 -0
- package/{src/lib/interaction/confirm.ts → lib/interaction/confirm.d.ts} +2 -3
- package/{src/lib/interaction/index.ts → lib/interaction/index.d.ts} +0 -1
- package/lib/interaction/interaction-context.d.ts +11 -0
- package/lib/interaction/interaction.module.d.ts +2 -0
- package/lib/interaction/result.d.ts +8 -0
- package/lib/interaction/services/dialog-interaction.service.d.ts +14 -0
- package/lib/place/abstract-place-component.d.ts +13 -0
- package/lib/place/components/busy-overlay/busy-overlay.component.d.ts +8 -0
- package/lib/place/components/empty-state/empty-state.component.d.ts +5 -0
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +13 -0
- package/lib/place/components/place-outlet/route-animations.d.ts +1 -0
- package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +11 -0
- package/lib/place/guards/leave-place.guard.d.ts +10 -0
- package/lib/place/guards/place-route.guard.d.ts +9 -0
- package/{src/lib/place/index.ts → lib/place/index.d.ts} +0 -1
- package/lib/place/place-component.d.ts +5 -0
- package/lib/place/place.decorator.d.ts +20 -0
- package/lib/place/place.module.d.ts +2 -0
- package/lib/place/place.service.d.ts +8 -0
- package/lib/place/route/json-types.d.ts +7 -0
- package/lib/place/route/parameter-decorators.d.ts +26 -0
- package/lib/place/route/parameter-definition.class.d.ts +11 -0
- package/{src/lib/place/route/parameter-sanitiser.ts → lib/place/route/parameter-sanitiser.d.ts} +1 -1
- package/lib/place/route/parameter-type.d.ts +16 -0
- package/lib/place/route/route-parameter-bindings.d.ts +18 -0
- package/lib/place/route/route-parameter-sanitiser.d.ts +42 -0
- package/package.json +14 -12
- package/schematics/ng-add/index.d.ts +2 -0
- package/schematics/ng-add/index.js +12 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/place-routes/index.d.ts +3 -0
- package/schematics/place-routes/index.js +114 -0
- package/schematics/place-routes/index.js.map +1 -0
- package/schematics/place-routes/place-def.d.ts +34 -0
- package/schematics/place-routes/place-def.js +84 -0
- package/schematics/place-routes/place-def.js.map +1 -0
- package/schematics/place-routes/scanner.d.ts +26 -0
- package/schematics/place-routes/scanner.js +125 -0
- package/schematics/place-routes/scanner.js.map +1 -0
- package/schematics/place-routes/schema.d.ts +7 -0
- package/schematics/place-routes/schema.js +3 -0
- package/schematics/place-routes/schema.js.map +1 -0
- package/CHANGELOG.md +0 -5
- package/jest.config.js +0 -9
- package/ng-package.json +0 -13
- package/schematics/ng-add/index.ts +0 -10
- package/schematics/place-routes/index.ts +0 -152
- package/schematics/place-routes/place-def.ts +0 -93
- package/schematics/place-routes/scanner.ts +0 -145
- package/schematics/place-routes/schema.ts +0 -7
- package/src/lib/angular-ui-powerups.module.spec.ts +0 -14
- package/src/lib/angular-ui-powerups.module.ts +0 -49
- package/src/lib/animations/slideDownAndUpAnimation.ts +0 -39
- package/src/lib/components/disposable-component.ts +0 -9
- package/src/lib/components/forms/abstract-input.component.ts +0 -108
- package/src/lib/components/forms/number-input/number-input.component.html +0 -15
- package/src/lib/components/forms/number-input/number-input.component.scss +0 -3
- package/src/lib/components/forms/number-input/number-input.component.spec.ts +0 -25
- package/src/lib/components/forms/number-input/number-input.component.ts +0 -19
- package/src/lib/components/forms/password-input/password-input.component.html +0 -16
- package/src/lib/components/forms/password-input/password-input.component.scss +0 -3
- package/src/lib/components/forms/password-input/password-input.component.spec.ts +0 -25
- package/src/lib/components/forms/password-input/password-input.component.ts +0 -18
- package/src/lib/components/forms/scss/mixins.scss +0 -16
- package/src/lib/components/forms/select-input/select-input.component.html +0 -16
- package/src/lib/components/forms/select-input/select-input.component.scss +0 -7
- package/src/lib/components/forms/select-input/select-input.component.spec.ts +0 -25
- package/src/lib/components/forms/select-input/select-input.component.ts +0 -31
- package/src/lib/components/forms/string-input/string-input.component.html +0 -15
- package/src/lib/components/forms/string-input/string-input.component.scss +0 -3
- package/src/lib/components/forms/string-input/string-input.component.spec.ts +0 -25
- package/src/lib/components/forms/string-input/string-input.component.ts +0 -18
- package/src/lib/components/resize-aware.component.ts +0 -52
- package/src/lib/components/types/bounds.class.ts +0 -25
- package/src/lib/components/types/dimension.class.ts +0 -3
- package/src/lib/components/types/point.class.ts +0 -13
- package/src/lib/directives/command.directive.spec.ts +0 -73
- package/src/lib/directives/command.directive.ts +0 -81
- package/src/lib/directives/focus-binding.directive.spec.ts +0 -8
- package/src/lib/directives/focus-binding.directive.ts +0 -108
- package/src/lib/interaction/abstract-activity.ts +0 -57
- package/src/lib/interaction/activity.ts +0 -17
- package/src/lib/interaction/alert.ts +0 -6
- package/src/lib/interaction/components/activity-container/activity-container.component.html +0 -8
- package/src/lib/interaction/components/activity-container/activity-container.component.scss +0 -3
- package/src/lib/interaction/components/activity-container/activity-container.component.spec.ts +0 -25
- package/src/lib/interaction/components/activity-container/activity-container.component.ts +0 -93
- package/src/lib/interaction/components/activity-outlet/activity-outlet.component.scss +0 -3
- package/src/lib/interaction/components/activity-outlet/activity-outlet.component.spec.ts +0 -25
- package/src/lib/interaction/components/activity-outlet/activity-outlet.component.ts +0 -96
- package/src/lib/interaction/components/alert-dialog/alert-dialog.component.html +0 -7
- package/src/lib/interaction/components/alert-dialog/alert-dialog.component.scss +0 -7
- package/src/lib/interaction/components/alert-dialog/alert-dialog.component.spec.ts +0 -25
- package/src/lib/interaction/components/alert-dialog/alert-dialog.component.ts +0 -20
- package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.html +0 -9
- package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.scss +0 -8
- package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -25
- package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts +0 -26
- package/src/lib/interaction/interaction-context.ts +0 -16
- package/src/lib/interaction/interaction.module.ts +0 -35
- package/src/lib/interaction/result.ts +0 -16
- package/src/lib/interaction/services/dialog-interaction.service.scss +0 -11
- package/src/lib/interaction/services/dialog-interaction.service.spec.ts +0 -12
- package/src/lib/interaction/services/dialog-interaction.service.ts +0 -63
- package/src/lib/place/abstract-place-component.ts +0 -33
- package/src/lib/place/components/busy-overlay/busy-overlay.component.html +0 -4
- package/src/lib/place/components/busy-overlay/busy-overlay.component.scss +0 -27
- package/src/lib/place/components/busy-overlay/busy-overlay.component.spec.ts +0 -25
- package/src/lib/place/components/busy-overlay/busy-overlay.component.ts +0 -23
- package/src/lib/place/components/empty-state/empty-state.component.scss +0 -15
- package/src/lib/place/components/empty-state/empty-state.component.spec.ts +0 -25
- package/src/lib/place/components/empty-state/empty-state.component.ts +0 -19
- package/src/lib/place/components/place-outlet/place-outlet.component.html +0 -7
- package/src/lib/place/components/place-outlet/place-outlet.component.scss +0 -12
- package/src/lib/place/components/place-outlet/place-outlet.component.spec.ts +0 -25
- package/src/lib/place/components/place-outlet/place-outlet.component.ts +0 -37
- package/src/lib/place/components/place-outlet/route-animations.ts +0 -30
- package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.html +0 -7
- package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.scss +0 -100
- package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.spec.ts +0 -25
- package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.ts +0 -30
- package/src/lib/place/guards/leave-place.guard.spec.ts +0 -15
- package/src/lib/place/guards/leave-place.guard.ts +0 -18
- package/src/lib/place/guards/place-route.guard.ts +0 -37
- package/src/lib/place/place-component.ts +0 -6
- package/src/lib/place/place.decorator.ts +0 -40
- package/src/lib/place/place.module.ts +0 -44
- package/src/lib/place/place.service.spec.ts +0 -12
- package/src/lib/place/place.service.ts +0 -29
- package/src/lib/place/route/json-types.ts +0 -5
- package/src/lib/place/route/parameter-decorators.ts +0 -99
- package/src/lib/place/route/parameter-definition.class.ts +0 -12
- package/src/lib/place/route/parameter-type.ts +0 -31
- package/src/lib/place/route/route-parameter-bindings.ts +0 -140
- package/src/lib/place/route/route-parameter-sanitiser.ts +0 -135
- package/src/test-setup.ts +0 -1
- package/tsconfig.json +0 -7
- package/tsconfig.lib.json +0 -20
- package/tsconfig.schematics.json +0 -35
- package/tsconfig.spec.json +0 -10
- package/tslint.json +0 -7
- /package/{src/index.ts → index.d.ts} +0 -0
- /package/{src/public_api.ts → public_api.d.ts} +0 -0
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { assert, Command, Dsl, GarbageCollector, lang, UnaryCommand } from '@coolon/pectin';
|
|
3
|
-
|
|
4
|
-
@Directive({
|
|
5
|
-
// tslint:disable-next-line:directive-selector
|
|
6
|
-
selector: '[pectinCommand]'
|
|
7
|
-
})
|
|
8
|
-
export class CommandDirective<P = any> extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {
|
|
9
|
-
|
|
10
|
-
@Input()
|
|
11
|
-
pectinCommand: Command<any> | UnaryCommand<P>;
|
|
12
|
-
|
|
13
|
-
private _commandParameter:P;
|
|
14
|
-
private _commandParameterProvided = false;
|
|
15
|
-
|
|
16
|
-
@Input()
|
|
17
|
-
set commandParameter(value: P) {
|
|
18
|
-
this._commandParameterProvided = true;
|
|
19
|
-
this._commandParameter = value;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
get commandParameter(): P {
|
|
23
|
-
return this._commandParameter;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
constructor(@Inject(ElementRef) private elementRef: ElementRef) {
|
|
27
|
-
super();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
ngOnInit(): void {
|
|
31
|
-
assert.notNil(this.pectinCommand);
|
|
32
|
-
if (this.pectinCommand instanceof UnaryCommand) {
|
|
33
|
-
if (!this._commandParameterProvided) {
|
|
34
|
-
lang.illegalState('UnaryCommands required the command parameter to be specified.');
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
if (this._commandParameterProvided) {
|
|
38
|
-
lang.illegalState('command parameters are only supported by UnaryCommands');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
ngAfterViewInit(): void {
|
|
44
|
-
// for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now
|
|
45
|
-
// we need to do this.
|
|
46
|
-
const { chain } = Dsl.disposeWith(this);
|
|
47
|
-
chain(this.pectinCommand.enabled).subscribe(enabled => {
|
|
48
|
-
if (enabled) {
|
|
49
|
-
this.elementRef.nativeElement.removeAttribute('disabled');
|
|
50
|
-
if (this.elementRef.nativeElement.tagName === 'A') {
|
|
51
|
-
this.elementRef.nativeElement.setAttribute('href', 'javascript:void');
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
this.elementRef.nativeElement.setAttribute('disabled', 'disabled');
|
|
55
|
-
if (this.elementRef.nativeElement.tagName === 'A') {
|
|
56
|
-
this.elementRef.nativeElement.removeAttribute('href');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
ngOnDestroy(): void {
|
|
63
|
-
this.dispose();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@HostListener('click', ['$event'])
|
|
68
|
-
notifyClick($event: Event) {
|
|
69
|
-
$event.preventDefault();
|
|
70
|
-
$event.stopPropagation();
|
|
71
|
-
if (this.pectinCommand.enabled.value) {
|
|
72
|
-
if (this.pectinCommand instanceof UnaryCommand) {
|
|
73
|
-
this.pectinCommand.withContext({ event: $event }).execute(this.commandParameter);
|
|
74
|
-
} else {
|
|
75
|
-
this.pectinCommand.withContext({ event: $event }).execute();
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
console.warn('disabled command clicked, ignoring.');
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import {DOCUMENT} from '@angular/common';
|
|
2
|
-
import {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit} from '@angular/core';
|
|
3
|
-
import {Dsl, HasFocusTracking, Logger} from '@coolon/pectin';
|
|
4
|
-
import {DisposableComponent} from '../components/disposable-component';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@Directive({
|
|
8
|
-
// tslint:disable-next-line:directive-selector
|
|
9
|
-
selector: '[pectinFocusBinding]'
|
|
10
|
-
})
|
|
11
|
-
export class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {
|
|
12
|
-
|
|
13
|
-
private readonly document: Document;
|
|
14
|
-
|
|
15
|
-
@Input() pectinFocusBinding: HasFocusTracking;
|
|
16
|
-
@Input() focusBindingTarget: HTMLElement;
|
|
17
|
-
|
|
18
|
-
@HostListener('focusin')
|
|
19
|
-
onFocusIn() {
|
|
20
|
-
if (this.hasBinding()) {
|
|
21
|
-
this.pectinFocusBinding.focusContext.notifyFocusIn();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@HostListener('focusout')
|
|
26
|
-
onFocusOut() {
|
|
27
|
-
if (this.hasBinding()) {
|
|
28
|
-
this.pectinFocusBinding.focusContext.notifyFocusOut();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
constructor(@Inject(ElementRef) private readonly el: ElementRef,
|
|
33
|
-
@Inject(NgZone) private readonly ngZone: NgZone,
|
|
34
|
-
@Inject(DOCUMENT) document: any) {
|
|
35
|
-
super();
|
|
36
|
-
// @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642
|
|
37
|
-
this.document = document as Document;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
ngOnInit(): void {
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
ngAfterViewInit(): void {
|
|
44
|
-
// TODO: Make this also track the current enabled/disabled state.
|
|
45
|
-
if (this.hasBinding()) {
|
|
46
|
-
const {chain} = Dsl.disposeWith(this);
|
|
47
|
-
chain(this.pectinFocusBinding.focusContext.focused).subscribe((focused) => {
|
|
48
|
-
if (focused && !this.alreadyHasFocus()) {
|
|
49
|
-
this.tryAndFocus();
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
} else {
|
|
53
|
-
Logger.get(this).warn("pectinFocusBinding was nil");
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private hasBinding() {
|
|
58
|
-
return !!this.pectinFocusBinding && !!this.pectinFocusBinding.focusContext;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Hook method for debugging via tracing.
|
|
62
|
-
alreadyHasFocus() {
|
|
63
|
-
return this.isFocused(this.focusTarget);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Hook method for debugging via tracing.
|
|
67
|
-
isFocused(element: Element): boolean {
|
|
68
|
-
return this.document.activeElement === element;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
tryAndFocus(retries: number = 5) {
|
|
72
|
-
if (this.modelShouldStillHaveFocus() && this.canFocus()) {
|
|
73
|
-
if (!this.alreadyHasFocus()) {
|
|
74
|
-
this.focusTarget.focus();
|
|
75
|
-
}
|
|
76
|
-
// if we didn't get the focus we try again later.
|
|
77
|
-
if (!this.alreadyHasFocus()) {
|
|
78
|
-
Logger.get(this).log(`focus failed, trying ${retries} more times`);
|
|
79
|
-
if (retries > 0) {
|
|
80
|
-
// try again on the next paint
|
|
81
|
-
// TODO: is there an angular way of doing this without calling a window function.
|
|
82
|
-
requestAnimationFrame(() => {
|
|
83
|
-
this.tryAndFocus(retries - 1);
|
|
84
|
-
});
|
|
85
|
-
} else {
|
|
86
|
-
Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
get focusTarget(): HTMLElement {
|
|
93
|
-
return this.focusBindingTarget || this.el.nativeElement;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Hook method for debugging via tracing.
|
|
97
|
-
modelShouldStillHaveFocus() {
|
|
98
|
-
return this.hasBinding() && this.pectinFocusBinding.focusContext.focused.value;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Hook method for debugging via tracing.
|
|
102
|
-
canFocus(): boolean {
|
|
103
|
-
const dimension = this.focusTarget.getBoundingClientRect();
|
|
104
|
-
const hasSize = dimension.height >= 0 && dimension.height >= 0;
|
|
105
|
-
// tslint:disable-next-line:no-string-literal
|
|
106
|
-
return hasSize && !this.focusTarget['disabled'];
|
|
107
|
-
}
|
|
108
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { DelegatingValueModel, EventListenerList, ValueModel } from '@coolon/pectin';
|
|
2
|
-
import { DisposableComponent } from '../components/disposable-component';
|
|
3
|
-
import { Activity } from './activity';
|
|
4
|
-
|
|
5
|
-
export class AbstractActivity<D, R, E = any> extends DisposableComponent implements Activity<D, R, E> {
|
|
6
|
-
|
|
7
|
-
private readonly _doneListeners = new EventListenerList<Activity.CallBack<R>>();
|
|
8
|
-
private readonly _cancelListeners = new EventListenerList<Activity.CallBack<E>>();
|
|
9
|
-
private readonly _finishListeners = new EventListenerList<() => void>();
|
|
10
|
-
|
|
11
|
-
private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);
|
|
12
|
-
|
|
13
|
-
onDone(callback: Activity.CallBack<R>) {
|
|
14
|
-
this._doneListeners.add(callback);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
onCancel(callback: Activity.CallBack<E>) {
|
|
18
|
-
this._cancelListeners.add(callback);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
done(result?: R): Promise<any> {
|
|
22
|
-
return this._doneListeners
|
|
23
|
-
.fireAndWait(l => l(result))
|
|
24
|
-
.finally(() => this.finalizeAndDispose());
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
cancel(error?: E): Promise<any> {
|
|
28
|
-
return this._cancelListeners
|
|
29
|
-
.fireAndWait(l => l(error))
|
|
30
|
-
.finally(() => this.finalizeAndDispose());
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private finalizeAndDispose() {
|
|
34
|
-
// this._activeModel.value = false;
|
|
35
|
-
this._finishListeners.fire(l => l());
|
|
36
|
-
// this._interactionContext = null;
|
|
37
|
-
// this._initialized = false;
|
|
38
|
-
[
|
|
39
|
-
this._finishListeners,
|
|
40
|
-
this._doneListeners,
|
|
41
|
-
this._cancelListeners
|
|
42
|
-
].forEach(l => l.dispose());
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
get busy(): ValueModel<boolean> {
|
|
47
|
-
return this._busyModel.readonly;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
busyWhile(busyModel: ValueModel<boolean>) {
|
|
51
|
-
this._busyModel.setDelegate(busyModel);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
isBusy() {
|
|
55
|
-
return this._busyModel.value;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { ValueModel } from '@coolon/pectin';
|
|
3
|
-
|
|
4
|
-
export const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');
|
|
5
|
-
|
|
6
|
-
export interface Activity<D, R, E = any> {
|
|
7
|
-
readonly busy: ValueModel<boolean>;
|
|
8
|
-
|
|
9
|
-
onDone(callback: Activity.CallBack<R>);
|
|
10
|
-
|
|
11
|
-
onCancel(callback: Activity.CallBack<E>);
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export namespace Activity {
|
|
16
|
-
export type CallBack<T> = (value: T) => void | Promise<any>;
|
|
17
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<mat-tab-group #tabs no-tab-header [dynamicHeight]="true">
|
|
2
|
-
<mat-tab>
|
|
3
|
-
<angular-ui-powerups-activity-outlet [interactionContext]="this" [activityContext]="initialActivity"></angular-ui-powerups-activity-outlet>
|
|
4
|
-
</mat-tab>
|
|
5
|
-
<mat-tab *ngFor="let tab of activityTabs.value">
|
|
6
|
-
<angular-ui-powerups-activity-outlet [interactionContext]="this" [activityContext]="tab"></angular-ui-powerups-activity-outlet>
|
|
7
|
-
</mat-tab>
|
|
8
|
-
</mat-tab-group>
|
package/src/lib/interaction/components/activity-container/activity-container.component.spec.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { ActivityContainerComponent } from './activity-container.component';
|
|
4
|
-
|
|
5
|
-
describe('ActivityContainerComponent', () => {
|
|
6
|
-
let component: ActivityContainerComponent;
|
|
7
|
-
let fixture: ComponentFixture<ActivityContainerComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async(() => {
|
|
10
|
-
TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ ActivityContainerComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(ActivityContainerComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
|
|
2
|
-
import { MatTabGroup } from '@angular/material';
|
|
3
|
-
import { Constructable, Dsl, MutableListModel } from '@coolon/pectin';
|
|
4
|
-
import { Deferred } from '@coolon/pectin/lib/promise/deferred.class';
|
|
5
|
-
import { DisposableComponent } from '../../../components/disposable-component';
|
|
6
|
-
|
|
7
|
-
import { Activity } from '../../activity';
|
|
8
|
-
import { Alert } from '../../alert';
|
|
9
|
-
import { Confirm } from '../../confirm';
|
|
10
|
-
import { InteractionContext } from '../../interaction-context';
|
|
11
|
-
import { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';
|
|
12
|
-
import { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';
|
|
13
|
-
import { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';
|
|
14
|
-
|
|
15
|
-
@Component({
|
|
16
|
-
selector: 'angular-ui-powerups-activity-container',
|
|
17
|
-
templateUrl: './activity-container.component.html',
|
|
18
|
-
styleUrls: ['./activity-container.component.scss']
|
|
19
|
-
})
|
|
20
|
-
export class ActivityContainerComponent extends DisposableComponent implements OnInit, AfterViewInit, InteractionContext {
|
|
21
|
-
|
|
22
|
-
@Input()
|
|
23
|
-
parentInteractionContext: InteractionContext;
|
|
24
|
-
|
|
25
|
-
@Input()
|
|
26
|
-
initialActivity: ActivityOutletContext<any, any, any>;
|
|
27
|
-
|
|
28
|
-
@ViewChild('tabs', { static: true })
|
|
29
|
-
tabs: MatTabGroup;
|
|
30
|
-
|
|
31
|
-
readonly activityTabs = new MutableListModel<ActivityOutletContext<any, any, any>>();
|
|
32
|
-
private obsoleteTabs: ActivityOutletContext<any, any, any>[] = [];
|
|
33
|
-
|
|
34
|
-
constructor() {
|
|
35
|
-
super();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
ngAfterViewInit(): void {
|
|
42
|
-
const { observe } = Dsl.disposeWith(this);
|
|
43
|
-
observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.cleanUpTabs());
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
initialise<D, R, E>(options: ActivityContainerComponent.ActivityContext<D, R, E>) {
|
|
47
|
-
this.initialActivity = {
|
|
48
|
-
...options,
|
|
49
|
-
interactionContext: this
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {
|
|
54
|
-
const deferred = Deferred.defer<R>();
|
|
55
|
-
const context = {
|
|
56
|
-
interactionContext: this,
|
|
57
|
-
activityClass: activityType,
|
|
58
|
-
activityData: data,
|
|
59
|
-
onDone: deferred.resolve,
|
|
60
|
-
onCancel: deferred.reject
|
|
61
|
-
};
|
|
62
|
-
this.activityTabs.push(context);
|
|
63
|
-
this.tabs.selectedIndex = this.activityTabs.length;
|
|
64
|
-
return deferred.promise.finally(() => {
|
|
65
|
-
this.obsoleteTabs.push(context);
|
|
66
|
-
this.tabs.selectedIndex = this.activityTabs.length - 1;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
alert(alert: Alert): Promise<void> {
|
|
71
|
-
return this.startActivity(AlertDialogComponent, alert);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
confirm(confirm: Confirm): Promise<boolean> {
|
|
75
|
-
return this.startActivity(ConfirmationDialogComponent, confirm);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
private cleanUpTabs() {
|
|
79
|
-
this.activityTabs.value = this.activityTabs.value.filter(tab => {
|
|
80
|
-
return !this.obsoleteTabs.includes(tab);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export namespace ActivityContainerComponent {
|
|
86
|
-
|
|
87
|
-
export interface ActivityContext<D, R, E> {
|
|
88
|
-
activityClass: Constructable<Activity<D, R, E>>,
|
|
89
|
-
activityData: D,
|
|
90
|
-
onDone: (result: R) => void,
|
|
91
|
-
onCancel: (error: E) => void,
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { ActivityOutletComponent } from './activity-outlet.component';
|
|
4
|
-
|
|
5
|
-
describe('PortalOutletComponentComponent', () => {
|
|
6
|
-
let component: ActivityOutletComponent;
|
|
7
|
-
let fixture: ComponentFixture<ActivityOutletComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async(() => {
|
|
10
|
-
TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ ActivityOutletComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(ActivityOutletComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AfterViewInit,
|
|
3
|
-
Component,
|
|
4
|
-
ComponentFactoryResolver,
|
|
5
|
-
ComponentRef,
|
|
6
|
-
Injector,
|
|
7
|
-
Input,
|
|
8
|
-
OnInit,
|
|
9
|
-
ViewContainerRef
|
|
10
|
-
} from '@angular/core';
|
|
11
|
-
import { Constructable, lang } from '@coolon/pectin';
|
|
12
|
-
import { Activity, ACTIVITY_DATA } from '../../activity';
|
|
13
|
-
import { Alert } from '../../alert';
|
|
14
|
-
import { Confirm } from '../../confirm';
|
|
15
|
-
import { InteractionContext } from '../../interaction-context';
|
|
16
|
-
import { ActivityOutletContext } from './activity-outlet-context';
|
|
17
|
-
|
|
18
|
-
@Component({
|
|
19
|
-
selector: 'angular-ui-powerups-activity-outlet',
|
|
20
|
-
template: '',
|
|
21
|
-
styleUrls: ['./activity-outlet.component.scss']
|
|
22
|
-
})
|
|
23
|
-
export class ActivityOutletComponent<D, R, E> implements OnInit, InteractionContext {
|
|
24
|
-
|
|
25
|
-
@Input()
|
|
26
|
-
interactionContext: InteractionContext;
|
|
27
|
-
|
|
28
|
-
@Input()
|
|
29
|
-
set activityContext(activityContext: ActivityOutletContext<D, R, E>) {
|
|
30
|
-
this.loadActivity(activityContext);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
private activityComponent: ComponentRef<Activity<D, R, E>>;
|
|
34
|
-
|
|
35
|
-
constructor(
|
|
36
|
-
private componentFactoryResolver: ComponentFactoryResolver,
|
|
37
|
-
private viewContainerRef: ViewContainerRef,
|
|
38
|
-
private injector: Injector
|
|
39
|
-
) {
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
loadActivity(activityContext: ActivityOutletContext<D, R, E>) {
|
|
46
|
-
const injector = Injector.create({
|
|
47
|
-
providers: [
|
|
48
|
-
{
|
|
49
|
-
provide: InteractionContext,
|
|
50
|
-
useValue: this
|
|
51
|
-
},
|
|
52
|
-
{ provide: ACTIVITY_DATA, useValue: activityContext.activityData }
|
|
53
|
-
],
|
|
54
|
-
parent: this.injector
|
|
55
|
-
});
|
|
56
|
-
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);
|
|
57
|
-
this.viewContainerRef.clear();
|
|
58
|
-
this.activityComponent = this.viewContainerRef.createComponent(componentFactory, 0, injector);
|
|
59
|
-
this.activityComponent.instance.onDone(activityContext.onDone);
|
|
60
|
-
this.activityComponent.instance.onCancel(activityContext.onCancel);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
alert(alert: Alert): Promise<void> {
|
|
64
|
-
return this.interactionContext.alert(alert);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
confirm(confirm: Confirm): Promise<boolean> {
|
|
68
|
-
return this.interactionContext.confirm(confirm);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {
|
|
72
|
-
return this.interactionContext.startActivity(activityType, data);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export namespace ActivityOutletComponent {
|
|
77
|
-
|
|
78
|
-
export class OutletInteractionContext<D, R, E> implements InteractionContext {
|
|
79
|
-
|
|
80
|
-
constructor(private readonly context: ActivityOutletContext<D, R, E>) {
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
alert(alert: Alert): Promise<void> {
|
|
84
|
-
return lang.notImplemented();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
confirm(confirm: Confirm): Promise<boolean> {
|
|
88
|
-
return lang.notImplemented();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {
|
|
92
|
-
return lang.notImplemented();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { AlertDialogComponent } from './alert-dialog.component';
|
|
4
|
-
|
|
5
|
-
describe('ConfirmationDialogComponent', () => {
|
|
6
|
-
let component: AlertDialogComponent;
|
|
7
|
-
let fixture: ComponentFixture<AlertDialogComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async(() => {
|
|
10
|
-
TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ AlertDialogComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(AlertDialogComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Component, Inject, OnInit } from '@angular/core';
|
|
2
|
-
import { AbstractActivity } from '../../abstract-activity';
|
|
3
|
-
import { ACTIVITY_DATA } from '../../activity';
|
|
4
|
-
import { Alert } from '../../alert';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'angular-ui-powerups-alert-dialog',
|
|
8
|
-
templateUrl: './alert-dialog.component.html',
|
|
9
|
-
styleUrls: ['./alert-dialog.component.scss']
|
|
10
|
-
})
|
|
11
|
-
export class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {
|
|
12
|
-
|
|
13
|
-
constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {
|
|
14
|
-
super();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
}
|
package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.html
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<h3 matDialogTitle *ngIf="confirm.title">{{confirm.title()}}</h3>
|
|
2
|
-
<div matDialogContent>
|
|
3
|
-
<p *ngFor="let line of confirm.content()">{{line}}</p>
|
|
4
|
-
</div>
|
|
5
|
-
<p matDialogActions>
|
|
6
|
-
<button mat-button (click)="cancel()">{{confirm.cancel()}}</button>
|
|
7
|
-
<button mat-raised-button [color]="isDestructive() ? 'warn' : 'primary'" (click)="done(true)">{{confirm.ok()}}</button>
|
|
8
|
-
</p>
|
|
9
|
-
|
package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.spec.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { ConfirmationDialogComponent } from './confirmation-dialog.component';
|
|
4
|
-
|
|
5
|
-
describe('ConfirmationDialogComponent', () => {
|
|
6
|
-
let component: ConfirmationDialogComponent;
|
|
7
|
-
let fixture: ComponentFixture<ConfirmationDialogComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async(() => {
|
|
10
|
-
TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ ConfirmationDialogComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(ConfirmationDialogComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Component, Inject, OnInit } from '@angular/core';
|
|
2
|
-
import { assert } from '@coolon/pectin';
|
|
3
|
-
import { AbstractActivity } from '../../abstract-activity';
|
|
4
|
-
import { ACTIVITY_DATA } from '../../activity';
|
|
5
|
-
import { Confirm } from '../../confirm';
|
|
6
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
selector: 'angular-ui-powerups-confirmation-dialog',
|
|
9
|
-
templateUrl: './confirmation-dialog.component.html',
|
|
10
|
-
styleUrls: ['./confirmation-dialog.component.scss']
|
|
11
|
-
})
|
|
12
|
-
export class ConfirmationDialogComponent extends AbstractActivity<Confirm, boolean> implements OnInit {
|
|
13
|
-
|
|
14
|
-
constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {
|
|
15
|
-
super();
|
|
16
|
-
assert.notNil(confirm);
|
|
17
|
-
console.log(confirm);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
isDestructive(): boolean {
|
|
24
|
-
return this.confirm.destructive && this.confirm.destructive();
|
|
25
|
-
}
|
|
26
|
-
}
|