neo.mjs 6.17.2 → 6.18.1

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 (323) hide show
  1. package/apps/ServiceWorker.mjs +3 -5
  2. package/apps/colors/README.md +8 -0
  3. package/apps/colors/app.mjs +6 -0
  4. package/apps/colors/childapps/widget/app.mjs +7 -0
  5. package/apps/colors/childapps/widget/index.html +11 -0
  6. package/apps/colors/childapps/widget/neo-config.json +10 -0
  7. package/apps/colors/childapps/widget/view/Viewport.mjs +19 -0
  8. package/apps/colors/index.html +11 -0
  9. package/apps/colors/model/Color.mjs +43 -0
  10. package/apps/colors/neo-config.json +10 -0
  11. package/apps/colors/remotes-api.json +13 -0
  12. package/apps/colors/store/Colors.mjs +24 -0
  13. package/apps/colors/view/BarChartComponent.mjs +64 -0
  14. package/apps/colors/view/HeaderToolbar.mjs +95 -0
  15. package/apps/colors/view/PieChartComponent.mjs +58 -0
  16. package/apps/colors/view/TableContainer.mjs +91 -0
  17. package/apps/colors/view/Viewport.mjs +57 -0
  18. package/apps/colors/view/ViewportController.mjs +277 -0
  19. package/apps/colors/view/ViewportModel.mjs +53 -0
  20. package/apps/portal/Util.mjs +11 -0
  21. package/apps/portal/childapps/preview/neo-config.json +2 -2
  22. package/apps/portal/neo-config.json +2 -1
  23. package/apps/portal/remotes-api.json +13 -0
  24. package/apps/portal/view/HeaderToolbar.mjs +1 -1
  25. package/apps/portal/view/ViewportController.mjs +89 -1
  26. package/apps/portal/view/home/MainContainer.mjs +34 -6
  27. package/apps/portal/view/home/parts/AfterMath.mjs +1 -1
  28. package/apps/portal/view/home/parts/Colors.mjs +98 -0
  29. package/apps/portal/view/home/parts/Helix.mjs +114 -0
  30. package/apps/portal/view/home/parts/HelloWorld.mjs +6 -3
  31. package/apps/portal/view/home/parts/How.mjs +66 -0
  32. package/apps/portal/view/home/parts/MainNeo.mjs +4 -3
  33. package/apps/portal/view/learn/LivePreview.mjs +56 -15
  34. package/apps/portal/view/learn/MainContainerController.mjs +10 -90
  35. package/apps/realworld/api/Article.mjs +1 -3
  36. package/apps/realworld/api/Favorite.mjs +1 -3
  37. package/apps/realworld/api/Profile.mjs +1 -3
  38. package/apps/realworld/api/Tag.mjs +1 -3
  39. package/apps/realworld/api/User.mjs +1 -3
  40. package/apps/realworld2/api/Article.mjs +1 -3
  41. package/apps/realworld2/api/Favorite.mjs +1 -3
  42. package/apps/realworld2/api/Profile.mjs +1 -3
  43. package/apps/realworld2/api/Tag.mjs +1 -3
  44. package/apps/realworld2/api/User.mjs +1 -3
  45. package/apps/realworld2/view/article/HelixContainer.mjs +5 -5
  46. package/buildScripts/webpack/json/myApps.template.json +1 -0
  47. package/docs/app/view/MainContainer.mjs +5 -0
  48. package/docs/app/view/classdetails/MembersList.mjs +1 -1
  49. package/examples/ServiceWorker.mjs +3 -5
  50. package/examples/component/helix/Viewport.mjs +309 -0
  51. package/examples/component/helix/ViewportController.mjs +122 -0
  52. package/examples/component/helix/app.mjs +2 -2
  53. package/examples/component/helix/neo-config.json +0 -1
  54. package/examples/component/multiWindowHelix/Viewport.mjs +11 -3
  55. package/examples/component/multiWindowHelix/ViewportController.mjs +21 -9
  56. package/examples/component/multiWindowHelix/neo-config.json +0 -1
  57. package/examples/fieldWithPrefix/MainContainer.mjs +1 -6
  58. package/examples/list/animate/MainContainerController.mjs +1 -1
  59. package/examples/worker/task/MyTasks.mjs +1 -3
  60. package/package.json +2 -2
  61. package/resources/data/deck/learnneo/pages/Events.md +15 -9
  62. package/resources/data/deck/learnneo/pages/GuideEvents.md +254 -0
  63. package/resources/data/deck/learnneo/pages/WhyNeo-Speed.md +1 -1
  64. package/resources/images/logo/neo_logo_primary.svg +6 -0
  65. package/resources/images/logo/neo_logo_text_primary.svg +5 -0
  66. package/resources/scss/src/apps/colors/BarChartComponent.scss +3 -0
  67. package/resources/scss/src/apps/colors/HeaderToolbar.scss +11 -0
  68. package/resources/scss/src/apps/colors/PieChartComponent.scss +3 -0
  69. package/resources/scss/src/apps/colors/TableContainer.scss +64 -0
  70. package/resources/scss/src/apps/colors/Viewport.scss +9 -0
  71. package/resources/scss/src/apps/portal/HeaderToolbar.scss +142 -124
  72. package/resources/scss/src/apps/portal/home/MainContainer.scss +9 -22
  73. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +22 -0
  74. package/resources/scss/src/apps/portal/home/preview/PageCodeContainer.scss +1 -1
  75. package/resources/scss/src/examples/component/multiWindowHelix/Viewport.scss +3 -0
  76. package/resources/scss/src/form/field/CheckBox.scss +1 -0
  77. package/resources/scss/src/tab/header/Button.scss +2 -1
  78. package/resources/scss/theme-dark/Global.scss +8 -0
  79. package/resources/scss/theme-dark/button/Base.scss +1 -1
  80. package/resources/scss/theme-dark/tab/header/Button.scss +1 -0
  81. package/resources/scss/theme-light/Global.scss +8 -0
  82. package/resources/scss/theme-light/button/Base.scss +1 -1
  83. package/resources/scss/theme-light/tab/header/Button.scss +1 -0
  84. package/resources/scss/theme-neo-light/Global.scss +53 -53
  85. package/resources/scss/theme-neo-light/button/Base.scss +3 -4
  86. package/resources/scss/theme-neo-light/tab/header/Button.scss +6 -8
  87. package/src/DefaultConfig.mjs +2 -2
  88. package/src/Fetch.mjs +1 -3
  89. package/src/Main.mjs +13 -11
  90. package/src/MicroLoader.mjs +2 -2
  91. package/src/Neo.mjs +27 -26
  92. package/src/Xhr.mjs +1 -3
  93. package/src/button/Base.mjs +6 -4
  94. package/src/button/Split.mjs +10 -9
  95. package/src/calendar/view/EditEventContainer.mjs +13 -12
  96. package/src/calendar/view/MainContainer.mjs +40 -40
  97. package/src/calendar/view/MainContainerModel.mjs +5 -5
  98. package/src/calendar/view/SettingsContainer.mjs +11 -11
  99. package/src/calendar/view/YearComponent.mjs +73 -75
  100. package/src/calendar/view/calendars/ColorsList.mjs +2 -2
  101. package/src/calendar/view/calendars/EditContainer.mjs +2 -2
  102. package/src/calendar/view/calendars/List.mjs +12 -13
  103. package/src/calendar/view/month/Component.mjs +72 -73
  104. package/src/calendar/view/settings/GeneralContainer.mjs +5 -5
  105. package/src/calendar/view/settings/MonthContainer.mjs +5 -5
  106. package/src/calendar/view/settings/WeekContainer.mjs +6 -6
  107. package/src/calendar/view/settings/YearContainer.mjs +4 -4
  108. package/src/calendar/view/week/Component.mjs +47 -57
  109. package/src/calendar/view/week/EventDragZone.mjs +43 -50
  110. package/src/calendar/view/week/TimeAxisComponent.mjs +21 -21
  111. package/src/calendar/view/week/plugin/DragDrop.mjs +53 -45
  112. package/src/calendar/view/week/plugin/EventResizable.mjs +8 -3
  113. package/src/collection/Base.mjs +15 -22
  114. package/src/collection/Filter.mjs +4 -9
  115. package/src/collection/Sorter.mjs +6 -7
  116. package/src/component/Base.mjs +73 -41
  117. package/src/component/Canvas.mjs +9 -9
  118. package/src/component/Carousel.mjs +31 -33
  119. package/src/component/Chip.mjs +9 -9
  120. package/src/component/Circle.mjs +84 -91
  121. package/src/component/Clock.mjs +8 -8
  122. package/src/component/DateSelector.mjs +14 -15
  123. package/src/component/Gallery.mjs +82 -80
  124. package/src/component/Helix.mjs +131 -126
  125. package/src/component/Iframe.mjs +1 -1
  126. package/src/component/Label.mjs +1 -1
  127. package/src/component/Legend.mjs +3 -3
  128. package/src/component/Process.mjs +39 -37
  129. package/src/component/Splitter.mjs +9 -11
  130. package/src/component/StatusBadge.mjs +2 -3
  131. package/src/component/Timer.mjs +62 -68
  132. package/src/component/Toast.mjs +11 -11
  133. package/src/component/Video.mjs +7 -8
  134. package/src/component/mwc/Button.mjs +10 -10
  135. package/src/component/mwc/TextField.mjs +17 -17
  136. package/src/component/wrapper/AmChart.mjs +5 -5
  137. package/src/component/wrapper/CesiumJS.mjs +11 -17
  138. package/src/component/wrapper/GoogleMaps.mjs +58 -35
  139. package/src/component/wrapper/MapboxGL.mjs +112 -79
  140. package/src/container/Accordion.mjs +18 -20
  141. package/src/container/AccordionItem.mjs +12 -11
  142. package/src/container/Base.mjs +24 -23
  143. package/src/container/Panel.mjs +9 -9
  144. package/src/controller/Base.mjs +12 -14
  145. package/src/controller/Component.mjs +60 -66
  146. package/src/core/Base.mjs +5 -8
  147. package/src/core/IdGenerator.mjs +1 -3
  148. package/src/core/Observable.mjs +40 -24
  149. package/src/core/Util.mjs +5 -5
  150. package/src/data/Model.mjs +3 -3
  151. package/src/data/RecordFactory.mjs +3 -6
  152. package/src/data/Store.mjs +34 -34
  153. package/src/data/connection/Fetch.mjs +3 -3
  154. package/src/data/connection/WebSocket.mjs +21 -25
  155. package/src/data/connection/Xhr.mjs +31 -28
  156. package/src/date/DayViewComponent.mjs +1 -1
  157. package/src/date/SelectorContainer.mjs +2 -2
  158. package/src/dialog/Base.mjs +27 -25
  159. package/src/dialog/header/Toolbar.mjs +5 -4
  160. package/src/draggable/DragProxyComponent.mjs +7 -4
  161. package/src/draggable/DragZone.mjs +30 -30
  162. package/src/draggable/DropZone.mjs +7 -7
  163. package/src/draggable/list/DragZone.mjs +18 -18
  164. package/src/draggable/tab/header/toolbar/SortZone.mjs +7 -7
  165. package/src/draggable/toolbar/DragZone.mjs +15 -15
  166. package/src/draggable/toolbar/SortZone.mjs +30 -31
  167. package/src/draggable/tree/DragZone.mjs +9 -9
  168. package/src/filter/BooleanContainer.mjs +3 -3
  169. package/src/filter/NumberContainer.mjs +5 -5
  170. package/src/filter/ToggleOperatorsButton.mjs +5 -5
  171. package/src/form/Fieldset.mjs +26 -26
  172. package/src/form/field/Base.mjs +1 -1
  173. package/src/form/field/CheckBox.mjs +15 -16
  174. package/src/form/field/Color.mjs +13 -15
  175. package/src/form/field/ComboBox.mjs +16 -24
  176. package/src/form/field/Country.mjs +1 -1
  177. package/src/form/field/Date.mjs +3 -4
  178. package/src/form/field/Display.mjs +1 -1
  179. package/src/form/field/Email.mjs +2 -2
  180. package/src/form/field/Number.mjs +51 -56
  181. package/src/form/field/Picker.mjs +2 -2
  182. package/src/form/field/Radio.mjs +1 -1
  183. package/src/form/field/Range.mjs +7 -6
  184. package/src/form/field/Text.mjs +29 -36
  185. package/src/form/field/TextArea.mjs +9 -9
  186. package/src/form/field/Time.mjs +30 -30
  187. package/src/form/field/trigger/Base.mjs +19 -13
  188. package/src/form/field/trigger/Clear.mjs +13 -13
  189. package/src/form/field/trigger/CopyToClipboard.mjs +7 -7
  190. package/src/form/field/trigger/Picker.mjs +2 -2
  191. package/src/form/field/trigger/SpinDown.mjs +1 -1
  192. package/src/form/field/trigger/SpinUp.mjs +1 -1
  193. package/src/form/field/trigger/SpinUpDown.mjs +3 -3
  194. package/src/form/field/trigger/Time.mjs +3 -3
  195. package/src/grid/Container.mjs +33 -33
  196. package/src/grid/View.mjs +20 -22
  197. package/src/grid/header/Button.mjs +12 -12
  198. package/src/grid/header/Toolbar.mjs +4 -4
  199. package/src/layout/Base.mjs +5 -4
  200. package/src/layout/Card.mjs +15 -16
  201. package/src/layout/Fit.mjs +22 -8
  202. package/src/layout/Flexbox.mjs +30 -29
  203. package/src/layout/Form.mjs +15 -15
  204. package/src/layout/Grid.mjs +2 -2
  205. package/src/layout/HBox.mjs +3 -2
  206. package/src/layout/VBox.mjs +3 -2
  207. package/src/list/Base.mjs +45 -47
  208. package/src/list/Chip.mjs +4 -4
  209. package/src/list/Circle.mjs +3 -3
  210. package/src/list/Color.mjs +4 -4
  211. package/src/list/Component.mjs +10 -10
  212. package/src/list/plugin/Animate.mjs +18 -13
  213. package/src/main/DomAccess.mjs +92 -56
  214. package/src/main/DomEvents.mjs +38 -39
  215. package/src/main/addon/AmCharts.mjs +37 -37
  216. package/src/main/addon/AnalyticsByGoogle.mjs +4 -4
  217. package/src/main/addon/CesiumJS.mjs +8 -8
  218. package/src/main/addon/CloneNode.mjs +5 -5
  219. package/src/main/addon/Cookie.mjs +4 -4
  220. package/src/main/addon/DragDrop.mjs +35 -34
  221. package/src/main/addon/GoogleMaps.mjs +19 -19
  222. package/src/main/addon/IntersectionObserver.mjs +20 -1
  223. package/src/main/addon/LocalStorage.mjs +3 -3
  224. package/src/main/addon/MapboxGL.mjs +40 -41
  225. package/src/main/addon/MonacoEditor.mjs +5 -5
  226. package/src/main/addon/Mwc.mjs +6 -6
  227. package/src/main/addon/Navigator.mjs +35 -39
  228. package/src/main/addon/Popover.mjs +5 -6
  229. package/src/main/addon/PrefixField.mjs +1 -2
  230. package/src/main/addon/ServiceWorker.mjs +9 -9
  231. package/src/main/addon/Siesta.mjs +3 -2
  232. package/src/main/addon/Stylesheet.mjs +37 -37
  233. package/src/main/addon/WebComponent.mjs +2 -3
  234. package/src/main/addon/WindowPosition.mjs +18 -18
  235. package/src/main/draggable/sensor/Base.mjs +2 -2
  236. package/src/main/draggable/sensor/Mouse.mjs +15 -15
  237. package/src/main/draggable/sensor/Touch.mjs +24 -23
  238. package/src/main/mixin/DeltaUpdates.mjs +10 -12
  239. package/src/main/mixin/TouchDomEvents.mjs +6 -6
  240. package/src/manager/Base.mjs +4 -4
  241. package/src/manager/Component.mjs +41 -41
  242. package/src/manager/DomEvent.mjs +41 -44
  243. package/src/manager/Focus.mjs +14 -16
  244. package/src/manager/Instance.mjs +2 -4
  245. package/src/manager/Store.mjs +4 -8
  246. package/src/manager/Task.mjs +20 -22
  247. package/src/manager/Toast.mjs +14 -16
  248. package/src/manager/rpc/Api.mjs +1 -3
  249. package/src/manager/rpc/Message.mjs +16 -18
  250. package/src/menu/List.mjs +16 -16
  251. package/src/menu/Panel.mjs +4 -4
  252. package/src/model/Component.mjs +16 -14
  253. package/src/plugin/Base.mjs +2 -0
  254. package/src/plugin/Popover.mjs +1 -1
  255. package/src/plugin/PrefixField.mjs +35 -45
  256. package/src/plugin/Resizable.mjs +86 -101
  257. package/src/plugin/Responsive.mjs +1 -1
  258. package/src/remotes/Api.mjs +4 -6
  259. package/src/selection/CircleModel.mjs +12 -16
  260. package/src/selection/DateSelectorModel.mjs +21 -23
  261. package/src/selection/GalleryModel.mjs +49 -63
  262. package/src/selection/HelixModel.mjs +35 -41
  263. package/src/selection/ListModel.mjs +9 -14
  264. package/src/selection/Model.mjs +31 -31
  265. package/src/selection/TreeAccordionModel.mjs +74 -80
  266. package/src/selection/grid/CellColumnModel.mjs +10 -10
  267. package/src/selection/grid/CellColumnRowModel.mjs +10 -10
  268. package/src/selection/grid/CellModel.mjs +26 -28
  269. package/src/selection/grid/CellRowModel.mjs +24 -24
  270. package/src/selection/grid/ColumnModel.mjs +16 -20
  271. package/src/selection/grid/RowModel.mjs +27 -29
  272. package/src/selection/menu/ListModel.mjs +2 -2
  273. package/src/selection/table/CellColumnModel.mjs +12 -12
  274. package/src/selection/table/CellColumnRowModel.mjs +12 -12
  275. package/src/selection/table/CellModel.mjs +26 -29
  276. package/src/selection/table/CellRowModel.mjs +19 -19
  277. package/src/selection/table/ColumnModel.mjs +18 -22
  278. package/src/selection/table/RowModel.mjs +27 -29
  279. package/src/sitemap/Component.mjs +20 -20
  280. package/src/sitemap/Store.mjs +1 -1
  281. package/src/tab/Container.mjs +15 -15
  282. package/src/tab/Strip.mjs +1 -1
  283. package/src/tab/header/Toolbar.mjs +4 -4
  284. package/src/table/Container.mjs +8 -10
  285. package/src/table/View.mjs +29 -34
  286. package/src/table/header/Button.mjs +18 -18
  287. package/src/table/header/Toolbar.mjs +2 -2
  288. package/src/toolbar/Base.mjs +14 -14
  289. package/src/toolbar/Breadcrumb.mjs +11 -11
  290. package/src/toolbar/Paging.mjs +18 -18
  291. package/src/tooltip/Base.mjs +20 -22
  292. package/src/tree/Accordion.mjs +69 -75
  293. package/src/tree/List.mjs +22 -25
  294. package/src/util/Array.mjs +19 -18
  295. package/src/util/ClassSystem.mjs +9 -9
  296. package/src/util/Css.mjs +2 -2
  297. package/src/util/Date.mjs +9 -9
  298. package/src/util/Function.mjs +2 -2
  299. package/src/util/HashHistory.mjs +3 -5
  300. package/src/util/KeyNavigation.mjs +17 -17
  301. package/src/util/Logger.mjs +9 -9
  302. package/src/util/Matrix.mjs +19 -19
  303. package/src/util/String.mjs +9 -9
  304. package/src/util/Style.mjs +11 -11
  305. package/src/util/VDom.mjs +12 -14
  306. package/src/util/VNode.mjs +29 -29
  307. package/src/vdom/Helper.mjs +84 -93
  308. package/src/vdom/VNode.mjs +1 -1
  309. package/src/worker/App.mjs +19 -16
  310. package/src/worker/Base.mjs +14 -15
  311. package/src/worker/Canvas.mjs +1 -3
  312. package/src/worker/Data.mjs +4 -8
  313. package/src/worker/Manager.mjs +27 -32
  314. package/src/worker/Message.mjs +1 -1
  315. package/src/worker/ServiceBase.mjs +38 -42
  316. package/src/worker/Task.mjs +1 -3
  317. package/src/worker/VDom.mjs +2 -4
  318. package/src/worker/mixin/RemoteMethodAccess.mjs +5 -6
  319. package/apps/portal/view/home/parts/CoolStuff.mjs +0 -82
  320. package/examples/component/helix/MainContainer.mjs +0 -340
  321. /package/resources/images/{Neo_Logo_Blue.svg → logo/neo_logo_secondary.svg} +0 -0
  322. /package/resources/images/{Neo_Logo_Text.svg → logo/neo_logo_text_secondary.svg} +0 -0
  323. /package/resources/images/{Neo_Logo_White.svg → logo/neo_logo_white.svg} +0 -0
