<script> import BaseComponent from 'primevue/basecomponent'; import { useStyle } from 'primevue/usestyle'; const styles = ` .p-splitter { display: flex; flex-wrap: nowrap; } .p-splitter-vertical { flex-direction: column; } .p-splitter-gutter { flex-grow: 0; flex-shrink: 0; display: flex; align-items: center; justify-content: center; cursor: col-resize; } .p-splitter-horizontal.p-splitter-resizing { cursor: col-resize; user-select: none; } .p-splitter-horizontal > .p-splitter-gutter > .p-splitter-gutter-handle { height: 24px; width: 100%; } .p-splitter-horizontal > .p-splitter-gutter { cursor: col-resize; } .p-splitter-vertical.p-splitter-resizing { cursor: row-resize; user-select: none; } .p-splitter-vertical > .p-splitter-gutter { cursor: row-resize; } .p-splitter-vertical > .p-splitter-gutter > .p-splitter-gutter-handle { width: 24px; height: 100%; } `; const classes = { root: ({ props }) => ['p-splitter p-component', 'p-splitter-' + props.layout], gutter: 'p-splitter-gutter', gutterHandler: 'p-splitter-gutter-handle' }; const inlineStyles = { root: ({ props }) => [{ display: 'flex', 'flex-wrap': 'nowrap' }, props.layout === 'vertical' ? { 'flex-direction': 'column' } : ''] }; const { load: loadStyle } = useStyle(styles, { name: 'splitter', manual: true }); export default { name: 'BaseSplitter', extends: BaseComponent, props: { layout: { type: String, default: 'horizontal' }, gutterSize: { type: Number, default: 4 }, stateKey: { type: String, default: null }, stateStorage: { type: String, default: 'session' }, step: { type: Number, default: 5 } }, css: { classes, inlineStyles, loadStyle }, provide() { return { $parentInstance: this }; } }; </script>