jsl-ui 9.28.3 → 9.28.4

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 (170) hide show
  1. package/lib/components/IntervalComponent.d.ts +17 -17
  2. package/lib/components/IntervalComponent.js +65 -65
  3. package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +22 -22
  4. package/lib/components/auto-suggest/AutoSuggestComponent.js +47 -47
  5. package/lib/components/button/ButtonComponent.d.ts +18 -18
  6. package/lib/components/button/ButtonComponent.js +29 -29
  7. package/lib/components/checkbox/CheckBoxComponent.d.ts +28 -28
  8. package/lib/components/checkbox/CheckBoxComponent.js +81 -81
  9. package/lib/components/date/DateComponent.d.ts +32 -32
  10. package/lib/components/date/DateComponent.js +89 -89
  11. package/lib/components/date-range/DateRangeComponent.d.ts +35 -35
  12. package/lib/components/date-range/DateRangeComponent.js +121 -123
  13. package/lib/components/date-time/DateTimeComponent.d.ts +15 -15
  14. package/lib/components/date-time/DateTimeComponent.js +39 -39
  15. package/lib/components/dialog/DialogComponent.d.ts +67 -67
  16. package/lib/components/dialog/DialogComponent.js +192 -198
  17. package/lib/components/drop-down/DropDownComponent.d.ts +27 -27
  18. package/lib/components/drop-down/DropDownComponent.js +60 -60
  19. package/lib/components/expander/ExpanderComponent.d.ts +27 -27
  20. package/lib/components/expander/ExpanderComponent.js +87 -89
  21. package/lib/components/form-field/FormComponent.d.ts +12 -12
  22. package/lib/components/form-field/FormComponent.js +23 -23
  23. package/lib/components/form-field/FormFieldComponent.d.ts +39 -39
  24. package/lib/components/form-field/FormFieldComponent.js +138 -138
  25. package/lib/components/grid/GridComponent.d.ts +26 -26
  26. package/lib/components/grid/GridComponent.js +110 -110
  27. package/lib/components/input/InputComponent.d.ts +33 -33
  28. package/lib/components/input/InputComponent.js +126 -126
  29. package/lib/components/loading/LoadingComponent.d.ts +8 -8
  30. package/lib/components/loading/LoadingComponent.js +20 -20
  31. package/lib/components/navigation/NavigationComponent.d.ts +34 -34
  32. package/lib/components/navigation/NavigationComponent.js +47 -45
  33. package/lib/components/notification/Notification.d.ts +19 -19
  34. package/lib/components/notification/Notification.js +65 -65
  35. package/lib/components/number/NumberComponent.d.ts +26 -26
  36. package/lib/components/number/NumberComponent.js +80 -80
  37. package/lib/components/overlay/OverlayComponent.d.ts +27 -27
  38. package/lib/components/overlay/OverlayComponent.js +134 -137
  39. package/lib/components/progress/ProgressComponent.d.ts +18 -18
  40. package/lib/components/progress/ProgressComponent.js +40 -40
  41. package/lib/components/ribbon-menu/RibbonMenuComponent.d.ts +12 -12
  42. package/lib/components/ribbon-menu/RibbonMenuComponent.js +23 -23
  43. package/lib/components/select/SelectComponent.d.ts +79 -79
  44. package/lib/components/select/SelectComponent.js +352 -356
  45. package/lib/components/select/SelectDDAreaComponent.d.ts +32 -32
  46. package/lib/components/select/SelectDDAreaComponent.js +303 -303
  47. package/lib/components/slider/nouislider.d.ts +44 -44
  48. package/lib/components/slider/nouislider.js +2158 -2158
  49. package/lib/components/stack-panel/SplitterComponent.d.ts +21 -21
  50. package/lib/components/stack-panel/SplitterComponent.js +124 -124
  51. package/lib/components/stack-panel/StackPanelComponent.d.ts +20 -20
  52. package/lib/components/stack-panel/StackPanelComponent.js +50 -50
  53. package/lib/components/tabs/TabsComponent.d.ts +40 -40
  54. package/lib/components/tabs/TabsComponent.js +191 -200
  55. package/lib/components/time/TimeComponent.d.ts +29 -29
  56. package/lib/components/time/TimeComponent.js +102 -104
  57. package/lib/components/tree-view/TreeViewComponent.d.ts +23 -23
  58. package/lib/components/tree-view/TreeViewComponent.js +42 -43
  59. package/lib/components/virtual-render/VirtualRenderComponent.d.ts +30 -30
  60. package/lib/components/virtual-render/VirtualRenderComponent.js +90 -92
  61. package/lib/core/culture.d.ts +5 -5
  62. package/lib/core/culture.js +385 -385
  63. package/lib/core/date.d.ts +14 -14
  64. package/lib/core/date.js +346 -346
  65. package/lib/core/helper.d.ts +13 -13
  66. package/lib/core/helper.js +100 -100
  67. package/lib/core/jq.d.ts +37 -37
  68. package/lib/core/jq.js +362 -362
  69. package/lib/core/lang.d.ts +24 -24
  70. package/lib/core/lang.js +24 -24
  71. package/lib/core/numeric.d.ts +7 -7
  72. package/lib/core/numeric.js +139 -139
  73. package/lib/core/polyfills.js +22 -22
  74. package/lib/core.d.ts +6 -6
  75. package/lib/core.js +6 -6
  76. package/lib/grid/filterDialogs/dateRangeFilter.d.ts +7 -7
  77. package/lib/grid/filterDialogs/dateRangeFilter.js +106 -106
  78. package/lib/grid/filterDialogs/excelFilter.d.ts +9 -9
  79. package/lib/grid/filterDialogs/excelFilter.js +250 -250
  80. package/lib/grid/plugins/ext.overlay.d.ts +2 -2
  81. package/lib/grid/plugins/ext.overlay.js +295 -295
  82. package/lib/grid/plugins/slick.cellrangedecorator.d.ts +12 -12
  83. package/lib/grid/plugins/slick.cellrangedecorator.js +68 -68
  84. package/lib/grid/plugins/slick.cellrangeselector.d.ts +1 -1
  85. package/lib/grid/plugins/slick.cellrangeselector.js +144 -144
  86. package/lib/grid/plugins/slick.cellselectionmodel.d.ts +1 -1
  87. package/lib/grid/plugins/slick.cellselectionmodel.js +194 -194
  88. package/lib/grid/plugins/slick.headerbuttons.d.ts +55 -55
  89. package/lib/grid/plugins/slick.headerbuttons.js +156 -156
  90. package/lib/grid/plugins/slick.headermenu.d.ts +74 -74
  91. package/lib/grid/plugins/slick.headermenu.js +260 -260
  92. package/lib/grid/plugins/slick.rowmovemanager.d.ts +18 -18
  93. package/lib/grid/plugins/slick.rowmovemanager.js +249 -249
  94. package/lib/grid/plugins/slick.rowselectionmodel.d.ts +1 -1
  95. package/lib/grid/plugins/slick.rowselectionmodel.js +167 -167
  96. package/lib/grid/slick.core.d.ts +91 -91
  97. package/lib/grid/slick.core.js +574 -574
  98. package/lib/grid/slick.creator.d.ts +81 -81
  99. package/lib/grid/slick.creator.js +726 -726
  100. package/lib/grid/slick.dataview.d.ts +71 -71
  101. package/lib/grid/slick.dataview.js +1069 -1069
  102. package/lib/grid/slick.editors.core.d.ts +4 -4
  103. package/lib/grid/slick.editors.core.js +235 -235
  104. package/lib/grid/slick.editors.date.d.ts +2 -2
  105. package/lib/grid/slick.editors.date.js +125 -125
  106. package/lib/grid/slick.editors.lookup.d.ts +14 -14
  107. package/lib/grid/slick.editors.lookup.js +352 -352
  108. package/lib/grid/slick.editors.nav.d.ts +6 -6
  109. package/lib/grid/slick.editors.nav.js +22 -22
  110. package/lib/grid/slick.formatters.d.ts +17 -17
  111. package/lib/grid/slick.formatters.js +144 -144
  112. package/lib/grid/slick.grid.d.ts +285 -285
  113. package/lib/grid/slick.grid.js +5409 -5409
  114. package/lib/grid/slick.groupitemmetadataprovider.d.ts +39 -39
  115. package/lib/grid/slick.groupitemmetadataprovider.js +165 -165
  116. package/lib/grid/slick.tree.d.ts +33 -33
  117. package/lib/grid/slick.tree.js +208 -208
  118. package/lib/grid.css +705 -1
  119. package/lib/grid.d.ts +13 -13
  120. package/lib/grid.js +13 -13
  121. package/lib/index.css +2195 -8
  122. package/lib/index.css.map +1 -1
  123. package/lib/index.d.ts +55 -56
  124. package/lib/index.js +61 -61
  125. package/lib/index.js.map +1 -1
  126. package/lib/interaction/dataconverter.d.ts +4 -4
  127. package/lib/interaction/dataconverter.js +1 -0
  128. package/lib/interaction/eventhandler.d.ts +13 -13
  129. package/lib/interaction/eventhandler.js +39 -39
  130. package/lib/interaction/moveable.d.ts +39 -39
  131. package/lib/interaction/moveable.js +160 -160
  132. package/lib/interaction/resizable.d.ts +37 -37
  133. package/lib/interaction/resizable.js +109 -109
  134. package/lib/ui/auto.suggest.d.ts +18 -18
  135. package/lib/ui/auto.suggest.js +244 -244
  136. package/lib/ui/date.picker/date-picker-options.d.ts +11 -11
  137. package/lib/ui/date.picker/date-picker-options.js +76 -76
  138. package/lib/ui/date.picker/lib/date-manip.d.ts +74 -74
  139. package/lib/ui/date.picker/lib/date-manip.js +120 -120
  140. package/lib/ui/date.picker/lib/dom.d.ts +23 -23
  141. package/lib/ui/date.picker/lib/dom.js +28 -28
  142. package/lib/ui/date.picker/lib/emitter.d.ts +13 -13
  143. package/lib/ui/date.picker/lib/emitter.js +49 -49
  144. package/lib/ui/date.picker/lib/fns.d.ts +23 -23
  145. package/lib/ui/date.picker/lib/fns.js +39 -39
  146. package/lib/ui/date.picker/mode/base-mode.d.ts +26 -26
  147. package/lib/ui/date.picker/mode/base-mode.js +248 -248
  148. package/lib/ui/date.picker/mode/dropdown-mode.d.ts +28 -28
  149. package/lib/ui/date.picker/mode/dropdown-mode.js +50 -50
  150. package/lib/ui/date.picker/mode/index.d.ts +28 -28
  151. package/lib/ui/date.picker/mode/index.js +18 -18
  152. package/lib/ui/date.picker/mode/modal-mode.d.ts +25 -25
  153. package/lib/ui/date.picker/mode/modal-mode.js +17 -17
  154. package/lib/ui/date.picker/mode/permanent-mode.d.ts +29 -29
  155. package/lib/ui/date.picker/mode/permanent-mode.js +19 -19
  156. package/lib/ui/date.picker/views/day-picker.d.ts +40 -40
  157. package/lib/ui/date.picker/views/day-picker.js +155 -155
  158. package/lib/ui/date.picker/views/month-picker.d.ts +26 -26
  159. package/lib/ui/date.picker/views/month-picker.js +65 -65
  160. package/lib/ui/date.picker/views/year-picker.d.ts +20 -20
  161. package/lib/ui/date.picker/views/year-picker.js +66 -66
  162. package/lib/ui/date.picker.d.ts +66 -66
  163. package/lib/ui/date.picker.js +32 -32
  164. package/lib/ui/dialog.d.ts +22 -22
  165. package/lib/ui/dialog.js +98 -98
  166. package/lib/ui/drop.down.d.ts +52 -52
  167. package/lib/ui/drop.down.js +2112 -2112
  168. package/lib/ui/number.input.d.ts +13 -13
  169. package/lib/ui/number.input.js +56 -56
  170. package/package.json +1 -1
