@web-atoms/core 2.1.369 → 2.1.370

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 (295) hide show
  1. package/README.md +1 -1
  2. package/dist/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +1 -2
  4. package/dist/App.sys.js +0 -220
  5. package/dist/App.sys.js.map +0 -1
  6. package/dist/Atom.sys.js +0 -177
  7. package/dist/Atom.sys.js.map +0 -1
  8. package/dist/MockApp.sys.js +0 -45
  9. package/dist/MockApp.sys.js.map +0 -1
  10. package/dist/Pack.sys.js +0 -13
  11. package/dist/Pack.sys.js.map +0 -1
  12. package/dist/core/AtomBinder.sys.js +0 -274
  13. package/dist/core/AtomBinder.sys.js.map +0 -1
  14. package/dist/core/AtomBridge.sys.js +0 -390
  15. package/dist/core/AtomBridge.sys.js.map +0 -1
  16. package/dist/core/AtomComponent.sys.js +0 -703
  17. package/dist/core/AtomComponent.sys.js.map +0 -1
  18. package/dist/core/AtomDispatcher.sys.js +0 -77
  19. package/dist/core/AtomDispatcher.sys.js.map +0 -1
  20. package/dist/core/AtomDisposableList.sys.js +0 -46
  21. package/dist/core/AtomDisposableList.sys.js.map +0 -1
  22. package/dist/core/AtomEnumerator.sys.js +0 -34
  23. package/dist/core/AtomEnumerator.sys.js.map +0 -1
  24. package/dist/core/AtomList.sys.js +0 -238
  25. package/dist/core/AtomList.sys.js.map +0 -1
  26. package/dist/core/AtomLoader.sys.js +0 -178
  27. package/dist/core/AtomLoader.sys.js.map +0 -1
  28. package/dist/core/AtomMap.sys.js +0 -83
  29. package/dist/core/AtomMap.sys.js.map +0 -1
  30. package/dist/core/AtomOnce.sys.js +0 -42
  31. package/dist/core/AtomOnce.sys.js.map +0 -1
  32. package/dist/core/AtomSelectableList.sys.js +0 -336
  33. package/dist/core/AtomSelectableList.sys.js.map +0 -1
  34. package/dist/core/AtomUri.sys.js +0 -110
  35. package/dist/core/AtomUri.sys.js.map +0 -1
  36. package/dist/core/AtomWatcher.sys.js +0 -167
  37. package/dist/core/AtomWatcher.sys.js.map +0 -1
  38. package/dist/core/Bind.sys.js +0 -394
  39. package/dist/core/Bind.sys.js.map +0 -1
  40. package/dist/core/BindableProperty.sys.js +0 -51
  41. package/dist/core/BindableProperty.sys.js.map +0 -1
  42. package/dist/core/CancelTokenFactory.sys.js +0 -57
  43. package/dist/core/CancelTokenFactory.sys.js.map +0 -1
  44. package/dist/core/Color.sys.js +0 -9
  45. package/dist/core/Color.sys.js.map +0 -1
  46. package/dist/core/Colors.sys.js +0 -305
  47. package/dist/core/Colors.sys.js.map +0 -1
  48. package/dist/core/Defer.sys.js +0 -45
  49. package/dist/core/Defer.sys.js.map +0 -1
  50. package/dist/core/ExpressionParser.sys.js +0 -201
  51. package/dist/core/ExpressionParser.sys.js.map +0 -1
  52. package/dist/core/FormattedError.sys.js +0 -23
  53. package/dist/core/FormattedError.sys.js.map +0 -1
  54. package/dist/core/FormattedString.sys.js +0 -20
  55. package/dist/core/FormattedString.sys.js.map +0 -1
  56. package/dist/core/IFetchEvent.sys.js +0 -9
  57. package/dist/core/IFetchEvent.sys.js.map +0 -1
  58. package/dist/core/IScreen.sys.js +0 -9
  59. package/dist/core/IScreen.sys.js.map +0 -1
  60. package/dist/core/IValueConverter.sys.js +0 -9
  61. package/dist/core/IValueConverter.sys.js.map +0 -1
  62. package/dist/core/InheritedProperty.sys.js +0 -61
  63. package/dist/core/InheritedProperty.sys.js.map +0 -1
  64. package/dist/core/InjectProperty.sys.js +0 -25
  65. package/dist/core/InjectProperty.sys.js.map +0 -1
  66. package/dist/core/KeyValuePairs.sys.js +0 -9
  67. package/dist/core/KeyValuePairs.sys.js.map +0 -1
  68. package/dist/core/Markdown.sys.js +0 -37
  69. package/dist/core/Markdown.sys.js.map +0 -1
  70. package/dist/core/MarkdownError.sys.js +0 -26
  71. package/dist/core/MarkdownError.sys.js.map +0 -1
  72. package/dist/core/PropertyBinding.sys.js +0 -11
  73. package/dist/core/PropertyBinding.sys.js.map +0 -1
  74. package/dist/core/PropertyMap.sys.js +0 -53
  75. package/dist/core/PropertyMap.sys.js.map +0 -1
  76. package/dist/core/SingleInvoker.sys.js +0 -71
  77. package/dist/core/SingleInvoker.sys.js.map +0 -1
  78. package/dist/core/StringHelper.sys.js +0 -76
  79. package/dist/core/StringHelper.sys.js.map +0 -1
  80. package/dist/core/TransientDisposable.sys.js +0 -34
  81. package/dist/core/TransientDisposable.sys.js.map +0 -1
  82. package/dist/core/WatchProperty.sys.js +0 -37
  83. package/dist/core/WatchProperty.sys.js.map +0 -1
  84. package/dist/core/WebImage.sys.js +0 -24
  85. package/dist/core/WebImage.sys.js.map +0 -1
  86. package/dist/core/XNode.sys.js +0 -205
  87. package/dist/core/XNode.sys.js.map +0 -1
  88. package/dist/core/sleep.sys.js +0 -30
  89. package/dist/core/sleep.sys.js.map +0 -1
  90. package/dist/core/types.sys.js +0 -130
  91. package/dist/core/types.sys.js.map +0 -1
  92. package/dist/di/DISingleton.sys.js +0 -26
  93. package/dist/di/DISingleton.sys.js.map +0 -1
  94. package/dist/di/DITransient.sys.js +0 -26
  95. package/dist/di/DITransient.sys.js.map +0 -1
  96. package/dist/di/IMockOrInject.sys.js +0 -9
  97. package/dist/di/IMockOrInject.sys.js.map +0 -1
  98. package/dist/di/IServiceProvider.sys.js +0 -9
  99. package/dist/di/IServiceProvider.sys.js.map +0 -1
  100. package/dist/di/Inject.sys.js +0 -111
  101. package/dist/di/Inject.sys.js.map +0 -1
  102. package/dist/di/Register.sys.js +0 -64
  103. package/dist/di/Register.sys.js.map +0 -1
  104. package/dist/di/RegisterScoped.sys.js +0 -23
  105. package/dist/di/RegisterScoped.sys.js.map +0 -1
  106. package/dist/di/RegisterSingleton.sys.js +0 -23
  107. package/dist/di/RegisterSingleton.sys.js.map +0 -1
  108. package/dist/di/ServiceCollection.sys.js +0 -76
  109. package/dist/di/ServiceCollection.sys.js.map +0 -1
  110. package/dist/di/ServiceProvider.sys.js +0 -173
  111. package/dist/di/ServiceProvider.sys.js.map +0 -1
  112. package/dist/di/TypeKey.sys.js +0 -27
  113. package/dist/di/TypeKey.sys.js.map +0 -1
  114. package/dist/services/BusyIndicatorService.sys.js +0 -33
  115. package/dist/services/BusyIndicatorService.sys.js.map +0 -1
  116. package/dist/services/CacheService.sys.js +0 -145
  117. package/dist/services/CacheService.sys.js.map +0 -1
  118. package/dist/services/JsonService.sys.js +0 -181
  119. package/dist/services/JsonService.sys.js.map +0 -1
  120. package/dist/services/MockNavigationService.sys.js +0 -236
  121. package/dist/services/MockNavigationService.sys.js.map +0 -1
  122. package/dist/services/NavigationService.sys.js +0 -175
  123. package/dist/services/NavigationService.sys.js.map +0 -1
  124. package/dist/services/ReferenceService.sys.js +0 -68
  125. package/dist/services/ReferenceService.sys.js.map +0 -1
  126. package/dist/services/http/AjaxOptions.sys.js +0 -15
  127. package/dist/services/http/AjaxOptions.sys.js.map +0 -1
  128. package/dist/services/http/JsonError.sys.js +0 -27
  129. package/dist/services/http/JsonError.sys.js.map +0 -1
  130. package/dist/services/http/RestService.sys.js +0 -524
  131. package/dist/services/http/RestService.sys.js.map +0 -1
  132. package/dist/style/StyleRule.sys.js +0 -3550
  133. package/dist/style/StyleRule.sys.js.map +0 -1
  134. package/dist/test.sys.js +0 -9
  135. package/dist/test.sys.js.map +0 -1
  136. package/dist/unit/AtomTest.sys.js +0 -67
  137. package/dist/unit/AtomTest.sys.js.map +0 -1
  138. package/dist/unit/AtomWebTest.sys.js +0 -83
  139. package/dist/unit/AtomWebTest.sys.js.map +0 -1
  140. package/dist/view-model/Action.sys.js +0 -147
  141. package/dist/view-model/Action.sys.js.map +0 -1
  142. package/dist/view-model/AtomViewModel.sys.js +0 -435
  143. package/dist/view-model/AtomViewModel.sys.js.map +0 -1
  144. package/dist/view-model/AtomWindowViewModel.sys.js +0 -71
  145. package/dist/view-model/AtomWindowViewModel.sys.js.map +0 -1
  146. package/dist/view-model/BindableUrlParameter.sys.js +0 -28
  147. package/dist/view-model/BindableUrlParameter.sys.js.map +0 -1
  148. package/dist/view-model/Delay.sys.js +0 -41
  149. package/dist/view-model/Delay.sys.js.map +0 -1
  150. package/dist/view-model/Disposable.sys.js +0 -52
  151. package/dist/view-model/Disposable.sys.js.map +0 -1
  152. package/dist/view-model/Load.sys.js +0 -142
  153. package/dist/view-model/Load.sys.js.map +0 -1
  154. package/dist/view-model/Once.sys.js +0 -59
  155. package/dist/view-model/Once.sys.js.map +0 -1
  156. package/dist/view-model/baseTypes.sys.js +0 -17
  157. package/dist/view-model/baseTypes.sys.js.map +0 -1
  158. package/dist/view-model/bindPromise.sys.js +0 -45
  159. package/dist/view-model/bindPromise.sys.js.map +0 -1
  160. package/dist/view-model/bindProperty.sys.js +0 -20
  161. package/dist/view-model/bindProperty.sys.js.map +0 -1
  162. package/dist/view-model/bindUrlParameter.sys.js +0 -70
  163. package/dist/view-model/bindUrlParameter.sys.js.map +0 -1
  164. package/dist/web/WebApp.sys.js +0 -269
  165. package/dist/web/WebApp.sys.js.map +0 -1
  166. package/dist/web/controls/AtomAlertWindow.sys.js +0 -80
  167. package/dist/web/controls/AtomAlertWindow.sys.js.map +0 -1
  168. package/dist/web/controls/AtomComboBox.sys.js +0 -115
  169. package/dist/web/controls/AtomComboBox.sys.js.map +0 -1
  170. package/dist/web/controls/AtomContentControl.sys.js +0 -72
  171. package/dist/web/controls/AtomContentControl.sys.js.map +0 -1
  172. package/dist/web/controls/AtomControl.sys.js +0 -667
  173. package/dist/web/controls/AtomControl.sys.js.map +0 -1
  174. package/dist/web/controls/AtomFrame.sys.js +0 -305
  175. package/dist/web/controls/AtomFrame.sys.js.map +0 -1
  176. package/dist/web/controls/AtomGridSplitter.sys.js +0 -83
  177. package/dist/web/controls/AtomGridSplitter.sys.js.map +0 -1
  178. package/dist/web/controls/AtomGridView.sys.js +0 -301
  179. package/dist/web/controls/AtomGridView.sys.js.map +0 -1
  180. package/dist/web/controls/AtomItemsControl.sys.js +0 -869
  181. package/dist/web/controls/AtomItemsControl.sys.js.map +0 -1
  182. package/dist/web/controls/AtomListBox.sys.js +0 -72
  183. package/dist/web/controls/AtomListBox.sys.js.map +0 -1
  184. package/dist/web/controls/AtomNotification.sys.js +0 -79
  185. package/dist/web/controls/AtomNotification.sys.js.map +0 -1
  186. package/dist/web/controls/AtomPage.sys.js +0 -24
  187. package/dist/web/controls/AtomPage.sys.js.map +0 -1
  188. package/dist/web/controls/AtomPageLink.sys.js +0 -158
  189. package/dist/web/controls/AtomPageLink.sys.js.map +0 -1
  190. package/dist/web/controls/AtomTabbedPage.sys.js +0 -354
  191. package/dist/web/controls/AtomTabbedPage.sys.js.map +0 -1
  192. package/dist/web/controls/AtomTemplate.sys.js +0 -17
  193. package/dist/web/controls/AtomTemplate.sys.js.map +0 -1
  194. package/dist/web/controls/AtomTemplateControl.sys.js +0 -59
  195. package/dist/web/controls/AtomTemplateControl.sys.js.map +0 -1
  196. package/dist/web/controls/AtomToggleButtonBar.sys.js +0 -53
  197. package/dist/web/controls/AtomToggleButtonBar.sys.js.map +0 -1
  198. package/dist/web/controls/AtomViewPager.sys.js +0 -107
  199. package/dist/web/controls/AtomViewPager.sys.js.map +0 -1
  200. package/dist/web/controls/AtomViewStack.sys.js +0 -41
  201. package/dist/web/controls/AtomViewStack.sys.js.map +0 -1
  202. package/dist/web/controls/AtomWindow.sys.js +0 -285
  203. package/dist/web/controls/AtomWindow.sys.js.map +0 -1
  204. package/dist/web/core/AtomUI.sys.js +0 -189
  205. package/dist/web/core/AtomUI.sys.js.map +0 -1
  206. package/dist/web/core/Encoder.sys.js +0 -178
  207. package/dist/web/core/Encoder.sys.js.map +0 -1
  208. package/dist/web/core/HtmlNode.sys.js +0 -206
  209. package/dist/web/core/HtmlNode.sys.js.map +0 -1
  210. package/dist/web/images/Busy.sys.js +0 -14
  211. package/dist/web/images/Busy.sys.js.map +0 -1
  212. package/dist/web/images/BusyDataUrl.sys.js +0 -16
  213. package/dist/web/images/BusyDataUrl.sys.js.map +0 -1
  214. package/dist/web/images/Button.sys.js +0 -14
  215. package/dist/web/images/Button.sys.js.map +0 -1
  216. package/dist/web/images/ButtonDataUrl.sys.js +0 -16
  217. package/dist/web/images/ButtonDataUrl.sys.js.map +0 -1
  218. package/dist/web/images/CloseButton.sys.js +0 -14
  219. package/dist/web/images/CloseButton.sys.js.map +0 -1
  220. package/dist/web/images/CloseButtonDataUrl.sys.js +0 -16
  221. package/dist/web/images/CloseButtonDataUrl.sys.js.map +0 -1
  222. package/dist/web/images/CloseButtonHover.sys.js +0 -14
  223. package/dist/web/images/CloseButtonHover.sys.js.map +0 -1
  224. package/dist/web/images/CloseButtonHoverDataUrl.sys.js +0 -16
  225. package/dist/web/images/CloseButtonHoverDataUrl.sys.js.map +0 -1
  226. package/dist/web/samples/MovieService.sys.js +0 -73
  227. package/dist/web/samples/MovieService.sys.js.map +0 -1
  228. package/dist/web/samples/demo/app.sys.js +0 -30
  229. package/dist/web/samples/demo/app.sys.js.map +0 -1
  230. package/dist/web/samples/demo/views/MovieList.sys.js +0 -77
  231. package/dist/web/samples/demo/views/MovieList.sys.js.map +0 -1
  232. package/dist/web/samples/demo/views/MovieListViewModel.sys.js +0 -128
  233. package/dist/web/samples/demo/views/MovieListViewModel.sys.js.map +0 -1
  234. package/dist/web/samples/tabs/app.sys.js +0 -68
  235. package/dist/web/samples/tabs/app.sys.js.map +0 -1
  236. package/dist/web/samples/tabs/views/List.sys.js +0 -14
  237. package/dist/web/samples/tabs/views/List.sys.js.map +0 -1
  238. package/dist/web/samples/tabs/views/ListDataUrl.sys.js +0 -16
  239. package/dist/web/samples/tabs/views/ListDataUrl.sys.js.map +0 -1
  240. package/dist/web/samples/tabs/views/Page1.sys.js +0 -117
  241. package/dist/web/samples/tabs/views/Page1.sys.js.map +0 -1
  242. package/dist/web/samples/tabs/views/TabHost.sys.js +0 -103
  243. package/dist/web/samples/tabs/views/TabHost.sys.js.map +0 -1
  244. package/dist/web/samples/window/WindowSample.sys.js +0 -33
  245. package/dist/web/samples/window/WindowSample.sys.js.map +0 -1
  246. package/dist/web/services/MarkdownService.sys.js +0 -45
  247. package/dist/web/services/MarkdownService.sys.js.map +0 -1
  248. package/dist/web/services/NotificationPopup.sys.js +0 -44
  249. package/dist/web/services/NotificationPopup.sys.js.map +0 -1
  250. package/dist/web/services/PopupService.sys.js +0 -876
  251. package/dist/web/services/PopupService.sys.js.map +0 -1
  252. package/dist/web/services/WebBusyIndicatorService.sys.js +0 -95
  253. package/dist/web/services/WebBusyIndicatorService.sys.js.map +0 -1
  254. package/dist/web/services/WindowService.sys.js +0 -445
  255. package/dist/web/services/WindowService.sys.js.map +0 -1
  256. package/dist/web/styles/AtomAlertWindowStyle.sys.js +0 -59
  257. package/dist/web/styles/AtomAlertWindowStyle.sys.js.map +0 -1
  258. package/dist/web/styles/AtomFrameStyle.sys.js +0 -33
  259. package/dist/web/styles/AtomFrameStyle.sys.js.map +0 -1
  260. package/dist/web/styles/AtomListBoxStyle.sys.js +0 -49
  261. package/dist/web/styles/AtomListBoxStyle.sys.js.map +0 -1
  262. package/dist/web/styles/AtomNotificationStyle.sys.js +0 -39
  263. package/dist/web/styles/AtomNotificationStyle.sys.js.map +0 -1
  264. package/dist/web/styles/AtomPageLinkStyle.sys.js +0 -30
  265. package/dist/web/styles/AtomPageLinkStyle.sys.js.map +0 -1
  266. package/dist/web/styles/AtomPopupStyle.sys.js +0 -27
  267. package/dist/web/styles/AtomPopupStyle.sys.js.map +0 -1
  268. package/dist/web/styles/AtomStyle.sys.js +0 -105
  269. package/dist/web/styles/AtomStyle.sys.js.map +0 -1
  270. package/dist/web/styles/AtomStyleSheet.sys.js +0 -84
  271. package/dist/web/styles/AtomStyleSheet.sys.js.map +0 -1
  272. package/dist/web/styles/AtomTabbedPageStyle.sys.js +0 -135
  273. package/dist/web/styles/AtomTabbedPageStyle.sys.js.map +0 -1
  274. package/dist/web/styles/AtomTheme.sys.js +0 -70
  275. package/dist/web/styles/AtomTheme.sys.js.map +0 -1
  276. package/dist/web/styles/AtomToggleButtonBarStyle.sys.js +0 -83
  277. package/dist/web/styles/AtomToggleButtonBarStyle.sys.js.map +0 -1
  278. package/dist/web/styles/AtomWindowStyle.sys.js +0 -144
  279. package/dist/web/styles/AtomWindowStyle.sys.js.map +0 -1
  280. package/dist/web/styles/CSS.sys.js +0 -96
  281. package/dist/web/styles/CSS.sys.js.map +0 -1
  282. package/dist/web/styles/CommonStyles.sys.js +0 -79
  283. package/dist/web/styles/CommonStyles.sys.js.map +0 -1
  284. package/dist/web/styles/IStyleDeclaration.sys.js +0 -9
  285. package/dist/web/styles/IStyleDeclaration.sys.js.map +0 -1
  286. package/dist/web/styles/StyleBuilder.sys.js +0 -112
  287. package/dist/web/styles/StyleBuilder.sys.js.map +0 -1
  288. package/dist/xf/XFApp.sys.js +0 -75
  289. package/dist/xf/XFApp.sys.js.map +0 -1
  290. package/dist/xf/controls/AtomXFControl.sys.js +0 -334
  291. package/dist/xf/controls/AtomXFControl.sys.js.map +0 -1
  292. package/dist/xf/services/XFBusyIndicatorService.sys.js +0 -40
  293. package/dist/xf/services/XFBusyIndicatorService.sys.js.map +0 -1
  294. package/dist/xf/services/XFNavigationService.sys.js +0 -204
  295. package/dist/xf/services/XFNavigationService.sys.js.map +0 -1
