@web-atoms/web-controls 2.1.265 → 2.1.268

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 (201) hide show
  1. package/dist/ModuleFiles.sys.js +57 -0
  2. package/dist/ModuleFiles.sys.js.map +1 -0
  3. package/dist/auto-complete/AppComboBoxViewModel.sys.js +23 -0
  4. package/dist/auto-complete/AppComboBoxViewModel.sys.js.map +1 -0
  5. package/dist/auto-complete/AutoCompleteBox.sys.js +402 -0
  6. package/dist/auto-complete/AutoCompleteBox.sys.js.map +1 -0
  7. package/dist/auto-complete/AutoCompleteBoxStyle.sys.js +95 -0
  8. package/dist/auto-complete/AutoCompleteBoxStyle.sys.js.map +1 -0
  9. package/dist/auto-complete/ItemHost.sys.js +46 -0
  10. package/dist/auto-complete/ItemHost.sys.js.map +1 -0
  11. package/dist/basic/AtomChips.sys.js +429 -0
  12. package/dist/basic/AtomChips.sys.js.map +1 -0
  13. package/dist/basic/AtomRepeater.sys.js +1319 -0
  14. package/dist/basic/AtomRepeater.sys.js.map +1 -0
  15. package/dist/basic/AtomSuggestions.sys.js +178 -0
  16. package/dist/basic/AtomSuggestions.sys.js.map +1 -0
  17. package/dist/basic/Button.sys.js +71 -0
  18. package/dist/basic/Button.sys.js.map +1 -0
  19. package/dist/basic/Calendar.sys.js +263 -0
  20. package/dist/basic/Calendar.sys.js.map +1 -0
  21. package/dist/basic/CheckBoxList.sys.js +88 -0
  22. package/dist/basic/CheckBoxList.sys.js.map +1 -0
  23. package/dist/basic/Checkbox.sys.js +35 -0
  24. package/dist/basic/Checkbox.sys.js.map +1 -0
  25. package/dist/basic/ComboBox.sys.js +114 -0
  26. package/dist/basic/ComboBox.sys.js.map +1 -0
  27. package/dist/basic/DataGrid.sys.js +415 -0
  28. package/dist/basic/DataGrid.sys.js.map +1 -0
  29. package/dist/basic/DateField.sys.js +120 -0
  30. package/dist/basic/DateField.sys.js.map +1 -0
  31. package/dist/basic/DropDown.sys.js +199 -0
  32. package/dist/basic/DropDown.sys.js.map +1 -0
  33. package/dist/basic/Editable.sys.js +150 -0
  34. package/dist/basic/Editable.sys.js.map +1 -0
  35. package/dist/basic/Expander.sys.js +89 -0
  36. package/dist/basic/Expander.sys.js.map +1 -0
  37. package/dist/basic/Form.sys.js +405 -0
  38. package/dist/basic/Form.sys.js.map +1 -0
  39. package/dist/basic/FormDialog.sys.js +35 -0
  40. package/dist/basic/FormDialog.sys.js.map +1 -0
  41. package/dist/basic/FormField.sys.js +214 -0
  42. package/dist/basic/FormField.sys.js.map +1 -0
  43. package/dist/basic/IElement.sys.js +9 -0
  44. package/dist/basic/IElement.sys.js.map +1 -0
  45. package/dist/basic/Input.sys.js +33 -0
  46. package/dist/basic/Input.sys.js.map +1 -0
  47. package/dist/basic/MaskedInput.sys.js +82 -0
  48. package/dist/basic/MaskedInput.sys.js.map +1 -0
  49. package/dist/basic/MaskedInputDiv.sys.js +122 -0
  50. package/dist/basic/MaskedInputDiv.sys.js.map +1 -0
  51. package/dist/basic/Mix.sys.js +44 -0
  52. package/dist/basic/Mix.sys.js.map +1 -0
  53. package/dist/basic/Panel.sys.js +42 -0
  54. package/dist/basic/Panel.sys.js.map +1 -0
  55. package/dist/basic/PopupButton.sys.js +143 -0
  56. package/dist/basic/PopupButton.sys.js.map +1 -0
  57. package/dist/basic/RadioButtonList.sys.js +79 -0
  58. package/dist/basic/RadioButtonList.sys.js.map +1 -0
  59. package/dist/basic/RefreshLock.sys.js +103 -0
  60. package/dist/basic/RefreshLock.sys.js.map +1 -0
  61. package/dist/basic/Row.sys.js +47 -0
  62. package/dist/basic/Row.sys.js.map +1 -0
  63. package/dist/basic/Switch.sys.js +54 -0
  64. package/dist/basic/Switch.sys.js.map +1 -0
  65. package/dist/basic/TableRepeater.sys.js +61 -0
  66. package/dist/basic/TableRepeater.sys.js.map +1 -0
  67. package/dist/basic/ToggleButtonBar.sys.js +81 -0
  68. package/dist/basic/ToggleButtonBar.sys.js.map +1 -0
  69. package/dist/basic/Tooltip.sys.js +121 -0
  70. package/dist/basic/Tooltip.sys.js.map +1 -0
  71. package/dist/basic/combineClasses.sys.js +15 -0
  72. package/dist/basic/combineClasses.sys.js.map +1 -0
  73. package/dist/basic/in-built/InBuiltStyles.sys.js +55 -0
  74. package/dist/basic/in-built/InBuiltStyles.sys.js.map +1 -0
  75. package/dist/button-bar/AtomButtonBar.sys.js +52 -0
  76. package/dist/button-bar/AtomButtonBar.sys.js.map +1 -0
  77. package/dist/buttons/AtomPopupButton.sys.js +25 -0
  78. package/dist/buttons/AtomPopupButton.sys.js.map +1 -0
  79. package/dist/buttons/AtomPopupButtonStyle.sys.js +35 -0
  80. package/dist/buttons/AtomPopupButtonStyle.sys.js.map +1 -0
  81. package/dist/calendar/AtomCalendar.sys.js +105 -0
  82. package/dist/calendar/AtomCalendar.sys.js.map +1 -0
  83. package/dist/calendar/AtomCalendarStyle.sys.js +186 -0
  84. package/dist/calendar/AtomCalendarStyle.sys.js.map +1 -0
  85. package/dist/calendar/CalendarViewModel.sys.js +165 -0
  86. package/dist/calendar/CalendarViewModel.sys.js.map +1 -0
  87. package/dist/calendar/res/SRCalendar.sys.js +95 -0
  88. package/dist/calendar/res/SRCalendar.sys.js.map +1 -0
  89. package/dist/calendar/res/en-US/SRCalendar.sys.js +81 -0
  90. package/dist/calendar/res/en-US/SRCalendar.sys.js.map +1 -0
  91. package/dist/data-grid/AtomColumn.sys.js +75 -0
  92. package/dist/data-grid/AtomColumn.sys.js.map +1 -0
  93. package/dist/data-grid/AtomDataGrid.sys.js +83 -0
  94. package/dist/data-grid/AtomDataGrid.sys.js.map +1 -0
  95. package/dist/data-grid/AtomDataGridStyle.sys.js +59 -0
  96. package/dist/data-grid/AtomDataGridStyle.sys.js.map +1 -0
  97. package/dist/data-grid/AtomDataGridViewModel.sys.js +98 -0
  98. package/dist/data-grid/AtomDataGridViewModel.sys.js.map +1 -0
  99. package/dist/data-grid/GridTemplate.sys.js +80 -0
  100. package/dist/data-grid/GridTemplate.sys.js.map +1 -0
  101. package/dist/data-pager/AtomDataPager.sys.js +130 -0
  102. package/dist/data-pager/AtomDataPager.sys.js.map +1 -0
  103. package/dist/date-field/AtomDateField.sys.js +67 -0
  104. package/dist/date-field/AtomDateField.sys.js.map +1 -0
  105. package/dist/form/AtomField.sys.js +177 -0
  106. package/dist/form/AtomField.sys.js.map +1 -0
  107. package/dist/form/AtomForm.sys.js +126 -0
  108. package/dist/form/AtomForm.sys.js.map +1 -0
  109. package/dist/form/AtomFormGroup.sys.js +20 -0
  110. package/dist/form/AtomFormGroup.sys.js.map +1 -0
  111. package/dist/form/AtomFormStyle.sys.js +77 -0
  112. package/dist/form/AtomFormStyle.sys.js.map +1 -0
  113. package/dist/form/HelpPopup.sys.js +30 -0
  114. package/dist/form/HelpPopup.sys.js.map +1 -0
  115. package/dist/html-editor/AtomHtmlEditor.sys.js +332 -0
  116. package/dist/html-editor/AtomHtmlEditor.sys.js.map +1 -0
  117. package/dist/html-editor/commands/AddImage.sys.js +96 -0
  118. package/dist/html-editor/commands/AddImage.sys.js.map +1 -0
  119. package/dist/html-editor/commands/AddLink.sys.js +114 -0
  120. package/dist/html-editor/commands/AddLink.sys.js.map +1 -0
  121. package/dist/html-editor/commands/Align.sys.js +44 -0
  122. package/dist/html-editor/commands/Align.sys.js.map +1 -0
  123. package/dist/html-editor/commands/AttachFile.sys.js +110 -0
  124. package/dist/html-editor/commands/AttachFile.sys.js.map +1 -0
  125. package/dist/html-editor/commands/Bold.sys.js +28 -0
  126. package/dist/html-editor/commands/Bold.sys.js.map +1 -0
  127. package/dist/html-editor/commands/ChangeColor.sys.js +62 -0
  128. package/dist/html-editor/commands/ChangeColor.sys.js.map +1 -0
  129. package/dist/html-editor/commands/ChangeFont.sys.js +78 -0
  130. package/dist/html-editor/commands/ChangeFont.sys.js.map +1 -0
  131. package/dist/html-editor/commands/ChangeFontSize.sys.js +36 -0
  132. package/dist/html-editor/commands/ChangeFontSize.sys.js.map +1 -0
  133. package/dist/html-editor/commands/Command.sys.js +64 -0
  134. package/dist/html-editor/commands/Command.sys.js.map +1 -0
  135. package/dist/html-editor/commands/CommandButton.sys.js +113 -0
  136. package/dist/html-editor/commands/CommandButton.sys.js.map +1 -0
  137. package/dist/html-editor/commands/Headings.sys.js +46 -0
  138. package/dist/html-editor/commands/Headings.sys.js.map +1 -0
  139. package/dist/html-editor/commands/HorizontalRule.sys.js +27 -0
  140. package/dist/html-editor/commands/HorizontalRule.sys.js.map +1 -0
  141. package/dist/html-editor/commands/HtmlCommands.sys.js +86 -0
  142. package/dist/html-editor/commands/HtmlCommands.sys.js.map +1 -0
  143. package/dist/html-editor/commands/IndentLess.sys.js +28 -0
  144. package/dist/html-editor/commands/IndentLess.sys.js.map +1 -0
  145. package/dist/html-editor/commands/IndentMore.sys.js +28 -0
  146. package/dist/html-editor/commands/IndentMore.sys.js.map +1 -0
  147. package/dist/html-editor/commands/Italic.sys.js +28 -0
  148. package/dist/html-editor/commands/Italic.sys.js.map +1 -0
  149. package/dist/html-editor/commands/NumberedList.sys.js +28 -0
  150. package/dist/html-editor/commands/NumberedList.sys.js.map +1 -0
  151. package/dist/html-editor/commands/Quote.sys.js +28 -0
  152. package/dist/html-editor/commands/Quote.sys.js.map +1 -0
  153. package/dist/html-editor/commands/RemoveFormat.sys.js +28 -0
  154. package/dist/html-editor/commands/RemoveFormat.sys.js.map +1 -0
  155. package/dist/html-editor/commands/Separator.sys.js +29 -0
  156. package/dist/html-editor/commands/Separator.sys.js.map +1 -0
  157. package/dist/html-editor/commands/Source.sys.js +114 -0
  158. package/dist/html-editor/commands/Source.sys.js.map +1 -0
  159. package/dist/html-editor/commands/StrikeThrough.sys.js +28 -0
  160. package/dist/html-editor/commands/StrikeThrough.sys.js.map +1 -0
  161. package/dist/html-editor/commands/Underline.sys.js +28 -0
  162. package/dist/html-editor/commands/Underline.sys.js.map +1 -0
  163. package/dist/html-editor/commands/Unlink.sys.js +28 -0
  164. package/dist/html-editor/commands/Unlink.sys.js.map +1 -0
  165. package/dist/html-editor/commands/UnorderedList.sys.js +28 -0
  166. package/dist/html-editor/commands/UnorderedList.sys.js.map +1 -0
  167. package/dist/mobile/pages/AtomPageFrame.sys.js +250 -0
  168. package/dist/mobile/pages/AtomPageFrame.sys.js.map +1 -0
  169. package/dist/mobile/pages/AtomPageFrameStyle.sys.js +69 -0
  170. package/dist/mobile/pages/AtomPageFrameStyle.sys.js.map +1 -0
  171. package/dist/mobile/pages/AtomPageFrameTemplate.sys.js +58 -0
  172. package/dist/mobile/pages/AtomPageFrameTemplate.sys.js.map +1 -0
  173. package/dist/mobile/pages/Page.sys.js +31 -0
  174. package/dist/mobile/pages/Page.sys.js.map +1 -0
  175. package/dist/mobile/pages/PageFrameViewModel.sys.js +190 -0
  176. package/dist/mobile/pages/PageFrameViewModel.sys.js.map +1 -0
  177. package/dist/mobile/pages/TitleTemplate.sys.js +32 -0
  178. package/dist/mobile/pages/TitleTemplate.sys.js.map +1 -0
  179. package/dist/mobile-app/MobileApp.js +1 -1
  180. package/dist/mobile-app/MobileApp.js.map +1 -1
  181. package/dist/mobile-app/MobileApp.sys.js +420 -0
  182. package/dist/mobile-app/MobileApp.sys.js.map +1 -0
  183. package/dist/player/AtomVideoPlayer.sys.js +280 -0
  184. package/dist/player/AtomVideoPlayer.sys.js.map +1 -0
  185. package/dist/player/TrackProgress.sys.js +33 -0
  186. package/dist/player/TrackProgress.sys.js.map +1 -0
  187. package/dist/setupBridge.sys.js +108 -0
  188. package/dist/setupBridge.sys.js.map +1 -0
  189. package/dist/switch/AtomSwitch.sys.js +56 -0
  190. package/dist/switch/AtomSwitch.sys.js.map +1 -0
  191. package/dist/switch/AtomSwitchStyle.sys.js +85 -0
  192. package/dist/switch/AtomSwitchStyle.sys.js.map +1 -0
  193. package/dist/time-field/AtomTimeField.sys.js +122 -0
  194. package/dist/time-field/AtomTimeField.sys.js.map +1 -0
  195. package/dist/time-field/AtomTimeFieldStyle.sys.js +31 -0
  196. package/dist/time-field/AtomTimeFieldStyle.sys.js.map +1 -0
  197. package/dist/toggle-view/AtomToggleView.sys.js +113 -0
  198. package/dist/toggle-view/AtomToggleView.sys.js.map +1 -0
  199. package/dist/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +7 -2
  201. package/src/mobile-app/MobileApp.tsx +1 -1