@@ -1,39 +1,39 @@
1
- import "./DateTimeStyle.scss";
2
- import { EventHandler } from "../../interaction/eventhandler";
3
- import { DateComponent } from "../date/DateComponent";
4
- import { TimeComponent } from "../time/TimeComponent";
5
- export class DateTimeComponent {
6
- constructor(options) {
7
- if (options.bindMode && options.bindMode !== "toModel") {
8
- throw new Error("Currently DateTimeComponent only supports toModel as bindMode");
9
- }
10
- this.options = { ...options };
11
- this.options.onChange = EventHandler.Create(this.options.onChange);
12
- const optionsCopy = { ...options };
13
- optionsCopy.bindTo = null;
14
- optionsCopy.property = null;
15
- optionsCopy.converter = null;
16
- optionsCopy.onChange = () => {
17
- var _a;
18
- const val = this.getValueAsDate();
19
- if (this.options.bindTo && options.property) {
20
- this.options.bindTo[options.property] =
21
- ((_a = this.options.converter) === null || _a === void 0 ? void 0 : _a.toData) ? this.options.converter.toData(val) : val;
22
- }
23
- this.options.onChange.notify(val);
24
- };
25
- this.dateComp = new DateComponent(optionsCopy);
26
- this.timeComp = new TimeComponent(optionsCopy);
27
- }
28
- render() {
29
- return { tag: "div", attr: { class: "date-time-comp" }, children: [
30
- this.dateComp, this.timeComp
31
- ] };
32
- }
33
- getValue() {
34
- return this.dateComp.getValue() + " " + this.timeComp.getValue();
35
- }
36
- getValueAsDate() {
37
- return this.timeComp.getValueAsDate(this.dateComp.getValueAsDate());
38
- }
39
- }
1
+ import "./DateTimeStyle.scss";
2
+ import { EventHandler } from "../../interaction/eventhandler";
3
+ import { DateComponent } from "../date/DateComponent";
4
+ import { TimeComponent } from "../time/TimeComponent";
5
+ export class DateTimeComponent {
6
+ constructor(options) {
7
+ if (options.bindMode && options.bindMode !== "toModel") {
8
+ throw new Error("Currently DateTimeComponent only supports toModel as bindMode");
9
+ }
10
+ this.options = { ...options };
11
+ this.options.onChange = EventHandler.Create(this.options.onChange);
12
+ const optionsCopy = { ...options };
13
+ optionsCopy.bindTo = null;
14
+ optionsCopy.property = null;
15
+ optionsCopy.converter = null;
16
+ optionsCopy.onChange = () => {
17
+ var _a;
18
+ const val = this.getValueAsDate();
19
+ if (this.options.bindTo && options.property) {
20
+ this.options.bindTo[options.property] =
21
+ ((_a = this.options.converter) === null || _a === void 0 ? void 0 : _a.toData) ? this.options.converter.toData(val) : val;
22
+ }
23
+ this.options.onChange.notify(val);
24
+ };
25
+ this.dateComp = new DateComponent(optionsCopy);
26
+ this.timeComp = new TimeComponent(optionsCopy);
27
+ }
28
+ render() {
29
+ return { tag: "div", attr: { class: "date-time-comp" }, children: [
30
+ this.dateComp, this.timeComp
31
+ ] };
32
+ }
33
+ getValue() {
34
+ return this.dateComp.getValue() + " " + this.timeComp.getValue();
35
+ }
36
+ getValueAsDate() {
37
+ return this.timeComp.getValueAsDate(this.dateComp.getValueAsDate());
38
+ }
39
+ }
@@ -1,67 +1,67 @@
1
- import { IJSLComponent, IJSLVNode } from "jsl-render";
2
- import { IDialogOptions, JSLDialog } from "../../ui/dialog";
3
- import { IMoveableOptions } from "../../interaction/moveable";
4
- import { IResizeOptions } from "../../interaction/resizable";
5
- export interface IDialogComponentOptions extends IDialogOptions {
6
- width?: string;
7
- minWidth?: string;
8
- minHeight?: string;
9
- height?: string;
10
- maxWidth?: string;
11
- maxHeight?: string;
12
- header: IJSLVNode | string | IJSLComponent;
13
- content: IJSLVNode | string | IJSLComponent;
14
- footer: IJSLVNode | string | IJSLComponent;
15
- showCloseButton?: boolean;
16
- allowMove?: boolean;
17
- allowResize?: boolean;
18
- resizeOptions?: IResizeOptions;
19
- moveOptions?: IMoveableOptions;
20
- class?: string;
21
- }
22
- export interface IDialogButtonOptions {
23
- content?: string;
24
- class?: string;
25
- onClick?: () => void | boolean | Promise<any>;
26
- raw?: boolean;
27
- }
28
- export declare class DialogComponent implements IJSLComponent {
29
- static Button(options: IDialogButtonOptions): {
30
- tag: string;
31
- attr: {
32
- class: string;
33
- click: () => Promise<void>;
34
- };
35
- content: string;
36
- raw: boolean;
37
- };
38
- static Ok(onClick?: () => void | boolean | Promise<any>): {
39
- tag: string;
40
- attr: {
41
- class: string;
42
- click: () => Promise<void>;
43
- };
44
- content: string;
45
- raw: boolean;
46
- };
47
- static Cancel(): {
48
- tag: string;
49
- attr: {
50
- class: string;
51
- click: () => Promise<void>;
52
- };
53
- content: string;
54
- raw: boolean;
55
- };
56
- static show(options: IDialogComponentOptions): DialogComponent;
57
- private static lastRenderedDlg;
58
- private closeIcon;
59
- private resizeHandle;
60
- private ref;
61
- private options;
62
- constructor(options: IDialogComponentOptions);
63
- render(): IJSLVNode;
64
- onCreate(node: IJSLVNode): void;
65
- getRef(): JSLDialog;
66
- private toNode;
67
- }
1
+ import { IJSLComponent, IJSLVNode } from "jsl-render";
2
+ import { IDialogOptions, JSLDialog } from "../../ui/dialog";
3
+ import { IMoveableOptions } from "../../interaction/moveable";
4
+ import { IResizeOptions } from "../../interaction/resizable";
5
+ export interface IDialogComponentOptions extends IDialogOptions {
6
+ width?: string;
7
+ minWidth?: string;
8
+ minHeight?: string;
9
+ height?: string;
10
+ maxWidth?: string;
11
+ maxHeight?: string;
12
+ header: IJSLVNode | string | IJSLComponent;
13
+ content: IJSLVNode | string | IJSLComponent;
14
+ footer: IJSLVNode | string | IJSLComponent;
15
+ showCloseButton?: boolean;
16
+ allowMove?: boolean;
17
+ allowResize?: boolean;
18
+ resizeOptions?: IResizeOptions;
19
+ moveOptions?: IMoveableOptions;
20
+ class?: string;
21
+ }
22
+ export interface IDialogButtonOptions {
23
+ content?: string;
24
+ class?: string;
25
+ onClick?: () => void | boolean | Promise<any>;
26
+ raw?: boolean;
27
+ }
28
+ export declare class DialogComponent implements IJSLComponent {
29
+ static Button(options: IDialogButtonOptions): {
30
+ tag: string;
31
+ attr: {
32
+ class: string;
33
+ click: () => Promise<void>;
34
+ };
35
+ content: string;
36
+ raw: boolean;
37
+ };
38
+ static Ok(onClick?: () => void | boolean | Promise<any>): {
39
+ tag: string;
40
+ attr: {
41
+ class: string;
42
+ click: () => Promise<void>;
43
+ };
44
+ content: string;
45
+ raw: boolean;
46
+ };
47
+ static Cancel(): {
48
+ tag: string;
49
+ attr: {
50
+ class: string;
51
+ click: () => Promise<void>;
52
+ };
53
+ content: string;
54
+ raw: boolean;
55
+ };
56
+ static show(options: IDialogComponentOptions): DialogComponent;
57
+ private static lastRenderedDlg;
58
+ private closeIcon;
59
+ private resizeHandle;
60
+ private ref;
61
+ private options;
62
+ constructor(options: IDialogComponentOptions);
63
+ render(): IJSLVNode;
64
+ onCreate(node: IJSLVNode): void;
65
+ getRef(): JSLDialog;
66
+ private toNode;
67
+ }
@@ -1,198 +1,192 @@
1
- import { JSLRender } from "jsl-render";
2
- import { Dialog } from "../../ui/dialog";
3
- import { Moveable } from "../../interaction/moveable";
4
- import { EventHandler } from "../../interaction/eventhandler";
5
- import { Resizable } from "../../interaction/resizable";
6
- import { UILang } from "../../core/lang";
7
- export class DialogComponent {
8
- constructor(options) {
9
- this.closeIcon = {
10
- tag: "div", content: "✖" /*"🗙"*/, attr: {
11
- class: "dlg-close-btn", click: () => {
12
- this.ref.close();
13
- }
14
- }
15
- };
16
- this.resizeHandle = {
17
- tag: "div", attr: { class: "dlg-res-handle rs-b rs-r" }
18
- };
19
- this.options = { maxHeight: "calc(100vh - 7.5rem)", width: "50vw", ...options };
20
- }
21
- static Button(options) {
22
- var _a, _b, _c;
23
- const res = {
24
- tag: "button",
25
- attr: {
26
- class: "jsl-button " + ((_a = options.class) !== null && _a !== void 0 ? _a : ""),
27
- click: async () => {
28
- if (options.onClick != null) {
29
- let clickRes = options.onClick();
30
- const isPromise = clickRes && typeof clickRes.then === "function" && typeof clickRes.catch === "function";
31
- if (isPromise) {
32
- clickRes = await clickRes;
33
- }
34
- if (clickRes === false) {
35
- return;
36
- }
37
- }
38
- if (DialogComponent.lastRenderedDlg != null) {
39
- DialogComponent.lastRenderedDlg.getRef().close();
40
- }
41
- }
42
- }, content: (_b = options.content) !== null && _b !== void 0 ? _b : "OK", raw: (_c = options.raw) !== null && _c !== void 0 ? _c : false
43
- };
44
- return res;
45
- }
46
- static Ok(onClick) {
47
- return DialogComponent.Button({ content: UILang.core.Ok, onClick, class: "dlg-ok-btn" });
48
- }
49
- static Cancel() {
50
- return DialogComponent.Button({ content: UILang.core.Cancel, class: "dlg-cancel-btn jsl-button-outline" });
51
- }
52
- // does not work -> dialog still exists in background and wrong renderer is active
53
- // public static closeAll() {
54
- // document.querySelectorAll(".jsl-dialog-overlay").forEach((x) => {
55
- // if (x.parentNode != null) {
56
- // x.parentNode.removeChild(x);
57
- // }
58
- // });
59
- // }
60
- static show(options) {
61
- const container = document.createElement("div");
62
- document.body.appendChild(container);
63
- const oldRenderer = JSLRender.lastCreatedRenderer;
64
- const oldLastDlg = DialogComponent.lastRenderedDlg;
65
- const renderer = new JSLRender(container, oldRenderer != null);
66
- if (oldRenderer != null) {
67
- JSLRender.lastCreatedRenderer = renderer;
68
- }
69
- const o = { ...options };
70
- if (o.autoOpen == null) {
71
- o.autoOpen = true;
72
- }
73
- o.onClose = () => {
74
- if (options.onClose) {
75
- if (options.onClose() === false) {
76
- return;
77
- }
78
- }
79
- renderer.render({ tag: "div" }); // necessary to call all onRemove functions in rendered content
80
- document.body.removeChild(container);
81
- JSLRender.lastCreatedRenderer = oldRenderer;
82
- if (oldRenderer != null) {
83
- oldRenderer.refresh();
84
- }
85
- DialogComponent.lastRenderedDlg = oldLastDlg;
86
- };
87
- const dlg = new DialogComponent(o);
88
- DialogComponent.lastRenderedDlg = dlg;
89
- renderer.render(dlg);
90
- return dlg;
91
- }
92
- render() {
93
- const header = this.toNode(this.options.header);
94
- const body = this.toNode(this.options.content);
95
- const footer = this.toNode(this.options.footer);
96
- let styleW = "";
97
- let styleH = "";
98
- if (this.options.width != null) {
99
- styleW += "width:" + this.options.width + ";";
100
- }
101
- if (this.options.minWidth != null) {
102
- styleW += "min-width:" + this.options.minWidth + ";";
103
- }
104
- if (this.options.maxWidth != null) {
105
- styleW += "max-width:" + this.options.maxWidth + ";";
106
- }
107
- if (this.options.height != null) {
108
- styleH += "height:" + this.options.height + ";";
109
- }
110
- if (this.options.minHeight != null) {
111
- styleH += "min-height:" + this.options.minHeight + ";";
112
- }
113
- if (this.options.maxHeight != null) {
114
- styleH += "max-height:" + this.options.maxHeight + ";";
115
- }
116
- const headerStyle = this.options.allowMove ? "cursor:move" : undefined;
117
- return {
118
- tag: "div",
119
- attr: {
120
- class: "jsl-dialog-overlay",
121
- wheel: (e) => {
122
- e.preventDefault();
123
- }
124
- }, children: [
125
- {
126
- tag: "div",
127
- attr: {
128
- class: "jsl-dialog " + (this.options.class || ""), style: styleW,
129
- wheel: (e) => {
130
- e.stopImmediatePropagation();
131
- e.stopPropagation();
132
- }
133
- },
134
- children: [
135
- {
136
- tag: "div", attr: { class: "dlg-header", style: headerStyle },
137
- children: this.options.showCloseButton ? [header, this.closeIcon] : [header]
138
- },
139
- { tag: "div", attr: { class: "dlg-body", style: styleH }, children: [body] },
140
- {
141
- tag: "div", attr: { class: "dlg-footer" },
142
- children: [footer]
143
- },
144
- this.options.allowResize ? this.resizeHandle : undefined
145
- ]
146
- }
147
- ]
148
- };
149
- }
150
- onCreate(node) {
151
- this.ref = Dialog(node.dom, this.options);
152
- if (this.options.allowMove) {
153
- Moveable(this.ref.getOverlay(), {
154
- onStart: new EventHandler((e) => {
155
- let headerWasClicked = false;
156
- let parent = e.evt.target;
157
- while (parent != null && !parent.classList.contains("jsl-dialog-overlay")) {
158
- if (parent.classList.contains("dlg-header")) {
159
- headerWasClicked = true;
160
- break;
161
- }
162
- parent = parent.parentElement;
163
- }
164
- if (headerWasClicked) {
165
- const rect = e.target.getBoundingClientRect();
166
- e.target.style.transform = "translate(0, 0)";
167
- e.target.style.left = rect.left + "px";
168
- e.target.style.top = rect.top + "px";
169
- }
170
- else {
171
- e.cancelEvent();
172
- }
173
- }),
174
- ...this.options.moveOptions
175
- });
176
- }
177
- if (this.options.allowResize) {
178
- const dlgEl = this.ref.getOverlay().querySelector(".jsl-dialog");
179
- Resizable(dlgEl, this.options.resizeOptions);
180
- const rect = dlgEl.getBoundingClientRect();
181
- dlgEl.style.transform = "translate(0, 0)";
182
- dlgEl.style.left = rect.left + "px";
183
- dlgEl.style.top = rect.top + "px";
184
- const bodyEl = dlgEl.querySelector(".dlg-body");
185
- const bodyRect = bodyEl.getBoundingClientRect();
186
- bodyEl.style.height = "calc(100% - " + (rect.height - bodyRect.height) + "px)";
187
- }
188
- }
189
- getRef() {
190
- return this.ref;
191
- }
192
- toNode(content) {
193
- if (typeof content === "string") {
194
- return { tag: "div", content };
195
- }
196
- return content;
197
- }
198
- }
1
+ import { JSLRender } from "jsl-render";
2
+ import { Dialog } from "../../ui/dialog";
3
+ import { Moveable } from "../../interaction/moveable";
4
+ import { EventHandler } from "../../interaction/eventhandler";
5
+ import { Resizable } from "../../interaction/resizable";
6
+ import { UILang } from "../../core/lang";
7
+ export class DialogComponent {
8
+ static Button(options) {
9
+ var _a, _b, _c;
10
+ const res = {
11
+ tag: "button", attr: {
12
+ class: "jsl-button " + ((_a = options.class) !== null && _a !== void 0 ? _a : ""),
13
+ click: async () => {
14
+ if (options.onClick != null) {
15
+ let clickRes = options.onClick();
16
+ const isPromise = clickRes && typeof clickRes.then === "function" && typeof clickRes.catch === "function";
17
+ if (isPromise) {
18
+ clickRes = await clickRes;
19
+ }
20
+ if (clickRes === false) {
21
+ return;
22
+ }
23
+ }
24
+ if (DialogComponent.lastRenderedDlg != null) {
25
+ DialogComponent.lastRenderedDlg.getRef().close();
26
+ }
27
+ }
28
+ }, content: (_b = options.content) !== null && _b !== void 0 ? _b : "OK", raw: (_c = options.raw) !== null && _c !== void 0 ? _c : false
29
+ };
30
+ return res;
31
+ }
32
+ static Ok(onClick) {
33
+ return DialogComponent.Button({ content: UILang.core.Ok, onClick, class: "dlg-ok-btn" });
34
+ }
35
+ static Cancel() {
36
+ return DialogComponent.Button({ content: UILang.core.Cancel, class: "dlg-cancel-btn jsl-button-outline" });
37
+ }
38
+ // does not work -> dialog still exists in background and wrong renderer is active
39
+ // public static closeAll() {
40
+ // document.querySelectorAll(".jsl-dialog-overlay").forEach((x) => {
41
+ // if (x.parentNode != null) {
42
+ // x.parentNode.removeChild(x);
43
+ // }
44
+ // });
45
+ // }
46
+ static show(options) {
47
+ const container = document.createElement("div");
48
+ document.body.appendChild(container);
49
+ const oldRenderer = JSLRender.lastCreatedRenderer;
50
+ const oldLastDlg = DialogComponent.lastRenderedDlg;
51
+ const renderer = new JSLRender(container, oldRenderer != null);
52
+ if (oldRenderer != null) {
53
+ JSLRender.lastCreatedRenderer = renderer;
54
+ }
55
+ const o = { ...options };
56
+ if (o.autoOpen == null) {
57
+ o.autoOpen = true;
58
+ }
59
+ o.onClose = () => {
60
+ if (options.onClose) {
61
+ if (options.onClose() === false) {
62
+ return;
63
+ }
64
+ }
65
+ renderer.render({ tag: "div" }); // necessary to call all onRemove functions in rendered content
66
+ document.body.removeChild(container);
67
+ JSLRender.lastCreatedRenderer = oldRenderer;
68
+ if (oldRenderer != null) {
69
+ oldRenderer.refresh();
70
+ }
71
+ DialogComponent.lastRenderedDlg = oldLastDlg;
72
+ };
73
+ const dlg = new DialogComponent(o);
74
+ DialogComponent.lastRenderedDlg = dlg;
75
+ renderer.render(dlg);
76
+ return dlg;
77
+ }
78
+ constructor(options) {
79
+ this.closeIcon = {
80
+ tag: "div", content: "✖" /*"🗙"*/, attr: {
81
+ class: "dlg-close-btn", click: () => {
82
+ this.ref.close();
83
+ }
84
+ }
85
+ };
86
+ this.resizeHandle = {
87
+ tag: "div", attr: { class: "dlg-res-handle rs-b rs-r" }
88
+ };
89
+ this.options = { maxHeight: "calc(100vh - 7.5rem)", width: "50vw", ...options };
90
+ }
91
+ render() {
92
+ const header = this.toNode(this.options.header);
93
+ const body = this.toNode(this.options.content);
94
+ const footer = this.toNode(this.options.footer);
95
+ let styleW = "";
96
+ let styleH = "";
97
+ if (this.options.width != null) {
98
+ styleW += "width:" + this.options.width + ";";
99
+ }
100
+ if (this.options.minWidth != null) {
101
+ styleW += "min-width:" + this.options.minWidth + ";";
102
+ }
103
+ if (this.options.maxWidth != null) {
104
+ styleW += "max-width:" + this.options.maxWidth + ";";
105
+ }
106
+ if (this.options.height != null) {
107
+ styleH += "height:" + this.options.height + ";";
108
+ }
109
+ if (this.options.minHeight != null) {
110
+ styleH += "min-height:" + this.options.minHeight + ";";
111
+ }
112
+ if (this.options.maxHeight != null) {
113
+ styleH += "max-height:" + this.options.maxHeight + ";";
114
+ }
115
+ const headerStyle = this.options.allowMove ? "cursor:move" : undefined;
116
+ return {
117
+ tag: "div", attr: {
118
+ class: "jsl-dialog-overlay", wheel: (e) => {
119
+ e.preventDefault();
120
+ }
121
+ }, children: [
122
+ {
123
+ tag: "div", attr: {
124
+ class: "jsl-dialog " + (this.options.class || ""), style: styleW, wheel: (e) => {
125
+ e.stopImmediatePropagation();
126
+ e.stopPropagation();
127
+ }
128
+ }, children: [
129
+ {
130
+ tag: "div", attr: { class: "dlg-header", style: headerStyle },
131
+ children: this.options.showCloseButton ? [header, this.closeIcon] : [header]
132
+ },
133
+ { tag: "div", attr: { class: "dlg-body", style: styleH }, children: [body] },
134
+ {
135
+ tag: "div", attr: { class: "dlg-footer" },
136
+ children: [footer]
137
+ },
138
+ this.options.allowResize ? this.resizeHandle : undefined
139
+ ]
140
+ }
141
+ ]
142
+ };
143
+ }
144
+ onCreate(node) {
145
+ this.ref = Dialog(node.dom, this.options);
146
+ if (this.options.allowMove) {
147
+ Moveable(this.ref.getOverlay(), {
148
+ onStart: new EventHandler((e) => {
149
+ let headerWasClicked = false;
150
+ let parent = e.evt.target;
151
+ while (parent != null && !parent.classList.contains("jsl-dialog-overlay")) {
152
+ if (parent.classList.contains("dlg-header")) {
153
+ headerWasClicked = true;
154
+ break;
155
+ }
156
+ parent = parent.parentElement;
157
+ }
158
+ if (headerWasClicked) {
159
+ const rect = e.target.getBoundingClientRect();
160
+ e.target.style.transform = "translate(0, 0)";
161
+ e.target.style.left = rect.left + "px";
162
+ e.target.style.top = rect.top + "px";
163
+ }
164
+ else {
165
+ e.cancelEvent();
166
+ }
167
+ }),
168
+ ...this.options.moveOptions
169
+ });
170
+ }
171
+ if (this.options.allowResize) {
172
+ const dlgEl = this.ref.getOverlay().querySelector(".jsl-dialog");
173
+ Resizable(dlgEl, this.options.resizeOptions);
174
+ const rect = dlgEl.getBoundingClientRect();
175
+ dlgEl.style.transform = "translate(0, 0)";
176
+ dlgEl.style.left = rect.left + "px";
177
+ dlgEl.style.top = rect.top + "px";
178
+ const bodyEl = dlgEl.querySelector(".dlg-body");
179
+ const bodyRect = bodyEl.getBoundingClientRect();
180
+ bodyEl.style.height = "calc(100% - " + (rect.height - bodyRect.height) + "px)";
181
+ }
182
+ }
183
+ getRef() {
184
+ return this.ref;
185
+ }
186
+ toNode(content) {
187
+ if (typeof content === "string") {
188
+ return { tag: "div", content };
189
+ }
190
+ return content;
191
+ }
192
+ }