@progress/kendo-vue-layout 3.1.1 → 3.1.2-dev.202203221454

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 (52) hide show
  1. package/dist/cdn/js/kendo-vue-layout.js +1 -1
  2. package/dist/es/package-metadata.js +1 -1
  3. package/dist/es/panelbar/PanelBar.d.ts +40 -0
  4. package/dist/es/panelbar/PanelBar.js +329 -0
  5. package/dist/es/panelbar/PanelBarItem.d.ts +35 -0
  6. package/dist/es/panelbar/PanelBarItem.js +219 -0
  7. package/dist/es/panelbar/interfaces/NavigationAction.d.ts +8 -0
  8. package/dist/es/panelbar/interfaces/NavigationAction.js +9 -0
  9. package/dist/es/panelbar/interfaces/PanelBarItemClickEventArguments.d.ts +7 -0
  10. package/dist/es/panelbar/interfaces/PanelBarItemClickEventArguments.js +0 -0
  11. package/dist/es/panelbar/interfaces/PanelBarItemProps.d.ts +85 -0
  12. package/dist/es/panelbar/interfaces/PanelBarItemProps.js +0 -0
  13. package/dist/es/panelbar/interfaces/PanelBarProps.d.ts +54 -0
  14. package/dist/es/panelbar/interfaces/PanelBarProps.js +0 -0
  15. package/dist/es/panelbar/interfaces/PanelBarSelectEventArguments.d.ts +13 -0
  16. package/dist/es/panelbar/interfaces/PanelBarSelectEventArguments.js +0 -0
  17. package/dist/es/panelbar/interfaces/RenderPanelBarItem.d.ts +14 -0
  18. package/dist/es/panelbar/interfaces/RenderPanelBarItem.js +0 -0
  19. package/dist/es/panelbar/util.d.ts +49 -0
  20. package/dist/es/panelbar/util.js +246 -0
  21. package/dist/es/splitter/Splitter.d.ts +86 -0
  22. package/dist/es/splitter/Splitter.js +439 -0
  23. package/dist/es/splitter/SplitterBar.d.ts +50 -0
  24. package/dist/es/splitter/SplitterBar.js +231 -0
  25. package/dist/es/splitter/SplitterPane.d.ts +109 -0
  26. package/dist/es/splitter/SplitterPane.js +65 -0
  27. package/dist/npm/package-metadata.js +1 -1
  28. package/dist/npm/panelbar/PanelBar.d.ts +40 -0
  29. package/dist/npm/panelbar/PanelBar.js +343 -0
  30. package/dist/npm/panelbar/PanelBarItem.d.ts +35 -0
  31. package/dist/npm/panelbar/PanelBarItem.js +230 -0
  32. package/dist/npm/panelbar/interfaces/NavigationAction.d.ts +8 -0
  33. package/dist/npm/panelbar/interfaces/NavigationAction.js +12 -0
  34. package/dist/npm/panelbar/interfaces/PanelBarItemClickEventArguments.d.ts +7 -0
  35. package/dist/npm/panelbar/interfaces/PanelBarItemClickEventArguments.js +2 -0
  36. package/dist/npm/panelbar/interfaces/PanelBarItemProps.d.ts +85 -0
  37. package/dist/npm/panelbar/interfaces/PanelBarItemProps.js +2 -0
  38. package/dist/npm/panelbar/interfaces/PanelBarProps.d.ts +54 -0
  39. package/dist/npm/panelbar/interfaces/PanelBarProps.js +2 -0
  40. package/dist/npm/panelbar/interfaces/PanelBarSelectEventArguments.d.ts +13 -0
  41. package/dist/npm/panelbar/interfaces/PanelBarSelectEventArguments.js +2 -0
  42. package/dist/npm/panelbar/interfaces/RenderPanelBarItem.d.ts +14 -0
  43. package/dist/npm/panelbar/interfaces/RenderPanelBarItem.js +2 -0
  44. package/dist/npm/panelbar/util.d.ts +49 -0
  45. package/dist/npm/panelbar/util.js +264 -0
  46. package/dist/npm/splitter/Splitter.d.ts +86 -0
  47. package/dist/npm/splitter/Splitter.js +453 -0
  48. package/dist/npm/splitter/SplitterBar.d.ts +50 -0
  49. package/dist/npm/splitter/SplitterBar.js +241 -0
  50. package/dist/npm/splitter/SplitterPane.d.ts +109 -0
  51. package/dist/npm/splitter/SplitterPane.js +75 -0
  52. package/package.json +10 -10