@@ -0,0 +1,1319 @@
1
+ System.register(["@web-atoms/core/dist/core/AtomBinder", "@web-atoms/core/dist/core/Bind", "@web-atoms/core/dist/core/BindableProperty", "@web-atoms/core/dist/core/Colors", "@web-atoms/core/dist/core/StringHelper", "@web-atoms/core/dist/core/WatchProperty", "@web-atoms/core/dist/core/XNode", "@web-atoms/core/dist/style/StyleRule", "@web-atoms/core/dist/web/controls/AtomControl", "@web-atoms/core/dist/web/services/PopupService", "@web-atoms/core/dist/web/styles/CSS"], function (_export, _context) {
2
+ "use strict";
3
+
4
+ var AtomBinder, Bind, BindableProperty, Colors, StringHelper, WatchProperty, XNode, StyleRule, AtomControl, PopupControl, PopupWindow, CSS, SelectAllControl, AtomRepeater, __decorate, __metadata, __rest, popupCSS, getParentRepeaterItem, MatchTrue, MatchFalse, ArrowToString, MatchCaseInsensitive, MatchAnyCaseInsensitive, SameObjectValue, getFirstChild, hoverItem, dragOver;
5
+
6
+ function askSuggestion(items, itemRenderer, match, options) {
7
+ class Suggestions extends PopupWindow {
8
+ create() {
9
+ var _a;
10
+
11
+ this.title = (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : "Select";
12
+ this.render(XNode.create("div", {
13
+ class: popupCSS
14
+ }, XNode.create("input", {
15
+ type: "search",
16
+ value: Bind.twoWaysImmediate(() => this.search),
17
+ autofocus: true
18
+ }), XNode.create("div", {
19
+ class: "items"
20
+ }, XNode.create(AtomRepeater, {
21
+ class: "presenter",
22
+ itemRenderer: itemRenderer,
23
+ visibilityFilter: Bind.oneWay(() => match(this.search)),
24
+ eventItemClick: e => {
25
+ this.close(e.detail);
26
+ },
27
+ items: items
28
+ }))));
29
+ }
30
+
31
+ }
32
+
33
+ __decorate([BindableProperty, __metadata("design:type", String)], Suggestions.prototype, "search", void 0);
34
+
35
+ options !== null && options !== void 0 ? options : options = {};
36
+
37
+ if (typeof options.maximize === "undefined") {
38
+ if (typeof options.width === "undefined") {
39
+ options.maxWidth = "90%";
40
+ options.minWidth = "300px";
41
+ }
42
+
43
+ if (typeof options.height === "undefined") {
44
+ options.height = "80%";
45
+ }
46
+ }
47
+
48
+ return Suggestions.showModal(options);
49
+ }
50
+
51
+ function askSuggestionPopup(opener, items, itemRenderer, match, selectedItem) {
52
+ const updateSearch = ("search" in opener);
53
+ const itemsInOpener = ("items" in opener);
54
+
55
+ class Suggestions extends PopupControl {
56
+ get items() {
57
+ return itemsInOpener ? this.opener.items : items;
58
+ }
59
+
60
+ onPropertyChanged(name) {
61
+ if (updateSearch && name === "search") {
62
+ opener.search = this.search;
63
+ }
64
+
65
+ super.onPropertyChanged(name);
66
+ }
67
+
68
+ create() {
69
+ this.anchorItem = selectedItem;
70
+ this.opener = opener;
71
+
72
+ if (selectedItem) {
73
+ this.anchorIndex = items.indexOf(selectedItem);
74
+ }
75
+
76
+ if (itemsInOpener) {
77
+ this.render(XNode.create("div", {
78
+ "data-suggestion-popup": "suggestion-popup"
79
+ }, XNode.create("input", {
80
+ type: "search",
81
+ value: Bind.twoWaysImmediate(() => this.search),
82
+ eventKeydown: e => this.onKey(e),
83
+ autofocus: true
84
+ }), XNode.create("div", {
85
+ class: "items"
86
+ }, XNode.create(AtomRepeater, {
87
+ class: "presenter",
88
+ selectedItem: Bind.oneWay(() => this.anchorItem),
89
+ itemRenderer: itemRenderer,
90
+ visibilityFilter: Bind.oneWay(() => match(this.search)),
91
+ eventItemClick: e => {
92
+ this.close(e.detail);
93
+ },
94
+ items: Bind.oneWay(() => this.opener.items)
95
+ }))));
96
+ return;
97
+ }
98
+
99
+ this.render(XNode.create("div", {
100
+ "data-suggestion-popup": "suggestion-popup"
101
+ }, XNode.create("input", {
102
+ type: "search",
103
+ value: Bind.twoWaysImmediate(() => this.search),
104
+ eventKeydown: e => this.onKey(e),
105
+ autofocus: true
106
+ }), XNode.create("div", {
107
+ class: "items"
108
+ }, XNode.create(AtomRepeater, {
109
+ class: "presenter",
110
+ selectedItem: Bind.oneWay(() => this.anchorItem),
111
+ itemRenderer: itemRenderer,
112
+ visibilityFilter: Bind.oneWay(() => match(this.search)),
113
+ scrollToSelection: true,
114
+ eventItemClick: e => {
115
+ this.close(e.detail);
116
+ },
117
+ items: items
118
+ }))));
119
+ }
120
+
121
+ onKey(e) {
122
+ var _a;
123
+
124
+ const suggested = match ? (_a = this.items) === null || _a === void 0 ? void 0 : _a.filter(match(this.search)) : this.items;
125
+
126
+ switch (e.key) {
127
+ case "Enter":
128
+ const anchorItem = this.anchorItem;
129
+
130
+ if (!anchorItem) {
131
+ return;
132
+ }
133
+
134
+ this.anchorIndex = 0;
135
+ this.close(anchorItem);
136
+ this.anchorItem = null;
137
+ this.search = "";
138
+ break;
139
+
140
+ case "ArrowDown":
141
+ if (suggested) {
142
+ if (!this.anchorItem) {
143
+ this.anchorIndex = 0;
144
+ } else {
145
+ if (this.anchorIndex < suggested.length - 1) {
146
+ this.anchorIndex++;
147
+ }
148
+ }
149
+
150
+ this.anchorItem = suggested[this.anchorIndex];
151
+ }
152
+
153
+ break;
154
+
155
+ case "ArrowUp":
156
+ if (suggested) {
157
+ if (!this.anchorItem) {
158
+ return;
159
+ }
160
+
161
+ if (this.anchorIndex) {
162
+ this.anchorIndex--;
163
+ }
164
+
165
+ this.anchorItem = suggested[this.anchorIndex];
166
+ }
167
+
168
+ break;
169
+ }
170
+ }
171
+
172
+ }
173
+
174
+ __decorate([BindableProperty, __metadata("design:type", String)], Suggestions.prototype, "search", void 0);
175
+
176
+ return Suggestions.showControl(opener);
177
+ }
178
+
179
+ function SelectorCheckBox(_a, ...nodes) {
180
+ var {
181
+ text,
182
+ icon = "far fa-square",
183
+ iconSelected = "fas fa-check-square"
184
+ } = _a,
185
+ a = __rest(_a, ["text", "icon", "iconSelected"]);
186
+
187
+ if (text) {
188
+ return XNode.create("label", null, XNode.create("i", {
189
+ class: icon,
190
+ "data-click-event": "item-select"
191
+ }), XNode.create("i", {
192
+ class: iconSelected,
193
+ "data-click-event": "item-deselect"
194
+ }), XNode.create("span", {
195
+ "data-no-wrap": "true",
196
+ text: text
197
+ }), ...nodes);
198
+ }
199
+
200
+ return XNode.create("label", null, XNode.create("i", {
201
+ class: icon,
202
+ "data-click-event": "item-select"
203
+ }), XNode.create("i", {
204
+ class: iconSelected,
205
+ "data-click-event": "item-deselect"
206
+ }), ...nodes);
207
+ }
208
+
209
+ function SelectAll(_a, ...nodes) {
210
+ var {
211
+ text = "Select All",
212
+ icon = "far fa-square",
213
+ iconSelected = "fas fa-check-square"
214
+ } = _a,
215
+ a = __rest(_a, ["text", "icon", "iconSelected"]);
216
+
217
+ if (text) {
218
+ return XNode.create(SelectAllControl, Object.assign({
219
+ for: "label"
220
+ }, a), XNode.create("i", {
221
+ class: icon,
222
+ "data-ui-type": "item-select"
223
+ }), XNode.create("i", {
224
+ class: iconSelected,
225
+ "data-ui-type": "item-deselect"
226
+ }), XNode.create("span", {
227
+ "data-no-wrap": "true",
228
+ text: text
229
+ }));
230
+ }
231
+
232
+ return XNode.create(SelectAllControl, Object.assign({
233
+ for: "label"
234
+ }, a), XNode.create("i", {
235
+ class: icon,
236
+ "data-ui-type": "item-select"
237
+ }), XNode.create("i", {
238
+ class: iconSelected,
239
+ "data-ui-type": "item-deselect"
240
+ }), ...nodes);
241
+ }
242
+
243
+ function disposeChildren(owner, e) {
244
+ if (!e) {
245
+ return;
246
+ }
247
+
248
+ let s = e.firstElementChild;
249
+
250
+ while (s) {
251
+ const c = s;
252
+ s = s.nextElementSibling;
253
+ const ac = c.atomControl;
254
+
255
+ if (ac) {
256
+ ac.dispose();
257
+ continue;
258
+ }
259
+
260
+ disposeChildren(owner, c);
261
+ owner.unbind(c);
262
+ owner.unbindEvent(c);
263
+ }
264
+
265
+ e.innerHTML = "";
266
+ }
267
+
268
+ function disposeChild(owner, e) {
269
+ const ac = e.atomControl;
270
+
271
+ if (ac) {
272
+ ac.dispose();
273
+ return;
274
+ }
275
+
276
+ disposeChildren(owner, e);
277
+ owner.unbind(e);
278
+ owner.unbindEvent(e);
279
+ e.remove();
280
+ }
281
+
282
+ function defaultComparer(left, right) {
283
+ if (left && right) {
284
+ if (left instanceof Date) {
285
+ if (right instanceof Date) {
286
+ return left.getTime() === right.getTime();
287
+ }
288
+
289
+ return false;
290
+ }
291
+ }
292
+
293
+ return left === right;
294
+ }
295
+
296
+ function updateDragDrop(e, force = false) {
297
+ if (!e) {
298
+ return;
299
+ }
300
+
301
+ if (force) {
302
+ e.draggable = false;
303
+ } else {
304
+ force = e.draggable;
305
+ }
306
+
307
+ e = e.firstElementChild;
308
+
309
+ while (e) {
310
+ updateDragDrop(e, force);
311
+ e = e.nextElementSibling;
312
+ }
313
+ }
314
+
315
+ _export({
316
+ askSuggestion: askSuggestion,
317
+ askSuggestionPopup: askSuggestionPopup,
318
+ SelectorCheckBox: SelectorCheckBox,
319
+ SelectAll: SelectAll,
320
+ disposeChildren: disposeChildren,
321
+ disposeChild: disposeChild,
322
+ defaultComparer: defaultComparer,
323
+ default: void 0
324
+ });
325
+
326
+ return {
327
+ setters: [function (_webAtomsCoreDistCoreAtomBinder) {
328
+ AtomBinder = _webAtomsCoreDistCoreAtomBinder.AtomBinder;
329
+ }, function (_webAtomsCoreDistCoreBind) {
330
+ Bind = _webAtomsCoreDistCoreBind.default;
331
+ }, function (_webAtomsCoreDistCoreBindableProperty) {
332
+ BindableProperty = _webAtomsCoreDistCoreBindableProperty.BindableProperty;
333
+ }, function (_webAtomsCoreDistCoreColors) {
334
+ Colors = _webAtomsCoreDistCoreColors.default;
335
+ }, function (_webAtomsCoreDistCoreStringHelper) {
336
+ StringHelper = _webAtomsCoreDistCoreStringHelper.StringHelper;
337
+ }, function (_webAtomsCoreDistCoreWatchProperty) {
338
+ WatchProperty = _webAtomsCoreDistCoreWatchProperty.default;
339
+ }, function (_webAtomsCoreDistCoreXNode) {
340
+ XNode = _webAtomsCoreDistCoreXNode.default;
341
+ }, function (_webAtomsCoreDistStyleStyleRule) {
342
+ StyleRule = _webAtomsCoreDistStyleStyleRule.default;
343
+ }, function (_webAtomsCoreDistWebControlsAtomControl) {
344
+ AtomControl = _webAtomsCoreDistWebControlsAtomControl.AtomControl;
345
+ }, function (_webAtomsCoreDistWebServicesPopupService) {
346
+ PopupControl = _webAtomsCoreDistWebServicesPopupService.PopupControl;
347
+ PopupWindow = _webAtomsCoreDistWebServicesPopupService.PopupWindow;
348
+ }, function (_webAtomsCoreDistWebStylesCSS) {
349
+ CSS = _webAtomsCoreDistWebStylesCSS.default;
350
+ }],
351
+ execute: function () {
352
+ __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
353
+ var c = arguments.length,
354
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
355
+ d;
356
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
357
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
358
+ };
359
+
360
+ __metadata = void 0 && (void 0).__metadata || function (k, v) {
361
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
362
+ };
363
+
364
+ __rest = void 0 && (void 0).__rest || function (s, e) {
365
+ var t = {};
366
+
367
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
368
+
369
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
370
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
371
+ }
372
+ return t;
373
+ };
374
+
375
+ popupCSS = CSS(StyleRule().height(500).width(300).verticalFlexLayout({
376
+ alignItems: "stretch"
377
+ }).child(StyleRule(".items").flexStretch().overflow("auto").child(StyleRule(".presenter").child(StyleRule("*").padding(5)).child(StyleRule("[data-selected-item=true]").backgroundColor(Colors.lightGreen)))));
378
+
379
+ _export("getParentRepeaterItem", getParentRepeaterItem = target => {
380
+ let eventName;
381
+ let repeater;
382
+ let index;
383
+ let root;
384
+
385
+ while (target) {
386
+ const a = target.atomControl;
387
+
388
+ if (a !== undefined && a instanceof AtomRepeater) {
389
+ repeater = a;
390
+ break;
391
+ }
392
+
393
+ if (index === undefined) {
394
+ const itemIndex = target.dataset.itemIndex;
395
+
396
+ if (typeof itemIndex !== "undefined") {
397
+ root = target;
398
+ index = ~~itemIndex;
399
+ }
400
+ }
401
+
402
+ if (eventName === undefined) {
403
+ const itemClickEvent = target.dataset.clickEvent;
404
+
405
+ if (itemClickEvent) {
406
+ eventName = itemClickEvent.replace(/-([a-z])/g, g => g[1].toUpperCase());
407
+ }
408
+ }
409
+
410
+ target = target.parentElement;
411
+ }
412
+
413
+ if (index === void 0 || repeater === void 0) {
414
+ return undefined;
415
+ }
416
+
417
+ const item = repeater.items[~~index];
418
+ return [eventName, repeater, item, index, root];
419
+ });
420
+
421
+ _export("MatchTrue", MatchTrue = (...a) => true);
422
+
423
+ _export("MatchFalse", MatchFalse = (...a) => false);
424
+
425
+ _export("ArrowToString", ArrowToString = item => {
426
+ var _a, _b;
427
+
428
+ return (_b = (_a = item.label) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : item.toString();
429
+ });
430
+
431
+ _export("MatchCaseInsensitive", MatchCaseInsensitive = textField => {
432
+ textField !== null && textField !== void 0 ? textField : textField = ArrowToString;
433
+ return s => {
434
+ if (!s) {
435
+ return MatchTrue;
436
+ }
437
+
438
+ const r = StringHelper.createContainsRegExp(s);
439
+ return item => r.test(textField(item));
440
+ };
441
+ });
442
+
443
+ _export("MatchAnyCaseInsensitive", MatchAnyCaseInsensitive = textField => {
444
+ textField !== null && textField !== void 0 ? textField : textField = ArrowToString;
445
+ return s => {
446
+ if (!s) {
447
+ return MatchTrue;
448
+ }
449
+
450
+ const r = StringHelper.createContainsAnyWordRegExp(s);
451
+ return item => r.test(textField(item));
452
+ };
453
+ });
454
+
455
+ _export("SameObjectValue", SameObjectValue = item => item);
456
+
457
+ CSS(StyleRule().height(250).width(300).verticalFlexLayout({
458
+ alignItems: "stretch"
459
+ }).child(StyleRule(".items").flexStretch().overflow("auto").child(StyleRule(".presenter").child(StyleRule("*").padding(5)).child(StyleRule("[data-selected-item=true]").backgroundColor(Colors.lightGreen)))), "*[data-suggestion-popup=suggestion-popup]");
460
+ CSS(StyleRule().nested(StyleRule("i[data-click-event]").padding(5)).nested(StyleRule("[data-no-wrap=true]").whiteSpace("nowrap")), "*[data-selected-item]");
461
+ CSS(StyleRule().nested(StyleRule("i[data-click-event=item-select]").padding(5)).displayNone(" i[data-click-event=item-select]"), "*[data-selected-item=true]");
462
+ CSS(StyleRule().displayNone(" i[data-click-event=item-deselect]"), "*[data-selected-item=false]");
463
+ CSS(StyleRule().flexLayout({
464
+ alignItems: "center",
465
+ justifyContent: "flex-start"
466
+ }).margin(0).nested(StyleRule("i[data-ui-type]").padding(5)).nested(StyleRule("[data-no-wrap=true]").whiteSpace("nowrap")).displayNone("[data-is-selected=true] i[data-ui-type=item-select]").displayNone("[data-is-selected=false] i[data-ui-type=item-deselect]"), "*[data-select-all=select-all]");
467
+ SelectAllControl = class SelectAllControl extends AtomControl {
468
+ preCreate() {
469
+ this.element.dataset.selectAll = "select-all";
470
+ this.items = [];
471
+ this.selectedItems = [];
472
+ this.render(XNode.create(SelectAllControl, {
473
+ "data-is-selected": Bind.oneWay(() => this.items.length > 0 && this.items.length === this.selectedItems.length, false)
474
+ }));
475
+ this.bindEvent(this.element, "click", () => {
476
+ const si = this.selectedItems;
477
+ const items = this.items;
478
+
479
+ if (!si) {
480
+ return;
481
+ }
482
+
483
+ if (!items) {
484
+ return;
485
+ }
486
+
487
+ if (items.length === 0) {
488
+ return;
489
+ }
490
+
491
+ if (items.length === si.length) {
492
+ si.clear();
493
+ } else {
494
+ si.length = 0;
495
+ si.push(...items);
496
+ si.refresh();
497
+ }
498
+ });
499
+ }
500
+
501
+ };
502
+
503
+ __decorate([BindableProperty, __metadata("design:type", Array)], SelectAllControl.prototype, "items", void 0);
504
+
505
+ __decorate([BindableProperty, __metadata("design:type", Array)], SelectAllControl.prototype, "selectedItems", void 0);
506
+
507
+ getFirstChild = container => {
508
+ let child = container.firstElementChild;
509
+
510
+ while (child && child.dataset.itemIndex === void 0) {
511
+ child = child.nextElementSibling;
512
+ }
513
+
514
+ return child;
515
+ };
516
+
517
+ _export("default", AtomRepeater = class AtomRepeater extends AtomControl {
518
+ constructor() {
519
+ super(...arguments);
520
+ this.bubbleEvents = true;
521
+ }
522
+
523
+ get allSelected() {
524
+ const selectedItems = this.selectedItems;
525
+ const items = this.items;
526
+
527
+ if (!(items && selectedItems)) {
528
+ return false;
529
+ }
530
+
531
+ return items.length && items.length === selectedItems.length;
532
+ }
533
+
534
+ get value() {
535
+ var _a;
536
+
537
+ if (this.initialValue !== undefined) {
538
+ return this.initialValue;
539
+ }
540
+
541
+ const sp = this.selectedItem;
542
+
543
+ if (sp === undefined) {
544
+ return sp;
545
+ }
546
+
547
+ const vp = (_a = this.valuePath) !== null && _a !== void 0 ? _a : SameObjectValue;
548
+ return vp(sp);
549
+ }
550
+
551
+ set value(v) {
552
+ var _a, _b;
553
+
554
+ this.initialValue = v;
555
+
556
+ if (!this.items || !this.items.length) {
557
+ AtomBinder.refreshValue(this, "value");
558
+ return;
559
+ }
560
+
561
+ const vp = (_a = this.valuePath) !== null && _a !== void 0 ? _a : SameObjectValue;
562
+ const c = (_b = this.comparer) !== null && _b !== void 0 ? _b : defaultComparer;
563
+ const selectedItem = this.items.find(item => c(vp(item), v));
564
+ this.selectedItem = selectedItem;
565
+ delete this.initialValue;
566
+ }
567
+
568
+ get selectedItem() {
569
+ var _a;
570
+
571
+ return (_a = this.selectedItems) === null || _a === void 0 ? void 0 : _a[0];
572
+ }
573
+
574
+ set selectedItem(value) {
575
+ var _a;
576
+
577
+ const si = (_a = this.selectedItems) !== null && _a !== void 0 ? _a : this.selectedItems = [];
578
+ const first = si[0];
579
+
580
+ if (value === first) {
581
+ return;
582
+ }
583
+
584
+ si.set(0, value);
585
+ }
586
+
587
+ onPropertyChanged(name) {
588
+ var _a, _b;
589
+
590
+ switch (name) {
591
+ case "items":
592
+ (_a = this.itemsDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
593
+ const items = this.items;
594
+ const d = items === null || items === void 0 ? void 0 : items.watch((target, type, index, item) => {
595
+ switch (type) {
596
+ case "add":
597
+ case "remove":
598
+ case "set":
599
+ this.updatePartial(type, index, item);
600
+ break;
601
+ }
602
+
603
+ this.updateItems();
604
+ this.dispatchCustomEvent("items-updated", {
605
+ type,
606
+ items,
607
+ index
608
+ });
609
+ AtomBinder.refreshValue(this, "selectedItem");
610
+ AtomBinder.refreshValue(this, "value");
611
+ });
612
+
613
+ if (d) {
614
+ this.itemsDisposable = this.registerDisposable(d);
615
+ }
616
+
617
+ const iv = this.initialValue;
618
+
619
+ if (iv) {
620
+ this.value = iv;
621
+ }
622
+
623
+ this.updateItems();
624
+ this.dispatchCustomEvent("items-updated", {
625
+ type: "reset",
626
+ items,
627
+ index: 0
628
+ });
629
+
630
+ if (this.scrollToSelection) {
631
+ this.bringSelectionIntoView();
632
+ }
633
+
634
+ break;
635
+
636
+ case "selectedItems":
637
+ (_b = this.selectedItemsDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
638
+ const selectedItems = this.selectedItems;
639
+ const sd = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.watch(() => {
640
+ this.updateClasses();
641
+
642
+ if (this.scrollToSelection) {
643
+ this.bringSelectionIntoView();
644
+ }
645
+
646
+ if (this.selectedItem) {
647
+ delete this.initialValue;
648
+ }
649
+
650
+ AtomBinder.refreshValue(this, "selectedItem");
651
+ AtomBinder.refreshValue(this, "value");
652
+ AtomBinder.refreshValue(this, "allSelected");
653
+ this.dispatchCustomEvent("selection-updated", selectedItems);
654
+ });
655
+
656
+ if (sd) {
657
+ this.selectedItemsDisposable = this.registerDisposable(sd);
658
+ }
659
+
660
+ this.updateClasses();
661
+ this.dispatchCustomEvent("selection-updated", selectedItems);
662
+ AtomBinder.refreshValue(this, "allSelected");
663
+ break;
664
+
665
+ case "itemRenderer":
666
+ case "watch":
667
+ this.updateItems();
668
+ break;
669
+
670
+ case "visibilityFilter":
671
+ this.updateVisibility();
672
+ break;
673
+
674
+ case "header":
675
+ case "headerRenderer":
676
+ this.updateHeaderFooter("header", this.headerPresenter, this.header, this.headerRenderer, true);
677
+ break;
678
+
679
+ case "footer":
680
+ case "footerRenderer":
681
+ this.updateHeaderFooter("footer", this.footerPresenter, this.footer, this.footerRenderer);
682
+ break;
683
+ }
684
+ }
685
+
686
+ bringSelectionIntoView(force) {
687
+ if (force) {
688
+ const selection = this.selectedItem;
689
+
690
+ if (selection) {
691
+ const element = this.elementForItem(selection);
692
+ element === null || element === void 0 ? void 0 : element.scrollIntoView();
693
+ }
694
+
695
+ return;
696
+ }
697
+
698
+ if (this.bringIntoViewId) {
699
+ clearTimeout(this.bringIntoViewId);
700
+ }
701
+
702
+ this.bringIntoViewId = setTimeout(() => {
703
+ clearTimeout(this.bringIntoViewId);
704
+ this.bringIntoViewId = undefined;
705
+ this.bringSelectionIntoView(true);
706
+ }, 100);
707
+ }
708
+
709
+ forEach(action, container) {
710
+ var _a;
711
+
712
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
713
+ const items = this.items;
714
+ let start = getFirstChild(container);
715
+
716
+ while (start) {
717
+ const index = start.dataset.itemIndex;
718
+ const item = items[~~index];
719
+ action(item, start);
720
+ start = start.nextElementSibling;
721
+ }
722
+ }
723
+
724
+ *any(fx, itemSelector, container) {
725
+ var _a;
726
+
727
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
728
+ const items = this.items;
729
+ let node = getFirstChild(container);
730
+
731
+ while (node) {
732
+ const index = node.dataset.itemIndex;
733
+ const item = items[~~index];
734
+ let element = node;
735
+
736
+ if (itemSelector) {
737
+ element = element.querySelector(itemSelector);
738
+ }
739
+
740
+ const ie = {
741
+ item,
742
+ element
743
+ };
744
+
745
+ if (fx) {
746
+ if (fx(item)) {
747
+ yield ie;
748
+ }
749
+
750
+ continue;
751
+ }
752
+
753
+ yield ie;
754
+ node = node.nextElementSibling;
755
+ }
756
+ }
757
+
758
+ *all(container) {
759
+ var _a;
760
+
761
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
762
+ const items = this.items;
763
+ let element = getFirstChild(container);
764
+
765
+ while (element) {
766
+ const index = element.dataset.itemIndex;
767
+ const item = items[~~index];
768
+ yield {
769
+ item,
770
+ element
771
+ };
772
+ element = element.nextElementSibling;
773
+ }
774
+ }
775
+
776
+ elementForItem(itemToFind, container) {
777
+ var _a;
778
+
779
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
780
+ const items = this.items;
781
+ let element = getFirstChild(container);
782
+
783
+ while (element) {
784
+ const index = element.dataset.itemIndex;
785
+ const item = items[~~index];
786
+
787
+ if (item === itemToFind) {
788
+ return element;
789
+ }
790
+
791
+ element = element.nextElementSibling;
792
+ }
793
+ }
794
+
795
+ refreshItem(item, fx, index = -1) {
796
+ if (index === -1) {
797
+ index = this.items.indexOf(item);
798
+ }
799
+
800
+ if (fx === null || fx === void 0 ? void 0 : fx.then) {
801
+ const finalize = () => {
802
+ this.refreshItem(item, undefined, index);
803
+ };
804
+
805
+ fx.then(finalize, finalize);
806
+ return;
807
+ }
808
+
809
+ this.updatePartial("set", index, item);
810
+ }
811
+
812
+ updatePartial(key, index, item, container) {
813
+ var _a, _b, _c, _d, _e, _f;
814
+
815
+ const items = this.items;
816
+
817
+ if (!items) {
818
+ return;
819
+ }
820
+
821
+ const ir = this.itemRenderer;
822
+
823
+ if (!ir) {
824
+ return;
825
+ }
826
+
827
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
828
+ let start = getFirstChild(container);
829
+ let ei;
830
+
831
+ while (start) {
832
+ ei = ~~start.dataset.itemIndex;
833
+
834
+ if (ei === index) {
835
+ break;
836
+ }
837
+
838
+ start = start.nextElementSibling;
839
+ }
840
+
841
+ if (key !== "add" && !start) {
842
+ return;
843
+ }
844
+
845
+ const vp = (_b = this.valuePath) !== null && _b !== void 0 ? _b : it => it;
846
+ const si = ((_c = this.selectedItems) !== null && _c !== void 0 ? _c : []).map(vp);
847
+ const isRemove = key === "remove";
848
+
849
+ if (isRemove || key === "set") {
850
+ const current = start;
851
+ start = start.nextElementSibling;
852
+ const ac = current.atomControl;
853
+
854
+ if (ac) {
855
+ ac.dispose();
856
+ } else {
857
+ this.unbind(current);
858
+ this.unbindEvent(current);
859
+ }
860
+
861
+ current.remove();
862
+ }
863
+
864
+ if (!isRemove) {
865
+ const en = ir(item);
866
+ const ea = (_d = en.attributes) !== null && _d !== void 0 ? _d : en.attributes = {};
867
+ const v = vp(item);
868
+ const e = document.createElement((_f = (_e = ea.for) !== null && _e !== void 0 ? _e : en.name) !== null && _f !== void 0 ? _f : "div");
869
+ e.dataset.itemIndex = (index++).toString();
870
+ e.dataset.selectedItem = si.indexOf(v) !== -1 ? "true" : "false";
871
+
872
+ if (this.enableDragDrop) {
873
+ updateDragDrop(e);
874
+ }
875
+
876
+ if (start) {
877
+ container.insertBefore(e, start);
878
+ } else {
879
+ container.appendChild(e);
880
+ }
881
+
882
+ this.render(en, e, this);
883
+ }
884
+
885
+ while (start) {
886
+ const ci = items[index];
887
+ const cv = vp(ci);
888
+ start.dataset.itemIndex = (index++).toString();
889
+ start.dataset.selectedItem = si.indexOf(cv) !== -1 ? "true" : "false";
890
+ start = start.nextElementSibling;
891
+ }
892
+ }
893
+
894
+ updateItems(container, force) {
895
+ var _a, _b, _c, _d, _e, _f;
896
+
897
+ if (this.deferUpdates && !force) {
898
+ if (this.deferredUpdateId) {
899
+ return;
900
+ }
901
+
902
+ this.deferredUpdateId = setTimeout(() => {
903
+ this.deferredUpdateId = 0;
904
+ this.updateItems(container, true);
905
+ }, 1);
906
+ return;
907
+ }
908
+
909
+ container !== null && container !== void 0 ? container : container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
910
+ disposeChildren(this, container);
911
+ this.onPropertyChanged("header");
912
+ const ir = this.itemRenderer;
913
+
914
+ if (!ir) {
915
+ this.onPropertyChanged("footer");
916
+ return;
917
+ }
918
+
919
+ const items = this.items;
920
+
921
+ if (!items) {
922
+ this.onPropertyChanged("footer");
923
+ return;
924
+ }
925
+
926
+ const vp = (_b = this.valuePath) !== null && _b !== void 0 ? _b : it => it;
927
+ const si = ((_c = this.selectedItems) !== null && _c !== void 0 ? _c : []).map(vp);
928
+ let i = 0;
929
+
930
+ for (const iterator of items) {
931
+ const e = ir(iterator);
932
+ const ea = (_d = e.attributes) !== null && _d !== void 0 ? _d : e.attributes = {};
933
+ const v = vp(iterator);
934
+ const element = document.createElement((_f = (_e = ea.for) !== null && _e !== void 0 ? _e : e.name) !== null && _f !== void 0 ? _f : "div");
935
+ element.dataset.itemIndex = (i++).toString();
936
+ element.dataset.selectedItem = si.indexOf(v) !== -1 ? "true" : "false";
937
+ this.render(e, element, this);
938
+
939
+ if (this.enableDragDrop) {
940
+ updateDragDrop(element);
941
+ }
942
+
943
+ container.appendChild(element);
944
+ }
945
+
946
+ this.onPropertyChanged("footer");
947
+ }
948
+
949
+ dispatchCustomEvent(type, detail) {
950
+ var _a;
951
+
952
+ type = StringHelper.fromHyphenToCamel(type);
953
+ (_a = this.element) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new CustomEvent(type, {
954
+ detail,
955
+ bubbles: false,
956
+ cancelable: true
957
+ }));
958
+ }
959
+
960
+ updateClasses() {
961
+ var _a, _b, _c;
962
+
963
+ const container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
964
+ const items = this.items;
965
+ let element = getFirstChild(container);
966
+ const vp = (_b = this.valuePath) !== null && _b !== void 0 ? _b : i => i;
967
+ const si = ((_c = this.selectedItems) !== null && _c !== void 0 ? _c : []).map(vp);
968
+
969
+ while (element) {
970
+ const index = ~~element.dataset.itemIndex;
971
+ const item = items[index];
972
+ const v = vp(item);
973
+ element.dataset.selectedItem = si.indexOf(v) !== -1 ? "true" : "false";
974
+ element = element.nextElementSibling;
975
+ }
976
+ }
977
+
978
+ updateVisibility() {
979
+ var _a, _b;
980
+
981
+ const container = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.element;
982
+ const items = this.items;
983
+ let element = container.firstElementChild;
984
+ const vf = (_b = this.visibilityFilter) !== null && _b !== void 0 ? _b : MatchTrue;
985
+
986
+ while (element) {
987
+ const index = ~~element.dataset.itemIndex;
988
+ const item = items[index];
989
+ element.style.display = vf(item) ? "" : "none";
990
+ element = element.nextElementSibling;
991
+ }
992
+ }
993
+
994
+ updateHeaderFooter(name, presenter, item, itemRenderer, insert) {
995
+ var _a, _b, _c, _d;
996
+
997
+ presenter !== null && presenter !== void 0 ? presenter : presenter = (_a = this.itemsPresenter) !== null && _a !== void 0 ? _a : this.itemsPresenter = this.element;
998
+
999
+ if (!presenter) {
1000
+ return;
1001
+ }
1002
+
1003
+ let current;
1004
+
1005
+ if (insert) {
1006
+ current = presenter.firstElementChild;
1007
+
1008
+ while (current && current.dataset[name] !== name) {
1009
+ current = current.nextElementSibling;
1010
+ }
1011
+ } else {
1012
+ current = presenter.lastElementChild;
1013
+
1014
+ while (current && current.dataset[name] !== name) {
1015
+ current = current.previousElementSibling;
1016
+ }
1017
+ }
1018
+
1019
+ if (current) {
1020
+ disposeChild(this, current);
1021
+ }
1022
+
1023
+ if (!(item && itemRenderer)) {
1024
+ return;
1025
+ }
1026
+
1027
+ const node = itemRenderer(item);
1028
+ const element = document.createElement((_d = (_c = (_b = node.attributes) === null || _b === void 0 ? void 0 : _b.for) !== null && _c !== void 0 ? _c : node.name) !== null && _d !== void 0 ? _d : "div");
1029
+ element.dataset[name] = name;
1030
+ this.render(node, element, this);
1031
+
1032
+ if (insert) {
1033
+ presenter.insertBefore(element, presenter.firstElementChild);
1034
+ } else {
1035
+ presenter.appendChild(element);
1036
+ }
1037
+ }
1038
+
1039
+ dispatchHeaderFooterEvent(eventName, type, originalTarget) {
1040
+ const detail = this[type];
1041
+ const ce = new CustomEvent(eventName !== null && eventName !== void 0 ? eventName : `${type}Click`, {
1042
+ detail,
1043
+ bubbles: this.bubbleEvents,
1044
+ cancelable: true
1045
+ });
1046
+ originalTarget.dispatchEvent(ce);
1047
+
1048
+ if (!ce.defaultPrevented) {
1049
+ this.onPropertyChanged(type);
1050
+ }
1051
+ }
1052
+
1053
+ dispatchItemEvent(eventName, item, recreate, originalTarget) {
1054
+ const ce = new CustomEvent(eventName !== null && eventName !== void 0 ? eventName : "itemClick", {
1055
+ detail: item,
1056
+ bubbles: this.bubbleEvents,
1057
+ cancelable: true
1058
+ });
1059
+ originalTarget.dispatchEvent(ce);
1060
+
1061
+ if (recreate && ce.executed && !ce.defaultPrevented) {
1062
+ this.refreshItem(item, ce.promise);
1063
+ }
1064
+ }
1065
+
1066
+ dispatchClickEvent(e, data) {
1067
+ var _a;
1068
+
1069
+ let {
1070
+ clickEvent = "itemClick",
1071
+ recreate,
1072
+ header,
1073
+ footer,
1074
+ itemIndex
1075
+ } = data;
1076
+ clickEvent = clickEvent.replace(/-([a-z])/g, g => g[1].toUpperCase());
1077
+
1078
+ if (header) {
1079
+ this.dispatchHeaderFooterEvent(clickEvent, header, e.target);
1080
+ return;
1081
+ }
1082
+
1083
+ if (footer) {
1084
+ this.dispatchHeaderFooterEvent(clickEvent, header, e.target);
1085
+ return;
1086
+ }
1087
+
1088
+ if (itemIndex === void 0 || itemIndex === null) {
1089
+ return;
1090
+ }
1091
+
1092
+ let index = ~~itemIndex;
1093
+ const item = this.items[index];
1094
+
1095
+ if (clickEvent === "itemSelect" || clickEvent === "itemDeselect") {
1096
+ const si = (_a = this.selectedItems) !== null && _a !== void 0 ? _a : this.selectedItems = [];
1097
+
1098
+ if (si) {
1099
+ index = si.indexOf(item);
1100
+
1101
+ if (index === -1) {
1102
+ if (this.allowMultipleSelection) {
1103
+ si.add(item);
1104
+ } else {
1105
+ si.set(0, item);
1106
+ }
1107
+ } else {
1108
+ si.removeAt(index);
1109
+ }
1110
+ }
1111
+ }
1112
+
1113
+ if (item) {
1114
+ this.dispatchItemEvent(clickEvent, item, recreate, e.target);
1115
+ }
1116
+ }
1117
+
1118
+ });
1119
+
1120
+ __decorate([BindableProperty, __metadata("design:type", Boolean)], AtomRepeater.prototype, "allowMultipleSelection", void 0);
1121
+
1122
+ __decorate([BindableProperty, __metadata("design:type", Array)], AtomRepeater.prototype, "selectedItems", void 0);
1123
+
1124
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "itemsPresenter", void 0);
1125
+
1126
+ __decorate([BindableProperty, __metadata("design:type", Array)], AtomRepeater.prototype, "items", void 0);
1127
+
1128
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "watch", void 0);
1129
+
1130
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomRepeater.prototype, "visibilityFilter", void 0);
1131
+
1132
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomRepeater.prototype, "enableFunc", void 0);
1133
+
1134
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomRepeater.prototype, "itemRenderer", void 0);
1135
+
1136
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomRepeater.prototype, "valuePath", void 0);
1137
+
1138
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomRepeater.prototype, "comparer", void 0);
1139
+
1140
+ __decorate([BindableProperty, __metadata("design:type", Boolean)], AtomRepeater.prototype, "deferUpdates", void 0);
1141
+
1142
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "header", void 0);
1143
+
1144
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "headerRenderer", void 0);
1145
+
1146
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "footer", void 0);
1147
+
1148
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "footerRenderer", void 0);
1149
+
1150
+ __decorate([BindableProperty, __metadata("design:type", Object)], AtomRepeater.prototype, "enableDragDrop", void 0);
1151
+
1152
+ __decorate([WatchProperty, __metadata("design:type", Object), __metadata("design:paramtypes", [])], AtomRepeater.prototype, "allSelected", null);
1153
+
1154
+ hoverItem = {
1155
+ repeater: null,
1156
+ target: null,
1157
+ item: null,
1158
+ placeholder: null
1159
+ };
1160
+ document.body.addEventListener("dragstart", e => {
1161
+ const {
1162
+ target
1163
+ } = e;
1164
+
1165
+ if (target.draggable) {
1166
+ const ri = getParentRepeaterItem(target);
1167
+
1168
+ if (!ri) {
1169
+ return;
1170
+ }
1171
+
1172
+ const [type, repeater, item, index] = ri;
1173
+
1174
+ if (!repeater || !repeater.enableDragDrop) {
1175
+ return;
1176
+ }
1177
+
1178
+ const placeholder = document.createElement("div");
1179
+ placeholder.style.width = target.offsetWidth + "px";
1180
+ placeholder.style.height = target.offsetHeight + "px";
1181
+ placeholder.style.backgroundColor = Colors.lightGray.toString();
1182
+ placeholder.style.border = "solid 1px gray";
1183
+ placeholder.style.borderRadius = "10px";
1184
+ hoverItem = {
1185
+ repeater,
1186
+ target,
1187
+ item,
1188
+ placeholder
1189
+ };
1190
+ e.dataTransfer.dropEffect = "move";
1191
+ setTimeout(() => {
1192
+ target.style.display = "none";
1193
+ target.parentElement.insertBefore(placeholder, target);
1194
+ }, 0);
1195
+ }
1196
+ });
1197
+ document.body.addEventListener("dragend", e => {
1198
+ var _a, _b;
1199
+
1200
+ if (!(hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.placeholder)) {
1201
+ return;
1202
+ }
1203
+
1204
+ const {
1205
+ item,
1206
+ placeholder,
1207
+ repeater
1208
+ } = hoverItem;
1209
+ let start = placeholder;
1210
+ let index = -1;
1211
+
1212
+ while (start) {
1213
+ const itemIndex = (_b = (_a = start.previousElementSibling) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.itemIndex;
1214
+
1215
+ if (itemIndex !== void 0) {
1216
+ index = ~~itemIndex;
1217
+ }
1218
+
1219
+ if (start.parentElement.atomControl) {
1220
+ break;
1221
+ }
1222
+
1223
+ start = start.parentElement;
1224
+ }
1225
+
1226
+ const targetRepeater = start.parentElement.atomControl;
1227
+ placeholder.remove();
1228
+ hoverItem.placeholder = null;
1229
+ repeater.items.remove(item);
1230
+ index++;
1231
+ const ce = new CustomEvent("itemDropped", {
1232
+ detail: {
1233
+ item,
1234
+ index
1235
+ }
1236
+ });
1237
+
1238
+ if (ce.defaultPrevented) {
1239
+ return;
1240
+ }
1241
+
1242
+ const {
1243
+ detail
1244
+ } = ce;
1245
+ targetRepeater.items.insert(detail.index, detail.item);
1246
+ });
1247
+
1248
+ dragOver = e => {
1249
+ if (hoverItem) {
1250
+ const {
1251
+ placeholder
1252
+ } = hoverItem;
1253
+
1254
+ if (e.target === placeholder) {
1255
+ return;
1256
+ }
1257
+ }
1258
+
1259
+ const ri = getParentRepeaterItem(e.target);
1260
+
1261
+ if (!ri) {
1262
+ return;
1263
+ }
1264
+
1265
+ const [type, repeater, item, index, target] = ri;
1266
+
1267
+ if (!repeater) {
1268
+ return;
1269
+ }
1270
+
1271
+ if (hoverItem) {
1272
+ const {
1273
+ placeholder
1274
+ } = hoverItem;
1275
+ e.preventDefault();
1276
+ const mp = {
1277
+ x: e.clientX,
1278
+ y: e.clientY
1279
+ };
1280
+
1281
+ const isBefore = (co, n) => n.x <= co.x + co.width * 0.3 || n.y <= co.y + co.height * 0.3;
1282
+
1283
+ const isAfter = (co, n) => n.x >= co.x + co.width * 0.7 || n.y >= co.y + co.height * 0.7;
1284
+
1285
+ const targetBounds = target.getBoundingClientRect();
1286
+
1287
+ if (isAfter(targetBounds, mp)) {
1288
+ const next = target.nextElementSibling;
1289
+
1290
+ if (next === placeholder) {
1291
+ return;
1292
+ }
1293
+
1294
+ placeholder.remove();
1295
+ target.insertAdjacentElement("afterend", placeholder);
1296
+ return;
1297
+ }
1298
+
1299
+ if (isBefore(targetBounds, mp)) {
1300
+ const previous = target.previousElementSibling;
1301
+
1302
+ if (previous === placeholder) {
1303
+ return;
1304
+ }
1305
+
1306
+ placeholder.remove();
1307
+ target.insertAdjacentElement("beforebegin", placeholder);
1308
+ }
1309
+
1310
+ return;
1311
+ }
1312
+ };
1313
+
1314
+ document.body.addEventListener("dragover", dragOver);
1315
+ document.body.addEventListener("dragenter", dragOver);
1316
+ }
1317
+ };
1318
+ });
1319
+ //# sourceMappingURL=AtomRepeater.sys.js.map