@adyen/bento-vue3 1.8.0 → 1.9.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/dist/@types/packages/vue2/src/components/data-grid/composables/useKeyboardNavigator/useKeyboardNavigator.d.ts +6 -2
- package/dist/@types/packages/vue2/src/components/data-grid/composables/useScroller/useScroller.d.ts +6 -0
- package/dist/@types/packages/vue2/src/components/data-grid/data-grid.vue.d.ts +23 -422
- package/dist/@types/packages/vue2/src/components/divider/divider.vue.d.ts +1 -5
- package/dist/@types/packages/vue2/src/components/dropdown/components/dropdown-default-textbox/dropdown-default-textbox.vue.d.ts +10 -0
- package/dist/@types/packages/vue2/src/components/dropdown/dropdown.vue.d.ts +12 -0
- package/dist/@types/packages/vue2/src/components/filter-bar/components/base-filter/base-filter.vue.d.ts +1 -0
- package/dist/@types/packages/vue2/src/components/input-field/input-field.types.d.ts +1 -3
- package/dist/@types/packages/vue2/src/components/internal/field-label/field-label.vue.d.ts +9 -0
- package/dist/accordion.js +2 -2
- package/dist/action-bar.js +4 -4
- package/dist/alert.js +58 -59
- package/dist/alert.js.map +1 -1
- package/dist/assets/base-modal.css +1 -1
- package/dist/assets/checkbox.css +1 -1
- package/dist/assets/copy.css +1 -1
- package/dist/assets/cross.css +1 -1
- package/dist/assets/dropdown-default-textbox.css +1 -1
- package/dist/assets/dropdown.css +1 -1
- package/dist/assets/field-label.css +1 -1
- package/dist/assets/index10.css +1 -1
- package/dist/assets/index11.css +1 -1
- package/dist/assets/index12.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index14.css +1 -1
- package/dist/assets/index15.css +1 -1
- package/dist/assets/index16.css +1 -1
- package/dist/assets/index17.css +1 -1
- package/dist/assets/index18.css +1 -1
- package/dist/assets/index19.css +1 -1
- package/dist/assets/index2.css +1 -1
- package/dist/assets/index20.css +1 -1
- package/dist/assets/index21.css +1 -1
- package/dist/assets/index22.css +1 -1
- package/dist/assets/index23.css +1 -1
- package/dist/assets/index24.css +1 -1
- package/dist/assets/index25.css +1 -1
- package/dist/assets/index26.css +1 -1
- package/dist/assets/index27.css +1 -1
- package/dist/assets/index28.css +1 -1
- package/dist/assets/index29.css +1 -1
- package/dist/assets/index3.css +1 -1
- package/dist/assets/index30.css +1 -1
- package/dist/assets/index31.css +1 -1
- package/dist/assets/index32.css +1 -1
- package/dist/assets/index33.css +1 -1
- package/dist/assets/index34.css +1 -1
- package/dist/assets/index35.css +1 -1
- package/dist/assets/index36.css +1 -1
- package/dist/assets/index37.css +1 -1
- package/dist/assets/index38.css +1 -1
- package/dist/assets/index4.css +1 -1
- package/dist/assets/index40.css +1 -1
- package/dist/assets/index41.css +1 -1
- package/dist/assets/index42.css +1 -1
- package/dist/assets/index43.css +1 -1
- package/dist/assets/index44.css +1 -1
- package/dist/assets/index45.css +1 -1
- package/dist/assets/index46.css +1 -1
- package/dist/assets/index5.css +1 -1
- package/dist/assets/index6.css +1 -1
- package/dist/assets/index7.css +1 -1
- package/dist/assets/index8.css +1 -1
- package/dist/assets/index9.css +1 -1
- package/dist/assets/listbox.css +1 -1
- package/dist/avatar-image.js +1 -1
- package/dist/button.js +3 -3
- package/dist/card.js +2 -2
- package/dist/checkbox.js +5 -5
- package/dist/chunks/arrow-left.81a91b8f.js +29 -0
- package/dist/chunks/arrow-left.81a91b8f.js.map +1 -0
- package/dist/chunks/{base-modal.3dcf8376.js → base-modal.a629cb32.js} +3 -3
- package/dist/chunks/{base-modal.3dcf8376.js.map → base-modal.a629cb32.js.map} +1 -1
- package/dist/chunks/{button-actions-with-menu.3f52ea2d.js → button-actions-with-menu.f6dfb14d.js} +3 -3
- package/dist/chunks/{button-actions-with-menu.3f52ea2d.js.map → button-actions-with-menu.f6dfb14d.js.map} +1 -1
- package/dist/chunks/{calendar.d4ab387d.js → calendar.fa7712e8.js} +2 -2
- package/dist/chunks/{calendar.d4ab387d.js.map → calendar.fa7712e8.js.map} +1 -1
- package/dist/chunks/{checkbox.03c4b0fe.js → checkbox.731dc0ab.js} +71 -72
- package/dist/chunks/checkbox.731dc0ab.js.map +1 -0
- package/dist/chunks/checkmark-circle-fill.c45a999d.js +44 -0
- package/dist/chunks/checkmark-circle-fill.c45a999d.js.map +1 -0
- package/dist/chunks/checkmark-small.c79220d9.js +29 -0
- package/dist/chunks/checkmark-small.c79220d9.js.map +1 -0
- package/dist/chunks/checkmark.eb3c7a06.js +29 -0
- package/dist/chunks/checkmark.eb3c7a06.js.map +1 -0
- package/dist/chunks/chevron-left.4ee92950.js +52 -0
- package/dist/chunks/chevron-left.4ee92950.js.map +1 -0
- package/dist/chunks/chevron-up.46afb34c.js +52 -0
- package/dist/chunks/chevron-up.46afb34c.js.map +1 -0
- package/dist/chunks/{controls-group.807b5fb0.js → controls-group.d6543674.js} +2 -2
- package/dist/chunks/{controls-group.807b5fb0.js.map → controls-group.d6543674.js.map} +1 -1
- package/dist/chunks/{copy.28bd4298.js → copy.330d594e.js} +36 -37
- package/dist/chunks/copy.330d594e.js.map +1 -0
- package/dist/chunks/cross-circle-fill.1abec1a2.js +44 -0
- package/dist/chunks/cross-circle-fill.1abec1a2.js.map +1 -0
- package/dist/chunks/cross.26509efc.js +29 -0
- package/dist/chunks/cross.26509efc.js.map +1 -0
- package/dist/chunks/{dropdown-default-textbox.74c4584a.js → dropdown-default-textbox.4108b289.js} +63 -58
- package/dist/chunks/{dropdown-default-textbox.74c4584a.js.map → dropdown-default-textbox.4108b289.js.map} +1 -1
- package/dist/chunks/{dropdown.502e1f5c.js → dropdown.63de9aac.js} +209 -201
- package/dist/chunks/dropdown.63de9aac.js.map +1 -0
- package/dist/chunks/field-label.3c19a29a.js +146 -0
- package/dist/chunks/field-label.3c19a29a.js.map +1 -0
- package/dist/chunks/{fixed-scroller.92bb77a6.js → fixed-scroller.bced60dd.js} +2 -2
- package/dist/chunks/{fixed-scroller.92bb77a6.js.map → fixed-scroller.bced60dd.js.map} +1 -1
- package/dist/chunks/{index.cf0d3be3.js → index.4d2a13e1.js} +2 -2
- package/dist/chunks/{index.cf0d3be3.js.map → index.4d2a13e1.js.map} +1 -1
- package/dist/chunks/{index.d2542c6a.js → index.73ed22a7.js} +145 -150
- package/dist/chunks/index.73ed22a7.js.map +1 -0
- package/dist/chunks/{index.7262642e.js → index.85832db5.js} +3 -3
- package/dist/chunks/{index.7262642e.js.map → index.85832db5.js.map} +1 -1
- package/dist/chunks/{index.abb2a1d5.js → index.89dfe209.js} +2 -2
- package/dist/chunks/{index.abb2a1d5.js.map → index.89dfe209.js.map} +1 -1
- package/dist/chunks/{index.726e2f3c.js → index.98174339.js} +4 -4
- package/dist/chunks/{index.726e2f3c.js.map → index.98174339.js.map} +1 -1
- package/dist/chunks/{index.e9156fe3.js → index.c6fecf1c.js} +7 -7
- package/dist/chunks/{index.e9156fe3.js.map → index.c6fecf1c.js.map} +1 -1
- package/dist/chunks/{index.b043371e.js → index.edcaf766.js} +5 -5
- package/dist/chunks/{index.b043371e.js.map → index.edcaf766.js.map} +1 -1
- package/dist/chunks/info-filled.e591599f.js +67 -0
- package/dist/chunks/info-filled.e591599f.js.map +1 -0
- package/dist/chunks/{listbox-option-tag.5b00c85f.js → listbox-option-tag.b1eb32bd.js} +2 -2
- package/dist/chunks/{listbox-option-tag.5b00c85f.js.map → listbox-option-tag.b1eb32bd.js.map} +1 -1
- package/dist/chunks/{listbox.d07c24e6.js → listbox.ac43f8ab.js} +39 -36
- package/dist/chunks/{listbox.d07c24e6.js.map → listbox.ac43f8ab.js.map} +1 -1
- package/dist/chunks/{loading-button.ad7cfaee.js → loading-button.4b88e24d.js} +3 -3
- package/dist/chunks/{loading-button.ad7cfaee.js.map → loading-button.4b88e24d.js.map} +1 -1
- package/dist/chunks/refresh.bd60f6a8.js +29 -0
- package/dist/chunks/refresh.bd60f6a8.js.map +1 -0
- package/dist/chunks/search.ade93bda.js +44 -0
- package/dist/chunks/search.ade93bda.js.map +1 -0
- package/dist/chunks/{tooltip.054d2eb6.js → tooltip.27c32d36.js} +2 -2
- package/dist/chunks/{tooltip.054d2eb6.js.map → tooltip.27c32d36.js.map} +1 -1
- package/dist/code-snippet.js +425 -428
- package/dist/code-snippet.js.map +1 -1
- package/dist/country.js +1 -1
- package/dist/data-grid.js +1080 -1140
- package/dist/data-grid.js.map +1 -1
- package/dist/date-picker.js +6 -6
- package/dist/date-range-picker.js +2 -2
- package/dist/divider.js +9 -26
- package/dist/divider.js.map +1 -1
- package/dist/dropdown.js +3 -3
- package/dist/empty-state.js +1 -1
- package/dist/filter-bar.js +1035 -836
- package/dist/filter-bar.js.map +1 -1
- package/dist/focus-trap.js +1 -1
- package/dist/form-layout.js +1 -1
- package/dist/header.js +2 -2
- package/dist/index.js +12 -12
- package/dist/info-icon.js +38 -39
- package/dist/info-icon.js.map +1 -1
- package/dist/input-field.js +105 -107
- package/dist/input-field.js.map +1 -1
- package/dist/internal.js +7 -7
- package/dist/link.js +1 -1
- package/dist/loading-indicator.js +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal.js +1 -1
- package/dist/pagination.js +149 -157
- package/dist/pagination.js.map +1 -1
- package/dist/payment-method.js +2 -2
- package/dist/payment-method.js.map +1 -1
- package/dist/popover.js +1 -1
- package/dist/popper-container.js +1 -1
- package/dist/radio-group.js +3 -3
- package/dist/search-bar.js +4 -4
- package/dist/segmented-control.js +3 -3
- package/dist/sidepanel.js +4 -4
- package/dist/status.js +1 -1
- package/dist/stepper.js +78 -79
- package/dist/stepper.js.map +1 -1
- package/dist/structured-list.js +1 -1
- package/dist/summary-grid.js +2 -2
- package/dist/tabs.js +2 -2
- package/dist/tag.js +2 -2
- package/dist/textarea.js +46 -47
- package/dist/textarea.js.map +1 -1
- package/dist/timeline.js +92 -93
- package/dist/timeline.js.map +1 -1
- package/dist/toast.js +2 -2
- package/dist/toggle.js +2 -2
- package/dist/tutorial.js +86 -87
- package/dist/tutorial.js.map +1 -1
- package/dist/web-types.json +1 -1
- package/package.json +4 -4
- package/dist/assets/arrow-left.css +0 -1
- package/dist/assets/checkmark-circle-fill.css +0 -1
- package/dist/assets/checkmark-small.css +0 -1
- package/dist/assets/checkmark.css +0 -1
- package/dist/assets/chevron-left.css +0 -1
- package/dist/assets/chevron-up.css +0 -1
- package/dist/assets/cross-circle-fill.css +0 -1
- package/dist/assets/info-filled.css +0 -1
- package/dist/assets/refresh.css +0 -1
- package/dist/assets/search.css +0 -1
- package/dist/chunks/arrow-left.cdbcc128.js +0 -30
- package/dist/chunks/arrow-left.cdbcc128.js.map +0 -1
- package/dist/chunks/checkbox.03c4b0fe.js.map +0 -1
- package/dist/chunks/checkmark-circle-fill.e6b84561.js +0 -45
- package/dist/chunks/checkmark-circle-fill.e6b84561.js.map +0 -1
- package/dist/chunks/checkmark-small.3e93a119.js +0 -30
- package/dist/chunks/checkmark-small.3e93a119.js.map +0 -1
- package/dist/chunks/checkmark.83e4f1e0.js +0 -30
- package/dist/chunks/checkmark.83e4f1e0.js.map +0 -1
- package/dist/chunks/chevron-left.2fd6b083.js +0 -54
- package/dist/chunks/chevron-left.2fd6b083.js.map +0 -1
- package/dist/chunks/chevron-up.9bf21068.js +0 -54
- package/dist/chunks/chevron-up.9bf21068.js.map +0 -1
- package/dist/chunks/copy.28bd4298.js.map +0 -1
- package/dist/chunks/cross-circle-fill.0feb37b3.js +0 -45
- package/dist/chunks/cross-circle-fill.0feb37b3.js.map +0 -1
- package/dist/chunks/cross.5c36a670.js +0 -30
- package/dist/chunks/cross.5c36a670.js.map +0 -1
- package/dist/chunks/dropdown.502e1f5c.js.map +0 -1
- package/dist/chunks/field-label.61679178.js +0 -132
- package/dist/chunks/field-label.61679178.js.map +0 -1
- package/dist/chunks/index.d2542c6a.js.map +0 -1
- package/dist/chunks/info-filled.514a2db6.js +0 -69
- package/dist/chunks/info-filled.514a2db6.js.map +0 -1
- package/dist/chunks/refresh.c38c9eee.js +0 -30
- package/dist/chunks/refresh.c38c9eee.js.map +0 -1
- package/dist/chunks/search.d18f9657.js +0 -45
- package/dist/chunks/search.d18f9657.js.map +0 -1
package/dist/textarea.js
CHANGED
|
@@ -1,37 +1,36 @@
|
|
|
1
|
-
import { openBlock as s, createElementBlock as y, mergeProps as se, toDisplayString as N, createCommentVNode as d,
|
|
2
|
-
import { a as
|
|
1
|
+
import { openBlock as s, createElementBlock as y, mergeProps as se, toDisplayString as N, createCommentVNode as d, createElementVNode as k, defineComponent as ie, useAttrs as ne, toRefs as P, ref as f, toRef as ce, computed as o, watch as R, nextTick as ue, onMounted as de, normalizeClass as h, unref as t, normalizeStyle as D, createBlock as p, withCtx as g, createTextVNode as T, createVNode as $, withKeys as I } from "vue";
|
|
2
|
+
import { a as be } from "./chunks/button.82ed953e.js";
|
|
3
3
|
import { B } from "./chunks/index.75f3672e.js";
|
|
4
4
|
import { _ as V } from "./chunks/_plugin-vue_export-helper.dad06003.js";
|
|
5
|
-
import { g as
|
|
6
|
-
import { o as
|
|
7
|
-
import { u as
|
|
8
|
-
import { u as
|
|
9
|
-
import { u as
|
|
10
|
-
import { F as
|
|
11
|
-
import "./assets/
|
|
5
|
+
import { g as fe } from "./chunks/unique-id.a2a2b458.js";
|
|
6
|
+
import { o as pe } from "./chunks/resize.a041304d.js";
|
|
7
|
+
import { u as ve } from "./chunks/aria-label.ac9651a5.js";
|
|
8
|
+
import { u as me } from "./chunks/i18n.6c402773.js";
|
|
9
|
+
import { u as he } from "./chunks/use-form-layout-loading.d03e5d48.js";
|
|
10
|
+
import { F as ge, E as U } from "./chunks/field-label.3c19a29a.js";
|
|
11
|
+
import "./assets/index31.css";
|
|
12
12
|
let K = 0;
|
|
13
|
-
const
|
|
13
|
+
const ye = {
|
|
14
14
|
beforeCreate() {
|
|
15
15
|
this.uuid = K.toString(), K += 1;
|
|
16
16
|
}
|
|
17
|
-
},
|
|
17
|
+
}, Le = { key: 0 }, _e = /* @__PURE__ */ k("path", {
|
|
18
18
|
fill: "#00112C",
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}, null, -1));
|
|
23
|
-
function Se(e, i, a, O, c, _) {
|
|
19
|
+
d: "M2.25 8C2.25 4.82436 4.82436 2.25 8 2.25C11.1756 2.25 13.75 4.82436 13.75 8C13.75 11.1756 11.1756 13.75 8 13.75C4.82436 13.75 2.25 11.1756 2.25 8ZM7.00011 5.93945L5.93945 7.00011L6.93945 8.00011L5.93945 9.00011L7.00011 10.0608L8.00011 9.06077L9.00011 10.0608L10.0608 9.00011L9.06077 8.00011L10.0608 7.00011L9.00011 5.93945L8.00011 6.93945L7.00011 5.93945Z"
|
|
20
|
+
}, null, -1);
|
|
21
|
+
function xe(e, i, a, O, c, L) {
|
|
24
22
|
return s(), y("svg", se({ role: "img" }, e.$attrs, {
|
|
23
|
+
class: "ui-assets-icons-16",
|
|
25
24
|
xmlns: "http://www.w3.org/2000/svg",
|
|
26
25
|
width: "16",
|
|
27
26
|
height: "16",
|
|
28
27
|
fill: "none"
|
|
29
28
|
}), [
|
|
30
|
-
e.$attrs["svg-title"] ? (s(), y("title",
|
|
31
|
-
|
|
29
|
+
e.$attrs["svg-title"] ? (s(), y("title", Le, N(e.$attrs["svg-title"]), 1)) : d("", !0),
|
|
30
|
+
_e
|
|
32
31
|
], 16);
|
|
33
32
|
}
|
|
34
|
-
const
|
|
33
|
+
const Ce = /* @__PURE__ */ V(ye, [["render", xe]]);
|
|
35
34
|
var w = /* @__PURE__ */ ((e) => (e.HORIZONTAL = "horizontal", e.VERTICAL = "vertical", e.BOTH = "both", e.NONE = "none", e))(w || {}), b = /* @__PURE__ */ ((e) => (e.CLEARABLE = "clearable", e.DISABLED = "disabled", e.ERROR = "error", e.READONLY = "readonly", e))(b || {}), n = /* @__PURE__ */ ((e) => (e.BLUR = "blur", e.CHANGE = "change", e.CLEAR = "clear", e.ESCAPE_PRESSED = "escape-pressed", e.FOCUS = "focus", e.INPUT = "input", e))(n || {});
|
|
36
35
|
const W = {
|
|
37
36
|
"en-US": {
|
|
@@ -39,14 +38,14 @@ const W = {
|
|
|
39
38
|
textarea: "textarea",
|
|
40
39
|
yourTextCanBenAtMost: "Your text can be at most {characterLimit} characters"
|
|
41
40
|
}
|
|
42
|
-
},
|
|
41
|
+
}, Ee = ["id", "value", "aria-label", "aria-invalid", "readonly", "disabled", "placeholder", "onKeydown"], Se = {
|
|
43
42
|
key: 0,
|
|
44
43
|
class: "b-textarea__clear-button"
|
|
45
|
-
},
|
|
44
|
+
}, Ae = {
|
|
46
45
|
i18n: { messages: W },
|
|
47
46
|
name: "bento-textarea"
|
|
48
|
-
},
|
|
49
|
-
...
|
|
47
|
+
}, Re = /* @__PURE__ */ ie({
|
|
48
|
+
...Ae,
|
|
50
49
|
props: {
|
|
51
50
|
/**
|
|
52
51
|
* Text that labels an the input element
|
|
@@ -114,10 +113,10 @@ const W = {
|
|
|
114
113
|
value: { type: String, default: "" }
|
|
115
114
|
},
|
|
116
115
|
setup(e, { emit: i }) {
|
|
117
|
-
const a = e, O =
|
|
116
|
+
const a = e, O = ne(), { height: c } = P(a), L = fe("textarea"), l = f(null), r = f(a.value), _ = 44, v = f(a.height || `${_}px`), F = f("100%"), { t: H } = me({ messages: W }), { isReadOnly: m } = he(ce(a, "readonly")), q = o(() => `${r.value.length} / ${a.characterLimit}`), x = o(
|
|
118
117
|
() => a.characterLimit && r.value.length > a.characterLimit
|
|
119
118
|
), C = () => {
|
|
120
|
-
l.value && l.value.scrollHeight >
|
|
119
|
+
l.value && l.value.scrollHeight > _ && (v.value = `${l.value.scrollHeight + 3}px`);
|
|
121
120
|
};
|
|
122
121
|
R(c, () => {
|
|
123
122
|
c.value ? v.value = c.value : C();
|
|
@@ -131,9 +130,9 @@ const W = {
|
|
|
131
130
|
() => r.value,
|
|
132
131
|
async () => {
|
|
133
132
|
if (!c.value) {
|
|
134
|
-
if (v.value = `${
|
|
133
|
+
if (v.value = `${_}px`, !r.value)
|
|
135
134
|
return;
|
|
136
|
-
await
|
|
135
|
+
await ue(), C();
|
|
137
136
|
}
|
|
138
137
|
},
|
|
139
138
|
{ immediate: !0 }
|
|
@@ -142,24 +141,24 @@ const W = {
|
|
|
142
141
|
[`b-textarea--${b.DISABLED}`]: a.disabled
|
|
143
142
|
})), Y = o(() => ({
|
|
144
143
|
[`b-textarea__input--${b.CLEARABLE}`]: a.clearable,
|
|
145
|
-
[`b-textarea__input--${b.READONLY}`]:
|
|
144
|
+
[`b-textarea__input--${b.READONLY}`]: m.value,
|
|
146
145
|
[`b-textarea__input--${b.ERROR}`]: M.value,
|
|
147
146
|
["b-textarea__input--dynamic-height"]: !c.value
|
|
148
147
|
})), Z = o(() => ({
|
|
149
148
|
["b-textarea__label-box--no-label"]: !a.label
|
|
150
149
|
})), G = o(() => ({
|
|
151
150
|
[`b-textarea__label-item--${b.ERROR}`]: x.value
|
|
152
|
-
})), j = o(() => H("yourTextCanBenAtMost", { characterLimit: a.characterLimit })), J = f(O["aria-label"]), { ariaLabel: Q, label: E } = P(a), X =
|
|
151
|
+
})), j = o(() => H("yourTextCanBenAtMost", { characterLimit: a.characterLimit })), J = f(O["aria-label"]), { ariaLabel: Q, label: E } = P(a), X = ve({
|
|
153
152
|
ariaLabel: J.value,
|
|
154
153
|
// TODO: take this line away when the aria-label props is removed
|
|
155
154
|
label: Q,
|
|
156
155
|
defaultFallback: E
|
|
157
156
|
}), ee = o(
|
|
158
|
-
() => a.clearable && r.value && !a.disabled && !
|
|
157
|
+
() => a.clearable && r.value && !a.disabled && !m.value
|
|
159
158
|
), S = () => {
|
|
160
159
|
r.value = "", i(n.CLEAR), i(n.INPUT, "");
|
|
161
160
|
}, te = (u) => {
|
|
162
|
-
u.stopImmediatePropagation(), !a.disabled && !
|
|
161
|
+
u.stopImmediatePropagation(), !a.disabled && !m.value && (r.value = u.target.value, i(n.INPUT, r.value));
|
|
163
162
|
}, ae = () => {
|
|
164
163
|
l.value.scrollTop = 0, i(n.BLUR);
|
|
165
164
|
}, le = () => {
|
|
@@ -169,22 +168,22 @@ const W = {
|
|
|
169
168
|
}, oe = () => {
|
|
170
169
|
i(n.ESCAPE_PRESSED);
|
|
171
170
|
};
|
|
172
|
-
return
|
|
173
|
-
|
|
171
|
+
return de(() => {
|
|
172
|
+
pe(l.value, () => {
|
|
174
173
|
var A;
|
|
175
174
|
const u = (A = l == null ? void 0 : l.value) == null ? void 0 : A.offsetWidth;
|
|
176
175
|
F.value = u ? `${u}px` : "100%";
|
|
177
176
|
}), c.value || C();
|
|
178
177
|
}), (u, A) => (s(), y("div", {
|
|
179
|
-
class:
|
|
178
|
+
class: h(["b-textarea", t(z)]),
|
|
180
179
|
style: D({ width: F.value })
|
|
181
180
|
}, [
|
|
182
181
|
k("div", {
|
|
183
|
-
class:
|
|
182
|
+
class: h(["b-textarea__label-box", t(Z)])
|
|
184
183
|
}, [
|
|
185
|
-
t(E) ? (s(), p(t(
|
|
184
|
+
t(E) ? (s(), p(t(ge), {
|
|
186
185
|
key: 0,
|
|
187
|
-
for: t(
|
|
186
|
+
for: t(L),
|
|
188
187
|
label: t(E),
|
|
189
188
|
"tooltip-text": e.tooltipText,
|
|
190
189
|
optional: e.optional,
|
|
@@ -193,7 +192,7 @@ const W = {
|
|
|
193
192
|
e.characterLimit ? (s(), p(t(B), {
|
|
194
193
|
key: 1,
|
|
195
194
|
el: "span",
|
|
196
|
-
class:
|
|
195
|
+
class: h(["b-textarea__label-item", t(G)])
|
|
197
196
|
}, {
|
|
198
197
|
default: g(() => [
|
|
199
198
|
T(N(t(q)), 1)
|
|
@@ -208,14 +207,14 @@ const W = {
|
|
|
208
207
|
}, {
|
|
209
208
|
default: g(() => [
|
|
210
209
|
k("textarea", {
|
|
211
|
-
id: t(
|
|
210
|
+
id: t(L),
|
|
212
211
|
ref_key: "textareaElement",
|
|
213
212
|
ref: l,
|
|
214
213
|
value: r.value,
|
|
215
|
-
class:
|
|
214
|
+
class: h(["b-textarea__input", t(Y)]),
|
|
216
215
|
"aria-label": t(X),
|
|
217
216
|
"aria-invalid": t(M),
|
|
218
|
-
readonly: t(
|
|
217
|
+
readonly: t(m),
|
|
219
218
|
disabled: e.disabled,
|
|
220
219
|
placeholder: e.placeholder,
|
|
221
220
|
style: D({ resize: e.resizable, height: v.value }),
|
|
@@ -225,9 +224,9 @@ const W = {
|
|
|
225
224
|
onInput: te,
|
|
226
225
|
onKeydown: I(oe, ["esc"])
|
|
227
226
|
}, `
|
|
228
|
-
`, 46,
|
|
229
|
-
t(ee) ? (s(), y("div",
|
|
230
|
-
$(t(
|
|
227
|
+
`, 46, Ee),
|
|
228
|
+
t(ee) ? (s(), y("div", Se, [
|
|
229
|
+
$(t(be), {
|
|
231
230
|
variant: "tertiary",
|
|
232
231
|
disabled: e.disabled,
|
|
233
232
|
onClick: S,
|
|
@@ -235,7 +234,7 @@ const W = {
|
|
|
235
234
|
onKeyup: I(S, ["space"])
|
|
236
235
|
}, {
|
|
237
236
|
iconLeft: g(() => [
|
|
238
|
-
$(t(
|
|
237
|
+
$(t(Ce), {
|
|
239
238
|
"svg-title": t(H)("clearText")
|
|
240
239
|
}, null, 8, ["svg-title"])
|
|
241
240
|
]),
|
|
@@ -266,8 +265,8 @@ const W = {
|
|
|
266
265
|
], 6));
|
|
267
266
|
}
|
|
268
267
|
});
|
|
269
|
-
const
|
|
268
|
+
const Pe = /* @__PURE__ */ V(Re, [["__scopeId", "data-v-b57fd4c1"]]);
|
|
270
269
|
export {
|
|
271
|
-
|
|
270
|
+
Pe as BentoTextarea
|
|
272
271
|
};
|
|
273
272
|
//# sourceMappingURL=textarea.js.map
|
package/dist/textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sources":["../../../node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-circle-fill-small.vue","../../vue2/src/components/textarea/textarea.types.ts","../../vue2/src/components/textarea/textarea.vue"],"sourcesContent":["\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" fill-rule=\"evenodd\" d=\"M2.25 8C2.25 4.82436 4.82436 2.25 8 2.25C11.1756 2.25 13.75 4.82436 13.75 8C13.75 11.1756 11.1756 13.75 8 13.75C4.82436 13.75 2.25 11.1756 2.25 8ZM5.46967 5.46967C5.17678 5.76256 5.17678 6.23744 5.46967 6.53033L6.93934 8L5.46967 9.46967C5.17678 9.76256 5.17678 10.2374 5.46967 10.5303C5.76256 10.8232 6.23744 10.8232 6.53033 10.5303L8 9.06066L9.46967 10.5303C9.76256 10.8232 10.2374 10.8232 10.5303 10.5303C10.8232 10.2374 10.8232 9.76256 10.5303 9.46967L9.06066 8L10.5303 6.53033C10.8232 6.23744 10.8232 5.76256 10.5303 5.46967C10.2374 5.17678 9.76256 5.17678 9.46967 5.46967L8 6.93934L6.53033 5.46967C6.23744 5.17678 5.76256 5.17678 5.46967 5.46967Z\" clip-rule=\"evenodd\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style scoped lang=\"scss\">\n svg {\n display: inline-flex;\n flex-shrink: 0;\n }\n \n svg,\n svg * {\n fill: currentcolor;\n }\n</style>\n","/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTextareaResizeOption {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n BOTH = 'both',\n NONE = 'none',\n}\n\nexport enum BentoTextareaStateClass {\n CLEARABLE = 'clearable',\n DISABLED = 'disabled',\n ERROR = 'error',\n READONLY = 'readonly',\n}\n\nexport enum BentoTextareaEvent {\n BLUR = 'blur',\n CHANGE = 'change',\n CLEAR = 'clear',\n ESCAPE_PRESSED = 'escape-pressed',\n FOCUS = 'focus',\n INPUT = 'input',\n}\n","<template>\n <div class=\"b-textarea\" :class=\"conditionalClasses\" :style=\"{ width: textareaWidth }\">\n <div class=\"b-textarea__label-box\" :class=\"conditionalClassesLabelBox\">\n <field-label\n v-if=\"label\"\n :for=\"textareaId\"\n :label=\"label\"\n :tooltip-text=\"tooltipText\"\n :optional=\"optional\"\n :required=\"required\"\n />\n <bento-typography\n v-if=\"characterLimit\"\n el=\"span\"\n class=\"b-textarea__label-item\"\n :class=\"conditionalClassesLabelItem\"\n >\n {{ counter }}\n </bento-typography>\n </div>\n <bento-typography el=\"div\" class=\"b-textarea__input-box\" :aria-disabled=\"disabled\">\n <textarea\n :id=\"textareaId\"\n ref=\"textareaElement\"\n :value=\"textareaValue\"\n class=\"b-textarea__input\"\n :class=\"conditionalClassesInput\"\n :aria-label=\"computedAriaLabel\"\n :aria-invalid=\"invalidInput\"\n :readonly=\"isReadOnly\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :style=\"{ resize: resizable, height: textareaHeight }\"\n @blur=\"onBlur\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keydown.esc=\"onPressEscape\"\n >\n </textarea>\n\n <div v-if=\"showClearButton\" class=\"b-textarea__clear-button\">\n <bento-button\n variant=\"tertiary\"\n :disabled=\"disabled\"\n @click=\"onClear\"\n @keypress.enter=\"onClear\"\n @keyup.space=\"onClear\"\n >\n <template #iconLeft>\n <cross-circle-fill-small-icon :svg-title=\"t('clearText')\" />\n </template>\n </bento-button>\n </div>\n </bento-typography>\n\n <error-message v-if=\"isOverCharacterLimit\" :error-message=\"counterErrorText\" />\n\n <error-message v-if=\"errorMessage\" :error-message=\"errorMessage\" />\n\n <bento-typography v-if=\"description\" class=\"b-textarea__description\" el=\"span\">\n {{ description }}\n </bento-typography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, nextTick, onMounted, PropType, ref, toRef, toRefs, useAttrs, watch } from 'vue';\n\n // Components\n import { BentoButton } from '@/components/button';\n import { BentoTypography } from '@/components/typography';\n import { ErrorMessage, FieldLabel } from '@/internal';\n import CrossCircleFillSmallIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill-small';\n\n // Utils\n import { generateUid } from '@/utils/ts/unique-id';\n import { observeSizeOfElement } from '@/utils/ts/resize';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { useI18n } from '@/utils/ts/i18n';\n\n // Composables\n import { useFormLayoutFieldLoading } from '@/composables/use-form-layout-loading/use-form-layout-loading';\n\n // Types\n import { BentoTextareaEvent, BentoTextareaResizeOption, BentoTextareaStateClass } from './textarea.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const attrs = useAttrs();\n\n const props = defineProps({\n /**\n * Text that labels an the input element\n */\n ariaLabel: { type: String, default: undefined },\n\n /**\n * Text that shows number of characters in textarea\n */\n characterLimit: { type: Number, default: undefined },\n\n /**\n * Text displayed as the help text of the textarea\n */\n description: { type: String, default: '' },\n\n /**\n * Disables the possibility of changing value in the textarea\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * If set to true, shows a button to clear all the text\n */\n clearable: { type: Boolean, default: false },\n\n /**\n * Adds error text\n */\n errorMessage: { type: String, default: '' },\n\n /**\n * Sets the height of the textarea, e.g 200px OR 20vh\n */\n height: { type: String, default: null },\n\n /**\n * Text displayed as the label of the textarea\n */\n label: { type: String, default: '' },\n\n /**\n * Highlights the textarea is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * Text displayed as the placeholder of the textarea\n */\n placeholder: { type: String, default: '' },\n\n /**\n * Set the textarea to read only state.\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * Indicates the possibility of resize the textarea\n */\n resizable: {\n type: String as PropType<BentoTextareaResizeOption | `${BentoTextareaResizeOption}`>,\n default: BentoTextareaResizeOption.BOTH,\n validator: (value: BentoTextareaResizeOption) => Object.values(BentoTextareaResizeOption).includes(value),\n },\n\n /**\n * Highlights the textarea is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Adds a info icon next to the label to display the passed tooltip message.\n */\n tooltipText: { type: String, default: null },\n\n /**\n * Text displayed as the value of the textarea\n */\n value: { type: String, default: '' },\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the element has lost focus\n */\n (e: BentoTextareaEvent.BLUR): void;\n\n /**\n * Emitted when the user modifies the element's value. Unlike the 'input' event, the change event is not necessarily fired for each alteration to an element's value\n */\n (e: BentoTextareaEvent.CHANGE): void;\n\n /**\n * Emitted when the \"Clear\" button was clicked\n */\n (e: BentoTextareaEvent.CLEAR): void;\n\n /**\n * Emitted when the \"ESC\" key is pressed\n */\n (e: BentoTextareaEvent.ESCAPE_PRESSED): void;\n\n /**\n * Emitted when the element has received focus\n */\n (e: BentoTextareaEvent.FOCUS): void;\n\n /**\n * Emitted when the component's model changes\n */\n (e: BentoTextareaEvent.INPUT, value: string): void;\n }>();\n\n const { height } = toRefs(props);\n\n const textareaId = generateUid('textarea');\n const textareaElement = ref<HTMLTextAreaElement>(null);\n const textareaValue = ref(props.value);\n const defaultTextareaHeight = 44;\n const textareaHeight = ref(props.height || `${defaultTextareaHeight}px`);\n const textareaWidth = ref('100%');\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n\n const counter = computed(() => `${textareaValue.value.length} / ${props.characterLimit}`);\n const isOverCharacterLimit = computed(\n () => props.characterLimit && textareaValue.value.length > props.characterLimit\n );\n\n const calculateHeight = () => {\n const borderWidth = 3;\n if (textareaElement.value && textareaElement.value.scrollHeight > defaultTextareaHeight) {\n textareaHeight.value = `${textareaElement.value.scrollHeight + borderWidth}px`;\n }\n };\n\n watch(height, () => {\n if (!height.value) {\n calculateHeight();\n } else {\n textareaHeight.value = height.value;\n }\n });\n\n watch(\n () => props.value,\n () => {\n textareaValue.value = props.value;\n },\n { immediate: true }\n );\n\n watch(\n () => textareaValue.value,\n async () => {\n if (!height.value) {\n // Hack to make the textarea calculate its height properly\n // Set the textarea back to the original value before calculating the height\n textareaHeight.value = `${defaultTextareaHeight}px`;\n if (!textareaValue.value) {\n return;\n }\n\n await nextTick();\n calculateHeight();\n }\n },\n { immediate: true }\n );\n\n const invalidInput = computed(() => !!props.errorMessage || isOverCharacterLimit.value);\n\n const conditionalClasses = computed(() => ({\n [`b-textarea--${BentoTextareaStateClass.DISABLED}`]: props.disabled,\n }));\n\n const conditionalClassesInput = computed(() => ({\n [`b-textarea__input--${BentoTextareaStateClass.CLEARABLE}`]: props.clearable,\n [`b-textarea__input--${BentoTextareaStateClass.READONLY}`]: isReadOnly.value,\n [`b-textarea__input--${BentoTextareaStateClass.ERROR}`]: invalidInput.value,\n [`b-textarea__input--dynamic-height`]: !height.value,\n }));\n\n const conditionalClassesLabelBox = computed(() => ({\n [`b-textarea__label-box--no-label`]: !props.label,\n }));\n\n const conditionalClassesLabelItem = computed(() => ({\n [`b-textarea__label-item--${BentoTextareaStateClass.ERROR}`]: isOverCharacterLimit.value,\n }));\n\n const counterErrorText = computed(() => t('yourTextCanBenAtMost', { characterLimit: props.characterLimit }));\n\n const ariaLabelAttribute = ref(attrs['aria-label']);\n const { ariaLabel, label } = toRefs(props);\n const computedAriaLabel = useAriaLabel({\n ariaLabel: ariaLabelAttribute.value as string,\n // TODO: take this line away when the aria-label props is removed\n label: ariaLabel,\n defaultFallback: label,\n });\n\n const showClearButton = computed(\n () => props.clearable && textareaValue.value && !props.disabled && !isReadOnly.value\n );\n\n const onClear = () => {\n textareaValue.value = '';\n emit(BentoTextareaEvent.CLEAR);\n emit(BentoTextareaEvent.INPUT, '');\n };\n\n const onInput = (event: InputEvent) => {\n event.stopImmediatePropagation();\n\n if (!props.disabled && !isReadOnly.value) {\n textareaValue.value = (event.target as HTMLInputElement).value;\n /**\n * Triggered when input value is changed\n *\n * @event input\n * @property {String} inputValue - the updated textarea value\n */\n emit(BentoTextareaEvent.INPUT, textareaValue.value);\n }\n };\n\n const onBlur = () => {\n textareaElement.value.scrollTop = 0;\n emit(BentoTextareaEvent.BLUR);\n };\n\n const onFocus = () => {\n textareaElement.value.focus();\n emit(BentoTextareaEvent.FOCUS);\n };\n\n const onChange = () => {\n emit(BentoTextareaEvent.CHANGE);\n };\n\n const onPressEscape = () => {\n emit(BentoTextareaEvent.ESCAPE_PRESSED);\n };\n\n onMounted(() => {\n observeSizeOfElement(textareaElement.value, () => {\n const offsetWidth = textareaElement?.value?.offsetWidth;\n textareaWidth.value = offsetWidth ? `${offsetWidth}px` : '100%';\n });\n\n if (!height.value) {\n calculateHeight();\n }\n });\n</script>\n\n<script lang=\"ts\">\n export default {\n i18n: { messages },\n name: 'bento-textarea',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./textarea.scss\" />\n"],"names":["uuid","openBlock","createElementBlock","mergeProps","_ctx","_hoisted_1$1","toDisplayString","BentoTextareaResizeOption","BentoTextareaResizeOption2","BentoTextareaStateClass","BentoTextareaStateClass2","BentoTextareaEvent","BentoTextareaEvent2","__default__","messages","attrs","useAttrs","height","toRefs","props","textareaId","generateUid","textareaElement","ref","textareaValue","defaultTextareaHeight","textareaHeight","textareaWidth","t","useI18n","isReadOnly","useFormLayoutFieldLoading","toRef","counter","computed","isOverCharacterLimit","calculateHeight","watch","nextTick","invalidInput","conditionalClasses","conditionalClassesInput","conditionalClassesLabelBox","conditionalClassesLabelItem","counterErrorText","ariaLabelAttribute","ariaLabel","label","computedAriaLabel","useAriaLabel","showClearButton","onClear","emit","onInput","event","onBlur","onFocus","onChange","onPressEscape","onMounted","observeSizeOfElement","offsetWidth","_a"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"textarea.js","sources":["../../vue2/node_modules/@adyen/ui-assets-icons-16/dist/vue/cross-circle-fill-small.vue","../../vue2/src/components/textarea/textarea.types.ts","../../vue2/src/components/textarea/textarea.vue"],"sourcesContent":["\n<template>\n <svg role=\"img\" v-bind=\"$attrs\" class=\"ui-assets-icons-16\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><title v-if=\"$attrs['svg-title']\">{{ $attrs['svg-title'] }}</title><path fill=\"#00112C\" d=\"M2.25 8C2.25 4.82436 4.82436 2.25 8 2.25C11.1756 2.25 13.75 4.82436 13.75 8C13.75 11.1756 11.1756 13.75 8 13.75C4.82436 13.75 2.25 11.1756 2.25 8ZM7.00011 5.93945L5.93945 7.00011L6.93945 8.00011L5.93945 9.00011L7.00011 10.0608L8.00011 9.06077L9.00011 10.0608L10.0608 9.00011L9.06077 8.00011L10.0608 7.00011L9.00011 5.93945L8.00011 6.93945L7.00011 5.93945Z\"/></svg>\n</template>\n<script>\n let uuid = 0;\n\n export default {\n beforeCreate() {\n this.uuid = uuid.toString();\n uuid += 1;\n },\n };\n</script>\n<style>\n @import '../css/main.css';\n</style>\n","/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTextareaResizeOption {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n BOTH = 'both',\n NONE = 'none',\n}\n\nexport enum BentoTextareaStateClass {\n CLEARABLE = 'clearable',\n DISABLED = 'disabled',\n ERROR = 'error',\n READONLY = 'readonly',\n}\n\nexport enum BentoTextareaEvent {\n BLUR = 'blur',\n CHANGE = 'change',\n CLEAR = 'clear',\n ESCAPE_PRESSED = 'escape-pressed',\n FOCUS = 'focus',\n INPUT = 'input',\n}\n","<template>\n <div class=\"b-textarea\" :class=\"conditionalClasses\" :style=\"{ width: textareaWidth }\">\n <div class=\"b-textarea__label-box\" :class=\"conditionalClassesLabelBox\">\n <field-label\n v-if=\"label\"\n :for=\"textareaId\"\n :label=\"label\"\n :tooltip-text=\"tooltipText\"\n :optional=\"optional\"\n :required=\"required\"\n />\n <bento-typography\n v-if=\"characterLimit\"\n el=\"span\"\n class=\"b-textarea__label-item\"\n :class=\"conditionalClassesLabelItem\"\n >\n {{ counter }}\n </bento-typography>\n </div>\n <bento-typography el=\"div\" class=\"b-textarea__input-box\" :aria-disabled=\"disabled\">\n <textarea\n :id=\"textareaId\"\n ref=\"textareaElement\"\n :value=\"textareaValue\"\n class=\"b-textarea__input\"\n :class=\"conditionalClassesInput\"\n :aria-label=\"computedAriaLabel\"\n :aria-invalid=\"invalidInput\"\n :readonly=\"isReadOnly\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :style=\"{ resize: resizable, height: textareaHeight }\"\n @blur=\"onBlur\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @input=\"onInput\"\n @keydown.esc=\"onPressEscape\"\n >\n </textarea>\n\n <div v-if=\"showClearButton\" class=\"b-textarea__clear-button\">\n <bento-button\n variant=\"tertiary\"\n :disabled=\"disabled\"\n @click=\"onClear\"\n @keypress.enter=\"onClear\"\n @keyup.space=\"onClear\"\n >\n <template #iconLeft>\n <cross-circle-fill-small-icon :svg-title=\"t('clearText')\" />\n </template>\n </bento-button>\n </div>\n </bento-typography>\n\n <error-message v-if=\"isOverCharacterLimit\" :error-message=\"counterErrorText\" />\n\n <error-message v-if=\"errorMessage\" :error-message=\"errorMessage\" />\n\n <bento-typography v-if=\"description\" class=\"b-textarea__description\" el=\"span\">\n {{ description }}\n </bento-typography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, nextTick, onMounted, PropType, ref, toRef, toRefs, useAttrs, watch } from 'vue';\n\n // Components\n import { BentoButton } from '@/components/button';\n import { BentoTypography } from '@/components/typography';\n import { ErrorMessage, FieldLabel } from '@/internal';\n import CrossCircleFillSmallIcon from '@adyen/ui-assets-icons-16/vue/cross-circle-fill-small';\n\n // Utils\n import { generateUid } from '@/utils/ts/unique-id';\n import { observeSizeOfElement } from '@/utils/ts/resize';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { useI18n } from '@/utils/ts/i18n';\n\n // Composables\n import { useFormLayoutFieldLoading } from '@/composables/use-form-layout-loading/use-form-layout-loading';\n\n // Types\n import { BentoTextareaEvent, BentoTextareaResizeOption, BentoTextareaStateClass } from './textarea.types';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const attrs = useAttrs();\n\n const props = defineProps({\n /**\n * Text that labels an the input element\n */\n ariaLabel: { type: String, default: undefined },\n\n /**\n * Text that shows number of characters in textarea\n */\n characterLimit: { type: Number, default: undefined },\n\n /**\n * Text displayed as the help text of the textarea\n */\n description: { type: String, default: '' },\n\n /**\n * Disables the possibility of changing value in the textarea\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * If set to true, shows a button to clear all the text\n */\n clearable: { type: Boolean, default: false },\n\n /**\n * Adds error text\n */\n errorMessage: { type: String, default: '' },\n\n /**\n * Sets the height of the textarea, e.g 200px OR 20vh\n */\n height: { type: String, default: null },\n\n /**\n * Text displayed as the label of the textarea\n */\n label: { type: String, default: '' },\n\n /**\n * Highlights the textarea is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * Text displayed as the placeholder of the textarea\n */\n placeholder: { type: String, default: '' },\n\n /**\n * Set the textarea to read only state.\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * Indicates the possibility of resize the textarea\n */\n resizable: {\n type: String as PropType<BentoTextareaResizeOption | `${BentoTextareaResizeOption}`>,\n default: BentoTextareaResizeOption.BOTH,\n validator: (value: BentoTextareaResizeOption) => Object.values(BentoTextareaResizeOption).includes(value),\n },\n\n /**\n * Highlights the textarea is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Adds a info icon next to the label to display the passed tooltip message.\n */\n tooltipText: { type: String, default: null },\n\n /**\n * Text displayed as the value of the textarea\n */\n value: { type: String, default: '' },\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the element has lost focus\n */\n (e: BentoTextareaEvent.BLUR): void;\n\n /**\n * Emitted when the user modifies the element's value. Unlike the 'input' event, the change event is not necessarily fired for each alteration to an element's value\n */\n (e: BentoTextareaEvent.CHANGE): void;\n\n /**\n * Emitted when the \"Clear\" button was clicked\n */\n (e: BentoTextareaEvent.CLEAR): void;\n\n /**\n * Emitted when the \"ESC\" key is pressed\n */\n (e: BentoTextareaEvent.ESCAPE_PRESSED): void;\n\n /**\n * Emitted when the element has received focus\n */\n (e: BentoTextareaEvent.FOCUS): void;\n\n /**\n * Emitted when the component's model changes\n */\n (e: BentoTextareaEvent.INPUT, value: string): void;\n }>();\n\n const { height } = toRefs(props);\n\n const textareaId = generateUid('textarea');\n const textareaElement = ref<HTMLTextAreaElement>(null);\n const textareaValue = ref(props.value);\n const defaultTextareaHeight = 44;\n const textareaHeight = ref(props.height || `${defaultTextareaHeight}px`);\n const textareaWidth = ref('100%');\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n\n const counter = computed(() => `${textareaValue.value.length} / ${props.characterLimit}`);\n const isOverCharacterLimit = computed(\n () => props.characterLimit && textareaValue.value.length > props.characterLimit\n );\n\n const calculateHeight = () => {\n const borderWidth = 3;\n if (textareaElement.value && textareaElement.value.scrollHeight > defaultTextareaHeight) {\n textareaHeight.value = `${textareaElement.value.scrollHeight + borderWidth}px`;\n }\n };\n\n watch(height, () => {\n if (!height.value) {\n calculateHeight();\n } else {\n textareaHeight.value = height.value;\n }\n });\n\n watch(\n () => props.value,\n () => {\n textareaValue.value = props.value;\n },\n { immediate: true }\n );\n\n watch(\n () => textareaValue.value,\n async () => {\n if (!height.value) {\n // Hack to make the textarea calculate its height properly\n // Set the textarea back to the original value before calculating the height\n textareaHeight.value = `${defaultTextareaHeight}px`;\n if (!textareaValue.value) {\n return;\n }\n\n await nextTick();\n calculateHeight();\n }\n },\n { immediate: true }\n );\n\n const invalidInput = computed(() => !!props.errorMessage || isOverCharacterLimit.value);\n\n const conditionalClasses = computed(() => ({\n [`b-textarea--${BentoTextareaStateClass.DISABLED}`]: props.disabled,\n }));\n\n const conditionalClassesInput = computed(() => ({\n [`b-textarea__input--${BentoTextareaStateClass.CLEARABLE}`]: props.clearable,\n [`b-textarea__input--${BentoTextareaStateClass.READONLY}`]: isReadOnly.value,\n [`b-textarea__input--${BentoTextareaStateClass.ERROR}`]: invalidInput.value,\n [`b-textarea__input--dynamic-height`]: !height.value,\n }));\n\n const conditionalClassesLabelBox = computed(() => ({\n [`b-textarea__label-box--no-label`]: !props.label,\n }));\n\n const conditionalClassesLabelItem = computed(() => ({\n [`b-textarea__label-item--${BentoTextareaStateClass.ERROR}`]: isOverCharacterLimit.value,\n }));\n\n const counterErrorText = computed(() => t('yourTextCanBenAtMost', { characterLimit: props.characterLimit }));\n\n const ariaLabelAttribute = ref(attrs['aria-label']);\n const { ariaLabel, label } = toRefs(props);\n const computedAriaLabel = useAriaLabel({\n ariaLabel: ariaLabelAttribute.value as string,\n // TODO: take this line away when the aria-label props is removed\n label: ariaLabel,\n defaultFallback: label,\n });\n\n const showClearButton = computed(\n () => props.clearable && textareaValue.value && !props.disabled && !isReadOnly.value\n );\n\n const onClear = () => {\n textareaValue.value = '';\n emit(BentoTextareaEvent.CLEAR);\n emit(BentoTextareaEvent.INPUT, '');\n };\n\n const onInput = (event: InputEvent) => {\n event.stopImmediatePropagation();\n\n if (!props.disabled && !isReadOnly.value) {\n textareaValue.value = (event.target as HTMLInputElement).value;\n /**\n * Triggered when input value is changed\n *\n * @event input\n * @property {String} inputValue - the updated textarea value\n */\n emit(BentoTextareaEvent.INPUT, textareaValue.value);\n }\n };\n\n const onBlur = () => {\n textareaElement.value.scrollTop = 0;\n emit(BentoTextareaEvent.BLUR);\n };\n\n const onFocus = () => {\n textareaElement.value.focus();\n emit(BentoTextareaEvent.FOCUS);\n };\n\n const onChange = () => {\n emit(BentoTextareaEvent.CHANGE);\n };\n\n const onPressEscape = () => {\n emit(BentoTextareaEvent.ESCAPE_PRESSED);\n };\n\n onMounted(() => {\n observeSizeOfElement(textareaElement.value, () => {\n const offsetWidth = textareaElement?.value?.offsetWidth;\n textareaWidth.value = offsetWidth ? `${offsetWidth}px` : '100%';\n });\n\n if (!height.value) {\n calculateHeight();\n }\n });\n</script>\n\n<script lang=\"ts\">\n export default {\n i18n: { messages },\n name: 'bento-textarea',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./textarea.scss\" />\n"],"names":["uuid","openBlock","createElementBlock","mergeProps","_ctx","_hoisted_1$1","toDisplayString","BentoTextareaResizeOption","BentoTextareaResizeOption2","BentoTextareaStateClass","BentoTextareaStateClass2","BentoTextareaEvent","BentoTextareaEvent2","__default__","messages","attrs","useAttrs","height","toRefs","props","textareaId","generateUid","textareaElement","ref","textareaValue","defaultTextareaHeight","textareaHeight","textareaWidth","t","useI18n","isReadOnly","useFormLayoutFieldLoading","toRef","counter","computed","isOverCharacterLimit","calculateHeight","watch","nextTick","invalidInput","conditionalClasses","conditionalClassesInput","conditionalClassesLabelBox","conditionalClassesLabelItem","counterErrorText","ariaLabelAttribute","ariaLabel","label","computedAriaLabel","useAriaLabel","showClearButton","onClear","emit","onInput","event","onBlur","onFocus","onChange","onPressEscape","onMounted","observeSizeOfElement","offsetWidth","_a"],"mappings":"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","x_google_ignoreList":[0]}
|