From bac00b5a3600496a12fe58d0b1bc4da3b52a6212 Mon Sep 17 00:00:00 2001
From: 18alantom <2.alan.tom@gmail.com>
Date: Thu, 9 Mar 2023 20:49:45 +0530
Subject: [PATCH] fix(ui/ux): continuous drag for template pane - remove border
radius on
---
src/components/Controls/AutoComplete.vue | 1 +
src/components/Controls/Base.vue | 4 +-
src/components/HorizontalResizer.vue | 52 ++++++-------------
src/pages/TemplateBuilder/TemplateBuilder.vue | 28 +++++++---
4 files changed, 39 insertions(+), 46 deletions(-)
diff --git a/src/components/Controls/AutoComplete.vue b/src/components/Controls/AutoComplete.vue
index 3c6ad2a0..8b7ca303 100644
--- a/src/components/Controls/AutoComplete.vue
+++ b/src/components/Controls/AutoComplete.vue
@@ -13,6 +13,7 @@
!isReadOnly && triggerChange(e.target.value)"
@focus="(e) => !isReadOnly && $emit('focus', e)"
@input="(e) => !isReadOnly && $emit('input', e)"
@@ -42,7 +42,7 @@ export default {
size: String,
showLabel: Boolean,
autofocus: Boolean,
- inputStyles: { type: Object, default: () => ({}) },
+ containerStyles: { type: Object, default: () => ({}) },
textRight: { type: [null, Boolean], default: null },
readOnly: { type: [null, Boolean], default: null },
required: { type: [null, Boolean], default: null },
diff --git a/src/components/HorizontalResizer.vue b/src/components/HorizontalResizer.vue
index b5f6225f..9674b5cd 100644
--- a/src/components/HorizontalResizer.vue
+++ b/src/components/HorizontalResizer.vue
@@ -31,11 +31,16 @@ import MouseFollower from './MouseFollower.vue';
export default defineComponent({
emits: ['resize'],
- props: { initialX: Number, minX: Number, maxX: Number },
+ props: {
+ initialX: { type: Number, required: true },
+ minX: Number,
+ maxX: Number,
+ },
data() {
return {
x: 0,
delta: 0,
+ xOnMouseDown: 0,
resizing: false,
listener: null,
};
@@ -43,9 +48,9 @@ export default defineComponent({
methods: {
onMouseDown(e: MouseEvent) {
e.preventDefault();
- const { clientX } = e;
- this.setX(clientX);
+ this.x = e.clientX;
+ this.xOnMouseDown = this.initialX;
this.setResizing(true);
document.addEventListener('mousemove', this.mouseMoveListener);
@@ -53,18 +58,17 @@ export default defineComponent({
},
mouseUpListener(e: MouseEvent) {
e.preventDefault();
- const { clientX } = e;
- this.setX(clientX);
+ this.x = e.clientX;
this.setResizing(false);
- this.emitValue(this.x - clientX);
+ this.$emit('resize', this.value);
this.removeListeners();
},
mouseMoveListener(e: MouseEvent) {
e.preventDefault();
- const { clientX } = e;
- this.delta = this.x - clientX;
+ this.delta = this.x - e.clientX;
+ this.$emit('resize', this.value);
},
removeListeners() {
document.removeEventListener('mousemove', this.mouseMoveListener);
@@ -80,36 +84,10 @@ export default defineComponent({
document.body.style.cursor = '';
}
},
- setX(x?: number): void {
- if (typeof x === 'number') {
- this.x = x;
- return;
- }
- const hr = this.$refs.hr;
- if (!(hr instanceof HTMLDivElement)) {
- return;
- }
- this.x = hr.getBoundingClientRect().x;
- },
- emitValue(delta: number) {
- if (typeof this.minDelta === 'number') {
- delta = Math.max(delta, this.minDelta);
- }
-
- if (typeof this.maxDelta === 'number') {
- delta = Math.min(delta, this.maxDelta);
- }
-
- this.$emit('resize', delta, this.value);
- },
},
computed: {
value() {
- if (typeof this.initialX !== 'number') {
- return this.delta;
- }
-
- let value = this.delta + this.initialX;
+ let value = this.delta + this.xOnMouseDown;
if (typeof this.minX === 'number') {
value = Math.max(this.minX, value);
}
@@ -121,14 +99,14 @@ export default defineComponent({
return value;
},
minDelta() {
- if (typeof this.minX !== 'number' || typeof this.initialX !== 'number') {
+ if (typeof this.minX !== 'number') {
return null;
}
return this.initialX - this.minX;
},
maxDelta() {
- if (typeof this.maxX !== 'number' || typeof this.initialX !== 'number') {
+ if (typeof this.maxX !== 'number') {
return null;
}
diff --git a/src/pages/TemplateBuilder/TemplateBuilder.vue b/src/pages/TemplateBuilder/TemplateBuilder.vue
index c37e1053..8f5ff3ec 100644
--- a/src/pages/TemplateBuilder/TemplateBuilder.vue
+++ b/src/pages/TemplateBuilder/TemplateBuilder.vue
@@ -34,11 +34,11 @@
{{ helperMessage }}
+
+
+
+
await setType(value)"
/>
+
setDisplayDoc(value)"
/>
+
@@ -107,20 +114,21 @@
class="z-20"
:initial-x="panelWidth"
:min-x="22 * 16"
- @resize="(_: number, value: number) => panelWidth = value"
+ :max-x="maxWidth"
+ @resize="(x: number) => panelWidth = x"
/>
-
+
-
+
+
+