@@ -0,0 +1,453 @@
1
+ "use strict";
2
+
3
+ var __assign = undefined && undefined.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+
8
+ for (var p in s) {
9
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
10
+ }
11
+ }
12
+
13
+ return t;
14
+ };
15
+
16
+ return __assign.apply(this, arguments);
17
+ };
18
+
19
+ var __rest = undefined && undefined.__rest || function (s, e) {
20
+ var t = {};
21
+
22
+ for (var p in s) {
23
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
24
+ }
25
+
26
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
27
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
28
+ }
29
+ return t;
30
+ };
31
+
32
+ Object.defineProperty(exports, "__esModule", {
33
+ value: true
34
+ });
35
+ exports.SplitterVue2 = exports.Splitter = void 0; // @ts-ignore
36
+
37
+ var Vue = require("vue");
38
+
39
+ var allVue = Vue;
40
+ var gh = allVue.h;
41
+
42
+ var SplitterPane_1 = require("./SplitterPane");
43
+
44
+ var SplitterBar_1 = require("./SplitterBar");
45
+
46
+ var kendo_vue_common_1 = require("@progress/kendo-vue-common");
47
+
48
+ var kendo_vue_common_2 = require("@progress/kendo-vue-common");
49
+
50
+ var package_metadata_1 = require("../package-metadata");
51
+ /**
52
+ * @hidden
53
+ */
54
+
55
+
56
+ var PANE_DEFAULTS = {
57
+ collapsible: false,
58
+ collapsed: false,
59
+ resizable: true,
60
+ scrollable: true
61
+ };
62
+ /**
63
+ * @hidden
64
+ */
65
+
66
+ var DOUBLE_CLICK_WAIT_TIME = 150; // tslint:enable:max-line-length
67
+
68
+ var SplitterVue2 = {
69
+ name: 'KendoSplitter',
70
+ props: {
71
+ orientation: {
72
+ type: String,
73
+ default: 'vertical',
74
+ validator: function validator(value) {
75
+ return ['vertical', 'horizontal'].includes(value);
76
+ }
77
+ },
78
+ panes: Array,
79
+ defaultPanes: Array
80
+ },
81
+ computed: {
82
+ isControlledState: function isControlledState() {
83
+ return this.$props.panes !== undefined;
84
+ },
85
+ panes: function panes() {
86
+ return this.panesDuringOnChange !== undefined ? this.panesDuringOnChange : this.isControlledState ? this.$props.panes : this.state.panes;
87
+ },
88
+ orientation: function orientation() {
89
+ return this.$props.orientation || 'horizontal';
90
+ },
91
+ isRtl: function isRtl() {
92
+ return this._container && getComputedStyle(this._container).direction === 'rtl' || false;
93
+ } // panesContent(): React.ReactNode[] {
94
+ // return React.Children.toArray(this.$props.children).filter(c => c);
95
+ // },
96
+
97
+ },
98
+ created: function created() {
99
+ kendo_vue_common_2.validatePackage(package_metadata_1.packageMetadata); // private panesDuringOnChange?: SplitterPaneProps[];
100
+ },
101
+ data: function data() {
102
+ return {
103
+ isDragging: false,
104
+ dragIndex: undefined,
105
+ startTime: 0,
106
+ originalX: 0,
107
+ originalY: 0,
108
+ originalPrevSize: 0,
109
+ originalNextSize: 0,
110
+ panes: this.$props.defaultPanes || []
111
+ };
112
+ },
113
+ // @ts-ignore
114
+ setup: !gh ? undefined : function () {
115
+ var v3 = !!gh;
116
+ return {
117
+ v3: v3
118
+ };
119
+ },
120
+ // @ts-ignore
121
+ render: function render(createElement) {
122
+ var _this = this;
123
+
124
+ var h = gh || createElement;
125
+ var panesContent = this.panesContent;
126
+ var panesOptions = this.panesOptions(panesContent);
127
+ var className = kendo_vue_common_1.classNames('k-widget', 'k-splitter', 'k-splitter-flex', "k-splitter-" + this.orientation, this.$props.className);
128
+ this.validatePanes(panesOptions);
129
+ return h("div", {
130
+ style: this.$props.style,
131
+ ref: function ref(_ref) {
132
+ return _this._container = _ref;
133
+ },
134
+ "class": className
135
+ }, [this.mapSplitterPanes(panesOptions, panesContent)]);
136
+ },
137
+ methods: {
138
+ validatePanes: function validatePanes(panesOptions) {
139
+ var withoutSize = panesOptions.filter(function (pane) {
140
+ return pane.size === undefined;
141
+ });
142
+
143
+ if (!withoutSize.length) {
144
+ throw new Error('The Splitter should have at least one pane without a set size.');
145
+ }
146
+ },
147
+ mapPaneOptions: function mapPaneOptions(panes, panesContent) {
148
+ var orientation = this.orientation;
149
+ var _a = this.state,
150
+ dragIndex = _a.dragIndex,
151
+ isDragging = _a.isDragging;
152
+ var paneOptions = [];
153
+
154
+ for (var index = 0; index < panesContent.length; index++) {
155
+ var containsSplitter = false;
156
+ var paneContent = panesContent[index]; // if (React.isValidElement(paneContent)) {
157
+ // containsSplitter = (paneContent.type as React.ComponentType).displayName === 'Splitter';
158
+ // }
159
+
160
+ var overlay = false;
161
+
162
+ if (isDragging && dragIndex !== undefined) {
163
+ overlay = dragIndex === index || dragIndex + 1 === index;
164
+ }
165
+
166
+ paneOptions.push(__assign(__assign(__assign({}, PANE_DEFAULTS), {
167
+ orientation: orientation,
168
+ containsSplitter: containsSplitter,
169
+ overlay: overlay
170
+ }), (panes || [])[index]));
171
+ }
172
+
173
+ return paneOptions;
174
+ },
175
+ mapSplitterPanes: function mapSplitterPanes(panes, panesContent) {
176
+ var _this = this;
177
+
178
+ return panes.map(function (pane, index) {
179
+ var splitterBar;
180
+ var paneKey = index * 2;
181
+ var barKey = paneKey + 1;
182
+
183
+ if (index + 1 < panes.length) {
184
+ var next = panes[index + 1];
185
+ splitterBar = h(SplitterBar_1.SplitterBar, {
186
+ key: barKey,
187
+ index: index,
188
+ attrs: this.v3 ? undefined : {
189
+ index: index,
190
+ orientation: pane.orientation,
191
+ prev: pane,
192
+ next: next
193
+ },
194
+ orientation: pane.orientation,
195
+ prev: pane,
196
+ next: next,
197
+ onDrag: _this.onBarDragResize,
198
+ on: this.v3 ? undefined : {
199
+ "drag": _this.onBarDragResize,
200
+ "toggle": _this.onBarToggle,
201
+ "keyboardResize": _this.onBarKeyboardResize
202
+ },
203
+ onToggle: _this.onBarToggle,
204
+ onKeyboardResize: _this.onBarKeyboardResize
205
+ });
206
+ }
207
+
208
+ var splitterPane = h(SplitterPane_1.SplitterPane, {
209
+ key: paneKey
210
+ }, [panesContent[index]]);
211
+ return [splitterPane, splitterBar];
212
+ });
213
+ },
214
+ onBarToggle: function onBarToggle(index, event) {
215
+ var _this = this;
216
+
217
+ var panesOptions = this.panesOptions(this.panesContent);
218
+ var updatedState = panesOptions.map(function (pane, idx) {
219
+ var paneProps = _this.getPaneProps(pane);
220
+
221
+ if (idx === index) {
222
+ return __assign(__assign({}, paneProps), {
223
+ collapsed: !pane.collapsed
224
+ });
225
+ } else {
226
+ return __assign({}, paneProps);
227
+ }
228
+ });
229
+
230
+ if (this.$props.onChange) {
231
+ this.$props.onChange({
232
+ newState: updatedState,
233
+ isLast: true,
234
+ nativeEvent: event
235
+ });
236
+ }
237
+ },
238
+ onBarDragResize: function onBarDragResize(event, barElement, index, isFirst, isLast) {
239
+ var time = new Date().getTime();
240
+ var pageX = event.pageX,
241
+ pageY = event.pageY;
242
+
243
+ var _a = this.surroudingPanes(barElement),
244
+ prevElement = _a.prevElement,
245
+ nextElement = _a.nextElement;
246
+
247
+ if (!prevElement || !nextElement) {
248
+ return;
249
+ }
250
+
251
+ if (isFirst) {
252
+ this.setState({
253
+ isDragging: true,
254
+ dragIndex: index,
255
+ startTime: time,
256
+ originalX: pageX,
257
+ originalY: pageY,
258
+ originalPrevSize: this.elementSize(prevElement),
259
+ originalNextSize: this.elementSize(nextElement)
260
+ });
261
+ return;
262
+ }
263
+
264
+ var _b = this.state,
265
+ originalPrevSize = _b.originalPrevSize,
266
+ originalNextSize = _b.originalNextSize,
267
+ startTime = _b.startTime,
268
+ originalX = _b.originalX,
269
+ originalY = _b.originalY;
270
+
271
+ if (!isFirst && time - startTime < DOUBLE_CLICK_WAIT_TIME) {
272
+ if (isLast) {
273
+ this.resetDragState();
274
+ }
275
+
276
+ return;
277
+ }
278
+
279
+ var delta;
280
+
281
+ if (this.orientation === 'vertical') {
282
+ delta = pageY - originalY;
283
+ } else if (this.isRtl) {
284
+ delta = originalX - pageX;
285
+ } else {
286
+ delta = pageX - originalX;
287
+ }
288
+
289
+ this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, isLast, event);
290
+
291
+ if (isLast) {
292
+ this.resetDragState();
293
+ }
294
+ },
295
+ onBarKeyboardResize: function onBarKeyboardResize(barElement, index, delta, event) {
296
+ var _a = this.surroudingPanes(barElement),
297
+ prevElement = _a.prevElement,
298
+ nextElement = _a.nextElement;
299
+
300
+ var originalPrevSize = this.elementSize(prevElement);
301
+ var originalNextSize = this.elementSize(nextElement);
302
+ this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, true, event);
303
+ },
304
+ surroudingPanes: function surroudingPanes(barElement) {
305
+ return {
306
+ prevElement: barElement.previousElementSibling,
307
+ nextElement: barElement.nextElementSibling
308
+ };
309
+ },
310
+ containerSize: function containerSize() {
311
+ if (!this._container) {
312
+ return 0;
313
+ }
314
+
315
+ return this.elementSize(this._container, true);
316
+ },
317
+ isPercent: function isPercent(size) {
318
+ return /%$/.test(size);
319
+ },
320
+ toPixels: function toPixels(size, splitterSize) {
321
+ var result = parseInt(size, 10);
322
+
323
+ if (this.isPercent(size)) {
324
+ result = splitterSize * result / 100;
325
+ }
326
+
327
+ return result;
328
+ },
329
+ panesOptions: function panesOptions(panesContent) {
330
+ return this.mapPaneOptions(this.panes, panesContent);
331
+ },
332
+ resetDragState: function resetDragState() {
333
+ this.setState({
334
+ isDragging: false,
335
+ dragIndex: undefined,
336
+ startTime: 0,
337
+ originalX: 0,
338
+ originalY: 0,
339
+ originalPrevSize: 0,
340
+ originalNextSize: 0
341
+ });
342
+ },
343
+ elementSize: function elementSize(el, isContainer) {
344
+ var sizeType = isContainer ? 'client' : 'offset';
345
+
346
+ if (this.orientation === 'vertical') {
347
+ return el[sizeType + "Height"];
348
+ } else {
349
+ return el[sizeType + "Width"];
350
+ }
351
+ },
352
+ clamp: function clamp(min, max, v) {
353
+ return Math.min(max, Math.max(min, v));
354
+ },
355
+ fixedSize: function fixedSize(size) {
356
+ return size && size.length > 0;
357
+ },
358
+ resize: function resize(prevIndex, nextIndex, originalPrevSize, originalNextSize, delta, isLast, event) {
359
+ var _this = this;
360
+
361
+ var panesOptions = this.panesOptions(this.panesContent);
362
+ var prevOptions = panesOptions[prevIndex];
363
+ var nextOptions = panesOptions[nextIndex];
364
+ var total = originalPrevSize + originalNextSize;
365
+ var splitterSize = this.containerSize();
366
+
367
+ var px = function px(s) {
368
+ return _this.toPixels(s, splitterSize);
369
+ };
370
+
371
+ var prevDragState = {
372
+ index: prevIndex,
373
+ initialSize: originalPrevSize,
374
+ min: px(prevOptions.min) || total - px(nextOptions.max) || 0,
375
+ max: px(prevOptions.max) || total - px(nextOptions.min) || total
376
+ };
377
+ var nextDragState = {
378
+ index: nextIndex,
379
+ initialSize: originalNextSize,
380
+ min: px(nextOptions.min) || total - px(prevOptions.max) || 0,
381
+ max: px(nextOptions.max) || total - px(prevOptions.min) || total
382
+ };
383
+
384
+ var resize = function resize(paneState, change) {
385
+ var pane = panesOptions[paneState.index];
386
+
387
+ var newSize = _this.clamp(paneState.min, paneState.max, paneState.initialSize + change);
388
+
389
+ if (_this.isPercent(pane.size || '')) {
390
+ return 100 * newSize / splitterSize + '%';
391
+ } else {
392
+ return newSize + 'px';
393
+ }
394
+ };
395
+
396
+ var prevSize;
397
+ var nextSize;
398
+
399
+ if (this.fixedSize(prevOptions.size) && this.fixedSize(nextOptions.size)) {
400
+ prevSize = resize(prevDragState, delta);
401
+ nextSize = resize(nextDragState, -delta);
402
+ } else if (nextOptions.collapsible || this.fixedSize(nextOptions.size)) {
403
+ nextSize = resize(nextDragState, -delta);
404
+ } else {
405
+ prevSize = resize(prevDragState, delta);
406
+ }
407
+
408
+ var updatedState = panesOptions.map(function (pane, idx) {
409
+ var paneProps = _this.getPaneProps(pane);
410
+
411
+ if (idx === prevIndex) {
412
+ return __assign(__assign({}, paneProps), {
413
+ size: prevSize
414
+ });
415
+ } else if (idx === nextIndex) {
416
+ return __assign(__assign({}, paneProps), {
417
+ size: nextSize
418
+ });
419
+ } else {
420
+ return __assign({}, paneProps);
421
+ }
422
+ });
423
+ this.panesDuringOnChange = updatedState;
424
+
425
+ if (!this.isControlledState) {
426
+ this.setState({
427
+ panes: updatedState
428
+ });
429
+ }
430
+
431
+ if (this.$props.onChange) {
432
+ this.$props.onChange({
433
+ newState: updatedState,
434
+ isLast: isLast,
435
+ nativeEvent: event
436
+ });
437
+ }
438
+
439
+ this.panesDuringOnChange = undefined;
440
+ },
441
+ getPaneProps: function getPaneProps(pane) {
442
+ var orientation = pane.orientation,
443
+ overlay = pane.overlay,
444
+ containsSplitter = pane.containsSplitter,
445
+ others = __rest(pane, ["orientation", "overlay", "containsSplitter"]);
446
+
447
+ return others;
448
+ }
449
+ }
450
+ };
451
+ exports.SplitterVue2 = SplitterVue2;
452
+ var Splitter = SplitterVue2;
453
+ exports.Splitter = Splitter;
@@ -0,0 +1,50 @@
1
+ import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from '../additionalTypes';
2
+ declare type DefaultData<V> = object | ((this: V) => {});
3
+ declare type DefaultMethods<V> = {
4
+ [key: string]: (this: V, ...args: any[]) => any;
5
+ };
6
+ import { SplitterPaneExtendedProps } from './SplitterPane';
7
+ /**
8
+ * @hidden
9
+ */
10
+ export interface SplitterBarProps {
11
+ orientation: 'vertical' | 'horizontal' | string;
12
+ index: number;
13
+ prev: SplitterPaneExtendedProps;
14
+ next: SplitterPaneExtendedProps;
15
+ onDrag?: (event: any, element: HTMLDivElement, index: number, isFirst: boolean, isLast: boolean) => void;
16
+ onToggle?: (index: number, nativeEvent: any) => void;
17
+ onKeyboardResize?: (element: HTMLDivElement, index: number, delta: number, nativeEvent: any) => void;
18
+ }
19
+ /**
20
+ * @hidden
21
+ */
22
+ export interface SplitterBarState {
23
+ draggable: any | null;
24
+ }
25
+ /**
26
+ * @hidden
27
+ */
28
+ export interface SplitterBarComputed {
29
+ [key: string]: any;
30
+ }
31
+ /**
32
+ * @hidden
33
+ */
34
+ export interface SplitterBarMethods {
35
+ [key: string]: any;
36
+ }
37
+ /**
38
+ * @hidden
39
+ */
40
+ export interface SplitterBarData {
41
+ focused: boolean;
42
+ }
43
+ /**
44
+ * @hidden
45
+ */
46
+ export interface SplitterBarAll extends Vue2type, SplitterBarMethods, SplitterBarData, SplitterBarComputed, SplitterBarState {
47
+ }
48
+ declare let SplitterBarVue2: ComponentOptions<SplitterBarAll, DefaultData<SplitterBarData>, DefaultMethods<SplitterBarAll>, SplitterBarComputed, RecordPropsDefinition<SplitterBarProps>>;
49
+ declare const SplitterBar: DefineComponent<SplitterBarProps, any, SplitterBarData, SplitterBarComputed, SplitterBarMethods, {}, {}, {}, string, SplitterBarProps, SplitterBarProps, {}>;
50
+ export { SplitterBar, SplitterBarVue2 };