@@ -16,11 +16,20 @@ class DragDrop extends Base {
16
16
  * @protected
17
17
  */
18
18
  className: 'Neo.calendar.view.week.plugin.DragDrop',
19
+ /**
20
+ * @member {String} ntype='plugin-calendar-week-dragdrop'
21
+ * @protected
22
+ */
23
+ ntype: 'plugin-calendar-week-dragdrop',
19
24
  /**
20
25
  * @member {Boolean} isDragging=false
21
26
  * @protected
22
27
  */
23
- isDragging: false
28
+ isDragging: false,
29
+ /**
30
+ * @member {String} resizablePluginType='plugin-calendar-week-dragdrop'
31
+ */
32
+ resizablePluginType: 'calendar-week-eventresizable'
24
33
  }
25
34
 
26
35
  /**
@@ -31,10 +40,9 @@ class DragDrop extends Base {
31
40
 
32
41
  let me = this,
33
42
  columnOpts = {scope: me, delegate: '.neo-c-w-column'},
34
- eventOpts = {scope: me, delegate: '.neo-event'},
35
- owner = me.owner;
43
+ eventOpts = {scope: me, delegate: '.neo-event'};
36
44
 
37
- owner.addDomListeners([
45
+ me.owner.addDomListeners([
38
46
  {'drag:end' : me.onColumnDragEnd, ...columnOpts},
39
47
  {'drag:end' : me.onEventDragEnd, ...eventOpts},
40
48
  {'drag:move' : me.onColumnDragMove, ...columnOpts},
@@ -66,10 +74,9 @@ class DragDrop extends Base {
66
74
  * @returns {Neo.calendar.view.week.EventDragZone}
67
75
  */
