Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
vue3-draggable-resizable
Advanced tools
[Vue3 组件] 用于拖拽调整位置和大小的的组件,同时支持冲突检测,元素吸附对齐,实时参考线。 [ Vue3 Component ] Draggable and resizable component for vue3, and, support element adsorption alignment, real-time reference line, etc.
$ npm install vue3-draggable-resizable
Register the Vue3DraggableResizable
// >main.js
import { createApp } from 'vue'
import App from './App.vue'
import Vue3DraggableResizable from 'vue3-draggable-resizable'
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
// You will have a global component named "Vue3DraggableResizable"
createApp(App)
.use(Vue3DraggableResizable)
.mount('#app')
You can also use it separately within the component
// >component.js
import { defineComponent } from 'vue'
import Vue3DraggableResizable from 'vue3-draggable-resizable'
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({
components: { Vue3DraggableResizable }
// ...other
})
Here is a complete example of using "vue-template"
<template>
<div id="app">
<div class="parent">
<Vue3DraggableResizable
:initW="110"
:initH="120"
v-model:x="x"
v-model:y="y"
v-model:w="w"
v-model:h="h"
v-model:active="active"
:draggable="true"
:resizable="true"
@activated="print('activated')"
@deactivated="print('deactivated')"
@drag-start="print('drag-start')"
@resize-start="print('resize-start')"
@dragging="print('dragging')"
@resizing="print('resizing')"
@drag-end="print('drag-end')"
@resize-end="print('resize-end')"
>
This is a test example
</Vue3DraggableResizable>
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import Vue3DraggableResizable from 'vue3-draggable-resizable'
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({
components: { Vue3DraggableResizable },
data() {
return {
x: 100,
y: 100,
h: 100,
w: 100,
active: false
}
},
methods: {
print(val) {
console.log(val)
}
}
})
</script>
<style>
.parent {
width: 200px;
height: 200px;
position: absolute;
top: 100px;
left: 100px;
border: 1px solid #000;
user-select: none;
}
</style>
type: Number
default: null
Set initial width(px)
<Vue3DraggableResizable :initW="100" />
type: Number
default: null
Set initial height(px)
<Vue3DraggableResizable :initH="100" />
type: Number
default: 0
Current width(px) of the container.
You can use "v-model:w" to keeps it up-to-date
<Vue3DraggableResizable v-model:w="100" />
type: Number
default: 0
Current height(px) of the container.
You can use "v-model:h" to keeps it up-to-date
<Vue3DraggableResizable v-model:h="100" />
type: Number
default: 0
Current left(px) of the container.
You can use "v-model:x" to keeps it up-to-date
<Vue3DraggableResizable v-model:x="100" />
type: Number
default: 0
The current top(px) of the container.
You can use "v-model:y" to keeps it up-to-date
<Vue3DraggableResizable v-model:y="100" />
type: Number
default: 20
Minimum width(px)
<Vue3DraggableResizable :minW="100" />
type: Number
default: 20
Minimum height(px)
<Vue3DraggableResizable :minH="100" />
type: Boolean
default: false
Indicates whether the component is selected.
You can use "v-model:active" to keeps it up-to-date
<Vue3DraggableResizable v-model:active="100" />
type: Boolean
default: true
Defines the component can be draggable or not
<Vue3DraggableResizable :draggable="true" />
type: Boolean
default: true
Defines the component can be resizable or not
<Vue3DraggableResizable :draggable="true" />
type: Boolean
default: false
The lockAspectRatio
property is used to lock aspect ratio.
<Vue3DraggableResizable :lockAspectRatio="true" />
type: Boolean
default: false
Defines the component can be moved on x-axis or not
<Vue3DraggableResizable :disabledX="true" />
type: Boolean
default: false
Defines the component can be moved on y-axis or not
<Vue3DraggableResizable :disabledY="true" />
type: Boolean
default: false
Defines the component`s width can be modify or not
<Vue3DraggableResizable :disabledW="true" />
type: Boolean
default: false
Defines the component`s height can be modify or not
<Vue3DraggableResizable :disabledH="true" />
type: Boolean
default: false
Restrict movement and size within its parent node
<Vue3DraggableResizable :parent="true" />
type: Array
default: ['tl', 'tm', 'tr', 'ml', 'mr', 'bl', 'bm', 'br']
Define the array of handles to restrict the element resizing
tl
: Top lefttm
: Top middletr
: Top rightmr
: Middle rightml
: Middle leftbl
: Bottom leftbm
: Bottom middlebr
: Bottom right<Vue3DraggableResizable :handles="['tl','tr','bl','br']" />
type: String
default: draggable
Used to set the custom class
of a draggable-resizable component when draggable
is enable.
<Vue3DraggableResizable classNameDraggable="draggable" />
type: String
default: resizable
Used to set the custom class
of a draggable-resizable component when resizable
is enable.
<Vue3DraggableResizable classNameResizable="resizable" />
type: String
default: dragging
Used to set the custom class
of a draggable-resizable component when is dragging.
<Vue3DraggableResizable classNameDragging="dragging" />
type: String
default: resizing
Used to set the custom class
of a draggable-resizable component when is resizing.
<Vue3DraggableResizable classNameResizing="resizing" />
type: String
default: active
Used to set the custom class
of a draggable-resizable component when is active.
<Vue3DraggableResizable classNameActive="active" />
type: String
default: handle
Used to set the custom common class
of each handle element.
<Vue3DraggableResizable classNameHandle="my-handle" />
following handle nodes will be rendered
...
<div class="vdr-handle vdr-handle-tl my-handle my-handle-tl"></div>
<div class="vdr-handle vdr-handle-tm my-handle my-handle-tm"></div>
<div class="vdr-handle vdr-handle-tr my-handle my-handle-tr"></div>
<div class="vdr-handle vdr-handle-ml my-handle my-handle-mr"></div>
...
payload: -
<Vue3DraggableResizable @activated="activatedHandle" />
payload: -
<Vue3DraggableResizable @deactivated="deactivatedHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @drag-start="dragStartHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @dragging="dragStartHandle" />
payload: { x: number, y: number }
<Vue3DraggableResizable @drag-end="dragEndHandle" />
payload: { x: number, y: number, w: number, h: number }
<Vue3DraggableResizable @resize-start="resizeStartHandle" />
payload: { x: number, y: number, w: number, h: number }v
<Vue3DraggableResizable @resizing="resizingHandle" />
payload: { x: number, y: number, w: number, h: number }
<Vue3DraggableResizable @resize-end="resizeEndHandle" />
You need to import another component to use the "adsorption alignment" feature.
This can be used as follows.
<template>
<div id="app">
<div class="parent">
<DraggableContainer>
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import Vue3DraggableResizable from 'vue3-draggable-resizable'
// This component is not exported by default
// If you used "app.use(Vue3DraggableResizable)",then you don't need to import it, you can use it directly.
import { DraggableContainer } from 'vue3-draggable-resizable'
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({
components: { Vue3DraggableResizable, DraggableContainer }
})
</script>
<style>
.parent {
width: 200px;
height: 200px;
position: absolute;
top: 100px;
left: 100px;
border: 1px solid #000;
user-select: none;
}
</style>
These props apply to DraggableContainer
type: Boolean
default: false
Disable this feature
<DraggableContainer :disabled="true">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
type: Boolean
default: true
Adsorption near parent component
<DraggableContainer :adsorbParent="false">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
type: Array<Number>
default: null
Custom guides(column)
<DraggableContainer :adsorbCols="[10,20,30]">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
type: Array<Number>
default: null
Custom guides(row)
<DraggableContainer :adsorbRows="[10,20,30]">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
type: Boolean
default: true
reference line visible
<DraggableContainer :referenceLineVisible="false">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
type: String
default: #f00
reference line color
<DraggableContainer :referenceLineColor="#0f0">
<Vue3DraggableResizable>
Test
</Vue3DraggableResizable>
<Vue3DraggableResizable>
Another test
</Vue3DraggableResizable>
</DraggableContainer>
FAQs
[Vue3 Component] 拖拽缩放并具有自动吸附对齐、参考线等功能
We found that vue3-draggable-resizable demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.