@aurelia-ui-toolkits/headless 1.0.0

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.
Files changed (284) hide show
  1. package/dist/alert/ui-alert.html +19 -0
  2. package/dist/alert/ui-alert.js +67 -0
  3. package/dist/alert/ui-alert.js.map +1 -0
  4. package/dist/alert-service/alert-configuration.js +11 -0
  5. package/dist/alert-service/alert-configuration.js.map +1 -0
  6. package/dist/alert-service/alert-modal/alert-modal.html +12 -0
  7. package/dist/alert-service/alert-modal/alert-modal.js +31 -0
  8. package/dist/alert-service/alert-modal/alert-modal.js.map +1 -0
  9. package/dist/alert-service/alert-modal/i-alert-modal-payload.js +2 -0
  10. package/dist/alert-service/alert-modal/i-alert-modal-payload.js.map +1 -0
  11. package/dist/alert-service/alert-service.js +108 -0
  12. package/dist/alert-service/alert-service.js.map +1 -0
  13. package/dist/alert-service/decorators/confirm-action.js +14 -0
  14. package/dist/alert-service/decorators/confirm-action.js.map +1 -0
  15. package/dist/alert-service/decorators/using-progress.js +23 -0
  16. package/dist/alert-service/decorators/using-progress.js.map +1 -0
  17. package/dist/alert-service/exceptions-tracker.js +4 -0
  18. package/dist/alert-service/exceptions-tracker.js.map +1 -0
  19. package/dist/alert-service/prompt-dialog/prompt-dialog.html +13 -0
  20. package/dist/alert-service/prompt-dialog/prompt-dialog.js +39 -0
  21. package/dist/alert-service/prompt-dialog/prompt-dialog.js.map +1 -0
  22. package/dist/badge/ui-badge.html +6 -0
  23. package/dist/badge/ui-badge.js +44 -0
  24. package/dist/badge/ui-badge.js.map +1 -0
  25. package/dist/base/boolean-attr.js +4 -0
  26. package/dist/base/boolean-attr.js.map +1 -0
  27. package/dist/base/i-validated-element.js +2 -0
  28. package/dist/base/i-validated-element.js.map +1 -0
  29. package/dist/base/keys.js +14 -0
  30. package/dist/base/keys.js.map +1 -0
  31. package/dist/breadcrumbs/ui-breadcrumbs.html +10 -0
  32. package/dist/breadcrumbs/ui-breadcrumbs.js +31 -0
  33. package/dist/breadcrumbs/ui-breadcrumbs.js.map +1 -0
  34. package/dist/button/enhance-ui-button.js +25 -0
  35. package/dist/button/enhance-ui-button.js.map +1 -0
  36. package/dist/button/ui-button.html +20 -0
  37. package/dist/button/ui-button.js +77 -0
  38. package/dist/button/ui-button.js.map +1 -0
  39. package/dist/button/ui-icon-button.html +20 -0
  40. package/dist/button/ui-icon-button.js +77 -0
  41. package/dist/button/ui-icon-button.js.map +1 -0
  42. package/dist/checkbox/ui-checkbox.html +32 -0
  43. package/dist/checkbox/ui-checkbox.js +186 -0
  44. package/dist/checkbox/ui-checkbox.js.map +1 -0
  45. package/dist/chip/ui-chip.html +32 -0
  46. package/dist/chip/ui-chip.js +129 -0
  47. package/dist/chip/ui-chip.js.map +1 -0
  48. package/dist/combobox/enhance-ui-combobox.js +26 -0
  49. package/dist/combobox/enhance-ui-combobox.js.map +1 -0
  50. package/dist/combobox/ui-combobox.html +76 -0
  51. package/dist/combobox/ui-combobox.js +478 -0
  52. package/dist/combobox/ui-combobox.js.map +1 -0
  53. package/dist/disclosure/ui-disclosure.html +28 -0
  54. package/dist/disclosure/ui-disclosure.js +75 -0
  55. package/dist/disclosure/ui-disclosure.js.map +1 -0
  56. package/dist/drawer/ui-drawer.html +35 -0
  57. package/dist/drawer/ui-drawer.js +246 -0
  58. package/dist/drawer/ui-drawer.js.map +1 -0
  59. package/dist/index.js +135 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/input/enhance-ui-input.js +26 -0
  62. package/dist/input/enhance-ui-input.js.map +1 -0
  63. package/dist/input/ui-input.html +56 -0
  64. package/dist/input/ui-input.js +259 -0
  65. package/dist/input/ui-input.js.map +1 -0
  66. package/dist/list/ui-list-item.html +22 -0
  67. package/dist/list/ui-list-item.js +59 -0
  68. package/dist/list/ui-list-item.js.map +1 -0
  69. package/dist/list/ui-list.html +10 -0
  70. package/dist/list/ui-list.js +316 -0
  71. package/dist/list/ui-list.js.map +1 -0
  72. package/dist/menu/ui-menu.html +20 -0
  73. package/dist/menu/ui-menu.js +154 -0
  74. package/dist/menu/ui-menu.js.map +1 -0
  75. package/dist/popup/ui-popup.html +16 -0
  76. package/dist/popup/ui-popup.js +397 -0
  77. package/dist/popup/ui-popup.js.map +1 -0
  78. package/dist/progress/ui-progress.html +17 -0
  79. package/dist/progress/ui-progress.js +76 -0
  80. package/dist/progress/ui-progress.js.map +1 -0
  81. package/dist/radio/ui-radio-group.html +27 -0
  82. package/dist/radio/ui-radio-group.js +259 -0
  83. package/dist/radio/ui-radio-group.js.map +1 -0
  84. package/dist/radio/ui-radio.html +11 -0
  85. package/dist/radio/ui-radio.js +55 -0
  86. package/dist/radio/ui-radio.js.map +1 -0
  87. package/dist/segmented-control/ui-segment.html +10 -0
  88. package/dist/segmented-control/ui-segment.js +44 -0
  89. package/dist/segmented-control/ui-segment.js.map +1 -0
  90. package/dist/segmented-control/ui-segmented-control.html +9 -0
  91. package/dist/segmented-control/ui-segmented-control.js +134 -0
  92. package/dist/segmented-control/ui-segmented-control.js.map +1 -0
  93. package/dist/select/enhance-ui-select.js +26 -0
  94. package/dist/select/enhance-ui-select.js.map +1 -0
  95. package/dist/select/ui-select.html +70 -0
  96. package/dist/select/ui-select.js +323 -0
  97. package/dist/select/ui-select.js.map +1 -0
  98. package/dist/slider/ui-slider.html +69 -0
  99. package/dist/slider/ui-slider.js +362 -0
  100. package/dist/slider/ui-slider.js.map +1 -0
  101. package/dist/splitter/ui-splitter.html +14 -0
  102. package/dist/splitter/ui-splitter.js +257 -0
  103. package/dist/splitter/ui-splitter.js.map +1 -0
  104. package/dist/switch/ui-switch.html +23 -0
  105. package/dist/switch/ui-switch.js +121 -0
  106. package/dist/switch/ui-switch.js.map +1 -0
  107. package/dist/table/enhance-ui-table.js +25 -0
  108. package/dist/table/enhance-ui-table.js.map +1 -0
  109. package/dist/table/ui-table-column.html +17 -0
  110. package/dist/table/ui-table-column.js +127 -0
  111. package/dist/table/ui-table-column.js.map +1 -0
  112. package/dist/table/ui-table.html +56 -0
  113. package/dist/table/ui-table.js +225 -0
  114. package/dist/table/ui-table.js.map +1 -0
  115. package/dist/tabs/ui-tab.html +10 -0
  116. package/dist/tabs/ui-tab.js +52 -0
  117. package/dist/tabs/ui-tab.js.map +1 -0
  118. package/dist/tabs/ui-tabs.html +3 -0
  119. package/dist/tabs/ui-tabs.js +112 -0
  120. package/dist/tabs/ui-tabs.js.map +1 -0
  121. package/dist/toast/ui-toast-region.html +11 -0
  122. package/dist/toast/ui-toast-region.js +38 -0
  123. package/dist/toast/ui-toast-region.js.map +1 -0
  124. package/dist/toast/ui-toast-service.js +70 -0
  125. package/dist/toast/ui-toast-service.js.map +1 -0
  126. package/dist/tooltip/ui-tooltip-service.js +63 -0
  127. package/dist/tooltip/ui-tooltip-service.js.map +1 -0
  128. package/dist/tooltip/ui-tooltip.js +221 -0
  129. package/dist/tooltip/ui-tooltip.js.map +1 -0
  130. package/dist/top-app-bar/ui-top-app-bar.html +24 -0
  131. package/dist/top-app-bar/ui-top-app-bar.js +68 -0
  132. package/dist/top-app-bar/ui-top-app-bar.js.map +1 -0
  133. package/dist/tree/ui-tree.html +38 -0
  134. package/dist/tree/ui-tree.js +340 -0
  135. package/dist/tree/ui-tree.js.map +1 -0
  136. package/dist/types/alert/ui-alert.d.ts +11 -0
  137. package/dist/types/alert-service/alert-configuration.d.ts +8 -0
  138. package/dist/types/alert-service/alert-modal/alert-modal.d.ts +7 -0
  139. package/dist/types/alert-service/alert-modal/i-alert-modal-payload.d.ts +14 -0
  140. package/dist/types/alert-service/alert-service.d.ts +17 -0
  141. package/dist/types/alert-service/decorators/confirm-action.d.ts +3 -0
  142. package/dist/types/alert-service/decorators/using-progress.d.ts +6 -0
  143. package/dist/types/alert-service/exceptions-tracker.d.ts +3 -0
  144. package/dist/types/alert-service/prompt-dialog/prompt-dialog.d.ts +17 -0
  145. package/dist/types/badge/ui-badge.d.ts +7 -0
  146. package/dist/types/base/boolean-attr.d.ts +1 -0
  147. package/dist/types/base/i-validated-element.d.ts +10 -0
  148. package/dist/types/base/keys.d.ts +12 -0
  149. package/dist/types/breadcrumbs/ui-breadcrumbs.d.ts +8 -0
  150. package/dist/types/button/enhance-ui-button.d.ts +3 -0
  151. package/dist/types/button/ui-button.d.ts +16 -0
  152. package/dist/types/button/ui-icon-button.d.ts +18 -0
  153. package/dist/types/checkbox/ui-checkbox.d.ts +32 -0
  154. package/dist/types/chip/ui-chip.d.ts +26 -0
  155. package/dist/types/combobox/enhance-ui-combobox.d.ts +3 -0
  156. package/dist/types/combobox/ui-combobox.d.ts +79 -0
  157. package/dist/types/disclosure/ui-disclosure.d.ts +18 -0
  158. package/dist/types/drawer/ui-drawer.d.ts +38 -0
  159. package/dist/types/index.d.ts +91 -0
  160. package/dist/types/input/enhance-ui-input.d.ts +3 -0
  161. package/dist/types/input/ui-input.d.ts +44 -0
  162. package/dist/types/list/ui-list-item.d.ts +10 -0
  163. package/dist/types/list/ui-list.d.ts +45 -0
  164. package/dist/types/menu/ui-menu.d.ts +29 -0
  165. package/dist/types/popup/ui-popup.d.ts +61 -0
  166. package/dist/types/progress/ui-progress.d.ts +15 -0
  167. package/dist/types/radio/ui-radio-group.d.ts +37 -0
  168. package/dist/types/radio/ui-radio.d.ts +11 -0
  169. package/dist/types/segmented-control/ui-segment.d.ts +8 -0
  170. package/dist/types/segmented-control/ui-segmented-control.d.ts +17 -0
  171. package/dist/types/select/enhance-ui-select.d.ts +3 -0
  172. package/dist/types/select/ui-select.d.ts +50 -0
  173. package/dist/types/slider/ui-slider.d.ts +58 -0
  174. package/dist/types/splitter/ui-splitter.d.ts +39 -0
  175. package/dist/types/switch/ui-switch.d.ts +23 -0
  176. package/dist/types/table/enhance-ui-table.d.ts +3 -0
  177. package/dist/types/table/ui-table-column.d.ts +22 -0
  178. package/dist/types/table/ui-table.d.ts +51 -0
  179. package/dist/types/tabs/ui-tab.d.ts +10 -0
  180. package/dist/types/tabs/ui-tabs.d.ts +16 -0
  181. package/dist/types/toast/ui-toast-region.d.ts +6 -0
  182. package/dist/types/toast/ui-toast-service.d.ts +28 -0
  183. package/dist/types/tooltip/ui-tooltip-service.d.ts +23 -0
  184. package/dist/types/tooltip/ui-tooltip.d.ts +35 -0
  185. package/dist/types/top-app-bar/ui-top-app-bar.d.ts +9 -0
  186. package/dist/types/tree/ui-tree.d.ts +70 -0
  187. package/dist/types/validation/ui-validation-controller-factory.d.ts +7 -0
  188. package/dist/types/validation/ui-validation-result-presenter.d.ts +4 -0
  189. package/dist/types/validation/validate.d.ts +13 -0
  190. package/dist/validation/ui-validation-controller-factory.js +17 -0
  191. package/dist/validation/ui-validation-controller-factory.js.map +1 -0
  192. package/dist/validation/ui-validation-result-presenter.js +23 -0
  193. package/dist/validation/ui-validation-result-presenter.js.map +1 -0
  194. package/dist/validation/validate.js +24 -0
  195. package/dist/validation/validate.js.map +1 -0
  196. package/package.json +50 -0
  197. package/src/alert/ui-alert.html +19 -0
  198. package/src/alert/ui-alert.ts +33 -0
  199. package/src/alert-service/alert-configuration.ts +11 -0
  200. package/src/alert-service/alert-modal/alert-modal.html +12 -0
  201. package/src/alert-service/alert-modal/alert-modal.ts +19 -0
  202. package/src/alert-service/alert-modal/i-alert-modal-payload.ts +14 -0
  203. package/src/alert-service/alert-service.ts +116 -0
  204. package/src/alert-service/decorators/confirm-action.ts +18 -0
  205. package/src/alert-service/decorators/using-progress.ts +32 -0
  206. package/src/alert-service/exceptions-tracker.ts +3 -0
  207. package/src/alert-service/prompt-dialog/prompt-dialog.html +13 -0
  208. package/src/alert-service/prompt-dialog/prompt-dialog.ts +37 -0
  209. package/src/badge/ui-badge.html +6 -0
  210. package/src/badge/ui-badge.ts +17 -0
  211. package/src/base/boolean-attr.ts +3 -0
  212. package/src/base/i-validated-element.ts +11 -0
  213. package/src/base/keys.ts +12 -0
  214. package/src/breadcrumbs/ui-breadcrumbs.html +10 -0
  215. package/src/breadcrumbs/ui-breadcrumbs.ts +14 -0
  216. package/src/button/enhance-ui-button.ts +9 -0
  217. package/src/button/ui-button.html +20 -0
  218. package/src/button/ui-button.ts +60 -0
  219. package/src/button/ui-icon-button.html +20 -0
  220. package/src/button/ui-icon-button.ts +62 -0
  221. package/src/checkbox/ui-checkbox.html +32 -0
  222. package/src/checkbox/ui-checkbox.ts +188 -0
  223. package/src/chip/ui-chip.html +32 -0
  224. package/src/chip/ui-chip.ts +118 -0
  225. package/src/combobox/enhance-ui-combobox.ts +10 -0
  226. package/src/combobox/ui-combobox.html +76 -0
  227. package/src/combobox/ui-combobox.ts +450 -0
  228. package/src/disclosure/ui-disclosure.html +28 -0
  229. package/src/disclosure/ui-disclosure.ts +68 -0
  230. package/src/drawer/ui-drawer.html +35 -0
  231. package/src/drawer/ui-drawer.ts +219 -0
  232. package/src/index.ts +152 -0
  233. package/src/input/enhance-ui-input.ts +10 -0
  234. package/src/input/ui-input.html +56 -0
  235. package/src/input/ui-input.ts +225 -0
  236. package/src/list/ui-list-item.html +22 -0
  237. package/src/list/ui-list-item.ts +25 -0
  238. package/src/list/ui-list.html +10 -0
  239. package/src/list/ui-list.ts +330 -0
  240. package/src/menu/ui-menu.html +20 -0
  241. package/src/menu/ui-menu.ts +103 -0
  242. package/src/popup/ui-popup.html +16 -0
  243. package/src/popup/ui-popup.ts +391 -0
  244. package/src/progress/ui-progress.html +17 -0
  245. package/src/progress/ui-progress.ts +51 -0
  246. package/src/radio/ui-radio-group.html +27 -0
  247. package/src/radio/ui-radio-group.ts +250 -0
  248. package/src/radio/ui-radio.html +11 -0
  249. package/src/radio/ui-radio.ts +35 -0
  250. package/src/resource.d.ts +4 -0
  251. package/src/segmented-control/ui-segment.html +10 -0
  252. package/src/segmented-control/ui-segment.ts +20 -0
  253. package/src/segmented-control/ui-segmented-control.html +9 -0
  254. package/src/segmented-control/ui-segmented-control.ts +119 -0
  255. package/src/select/enhance-ui-select.ts +10 -0
  256. package/src/select/ui-select.html +70 -0
  257. package/src/select/ui-select.ts +294 -0
  258. package/src/slider/ui-slider.html +69 -0
  259. package/src/slider/ui-slider.ts +329 -0
  260. package/src/splitter/ui-splitter.html +14 -0
  261. package/src/splitter/ui-splitter.ts +249 -0
  262. package/src/switch/ui-switch.html +23 -0
  263. package/src/switch/ui-switch.ts +121 -0
  264. package/src/table/enhance-ui-table.ts +9 -0
  265. package/src/table/ui-table-column.html +17 -0
  266. package/src/table/ui-table-column.ts +108 -0
  267. package/src/table/ui-table.html +56 -0
  268. package/src/table/ui-table.ts +209 -0
  269. package/src/tabs/ui-tab.html +10 -0
  270. package/src/tabs/ui-tab.ts +30 -0
  271. package/src/tabs/ui-tabs.html +3 -0
  272. package/src/tabs/ui-tabs.ts +105 -0
  273. package/src/toast/ui-toast-region.html +11 -0
  274. package/src/toast/ui-toast-region.ts +18 -0
  275. package/src/toast/ui-toast-service.ts +100 -0
  276. package/src/tooltip/ui-tooltip-service.ts +84 -0
  277. package/src/tooltip/ui-tooltip.ts +200 -0
  278. package/src/top-app-bar/ui-top-app-bar.html +24 -0
  279. package/src/top-app-bar/ui-top-app-bar.ts +27 -0
  280. package/src/tree/ui-tree.html +38 -0
  281. package/src/tree/ui-tree.ts +363 -0
  282. package/src/validation/ui-validation-controller-factory.ts +20 -0
  283. package/src/validation/ui-validation-result-presenter.ts +26 -0
  284. package/src/validation/validate.ts +35 -0