68
76
  getEventDragZone(opts) {
69
- let me = this,
70
- owner = me.owner,
71
- eventDragZone = owner.eventDragZone,
72
- timeAxis = owner.timeAxis,
77
+ let me = this,
78
+ {appName, owner} = me,
79
+ {eventDragZone, timeAxis} = owner,
73
80
 
74
81
  config = {
75
82
  axisEndTime : timeAxis.getTime(owner.endTime),
@@ -83,7 +90,7 @@ class DragDrop extends Base {
83
90
  if (!eventDragZone) {
84
91
  owner.eventDragZone = eventDragZone = Neo.create({
85
92
  module : EventDragZone,
86
- appName : me.appName,
93
+ appName,
87
94
  owner,
88
95
  scrollContainerId: owner.getScrollContainer().id,
89
96
  ...config,
@@ -94,12 +101,12 @@ class DragDrop extends Base {
94
101
  willChange: 'height'
95
102
  }
96
103
  }
97
- });
104
+ })
98
105
  } else {
99
- eventDragZone.set(config);
106
+ eventDragZone.set(config)
100
107
  }
101
108
 
102
- return eventDragZone;
109
+ return eventDragZone
103
110
  }
104
111
 
105
112
  /**
@@ -107,11 +114,11 @@ class DragDrop extends Base {
107
114
  * @returns {Boolean}
108
115
  */
