primevue 4.0.7 → 4.1.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.
- package/autocomplete/AutoComplete.vue +50 -50
- package/autocomplete/index.d.ts +5 -1
- package/autocomplete/index.mjs +11 -8
- package/autocomplete/index.mjs.map +1 -1
- package/autocomplete/style/index.d.ts +4 -0
- package/autocomplete/style/index.mjs +3 -2
- package/autocomplete/style/index.mjs.map +1 -1
- package/button/BaseButton.vue +2 -2
- package/button/Button.vue +1 -1
- package/button/index.d.ts +2 -2
- package/button/index.mjs +7 -6
- package/button/index.mjs.map +1 -1
- package/carousel/Carousel.vue +2 -7
- package/carousel/index.mjs +2 -7
- package/carousel/index.mjs.map +1 -1
- package/carousel/style/index.mjs +1 -1
- package/carousel/style/index.mjs.map +1 -1
- package/cascadeselect/BaseCascadeSelect.vue +4 -0
- package/cascadeselect/CascadeSelect.vue +53 -10
- package/cascadeselect/CascadeSelectSub.vue +24 -27
- package/cascadeselect/index.d.ts +41 -1
- package/cascadeselect/index.mjs +114 -73
- package/cascadeselect/index.mjs.map +1 -1
- package/cascadeselect/style/index.mjs +13 -6
- package/cascadeselect/style/index.mjs.map +1 -1
- package/colorpicker/BaseColorPicker.vue +2 -1
- package/colorpicker/ColorPicker.vue +3 -3
- package/colorpicker/index.d.ts +6 -1
- package/colorpicker/index.mjs +11 -4
- package/colorpicker/index.mjs.map +1 -1
- package/config/index.d.ts +9 -3
- package/confirmationoptions/index.d.ts +12 -0
- package/confirmdialog/ConfirmDialog.vue +11 -1
- package/confirmdialog/index.d.ts +3 -7
- package/confirmdialog/index.mjs +12 -2
- package/confirmdialog/index.mjs.map +1 -1
- package/contextmenu/BaseContextMenu.vue +4 -0
- package/contextmenu/ContextMenu.vue +37 -10
- package/contextmenu/index.d.ts +10 -5
- package/contextmenu/index.mjs +57 -28
- package/contextmenu/index.mjs.map +1 -1
- package/contextmenu/style/index.mjs +10 -5
- package/contextmenu/style/index.mjs.map +1 -1
- package/datatable/BaseDataTable.vue +4 -0
- package/datatable/DataTable.vue +5 -10
- package/datatable/HeaderCheckbox.vue +1 -1
- package/datatable/TableBody.vue +1 -1
- package/datatable/TableHeader.vue +51 -51
- package/datatable/index.d.ts +5 -0
- package/datatable/index.mjs +90 -87
- package/datatable/index.mjs.map +1 -1
- package/datatable/style/index.mjs +1 -1
- package/datatable/style/index.mjs.map +1 -1
- package/datepicker/DatePicker.vue +13 -11
- package/datepicker/index.d.ts +2 -10
- package/datepicker/index.mjs +12 -10
- package/datepicker/index.mjs.map +1 -1
- package/datepicker/style/index.mjs +3 -3
- package/datepicker/style/index.mjs.map +1 -1
- package/dialog/Dialog.vue +4 -10
- package/dialog/index.mjs +3 -10
- package/dialog/index.mjs.map +1 -1
- package/drawer/index.d.ts +5 -1
- package/fieldset/index.d.ts +2 -6
- package/fileupload/index.d.ts +1 -1
- package/floatlabel/BaseFloatLabel.vue +6 -1
- package/floatlabel/index.d.ts +7 -2
- package/floatlabel/index.mjs +6 -1
- package/floatlabel/index.mjs.map +1 -1
- package/floatlabel/style/index.d.ts +2 -2
- package/floatlabel/style/index.mjs +10 -2
- package/floatlabel/style/index.mjs.map +1 -1
- package/focustrap/index.d.ts +1 -1
- package/galleria/index.d.ts +8 -8
- package/galleria/style/index.mjs +2 -2
- package/galleria/style/index.mjs.map +1 -1
- package/iftalabel/BaseIftaLabel.vue +16 -0
- package/iftalabel/IftaLabel.vue +15 -0
- package/iftalabel/index.d.ts +130 -0
- package/iftalabel/index.mjs +32 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/package.json +11 -0
- package/iftalabel/style/index.d.ts +19 -0
- package/iftalabel/style/index.mjs +17 -0
- package/iftalabel/style/index.mjs.map +1 -0
- package/iftalabel/style/package.json +6 -0
- package/imagecompare/BaseImageCompare.vue +30 -0
- package/imagecompare/ImageCompare.vue +24 -0
- package/imagecompare/index.d.ts +149 -0
- package/imagecompare/index.mjs +61 -0
- package/imagecompare/index.mjs.map +1 -0
- package/imagecompare/package.json +11 -0
- package/imagecompare/style/index.d.ts +23 -0
- package/imagecompare/style/index.mjs +18 -0
- package/imagecompare/style/index.mjs.map +1 -0
- package/imagecompare/style/package.json +6 -0
- package/inputgroup/BaseInputGroup.vue +0 -6
- package/inputgroup/InputGroup.vue +1 -10
- package/inputgroup/index.d.ts +0 -5
- package/inputgroup/index.mjs +1 -18
- package/inputgroup/index.mjs.map +1 -1
- package/inputgroup/style/index.mjs +2 -7
- package/inputgroup/style/index.mjs.map +1 -1
- package/inputmask/InputMask.vue +23 -17
- package/inputmask/index.mjs +21 -16
- package/inputmask/index.mjs.map +1 -1
- package/inputnumber/InputNumber.vue +2 -2
- package/inputnumber/index.d.ts +1 -1
- package/inputnumber/index.mjs +2 -2
- package/inputnumber/index.mjs.map +1 -1
- package/inputnumber/style/index.mjs +2 -2
- package/inputnumber/style/index.mjs.map +1 -1
- package/inputotp/BaseInputOtp.vue +1 -1
- package/inputotp/InputOtp.vue +6 -12
- package/inputotp/index.d.ts +2 -2
- package/inputotp/index.mjs +11 -12
- package/inputotp/index.mjs.map +1 -1
- package/inputotp/style/index.mjs +1 -1
- package/inputotp/style/index.mjs.map +1 -1
- package/inputtext/style/index.mjs +1 -1
- package/inputtext/style/index.mjs.map +1 -1
- package/keyfilter/index.d.ts +153 -0
- package/keyfilter/index.mjs +127 -0
- package/keyfilter/index.mjs.map +1 -0
- package/keyfilter/package.json +5 -0
- package/keyfilter/style/index.d.ts +14 -0
- package/keyfilter/style/index.mjs +8 -0
- package/keyfilter/style/index.mjs.map +1 -0
- package/keyfilter/style/package.json +6 -0
- package/megamenu/MegaMenu.vue +4 -4
- package/megamenu/index.d.ts +4 -0
- package/megamenu/index.mjs +2 -2
- package/megamenu/index.mjs.map +1 -1
- package/message/Message.vue +3 -19
- package/message/index.mjs +4 -20
- package/message/index.mjs.map +1 -1
- package/multiselect/BaseMultiSelect.vue +1 -5
- package/multiselect/MultiSelect.vue +16 -14
- package/multiselect/index.d.ts +2 -20
- package/multiselect/index.mjs +15 -17
- package/multiselect/index.mjs.map +1 -1
- package/multiselect/style/index.mjs +1 -1
- package/multiselect/style/index.mjs.map +1 -1
- package/orderlist/OrderList.vue +4 -8
- package/orderlist/index.d.ts +1 -5
- package/orderlist/index.mjs +3 -7
- package/orderlist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/paginator/JumpToPageInput.vue +1 -1
- package/paginator/Paginator.vue +4 -16
- package/paginator/index.d.ts +1 -1
- package/paginator/index.mjs +4 -21
- package/paginator/index.mjs.map +1 -1
- package/paginator/style/index.d.ts +1 -1
- package/paginator/style/index.mjs +1 -1
- package/paginator/style/index.mjs.map +1 -1
- package/panelmenu/index.d.ts +1 -1
- package/password/BasePassword.vue +4 -0
- package/password/Password.vue +4 -3
- package/password/index.d.ts +6 -1
- package/password/index.mjs +10 -5
- package/password/index.mjs.map +1 -1
- package/password/style/index.mjs +1 -1
- package/password/style/index.mjs.map +1 -1
- package/picklist/PickList.vue +4 -8
- package/picklist/index.d.ts +1 -13
- package/picklist/index.mjs +3 -7
- package/picklist/index.mjs.map +1 -1
- package/popover/Popover.vue +4 -10
- package/popover/index.d.ts +1 -1
- package/popover/index.mjs +3 -9
- package/popover/index.mjs.map +1 -1
- package/progressspinner/index.d.ts +1 -1
- package/rating/style/index.mjs +1 -1
- package/rating/style/index.mjs.map +1 -1
- package/scrolltop/ScrollTop.vue +2 -9
- package/scrolltop/index.d.ts +1 -6
- package/scrolltop/index.mjs +3 -9
- package/scrolltop/index.mjs.map +1 -1
- package/select/Select.vue +13 -6
- package/select/index.mjs +54 -45
- package/select/index.mjs.map +1 -1
- package/select/style/index.mjs +1 -1
- package/select/style/index.mjs.map +1 -1
- package/speeddial/SpeedDial.vue +3 -1
- package/speeddial/index.d.ts +16 -1
- package/speeddial/index.mjs +10 -5
- package/speeddial/index.mjs.map +1 -1
- package/splitter/Splitter.vue +31 -25
- package/splitter/index.d.ts +8 -1
- package/splitter/index.mjs +28 -22
- package/splitter/index.mjs.map +1 -1
- package/tieredmenu/BaseTieredMenu.vue +4 -0
- package/tieredmenu/TieredMenu.vue +31 -4
- package/tieredmenu/TieredMenuSub.vue +3 -1
- package/tieredmenu/index.d.ts +5 -0
- package/tieredmenu/index.mjs +63 -34
- package/tieredmenu/index.mjs.map +1 -1
- package/tieredmenu/style/index.mjs +5 -4
- package/tieredmenu/style/index.mjs.map +1 -1
- package/toast/Toast.vue +2 -9
- package/toast/index.mjs +1 -8
- package/toast/index.mjs.map +1 -1
- package/toggleswitch/ToggleSwitch.vue +5 -1
- package/toggleswitch/index.d.ts +17 -1
- package/toggleswitch/index.mjs +7 -3
- package/toggleswitch/index.mjs.map +1 -1
- package/toggleswitch/style/index.d.ts +9 -1
- package/toggleswitch/style/index.mjs +3 -2
- package/toggleswitch/style/index.mjs.map +1 -1
- package/tooltip/index.mjs +6 -1
- package/tooltip/index.mjs.map +1 -1
- package/tree/BaseTree.vue +1 -1
- package/tree/Tree.vue +4 -2
- package/tree/TreeNode.vue +16 -4
- package/tree/index.d.ts +52 -3
- package/tree/index.mjs +23 -10
- package/tree/index.mjs.map +1 -1
- package/treeselect/BaseTreeSelect.vue +36 -0
- package/treeselect/TreeSelect.vue +31 -16
- package/treeselect/index.d.ts +73 -4
- package/treeselect/index.mjs +82 -25
- package/treeselect/index.mjs.map +1 -1
- package/treeselect/style/index.mjs +1 -1
- package/treeselect/style/index.mjs.map +1 -1
- package/treetable/BaseTreeTable.vue +8 -0
- package/treetable/TreeTable.vue +19 -11
- package/treetable/TreeTableRow.vue +28 -2
- package/treetable/index.d.ts +34 -0
- package/treetable/index.mjs +63 -19
- package/treetable/index.mjs.map +1 -1
- package/treetable/style/index.mjs +5 -3
- package/treetable/style/index.mjs.map +1 -1
- package/umd/primevue.min.js +1 -1
- package/vetur-attributes.json +3 -3
- package/virtualscroller/style/index.mjs +3 -1
- package/virtualscroller/style/index.mjs.map +1 -1
- package/web-types.json +4 -4
package/splitter/index.d.ts
CHANGED
|
@@ -226,6 +226,13 @@ export interface SplitterEmitsOptions {
|
|
|
226
226
|
|
|
227
227
|
export declare type SplitterEmits = EmitFn<SplitterEmitsOptions>;
|
|
228
228
|
|
|
229
|
+
export interface SplitterMethods {
|
|
230
|
+
/**
|
|
231
|
+
* This method resizes all panels by either using the stored state in the case of a stateful Splitter, the size property of each SplitterPanel, or by resetting them to their default values.
|
|
232
|
+
*/
|
|
233
|
+
resetState(): void;
|
|
234
|
+
}
|
|
235
|
+
|
|
229
236
|
/**
|
|
230
237
|
* **PrimeVue - Splitter**
|
|
231
238
|
*
|
|
@@ -238,7 +245,7 @@ export declare type SplitterEmits = EmitFn<SplitterEmitsOptions>;
|
|
|
238
245
|
* @group Component
|
|
239
246
|
*
|
|
240
247
|
*/
|
|
241
|
-
declare const Splitter: DefineComponent<SplitterProps, SplitterSlots, SplitterEmits>;
|
|
248
|
+
declare const Splitter: DefineComponent<SplitterProps, SplitterSlots, SplitterEmits, SplitterMethods>;
|
|
242
249
|
|
|
243
250
|
declare module 'vue' {
|
|
244
251
|
export interface GlobalComponents {
|
package/splitter/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getVNodeProp } from '@primevue/core/utils';
|
|
2
1
|
import { getWidth, getHeight, getOuterWidth, getOuterHeight } from '@primeuix/utils/dom';
|
|
3
2
|
import { isArray } from '@primeuix/utils/object';
|
|
3
|
+
import { getVNodeProp } from '@primevue/core/utils';
|
|
4
4
|
import BaseComponent from '@primevue/core/basecomponent';
|
|
5
5
|
import SplitterStyle from 'primevue/splitter/style';
|
|
6
6
|
import { openBlock, createElementBlock, mergeProps, Fragment, renderList, createBlock, resolveDynamicComponent, createElementVNode, createCommentVNode } from 'vue';
|
|
@@ -71,27 +71,7 @@ var script = {
|
|
|
71
71
|
};
|
|
72
72
|
},
|
|
73
73
|
mounted: function mounted() {
|
|
74
|
-
|
|
75
|
-
if (this.panels && this.panels.length) {
|
|
76
|
-
var initialized = false;
|
|
77
|
-
if (this.isStateful()) {
|
|
78
|
-
initialized = this.restoreState();
|
|
79
|
-
}
|
|
80
|
-
if (!initialized) {
|
|
81
|
-
var children = _toConsumableArray(this.$el.children).filter(function (child) {
|
|
82
|
-
return child.getAttribute('data-pc-name') === 'splitterpanel';
|
|
83
|
-
});
|
|
84
|
-
var _panelSizes = [];
|
|
85
|
-
this.panels.map(function (panel, i) {
|
|
86
|
-
var panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;
|
|
87
|
-
var panelSize = panelInitialSize || 100 / _this.panels.length;
|
|
88
|
-
_panelSizes[i] = panelSize;
|
|
89
|
-
children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (_this.panels.length - 1) * _this.gutterSize + 'px)';
|
|
90
|
-
});
|
|
91
|
-
this.panelSizes = _panelSizes;
|
|
92
|
-
this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
74
|
+
this.initializePanels();
|
|
95
75
|
},
|
|
96
76
|
beforeUnmount: function beforeUnmount() {
|
|
97
77
|
this.clear();
|
|
@@ -101,6 +81,29 @@ var script = {
|
|
|
101
81
|
isSplitterPanel: function isSplitterPanel(child) {
|
|
102
82
|
return child.type.name === 'SplitterPanel';
|
|
103
83
|
},
|
|
84
|
+
initializePanels: function initializePanels() {
|
|
85
|
+
var _this = this;
|
|
86
|
+
if (this.panels && this.panels.length) {
|
|
87
|
+
var initialized = false;
|
|
88
|
+
if (this.isStateful()) {
|
|
89
|
+
initialized = this.restoreState();
|
|
90
|
+
}
|
|
91
|
+
if (!initialized) {
|
|
92
|
+
var children = _toConsumableArray(this.$el.children).filter(function (child) {
|
|
93
|
+
return child.getAttribute('data-pc-name') === 'splitterpanel';
|
|
94
|
+
});
|
|
95
|
+
var _panelSizes = [];
|
|
96
|
+
this.panels.map(function (panel, i) {
|
|
97
|
+
var panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;
|
|
98
|
+
var panelSize = panelInitialSize || 100 / _this.panels.length;
|
|
99
|
+
_panelSizes[i] = panelSize;
|
|
100
|
+
children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (_this.panels.length - 1) * _this.gutterSize + 'px)';
|
|
101
|
+
});
|
|
102
|
+
this.panelSizes = _panelSizes;
|
|
103
|
+
this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
104
107
|
onResizeStart: function onResizeStart(event, index, isKeyDown) {
|
|
105
108
|
this.gutterElement = event.currentTarget || event.target.parentElement;
|
|
106
109
|
this.size = this.horizontal ? getWidth(this.$el) : getHeight(this.$el);
|
|
@@ -351,6 +354,9 @@ var script = {
|
|
|
351
354
|
return true;
|
|
352
355
|
}
|
|
353
356
|
return false;
|
|
357
|
+
},
|
|
358
|
+
resetState: function resetState() {
|
|
359
|
+
this.initializePanels();
|
|
354
360
|
}
|
|
355
361
|
},
|
|
356
362
|
computed: {
|
package/splitter/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/splitter/BaseSplitter.vue","../../src/splitter/Splitter.vue","../../src/splitter/Splitter.vue?vue&type=template&id=5cc5969c&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport SplitterStyle from 'primevue/splitter/style';\n\nexport default {\n name: 'BaseSplitter',\n extends: BaseComponent,\n props: {\n layout: {\n type: String,\n default: 'horizontal'\n },\n gutterSize: {\n type: Number,\n default: 4\n },\n stateKey: {\n type: String,\n default: null\n },\n stateStorage: {\n type: String,\n default: 'session'\n },\n step: {\n type: Number,\n default: 5\n }\n },\n style: SplitterStyle,\n provide() {\n return {\n $pcSplitter: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" :style=\"sx('root')\" :data-p-resizing=\"false\" v-bind=\"ptmi('root', getPTOptions)\">\n <template v-for=\"(panel, i) of panels\" :key=\"i\">\n <component :is=\"panel\" tabindex=\"-1\"></component>\n <div\n v-if=\"i !== panels.length - 1\"\n ref=\"gutter\"\n :class=\"cx('gutter')\"\n role=\"separator\"\n tabindex=\"-1\"\n @mousedown=\"onGutterMouseDown($event, i)\"\n @touchstart=\"onGutterTouchStart($event, i)\"\n @touchmove=\"onGutterTouchMove($event, i)\"\n @touchend=\"onGutterTouchEnd($event, i)\"\n :data-p-gutter-resizing=\"false\"\n v-bind=\"ptm('gutter')\"\n >\n <div :class=\"cx('gutterHandle')\" tabindex=\"0\" :style=\"[gutterStyle]\" :aria-orientation=\"layout\" :aria-valuenow=\"prevSize\" @keyup=\"onGutterKeyUp\" @keydown=\"onGutterKeyDown($event, i)\" v-bind=\"ptm('gutterHandle')\"></div>\n </div>\n </template>\n </div>\n</template>\n\n<script>\nimport { getVNodeProp } from '@primevue/core/utils';\nimport { getWidth, getHeight, getOuterWidth, getOuterHeight } from '@primeuix/utils/dom';\nimport { isArray } from '@primeuix/utils/object';\nimport BaseSplitter from './BaseSplitter.vue';\n\nexport default {\n name: 'Splitter',\n extends: BaseSplitter,\n inheritAttrs: false,\n emits: ['resizestart', 'resizeend', 'resize'],\n dragging: false,\n mouseMoveListener: null,\n mouseUpListener: null,\n touchMoveListener: null,\n touchEndListener: null,\n size: null,\n gutterElement: null,\n startPos: null,\n prevPanelElement: null,\n nextPanelElement: null,\n nextPanelSize: null,\n prevPanelSize: null,\n panelSizes: null,\n prevPanelIndex: null,\n timer: null,\n data() {\n return {\n prevSize: null\n };\n },\n mounted() {\n if (this.panels && this.panels.length) {\n let initialized = false;\n\n if (this.isStateful()) {\n initialized = this.restoreState();\n }\n\n if (!initialized) {\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n let _panelSizes = [];\n\n this.panels.map((panel, i) => {\n let panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;\n let panelSize = panelInitialSize || 100 / this.panels.length;\n\n _panelSizes[i] = panelSize;\n children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n this.panelSizes = _panelSizes;\n this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);\n }\n }\n },\n beforeUnmount() {\n this.clear();\n this.unbindMouseListeners();\n },\n methods: {\n isSplitterPanel(child) {\n return child.type.name === 'SplitterPanel';\n },\n onResizeStart(event, index, isKeyDown) {\n this.gutterElement = event.currentTarget || event.target.parentElement;\n this.size = this.horizontal ? getWidth(this.$el) : getHeight(this.$el);\n\n if (!isKeyDown) {\n this.dragging = true;\n this.startPos = this.layout === 'horizontal' ? event.pageX || event.changedTouches[0].pageX : event.pageY || event.changedTouches[0].pageY;\n }\n\n this.prevPanelElement = this.gutterElement.previousElementSibling;\n this.nextPanelElement = this.gutterElement.nextElementSibling;\n\n if (isKeyDown) {\n this.prevPanelSize = this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true);\n this.nextPanelSize = this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true);\n } else {\n this.prevPanelSize = (100 * (this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true))) / this.size;\n this.nextPanelSize = (100 * (this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true))) / this.size;\n }\n\n this.prevPanelIndex = index;\n this.$emit('resizestart', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter[index].setAttribute('data-p-gutter-resizing', true);\n this.$el.setAttribute('data-p-resizing', true);\n },\n onResize(event, step, isKeyDown) {\n let newPos, newPrevPanelSize, newNextPanelSize;\n\n if (isKeyDown) {\n if (this.horizontal) {\n newPrevPanelSize = (100 * (this.prevPanelSize + step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize - step)) / this.size;\n } else {\n newPrevPanelSize = (100 * (this.prevPanelSize - step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize + step)) / this.size;\n }\n } else {\n if (this.horizontal) newPos = (event.pageX * 100) / this.size - (this.startPos * 100) / this.size;\n else newPos = (event.pageY * 100) / this.size - (this.startPos * 100) / this.size;\n\n newPrevPanelSize = this.prevPanelSize + newPos;\n newNextPanelSize = this.nextPanelSize - newPos;\n }\n\n if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n this.panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n this.prevSize = parseFloat(newPrevPanelSize).toFixed(4);\n }\n\n this.$emit('resize', { originalEvent: event, sizes: this.panelSizes });\n },\n onResizeEnd(event) {\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.$emit('resizeend', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter.forEach((gutter) => gutter.setAttribute('data-p-gutter-resizing', false));\n this.$el.setAttribute('data-p-resizing', false);\n this.clear();\n },\n repeat(event, index, step) {\n this.onResizeStart(event, index, true);\n this.onResize(event, step, true);\n },\n setTimer(event, index, step) {\n if (!this.timer) {\n this.timer = setInterval(() => {\n this.repeat(event, index, step);\n }, 40);\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n },\n onGutterKeyUp() {\n this.clearTimer();\n this.onResizeEnd();\n },\n onGutterKeyDown(event, index) {\n switch (event.code) {\n case 'ArrowLeft': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowDown': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n },\n onGutterMouseDown(event, index) {\n this.onResizeStart(event, index);\n this.bindMouseListeners();\n },\n onGutterTouchStart(event, index) {\n this.onResizeStart(event, index);\n this.bindTouchListeners();\n event.preventDefault();\n },\n onGutterTouchMove(event) {\n this.onResize(event);\n event.preventDefault();\n },\n onGutterTouchEnd(event) {\n this.onResizeEnd(event);\n this.unbindTouchListeners();\n event.preventDefault();\n },\n bindMouseListeners() {\n if (!this.mouseMoveListener) {\n this.mouseMoveListener = (event) => this.onResize(event);\n document.addEventListener('mousemove', this.mouseMoveListener);\n }\n\n if (!this.mouseUpListener) {\n this.mouseUpListener = (event) => {\n this.onResizeEnd(event);\n this.unbindMouseListeners();\n };\n\n document.addEventListener('mouseup', this.mouseUpListener);\n }\n },\n bindTouchListeners() {\n if (!this.touchMoveListener) {\n this.touchMoveListener = (event) => this.onResize(event.changedTouches[0]);\n document.addEventListener('touchmove', this.touchMoveListener);\n }\n\n if (!this.touchEndListener) {\n this.touchEndListener = (event) => {\n this.resizeEnd(event);\n this.unbindTouchListeners();\n };\n\n document.addEventListener('touchend', this.touchEndListener);\n }\n },\n validateResize(newPrevPanelSize, newNextPanelSize) {\n if (newPrevPanelSize > 100 || newPrevPanelSize < 0) return false;\n if (newNextPanelSize > 100 || newNextPanelSize < 0) return false;\n\n let prevPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex], 'minSize');\n\n if (this.panels[this.prevPanelIndex].props && prevPanelMinSize && prevPanelMinSize > newPrevPanelSize) {\n return false;\n }\n\n let newPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex + 1], 'minSize');\n\n if (this.panels[this.prevPanelIndex + 1].props && newPanelMinSize && newPanelMinSize > newNextPanelSize) {\n return false;\n }\n\n return true;\n },\n unbindMouseListeners() {\n if (this.mouseMoveListener) {\n document.removeEventListener('mousemove', this.mouseMoveListener);\n this.mouseMoveListener = null;\n }\n\n if (this.mouseUpListener) {\n document.removeEventListener('mouseup', this.mouseUpListener);\n this.mouseUpListener = null;\n }\n },\n unbindTouchListeners() {\n if (this.touchMoveListener) {\n document.removeEventListener('touchmove', this.touchMoveListener);\n this.touchMoveListener = null;\n }\n\n if (this.touchEndListener) {\n document.removeEventListener('touchend', this.touchEndListener);\n this.touchEndListener = null;\n }\n },\n clear() {\n this.dragging = false;\n this.size = null;\n this.startPos = null;\n this.prevPanelElement = null;\n this.nextPanelElement = null;\n this.prevPanelSize = null;\n this.nextPanelSize = null;\n this.gutterElement = null;\n this.prevPanelIndex = null;\n },\n isStateful() {\n return this.stateKey != null;\n },\n getStorage() {\n switch (this.stateStorage) {\n case 'local':\n return window.localStorage;\n\n case 'session':\n return window.sessionStorage;\n\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n },\n saveState() {\n if (isArray(this.panelSizes)) {\n this.getStorage().setItem(this.stateKey, JSON.stringify(this.panelSizes));\n }\n },\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n\n if (stateString) {\n this.panelSizes = JSON.parse(stateString);\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n\n children.forEach((child, i) => {\n child.style.flexBasis = 'calc(' + this.panelSizes[i] + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n return true;\n }\n\n return false;\n }\n },\n computed: {\n panels() {\n const panels = [];\n\n this.$slots.default().forEach((child) => {\n if (this.isSplitterPanel(child)) {\n panels.push(child);\n } else if (child.children instanceof Array) {\n child.children.forEach((nestedChild) => {\n if (this.isSplitterPanel(nestedChild)) {\n panels.push(nestedChild);\n }\n });\n }\n });\n\n return panels;\n },\n gutterStyle() {\n if (this.horizontal) return { width: this.gutterSize + 'px' };\n else return { height: this.gutterSize + 'px' };\n },\n horizontal() {\n return this.layout === 'horizontal';\n },\n getPTOptions() {\n return {\n context: {\n nested: this.$parentInstance?.nestedState\n }\n };\n }\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" :style=\"sx('root')\" :data-p-resizing=\"false\" v-bind=\"ptmi('root', getPTOptions)\">\n <template v-for=\"(panel, i) of panels\" :key=\"i\">\n <component :is=\"panel\" tabindex=\"-1\"></component>\n <div\n v-if=\"i !== panels.length - 1\"\n ref=\"gutter\"\n :class=\"cx('gutter')\"\n role=\"separator\"\n tabindex=\"-1\"\n @mousedown=\"onGutterMouseDown($event, i)\"\n @touchstart=\"onGutterTouchStart($event, i)\"\n @touchmove=\"onGutterTouchMove($event, i)\"\n @touchend=\"onGutterTouchEnd($event, i)\"\n :data-p-gutter-resizing=\"false\"\n v-bind=\"ptm('gutter')\"\n >\n <div :class=\"cx('gutterHandle')\" tabindex=\"0\" :style=\"[gutterStyle]\" :aria-orientation=\"layout\" :aria-valuenow=\"prevSize\" @keyup=\"onGutterKeyUp\" @keydown=\"onGutterKeyDown($event, i)\" v-bind=\"ptm('gutterHandle')\"></div>\n </div>\n </template>\n </div>\n</template>\n\n<script>\nimport { getVNodeProp } from '@primevue/core/utils';\nimport { getWidth, getHeight, getOuterWidth, getOuterHeight } from '@primeuix/utils/dom';\nimport { isArray } from '@primeuix/utils/object';\nimport BaseSplitter from './BaseSplitter.vue';\n\nexport default {\n name: 'Splitter',\n extends: BaseSplitter,\n inheritAttrs: false,\n emits: ['resizestart', 'resizeend', 'resize'],\n dragging: false,\n mouseMoveListener: null,\n mouseUpListener: null,\n touchMoveListener: null,\n touchEndListener: null,\n size: null,\n gutterElement: null,\n startPos: null,\n prevPanelElement: null,\n nextPanelElement: null,\n nextPanelSize: null,\n prevPanelSize: null,\n panelSizes: null,\n prevPanelIndex: null,\n timer: null,\n data() {\n return {\n prevSize: null\n };\n },\n mounted() {\n if (this.panels && this.panels.length) {\n let initialized = false;\n\n if (this.isStateful()) {\n initialized = this.restoreState();\n }\n\n if (!initialized) {\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n let _panelSizes = [];\n\n this.panels.map((panel, i) => {\n let panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;\n let panelSize = panelInitialSize || 100 / this.panels.length;\n\n _panelSizes[i] = panelSize;\n children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n this.panelSizes = _panelSizes;\n this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);\n }\n }\n },\n beforeUnmount() {\n this.clear();\n this.unbindMouseListeners();\n },\n methods: {\n isSplitterPanel(child) {\n return child.type.name === 'SplitterPanel';\n },\n onResizeStart(event, index, isKeyDown) {\n this.gutterElement = event.currentTarget || event.target.parentElement;\n this.size = this.horizontal ? getWidth(this.$el) : getHeight(this.$el);\n\n if (!isKeyDown) {\n this.dragging = true;\n this.startPos = this.layout === 'horizontal' ? event.pageX || event.changedTouches[0].pageX : event.pageY || event.changedTouches[0].pageY;\n }\n\n this.prevPanelElement = this.gutterElement.previousElementSibling;\n this.nextPanelElement = this.gutterElement.nextElementSibling;\n\n if (isKeyDown) {\n this.prevPanelSize = this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true);\n this.nextPanelSize = this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true);\n } else {\n this.prevPanelSize = (100 * (this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true))) / this.size;\n this.nextPanelSize = (100 * (this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true))) / this.size;\n }\n\n this.prevPanelIndex = index;\n this.$emit('resizestart', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter[index].setAttribute('data-p-gutter-resizing', true);\n this.$el.setAttribute('data-p-resizing', true);\n },\n onResize(event, step, isKeyDown) {\n let newPos, newPrevPanelSize, newNextPanelSize;\n\n if (isKeyDown) {\n if (this.horizontal) {\n newPrevPanelSize = (100 * (this.prevPanelSize + step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize - step)) / this.size;\n } else {\n newPrevPanelSize = (100 * (this.prevPanelSize - step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize + step)) / this.size;\n }\n } else {\n if (this.horizontal) newPos = (event.pageX * 100) / this.size - (this.startPos * 100) / this.size;\n else newPos = (event.pageY * 100) / this.size - (this.startPos * 100) / this.size;\n\n newPrevPanelSize = this.prevPanelSize + newPos;\n newNextPanelSize = this.nextPanelSize - newPos;\n }\n\n if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n this.panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n this.prevSize = parseFloat(newPrevPanelSize).toFixed(4);\n }\n\n this.$emit('resize', { originalEvent: event, sizes: this.panelSizes });\n },\n onResizeEnd(event) {\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.$emit('resizeend', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter.forEach((gutter) => gutter.setAttribute('data-p-gutter-resizing', false));\n this.$el.setAttribute('data-p-resizing', false);\n this.clear();\n },\n repeat(event, index, step) {\n this.onResizeStart(event, index, true);\n this.onResize(event, step, true);\n },\n setTimer(event, index, step) {\n if (!this.timer) {\n this.timer = setInterval(() => {\n this.repeat(event, index, step);\n }, 40);\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n },\n onGutterKeyUp() {\n this.clearTimer();\n this.onResizeEnd();\n },\n onGutterKeyDown(event, index) {\n switch (event.code) {\n case 'ArrowLeft': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowDown': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n },\n onGutterMouseDown(event, index) {\n this.onResizeStart(event, index);\n this.bindMouseListeners();\n },\n onGutterTouchStart(event, index) {\n this.onResizeStart(event, index);\n this.bindTouchListeners();\n event.preventDefault();\n },\n onGutterTouchMove(event) {\n this.onResize(event);\n event.preventDefault();\n },\n onGutterTouchEnd(event) {\n this.onResizeEnd(event);\n this.unbindTouchListeners();\n event.preventDefault();\n },\n bindMouseListeners() {\n if (!this.mouseMoveListener) {\n this.mouseMoveListener = (event) => this.onResize(event);\n document.addEventListener('mousemove', this.mouseMoveListener);\n }\n\n if (!this.mouseUpListener) {\n this.mouseUpListener = (event) => {\n this.onResizeEnd(event);\n this.unbindMouseListeners();\n };\n\n document.addEventListener('mouseup', this.mouseUpListener);\n }\n },\n bindTouchListeners() {\n if (!this.touchMoveListener) {\n this.touchMoveListener = (event) => this.onResize(event.changedTouches[0]);\n document.addEventListener('touchmove', this.touchMoveListener);\n }\n\n if (!this.touchEndListener) {\n this.touchEndListener = (event) => {\n this.resizeEnd(event);\n this.unbindTouchListeners();\n };\n\n document.addEventListener('touchend', this.touchEndListener);\n }\n },\n validateResize(newPrevPanelSize, newNextPanelSize) {\n if (newPrevPanelSize > 100 || newPrevPanelSize < 0) return false;\n if (newNextPanelSize > 100 || newNextPanelSize < 0) return false;\n\n let prevPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex], 'minSize');\n\n if (this.panels[this.prevPanelIndex].props && prevPanelMinSize && prevPanelMinSize > newPrevPanelSize) {\n return false;\n }\n\n let newPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex + 1], 'minSize');\n\n if (this.panels[this.prevPanelIndex + 1].props && newPanelMinSize && newPanelMinSize > newNextPanelSize) {\n return false;\n }\n\n return true;\n },\n unbindMouseListeners() {\n if (this.mouseMoveListener) {\n document.removeEventListener('mousemove', this.mouseMoveListener);\n this.mouseMoveListener = null;\n }\n\n if (this.mouseUpListener) {\n document.removeEventListener('mouseup', this.mouseUpListener);\n this.mouseUpListener = null;\n }\n },\n unbindTouchListeners() {\n if (this.touchMoveListener) {\n document.removeEventListener('touchmove', this.touchMoveListener);\n this.touchMoveListener = null;\n }\n\n if (this.touchEndListener) {\n document.removeEventListener('touchend', this.touchEndListener);\n this.touchEndListener = null;\n }\n },\n clear() {\n this.dragging = false;\n this.size = null;\n this.startPos = null;\n this.prevPanelElement = null;\n this.nextPanelElement = null;\n this.prevPanelSize = null;\n this.nextPanelSize = null;\n this.gutterElement = null;\n this.prevPanelIndex = null;\n },\n isStateful() {\n return this.stateKey != null;\n },\n getStorage() {\n switch (this.stateStorage) {\n case 'local':\n return window.localStorage;\n\n case 'session':\n return window.sessionStorage;\n\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n },\n saveState() {\n if (isArray(this.panelSizes)) {\n this.getStorage().setItem(this.stateKey, JSON.stringify(this.panelSizes));\n }\n },\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n\n if (stateString) {\n this.panelSizes = JSON.parse(stateString);\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n\n children.forEach((child, i) => {\n child.style.flexBasis = 'calc(' + this.panelSizes[i] + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n return true;\n }\n\n return false;\n }\n },\n computed: {\n panels() {\n const panels = [];\n\n this.$slots.default().forEach((child) => {\n if (this.isSplitterPanel(child)) {\n panels.push(child);\n } else if (child.children instanceof Array) {\n child.children.forEach((nestedChild) => {\n if (this.isSplitterPanel(nestedChild)) {\n panels.push(nestedChild);\n }\n });\n }\n });\n\n return panels;\n },\n gutterStyle() {\n if (this.horizontal) return { width: this.gutterSize + 'px' };\n else return { height: this.gutterSize + 'px' };\n },\n horizontal() {\n return this.layout === 'horizontal';\n },\n getPTOptions() {\n return {\n context: {\n nested: this.$parentInstance?.nestedState\n }\n };\n }\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","layout","type","String","gutterSize","Number","stateKey","stateStorage","step","style","SplitterStyle","provide","$pcSplitter","$parentInstance","BaseSplitter","inheritAttrs","emits","dragging","mouseMoveListener","mouseUpListener","touchMoveListener","touchEndListener","size","gutterElement","startPos","prevPanelElement","nextPanelElement","nextPanelSize","prevPanelSize","panelSizes","prevPanelIndex","timer","data","prevSize","mounted","_this","panels","length","initialized","isStateful","restoreState","children","_toConsumableArray","$el","filter","child","getAttribute","_panelSizes","map","panel","i","panelInitialSize","panelSize","flexBasis","parseFloat","toFixed","beforeUnmount","clear","unbindMouseListeners","methods","isSplitterPanel","onResizeStart","event","index","isKeyDown","currentTarget","target","parentElement","horizontal","getWidth","getHeight","pageX","changedTouches","pageY","previousElementSibling","nextElementSibling","getOuterWidth","getOuterHeight","$emit","originalEvent","sizes","$refs","gutter","setAttribute","onResize","newPos","newPrevPanelSize","newNextPanelSize","validateResize","onResizeEnd","saveState","forEach","repeat","setTimer","_this2","setInterval","clearTimer","clearInterval","onGutterKeyUp","onGutterKeyDown","code","preventDefault","onGutterMouseDown","bindMouseListeners","onGutterTouchStart","bindTouchListeners","onGutterTouchMove","onGutterTouchEnd","unbindTouchListeners","_this3","document","addEventListener","_this4","resizeEnd","prevPanelMinSize","getVNodeProp","newPanelMinSize","removeEventListener","getStorage","window","localStorage","sessionStorage","Error","isArray","setItem","JSON","stringify","_this5","storage","stateString","getItem","parse","computed","_this6","$slots","push","Array","nestedChild","gutterStyle","width","height","getPTOptions","_this$$parentInstance","context","nested","nestedState","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","sx","ptmi","$options","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","tabindex","ref","role","onMousedown","$event","onTouchstart","onTouchmove","onTouchend","ptm","_createElementVNode","$data","onKeyup","apply","arguments","onKeydown","_hoisted_2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/splitter/BaseSplitter.vue","../../src/splitter/Splitter.vue","../../src/splitter/Splitter.vue?vue&type=template&id=09e19b6e&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport SplitterStyle from 'primevue/splitter/style';\n\nexport default {\n name: 'BaseSplitter',\n extends: BaseComponent,\n props: {\n layout: {\n type: String,\n default: 'horizontal'\n },\n gutterSize: {\n type: Number,\n default: 4\n },\n stateKey: {\n type: String,\n default: null\n },\n stateStorage: {\n type: String,\n default: 'session'\n },\n step: {\n type: Number,\n default: 5\n }\n },\n style: SplitterStyle,\n provide() {\n return {\n $pcSplitter: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" :style=\"sx('root')\" :data-p-resizing=\"false\" v-bind=\"ptmi('root', getPTOptions)\">\n <template v-for=\"(panel, i) of panels\" :key=\"i\">\n <component :is=\"panel\" tabindex=\"-1\"></component>\n <div\n v-if=\"i !== panels.length - 1\"\n ref=\"gutter\"\n :class=\"cx('gutter')\"\n role=\"separator\"\n tabindex=\"-1\"\n @mousedown=\"onGutterMouseDown($event, i)\"\n @touchstart=\"onGutterTouchStart($event, i)\"\n @touchmove=\"onGutterTouchMove($event, i)\"\n @touchend=\"onGutterTouchEnd($event, i)\"\n :data-p-gutter-resizing=\"false\"\n v-bind=\"ptm('gutter')\"\n >\n <div :class=\"cx('gutterHandle')\" tabindex=\"0\" :style=\"[gutterStyle]\" :aria-orientation=\"layout\" :aria-valuenow=\"prevSize\" @keyup=\"onGutterKeyUp\" @keydown=\"onGutterKeyDown($event, i)\" v-bind=\"ptm('gutterHandle')\"></div>\n </div>\n </template>\n </div>\n</template>\n\n<script>\nimport { getHeight, getOuterHeight, getOuterWidth, getWidth } from '@primeuix/utils/dom';\nimport { isArray } from '@primeuix/utils/object';\nimport { getVNodeProp } from '@primevue/core/utils';\nimport BaseSplitter from './BaseSplitter.vue';\n\nexport default {\n name: 'Splitter',\n extends: BaseSplitter,\n inheritAttrs: false,\n emits: ['resizestart', 'resizeend', 'resize'],\n dragging: false,\n mouseMoveListener: null,\n mouseUpListener: null,\n touchMoveListener: null,\n touchEndListener: null,\n size: null,\n gutterElement: null,\n startPos: null,\n prevPanelElement: null,\n nextPanelElement: null,\n nextPanelSize: null,\n prevPanelSize: null,\n panelSizes: null,\n prevPanelIndex: null,\n timer: null,\n data() {\n return {\n prevSize: null\n };\n },\n mounted() {\n this.initializePanels();\n },\n beforeUnmount() {\n this.clear();\n this.unbindMouseListeners();\n },\n methods: {\n isSplitterPanel(child) {\n return child.type.name === 'SplitterPanel';\n },\n initializePanels() {\n if (this.panels && this.panels.length) {\n let initialized = false;\n\n if (this.isStateful()) {\n initialized = this.restoreState();\n }\n\n if (!initialized) {\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n let _panelSizes = [];\n\n this.panels.map((panel, i) => {\n let panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;\n let panelSize = panelInitialSize || 100 / this.panels.length;\n\n _panelSizes[i] = panelSize;\n children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n this.panelSizes = _panelSizes;\n this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);\n }\n }\n },\n onResizeStart(event, index, isKeyDown) {\n this.gutterElement = event.currentTarget || event.target.parentElement;\n this.size = this.horizontal ? getWidth(this.$el) : getHeight(this.$el);\n\n if (!isKeyDown) {\n this.dragging = true;\n this.startPos = this.layout === 'horizontal' ? event.pageX || event.changedTouches[0].pageX : event.pageY || event.changedTouches[0].pageY;\n }\n\n this.prevPanelElement = this.gutterElement.previousElementSibling;\n this.nextPanelElement = this.gutterElement.nextElementSibling;\n\n if (isKeyDown) {\n this.prevPanelSize = this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true);\n this.nextPanelSize = this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true);\n } else {\n this.prevPanelSize = (100 * (this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true))) / this.size;\n this.nextPanelSize = (100 * (this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true))) / this.size;\n }\n\n this.prevPanelIndex = index;\n this.$emit('resizestart', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter[index].setAttribute('data-p-gutter-resizing', true);\n this.$el.setAttribute('data-p-resizing', true);\n },\n onResize(event, step, isKeyDown) {\n let newPos, newPrevPanelSize, newNextPanelSize;\n\n if (isKeyDown) {\n if (this.horizontal) {\n newPrevPanelSize = (100 * (this.prevPanelSize + step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize - step)) / this.size;\n } else {\n newPrevPanelSize = (100 * (this.prevPanelSize - step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize + step)) / this.size;\n }\n } else {\n if (this.horizontal) newPos = (event.pageX * 100) / this.size - (this.startPos * 100) / this.size;\n else newPos = (event.pageY * 100) / this.size - (this.startPos * 100) / this.size;\n\n newPrevPanelSize = this.prevPanelSize + newPos;\n newNextPanelSize = this.nextPanelSize - newPos;\n }\n\n if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n this.panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n this.prevSize = parseFloat(newPrevPanelSize).toFixed(4);\n }\n\n this.$emit('resize', { originalEvent: event, sizes: this.panelSizes });\n },\n onResizeEnd(event) {\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.$emit('resizeend', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter.forEach((gutter) => gutter.setAttribute('data-p-gutter-resizing', false));\n this.$el.setAttribute('data-p-resizing', false);\n this.clear();\n },\n repeat(event, index, step) {\n this.onResizeStart(event, index, true);\n this.onResize(event, step, true);\n },\n setTimer(event, index, step) {\n if (!this.timer) {\n this.timer = setInterval(() => {\n this.repeat(event, index, step);\n }, 40);\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n },\n onGutterKeyUp() {\n this.clearTimer();\n this.onResizeEnd();\n },\n onGutterKeyDown(event, index) {\n switch (event.code) {\n case 'ArrowLeft': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowDown': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n },\n onGutterMouseDown(event, index) {\n this.onResizeStart(event, index);\n this.bindMouseListeners();\n },\n onGutterTouchStart(event, index) {\n this.onResizeStart(event, index);\n this.bindTouchListeners();\n event.preventDefault();\n },\n onGutterTouchMove(event) {\n this.onResize(event);\n event.preventDefault();\n },\n onGutterTouchEnd(event) {\n this.onResizeEnd(event);\n this.unbindTouchListeners();\n event.preventDefault();\n },\n bindMouseListeners() {\n if (!this.mouseMoveListener) {\n this.mouseMoveListener = (event) => this.onResize(event);\n document.addEventListener('mousemove', this.mouseMoveListener);\n }\n\n if (!this.mouseUpListener) {\n this.mouseUpListener = (event) => {\n this.onResizeEnd(event);\n this.unbindMouseListeners();\n };\n\n document.addEventListener('mouseup', this.mouseUpListener);\n }\n },\n bindTouchListeners() {\n if (!this.touchMoveListener) {\n this.touchMoveListener = (event) => this.onResize(event.changedTouches[0]);\n document.addEventListener('touchmove', this.touchMoveListener);\n }\n\n if (!this.touchEndListener) {\n this.touchEndListener = (event) => {\n this.resizeEnd(event);\n this.unbindTouchListeners();\n };\n\n document.addEventListener('touchend', this.touchEndListener);\n }\n },\n validateResize(newPrevPanelSize, newNextPanelSize) {\n if (newPrevPanelSize > 100 || newPrevPanelSize < 0) return false;\n if (newNextPanelSize > 100 || newNextPanelSize < 0) return false;\n\n let prevPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex], 'minSize');\n\n if (this.panels[this.prevPanelIndex].props && prevPanelMinSize && prevPanelMinSize > newPrevPanelSize) {\n return false;\n }\n\n let newPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex + 1], 'minSize');\n\n if (this.panels[this.prevPanelIndex + 1].props && newPanelMinSize && newPanelMinSize > newNextPanelSize) {\n return false;\n }\n\n return true;\n },\n unbindMouseListeners() {\n if (this.mouseMoveListener) {\n document.removeEventListener('mousemove', this.mouseMoveListener);\n this.mouseMoveListener = null;\n }\n\n if (this.mouseUpListener) {\n document.removeEventListener('mouseup', this.mouseUpListener);\n this.mouseUpListener = null;\n }\n },\n unbindTouchListeners() {\n if (this.touchMoveListener) {\n document.removeEventListener('touchmove', this.touchMoveListener);\n this.touchMoveListener = null;\n }\n\n if (this.touchEndListener) {\n document.removeEventListener('touchend', this.touchEndListener);\n this.touchEndListener = null;\n }\n },\n clear() {\n this.dragging = false;\n this.size = null;\n this.startPos = null;\n this.prevPanelElement = null;\n this.nextPanelElement = null;\n this.prevPanelSize = null;\n this.nextPanelSize = null;\n this.gutterElement = null;\n this.prevPanelIndex = null;\n },\n isStateful() {\n return this.stateKey != null;\n },\n getStorage() {\n switch (this.stateStorage) {\n case 'local':\n return window.localStorage;\n\n case 'session':\n return window.sessionStorage;\n\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n },\n saveState() {\n if (isArray(this.panelSizes)) {\n this.getStorage().setItem(this.stateKey, JSON.stringify(this.panelSizes));\n }\n },\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n\n if (stateString) {\n this.panelSizes = JSON.parse(stateString);\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n\n children.forEach((child, i) => {\n child.style.flexBasis = 'calc(' + this.panelSizes[i] + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n return true;\n }\n\n return false;\n },\n resetState() {\n this.initializePanels();\n }\n },\n computed: {\n panels() {\n const panels = [];\n\n this.$slots.default().forEach((child) => {\n if (this.isSplitterPanel(child)) {\n panels.push(child);\n } else if (child.children instanceof Array) {\n child.children.forEach((nestedChild) => {\n if (this.isSplitterPanel(nestedChild)) {\n panels.push(nestedChild);\n }\n });\n }\n });\n\n return panels;\n },\n gutterStyle() {\n if (this.horizontal) return { width: this.gutterSize + 'px' };\n else return { height: this.gutterSize + 'px' };\n },\n horizontal() {\n return this.layout === 'horizontal';\n },\n getPTOptions() {\n return {\n context: {\n nested: this.$parentInstance?.nestedState\n }\n };\n }\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" :style=\"sx('root')\" :data-p-resizing=\"false\" v-bind=\"ptmi('root', getPTOptions)\">\n <template v-for=\"(panel, i) of panels\" :key=\"i\">\n <component :is=\"panel\" tabindex=\"-1\"></component>\n <div\n v-if=\"i !== panels.length - 1\"\n ref=\"gutter\"\n :class=\"cx('gutter')\"\n role=\"separator\"\n tabindex=\"-1\"\n @mousedown=\"onGutterMouseDown($event, i)\"\n @touchstart=\"onGutterTouchStart($event, i)\"\n @touchmove=\"onGutterTouchMove($event, i)\"\n @touchend=\"onGutterTouchEnd($event, i)\"\n :data-p-gutter-resizing=\"false\"\n v-bind=\"ptm('gutter')\"\n >\n <div :class=\"cx('gutterHandle')\" tabindex=\"0\" :style=\"[gutterStyle]\" :aria-orientation=\"layout\" :aria-valuenow=\"prevSize\" @keyup=\"onGutterKeyUp\" @keydown=\"onGutterKeyDown($event, i)\" v-bind=\"ptm('gutterHandle')\"></div>\n </div>\n </template>\n </div>\n</template>\n\n<script>\nimport { getHeight, getOuterHeight, getOuterWidth, getWidth } from '@primeuix/utils/dom';\nimport { isArray } from '@primeuix/utils/object';\nimport { getVNodeProp } from '@primevue/core/utils';\nimport BaseSplitter from './BaseSplitter.vue';\n\nexport default {\n name: 'Splitter',\n extends: BaseSplitter,\n inheritAttrs: false,\n emits: ['resizestart', 'resizeend', 'resize'],\n dragging: false,\n mouseMoveListener: null,\n mouseUpListener: null,\n touchMoveListener: null,\n touchEndListener: null,\n size: null,\n gutterElement: null,\n startPos: null,\n prevPanelElement: null,\n nextPanelElement: null,\n nextPanelSize: null,\n prevPanelSize: null,\n panelSizes: null,\n prevPanelIndex: null,\n timer: null,\n data() {\n return {\n prevSize: null\n };\n },\n mounted() {\n this.initializePanels();\n },\n beforeUnmount() {\n this.clear();\n this.unbindMouseListeners();\n },\n methods: {\n isSplitterPanel(child) {\n return child.type.name === 'SplitterPanel';\n },\n initializePanels() {\n if (this.panels && this.panels.length) {\n let initialized = false;\n\n if (this.isStateful()) {\n initialized = this.restoreState();\n }\n\n if (!initialized) {\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n let _panelSizes = [];\n\n this.panels.map((panel, i) => {\n let panelInitialSize = panel.props && panel.props.size ? panel.props.size : null;\n let panelSize = panelInitialSize || 100 / this.panels.length;\n\n _panelSizes[i] = panelSize;\n children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n this.panelSizes = _panelSizes;\n this.prevSize = parseFloat(_panelSizes[0]).toFixed(4);\n }\n }\n },\n onResizeStart(event, index, isKeyDown) {\n this.gutterElement = event.currentTarget || event.target.parentElement;\n this.size = this.horizontal ? getWidth(this.$el) : getHeight(this.$el);\n\n if (!isKeyDown) {\n this.dragging = true;\n this.startPos = this.layout === 'horizontal' ? event.pageX || event.changedTouches[0].pageX : event.pageY || event.changedTouches[0].pageY;\n }\n\n this.prevPanelElement = this.gutterElement.previousElementSibling;\n this.nextPanelElement = this.gutterElement.nextElementSibling;\n\n if (isKeyDown) {\n this.prevPanelSize = this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true);\n this.nextPanelSize = this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true);\n } else {\n this.prevPanelSize = (100 * (this.horizontal ? getOuterWidth(this.prevPanelElement, true) : getOuterHeight(this.prevPanelElement, true))) / this.size;\n this.nextPanelSize = (100 * (this.horizontal ? getOuterWidth(this.nextPanelElement, true) : getOuterHeight(this.nextPanelElement, true))) / this.size;\n }\n\n this.prevPanelIndex = index;\n this.$emit('resizestart', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter[index].setAttribute('data-p-gutter-resizing', true);\n this.$el.setAttribute('data-p-resizing', true);\n },\n onResize(event, step, isKeyDown) {\n let newPos, newPrevPanelSize, newNextPanelSize;\n\n if (isKeyDown) {\n if (this.horizontal) {\n newPrevPanelSize = (100 * (this.prevPanelSize + step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize - step)) / this.size;\n } else {\n newPrevPanelSize = (100 * (this.prevPanelSize - step)) / this.size;\n newNextPanelSize = (100 * (this.nextPanelSize + step)) / this.size;\n }\n } else {\n if (this.horizontal) newPos = (event.pageX * 100) / this.size - (this.startPos * 100) / this.size;\n else newPos = (event.pageY * 100) / this.size - (this.startPos * 100) / this.size;\n\n newPrevPanelSize = this.prevPanelSize + newPos;\n newNextPanelSize = this.nextPanelSize - newPos;\n }\n\n if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n this.panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n this.panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n this.prevSize = parseFloat(newPrevPanelSize).toFixed(4);\n }\n\n this.$emit('resize', { originalEvent: event, sizes: this.panelSizes });\n },\n onResizeEnd(event) {\n if (this.isStateful()) {\n this.saveState();\n }\n\n this.$emit('resizeend', { originalEvent: event, sizes: this.panelSizes });\n this.$refs.gutter.forEach((gutter) => gutter.setAttribute('data-p-gutter-resizing', false));\n this.$el.setAttribute('data-p-resizing', false);\n this.clear();\n },\n repeat(event, index, step) {\n this.onResizeStart(event, index, true);\n this.onResize(event, step, true);\n },\n setTimer(event, index, step) {\n if (!this.timer) {\n this.timer = setInterval(() => {\n this.repeat(event, index, step);\n }, 40);\n }\n },\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n },\n onGutterKeyUp() {\n this.clearTimer();\n this.onResizeEnd();\n },\n onGutterKeyDown(event, index) {\n switch (event.code) {\n case 'ArrowLeft': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n if (this.layout === 'horizontal') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowDown': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n if (this.layout === 'vertical') {\n this.setTimer(event, index, this.step);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n },\n onGutterMouseDown(event, index) {\n this.onResizeStart(event, index);\n this.bindMouseListeners();\n },\n onGutterTouchStart(event, index) {\n this.onResizeStart(event, index);\n this.bindTouchListeners();\n event.preventDefault();\n },\n onGutterTouchMove(event) {\n this.onResize(event);\n event.preventDefault();\n },\n onGutterTouchEnd(event) {\n this.onResizeEnd(event);\n this.unbindTouchListeners();\n event.preventDefault();\n },\n bindMouseListeners() {\n if (!this.mouseMoveListener) {\n this.mouseMoveListener = (event) => this.onResize(event);\n document.addEventListener('mousemove', this.mouseMoveListener);\n }\n\n if (!this.mouseUpListener) {\n this.mouseUpListener = (event) => {\n this.onResizeEnd(event);\n this.unbindMouseListeners();\n };\n\n document.addEventListener('mouseup', this.mouseUpListener);\n }\n },\n bindTouchListeners() {\n if (!this.touchMoveListener) {\n this.touchMoveListener = (event) => this.onResize(event.changedTouches[0]);\n document.addEventListener('touchmove', this.touchMoveListener);\n }\n\n if (!this.touchEndListener) {\n this.touchEndListener = (event) => {\n this.resizeEnd(event);\n this.unbindTouchListeners();\n };\n\n document.addEventListener('touchend', this.touchEndListener);\n }\n },\n validateResize(newPrevPanelSize, newNextPanelSize) {\n if (newPrevPanelSize > 100 || newPrevPanelSize < 0) return false;\n if (newNextPanelSize > 100 || newNextPanelSize < 0) return false;\n\n let prevPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex], 'minSize');\n\n if (this.panels[this.prevPanelIndex].props && prevPanelMinSize && prevPanelMinSize > newPrevPanelSize) {\n return false;\n }\n\n let newPanelMinSize = getVNodeProp(this.panels[this.prevPanelIndex + 1], 'minSize');\n\n if (this.panels[this.prevPanelIndex + 1].props && newPanelMinSize && newPanelMinSize > newNextPanelSize) {\n return false;\n }\n\n return true;\n },\n unbindMouseListeners() {\n if (this.mouseMoveListener) {\n document.removeEventListener('mousemove', this.mouseMoveListener);\n this.mouseMoveListener = null;\n }\n\n if (this.mouseUpListener) {\n document.removeEventListener('mouseup', this.mouseUpListener);\n this.mouseUpListener = null;\n }\n },\n unbindTouchListeners() {\n if (this.touchMoveListener) {\n document.removeEventListener('touchmove', this.touchMoveListener);\n this.touchMoveListener = null;\n }\n\n if (this.touchEndListener) {\n document.removeEventListener('touchend', this.touchEndListener);\n this.touchEndListener = null;\n }\n },\n clear() {\n this.dragging = false;\n this.size = null;\n this.startPos = null;\n this.prevPanelElement = null;\n this.nextPanelElement = null;\n this.prevPanelSize = null;\n this.nextPanelSize = null;\n this.gutterElement = null;\n this.prevPanelIndex = null;\n },\n isStateful() {\n return this.stateKey != null;\n },\n getStorage() {\n switch (this.stateStorage) {\n case 'local':\n return window.localStorage;\n\n case 'session':\n return window.sessionStorage;\n\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n },\n saveState() {\n if (isArray(this.panelSizes)) {\n this.getStorage().setItem(this.stateKey, JSON.stringify(this.panelSizes));\n }\n },\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n\n if (stateString) {\n this.panelSizes = JSON.parse(stateString);\n let children = [...this.$el.children].filter((child) => child.getAttribute('data-pc-name') === 'splitterpanel');\n\n children.forEach((child, i) => {\n child.style.flexBasis = 'calc(' + this.panelSizes[i] + '% - ' + (this.panels.length - 1) * this.gutterSize + 'px)';\n });\n\n return true;\n }\n\n return false;\n },\n resetState() {\n this.initializePanels();\n }\n },\n computed: {\n panels() {\n const panels = [];\n\n this.$slots.default().forEach((child) => {\n if (this.isSplitterPanel(child)) {\n panels.push(child);\n } else if (child.children instanceof Array) {\n child.children.forEach((nestedChild) => {\n if (this.isSplitterPanel(nestedChild)) {\n panels.push(nestedChild);\n }\n });\n }\n });\n\n return panels;\n },\n gutterStyle() {\n if (this.horizontal) return { width: this.gutterSize + 'px' };\n else return { height: this.gutterSize + 'px' };\n },\n horizontal() {\n return this.layout === 'horizontal';\n },\n getPTOptions() {\n return {\n context: {\n nested: this.$parentInstance?.nestedState\n }\n };\n }\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","layout","type","String","gutterSize","Number","stateKey","stateStorage","step","style","SplitterStyle","provide","$pcSplitter","$parentInstance","BaseSplitter","inheritAttrs","emits","dragging","mouseMoveListener","mouseUpListener","touchMoveListener","touchEndListener","size","gutterElement","startPos","prevPanelElement","nextPanelElement","nextPanelSize","prevPanelSize","panelSizes","prevPanelIndex","timer","data","prevSize","mounted","initializePanels","beforeUnmount","clear","unbindMouseListeners","methods","isSplitterPanel","child","_this","panels","length","initialized","isStateful","restoreState","children","_toConsumableArray","$el","filter","getAttribute","_panelSizes","map","panel","i","panelInitialSize","panelSize","flexBasis","parseFloat","toFixed","onResizeStart","event","index","isKeyDown","currentTarget","target","parentElement","horizontal","getWidth","getHeight","pageX","changedTouches","pageY","previousElementSibling","nextElementSibling","getOuterWidth","getOuterHeight","$emit","originalEvent","sizes","$refs","gutter","setAttribute","onResize","newPos","newPrevPanelSize","newNextPanelSize","validateResize","onResizeEnd","saveState","forEach","repeat","setTimer","_this2","setInterval","clearTimer","clearInterval","onGutterKeyUp","onGutterKeyDown","code","preventDefault","onGutterMouseDown","bindMouseListeners","onGutterTouchStart","bindTouchListeners","onGutterTouchMove","onGutterTouchEnd","unbindTouchListeners","_this3","document","addEventListener","_this4","resizeEnd","prevPanelMinSize","getVNodeProp","newPanelMinSize","removeEventListener","getStorage","window","localStorage","sessionStorage","Error","isArray","setItem","JSON","stringify","_this5","storage","stateString","getItem","parse","resetState","computed","_this6","$slots","push","Array","nestedChild","gutterStyle","width","height","getPTOptions","_this$$parentInstance","context","nested","nestedState","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","sx","ptmi","$options","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","tabindex","ref","role","onMousedown","$event","onTouchstart","onTouchmove","onTouchend","ptm","_createElementVNode","$data","onKeyup","apply","arguments","onKeydown","_hoisted_2"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
<TieredMenuSub
|
|
9
9
|
:ref="menubarRef"
|
|
10
10
|
:id="id + '_list'"
|
|
11
|
+
:class="cx('rootList')"
|
|
11
12
|
:tabindex="!disabled ? tabindex : -1"
|
|
12
13
|
role="menubar"
|
|
13
14
|
:aria-label="ariaLabel"
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
@item-click="onItemClick"
|
|
31
32
|
@item-mouseenter="onItemMouseEnter"
|
|
32
33
|
@item-mousemove="onItemMouseMove"
|
|
34
|
+
v-bind="ptm('rootList')"
|
|
33
35
|
/>
|
|
34
36
|
<div v-if="$slots.end" :class="cx('end')" v-bind="ptm('end')">
|
|
35
37
|
<slot name="end"></slot>
|
|
@@ -40,10 +42,10 @@
|
|
|
40
42
|
</template>
|
|
41
43
|
|
|
42
44
|
<script>
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import { isNotEmpty, resolve, isPrintableCharacter, isEmpty, findLastIndex } from '@primeuix/utils/object';
|
|
45
|
+
import { absolutePosition, addStyle, findSingle, focus, getOuterWidth, isTouchDevice } from '@primeuix/utils/dom';
|
|
46
|
+
import { findLastIndex, isEmpty, isNotEmpty, isPrintableCharacter, resolve } from '@primeuix/utils/object';
|
|
46
47
|
import { ZIndex } from '@primeuix/utils/zindex';
|
|
48
|
+
import { ConnectedOverlayScrollHandler, UniqueComponentId } from '@primevue/core/utils';
|
|
47
49
|
import OverlayEventBus from 'primevue/overlayeventbus';
|
|
48
50
|
import Portal from 'primevue/portal';
|
|
49
51
|
import BaseTieredMenu from './BaseTieredMenu.vue';
|
|
@@ -55,6 +57,7 @@ export default {
|
|
|
55
57
|
inheritAttrs: false,
|
|
56
58
|
emits: ['focus', 'blur', 'before-show', 'before-hide', 'hide', 'show'],
|
|
57
59
|
outsideClickListener: null,
|
|
60
|
+
matchMediaListener: null,
|
|
58
61
|
scrollHandler: null,
|
|
59
62
|
resizeListener: null,
|
|
60
63
|
target: null,
|
|
@@ -70,7 +73,9 @@ export default {
|
|
|
70
73
|
activeItemPath: [],
|
|
71
74
|
visible: !this.popup,
|
|
72
75
|
submenuVisible: false,
|
|
73
|
-
dirty: false
|
|
76
|
+
dirty: false,
|
|
77
|
+
query: null,
|
|
78
|
+
queryMatches: false
|
|
74
79
|
};
|
|
75
80
|
},
|
|
76
81
|
watch: {
|
|
@@ -91,10 +96,12 @@ export default {
|
|
|
91
96
|
},
|
|
92
97
|
mounted() {
|
|
93
98
|
this.id = this.id || UniqueComponentId();
|
|
99
|
+
this.bindMatchMediaListener();
|
|
94
100
|
},
|
|
95
101
|
beforeUnmount() {
|
|
96
102
|
this.unbindOutsideClickListener();
|
|
97
103
|
this.unbindResizeListener();
|
|
104
|
+
this.unbindMatchMediaListener();
|
|
98
105
|
|
|
99
106
|
if (this.scrollHandler) {
|
|
100
107
|
this.scrollHandler.destroy();
|
|
@@ -496,6 +503,26 @@ export default {
|
|
|
496
503
|
this.resizeListener = null;
|
|
497
504
|
}
|
|
498
505
|
},
|
|
506
|
+
bindMatchMediaListener() {
|
|
507
|
+
if (!this.matchMediaListener) {
|
|
508
|
+
const query = matchMedia(`(max-width: ${this.breakpoint})`);
|
|
509
|
+
|
|
510
|
+
this.query = query;
|
|
511
|
+
this.queryMatches = query.matches;
|
|
512
|
+
|
|
513
|
+
this.matchMediaListener = () => {
|
|
514
|
+
this.queryMatches = query.matches;
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
this.query.addEventListener('change', this.matchMediaListener);
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
unbindMatchMediaListener() {
|
|
521
|
+
if (this.matchMediaListener) {
|
|
522
|
+
this.query.removeEventListener('change', this.matchMediaListener);
|
|
523
|
+
this.matchMediaListener = null;
|
|
524
|
+
}
|
|
525
|
+
},
|
|
499
526
|
isItemMatched(processedItem) {
|
|
500
527
|
return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem)?.toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());
|
|
501
528
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<transition name="p-tieredmenu" @enter="onEnter" v-bind="ptm('menu.transition')">
|
|
3
|
-
<ul v-if="level === 0 ? true : visible" :ref="containerRef" :
|
|
3
|
+
<ul v-if="level === 0 ? true : visible" :ref="containerRef" :tabindex="tabindex">
|
|
4
4
|
<template v-for="(processedItem, index) of items" :key="getItemKey(processedItem)">
|
|
5
5
|
<li
|
|
6
6
|
v-if="isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')"
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
<TieredMenuSub
|
|
44
44
|
v-if="isItemVisible(processedItem) && isItemGroup(processedItem)"
|
|
45
45
|
:id="getItemId(processedItem) + '_list'"
|
|
46
|
+
:class="cx('submenu')"
|
|
46
47
|
:style="sx('submenu', true, { processedItem })"
|
|
47
48
|
:aria-labelledby="getItemLabelId(processedItem)"
|
|
48
49
|
role="menu"
|
|
@@ -58,6 +59,7 @@
|
|
|
58
59
|
@item-click="$emit('item-click', $event)"
|
|
59
60
|
@item-mouseenter="$emit('item-mouseenter', $event)"
|
|
60
61
|
@item-mousemove="$emit('item-mousemove', $event)"
|
|
62
|
+
v-bind="ptm('submenu')"
|
|
61
63
|
/>
|
|
62
64
|
</li>
|
|
63
65
|
<li
|
package/tieredmenu/index.d.ts
CHANGED
|
@@ -226,6 +226,11 @@ export interface TieredMenuProps {
|
|
|
226
226
|
* @defaultValue false
|
|
227
227
|
*/
|
|
228
228
|
popup?: boolean | undefined;
|
|
229
|
+
/**
|
|
230
|
+
* The breakpoint to define the maximum width boundary.
|
|
231
|
+
* @defaultValue 960px
|
|
232
|
+
*/
|
|
233
|
+
breakpoint?: string | undefined;
|
|
229
234
|
/**
|
|
230
235
|
* A valid query selector or an HTMLElement to specify where the overlay gets attached.
|
|
231
236
|
* @defaultValue body
|