@@ -1,869 +0,0 @@
1
- System.register(["../../core/AtomBinder", "../../core/AtomEnumerator", "../../core/AtomList", "../../core/XNode", "../../web/core/AtomUI", "./AtomControl"], function (_export, _context) {
2
- "use strict";
3
-
4
- var AtomBinder, AtomEnumerator, XNode, AtomUI, ChildEnumerator, AtomControl, AtomItemsControl, AtomItemsControlItemTemplate;
5
-
6
- _export("AtomItemsControl", void 0);
7
-
8
- return {
9
- setters: [function (_coreAtomBinder) {
10
- AtomBinder = _coreAtomBinder.AtomBinder;
11
- }, function (_coreAtomEnumerator) {
12
- AtomEnumerator = _coreAtomEnumerator.default;
13
- }, function (_coreAtomList) {}, function (_coreXNode) {
14
- XNode = _coreXNode.default;
15
- }, function (_webCoreAtomUI) {
16
- AtomUI = _webCoreAtomUI.AtomUI;
17
- ChildEnumerator = _webCoreAtomUI.ChildEnumerator;
18
- }, function (_AtomControl) {
19
- AtomControl = _AtomControl.AtomControl;
20
- }],
21
- execute: function () {
22
- _export("AtomItemsControl", AtomItemsControl = class AtomItemsControl extends AtomControl {
23
- constructor() {
24
- super(...arguments);
25
- this.mValue = undefined;
26
- this.mFilter = undefined;
27
- this.mFirstChild = null;
28
- this.mLastChild = null;
29
- this.mScrollerSetup = false;
30
- this.mScopes = null;
31
- this.mItemsDisposable = null;
32
- this.isUpdating = false;
33
- }
34
-
35
- get itemsPresenter() {
36
- return this.mItemsPresenter || (this.mItemsPresenter = this.element);
37
- }
38
-
39
- set itemsPresenter(v) {
40
- this.mItemsPresenter = v;
41
- AtomBinder.refreshValue(this, "itemsPresenter");
42
- }
43
-
44
- get value() {
45
- if (this.allowMultipleSelection) {
46
- let items = this.mSelectedItems;
47
-
48
- if (items.length === 0) {
49
- if (this.mValue !== undefined) {
50
- return this.mValue;
51
- }
52
-
53
- return null;
54
- }
55
-
56
- items = items.map(m => m[this.valuePath]);
57
-
58
- if (this.valueSeparator) {
59
- items = items.join(this.valueSeparator);
60
- }
61
-
62
- return items;
63
- }
64
-
65
- let s = this.selectedItem;
66
-
67
- if (!s) {
68
- if (this.mValue !== undefined) {
69
- return this.mValue;
70
- }
71
-
72
- return null;
73
- }
74
-
75
- if (this.valuePath) {
76
- s = s[this.valuePath];
77
- }
78
-
79
- return s;
80
- }
81
-
82
- set value(v) {
83
- this.mValue = v;
84
- const dataItems = this.items;
85
-
86
- if (!dataItems) {
87
- return;
88
- }
89
-
90
- const sItems = this.selectedItems;
91
-
92
- if (v === undefined || v === null) {
93
- AtomBinder.clear(sItems);
94
- return;
95
- }
96
-
97
- if (this.allowMultipleSelection && this.valueSeparator) {
98
- if (typeof v !== "string") {
99
- v = "" + v;
100
- }
101
-
102
- v = v.split(this.valueSeparator);
103
- } else {
104
- v = [v];
105
- }
106
-
107
- sItems.length = 0;
108
- const vp = this.valuePath;
109
-
110
- for (const item of v) {
111
- const dataItem = dataItems.find(i => i[vp] == v);
112
-
113
- if (dataItem) {
114
- sItems.push(dataItem);
115
- }
116
- }
117
-
118
- AtomBinder.refreshItems(sItems);
119
- }
120
-
121
- get items() {
122
- return this.mItems;
123
- }
124
-
125
- set items(v) {
126
- if (this.mItemsDisposable) {
127
- this.mItemsDisposable.dispose();
128
- this.mItemsDisposable = null;
129
- }
130
-
131
- this.mItems = v;
132
-
133
- if (v != null) {
134
- this.mItemsDisposable = this.registerDisposable(AtomBinder.add_CollectionChanged(v, (target, key, index, item) => {
135
- this.onCollectionChangedInternal(key, index, item);
136
- }));
137
- }
138
-
139
- AtomBinder.refreshValue(this, "items");
140
- }
141
-
142
- get selectedItem() {
143
- if (this.selectedItems.length > 0) {
144
- return this.selectedItems[0];
145
- }
146
-
147
- return null;
148
- }
149
-
150
- set selectedItem(value) {
151
- if (value !== undefined && value !== null) {
152
- this.mSelectedItems.length = 1;
153
- this.mSelectedItems[0] = value;
154
- } else {
155
- this.mSelectedItems.length = 0;
156
- }
157
-
158
- AtomBinder.refreshItems(this.mSelectedItems);
159
- }
160
-
161
- get selectedItems() {
162
- return this.mSelectedItems || (this.selectedItems = []);
163
- }
164
-
165
- set selectedItems(v) {
166
- if (this.mSelectedItemsWatcher) {
167
- this.mSelectedItemsWatcher.dispose();
168
- this.mSelectedItemsWatcher = null;
169
- }
170
-
171
- this.mSelectedItems = v;
172
-
173
- if (v) {
174
- this.mSelectedItemsWatcher = this.registerDisposable(AtomBinder.add_CollectionChanged(v, (t, k, i, item) => {
175
- this.onSelectedItemsChanged(k, i, item);
176
- }));
177
- }
178
- }
179
-
180
- get selectedIndex() {
181
- if (!this.mItems) {
182
- return -1;
183
- }
184
-
185
- const item = this.selectedItem;
186
- return this.mItems.indexOf(item);
187
- }
188
-
189
- set selectedIndex(n) {
190
- if (!this.mItems) {
191
- return;
192
- }
193
-
194
- if (n <= -1 || n >= this.mItems.length) {
195
- this.selectedItem = null;
196
- return;
197
- }
198
-
199
- this.selectedItem = this.mItems[n];
200
- }
201
-
202
- hasProperty(name) {
203
- if (/^(items|itemsPresenter|value|valuePath|valueSeparator|label|labelPath|selectedItems|selectedItem|selectedIndex|uiVirtualize|viewModel|localViewModel|data)$/.test(name)) {
204
- return true;
205
- }
206
-
207
- return super.hasProperty(name);
208
- }
209
-
210
- dispose(e) {
211
- this.items = null;
212
- this.selectedItems = null;
213
- super.dispose(e);
214
- }
215
-
216
- onPropertyChanged(name) {
217
- switch (name) {
218
- case "itemsPresenter":
219
- case "itemTemplate":
220
- case "labelPath":
221
- case "valuePath":
222
- case "items":
223
- case "filter":
224
- case "sort":
225
- if (this.mItems) {
226
- this.invalidateItems();
227
- }
228
-
229
- break;
230
- }
231
- }
232
-
233
- set selectAll(v) {
234
- if (v === undefined || v === null) {
235
- return;
236
- }
237
-
238
- this.mSelectedItems.length = 0;
239
- const items = this.mItems;
240
-
241
- if (v && items) {
242
- for (const itm of items) {
243
- this.mSelectedItems.push(itm);
244
- }
245
- }
246
-
247
- this.mSelectAll = true;
248
- AtomBinder.refreshItems(this.mSelectedItems);
249
- }
250
-
251
- resetVirtualContainer() {
252
- const ip = this.itemsPresenter;
253
-
254
- if (ip) {
255
- this.disposeChildren(ip);
256
- }
257
-
258
- this.mFirstChild = null;
259
- this.mLastChild = null;
260
- this.mScrollerSetup = false;
261
- this.mScopes = null;
262
- this.unbindEvent(this.mVirtualContainer, "scroll");
263
- }
264
-
265
- postVirtualCollectionChanged() {
266
- this.app.callLater(() => {
267
- this.onVirtualCollectionChanged();
268
- });
269
- }
270
-
271
- onVirtualCollectionChanged() {
272
- const ip = this.itemsPresenter;
273
- const items = this.items;
274
-
275
- if (!items.length) {
276
- this.resetVirtualContainer();
277
- return;
278
- }
279
-
280
- this.validateScroller();
281
- const fc = this.mFirstChild;
282
- const lc = this.mLastChild;
283
- const vc = this.mVirtualContainer;
284
- const vcHeight = AtomUI.innerHeight(vc);
285
- const vcScrollHeight = vc.scrollHeight;
286
-
287
- if (isNaN(vcHeight) || vcHeight <= 0 || vcScrollHeight <= 0) {
288
- setTimeout(() => {
289
- this.onVirtualCollectionChanged();
290
- }, 1000);
291
- return;
292
- }
293
-
294
- const vcWidth = AtomUI.innerWidth(vc);
295
- let avgHeight = this.mAvgHeight;
296
- let avgWidth = this.mAvgWidth;
297
- const itemsHeight = vc.scrollHeight - AtomUI.outerHeight(fc) - AtomUI.outerHeight(lc);
298
- const itemsWidth = AtomUI.innerWidth(ip);
299
- const element = this.element;
300
- let ce;
301
- let ae = new AtomEnumerator(items);
302
-
303
- if (this.mTraining) {
304
- if (vcHeight >= itemsHeight) {
305
- ce = lc.previousElementSibling;
306
-
307
- if (ce !== fc) {
308
- const data = ce.atomControl.data;
309
-
310
- while (ae.next()) {
311
- if (ae.current === data) {
312
- break;
313
- }
314
- }
315
- }
316
-
317
- if (ae.next()) {
318
- const data = ae.current;
319
- const elementChild = this.createChild(null, data);
320
- ip.insertBefore(elementChild.element, lc);
321
- this.postVirtualCollectionChanged();
322
- }
323
- } else {
324
- let totalVisibleItems = 0;
325
- ce = fc.nextElementSibling;
326
- let allHeight = 0;
327
- let allWidth = 0;
328
-
329
- while (ce !== lc) {
330
- totalVisibleItems++;
331
- allHeight += AtomUI.outerHeight(ce);
332
- allWidth += AtomUI.outerWidth(ce);
333
- ce = ce.nextElementSibling;
334
- }
335
-
336
- avgHeight = allHeight / totalVisibleItems;
337
- avgWidth = allWidth / totalVisibleItems;
338
- totalVisibleItems--;
339
- this.mAvgHeight = avgHeight;
340
- this.mAvgWidth = avgWidth;
341
- const columns = Math.floor(vcWidth / avgWidth);
342
- const allRows = Math.ceil(items.length / columns);
343
- const visibleRows = Math.ceil(totalVisibleItems / columns);
344
- console.log({
345
- avgWidth,
346
- avgHeight,
347
- totalVisibleItems,
348
- allRows,
349
- columns
350
- });
351
- this.mAllRows = allRows;
352
- this.mColumns = columns;
353
- this.mVisibleRows = visibleRows;
354
- this.mVisibleHeight = visibleRows * avgHeight;
355
- lc.style.height = (allRows - visibleRows + 1) * avgHeight + "px";
356
- this.mTraining = false;
357
- this.mReady = true;
358
- this.postVirtualCollectionChanged();
359
- }
360
-
361
- return;
362
- }
363
-
364
- const self = this;
365
- this.lastScrollTop = vc.scrollTop;
366
-
367
- if (this.mIsChanging) {
368
- return;
369
- }
370
-
371
- this.mIsChanging = true;
372
- const block = Math.floor(this.mVisibleHeight / avgHeight);
373
- const itemsInBlock = this.mVisibleRows * this.mColumns;
374
- const index = Math.floor(vc.scrollTop / this.mVisibleHeight);
375
- const itemIndex = index * itemsInBlock;
376
-
377
- if (itemIndex >= items.length) {
378
- this.mIsChanging = false;
379
- return;
380
- }
381
-
382
- const lastIndex = Math.min((Math.max(index, 0) + 3) * itemsInBlock - 1, items.length - 1);
383
- const firstIndex = Math.max(0, index * itemsInBlock);
384
- ce = fc.nextElementSibling;
385
- const firstItem = fc.nextElementSibling;
386
- const lastItem = lc.previousElementSibling;
387
-
388
- if (firstItem !== lastItem) {
389
- const firstVisibleIndex = items.indexOf(firstItem.atomControl.data);
390
- const lastVisibleIndex = items.indexOf(lastItem.atomControl.data);
391
- console.log({
392
- firstVisibleIndex,
393
- firstIndex,
394
- lastVisibleIndex,
395
- lastIndex
396
- });
397
-
398
- if (firstIndex >= firstVisibleIndex && lastIndex <= lastVisibleIndex) {
399
- console.log("All items are visible...");
400
- this.mIsChanging = false;
401
- return;
402
- }
403
- }
404
-
405
- const remove = [];
406
- const cache = {};
407
-
408
- while (ce !== lc) {
409
- const c = ce;
410
- ce = ce.nextElementSibling;
411
- const s = items.indexOf(c.atomControl.data);
412
- cache[s] = c;
413
- remove.push(c);
414
- }
415
-
416
- this.app.dispatcher.pause();
417
- ae = new AtomEnumerator(items);
418
-
419
- for (let i = 0; i < firstIndex; i++) {
420
- ae.next();
421
- }
422
-
423
- let after = fc;
424
- let last = null;
425
- const add = [];
426
-
427
- for (let i = firstIndex; i <= lastIndex; i++) {
428
- if (!ae.next()) {
429
- break;
430
- }
431
-
432
- const index2 = ae.currentIndex;
433
- const data = ae.current;
434
- let elementChild = cache[index2];
435
-
436
- if (elementChild && element.atomControl.data === data) {
437
- cache[index2] = null;
438
- } else {
439
- elementChild = this.createChild(null, data).element;
440
- }
441
-
442
- elementChild.before = after;
443
- add.push(elementChild);
444
- after = elementChild;
445
- last = index2;
446
- }
447
-
448
- const h = (this.mAllRows - block * 3) * avgHeight - index * this.mVisibleHeight;
449
- console.log("last child height = " + h);
450
- this.app.callLater(() => {
451
- const oldHeight = AtomUI.outerHeight(fc);
452
- const newHeight = index * this.mVisibleHeight;
453
- const diff = newHeight - oldHeight;
454
- const oldScrollTop = vc.scrollTop;
455
- const a = new AtomEnumerator(add);
456
-
457
- while (a.next()) {
458
- const ec = a.current;
459
- ip.insertBefore(ec, ec.before.nextElementSibling);
460
- ec.before = null;
461
- }
462
-
463
- fc.style.height = newHeight + "px";
464
-
465
- for (const iterator of remove) {
466
- if (!iterator.before) {
467
- iterator.atomControl.dispose();
468
- }
469
-
470
- iterator.remove();
471
- }
472
-
473
- lc.style.height = h + "px";
474
- console.log(`Old: ${oldScrollTop} Diff: ${diff} Old Height: ${oldHeight} Height: ${newHeight}`);
475
- this.mIsChanging = false;
476
- });
477
- this.app.dispatcher.start();
478
- AtomBinder.refreshValue(this, "childAtomControls");
479
- }
480
-
481
- isSelected(item) {
482
- let selectedItem = null;
483
-
484
- for (const iterator of this.mSelectedItems) {
485
- selectedItem = iterator;
486
-
487
- if (selectedItem === item) {
488
- return true;
489
- }
490
- }
491
-
492
- return false;
493
- }
494
-
495
- bringIntoView(data) {
496
- this.app.callLater(() => {
497
- for (let item of ChildEnumerator.enumerate(this.itemsPresenter || this.element)) {
498
- const dataItem = item.atomControl ? item.atomControl.data : item;
499
-
500
- if (dataItem === data) {
501
- item.scrollIntoView();
502
- return;
503
- }
504
- }
505
- });
506
- }
507
-
508
- bringSelectionIntoView() {
509
- if (this.uiVirtualize) {
510
- const index = this.selectedIndex;
511
-
512
- if (!this.mReady) {
513
- setTimeout(() => {
514
- this.bringSelectionIntoView();
515
- }, 1000);
516
- return;
517
- }
518
-
519
- const avgHeight = this.mAvgHeight;
520
- const vcHeight = AtomUI.innerHeight(this.mVirtualContainer);
521
- const block = Math.ceil(vcHeight / avgHeight);
522
- const itemsInBlock = block * this.mColumns;
523
- const scrollTop = Math.floor(index / itemsInBlock);
524
- AtomUI.scrollTop(this.mVirtualContainer, scrollTop * vcHeight);
525
- return;
526
- }
527
-
528
- for (let item of ChildEnumerator.enumerate(this.itemsPresenter || this.element)) {
529
- const dataItem = item.atomControl ? item.atomControl.data : item;
530
-
531
- if (this.isSelected(dataItem)) {
532
- setTimeout(() => {
533
- item.scrollIntoView();
534
- }, 1000);
535
- return;
536
- }
537
- }
538
- }
539
-
540
- updateSelectionBindings() {
541
- this.version = this.version + 1;
542
-
543
- if (this.mSelectedItems && this.mSelectedItems.length) {
544
- this.mValue = undefined;
545
- }
546
-
547
- AtomBinder.refreshValue(this, "value");
548
- AtomBinder.refreshValue(this, "selectedItem");
549
- AtomBinder.refreshValue(this, "selectedItems");
550
- AtomBinder.refreshValue(this, "selectedIndex");
551
-
552
- if (!this.mSelectedItems.length) {
553
- if (this.mSelectAll === true) {
554
- this.mSelectAll = false;
555
- AtomBinder.refreshValue(this, "selectAll");
556
- }
557
- }
558
- }
559
-
560
- onSelectedItemsChanged(type, index, item) {
561
- if (!this.mOnUIChanged) {
562
- if (this.autoScrollToSelection) {
563
- this.bringSelectionIntoView();
564
- }
565
- }
566
-
567
- this.updateSelectionBindings();
568
- }
569
-
570
- hasItems() {
571
- return this.mItems !== undefined && this.mItems !== null;
572
- }
573
-
574
- invalidateItems() {
575
- if (this.pendingInits || this.isUpdating) {
576
- setTimeout(() => {
577
- this.invalidateItems();
578
- }, 5);
579
- return;
580
- }
581
-
582
- if (this.itemsInvalidated) {
583
- clearTimeout(this.itemsInvalidated);
584
- this.itemsInvalidated = 0;
585
- }
586
-
587
- this.itemsInvalidated = setTimeout(() => {
588
- this.itemsInvalidated = 0;
589
- this.onCollectionChangedInternal("refresh", -1, null);
590
- }, 5);
591
- }
592
-
593
- onCollectionChanged(key, index, item) {
594
- if (!this.mItems) {
595
- return;
596
- }
597
-
598
- if (!this.itemTemplate) {
599
- return;
600
- }
601
-
602
- if (!this.itemsPresenter) {
603
- this.itemsPresenter = this.element;
604
- }
605
-
606
- this.version = this.version + 1;
607
-
608
- if (/reset|refresh/i.test(key)) {
609
- this.resetVirtualContainer();
610
- }
611
-
612
- if (/remove/gi.test(key)) {
613
- const ip = this.itemsPresenter || this.element;
614
-
615
- for (let ce of ChildEnumerator.enumerate(ip)) {
616
- const c = ce;
617
-
618
- if (c.atomControl && c.atomControl.data === item) {
619
- c.atomControl.dispose();
620
- ce.remove();
621
- break;
622
- }
623
- }
624
-
625
- return;
626
- }
627
-
628
- if (this.uiVirtualize) {
629
- this.onVirtualCollectionChanged();
630
- return;
631
- }
632
-
633
- const parentScope = undefined;
634
- let items = this.mFilter ? this.mItems.filter(this.mFilter) : this.mItems;
635
- let s = this.sort;
636
-
637
- if (s) {
638
- if (typeof s === "string") {
639
- const sp = s;
640
-
641
- s = (l, r) => {
642
- const lv = (l[sp] || "").toString();
643
- const rv = (r[sp] || "").toString();
644
- return lv.toLowerCase().localeCompare(rv.toLowerCase());
645
- };
646
- }
647
-
648
- items = items.sort(s);
649
- }
650
-
651
- if (/add/gi.test(key)) {
652
- const lastItem = items[index];
653
- let last = this.itemsPresenter.children.item(index);
654
- const df2 = document.createDocumentFragment();
655
- this.createChild(df2, lastItem);
656
-
657
- if (last) {
658
- this.itemsPresenter.insertBefore(df2, last);
659
- } else {
660
- this.itemsPresenter.appendChild(df2);
661
- }
662
-
663
- return;
664
- }
665
-
666
- const element = this.itemsPresenter;
667
- this.disposeChildren(this.itemsPresenter);
668
- const added = [];
669
- const ip = this.itemsPresenter || this.element;
670
-
671
- for (const mItem of items) {
672
- const data = mItem;
673
- const ac = this.createChild(null, data);
674
- ip.appendChild(ac.element);
675
- }
676
- }
677
-
678
- preCreate() {
679
- this.mAllowSelectFirst = false;
680
- this.allowMultipleSelection = false;
681
- this.valuePath = "value";
682
- this.labelPath = "label";
683
- this.version = 1;
684
- this.autoScrollToSelection = false;
685
- this.sort = null;
686
- this.valueSeparator = ", ";
687
- this.uiVirtualize = false;
688
- this.mSelectAll = false;
689
- this.mItems = null;
690
- this.selectedItems = [];
691
- this.itemTemplate = AtomItemsControlItemTemplate;
692
- super.preCreate();
693
- }
694
-
695
- onCollectionChangedInternal(key, index, item) {
696
- const value = this.value;
697
-
698
- try {
699
- this.isUpdating = true;
700
- this.onCollectionChanged(key, index, item);
701
-
702
- if (value) {
703
- if (!(value || this.mAllowSelectFirst)) {
704
- AtomBinder.clear(this.mSelectedItems);
705
- }
706
- }
707
-
708
- if (value != null) {
709
- this.value = value;
710
-
711
- if (this.selectedIndex !== -1) {
712
- return;
713
- } else {
714
- this.mValue = undefined;
715
- }
716
- }
717
- } finally {
718
- this.app.callLater(() => {
719
- this.isUpdating = false;
720
- });
721
- }
722
- }
723
-
724
- set allowSelectFirst(b) {
725
- b = b ? b !== "false" : b;
726
- this.mAllowSelectFirst = b;
727
- }
728
-
729
- set filter(f) {
730
- if (f === this.mFilter) {
731
- return;
732
- }
733
-
734
- this.mFilter = f;
735
- AtomBinder.refreshValue(this, "filter");
736
- }
737
-
738
- onScroll() {
739
- if (this.scrollTimeout) {
740
- clearTimeout(this.scrollTimeout);
741
- }
742
-
743
- this.scrollTimeout = setTimeout(() => {
744
- this.scrollTimeout = 0;
745
- this.onVirtualCollectionChanged();
746
- }, 10);
747
- }
748
-
749
- toggleSelection(data) {
750
- this.mOnUIChanged = true;
751
- this.mValue = undefined;
752
-
753
- if (this.allowMultipleSelection) {
754
- if (this.mSelectedItems.indexOf(data) !== -1) {
755
- AtomBinder.removeItem(this.mSelectedItems, data);
756
- } else {
757
- AtomBinder.addItem(this.mSelectedItems, data);
758
- }
759
- } else {
760
- this.mSelectedItems.length = 1;
761
- this.mSelectedItems[0] = data;
762
- AtomBinder.refreshItems(this.mSelectedItems);
763
- }
764
-
765
- this.mOnUIChanged = false;
766
- }
767
-
768
- validateScroller() {
769
- if (this.mScrollerSetup) {
770
- return;
771
- }
772
-
773
- const ip = this.itemsPresenter;
774
- const e = this.element;
775
- let vc = this.mVirtualContainer;
776
-
777
- if (!vc) {
778
- if (ip === e && !/table/i.test(e.nodeName)) {
779
- throw new Error("virtualContainer presenter not found," + "you must put itemsPresenter inside a virtualContainer in order for Virtualization to work");
780
- } else {
781
- vc = this.mVirtualContainer = this.element;
782
- }
783
- }
784
-
785
- vc.style.overflow = "auto";
786
- this.bindEvent(vc, "scroll", () => {
787
- this.onScroll();
788
- });
789
- ip.style.overflow = "hidden";
790
- const isTable = /tbody/i.test(ip.nodeName);
791
- let fc;
792
- let lc;
793
-
794
- if (isTable) {
795
- fc = document.createElement("TR");
796
- lc = document.createElement("TR");
797
- } else {
798
- fc = document.createElement("DIV");
799
- lc = document.createElement("DIV");
800
- }
801
-
802
- fc.classList.add("sticky");
803
- fc.classList.add("first-child");
804
- lc.classList.add("sticky");
805
- lc.classList.add("last-child");
806
- fc.style.position = "relative";
807
- fc.style.height = "0";
808
- fc.style.width = "100%";
809
- fc.style.clear = "both";
810
- lc.style.position = "relative";
811
- lc.style.height = "0";
812
- lc.style.width = "100%";
813
- lc.style.clear = "both";
814
- this.mFirstChild = fc;
815
- this.mLastChild = lc;
816
- ip.appendChild(fc);
817
- ip.appendChild(lc);
818
- this.mTraining = true;
819
- this.mScrollerSetup = true;
820
- }
821
-
822
- createChild(df, data) {
823
- const t = this.itemTemplate;
824
- const ac = this.app.resolve(t, true);
825
- const e = ac.element;
826
- e._logicalParent = this.element;
827
- e._templateParent = this;
828
-
829
- if (df) {
830
- df.appendChild(ac.element);
831
- }
832
-
833
- ac.data = data;
834
- this.element.dispatchEvent(new CustomEvent("item-created", {
835
- bubbles: false,
836
- cancelable: false,
837
- detail: data
838
- }));
839
- return ac;
840
- }
841
-
842
- disposeChildren(e) {
843
- for (let iterator of ChildEnumerator.enumerate(e)) {
844
- const ac = iterator.atomControl;
845
-
846
- if (ac) {
847
- ac.dispose();
848
- }
849
- }
850
-
851
- e.innerHTML = "";
852
- }
853
-
854
- });
855
-
856
- AtomItemsControl.itemTemplate = XNode.prepare("itemTemplate", true, true);
857
- AtomItemsControlItemTemplate = class AtomItemsControlItemTemplate extends AtomControl {
858
- create() {
859
- this.runAfterInit(() => {
860
- const tp = this.element._templateParent;
861
- this.element.textContent = this.data[tp.valuePath];
862
- });
863
- }
864
-
865
- };
866
- }
867
- };
868
- });
869
- //# sourceMappingURL=AtomItemsControl.sys.js.map