@soft-stech/bootsman-ui-shadcn 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
|
|
1
|
-
import { c as
|
2
|
-
import { defineComponent as
|
3
|
-
import { useVModel as
|
4
|
-
const
|
1
|
+
import { c as f, d as m } from "../../../utils-BiLiPt4t.js";
|
2
|
+
import { defineComponent as p, ref as v, withDirectives as b, openBlock as g, createElementBlock as V, isRef as x, normalizeClass as k, unref as r, vModelText as y } from "vue";
|
3
|
+
import { useVModel as w } from "@vueuse/core";
|
4
|
+
const A = /* @__PURE__ */ p({
|
5
5
|
__name: "BuiTextarea",
|
6
6
|
props: {
|
7
7
|
defaultValue: {},
|
@@ -9,19 +9,28 @@ const y = /* @__PURE__ */ d({
|
|
9
9
|
modelValue: {}
|
10
10
|
},
|
11
11
|
emits: ["update:modelValue"],
|
12
|
-
setup(
|
13
|
-
const
|
12
|
+
setup(n, { emit: l }) {
|
13
|
+
const t = n, o = w(t, "modelValue", l, {
|
14
14
|
passive: !0,
|
15
|
-
defaultValue:
|
16
|
-
})
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
},
|
21
|
-
|
15
|
+
defaultValue: t.defaultValue
|
16
|
+
}), a = v(!1), u = () => {
|
17
|
+
a.value = !0;
|
18
|
+
}, i = () => {
|
19
|
+
a.value = !1;
|
20
|
+
}, d = (e) => {
|
21
|
+
(e.key === "Home" || e.key === "End" || e.key === "ArrowUp" || e.key === "ArrowDown") && a.value && e.stopPropagation();
|
22
|
+
};
|
23
|
+
return (e, s) => b((g(), V("textarea", {
|
24
|
+
"onUpdate:modelValue": s[0] || (s[0] = (c) => x(o) ? o.value = c : null),
|
25
|
+
class: k(r(f)(r(B)({ variant: e.variant }), e.$attrs.class ?? "")),
|
26
|
+
onFocus: u,
|
27
|
+
onBlur: i,
|
28
|
+
onKeydown: d
|
29
|
+
}, null, 34)), [
|
30
|
+
[y, r(o)]
|
22
31
|
]);
|
23
32
|
}
|
24
|
-
}),
|
33
|
+
}), B = m(
|
25
34
|
"flex min-h-[80px] w-full rounded border bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-30 dark:disabled:opacity-55 aria-[invalid=true]:border-destructive-foreground",
|
26
35
|
{
|
27
36
|
variants: {
|
@@ -37,6 +46,6 @@ const y = /* @__PURE__ */ d({
|
|
37
46
|
}
|
38
47
|
);
|
39
48
|
export {
|
40
|
-
|
41
|
-
|
49
|
+
A as BuiTextarea,
|
50
|
+
B as textareaVariants
|
42
51
|
};
|
package/package.json
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
<script setup lang="ts">
|
2
|
+
import { ref } from 'vue'
|
2
3
|
import { useVModel } from '@vueuse/core'
|
3
4
|
import { cn } from '@/lib/utils'
|
4
5
|
import { textareaVariants } from '.'
|
@@ -17,8 +18,31 @@ const modelValue = useVModel(props, 'modelValue', emits, {
|
|
17
18
|
passive: true,
|
18
19
|
defaultValue: props.defaultValue
|
19
20
|
})
|
21
|
+
|
22
|
+
const isFocused = ref<Boolean>(false)
|
23
|
+
|
24
|
+
const handleFocus = () => {
|
25
|
+
isFocused.value = true
|
26
|
+
}
|
27
|
+
const handleBlur = () => {
|
28
|
+
isFocused.value = false
|
29
|
+
}
|
30
|
+
|
31
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
32
|
+
if (e.key === 'Home' || e.key === 'End' || e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
33
|
+
if (isFocused.value) {
|
34
|
+
e.stopPropagation()
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
20
38
|
</script>
|
21
39
|
|
22
40
|
<template>
|
23
|
-
<textarea
|
41
|
+
<textarea
|
42
|
+
v-model="modelValue"
|
43
|
+
:class="cn(textareaVariants({ variant }), $attrs.class ?? '')"
|
44
|
+
@focus="handleFocus"
|
45
|
+
@blur="handleBlur"
|
46
|
+
@keydown="handleKeyDown"
|
47
|
+
/>
|
24
48
|
</template>
|