@kizmann/nano-ui 1.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +4 -4
  2. package/dist/nano-ui.css +1 -1
  3. package/dist/nano-ui.esm.js +2 -0
  4. package/dist/nano-ui.esm.js.map +1 -0
  5. package/dist/themes/default.css +1 -1
  6. package/dist/themes/webservy.css +1 -1
  7. package/package.json +10 -7
  8. package/src/alert/src/alert/alert-handler.mjs +6 -6
  9. package/src/cascader/src/cascader/cascader.jsx +5 -5
  10. package/src/cascader/src/cascader-panel/cascader-panel.jsx +4 -4
  11. package/src/chart/src/chart-bar/chart-bar.jsx +3 -3
  12. package/src/chart/src/chart-donut/chart-donut.jsx +6 -6
  13. package/src/chart/src/chart-item/chart-item.jsx +3 -3
  14. package/src/checkbox/src/checkbox/checkbox.jsx +2 -2
  15. package/src/checkbox/src/checkbox-group/checkbox-group.jsx +1 -1
  16. package/src/collapse/src/collapse/collapse.jsx +2 -2
  17. package/src/collapse/src/collapse-item/collapse-item.jsx +1 -1
  18. package/src/config/index.js +6 -6
  19. package/src/config/src/builder/builder.jsx +35 -35
  20. package/src/config/src/builder/prototypes/switch/n-switch.js +3 -3
  21. package/src/config/src/config/config-next.jsx +20 -22
  22. package/src/config/src/config/config.jsx +10 -10
  23. package/src/config/src/reference-panel/reference-panel.jsx +4 -4
  24. package/src/config/src/reference-picker/reference-picker.jsx +1 -1
  25. package/src/confirm/src/confirm/confirm-handler.mjs +9 -8
  26. package/src/confirm/src/confirm/confirm.jsx +4 -4
  27. package/src/datepicker/src/datepicker-panel/datepicker-panel.jsx +16 -16
  28. package/src/datetimepicker/src/datetimepicker/datetimepicker.jsx +1 -1
  29. package/src/draggable/src/draggrid/draggrid.jsx +5 -5
  30. package/src/draggable/src/draghandler/draghandler.js +65 -52
  31. package/src/draggable/src/draglist/draglist.jsx +11 -11
  32. package/src/draggable/src/draglist-item/draglist-item.jsx +2 -0
  33. package/src/draggable/src/dropzone/dropzone.jsx +5 -5
  34. package/src/drawer/src/drawer/drawer.jsx +5 -5
  35. package/src/durationpicker/src/durationpicker/durationpicker.jsx +7 -7
  36. package/src/file/src/file/file.jsx +3 -3
  37. package/src/form/src/form/form-rules.mjs +70 -40
  38. package/src/form/src/form/form.jsx +9 -9
  39. package/src/form/src/form/form.scss +5 -3
  40. package/src/form/src/form-bag/form-bag.jsx +3 -3
  41. package/src/form/src/form-frame/form-frame.jsx +11 -11
  42. package/src/form/src/form-group/form-group.jsx +3 -3
  43. package/src/form/src/form-item/form-item.jsx +3 -3
  44. package/src/index.scss +3 -0
  45. package/src/info/src/info/info.jsx +6 -6
  46. package/src/info/src/info-column/info-column.jsx +2 -2
  47. package/src/info/src/info-field/types/info-field-boolean.jsx +2 -2
  48. package/src/info/src/info-field/types/info-field-datetime.jsx +2 -2
  49. package/src/info/src/info-field/types/info-field-option.jsx +3 -3
  50. package/src/info/src/info-field/types/info-field-string.jsx +2 -2
  51. package/src/input-number/src/input-number/input-number.jsx +7 -8
  52. package/src/loader/src/loader/loader.jsx +3 -3
  53. package/src/map/src/map/map.jsx +3 -3
  54. package/src/map/src/map-marker/map-marker.jsx +4 -4
  55. package/src/mixins/src/cmer.js +7 -7
  56. package/src/mixins/src/cslo.js +1 -1
  57. package/src/modal/src/modal/modal.jsx +5 -5
  58. package/src/notification/src/notification/notification-handler.mjs +3 -3
  59. package/src/paginator/src/paginator/paginator.jsx +3 -3
  60. package/src/popover/src/popover/popover-element.mjs +12 -12
  61. package/src/popover/src/popover/popover-handler.mjs +5 -5
  62. package/src/popover/src/popover/popover.jsx +5 -4
  63. package/src/popover/src/popover-option/popover-option.jsx +1 -1
  64. package/src/preview/src/preview/preview-handler.mjs +6 -6
  65. package/src/preview/src/preview/preview-helper.mjs +6 -6
  66. package/src/preview/src/preview/preview.jsx +3 -3
  67. package/src/preview/src/preview-image/preview-image.jsx +3 -3
  68. package/src/preview/src/preview-modal/preview-modal.jsx +3 -3
  69. package/src/preview/src/preview-plain/preview-plain.jsx +1 -1
  70. package/src/preview/src/preview-video/preview-video.jsx +2 -2
  71. package/src/radio/src/radio/radio.jsx +1 -1
  72. package/src/radio/src/radio-group/radio-group.jsx +1 -1
  73. package/src/rating/src/rating/rating.jsx +2 -2
  74. package/src/resizer/src/resizer/resizer-next.jsx +19 -19
  75. package/src/resizer/src/resizer/resizer.jsx +17 -17
  76. package/src/scrollbar/src/scrollbar/scrollbar.jsx +17 -17
  77. package/src/select/src/select/select.jsx +27 -29
  78. package/src/select/src/select-option/select-option.jsx +4 -4
  79. package/src/slider/src/slider/slider.jsx +18 -16
  80. package/src/slider/src/slider/slider.scss +6 -25
  81. package/src/switch/src/switch/switch.jsx +1 -1
  82. package/src/table/src/table/table.jsx +21 -18
  83. package/src/table/src/table-cell/types/table-cell-boolean.jsx +2 -2
  84. package/src/table/src/table-cell/types/table-cell-datetime.jsx +2 -2
  85. package/src/table/src/table-cell/types/table-cell-image.jsx +1 -1
  86. package/src/table/src/table-cell/types/table-cell-matrix.jsx +5 -5
  87. package/src/table/src/table-cell/types/table-cell-option.jsx +3 -3
  88. package/src/table/src/table-cell/types/table-cell-select.jsx +5 -5
  89. package/src/table/src/table-cell/types/table-cell-string.jsx +2 -2
  90. package/src/table/src/table-column/table-column.jsx +5 -5
  91. package/src/table/src/table-filter/table-filter.jsx +5 -5
  92. package/src/table/src/table-filter/types/table-filter-boolean.jsx +1 -1
  93. package/src/table/src/table-filter/types/table-filter-option.jsx +2 -2
  94. package/src/table/src/table-filter/types/table-filter-string.jsx +1 -1
  95. package/src/tabs/src/tabs/tabs.jsx +2 -2
  96. package/src/tags/src/tags/tags.jsx +1 -1
  97. package/src/tags/src/tags-item/tags-item.jsx +2 -2
  98. package/src/textarea/src/textarea/textarea.jsx +1 -1
  99. package/src/timepicker/src/timepicker/timepicker.jsx +4 -4
  100. package/src/timepicker/src/timepicker-panel/timepicker-panel.jsx +6 -6
  101. package/src/transfer/src/transfer/transfer.jsx +4 -4
  102. package/src/transfer/src/transfer/transfer.scss +4 -0
  103. package/src/virtualscroller/src/virtualscroller/virtualscroller.jsx +8 -5
  104. package/themes/default/alert/src/alert/alert.scss +1 -1
  105. package/themes/default/confirm/src/confirm/confirm.scss +1 -1
  106. package/themes/default/datepicker/src/datepicker/datepicker.scss +1 -1
  107. package/themes/default/datepicker/src/datepicker-panel/datepicker-panel.scss +2 -2
  108. package/themes/default/datetimepicker/src/datetimepicker/datetimepicker.scss +1 -1
  109. package/themes/default/draggable/src/draglist-item/draglist-item.scss +1 -1
  110. package/themes/default/drawer/src/drawer/drawer.scss +1 -1
  111. package/themes/default/durationpicker/src/durationpicker/durationpicker.scss +1 -1
  112. package/themes/default/modal/src/modal/modal.scss +1 -1
  113. package/themes/default/popover/src/popover/popover.scss +1 -1
  114. package/themes/default/preview/src/preview-modal/preview-modal.scss +1 -1
  115. package/themes/default/slider/src/slider/slider.scss +2 -3
  116. package/themes/default/timepicker/src/timepicker/timepicker.scss +1 -1
  117. package/themes/default/transfer/src/transfer/transfer.scss +1 -0
  118. package/themes/webservy/alert/src/alert/alert.scss +1 -1
  119. package/themes/webservy/confirm/src/confirm/confirm.scss +1 -1
  120. package/themes/webservy/datepicker/src/datepicker/datepicker.scss +1 -1
  121. package/themes/webservy/datetimepicker/src/datetimepicker/datetimepicker.scss +1 -1
  122. package/themes/webservy/draggable/src/draggrid-item/draggrid-item.scss +1 -1
  123. package/themes/webservy/drawer/src/drawer/drawer.scss +1 -1
  124. package/themes/webservy/durationpicker/src/durationpicker/durationpicker.scss +1 -1
  125. package/themes/webservy/modal/src/modal/modal.scss +1 -1
  126. package/themes/webservy/preview/src/preview-modal/preview-modal.scss +1 -1
  127. package/themes/webservy/timepicker/src/timepicker/timepicker.scss +1 -1
  128. package/dist/nano-ui.js +0 -2
  129. package/dist/nano-ui.js.map +0 -1
  130. /package/src/{index.js → index.esm.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { Arr, Obj, Any } from "@kizmann/pico-js";
1
+ import { Arr, Obj, Mix } from "@kizmann/pico-js";
2
2
 
3
3
  export default {
4
4
 
@@ -45,7 +45,7 @@ export default {
45
45
  {
46
46
  let result = {};
47
47
 
48
- if ( ! Any.isPlain(value) && ! Obj.get(value, '__v_skip') ) {
48
+ if ( ! Mix.isObj(value) && ! Obj.get(value, '__v_skip') ) {
49
49
  return result;
50
50
  }
51
51
 
@@ -55,13 +55,13 @@ export default {
55
55
  `${path}.${key}`, value[key]
56
56
  ];
57
57
 
58
- if ( Any.isPlain(val) ) {
58
+ if ( Mix.isObj(val) ) {
59
59
  val = this.buildTree(val, ref);
60
60
  }
61
61
 
62
62
  let type = typeof val;
63
63
 
64
- if ( Any.isArray(val) ) {
64
+ if ( Mix.isArray(val) ) {
65
65
  type = 'array';
66
66
  }
67
67
 
@@ -1,4 +1,4 @@
1
- import { Arr, Obj, Any } from "@kizmann/pico-js";
1
+ import { Arr, Obj, Mix } from "@kizmann/pico-js";
2
2
 
3
3
  export default {
4
4
 
@@ -1,4 +1,4 @@
1
- import { Any, Arr, Dom, Locale, Obj, UUID } from "@kizmann/pico-js";
1
+ import { Run, Mix, Arr, Dom, Locale, Obj, Hash } from "@kizmann/pico-js";
2
2
 
3
3
  export class ConfirmHandler
4
4
  {
@@ -18,7 +18,7 @@ export class ConfirmHandler
18
18
  constructor(options = {})
19
19
  {
20
20
  this.options = Obj.assign(this.options, options, {
21
- uid: UUID()
21
+ uid: Hash.uuid()
22
22
  });
23
23
  }
24
24
 
@@ -27,7 +27,7 @@ export class ConfirmHandler
27
27
  this.unbindEvents();
28
28
  this.modal.remove();
29
29
 
30
- Dom.find(document.body).css({
30
+ Dom.find(document.body).style({
31
31
  'overflow': 'undefined'
32
32
  });
33
33
 
@@ -81,7 +81,7 @@ export class ConfirmHandler
81
81
 
82
82
  let text = Obj.get(this.options, 'confirmText');
83
83
 
84
- if ( Any.isEmpty(text) ) {
84
+ if ( Mix.isEmpty(text) ) {
85
85
  text = Locale.trans('Okay');
86
86
  }
87
87
 
@@ -107,7 +107,7 @@ export class ConfirmHandler
107
107
 
108
108
  let text = Obj.get(this.options, 'cancelText');
109
109
 
110
- if ( Any.isEmpty(text) ) {
110
+ if ( Mix.isEmpty(text) ) {
111
111
  text = Locale.trans('Cancel');
112
112
  }
113
113
 
@@ -141,7 +141,7 @@ export class ConfirmHandler
141
141
  }
142
142
  }, { uid });
143
143
 
144
- Any.delay(() => {
144
+ Run.delay(() => {
145
145
  Dom.find(this.modal).addClass('n-ready');
146
146
  });
147
147
  }
@@ -163,7 +163,7 @@ export class ConfirmHandler
163
163
  {
164
164
  let cls = Obj.get(this.options, 'class', []);
165
165
 
166
- if ( Any.isString(cls) ) {
166
+ if ( Mix.isString(cls) ) {
167
167
  cls = cls.split(' ');
168
168
  }
169
169
 
@@ -209,7 +209,7 @@ export class ConfirmHandler
209
209
  this.renderCancel(action, cancel);
210
210
  this.renderConfirm(action, confirm);
211
211
 
212
- Dom.find(document.body).css({
212
+ Dom.find(document.body).style({
213
213
  'overflow': 'hidden'
214
214
  });
215
215
 
@@ -220,6 +220,7 @@ export class ConfirmHandler
220
220
  });
221
221
 
222
222
  this.modal = modal.get(0);
223
+ console.log(this.modal);
223
224
  }
224
225
  }
225
226
 
@@ -1,4 +1,4 @@
1
- import { Obj, Locale, Dom, Arr, Any } from "@kizmann/pico-js";
1
+ import { Obj, Locale, Dom, Arr, Mix } from "@kizmann/pico-js";
2
2
 
3
3
  export default {
4
4
 
@@ -100,7 +100,7 @@ export default {
100
100
  });
101
101
 
102
102
  this.target = Dom.find(this.selector || this.$el)
103
- .previous().get(0);
103
+ .prev().get(0);
104
104
 
105
105
  Dom.find(document.body).on('mousedown',
106
106
  this.eventClick, this._.uid);
@@ -124,7 +124,7 @@ export default {
124
124
 
125
125
  let nodes = this.$slots.default();
126
126
 
127
- if ( Any.isEmpty(nodes) ) {
127
+ if ( Mix.isEmpty(nodes) ) {
128
128
  return fallback;
129
129
  }
130
130
 
@@ -132,7 +132,7 @@ export default {
132
132
 
133
133
  nodes.map((el) => {
134
134
 
135
- if ( !Any.isString(el.children) ) {
135
+ if ( !Mix.isString(el.children) ) {
136
136
  return;
137
137
  }
138
138
 
@@ -1,4 +1,4 @@
1
- import { Arr, Str, Now, Any } from "@kizmann/pico-js";
1
+ import { Arr, Str, Now, Mix } from "@kizmann/pico-js";
2
2
 
3
3
  export default {
4
4
 
@@ -137,12 +137,12 @@ export default {
137
137
 
138
138
  yearsGrid()
139
139
  {
140
- return this.tempCache.getYears();
140
+ return this.tempCache.grid('years');
141
141
  },
142
142
 
143
143
  monthsGrid()
144
144
  {
145
- return this.tempCache.getMonths();
145
+ return this.tempCache.grid('months');
146
146
  }
147
147
 
148
148
  },
@@ -205,12 +205,12 @@ export default {
205
205
 
206
206
  patchDate(now)
207
207
  {
208
- if ( Any.isString(now) ) {
208
+ if ( Mix.isString(now) ) {
209
209
  now = Now.make(now);
210
210
  }
211
211
 
212
- if ( Any.isEmpty(this.modelValue) ) {
213
- now.resetTime();
212
+ if ( Mix.isEmpty(this.modelValue) ) {
213
+ now.reset({ time: true });
214
214
  } else {
215
215
  now.applyTime(this.tempValue);
216
216
  }
@@ -227,7 +227,7 @@ export default {
227
227
 
228
228
  patchMonth(now)
229
229
  {
230
- if ( Any.isString(now) ) {
230
+ if ( Mix.isString(now) ) {
231
231
  now = Now.make(now);
232
232
  }
233
233
 
@@ -243,7 +243,7 @@ export default {
243
243
 
244
244
  patchYear(now)
245
245
  {
246
- if ( Any.isString(now) ) {
246
+ if ( Mix.isString(now) ) {
247
247
  now = Now.make(now);
248
248
  }
249
249
 
@@ -319,14 +319,14 @@ export default {
319
319
  };
320
320
 
321
321
  let monthsHtml = [
322
- this.months[this.tempCache.month()]
322
+ this.months[this.tempCache.month() -1]
323
323
  ];
324
324
 
325
325
  let month = this.tempCache.clone()
326
- .addMonths(this.monthPanels - 1);
326
+ .add(this.monthPanels - 1, 'month');
327
327
 
328
328
  if ( month.month() !== this.tempCache.month() ) {
329
- monthsHtml.push(this.months[month.month()]);
329
+ monthsHtml.push(this.months[month.month() -1]);
330
330
  }
331
331
 
332
332
  return (
@@ -347,7 +347,7 @@ export default {
347
347
  ];
348
348
 
349
349
  let month = this.tempCache.clone()
350
- .addMonths(this.monthPanels - 1);
350
+ .add(this.monthPanels - 1, 'month');
351
351
 
352
352
  if ( month.year() !== this.tempCache.year() ) {
353
353
  yearsHtml.push(month.year());
@@ -388,7 +388,7 @@ export default {
388
388
  classList.push('n-today');
389
389
  }
390
390
 
391
- let isSelected = this.tempValue.valid() &&
391
+ let isSelected = this.tempValue.valid() &&
392
392
  now.equalDate(this.tempValue);
393
393
 
394
394
  if ( isSelected ) {
@@ -539,7 +539,7 @@ export default {
539
539
  }
540
540
 
541
541
  let bodyHtml = (month) => (
542
- Arr.each(Arr.chunk(month.getDatesGrid(), 7), (chunks) => {
542
+ Arr.each(Arr.chunk(month.grid('days'), 7), (chunks) => {
543
543
  return (
544
544
  <div class="n-datepicker-panel__week">
545
545
  { Arr.each(chunks, (chunk) => renderItem(chunk, month)) }
@@ -552,7 +552,7 @@ export default {
552
552
  Arr.each(Arr.make(this.monthPanels), (offset) => {
553
553
 
554
554
  let month = this.tempCache.clone()
555
- .addMonths(offset - 1);
555
+ .add(offset, 'month');
556
556
 
557
557
  return (
558
558
  <div class="n-datepicker-panel__panel">
@@ -599,7 +599,7 @@ export default {
599
599
 
600
600
  return (
601
601
  <div class={classList} {...props}>
602
- <span>{ this.trans(this.months[now.month()]) }</span>
602
+ <span>{ this.trans(this.months[now.month() -1]) }</span>
603
603
  </div>
604
604
  )
605
605
  },
@@ -1,4 +1,4 @@
1
- import { Obj, Now, Any, Locale } from "@kizmann/pico-js";
1
+ import { Obj, Now, Mix, Locale } from "@kizmann/pico-js";
2
2
 
3
3
  export default {
4
4
 
@@ -1,4 +1,4 @@
1
- import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from "@kizmann/pico-js";
1
+ import { Hash, Num, Arr, Obj, Dom, Mix, Event, Locale } from "@kizmann/pico-js";
2
2
  import NDraghandler from "../draghandler/draghandler.js";
3
3
 
4
4
  window.DEBUG_NDLIST = false;
@@ -139,7 +139,7 @@ export default {
139
139
  useKeys: {
140
140
  default()
141
141
  {
142
- return true;
142
+ return false;
143
143
  },
144
144
  type: [Boolean]
145
145
  },
@@ -308,7 +308,7 @@ export default {
308
308
  data()
309
309
  {
310
310
  return {
311
- uid: UUID(),
311
+ uid: Hash.uuid(),
312
312
  virtuals: [],
313
313
  visible: [],
314
314
  childNodes: {},
@@ -434,7 +434,7 @@ export default {
434
434
  {
435
435
  let canDrag = this.allowDrag;
436
436
 
437
- if ( ! Any.isFunction(canDrag) ) {
437
+ if ( ! Mix.isFunction(canDrag) ) {
438
438
  canDrag = () => this.allowDrag;
439
439
  }
440
440
 
@@ -595,7 +595,7 @@ export default {
595
595
  {
596
596
  let canSelect = this.allowSelect;
597
597
 
598
- if ( ! Any.isFunction(canSelect) ) {
598
+ if ( ! Mix.isFunction(canSelect) ) {
599
599
  canSelect = () => this.allowSelect;
600
600
  }
601
601
 
@@ -1,4 +1,4 @@
1
- import { Arr, Obj, Num, Any, Dom, Event, Locale, UUID } from "@kizmann/pico-js";
1
+ import { Run, Num, Arr, Obj, Mix, Dom, Event, Locale, Hash } from "@kizmann/pico-js";
2
2
 
3
3
  window.dragMods = [];
4
4
 
@@ -116,12 +116,12 @@ class NDragIndicator
116
116
  style.top = offsetTop + Dom.find(el).height();
117
117
  }
118
118
 
119
- this.$el.css(Obj.map(style, (item) => item + 'px'));
119
+ this.$el.style(Obj.map(style, (item) => item + 'px'));
120
120
  }
121
121
 
122
122
  hide()
123
123
  {
124
- this.$el.css(null);
124
+ this.$el.style(null);
125
125
  }
126
126
 
127
127
  destroy()
@@ -160,29 +160,31 @@ class NDraghandler
160
160
  this.bindDragstart.call(this, ...window.DragCache);
161
161
  }
162
162
 
163
- Dom.find(this.rootNode.$el).on('dragenter', (event) => {
163
+ let key = this.rootNode._.uid + '-droot-';
164
+
165
+ Dom.find(this.rootNode.$el).on('dragenter', Run.framebuffer((event) => {
164
166
  this.onDragenterRoot(event);
165
- });
167
+ }, key + 'dragenter', 140));
166
168
 
167
- Dom.find(this.rootNode.$el).on('dragover', (event) => {
169
+ Dom.find(this.rootNode.$el).on('dragover', Run.framebuffer((event) => {
168
170
  this.onDragoverRoot(event);
169
- });
171
+ }, key + 'dragover', 240));
170
172
 
171
- Dom.find(this.rootNode.$el).on('dragleave', (event) => {
173
+ Dom.find(this.rootNode.$el).on('dragleave', Run.framebuffer((event) => {
172
174
  this.onDragleaveRoot(event);
173
- });
175
+ }, key + 'dragleave', 340));
174
176
 
175
- Dom.find(this.rootNode.$el).on('dragend', (event) => {
177
+ Dom.find(this.rootNode.$el).on('dragend', Run.framebuffer((event) => {
176
178
  this.onDragendRoot(event);
177
- });
179
+ }, key + 'dragend', 440));
178
180
 
179
- Dom.find(this.rootNode.$el).on('drop', (event) => {
181
+ Dom.find(this.rootNode.$el).on('drop', Run.framebuffer((event) => {
180
182
  this.onDragdropRoot(event);
181
- });
183
+ }, key + 'drop', 540));
182
184
 
183
- Dom.find(this.rootNode.$el).on('dragdrop', (event) => {
185
+ Dom.find(this.rootNode.$el).on('dragdrop', Run.framebuffer((event) => {
184
186
  this.onDragdropRoot(event);
185
- });
187
+ }, key + 'dragdrop', 640));
186
188
 
187
189
  Event.bind('NDrag:start', this.bindDragstart.bind(this),
188
190
  this.rootNode.uid);
@@ -216,6 +218,9 @@ class NDraghandler
216
218
  onDragenterRoot(event)
217
219
  {
218
220
  event.preventDefault();
221
+
222
+ Dom.find(this.rootNode.$el).find('.n-dragover')
223
+ .remClass('n-dragover');
219
224
  }
220
225
 
221
226
  onDragoverRoot(event)
@@ -229,13 +234,13 @@ class NDraghandler
229
234
 
230
235
  event.preventDefault();
231
236
 
232
- if ( this.frames && Date.now() - this.frames < 135 ) {
233
- return;
234
- }
237
+ // if ( this.frames && Date.now() - this.frames < 35 ) {
238
+ // return;
239
+ // }
235
240
 
236
241
  let allowDrop = this.rootNode.allowDrop;
237
242
 
238
- if ( !Any.isFunction(allowDrop) ) {
243
+ if ( !Mix.isFunction(allowDrop) ) {
239
244
  allowDrop = () => this.rootNode.allowDrop;
240
245
  }
241
246
 
@@ -254,13 +259,13 @@ class NDraghandler
254
259
  if ( this.strategy !== 'nodrop' ) {
255
260
  Dom.find(this.rootNode.$el).addClass('n-dragover');
256
261
  } else {
257
- Dom.find(this.rootNode.$el).removeClass('n-dragover');
262
+ Dom.find(this.rootNode.$el).remClass('n-dragover');
258
263
  }
259
264
 
260
265
  if ( this.strategy === 'nodrop' ) {
261
266
  Dom.find(this.rootNode.$el).addClass('n-nodrop');
262
267
  } else {
263
- Dom.find(this.rootNode.$el).removeClass('n-nodrop');
268
+ Dom.find(this.rootNode.$el).remClass('n-nodrop');
264
269
  }
265
270
 
266
271
  this.frames = Date.now();
@@ -269,7 +274,10 @@ class NDraghandler
269
274
  onDragleaveRoot(event)
270
275
  {
271
276
  Dom.find(this.rootNode.$el)
272
- .removeClass('n-dragover n-nodrop');
277
+ .remClass(['n-dragover', 'n-nodrop']);
278
+
279
+ Dom.find(this.rootNode.$el).find('.n-dragover')
280
+ .remClass('n-dragover');
273
281
  }
274
282
 
275
283
  onDragendRoot(event)
@@ -279,7 +287,7 @@ class NDraghandler
279
287
  }
280
288
 
281
289
  Dom.find(this.rootNode.$el)
282
- .removeClass('n-dragover n-nodrop');
290
+ .remClass(['n-dragover', 'n-nodrop']);
283
291
 
284
292
  if ( this.strategy !== 'root' ) {
285
293
  return;
@@ -295,7 +303,7 @@ class NDraghandler
295
303
  }
296
304
 
297
305
  Dom.find(this.rootNode.$el)
298
- .removeClass('n-dragover n-nodrop');
306
+ .remClass(['n-dragover', 'n-nodrop']);
299
307
 
300
308
  if ( this.strategy !== 'root' ) {
301
309
  return;
@@ -393,9 +401,9 @@ class NDraghandler
393
401
 
394
402
  event.preventDefault();
395
403
 
396
- if ( this.frames && Date.now() - this.frames < 45 ) {
397
- return;
398
- }
404
+ // if ( this.frames && Date.now() - this.frames < 45 ) {
405
+ // return;
406
+ // }
399
407
 
400
408
  let safezone = this.rootNode
401
409
  .safezone(node.$el.clientHeight);
@@ -409,7 +417,7 @@ class NDraghandler
409
417
 
410
418
  let allowDrop = this.rootNode.allowDrop;
411
419
 
412
- if ( !Any.isFunction(allowDrop) ) {
420
+ if ( !Mix.isFunction(allowDrop) ) {
413
421
  allowDrop = () => this.rootNode.allowDrop;
414
422
  }
415
423
 
@@ -420,7 +428,9 @@ class NDraghandler
420
428
  let isInSelf = Arr.has(node.value.cascade,
421
429
  this.rootNode.tempSelected);
422
430
 
423
- rainbow.push(!isInSelf);
431
+ if ( this.rootNode.tempSelected.length ) {
432
+ rainbow.push(!isInSelf);
433
+ }
424
434
 
425
435
  if ( Arr.has(rainbow, false) ) {
426
436
  this.strategy = 'nodrop';
@@ -432,11 +442,11 @@ class NDraghandler
432
442
 
433
443
  if ( this.strategy !== 'nodrop' ) {
434
444
  Dom.find(node.$el).addClass('n-dragover');
435
- Dom.find(node.$el).removeClass('n-nodrop');
445
+ Dom.find(node.$el).remClass('n-nodrop');
436
446
  }
437
447
 
438
448
  if ( this.strategy === 'nodrop' ) {
439
- Dom.find(node.$el).removeClass('n-dragover');
449
+ Dom.find(node.$el).remClass('n-dragover');
440
450
  Dom.find(node.$el).addClass('n-nodrop');
441
451
  }
442
452
 
@@ -451,14 +461,14 @@ class NDraghandler
451
461
  return;
452
462
  }
453
463
 
454
- Dom.find(node.$el).removeClass('n-dragover n-nodrop');
464
+ Dom.find(node.$el).remClass(['n-dragover', 'n-nodrop']);
455
465
 
456
466
  this.DragIndicator.hide();
457
467
  }
458
468
 
459
469
  onDragendNode(event, node)
460
470
  {
461
- Dom.find(node.$el).removeClass('n-dragover n-nodrop');
471
+ Dom.find(node.$el).remClass(['n-dragover', 'n-nodrop']);
462
472
 
463
473
  this.DragIndicator.hide();
464
474
 
@@ -473,7 +483,7 @@ class NDraghandler
473
483
  return;
474
484
  }
475
485
 
476
- Dom.find(node.$el).removeClass('n-dragover n-nodrop');
486
+ Dom.find(node.$el).remClass(['n-dragover', 'n-nodrop']);
477
487
 
478
488
  this.DragIndicator.hide();
479
489
 
@@ -506,29 +516,31 @@ class NDraghandler
506
516
  this.onDragstartNode(event, node);
507
517
  });
508
518
 
509
- $el.on('dragenter', (event) => {
519
+ let key = this.rootNode._.uid + '-dnode-';
520
+
521
+ $el.on('dragenter', Run.framebuffer((event) => {
510
522
  this.onDragenterNode(event, node);
511
- });
523
+ }, key + 'dragenter', 150));
512
524
 
513
- $el.on('dragover', (event) => {
525
+ $el.on('dragover', Run.framebuffer((event) => {
514
526
  this.onDragoverNode(event, node);
515
- });
527
+ }, key + 'dragover', 250));
516
528
 
517
- $el.on('dragleave', (event) => {
529
+ $el.on('dragleave', Run.framebuffer((event) => {
518
530
  this.onDragleaveNode(event, node);
519
- });
531
+ }, key + 'dragleave', 350));
520
532
 
521
- $el.on('dragend', (event) => {
533
+ $el.on('dragend', Run.framebuffer((event) => {
522
534
  this.onDragendNode(event, node);
523
- });
535
+ }, key + 'dragend', 450));
524
536
 
525
- $el.on('drop', (event) => {
537
+ $el.on('drop', Run.framebuffer((event) => {
526
538
  this.onDragdropNode(event, node);
527
- });
539
+ }, key + 'drop', 550));
528
540
 
529
- $el.on('dragdrop', (event) => {
541
+ $el.on('dragdrop', Run.framebuffer((event) => {
530
542
  this.onDragdropNode(event, node);
531
- });
543
+ }, key + 'dragdrop', 650));
532
544
 
533
545
  this.childNodes[node.uid] = node;
534
546
  }
@@ -554,7 +566,7 @@ class NDraghandler
554
566
  'dragdrop',
555
567
  ]);
556
568
 
557
- $el.removeClass('n-dragover n-nodrop');
569
+ $el.remClass(['n-dragover', 'n-nodrop']);
558
570
 
559
571
  this.DragIndicator.hide();
560
572
 
@@ -786,7 +798,7 @@ class NDraghandler
786
798
  let items = Obj.get(clone, targetRoute);
787
799
 
788
800
  let target = Obj.except(node.item, [], {
789
- [this.rootNode.uniqueProp]: UUID()
801
+ [this.rootNode.uniqueProp]: Hash.uuid()
790
802
  });
791
803
 
792
804
  items.splice(node.value.index + 1,
@@ -817,15 +829,16 @@ class NDraghandler
817
829
 
818
830
  reduce(items, ...props)
819
831
  {
820
- return Arr.reduce(items, (merge, item, index) =>
821
- this.reduceItem(merge, item, Num.int(index), ...props), []);
832
+ return Arr.reduce(items, (merge, item, index) => {
833
+ return this.reduceItem(merge, item, Num.int(index), ...props);
834
+ }, []);
822
835
  }
823
836
 
824
837
  reduceItem(merge, item, index, depth = 0, route = 'items', cascades = [])
825
838
  {
826
839
  // Get a unique id
827
840
  let unique = Obj.get(item,
828
- this.rootNode.uniqueProp, UUID());
841
+ this.rootNode.uniqueProp, Hash.uuid());
829
842
 
830
843
  // Add unique to cascader
831
844
  let tempCascade = Arr.merge(cascades,
@@ -844,7 +857,7 @@ class NDraghandler
844
857
  let children = Obj.get(item,
845
858
  this.rootNode.childProp, []);
846
859
 
847
- if ( Any.isEmpty(children) ) {
860
+ if ( Mix.isEmpty(children) ) {
848
861
  return Arr.merge(merge, [virtual]);
849
862
  }
850
863