-
-
Notifications
You must be signed in to change notification settings - Fork 115
/
ux-dialog-footer.ts
49 lines (43 loc) · 1.14 KB
/
ux-dialog-footer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { customElement, bindable, inlineView } from 'aurelia-templating';
import { DialogController } from './dialog-controller';
/**
* View-model for footer of Dialog.
*/
@customElement('ux-dialog-footer')
@inlineView(`
<template>
<slot></slot>
<template if.bind="buttons.length > 0">
<button type="button"
class="btn btn-default"
repeat.for="button of buttons"
click.trigger="close(button)">
\${button}
</button>
</template>
</template>
`)
export class UxDialogFooter {
public static isCancelButton(value: string) {
return value === 'Cancel';
}
@bindable public buttons: any[] = [];
@bindable public useDefaultButtons: boolean = false;
/**
* @internal
*/
public static inject = [DialogController];
constructor(public controller: DialogController) { }
public close(buttonValue: string) {
if (UxDialogFooter.isCancelButton(buttonValue)) {
this.controller.cancel(buttonValue);
} else {
this.controller.ok(buttonValue);
}
}
public useDefaultButtonsChanged(newValue: boolean) {
if (newValue) {
this.buttons = ['Cancel', 'Ok'];
}
}
}