109
116
  isActiveCalendar() {
110
- let owner = this.owner,
111
- calendarStore = owner.calendarStore,
112
- calendarId = owner.data.activeCalendarId || calendarStore.getAt(0)[calendarStore.keyProperty];
117
+ let {owner} = this,
118
+ {calendarStore} = owner,
119
+ calendarId = owner.data.activeCalendarId || calendarStore.getAt(0)[calendarStore.keyProperty];
113
120
 
114
- return calendarStore.get(calendarId).active;
121
+ return calendarStore.get(calendarId).active
115
122
  }
116
123
 
117
124
  /**
@@ -119,7 +126,7 @@ class DragDrop extends Base {
119
126
  * @returns {Boolean}
120
127
  */
121
128
  isTopLevelColumn(path) {
122
- return path[0].cls.includes('neo-c-w-column');
129
+ return path[0].cls.includes('neo-c-w-column')
123
130
  }
124
131
 
125
132
  /**
@@ -127,16 +134,16 @@ class DragDrop extends Base {
127
134
  * @returns {Boolean}
128
135
  */
129
136
  isTopLevelEvent(eventData) {
130
- return eventData.path[0].cls.includes('neo-event');
137
+ return eventData.path[0].cls.includes('neo-event')
131
138
  }
132
139
 