@@ -0,0 +1,23 @@
1
+ export declare class UiSwitch {
2
+ private readonly host;
3
+ checked: boolean;
4
+ disabled: boolean;
5
+ hover: boolean;
6
+ focus: boolean;
7
+ active: boolean;
8
+ changing: boolean;
9
+ private changingFrame;
10
+ onClick(): void;
11
+ onKeyUp(event: KeyboardEvent): void;
12
+ onKeyPress(event: KeyboardEvent): void;
13
+ onMouseEnter(): void;
14
+ onMouseLeave(): void;
15
+ onFocusIn(): void;
16
+ onFocusOut(): void;
17
+ onPointerDown(): void;
18
+ onPointerUp(): void;
19
+ onPointerLeave(): void;
20
+ detaching(): void;
21
+ private toggle;
22
+ private submitClosestForm;
23
+ }
@@ -0,0 +1,3 @@
1
+ export declare class EnhanceUiTable {
2
+ compiling(template: HTMLElement | HTMLTemplateElement): void;
3
+ }
@@ -0,0 +1,22 @@
1
+ import { UiTable } from './ui-table';
2
+ export declare class UiTableColumn implements EventListenerObject {
3
+ readonly host: HTMLElement;
4
+ readonly table: UiTable;
5
+ private resizeHandle;
6
+ private startX;
7
+ private startWidth;
8
+ private resizing;
9
+ sortable: boolean;
10
+ resizable: boolean;
11
+ minWidth: number;
12
+ direction: 'asc' | 'desc' | undefined;
13
+ sortOrder: number | undefined;
14
+ attaching(): void;
15
+ detaching(): void;
16
+ handleEvent(event: Event): void;
17
+ applyWidth(width: number | undefined): void;
18
+ onClick(event: MouseEvent): void;
19
+ onPointerDown(event: PointerEvent): void;
20
+ private onPointerMove;
21
+ private onPointerUp;
22
+ }
@@ -0,0 +1,51 @@
1
+ import type { UiTableColumn } from './ui-table-column';
2
+ type TableSort = {
3
+ column: string;
4
+ direction: 'asc' | 'desc';
5
+ };
6
+ type ColumnSort = {
7
+ column: string;
8
+ columnViewModel: UiTableColumn;
9
+ direction: 'asc' | 'desc' | undefined;
10
+ multiple: boolean;
11
+ };
12
+ export declare class UiTable {
13
+ private readonly host;
14
+ private columnSizes;
15
+ private readonly sortedColumns;
16
+ sort: TableSort[];
17
+ sortChanged(): void;
18
+ page: number;
19
+ pageSize: number;
20
+ total: number;
21
+ totalChanged(): void;
22
+ totalPages: number;
23
+ pageOptions: number[];
24
+ storageKey: string | undefined;
25
+ storageKeyChanged(): void;
26
+ pagination: boolean;
27
+ progress: boolean;
28
+ pageSizeOptions: number[];
29
+ paginationText: string;
30
+ attaching(): void;
31
+ setColumnWidth(columnId: string, width: number, persist?: boolean): void;
32
+ onColumnSort(event: CustomEvent<ColumnSort>): void;
33
+ private updateColumnSortState;
34
+ pageSizeChanged(): void;
35
+ nextPage(): void;
36
+ firstPage(): void;
37
+ lastPage(): void;
38
+ previousPage(): void;
39
+ setPage(page: number): void;
40
+ setPageSize(pageSize: number): void;
41
+ onPageSizeChange(event: Event): void;
42
+ onPageChange(event: Event): void;
43
+ private updateTotalPages;
44
+ private applyColumnSizes;
45
+ getColumnWidth(columnId: string): number | undefined;
46
+ private applyColumnWidth;
47
+ private loadColumnSizes;
48
+ private persistColumnSizes;
49
+ private get storageId();
50
+ }
51
+ export {};
@@ -0,0 +1,10 @@
1
+ import { UiTabs } from './ui-tabs';
2
+ export declare class UiTab {
3
+ readonly element: HTMLElement;
4
+ readonly parentTabs: UiTabs;
5
+ value: unknown;
6
+ disabled: boolean;
7
+ get selected(): boolean;
8
+ get tabIndex(): number;
9
+ onClick(): void;
10
+ }
@@ -0,0 +1,16 @@
1
+ import { UiTab } from './ui-tab';
2
+ export declare class UiTabs {
3
+ private readonly element;
4
+ value: unknown;
5
+ tabs: UiTab[];
6
+ tabsChanged(): void;
7
+ attached(): void;
8
+ select(value: unknown): void;
9
+ isSelected(tab: UiTab): boolean;
10
+ onKeyDown(event: KeyboardEvent): void;
11
+ private get enabledTabs();
12
+ private selectInitialTab;
13
+ private focusTab;
14
+ private getNavigationDirection;
15
+ private dispatchValueEvent;
16
+ }
@@ -0,0 +1,6 @@
1
+ import { UiToastMessage } from './ui-toast-service';
2
+ export declare class UiToastRegion {
3
+ private readonly host;
4
+ toasts: UiToastMessage[];
5
+ close(toast: UiToastMessage): void;
6
+ }
@@ -0,0 +1,28 @@
1
+ import { AlertTone } from '../alert/ui-alert';
2
+ export interface UiToastOptions {
3
+ tone?: AlertTone;
4
+ title?: string;
5
+ message: string;
6
+ duration?: number;
7
+ }
8
+ export interface UiToastMessage extends Required<Pick<UiToastOptions, 'tone' | 'message' | 'duration'>> {
9
+ id: number;
10
+ title?: string;
11
+ }
12
+ export declare class UiToastService {
13
+ private readonly container;
14
+ private host;
15
+ private enhanced;
16
+ private nextId;
17
+ private timers;
18
+ toasts: UiToastMessage[];
19
+ show(options: string | UiToastOptions): Promise<number>;
20
+ info(message: string, title?: string): Promise<number>;
21
+ success(message: string, title?: string): Promise<number>;
22
+ warning(message: string, title?: string): Promise<number>;
23
+ danger(message: string, title?: string): Promise<number>;
24
+ remove(id: number): void;
25
+ clear(): void;
26
+ private createToast;
27
+ private ensureEnhanced;
28
+ }
@@ -0,0 +1,23 @@
1
+ type TooltipPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
2
+ interface TooltipOptions {
3
+ anchor: HTMLElement;
4
+ text: string;
5
+ placement: TooltipPlacement;
6
+ offset: number;
7
+ }
8
+ export declare class UiTooltipService {
9
+ private readonly container;
10
+ private host;
11
+ private enhanced;
12
+ private request;
13
+ open: boolean;
14
+ anchor: HTMLElement | undefined;
15
+ text: string;
16
+ placement: TooltipPlacement;
17
+ offset: number;
18
+ tooltipId: string;
19
+ show(options: TooltipOptions): Promise<void>;
20
+ hide(anchor: HTMLElement): void;
21
+ private ensureEnhanced;
22
+ }
23
+ export type { TooltipPlacement, TooltipOptions };
@@ -0,0 +1,35 @@
1
+ import { TooltipPlacement } from './ui-tooltip-service';
2
+ export declare class UiTooltip implements EventListenerObject {
3
+ private readonly host;
4
+ private readonly tooltipService;
5
+ private openTimer;
6
+ private closeTimer;
7
+ private pointerInside;
8
+ private focusInside;
9
+ private described;
10
+ text: string | undefined;
11
+ textChanged(): void;
12
+ placement: TooltipPlacement;
13
+ placementChanged(): void;
14
+ offset: number;
15
+ offsetChanged(): void;
16
+ openDelay: number;
17
+ closeDelay: number;
18
+ disabled: boolean;
19
+ disabledChanged(): void;
20
+ attaching(): void;
21
+ detaching(): void;
22
+ handleEvent(event: Event): void;
23
+ private scheduleOpen;
24
+ private scheduleClose;
25
+ private closeNow;
26
+ private getOptions;
27
+ private canOpen;
28
+ private getDelay;
29
+ private clearTimers;
30
+ private clearOpenTimer;
31
+ private clearCloseTimer;
32
+ private addDescribedBy;
33
+ private removeDescribedBy;
34
+ private getDescribedByIds;
35
+ }
@@ -0,0 +1,9 @@
1
+ export declare class UiTopAppBar {
2
+ sticky: boolean;
3
+ fixed: boolean;
4
+ dense: boolean;
5
+ elevated: boolean;
6
+ navigationNodes: readonly Node[];
7
+ breadcrumbNodes: readonly Node[];
8
+ actionNodes: readonly Node[];
9
+ }
@@ -0,0 +1,70 @@
1
+ type TreeField<T> = string | ((item: T) => unknown);
2
+ type TreeSelectionMode = 'single' | 'none';
3
+ export interface UiTreeRow {
4
+ id: string;
5
+ item: unknown;
6
+ value: unknown;
7
+ label: string;
8
+ depth: number;
9
+ parent: UiTreeRow | undefined;
10
+ children: UiTreeRow[];
11
+ expanded: boolean;
12
+ disabled: boolean;
13
+ posInSet: number;
14
+ setSize: number;
15
+ element: HTMLElement | undefined;
16
+ slotHost: UiTreeRowSlotHost;
17
+ }
18
+ export interface UiTreeRowSlotHost {
19
+ item: unknown;
20
+ row: UiTreeRow;
21
+ }
22
+ export declare class UiTree {
23
+ private readonly host;
24
+ private expandedValues;
25
+ items: unknown[];
26
+ itemsChanged(): void;
27
+ value: unknown;
28
+ valueChanged(): void;
29
+ label: string | undefined;
30
+ childrenField: TreeField<unknown>;
31
+ childrenFieldChanged(): void;
32
+ valueField: TreeField<unknown>;
33
+ valueFieldChanged(): void;
34
+ labelField: TreeField<unknown>;
35
+ labelFieldChanged(): void;
36
+ disabledField: TreeField<unknown>;
37
+ disabledFieldChanged(): void;
38
+ expandedField: TreeField<unknown>;
39
+ expandedFieldChanged(): void;
40
+ selectionMode: TreeSelectionMode;
41
+ disabled: boolean;
42
+ visibleRows: UiTreeRow[];
43
+ activeValue: unknown;
44
+ binding(): void;
45
+ onRowClick(row: UiTreeRow): void;
46
+ onToggleClick(row: UiTreeRow, event: Event): void;
47
+ onKeyDown(event: KeyboardEvent): void;
48
+ private rebuildRows;
49
+ private buildRows;
50
+ private flattenVisibleRows;
51
+ private getChildren;
52
+ private getLabel;
53
+ private getBooleanFieldValue;
54
+ private getFieldValue;
55
+ private getFocusedRow;
56
+ private focusSibling;
57
+ private expandOrEnter;
58
+ private collapseOrExit;
59
+ private focusFirst;
60
+ private focusLast;
61
+ private get enabledRows();
62
+ private focusRow;
63
+ private selectRow;
64
+ private toggleRow;
65
+ private expandRow;
66
+ private collapseRow;
67
+ private restoreFocus;
68
+ private dispatchValueEvent;
69
+ }
70
+ export {};
@@ -0,0 +1,7 @@
1
+ import { IContainer, IFactory, Constructable, Transformer, Key } from '@aurelia/kernel';
2
+ import { IValidationController } from '@aurelia/validation-html';
3
+ export declare class UiValidationControllerFactory implements IFactory<Constructable<IValidationController>> {
4
+ Type: Constructable<IValidationController>;
5
+ registerTransformer(_transformer: Transformer<Constructable<IValidationController>>): boolean;
6
+ construct(_: IContainer, _dynamicDependencies?: Key[] | undefined): IValidationController;
7
+ }
@@ -0,0 +1,4 @@
1
+ import { ValidationEvent, ValidationResultsSubscriber } from '@aurelia/validation-html';
2
+ export declare class UiValidationResultPresenter implements ValidationResultsSubscriber {
3
+ handleValidationEvent(event: ValidationEvent): void;
4
+ }
@@ -0,0 +1,13 @@
1
+ import { IValidationController } from '@aurelia/validation-html';
2
+ interface AlertService {
3
+ error(message: string): Promise<void> | void;
4
+ }
5
+ export interface IWithValidationController {
6
+ validationController: IValidationController;
7
+ alertService: AlertService;
8
+ }
9
+ /**
10
+ * @param errorMessage Optional error message, not displayed if `null`
11
+ */
12
+ export declare function validate(errorMessage?: string | undefined | null): <This extends IWithValidationController, Args extends any[], Return>(originalMethod: (this: This, ...args: Args) => Return, _: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>) => (this: This, ...args: Args) => Promise<Return | undefined>;
13
+ export {};
@@ -0,0 +1,17 @@
1
+ import { ValidationController } from '@aurelia/validation-html';
2
+ import { UiValidationResultPresenter } from './ui-validation-result-presenter';
3
+ export class UiValidationControllerFactory {
4
+ Type = (void 0);
5
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
+ registerTransformer(_transformer) {
7
+ return false;
8
+ }
9
+ construct(_, _dynamicDependencies) {
10
+ const controller = _dynamicDependencies !== void 0
11
+ ? Reflect.construct(ValidationController, _dynamicDependencies)
12
+ : new ValidationController();
13
+ controller.addSubscriber(new UiValidationResultPresenter());
14
+ return controller;
15
+ }
16
+ }
17
+ //# sourceMappingURL=ui-validation-controller-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-validation-controller-factory.js","sourceRoot":"","sources":["../../src/validation/ui-validation-controller-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,OAAO,6BAA6B;IACjC,IAAI,GAAyC,CAAC,KAAK,CAAC,CAAE,CAAC;IAE9D,6DAA6D;IACtD,mBAAmB,CAAC,YAA+D;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,SAAS,CAAC,CAAa,EAAE,oBAAwC;QACtE,MAAM,UAAU,GAA0B,oBAAoB,KAAK,KAAK,CAAC;YACvE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;YAC/D,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAC/B,UAAU,CAAC,aAAa,CAAC,IAAI,2BAA2B,EAAE,CAAC,CAAC;QAC5D,OAAO,UAAU,CAAC;IACpB,CAAC;CACF","sourcesContent":["import { IContainer, IFactory, Constructable, Transformer, Key } from '@aurelia/kernel';\r\nimport { IValidationController, ValidationController } from '@aurelia/validation-html';\r\nimport { UiValidationResultPresenter } from './ui-validation-result-presenter';\r\n\r\nexport class UiValidationControllerFactory implements IFactory<Constructable<IValidationController>> {\r\n public Type: Constructable<IValidationController> = (void 0)!;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public registerTransformer(_transformer: Transformer<Constructable<IValidationController>>): boolean {\r\n return false;\r\n }\r\n\r\n public construct(_: IContainer, _dynamicDependencies?: Key[] | undefined): IValidationController {\r\n const controller: IValidationController = _dynamicDependencies !== void 0\r\n ? Reflect.construct(ValidationController, _dynamicDependencies)\r\n : new ValidationController();\r\n controller.addSubscriber(new UiValidationResultPresenter());\r\n return controller;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,23 @@
1
+ export class UiValidationResultPresenter {
2
+ handleValidationEvent(event) {
3
+ for (let i = 0; i < event.removedResults.length; ++i) {
4
+ const ri = event.removedResults[i];
5
+ for (let j = 0; j < ri.targets.length; ++j) {
6
+ const el = ri.targets[j];
7
+ if (!ri.result.valid && Object.getOwnPropertyDescriptor(el, 'removeError')) {
8
+ el.removeError(ri.result);
9
+ }
10
+ }
11
+ }
12
+ for (let i = 0; i < event.addedResults.length; ++i) {
13
+ const ri = event.addedResults[i];
14
+ for (let j = 0; j < ri.targets.length; ++j) {
15
+ const el = ri.targets[j];
16
+ if (!ri.result.valid && Object.getOwnPropertyDescriptor(el, 'addError')) {
17
+ el.addError(ri.result);
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ //# sourceMappingURL=ui-validation-result-presenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-validation-result-presenter.js","sourceRoot":"","sources":["../../src/validation/ui-validation-result-presenter.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,2BAA2B;IACtC,qBAAqB,CAAC,KAAsB;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC;gBAC9C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC;oBAC3E,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACnD,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC;gBAC9C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;oBACxE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["import { IValidatedElement } from '../base/i-validated-element';\r\nimport { ValidationEvent, ValidationResultsSubscriber } from '@aurelia/validation-html';\r\n\r\nexport class UiValidationResultPresenter implements ValidationResultsSubscriber {\r\n handleValidationEvent(event: ValidationEvent): void {\r\n for (let i = 0; i < event.removedResults.length; ++i) {\r\n const ri = event.removedResults[i];\r\n for (let j = 0; j < ri.targets.length; ++j) {\r\n const el = ri.targets[j] as IValidatedElement;\r\n if (!ri.result.valid && Object.getOwnPropertyDescriptor(el, 'removeError')) {\r\n el.removeError(ri.result);\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < event.addedResults.length; ++i) {\r\n const ri = event.addedResults[i];\r\n for (let j = 0; j < ri.targets.length; ++j) {\r\n const el = ri.targets[j] as IValidatedElement;\r\n if (!ri.result.valid && Object.getOwnPropertyDescriptor(el, 'addError')) {\r\n el.addError(ri.result);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @param errorMessage Optional error message, not displayed if `null`
3
+ */
4
+ export function validate(errorMessage) {
5
+ return function actualDecorator(originalMethod, _) {
6
+ return async function replacementMethod(...args) {
7
+ if (!this.alertService) {
8
+ throw new Error('Did you forget to inject AlertService?');
9
+ }
10
+ if (!this.validationController) {
11
+ throw new Error('Did you forget to create ValidationController?');
12
+ }
13
+ const errors = await this.validationController.validate();
14
+ if (!errors.valid) {
15
+ if (errorMessage !== null && this.alertService) {
16
+ await this.alertService.error(errorMessage ?? 'Please fix validation errors');
17
+ }
18
+ return;
19
+ }
20
+ return originalMethod.call(this, ...args);
21
+ };
22
+ };
23
+ }
24
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validation/validate.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,YAAwC;IAC/D,OAAO,SAAS,eAAe,CAAqE,cAAqD,EACvJ,CAA2E;QAC3E,OAAO,KAAK,UAAU,iBAAiB,CAAa,GAAG,IAAU;YAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,IAAI,8BAA8B,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO;YACT,CAAC;YACD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;IACJ,CAAC,CAAA;AACH,CAAC","sourcesContent":["import { IValidationController } from '@aurelia/validation-html';\n\ninterface AlertService {\n error(message: string): Promise<void> | void;\n}\n\nexport interface IWithValidationController {\n validationController: IValidationController;\n alertService: AlertService;\n}\n\n/**\n * @param errorMessage Optional error message, not displayed if `null`\n */\nexport function validate(errorMessage?: string | undefined | null) {\n return function actualDecorator<This extends IWithValidationController, Args extends any[], Return>(originalMethod: (this: This, ...args: Args) => Return,\n _: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>) {\n return async function replacementMethod(this: This, ...args: Args) {\n if (!this.alertService) {\n throw new Error('Did you forget to inject AlertService?');\n }\n if (!this.validationController) {\n throw new Error('Did you forget to create ValidationController?');\n }\n const errors = await this.validationController.validate();\n if (!errors.valid) {\n if (errorMessage !== null && this.alertService) {\n await this.alertService.error(errorMessage ?? 'Please fix validation errors');\n }\n return;\n }\n return originalMethod.call(this, ...args);\n };\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@aurelia-ui-toolkits/headless",
3
+ "version": "1.0.0",
4
+ "description": "Headless UI components for Aurelia 2",
5
+ "license": "MIT",
6
+ "author": "Maxim Balaganskiy <m.balaganskiy@gmail.com>",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/aurelia-ui-toolkits/aurelia-headless.git",
10
+ "directory": "packages/components"
11
+ },
12
+ "homepage": "https://aurelia-ui-toolkits.github.io/aurelia-headless/",
13
+ "bugs": {
14
+ "url": "https://github.com/aurelia-ui-toolkits/aurelia-headless/issues"
15
+ },
16
+ "keywords": [
17
+ "aurelia",
18
+ "aurelia2",
19
+ "headless",
20
+ "components",
21
+ "ui"
22
+ ],
23
+ "main": "dist/index.js",
24
+ "module": "dist/index.js",
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.js",
28
+ "require": "./dist/index.js",
29
+ "types": "./dist/types/index.d.ts"
30
+ }
31
+ },
32
+ "typings": "dist/types/index.d.ts",
33
+ "files": [
34
+ "dist",
35
+ "src"
36
+ ],
37
+ "scripts": {
38
+ "prebuild": "rimraf dist",
39
+ "build:ts": "tsc -p tsconfig.build.json",
40
+ "build:other": "copyfiles -u 1 src/**/*.html dist",
41
+ "build": "npm run build:ts && npm run build:other"
42
+ },
43
+ "peerDependencies": {
44
+ "@aurelia/dialog": ">=2.0.0-rc.1",
45
+ "aurelia": ">=2.0.0-rc.1"
46
+ },
47
+ "dependencies": {
48
+ "tslib": "^2.8.1"
49
+ }
50
+ }
@@ -0,0 +1,19 @@
1
+ <template class="ui-alert"
2
+ role.bind="role"
3
+ show.bind="open"
4
+ data-tone.attr="tone"
5
+ data-dismissible.attr="dismissible ? '' : null">
6
+ <div class="ui-alert__icon" aria-hidden="true"></div>
7
+ <div class="ui-alert__content">
8
+ <strong class="ui-alert__title" if.bind="title">${title}</strong>
9
+ <div class="ui-alert__message">
10
+ <au-slot></au-slot>
11
+ </div>
12
+ <div class="ui-alert__actions" if.bind="actionNodes.length">
13
+ <au-slot name="actions"></au-slot>
14
+ </div>
15
+ </div>
16
+ <button class="ui-alert__close" type="button" if.bind="dismissible" click.trigger="close()" aria-label="Dismiss alert">
17
+ <span class="ui-alert__close-icon" aria-hidden="true"></span>
18
+ </button>
19
+ </template>
@@ -0,0 +1,33 @@
1
+ import { bindable, BindingMode, customElement, INode, resolve, slotted } from 'aurelia';
2
+ import { booleanAttr } from '../base/boolean-attr';
3
+ import template from './ui-alert.html?raw';
4
+
5
+ export type AlertTone = 'info' | 'success' | 'warning' | 'danger';
6
+
7
+ @customElement({ name: 'ui-alert', template })
8
+ export class UiAlert {
9
+ private readonly host = resolve(INode) as HTMLElement;
10
+
11
+ @bindable
12
+ tone: AlertTone = 'info';
13
+
14
+ @bindable
15
+ title: string | undefined;
16
+
17
+ @bindable
18
+ role: 'status' | 'alert' | 'note' = 'status';
19
+
20
+ @bindable({ mode: BindingMode.twoWay, set: booleanAttr })
21
+ open: boolean = true;
22
+
23
+ @bindable({ set: booleanAttr })
24
+ dismissible: boolean = false;
25
+
26
+ @slotted({ slotName: 'actions' })
27
+ actionNodes: readonly Node[] = [];
28
+
29
+ close(): void {
30
+ this.open = false;
31
+ this.host.dispatchEvent(new CustomEvent('alert-close', { bubbles: true }));
32
+ }
33
+ }
@@ -0,0 +1,11 @@
1
+ import { AlertModal } from './alert-modal/alert-modal';
2
+ import { PromptDialog } from './prompt-dialog/prompt-dialog';
3
+
4
+ export class AlertConfiguration {
5
+ defaultAlertModal: new (...args: never[]) => object = AlertModal;
6
+ defaultPromptDialog: new (...args: never[]) => object = PromptDialog;
7
+ okText: string = 'Ok';
8
+ cancelText: string = 'Cancel';
9
+ yesText: string = 'Yes';
10
+ noText: string = 'No';
11
+ }
@@ -0,0 +1,12 @@
1
+ <template class="ui-alert-modal" data-tone.attr="payload.tone ?? 'info'">
2
+ <div class="ui-alert-modal__icon" aria-hidden="true">${payload.icon}</div>
3
+ <div class="ui-alert-modal__body">
4
+ <h2 class="ui-alert-modal__title" if.bind="payload.caption">${payload.caption}</h2>
5
+ <p class="ui-alert-modal__message" if.bind="payload.message">${payload.message}</p>
6
+ <div class="ui-alert-modal__html" if.bind="payload.html" innerhtml.bind="payload.html"></div>
7
+ <div class="ui-alert-modal__actions">
8
+ <button ui-button outlined type="button" if.bind="payload.button1Text" click.trigger="close(payload.button1Action)">${payload.button1Text}</button>
9
+ <button ui-button primary type="button" if.bind="payload.button2Text" click.trigger="close(payload.button2Action)" autofocus>${payload.button2Text}</button>
10
+ </div>
11
+ </div>
12
+ </template>
@@ -0,0 +1,19 @@
1
+ import { IDialogController } from '@aurelia/dialog';
2
+ import { customElement, resolve } from 'aurelia';
3
+ import template from './alert-modal.html?raw';
4
+ import { IAlertModalPayload } from './i-alert-modal-payload';
5
+
6
+ @customElement({ name: 'alert-modal', template })
7
+ export class AlertModal {
8
+ private readonly dialog = resolve(IDialogController);
9
+
10
+ payload: IAlertModalPayload = {};
11
+
12
+ activate(payload: IAlertModalPayload): void {
13
+ this.payload = payload;
14
+ }
15
+
16
+ close(action: string | undefined): Promise<unknown> {
17
+ return this.dialog.ok(action);
18
+ }
19
+ }
@@ -0,0 +1,14 @@
1
+ export interface IAlertModalPayload {
2
+ icon?: string;
3
+ tone?: 'info' | 'success' | 'warning' | 'danger';
4
+ caption?: string;
5
+ message?: string;
6
+ html?: string;
7
+ button1Text?: string;
8
+ button2Text?: string;
9
+ button1Action?: string;
10
+ button2Action?: string;
11
+ defaultAction?: string;
12
+ successAction?: string;
13
+ defensive?: boolean;
14
+ }