@kizmann/nano-ui 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/nano-ui.css +1 -1
  2. package/dist/nano-ui.js +3 -3
  3. package/dist/nano-ui.js.map +1 -1
  4. package/package.json +5 -4
  5. package/src/alert/index.js +1 -1
  6. package/src/button/index.js +2 -2
  7. package/src/cascader/index.js +2 -2
  8. package/src/checkbox/index.js +2 -4
  9. package/src/collapse/index.js +2 -2
  10. package/src/config/index.js +5 -5
  11. package/src/config/src/builder/{builder.js → builder.jsx} +10 -10
  12. package/src/config/src/builder/prototypes/button/n-button-group.js +3 -3
  13. package/src/config/src/builder/prototypes/button/n-button.js +8 -8
  14. package/src/config/src/builder/prototypes/cascader/n-cascader.js +3 -3
  15. package/src/config/src/builder/prototypes/checkbox/n-checkbox-group.js +3 -3
  16. package/src/config/src/builder/prototypes/checkbox/n-checkbox.js +3 -3
  17. package/src/config/src/builder/prototypes/confirm/n-confirm.js +3 -3
  18. package/src/config/src/builder/prototypes/datepicker/n-datepicker.js +3 -3
  19. package/src/config/src/builder/prototypes/datetimepicker/n-datetimepicker.js +3 -3
  20. package/src/config/src/builder/prototypes/durationpicker/n-durationpicker.js +3 -3
  21. package/src/config/src/builder/prototypes/empty/n-empty.js +3 -3
  22. package/src/config/src/builder/prototypes/form/n-form-group.js +3 -3
  23. package/src/config/src/builder/prototypes/form/n-form-item.js +3 -3
  24. package/src/config/src/builder/prototypes/form/n-form.js +3 -3
  25. package/src/config/src/builder/prototypes/html/div.js +3 -3
  26. package/src/config/src/builder/prototypes/html/nano.js +3 -3
  27. package/src/config/src/builder/prototypes/html/span.js +3 -3
  28. package/src/config/src/builder/prototypes/info/n-info-column.js +3 -3
  29. package/src/config/src/builder/prototypes/info/n-info.js +3 -3
  30. package/src/config/src/builder/prototypes/input/n-input.js +7 -7
  31. package/src/config/src/builder/prototypes/input-number/n-input-number.js +7 -7
  32. package/src/config/src/builder/prototypes/loader/n-loader.js +3 -3
  33. package/src/config/src/builder/prototypes/modal/n-modal.js +3 -3
  34. package/src/config/src/builder/prototypes/popover/n-popover-group.js +3 -3
  35. package/src/config/src/builder/prototypes/popover/n-popover-item.js +3 -3
  36. package/src/config/src/builder/prototypes/popover/n-popover.js +3 -3
  37. package/src/config/src/builder/prototypes/radio/n-radio-group.js +3 -3
  38. package/src/config/src/builder/prototypes/radio/n-radio.js +3 -3
  39. package/src/config/src/builder/prototypes/rating/n-rating.js +3 -3
  40. package/src/config/src/builder/prototypes/select/n-select.js +3 -3
  41. package/src/config/src/builder/prototypes/slider/n-slider.js +3 -3
  42. package/src/config/src/builder/prototypes/switch/n-switch.js +7 -7
  43. package/src/config/src/builder/prototypes/table/n-table-column.js +3 -3
  44. package/src/config/src/builder/prototypes/table/n-table.js +3 -3
  45. package/src/config/src/builder/prototypes/tabs/n-tabs-item.js +3 -3
  46. package/src/config/src/builder/prototypes/tabs/n-tabs.js +3 -3
  47. package/src/config/src/builder/prototypes/tags/n-tags-item.js +3 -3
  48. package/src/config/src/builder/prototypes/tags/n-tags.js +3 -3
  49. package/src/config/src/builder/prototypes/textarea/n-textarea.js +3 -3
  50. package/src/config/src/builder/prototypes/timepicker/n-timepicker.js +3 -3
  51. package/src/config/src/builder/prototypes/transfer/n-transfer.js +3 -3
  52. package/src/confirm/index.js +1 -1
  53. package/src/datepicker/index.js +2 -2
  54. package/src/datetimepicker/index.js +1 -1
  55. package/src/draggable/index.js +5 -5
  56. package/src/draggable/src/draggrid/{draggrid.js → draggrid.jsx} +3 -3
  57. package/src/draggable/src/draggrid-item/{draggrid-item.js → draggrid-item.jsx} +1 -1
  58. package/src/draggable/src/draghandler/draghandler.js +14 -14
  59. package/src/draggable/src/draglist/{draglist.js → draglist.jsx} +3 -3
  60. package/src/draggable/src/draglist-item/{draglist-item.js → draglist-item.jsx} +1 -1
  61. package/src/draggable/src/dropzone/{dropzone.js → dropzone.jsx} +2 -2
  62. package/src/drawer/index.js +1 -1
  63. package/src/durationpicker/index.js +1 -1
  64. package/src/empty/index.js +1 -1
  65. package/src/file/index.js +1 -1
  66. package/src/form/index.js +6 -6
  67. package/src/index.js +59 -59
  68. package/src/index.scss +0 -1
  69. package/src/info/index.js +7 -7
  70. package/src/info/src/info-field/{info-field.js → info-field.jsx} +0 -1
  71. package/src/info/src/info-field/types/{info-field-boolean.js → info-field-boolean.jsx} +1 -1
  72. package/src/info/src/info-field/types/{info-field-datetime.js → info-field-datetime.jsx} +1 -1
  73. package/src/info/src/info-field/types/{info-field-image.js → info-field-image.jsx} +1 -1
  74. package/src/info/src/info-field/types/{info-field-option.js → info-field-option.jsx} +1 -1
  75. package/src/info/src/info-field/types/{info-field-string.js → info-field-string.jsx} +1 -1
  76. package/src/input/index.js +1 -1
  77. package/src/input-number/index.js +1 -1
  78. package/src/loader/index.js +1 -1
  79. package/src/map/index.js +2 -2
  80. package/src/mixins/src/cslo.js +1 -1
  81. package/src/modal/index.js +1 -1
  82. package/src/notification/index.js +1 -1
  83. package/src/paginator/index.js +1 -1
  84. package/src/popover/index.js +3 -3
  85. package/src/preview/index.js +4 -4
  86. package/src/preview/src/preview/{preview.js → preview.jsx} +2 -2
  87. package/src/preview/src/preview-video/{preview-video.js → preview-video.jsx} +4 -4
  88. package/src/radio/index.js +2 -2
  89. package/src/rating/index.js +1 -1
  90. package/src/resizer/index.js +1 -1
  91. package/src/scrollbar/index.js +1 -1
  92. package/src/select/index.js +2 -4
  93. package/src/slider/index.js +1 -3
  94. package/src/switch/index.js +1 -3
  95. package/src/table/index.js +13 -13
  96. package/src/table/src/table/{table.js → table.jsx} +0 -1
  97. package/src/table/src/table-cell/types/{table-cell-boolean.js → table-cell-boolean.jsx} +1 -1
  98. package/src/table/src/table-cell/types/{table-cell-datetime.js → table-cell-datetime.jsx} +1 -1
  99. package/src/table/src/table-cell/types/{table-cell-image.js → table-cell-image.jsx} +1 -1
  100. package/src/table/src/table-cell/types/{table-cell-matrix.js → table-cell-matrix.jsx} +1 -1
  101. package/src/table/src/table-cell/types/{table-cell-option.js → table-cell-option.jsx} +1 -1
  102. package/src/table/src/table-cell/types/{table-cell-select.js → table-cell-select.jsx} +1 -1
  103. package/src/table/src/table-cell/types/{table-cell-string.js → table-cell-string.jsx} +1 -1
  104. package/src/table/src/table-filter/types/{table-filter-boolean.js → table-filter-boolean.jsx} +1 -1
  105. package/src/table/src/table-filter/types/{table-filter-datetime.js → table-filter-datetime.jsx} +1 -1
  106. package/src/table/src/table-filter/types/{table-filter-option.js → table-filter-option.jsx} +1 -1
  107. package/src/table/src/table-filter/types/{table-filter-string.js → table-filter-string.jsx} +1 -1
  108. package/src/tabs/index.js +2 -2
  109. package/src/tags/index.js +2 -2
  110. package/src/textarea/index.js +1 -1
  111. package/src/timepicker/index.js +2 -2
  112. package/src/transfer/index.js +1 -1
  113. package/src/virtualscroller/index.js +1 -1
  114. package/src/virtualscroller/src/virtualscroller/{virtualscroller.beta.js → virtualscroller.jsx} +1 -1
  115. package/types/index.d.ts +44 -0
  116. package/src/file-list/index.js +0 -10
  117. package/src/file-list/index.scss +0 -2
  118. package/src/file-list/src/file-list/file-list.js +0 -187
  119. package/src/file-list/src/file-list/file-list.scss +0 -47
  120. package/src/file-list/src/file-list-item/file-list-item.js +0 -168
  121. package/src/file-list/src/file-list-item/file-list-item.scss +0 -134
  122. package/src/file-list/src/file-list-item/types/file-list-item-image.js +0 -58
  123. package/src/scrollbar/src/scrollbar/scrollbar.js +0 -311
  124. package/src/virtualscroller/src/virtualscroller/virtualscroller.js +0 -267
  125. /package/src/button/src/button/{button.js → button.jsx} +0 -0
  126. /package/src/button/src/button-group/{button-group.js → button-group.jsx} +0 -0
  127. /package/src/cascader/src/cascader/{cascader.js → cascader.jsx} +0 -0
  128. /package/src/cascader/src/cascader-panel/{cascader-panel.js → cascader-panel.jsx} +0 -0
  129. /package/src/checkbox/src/checkbox/{checkbox.js → checkbox.jsx} +0 -0
  130. /package/src/checkbox/src/checkbox-group/{checkbox-group.js → checkbox-group.jsx} +0 -0
  131. /package/src/collapse/src/collapse/{collapse.js → collapse.jsx} +0 -0
  132. /package/src/collapse/src/collapse-item/{collapse-item.js → collapse-item.jsx} +0 -0
  133. /package/src/config/src/config/{config-next.js → config-next.jsx} +0 -0
  134. /package/src/config/src/config/{config.js → config.jsx} +0 -0
  135. /package/src/config/src/reference-panel/{reference-panel.js → reference-panel.jsx} +0 -0
  136. /package/src/config/src/reference-picker/{reference-picker.js → reference-picker.jsx} +0 -0
  137. /package/src/confirm/src/confirm/{confirm.js → confirm.jsx} +0 -0
  138. /package/src/datepicker/src/datepicker/{datepicker.js → datepicker.jsx} +0 -0
  139. /package/src/datepicker/src/datepicker-panel/{datepicker-panel.js → datepicker-panel.jsx} +0 -0
  140. /package/src/datetimepicker/src/datetimepicker/{datetimepicker.js → datetimepicker.jsx} +0 -0
  141. /package/src/drawer/src/drawer/{drawer.js → drawer.jsx} +0 -0
  142. /package/src/durationpicker/src/durationpicker/{durationpicker.js → durationpicker.jsx} +0 -0
  143. /package/src/empty/src/empty-icon/{empty-icon.js → empty-icon.jsx} +0 -0
  144. /package/src/file/src/file/{file.js → file.jsx} +0 -0
  145. /package/src/form/src/form/{form.js → form.jsx} +0 -0
  146. /package/src/form/src/form-frame/{form-frame.js → form-frame.jsx} +0 -0
  147. /package/src/form/src/form-frame-item/{form-frame-item.js → form-frame-item.jsx} +0 -0
  148. /package/src/form/src/form-group/{form-group.js → form-group.jsx} +0 -0
  149. /package/src/form/src/form-item/{form-item.js → form-item.jsx} +0 -0
  150. /package/src/form/src/form-menu/{form-menu.js → form-menu.jsx} +0 -0
  151. /package/src/info/src/info/{info.js → info.jsx} +0 -0
  152. /package/src/info/src/info-column/{info-column.js → info-column.jsx} +0 -0
  153. /package/src/input/src/input/{input.js → input.jsx} +0 -0
  154. /package/src/input-number/src/input-number/{input-number.js → input-number.jsx} +0 -0
  155. /package/src/loader/src/loader/{loader.js → loader.jsx} +0 -0
  156. /package/src/map/src/map/{map.js → map.jsx} +0 -0
  157. /package/src/map/src/map-marker/{map-marker.js → map-marker.jsx} +0 -0
  158. /package/src/modal/src/modal/{modal.js → modal.jsx} +0 -0
  159. /package/src/paginator/src/paginator/{paginator.js → paginator.jsx} +0 -0
  160. /package/src/popover/src/popover/{popover.js → popover.jsx} +0 -0
  161. /package/src/popover/src/popover-group/{popover-group.js → popover-group.jsx} +0 -0
  162. /package/src/popover/src/popover-option/{popover-option.js → popover-option.jsx} +0 -0
  163. /package/src/preview/src/preview-image/{preview-image.js → preview-image.jsx} +0 -0
  164. /package/src/preview/src/preview-plain/{preview-plain.js → preview-plain.jsx} +0 -0
  165. /package/src/radio/src/radio/{radio.js → radio.jsx} +0 -0
  166. /package/src/radio/src/radio-group/{radio-group.js → radio-group.jsx} +0 -0
  167. /package/src/rating/src/rating/{rating.js → rating.jsx} +0 -0
  168. /package/src/resizer/src/resizer/{resizer.js → resizer.jsx} +0 -0
  169. /package/src/scrollbar/src/scrollbar/{scrollbar.next.js → scrollbar.jsx} +0 -0
  170. /package/src/select/src/select/{select.js → select.jsx} +0 -0
  171. /package/src/select/src/select-option/{select-option.js → select-option.jsx} +0 -0
  172. /package/src/slider/src/slider/{slider.js → slider.jsx} +0 -0
  173. /package/src/switch/src/switch/{switch.js → switch.jsx} +0 -0
  174. /package/src/table/src/table-cell/{table-cell.js → table-cell.jsx} +0 -0
  175. /package/src/table/src/table-column/{table-column.js → table-column.jsx} +0 -0
  176. /package/src/table/src/table-filter/{table-filter.js → table-filter.jsx} +0 -0
  177. /package/src/tabs/src/tabs/{tabs.js → tabs.jsx} +0 -0
  178. /package/src/tabs/src/tabs-item/{tabs-item.js → tabs-item.jsx} +0 -0
  179. /package/src/tags/src/tags/{tags.js → tags.jsx} +0 -0
  180. /package/src/tags/src/tags-item/{tags-item.js → tags-item.jsx} +0 -0
  181. /package/src/textarea/src/textarea/{textarea.js → textarea.jsx} +0 -0
  182. /package/src/timepicker/src/timepicker/{timepicker.js → timepicker.jsx} +0 -0
  183. /package/src/timepicker/src/timepicker-panel/{timepicker-panel.js → timepicker-panel.jsx} +0 -0
  184. /package/src/transfer/src/transfer/{transfer.js → transfer.jsx} +0 -0