133
140
  /**
134
141
  * @param {Object} data
135
142
  */
136
143
  onColumnDragEnd(data) {
137
- let me = this,
138
- owner = me.owner,
139
- record = me[newRecordSymbol];
144
+ let me = this,
145
+ {owner} = me,
146
+ record = me[newRecordSymbol];
140
147
 
141
148
  if (record && me.isTopLevelColumn(data.path)) {
142
149
  me.isDragging = false;
@@ -148,8 +155,8 @@ class DragDrop extends Base {
148
155
  style: {opacity: 1}
149
156
  }).then(() => {
150
157
  owner.eventDragZone.dragEnd();
151
- owner.getPlugin({flag:'resizable'}).onDragEnd(data);
152
- });
158
+ owner.getPlugin(me.resizablePluginType).onDragEnd(data)
159
+ })
153
160
  }
154
161
  }
155
162
 
@@ -160,7 +167,7 @@ class DragDrop extends Base {
160
167
  let me = this;
161
168
 
162
169
  if (me.isActiveCalendar() && me.isTopLevelColumn(data.path)) {
163
- me.owner.eventDragZone?.dragMove(data);
170
+ me.owner.eventDragZone?.dragMove(data)
164
171
  }
165
172
  }
166
173
 
@@ -171,9 +178,9 @@ class DragDrop extends Base {
171
178
  let me = this;
172
179
 
173
180
  if (me.isActiveCalendar() && me.isTopLevelColumn(data.targetPath)) {
174
- let owner = me.owner,
181
+ let {owner} = me,
175
182
  axisStartTime = owner.timeAxis.getTime(owner.startTime),
176
- calendarStore = owner.calendarStore,
183
+ {calendarStore} = owner,
177
184
  columnRect = data.path[0].rect,
178
185
  intervalSize = 15,
179
186
  intervals = (owner.timeAxis.getTime(owner.endTime) - axisStartTime) * 60 / intervalSize,
@@ -217,16 +224,16 @@ class DragDrop extends Base {
217
224
  proxyParentId : data.path[0].id
218
225
  });
219
226
 
220
- owner.getPlugin({flag:'resizable'}).onDragStart(data);
227
+ owner.getPlugin(me.resizablePluginType).onDragStart(data);
221
228
  eventDragZone.dragStart(data);
222
229
 
223
230
  setTimeout(() => {
224
231
  me.isDragging && Neo.applyDeltas(me.appName, {
225
232
  id : eventId,
226
233
  style: {opacity: 0}
227
- });
228
- }, 50);
229
- }, 50);
234
+ })
235
+ }, 50)
236
+ }, 50)
230
237
  }
231
238
  }
232
239
 
@@ -234,20 +241,21 @@ class DragDrop extends Base {
234
241
  * @param {Object} data
235
242
  */
236
243
  onEventDragEnd(data) {
237
- let me = this,
238
- owner = me.owner;
244
+ let me = this,
245
+ {owner} = me,
246
+ {eventDragZone} = owner;
239
247
 
240
248
  if (owner.enableDrag) {
241
- owner.eventDragZone.dragEnd();
249
+ eventDragZone.dragEnd();
242
250
 
243
251
  if (!me.isTopLevelEvent(data)) {
244
252
  data = me.adjustResizeEvent(data);
245
- owner.getPlugin({flag:'resizable'}).onDragEnd(data);
253
+ owner.getPlugin(me.resizablePluginType).onDragEnd(data)
246
254
  } else {
247
- owner.eventDragZone.removeBodyCursorCls();
255
+ eventDragZone.removeBodyCursorCls()
248
256
  }
249
257
 
250
- me.isDragging = false;
258
+ me.isDragging = false
251
259
  }
252
260
  }
253
261
 
@@ -255,15 +263,15 @@ class DragDrop extends Base {
255
263
  * @param {Object} data
256
264
  */
257
265
  onEventDragMove(data) {
258
- let me = this,
259
- owner = me.owner;
266
+ let me = this,
267
+ {owner} = me;
260
268
 
261
269
  if (owner.enableDrag) {
262
270
  if (!me.isTopLevelEvent(data)) {
263
- data = me.adjustResizeEvent(data);
271
+ data = me.adjustResizeEvent(data)
264
272
  }
265
273
 
266
- owner.eventDragZone.dragMove(data);
274
+ owner.eventDragZone.dragMove(data)
267
275
  }
268
276
  }
269
277
 
@@ -272,7 +280,7 @@ class DragDrop extends Base {
272
280
  */
273
281
  onEventDragStart(data) {
274
282
  let me = this,
275
- owner = me.owner,
283
+ {owner} = me,
276
284
  modelData = owner.data;
277
285
 
278
286
  if (owner.enableDrag) {
@@ -280,7 +288,7 @@ class DragDrop extends Base {
280
288
  dragElement, eventDragZone;
281
289
 
282
290
  if (!isTopLevelEvent) {
283
- data = me.adjustResizeEvent(data);
291
+ data = me.adjustResizeEvent(data)
284
292
  }
285
293
 
286
294
  me.isDragging = true;
@@ -295,12 +303,12 @@ class DragDrop extends Base {
295
303
  });
296
304
 
297
305
  if (isTopLevelEvent) {
298
- eventDragZone.addBodyCursorCls();
306
+ eventDragZone.addBodyCursorCls()
299
307
  } else {
300
- owner.getPlugin({flag:'resizable'}).onDragStart(data);
308
+ owner.getPlugin(me.resizablePluginType).onDragStart(data)
301
309
  }
302
310
 
303
- eventDragZone.dragStart(data);
311
+ eventDragZone.dragStart(data)
304
312
  }
305
313
  }
306
314
  }
@@ -10,7 +10,12 @@ class EventResizable extends Resizable {
10
10
  * @member {String} className='Neo.calendar.view.week.plugin.EventResizable'
11
11
  * @protected
12
12
  */
13
- className: 'Neo.calendar.view.week.plugin.EventResizable'
13
+ className: 'Neo.calendar.view.week.plugin.EventResizable',
14
+ /**
15
+ * @member {String} ntype='plugin-calendar-week-eventresizable'
16
+ * @protected
17
+ */
18
+ ntype: 'plugin-calendar-week-eventresizable'
14
19
  }
15
20
 
16
21
  /**
@@ -39,7 +44,7 @@ class EventResizable extends Resizable {
39
44
 
40
45
  me.isDragging = true;
41
46
  me.addBodyCursorCls();
42
- me.owner.eventDragZone[me.currentNodeName === 'top' ? 'keepEndDate' : 'keepStartDate'] = true;
47
+ me.owner.eventDragZone[me.currentNodeName === 'top' ? 'keepEndDate' : 'keepStartDate'] = true
43
48
  }
44
49
 
45
50
  /**
@@ -48,7 +53,7 @@ class EventResizable extends Resizable {
48
53
  */
49
54
  onMouseMove(data) {
50
55
  if (this.owner.data.events.enableDrag) {
51
- super.onMouseMove(data);
56
+ super.onMouseMove(data)
52
57
  }
53
58
  }
54
59
  }
@@ -162,10 +162,10 @@ class Base extends CoreBase {
162
162
  */
163
163
  afterSetItems(value, oldValue) {
164
164
  if (value) {
165
- let me = this,
166
- keyProperty = me.keyProperty,
167
- i = 0,
168
- len = value.length,
165
+ let me = this,
166
+ {keyProperty} = me,
167
+ i = 0,
168
+ len = value.length,
169
169
  item;
170
170
 
171
171
  for (; i < len; i++) {
@@ -322,16 +322,15 @@ class Base extends CoreBase {
322
322
  hasMatch = false;
323
323
  i = 0;
324
324
 
325
+ let {direction, property} = key;
326
+
325
327
  for (; i < len; i++) {
326
328
  if (oldValue[i] === key) {
327
- oldValue[i].set({
328
- direction: key.direction,
329
- property : key.property
330
- });
329
+ oldValue[i].set({direction, property});
331
330
 
332
331
  hasMatch = true;
333
332
  break
334
- } else if (oldValue[i].property === key.property && oldValue[i].direction === key.direction) {
333
+ } else if (oldValue[i].property === property && oldValue[i].direction === direction) {
335
334
  hasMatch = true;
336
335
  break
337
336
  }
@@ -362,8 +361,8 @@ class Base extends CoreBase {
362
361
  console.log('cacheUpdate', opts, this[toAddArray]);
363
362
  return;
364
363
 
365
- let me = this,
366
- keyProperty = me.keyProperty,
364
+ let me = this,
365
+ {keyProperty} = me,
367
366
  index, toAddMap, toRemoveMap;
368
367
 
369
368
  if (!me[silentUpdateMode]) {
@@ -477,9 +476,7 @@ class Base extends CoreBase {
477
476
  doSort(items=this._items, silent=false) {
478
477
  let me = this,
479
478
  previousItems = [...items],
480
- sorters = me.sorters,
481
- sortDirections = me.sortDirections,
482
- sortProperties = me.sortProperties,
479
+ {sorters, sortDirections, sortProperties} = me,
483
480
  countSorters = sortProperties.length || 0,
484
481
  hasSortByMethod = false,
485
482
  hasTransformValue = false,
@@ -510,7 +507,7 @@ class Base extends CoreBase {
510
507
  }
511
508
 
512
509
  return 0
513
- });
510
+ })
514
511
  } else {
515
512
  if (hasTransformValue) {
516
513
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Sorting_with_map
@@ -1126,11 +1123,10 @@ class Base extends CoreBase {
1126
1123
  */
1127
1124
  splice(index, removeCountOrToRemoveArray, toAddArray) {
1128
1125
  let me = this,
1126
+ {keyProperty, map} = me,
1129
1127
  source = me.getSource(),
1130
1128
  addedItems = [],
1131
1129
  items = me._items,
1132
- keyProperty = me.keyProperty,
1133
- map = me.map,
1134
1130
  removedItems = [],
1135
1131
  removeCountAtIndex = Neo.isNumber(removeCountOrToRemoveArray) ? removeCountOrToRemoveArray : null,
1136
1132
  toRemoveArray = Array.isArray(removeCountOrToRemoveArray) ? removeCountOrToRemoveArray : null,
@@ -1192,7 +1188,7 @@ class Base extends CoreBase {
1192
1188
 
1193
1189
  if (source) {
1194
1190
  if (!source.getSource()) {
1195
- source.preventBubbleUp = true;
1191
+ source.preventBubbleUp = true
1196
1192
  }
1197
1193
 
1198
1194
  if (!me.preventBubbleUp) {
@@ -1226,10 +1222,7 @@ class Base extends CoreBase {
1226
1222
  delete me.preventBubbleUp
1227
1223
  }
1228
1224
 
1229
- return {
1230
- addedItems,
1231
- removedItems
1232
- }
1225
+ return {addedItems, removedItems}
1233
1226
  }
1234
1227
 
1235
1228
  /**
@@ -146,10 +146,8 @@ class Filter extends Base {
146
146
  * @returns {Object|null}
147
147
  */
148
148
  export() {
149
- let me = this,
150
- operator = me.operator,
151
- property = me.property,
152
- value = me.value;
149
+ let me = this,
150
+ {operator, property, value} = me;
153
151
 
154
152
  if (!me.filterBy) {
155
153
  return {operator, property, value}
@@ -166,11 +164,8 @@ class Filter extends Base {
166
164
  let me = this;
167
165
 
168
166
  if (oldValue !== undefined && me.isUpdating !== true) {
169
- me.fire('change', {
170
- operator: me.operator,
171
- property: me.property,
172
- value : me.value
173
- })
167
+ let {operator, property, value} = me;
168
+ me.fire('change', {operator, property, value})
174
169
  }
175
170
  }
176
171
 
@@ -124,15 +124,14 @@ class Sorter extends Base {
124
124
  * @returns {Object|null}
125
125
  */
126
126
  export() {
127
- let me = this,
128
- direction = me.direction,
129
- property = me.property;
127
+ let me = this,
128
+ {direction, property} = me;
130
129
 
131
130
  if (!me.sortBy && direction && property) {
132
- return {direction, property};
131
+ return {direction, property}
133
132
  }
134
133
 
135
- return null;
134
+ return null
136
135
  }
137
136
 
138
137
  /**
@@ -141,10 +140,10 @@ class Sorter extends Base {
141
140
  */
142
141
  transformValue(value) {
143
142
  if (typeof value === 'string') {
144
- value = value.toLowerCase();
143
+ value = value.toLowerCase()
145
144
  }
146
145
 
147
- return value;
146
+ return value
148
147
  }
149
148
  }
150
149
 
@@ -13,8 +13,10 @@ import VDomUtil from '../util/VDom.mjs';
13
13
  import VNodeUtil from '../util/VNode.mjs';
14
14
 
15
15
  const
16
- lengthRE = /^\d+\w+$/,
17
- addUnits = value => value == null ? value : isNaN(value) ? value : `${value}px`;
16
+ addUnits = value => value == null ? value : isNaN(value) ? value : `${value}px`,
17
+ closestController = Symbol.for('closestController'),
18
+ closestModel = Symbol.for('closestModel'),
19
+ lengthRE = /^\d+\w+$/;
18
20
 
19
21
  /**
20
22
  * @class Neo.component.Base
@@ -422,7 +424,7 @@ class Base extends CoreBase {
422
424
  get parent() {
423
425
  let me = this;
424
426
 
425
- return me.parentComponent || me.parentId !== 'document.body' ? Neo.getComponent(me.parentId) : null
427
+ return me.parentComponent || me.parentId === 'document.body' ? null : Neo.getComponent(me.parentId)
426
428
  }
427
429
 
428
430
  /**
@@ -577,9 +579,11 @@ class Base extends CoreBase {
577
579
  afterSetDomListeners(value, oldValue) {
578
580
  let me = this;
579
581
 
580
- me.getController()?.parseDomListeners(me);
582
+ if (value?.[0] || oldValue?.[0]) {
583
+ me.getController()?.parseDomListeners(me);
581
584
 
582
- DomEventManager.updateDomListeners(me, value, oldValue)
585
+ DomEventManager.updateDomListeners(me, value, oldValue)
586
+ }
583
587
  }
584
588
 
585
589
  /**
@@ -840,22 +844,19 @@ class Base extends CoreBase {
840
844
  * @protected
841
845
  */
842
846
  async afterSetResponsive(value, oldValue) {
843
- if (!value) {
844
- return
845
- }
846
-
847
- let me = this,
848
- module = await import(`../../src/plugin/Responsive.mjs`),
849
- plugins = me.plugins || [];
850
-
851
- plugins.push({
852
- module : module.default,
853
- appName: me.appName,
854
- id : 'responsive',
855
- value
856
- });
847
+ if (value && !this.getPlugin('responsive')) {
848
+ let me = this,
849
+ module = await import(`../../src/plugin/Responsive.mjs`),
850
+ plugins = me.plugins || [];
851
+
852
+ plugins.push({
853
+ module : module.default,
854
+ appName: me.appName,
855
+ value
856
+ });
857
857
 
858
- me.plugins = plugins
858
+ me.plugins = plugins
859
+ }
859
860
  }
860
861
 
861
862
  /**
@@ -1132,15 +1133,6 @@ class Base extends CoreBase {
1132
1133
  return this.getModel().getHierarchyData()
1133
1134
  }
1134
1135
 
1135
- /**
1136
- * Triggered when accessing the parentComponent config
1137
- * @param {Object} value
1138
- * @protected
1139
- */
1140
- beforeParentComponent(value) {
1141
- return value || this.parent
1142
- }
1143
-
1144
1136
  /**
1145
1137
  * Triggered when accessing the style config
1146
1138
  * @param {Object} value
@@ -1252,7 +1244,7 @@ class Base extends CoreBase {
1252
1244
  * Creates a KeyNavigation instance if needed.
1253
1245
  * @param {Object} value
1254
1246
  * @param {Object} oldValue
1255
- * @returns {Neo.util.KeyNavigation}
1247
+ * @returns {Neo.util.KeyNavigation|null}
1256
1248
  * @protected
1257
1249
  */
1258
1250
  beforeSetKeys(value, oldValue) {
@@ -1515,14 +1507,14 @@ class Base extends CoreBase {
1515
1507
  const result = [];
1516
1508
 
1517
1509
  if (this.floating) {
1518
- result.push('neo-floating');
1510
+ result.push('neo-floating')
1519
1511
  }
1520
1512
 
1521
- return result;
1513
+ return result
1522
1514
  }
1523
1515
 
1524
1516
  /**
1525
- * Find an instance stored inside a config via optionally passing an ntype.
1517
+ * Find an instance stored inside a config via optionally passing a ntype.
1526
1518
  * Returns this[configName] or the closest parent component with a match.
1527
1519
  * Used by getController() & getModel()
1528
1520
  * @param {String} configName
@@ -1530,9 +1522,9 @@ class Base extends CoreBase {
1530
1522
  * @returns {Neo.core.Base|null}
1531
1523
  */
1532
1524
  getConfigInstanceByNtype(configName, ntype) {
1533
- let me = this,
1534
- config = me[configName],
1535
- parentComponent = me.parentComponent;
1525
+ let me = this,
1526
+ config = me[configName],
1527
+ {parentComponent} = me;
1536
1528
 
1537
1529
  if (config && (!ntype || ntype === config.ntype)) {
1538
1530
  return config
@@ -1555,7 +1547,24 @@ class Base extends CoreBase {
1555
1547
  * @returns {Neo.controller.Component|null}
1556
1548
  */
1557
1549
  getController(ntype) {
1558
- return this.getConfigInstanceByNtype('controller', ntype)
1550
+ let me = this,
1551
+ controller;
1552
+
1553
+ if (!ntype) {
1554
+ controller = me[closestController];
1555
+
1556
+ if (controller) {
1557
+ return controller
1558
+ }
1559
+ }
1560
+
1561
+ controller = me.getConfigInstanceByNtype('controller', ntype);
1562
+
1563
+ if (!ntype) {
1564
+ me[closestController] = controller;
1565
+ }
1566
+
1567
+ return controller
1559
1568
  }
1560
1569
 
1561
1570
  /**
@@ -1565,7 +1574,7 @@ class Base extends CoreBase {
1565
1574
  * @returns {Promise<Neo.util.Rectangle>}
1566
1575
  */
1567
1576
  async getDomRect(id=this.id, appName=this.appName) {
1568
- const result = await Neo.main.DomAccess.getBoundingClientRect({appName, id, windowId: this.windowId});
1577
+ let result = await Neo.main.DomAccess.getBoundingClientRect({appName, id, windowId: this.windowId});
1569
1578
 
1570
1579
  if (Array.isArray(result)) {
1571
1580
  return result.map(rect => Rectangle.clone(rect))
@@ -1584,7 +1593,24 @@ class Base extends CoreBase {
1584
1593
  return null
1585
1594
  }
1586
1595
 
1587
- return this.getConfigInstanceByNtype('model', ntype)
1596
+ let me = this,
1597
+ model;
1598
+
1599
+ if (!ntype) {
1600
+ model = me[closestModel];
1601
+
1602
+ if (model) {
1603
+ return model
1604
+ }
1605
+ }
1606
+
1607
+ model = me.getConfigInstanceByNtype('model', ntype);
1608
+
1609
+ if (!ntype) {
1610
+ me[closestModel] = model
1611
+ }
1612
+
1613
+ return model
1588
1614
  }
1589
1615
 
1590
1616
  /**
@@ -1637,7 +1663,13 @@ class Base extends CoreBase {
1637
1663
  * @returns {Neo.plugin.Base|null}
1638
1664
  */
1639
1665
  getPlugin(opts) {
1640
- opts = typeof opts !== 'string' ? opts : {id: opts};
1666
+ if (Neo.isString(opts)) {
1667
+ if (!opts.startsWith('plugin-')) {
1668
+ opts = 'plugin-' + opts
1669
+ }
1670
+
1671
+ opts = {ntype: opts}
1672
+ }
1641
1673
 
1642
1674
  let me = this,
1643
1675
  hasMatch;
@@ -1810,7 +1842,7 @@ class Base extends CoreBase {
1810
1842
  resolve && me.resolveUpdateCache.push(resolve)
1811
1843
  return true
1812
1844
  } else {
1813
- return me.isParentVdomUpdating(parent.parentId)
1845
+ return me.isParentVdomUpdating(parent.parentId, resolve)
1814
1846
  }
1815
1847
  }
1816
1848
  }
@@ -42,10 +42,10 @@ class Canvas extends Component {
42
42
  afterSetMounted(value, oldValue) {
43
43
  super.afterSetMounted(value, oldValue);
44
44
 
45
- let me = this,
46
- id = me.getCanvasId(),
47
- offscreen = me.offscreen,
48
- worker = Neo.currentWorker;
45
+ let me = this,
46
+ id = me.getCanvasId(),
47
+ {offscreen} = me,
48
+ worker = Neo.currentWorker;
49
49
 
50
50
  if (value && offscreen) {
51
51
  worker.promiseMessage('main', {
@@ -58,11 +58,11 @@ class Canvas extends Component {
58
58
  node : data.offscreen,
59
59
  nodeId: id
60
60
  }, [data.offscreen]).then(() => {
61
- me.offscreenRegistered = true;
62
- });
63
- });
61
+ me.offscreenRegistered = true
62
+ })
63
+ })
64
64
  } else if (offscreen) {
65
- me.offscreenRegistered = false;
65
+ me.offscreenRegistered = false
66
66
  }
67
67
  }
68
68
 
@@ -71,7 +71,7 @@ class Canvas extends Component {
71
71
  * @returns {String}
72
72
  */
73
73
  getCanvasId() {
74
- return this.id;
74
+ return this.id
75
75
  }
76
76
  }
77
77