@@ -1,311 +0,0 @@
1
- import { UUID, Arr, Obj, Dom, Any, Locale, Event, Num } from "@kizmann/pico-js";
2
- import Optiscroll from 'optiscroll';
3
-
4
- export default {
5
-
6
- name: 'NScrollbar',
7
-
8
- provide()
9
- {
10
- return {
11
- NScrollbar: this
12
- };
13
- },
14
-
15
- props: {
16
-
17
- options: {
18
- default()
19
- {
20
- return {};
21
- },
22
- type: [Object]
23
- },
24
-
25
- relative: {
26
- default()
27
- {
28
- return false;
29
- },
30
- type: [Boolean]
31
- },
32
-
33
- fixture: {
34
- default()
35
- {
36
- return false;
37
- },
38
- type: [Boolean]
39
- },
40
-
41
- framerate: {
42
- default()
43
- {
44
- return 5;
45
- },
46
- type: [Number]
47
- },
48
-
49
- wrapClass: {
50
- default()
51
- {
52
- return 'n-scrollbar__wrap';
53
- }
54
- }
55
-
56
- },
57
-
58
- mounted()
59
- {
60
- this.bindAdaptHeight();
61
- this.bindAdaptWidth();
62
- this.bindOptiscroll();
63
-
64
- Event.bind('NScrollbar:resize',
65
- this.onResize, this._.uid);
66
-
67
- Event.bind('NResizer:moved',
68
- this.onUpdate, this._.uid);
69
-
70
- Dom.find(window).on('resize',
71
- this.onResize, this._.uid);
72
-
73
- Dom.find(this.$el).on('sizechange',
74
- this.onSizechange, this._.uid);
75
-
76
- Dom.find(this.$el).on('scroll',
77
- this.onScroll, this._.uid);
78
- },
79
-
80
- updated()
81
- {
82
- if ( this.optiscroll ) {
83
- Dom.find(this.$el).addClass('is-enabled');
84
- }
85
-
86
- if ( this.passedHeight || this.passedWidth ) {
87
- Dom.find(this.$el).addClass('is-ready');
88
- }
89
- },
90
-
91
- beforeUnmount()
92
- {
93
- this.unbindAdaptHeight();
94
- this.unbindAdaptWidth();
95
- this.unbindOptiscroll();
96
-
97
- Event.unbind('NScrollbar:resize',
98
- this._.uid);
99
-
100
- Event.unbind('NResizer:moved',
101
- this._.uid);
102
-
103
- Dom.find(window).off('resize',
104
- null, this._.uid);
105
-
106
- Dom.find(this.$el).off('sizechange',
107
- null, this._.uid);
108
-
109
- Dom.find(this.$el).off('scroll',
110
- null, this._.uid);
111
- },
112
-
113
- methods: {
114
-
115
- scrollTo(x = 0, y = 0, delay = 0)
116
- {
117
- Any.delay(() => this.onScrollTo(x, y), delay);
118
- },
119
-
120
- onScrollTo(x = 0, y = 0)
121
- {
122
- this.optiscroll.scrollTo(x, y, 0);
123
- },
124
-
125
- scrollIntoView(selector, delay = 200)
126
- {
127
- Any.delay(() => this.onScrollIntoView(selector), delay);
128
- },
129
-
130
- onScrollIntoView(selector)
131
- {
132
- this.optiscroll.scrollIntoView(selector, 0);
133
- },
134
-
135
- adaptHeight()
136
- {
137
- let height = Dom.find(this.$refs.content)
138
- .child().innerHeight();
139
-
140
- let window = Dom.find(this.$el)
141
- .height();
142
-
143
- if ( height === this.passedHeight ) {
144
- return;
145
- }
146
-
147
- if ( window ) {
148
- this.passedHeight = height;
149
- }
150
-
151
- let style = {
152
- height: height + 'px'
153
- };
154
-
155
- if ( this.fixture ) {
156
- Dom.find(this.$refs.content).child().css(style);
157
- }
158
-
159
- if ( ! this.relative ) {
160
- return Any.delay(this.onSizechange, 100);
161
- }
162
-
163
- Dom.find(this.$refs.spacer).child().css(style);
164
- },
165
-
166
- bindAdaptHeight()
167
- {
168
- this.refreshHeight = setInterval(this.adaptHeight,
169
- 1000 / this.framerate);
170
- },
171
-
172
- unbindAdaptHeight()
173
- {
174
- clearInterval(this.refreshHeight);
175
- },
176
-
177
- adaptWidth()
178
- {
179
- if ( this.resizeTimer ) {
180
- return;
181
- }
182
-
183
- let width = Dom.find(this.$refs.content)
184
- .child().innerWidth();
185
-
186
- let window = Dom.find(this.$el)
187
- .width();
188
-
189
- if ( width === this.passedWidth ) {
190
- return;
191
- }
192
-
193
- if ( window ) {
194
- this.passedWidth = width;
195
- }
196
-
197
- let style = {
198
- width: width + 'px'
199
- };
200
-
201
- if ( this.fixture ) {
202
- this.onUpdate();
203
- }
204
-
205
- if ( ! this.relative ) {
206
- return Any.delay(this.onSizechange, 100);
207
- }
208
-
209
- Dom.find(this.$refs.spacer).child().css(style);
210
- },
211
-
212
- bindAdaptWidth()
213
- {
214
- this.refreshWidth = setInterval(this.adaptWidth,
215
- 1000 / this.framerate);
216
- },
217
-
218
- unbindAdaptWidth()
219
- {
220
- clearInterval(this.refreshWidth);
221
- },
222
-
223
- onScroll(event)
224
- {
225
- let scrollTop = this.$refs.content
226
- .scrollTop;
227
-
228
- this.$emit('scrollupdate', scrollTop);
229
- },
230
-
231
- onSizechange(event)
232
- {
233
- let height = Dom.find(this.$el).height();
234
-
235
- if ( this.passedHeight || this.passedWidth ) {
236
- Dom.find(this.$el).addClass('is-ready');
237
- }
238
-
239
- this.$emit('sizechange', height);
240
- },
241
-
242
- onResize(event)
243
- {
244
- if ( ! this.fixture ) {
245
- return;
246
- }
247
-
248
- Dom.find(this.$refs.content)
249
- .child().css(null);
250
-
251
- clearTimeout(this.resizeTimer);
252
-
253
- this.resizeTimer = setTimeout(
254
- this.onUpdate, 500);
255
-
256
- Dom.find(this.$el).fire('resized');
257
- },
258
-
259
- onUpdate()
260
- {
261
- if ( ! this.fixture ) {
262
- return;
263
- }
264
-
265
- let $child = Dom.find(this.$refs.content)
266
- .child();
267
-
268
- let height = $child.actual(() => {
269
- return $child.scrollHeight();
270
- });
271
-
272
- if ( height !== this.passedHeight ) {
273
- $child.css({ height: height + 'px' });
274
- }
275
-
276
- let width = $child.actual(() => {
277
- return $child.scrollWidth();
278
- });
279
-
280
- if ( width !== this.passedWidth ) {
281
- $child.css({ width: width + 'px' });
282
- }
283
-
284
- delete this.resizeTimer;
285
- }
286
-
287
- },
288
-
289
- render()
290
- {
291
- let classList = [
292
- 'n-scrollbar'
293
- ];
294
-
295
- return (
296
- <div class={classList} {...Obj.except(this.$attrs, ['class'])}>
297
- <div class="n-scrollbar-content" ref="content">
298
- <div class={this.wrapClass}>
299
- { this.$slots.default && this.$slots.default() }
300
- </div>
301
- </div>
302
- <div class="n-scrollbar-spacer" ref="spacer">
303
- <div class={this.wrapClass}>
304
- { /* Adapt inner height */ }
305
- </div>
306
- </div>
307
- </div>
308
- );
309
- }
310
-
311
- }
@@ -1,267 +0,0 @@
1
- import { UUID, Arr, Obj, Num, Dom, Any, Locale, Event } from "@kizmann/pico-js";
2
-
3
- export default {
4
-
5
- name: 'NVirtualscroller',
6
-
7
- model: {
8
- prop: 'items'
9
- },
10
-
11
- props: {
12
-
13
- items: {
14
- default()
15
- {
16
- return [];
17
- }
18
- },
19
-
20
- itemHeight: {
21
- default()
22
- {
23
- return 30;
24
- }
25
- },
26
-
27
- viewportHeight: {
28
- default()
29
- {
30
- return false;
31
- }
32
- },
33
-
34
- renderNode: {
35
- default()
36
- {
37
- return null;
38
- }
39
- },
40
-
41
- bufferItems: {
42
- default()
43
- {
44
- return 8;
45
- },
46
- type: [Number]
47
- },
48
-
49
- frameRate: {
50
- default()
51
- {
52
- return 10;
53
- },
54
- type: [Number]
55
- }
56
-
57
- },
58
-
59
- methods: {
60
-
61
- limitedRefreshDriver(forceUpdate = false, overrideBuffer = false)
62
- {
63
- let framerateTimer = (val = null) => {
64
-
65
- if ( ! Any.isEmpty(val) ) {
66
- this.refreshDriverFramerate = val;
67
- }
68
-
69
- return this.refreshDriverFramerate;
70
- };
71
-
72
- Any.framerate(() => {
73
-
74
- clearTimeout(this.refreshDriverDebounce);
75
-
76
- this.refreshDriverDebounce = setTimeout(() => {
77
- this.refreshDriver(forceUpdate, overrideBuffer);
78
- }, (1000 / this.frameRate) + 50);
79
-
80
- this.refreshDriver(forceUpdate, overrideBuffer);
81
-
82
- }, this.frameRate, framerateTimer)();
83
- },
84
-
85
- refreshDriver(forceUpdate = false, overrideBuffer = false)
86
- {
87
- if ( ! this.$refs.viewport ) {
88
- return;
89
- }
90
-
91
- this.latestBufferItems = this.latestBufferItems || this.bufferItems;
92
-
93
- if ( overrideBuffer ) {
94
- this.latestBufferItems = this.bufferItems / 2;
95
- }
96
-
97
- let scrollTop = 0, scrollFix = this.scrollFix || scrollTop;
98
-
99
- if ( this.$refs.viewport ) {
100
- scrollTop = this.$refs.viewport.$el.scrollTop;
101
- }
102
-
103
- let scrollBuffer = (this.latestBufferItems / 2 * this.itemHeight);
104
-
105
- if ( scrollTop > scrollFix + scrollBuffer || scrollTop < scrollFix - scrollBuffer ) {
106
- scrollFix = scrollTop;
107
- }
108
-
109
- let options = {
110
- bufferItems: this.latestBufferItems,
111
- totalItems: this.items.length,
112
- viewportHeight: this.height,
113
- minRowHeight: this.itemHeight,
114
- scrollTop: scrollTop,
115
- };
116
-
117
- if ( this.scrollFix === scrollFix && ! forceUpdate ) {
118
- return;
119
- }
120
-
121
- this.scrollFix = scrollFix;
122
-
123
- let newState = virtualScrollDriver(options, this.state, () => {
124
- return this.itemHeight;
125
- });
126
-
127
- let isEqualState = Arr.reduce(Any.keys(newState), (merge, key) => {
128
- return merge && this.state[key] === newState[key];
129
- }, true);
130
-
131
- this.state = newState;
132
-
133
- if ( isEqualState ) {
134
- return;
135
- }
136
-
137
- this.veUpdate++;
138
- },
139
-
140
- discoverHeight()
141
- {
142
- if ( this.viewportHeight ) {
143
- this.height = Dom.find(this.$el).height();
144
- }
145
-
146
- if ( ! this.viewportHeight ) {
147
- this.height = this.items.length * this.itemHeight;
148
- }
149
-
150
- if ( this.height === 0 ) {
151
- return Any.delay(this.discoverHeight, 100);
152
- }
153
-
154
- Any.async(() => this.limitedRefreshDriver(true, false));
155
- },
156
-
157
- eventScroll()
158
- {
159
- Any.async(() => this.limitedRefreshDriver(false, false));
160
- },
161
-
162
- eventScrollstop()
163
- {
164
- Any.async(() => this.limitedRefreshDriver(false, false));
165
- }
166
-
167
- },
168
-
169
- data()
170
- {
171
- return {
172
- height: 0, scrollFix: -1, veUpdate: 0
173
- };
174
- },
175
-
176
- beforeMount()
177
- {
178
- this.state = {
179
- items: Arr.make(this.items.length)
180
- };
181
- },
182
-
183
- mounted()
184
- {
185
- this.$watch('items', this.discoverHeight);
186
-
187
- let ident = {
188
- _uid: this.uid
189
- };
190
-
191
- Dom.find(this.$el).on('scrollstop', this.eventScrollstop, ident);
192
-
193
- Dom.find(this.$el).observerResize(this.discoverHeight)(this.$el);
194
- },
195
-
196
- beforeDestroy()
197
- {
198
- let ident = {
199
- _uid: this.uid
200
- };
201
-
202
- Dom.find(this.$el).off('scrollstop', null, ident);
203
- },
204
-
205
- renderItems(start, count)
206
- {
207
- return Arr.each(this.items.slice(start, start + count), (value, index) => {
208
- return this.renderNode({ value, index });
209
- });
210
- },
211
-
212
- renderBody()
213
- {
214
- if ( ! this.items.length ) {
215
- return this.$slots.empty || null;
216
- }
217
-
218
- if ( this.viewportHeight === false ) {
219
- return Arr.each(this.items, (value, index) => {
220
- return this.renderNode({ value, index });
221
- });
222
- }
223
-
224
- let targetHeight = Obj.get(this.state, 'targetHeight');
225
-
226
- let style = {
227
- overflow: 'auto', overflowAnchor: 'none', outline: 'none', height: this.height + 'px'
228
- };
229
-
230
- let events = {
231
- scroll: this.eventScroll
232
- };
233
-
234
- return (
235
- <NScrollbar ref="viewport" on={events} style={style}>
236
- <div key={this.veUpdate} style={{ height: targetHeight ? targetHeight + 'px' : 'auto', overflow: 'hidden' }}>
237
- { ! Any.isEmpty(this.state.topPlaceholderHeight) &&
238
- <div draggable={false} style={{ height: this.state.topPlaceholderHeight + 'px' }}></div>
239
- }
240
- { ! Any.isEmpty(this.state.middleItemCount) &&
241
- this.ctor('renderItems')(this.state.firstMiddleItem, this.state.middleItemCount)
242
- }
243
- { ! Any.isEmpty(this.state.middlePlaceholderHeight) &&
244
- <div draggable={false} style={{ height: this.state.middlePlaceholderHeight + 'px' }}></div>
245
- }
246
- { ! Any.isEmpty(this.state.lastItemCount) &&
247
- this.ctor('renderItems')(this.items.length - this.state.lastItemCount, this.state.lastItemCount)
248
- }
249
- </div>
250
- </NScrollbar>
251
- );
252
- },
253
-
254
- render($render)
255
- {
256
- this.$render = $render;
257
-
258
- return (
259
- <div class="n-virtualscroller">
260
- { this.$slots.before || null }
261
- { this.ctor('renderBody')() }
262
- { this.$slots.default || null }
263
- </div>
264
- );
265
- }
266
-
267
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes