@webitel/ui-sdk 25.12.18 → 25.12.19

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.
Files changed (27) hide show
  1. package/dist/img/sprite/index.js +1 -1
  2. package/dist/{install-C2KuD-Ju.js → install-Cc5v28sQ.js} +10551 -10354
  3. package/dist/ui-sdk.css +1 -1
  4. package/dist/ui-sdk.js +1 -1
  5. package/dist/ui-sdk.umd.cjs +289 -202
  6. package/dist/{vidstack-Bq6c3Bam-D0_vMVk3.js → vidstack-Bq6c3Bam-DsrzVnIy.js} +2 -2
  7. package/dist/{vidstack-D2pY00kU-Cj-oWuMs.js → vidstack-D2pY00kU-CfifXGPD.js} +2 -2
  8. package/dist/{vidstack-DDXt6fpN-DtxbXJ1d.js → vidstack-DDXt6fpN-DLvflmce.js} +1 -1
  9. package/dist/{vidstack-D_-9AA6_-2RK8pK0l.js → vidstack-D_-9AA6_-GJSNStr6.js} +1 -1
  10. package/dist/{vidstack-DqAw8m9J-C_yO4Cr1.js → vidstack-DqAw8m9J-PZilPgEJ.js} +1 -1
  11. package/dist/{vidstack-audio-x_O2AIXV.js → vidstack-audio-DAQFDjfz.js} +2 -2
  12. package/dist/{vidstack-dash-CpZTFlFb.js → vidstack-dash-Baa-mmY0.js} +3 -3
  13. package/dist/{vidstack-google-cast-B_GLL5iJ.js → vidstack-google-cast-BHt8nVcL.js} +3 -3
  14. package/dist/{vidstack-hls-CtdEJskL.js → vidstack-hls-Vlmn3t6k.js} +3 -3
  15. package/dist/{vidstack-video-CGOgyd6M.js → vidstack-video-UBob8Q-T.js} +2 -2
  16. package/dist/{vidstack-vimeo-Bxcv38Va.js → vidstack-vimeo-DOSdlknH.js} +3 -3
  17. package/dist/{vidstack-youtube-B1oVxXZD.js → vidstack-youtube-BYufexS8.js} +2 -2
  18. package/package.json +2 -2
  19. package/src/components/wt-textarea/wt-textarea.vue +109 -198
  20. package/src/modules/AgentStatusSelect/components/_internals/wt-cc-pause-cause-popup.vue +1 -2
  21. package/src/modules/AuditForm/components/audit-form.vue +2 -2
  22. package/src/plugins/primevue/primevue.plugin.js +3 -1
  23. package/src/plugins/primevue/theme/components/components.js +2 -0
  24. package/src/plugins/primevue/theme/components/textarea/textarea.js +14 -0
  25. package/types/components/wt-textarea/wt-textarea.vue.d.ts +96 -185
  26. package/types/plugins/primevue/theme/components/components.d.ts +2 -0
  27. package/types/plugins/primevue/theme/components/textarea/textarea.d.ts +74 -0
@@ -5,8 +5,8 @@ var ot = (n) => {
5
5
  var Xt = (n, t, s) => t in n ? Qt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : n[t] = s;
6
6
  var M = (n, t, s) => Xt(n, typeof t != "symbol" ? t + "" : t, s), X = (n, t, s) => t.has(n) || ot("Cannot " + s);
7
7
  var i = (n, t, s) => (X(n, t, "read from private field"), s ? s.call(n) : t.get(n)), d = (n, t, s) => t.has(n) ? ot("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, s), c = (n, t, s, r) => (X(n, t, "write to private field"), r ? r.call(n, s) : t.set(n, s), s), a = (n, t, s) => (X(n, t, "access private method"), s);
8
- import { y as Yt, x as ut, z as j, A as Zt, b as ti, E as nt, e as lt, B as _, C as ii, F as ei, d as si, G as ai, l as rt, H as dt, D as ni, L as Y, J as Z } from "./install-C2KuD-Ju.js";
9
- import { R as ri } from "./vidstack-DqAw8m9J-C_yO4Cr1.js";
8
+ import { y as Yt, x as ut, z as j, A as Zt, b as ti, E as nt, e as lt, B as _, C as ii, F as ei, d as si, G as ai, l as rt, H as dt, D as ni, L as Y, J as Z } from "./install-Cc5v28sQ.js";
9
+ import { R as ri } from "./vidstack-DqAw8m9J-PZilPgEJ.js";
10
10
  let q = null, z = [], J = [];
11
11
  function ht() {
12
12
  return q ?? (q = new AudioContext());
@@ -5,7 +5,7 @@ var w = (t) => {
5
5
  var P = (t, e, a) => e in t ? _(t, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[e] = a;
6
6
  var u = (t, e, a) => P(t, typeof e != "symbol" ? e + "" : e, a), C = (t, e, a) => e.has(t) || w("Cannot " + a);
7
7
  var c = (t, e, a) => (C(t, e, "read from private field"), a ? a.call(t) : e.get(t)), m = (t, e, a) => e.has(t) ? w("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, a), y = (t, e, a, o) => (C(t, e, "write to private field"), o ? o.call(t, a) : e.set(t, a), a), s = (t, e, a) => (C(t, e, "access private method"), a);
8
- import { l as b, h as A, S as O, C as D, d as R, m as M } from "./install-C2KuD-Ju.js";
8
+ import { l as b, h as A, S as O, C as D, d as R, m as M } from "./install-Cc5v28sQ.js";
9
9
  function G() {
10
10
  return "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1";
11
11
  }
@@ -94,7 +94,7 @@ class F {
94
94
  async load(e) {
95
95
  if (!c(this, n))
96
96
  throw Error("[vidstack] google cast player was not initialized");
97
- return new (await import("./vidstack-google-cast-B_GLL5iJ.js")).GoogleCastProvider(c(this, n), e);
97
+ return new (await import("./vidstack-google-cast-BHt8nVcL.js")).GoogleCastProvider(c(this, n), e);
98
98
  }
99
99
  }
100
100
  n = new WeakMap(), r = new WeakSet(), S = async function(e) {
@@ -5,7 +5,7 @@ var g = (s) => {
5
5
  var w = (s, t, i) => t in s ? y(s, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : s[t] = i;
6
6
  var c = (s, t, i) => w(s, typeof t != "symbol" ? t + "" : t, i), h = (s, t, i) => t.has(s) || g("Cannot " + i);
7
7
  var e = (s, t, i) => (h(s, t, "read from private field"), i ? i.call(s) : t.get(s)), l = (s, t, i) => t.has(s) ? g("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(s) : t.set(s, i), p = (s, t, i, a) => (h(s, t, "write to private field"), a ? a.call(s, i) : t.set(s, i), i), u = (s, t, i) => (h(s, t, "access private method"), i);
8
- import { J as M, l as f, e as A, d as P, R as O, b as S } from "./install-C2KuD-Ju.js";
8
+ import { J as M, l as f, e as A, d as P, R as O, b as S } from "./install-Cc5v28sQ.js";
9
9
  var r, o, b, m;
10
10
  class W {
11
11
  constructor(t) {
@@ -1,4 +1,4 @@
1
- import { c as d, a as i, I as l, e as m } from "./install-C2KuD-Ju.js";
1
+ import { c as d, a as i, I as l, e as m } from "./install-Cc5v28sQ.js";
2
2
  const p = /* @__PURE__ */ i(
3
3
  '<svg viewBox="0 0 32 32" fill="none" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"></svg>'
4
4
  );
@@ -3,7 +3,7 @@ var l = (i) => {
3
3
  };
4
4
  var c = (i, t, s) => t.has(i) || l("Cannot " + s);
5
5
  var r = (i, t, s) => (c(i, t, "read from private field"), s ? s.call(i) : t.get(i)), e = (i, t, s) => t.has(i) ? l("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, s), h = (i, t, s, f) => (c(i, t, "write to private field"), f ? f.call(i, s) : t.set(i, s), s), m = (i, t, s) => (c(i, t, "access private method"), s);
6
- import { j as p, t as u } from "./install-C2KuD-Ju.js";
6
+ import { j as p, t as u } from "./install-Cc5v28sQ.js";
7
7
  var o, a, n, d;
8
8
  class F {
9
9
  constructor(t) {
@@ -1,8 +1,8 @@
1
1
  var a = Object.defineProperty;
2
2
  var o = (i, e, t) => e in i ? a(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
3
  var r = (i, e, t) => o(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { s as p } from "./install-C2KuD-Ju.js";
5
- import { H as d, a as u } from "./vidstack-Bq6c3Bam-D0_vMVk3.js";
4
+ import { s as p } from "./install-Cc5v28sQ.js";
5
+ import { H as d, a as u } from "./vidstack-Bq6c3Bam-DsrzVnIy.js";
6
6
  class n extends d {
7
7
  constructor(t, s) {
8
8
  super(t, s);
@@ -5,9 +5,9 @@ var Y = (n) => {
5
5
  var wt = (n, t, e) => t in n ? vt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
6
6
  var I = (n, t, e) => wt(n, typeof t != "symbol" ? t + "" : t, e), b = (n, t, e) => t.has(n) || Y("Cannot " + e);
7
7
  var i = (n, t, e) => (b(n, t, "read from private field"), e ? e.call(n) : t.get(n)), f = (n, t, e) => t.has(n) ? Y("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, e), p = (n, t, e, r) => (b(n, t, "write to private field"), r ? r.call(n, e) : t.set(n, e), e), h = (n, t, e) => (b(n, t, "access private method"), e);
8
- import { o as Et, b as _, p as Lt, d as At, Q as z, l as J, e as Dt, D as N, f as xt, g as O, T as Mt, L as q, q as Ct, r as Nt, t as Rt, h as Ft, j as Z, k as Pt, m as qt, n as _t } from "./install-C2KuD-Ju.js";
9
- import { VideoProvider as $t } from "./vidstack-video-CGOgyd6M.js";
10
- import { R as jt } from "./vidstack-DqAw8m9J-C_yO4Cr1.js";
8
+ import { o as Et, b as _, p as Lt, d as At, Q as z, l as J, e as Dt, D as N, f as xt, g as O, T as Mt, L as q, q as Ct, r as Nt, t as Rt, h as Ft, j as Z, k as Pt, m as qt, n as _t } from "./install-Cc5v28sQ.js";
9
+ import { VideoProvider as $t } from "./vidstack-video-UBob8Q-T.js";
10
+ import { R as jt } from "./vidstack-DqAw8m9J-PZilPgEJ.js";
11
11
  function W(n) {
12
12
  try {
13
13
  return new Intl.DisplayNames(navigator.languages, { type: "language" }).of(n) ?? null;
@@ -5,9 +5,9 @@ var W = (d) => {
5
5
  var vt = (d, t, s) => t in d ? Lt(d, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : d[t] = s;
6
6
  var G = (d, t, s) => vt(d, typeof t != "symbol" ? t + "" : t, s), O = (d, t, s) => t.has(d) || W("Cannot " + s);
7
7
  var e = (d, t, s) => (O(d, t, "read from private field"), s ? s.call(d) : t.get(d)), T = (d, t, s) => t.has(d) ? W("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(d) : t.set(d, s), l = (d, t, s, i) => (O(d, t, "write to private field"), i ? i.call(d, s) : t.set(d, s), s), r = (d, t, s) => (O(d, t, "access private method"), s);
8
- import { y as St, K as L, U as Z, x as At, D as tt, d as V, l as et, e as It, V as bt, L as Rt } from "./install-C2KuD-Ju.js";
9
- import { R as wt } from "./vidstack-DqAw8m9J-C_yO4Cr1.js";
10
- import { g as Mt, a as Dt, b as it, h as st, l as Nt, c as Pt } from "./vidstack-D2pY00kU-Cj-oWuMs.js";
8
+ import { y as St, K as L, U as Z, x as At, D as tt, d as V, l as et, e as It, V as bt, L as Rt } from "./install-Cc5v28sQ.js";
9
+ import { R as wt } from "./vidstack-DqAw8m9J-PZilPgEJ.js";
10
+ import { g as Mt, a as Dt, b as it, h as st, l as Nt, c as Pt } from "./vidstack-D2pY00kU-CfifXGPD.js";
11
11
  var g, _, at;
12
12
  class _t {
13
13
  constructor(t) {
@@ -5,9 +5,9 @@ var N = (n) => {
5
5
  var ot = (n, t, i) => t in n ? rt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[t] = i;
6
6
  var _ = (n, t, i) => ot(n, typeof t != "symbol" ? t + "" : t, i), R = (n, t, i) => t.has(n) || N("Cannot " + i);
7
7
  var e = (n, t, i) => (R(n, t, "read from private field"), i ? i.call(n) : t.get(n)), p = (n, t, i) => t.has(n) ? N("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, i), f = (n, t, i, s) => (R(n, t, "write to private field"), s ? s.call(n, i) : t.set(n, i), i), a = (n, t, i) => (R(n, t, "access private method"), i);
8
- import { i as ht, b as C, p as at, d as O, Q as V, l as j, e as dt, D as x, f as ut, T as ct, g as k, L as $, h as lt, j as q, k as pt, m as ft, n as vt } from "./install-C2KuD-Ju.js";
9
- import { VideoProvider as yt } from "./vidstack-video-CGOgyd6M.js";
10
- import { R as gt } from "./vidstack-DqAw8m9J-C_yO4Cr1.js";
8
+ import { i as ht, b as C, p as at, d as O, Q as V, l as j, e as dt, D as x, f as ut, T as ct, g as k, L as $, h as lt, j as q, k as pt, m as ft, n as vt } from "./install-Cc5v28sQ.js";
9
+ import { VideoProvider as yt } from "./vidstack-video-UBob8Q-T.js";
10
+ import { R as gt } from "./vidstack-DqAw8m9J-PZilPgEJ.js";
11
11
  const Lt = (n) => ut(n);
12
12
  var T, h, o, D, b, r, E, M, U, F, Q, K, W, B, J, X, Y, z, G, Z, tt;
13
13
  class St {
@@ -5,8 +5,8 @@ var b = (i) => {
5
5
  var N = (i, t, e) => t in i ? $(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
6
6
  var m = (i, t, e) => N(i, typeof t != "symbol" ? t + "" : t, e), E = (i, t, e) => t.has(i) || b("Cannot " + e);
7
7
  var s = (i, t, e) => (E(i, t, "read from private field"), e ? e.call(i) : t.get(i)), r = (i, t, e) => t.has(i) ? b("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, e), c = (i, t, e, n) => (E(i, t, "write to private field"), n ? n.call(i, e) : t.set(i, e), e), p = (i, t, e) => (E(i, t, "access private method"), e);
8
- import { s as U, u as V, v as A, w as q, x as C, l as F, D as Y, E as _, T as j, g as v } from "./install-C2KuD-Ju.js";
9
- import { H as z, a as B } from "./vidstack-Bq6c3Bam-D0_vMVk3.js";
8
+ import { s as U, u as V, v as A, w as q, x as C, l as F, D as Y, E as _, T as j, g as v } from "./install-Cc5v28sQ.js";
9
+ import { H as z, a as B } from "./vidstack-Bq6c3Bam-DsrzVnIy.js";
10
10
  var P, f, k, D, H;
11
11
  class G {
12
12
  constructor(t, e) {
@@ -5,9 +5,9 @@ var N = (r) => {
5
5
  var de = (r, c, e) => c in r ? ue(r, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[c] = e;
6
6
  var b = (r, c, e) => de(r, typeof c != "symbol" ? c + "" : c, e), S = (r, c, e) => c.has(r) || N("Cannot " + e);
7
7
  var t = (r, c, e) => (S(r, c, "read from private field"), e ? e.call(r) : c.get(r)), f = (r, c, e) => c.has(r) ? N("Cannot add the same private member more than once") : c instanceof WeakSet ? c.add(r) : c.set(r, e), u = (r, c, e, i) => (S(r, c, "write to private field"), i ? i.call(r, e) : c.set(r, e), e), o = (r, c, e) => (S(r, c, "access private method"), e);
8
- import { y as fe, J as U, K as C, p as pe, e as q, d as Q, b as ye, M as _, L as R, l as be, N as ke, T as ve, Q as J } from "./install-C2KuD-Ju.js";
9
- import { R as me } from "./vidstack-DqAw8m9J-C_yO4Cr1.js";
10
- import { E as we } from "./vidstack-DDXt6fpN-DtxbXJ1d.js";
8
+ import { y as fe, J as U, K as C, p as pe, e as q, d as Q, b as ye, M as _, L as R, l as be, N as ke, T as ve, Q as J } from "./install-Cc5v28sQ.js";
9
+ import { R as me } from "./vidstack-DqAw8m9J-PZilPgEJ.js";
10
+ import { E as we } from "./vidstack-DDXt6fpN-DLvflmce.js";
11
11
  import { resolveVimeoVideoId as Pe, getVimeoVideoInfo as Te } from "./vidstack-krOAtKMi-B4IZWKdc.js";
12
12
  const Ce = [
13
13
  "bufferend",
@@ -5,8 +5,8 @@ var B = (r) => {
5
5
  var N = (r, n, e) => n in r ? K(r, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[n] = e;
6
6
  var T = (r, n, e) => N(r, typeof n != "symbol" ? n + "" : n, e), R = (r, n, e) => n.has(r) || B("Cannot " + e);
7
7
  var s = (r, n, e) => (R(r, n, "read from private field"), e ? e.call(r) : n.get(r)), p = (r, n, e) => n.has(r) ? B("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(r) : n.set(r, e), l = (r, n, e, t) => (R(r, n, "write to private field"), t ? t.call(r, e) : n.set(r, e), e), o = (r, n, e) => (R(r, n, "access private method"), e);
8
- import { y as q, J as z, p as A, e as G, b as H, M as Q, K as C, O as W, t as $, P as X } from "./install-C2KuD-Ju.js";
9
- import { E as Z } from "./vidstack-DDXt6fpN-DtxbXJ1d.js";
8
+ import { y as q, J as z, p as A, e as G, b as H, M as Q, K as C, O as W, t as $, P as X } from "./install-Cc5v28sQ.js";
9
+ import { E as Z } from "./vidstack-DDXt6fpN-DLvflmce.js";
10
10
  import { resolveYouTubeVideoId as ee } from "./vidstack-Dm1xEU9Q-qSXq3AI-.js";
11
11
  const b = {
12
12
  Ended: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-sdk",
3
- "version": "25.12.18",
3
+ "version": "25.12.19",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "make-all": "npm version patch --git-tag-version false && npm run build && (npm run build:types || true) && (npm run lint:fix || true) && npm run publish-lib",
@@ -56,7 +56,7 @@
56
56
  "@vuepic/vue-datepicker": "^4.5.1",
57
57
  "@vueuse/components": "^13.0.0",
58
58
  "@webitel/api-services": "^0.0.74",
59
- "@webitel/styleguide": "^24.12.82",
59
+ "@webitel/styleguide": "^24.12.83",
60
60
  "autosize": "^6.0.1",
61
61
  "axios": "^1.8.3",
62
62
  "clipboard-copy": "^4.0.1",
@@ -1,11 +1,9 @@
1
1
  <template>
2
2
  <div
3
+ class="wt-textarea"
3
4
  :class="{
4
- 'wt-textarea--disabled': disabled,
5
- 'wt-textarea--invalid': invalid,
6
- 'wt-textarea--autoresize': autoresize,
5
+ 'wt-textarea--hidden-scrollbar': isScrollHidden,
7
6
  }"
8
- class="wt-textarea"
9
7
  >
10
8
  <wt-label
11
9
  :disabled="disabled"
@@ -23,32 +21,22 @@
23
21
  </slot>
24
22
  </wt-label>
25
23
  <div class="wt-textarea__wrapper">
26
- <textarea
24
+ <p-textarea
27
25
  :id="name"
28
- ref="wt-textarea"
29
- :disabled="disabled"
26
+ ref="textarea-wrapper"
27
+ v-model="model"
30
28
  :placeholder="placeholder || label"
31
- :value="value"
29
+ :invalid="invalid"
30
+ :disabled="disabled"
32
31
  :rows="rows"
32
+ :auto-resize="autoresize"
33
33
  :readonly="readonly"
34
34
  class="wt-textarea__textarea"
35
- v-on="listeners"
36
- @input="autoGrow"
35
+ @paste="emit('paste', $event)"
36
+ @keydown="handleKeypress"
37
+ @input="handleInput"
38
+ @blur="emit('blur')"
37
39
  />
38
- <div
39
- ref="after-wrapper"
40
- class="wt-textarea__after-wrapper"
41
- >
42
- <slot name="after-input" />
43
- <wt-icon-btn
44
- :class="{ hidden: !value }"
45
- :disabled="disabled"
46
- class="wt-textarea__reset-icon-btn"
47
- icon="close--filled"
48
- size="sm"
49
- @click="$emit('input', '')"
50
- />
51
- </div>
52
40
  </div>
53
41
  <wt-input-info
54
42
  v-if="isValidation"
@@ -59,134 +47,108 @@
59
47
  </div>
60
48
  </template>
61
49
 
62
- <script>
63
- import validationMixin from '../../mixins/validationMixin/validationMixin.js';
64
- import WtLabel from '../wt-label/wt-label.vue';
50
+ <script setup lang="ts">
51
+ import type { TextareaProps } from 'primevue/textarea';
52
+ import { defineModel, onMounted, ref,useTemplateRef } from 'vue';
53
+
54
+ import { useValidation } from '../../mixins/validationMixin/useValidation';
55
+
56
+ interface Props extends /* @vue-ignore */ TextareaProps {
57
+ /**
58
+ * textarea label
59
+ */
60
+ label?: string;
61
+ /**
62
+ * textarea placeholder
63
+ */
64
+ placeholder?: string;
65
+ /**
66
+ * Native textarea readonly attribute
67
+ */
68
+ readonly?: boolean;
69
+ /**
70
+ * Native textarea disabled attribute
71
+ */
72
+ disabled?: boolean;
73
+ required?: boolean;
74
+ /**
75
+ * textarea name
76
+ */
77
+ name?: string;
78
+ /**
79
+ * Number of rows in textarea
80
+ */
81
+ rows?: number;
82
+ labelProps?: Record<string, any>;
83
+ autoresize?: boolean;
84
+ // validation rules
85
+ v?: any;
86
+ customValidators?: Array<{ name: string; text: string }>;
87
+ }
88
+
89
+ const props = withDefaults(defineProps<Props>(), {
90
+ label: '',
91
+ placeholder: undefined,
92
+ readonly: false,
93
+ disabled: false,
94
+ required: false,
95
+ name: '',
96
+ rows: 1,
97
+ labelProps: undefined,
98
+ autoresize: false,
99
+ v: undefined,
100
+ customValidators: () => [],
101
+ });
65
102
 
66
- export default {
67
- name: 'WtTextarea',
68
- components: {
69
- WtLabel,
70
- },
71
- mixins: [validationMixin],
72
- props: {
73
- /**
74
- * Current textarea value (`v-model`)
75
- */
76
- value: {
77
- type: String,
78
- default: '',
79
- },
80
- /**
81
- * textarea label
82
- */
83
- label: {
84
- type: String,
85
- default: '',
86
- },
87
- /**
88
- * textarea placeholder
89
- */
90
- placeholder: {
91
- type: String,
92
- },
93
- /**
94
- * Native textarea disabled attribute
95
- */
96
- readonly: {
97
- type: Boolean,
98
- default: false,
99
- description: 'Native textarea readonly attribute',
100
- },
101
- /**
102
- * Native textarea disabled attribute
103
- */
104
- disabled: {
105
- type: Boolean,
106
- default: false,
107
- description: 'Native textarea disabled attribute',
108
- },
109
- required: {
110
- type: Boolean,
111
- default: false,
112
- },
113
- /**
114
- * textarea name
115
- */
116
- name: {
117
- type: String,
118
- default: '',
119
- },
120
- /**
121
- * Number of rows in textarea
122
- */
123
- rows: {
124
- type: Number,
125
- default: 1,
126
- description: 'Number of rows for textarea',
127
- },
128
- labelProps: {
129
- type: Object,
130
- description: 'Object with props, passed down to wt-label as props',
131
- },
132
- autoresize: {
133
- type: Boolean,
134
- default: false,
135
- description: 'enables auto-grow for text-area',
136
- },
137
- },
138
- emits: ['input', 'enter'],
139
- computed: {
140
- listeners() {
141
- return {
142
- ...this.$listeners,
143
- input: (event) => this.$emit('input', event.target.value),
144
- keypress: (event) => this.handleKeypress(event),
145
- };
146
- },
147
- },
148
- mounted() {
149
- this.updateInputPaddings();
150
- },
151
- updated() {
152
- if (this.autoresize && !this.value) this.resetGrow();
153
- },
103
+ const model = defineModel<string>();
154
104
 
155
- methods: {
156
- handleKeypress(event) {
157
- if (!this.autoresize) return;
105
+ const textareaWrapperRef = useTemplateRef('textarea-wrapper');
158
106
 
159
- if (event.key === 'Enter' && !event.shiftKey) {
160
- this.$emit('enter');
161
- event.preventDefault();
162
- }
163
- },
107
+ const emit = defineEmits(['enter', 'paste', 'blur', 'keydown']);
164
108
 
165
- autoGrow() {
166
- if (!this.autoresize) return;
167
- const inputEl = this.$refs['wt-textarea'];
168
- const bordersSize = 2; // + 2px for height because of --rounded-action-border-size
109
+ const isScrollHidden = ref(false);
169
110
 
170
- inputEl.style.height = 'auto';
171
- inputEl.style.height = inputEl.scrollHeight + bordersSize + 'px';
172
- },
111
+ const { isValidation, invalid, validationText } = useValidation({
112
+ v: props.v,
113
+ customValidators: props.customValidators,
114
+ } as any);
173
115
 
174
- resetGrow() {
175
- const inputEl = this.$refs['wt-textarea'];
176
- inputEl.style.height = 'auto'; // reset text-area height
177
- },
116
+ const handleKeypress = (event: KeyboardEvent) => {
117
+ emit('keydown', event);
118
+ if (!props.autoresize) return;
178
119
 
179
- updateInputPaddings() {
180
- // cant test this thing cause vue test utils doesnt render elements width :/
181
- const afterWrapperWidth = this.$refs['after-wrapper'].offsetWidth;
182
- const inputEl = this.$refs['wt-textarea'];
183
- const defaultInputPadding = getComputedStyle(
184
- document.documentElement,
185
- ).getPropertyValue('--textarea-padding');
186
- inputEl.style.paddingRight = `calc(${defaultInputPadding} * 2 + ${afterWrapperWidth}px)`;
187
- },
188
- },
120
+ if (event.key === 'Enter' && !event.shiftKey) {
121
+ emit('enter');
122
+ event.preventDefault();
123
+ }
124
+ };
125
+
126
+ const handleInput = () => {
127
+ checkTextareaHeight();
128
+ };
129
+
130
+ /**
131
+ * @author YeHlukhov
132
+ *
133
+ * Primevue by default shows scrollbar for autoresize textarea with overflow: auto,
134
+ * so this function checks textarea height and adds/removes wt-hidden-scrollbar class
135
+ */
136
+ const checkTextareaHeight = async () => {
137
+ if (!props.autoresize) return;
138
+
139
+ const textareaEl = textareaWrapperRef.value?.$el;
140
+
141
+ // firstly textarea renders widths are equal, then clientHeight changes for 2px by primevue extra space
142
+ if (textareaEl?.scrollHeight === textareaEl?.clientHeight || textareaEl?.scrollHeight === (textareaEl?.clientHeight + 2)) {
143
+ isScrollHidden.value = true;
144
+ } else {
145
+ isScrollHidden.value = false;
146
+ }
189
147
  };
148
+
149
+ onMounted(() => {
150
+ checkTextareaHeight()
151
+ })
190
152
  </script>
191
153
 
192
154
  <style lang="scss">
@@ -196,29 +158,8 @@ export default {
196
158
  <style lang="scss" scoped>
197
159
  @use '../../css/styleguide/styleguide' as *;
198
160
 
199
- .wt-textarea {
200
- cursor: text;
201
- max-height: 100%;
202
-
203
- &--disabled {
204
- pointer-events: none;
205
- }
206
-
207
- &--autoresize {
208
- .wt-textarea__textarea {
209
- transition: none;
210
- min-height: auto;
211
- max-height: 100%;
212
- }
213
-
214
- .wt-textarea__wrapper {
215
- height: 100%;
216
- }
217
- }
218
- }
219
-
220
161
  .wt-textarea__wrapper {
221
- position: relative;
162
+ height: 100%;
222
163
  }
223
164
 
224
165
  .wt-textarea__textarea {
@@ -226,42 +167,12 @@ export default {
226
167
  @extend %wt-scrollbar;
227
168
  @include wt-placeholder;
228
169
 
229
- display: block;
230
- transition: var(--transition);
231
170
  box-sizing: border-box;
232
- border: var(--input-border);
233
- border-color: var(--wt-text-field-input-border-color);
234
- border-radius: var(--border-radius);
235
- background: transparent;
236
- padding: var(--textarea-padding);
237
171
  width: 100%;
238
- min-height: var(--textarea-min-height);
239
172
  resize: none;
240
- color: var(--wt-text-field-text-color);
241
-
242
- .wt-textarea--disabled & {
243
- @include wt-placeholder('disabled');
244
-
245
- border-color: var(--wt-text-field-input-border-disabled-color);
246
- background: var(--wt-text-field-input-background-disabled-color);
247
- }
248
-
249
- .wt-textarea--invalid &,
250
- .wt-textarea--invalid:hover & {
251
- outline: none; // prevent outline overlapping false color
252
- border-color: var(--wt-text-field-input-border-error-color);
253
- color: var(--wt-text-field-error-text-color);
254
- @include wt-placeholder('error');
255
- }
256
173
  }
257
174
 
258
- .wt-textarea__after-wrapper {
259
- display: flex;
260
- position: absolute;
261
- top: var(--input-icon-margin);
262
- right: var(--input-icon-margin);
263
- align-items: center;
264
- gap: var(--input-after-wrapper-gap);
265
- pointer-events: auto; // override --disabled p-events none
175
+ .wt-textarea--hidden-scrollbar textarea::-webkit-scrollbar {
176
+ display: none;
266
177
  }
267
178
  </style>
@@ -39,8 +39,7 @@
39
39
  <div v-if="selected && option.id === selected?.id" class="wt-cc-pause-cause-popup-option__comment">
40
40
  <wt-textarea
41
41
  :label="$t('reusable.comment')"
42
- :value="selected.statusComment"
43
- @input="selected.statusComment = $event"
42
+ :v-model="selected.statusComment"
44
43
  />
45
44
  </div>
46
45
  </li>
@@ -21,10 +21,10 @@
21
21
 
22
22
  <wt-textarea
23
23
  v-if="mode === AuditFormMode.Fill"
24
- :value="resultCommentModel"
24
+ :model-value="resultCommentModel"
25
25
  class="call-evaluation-form__comment"
26
26
  :label="$t('reusable.comment')"
27
- @input="handleResultCommentUpdate"
27
+ @update:model-value="handleResultCommentUpdate"
28
28
  />
29
29
 
30
30
  <audit-form-footer
@@ -14,7 +14,8 @@ import PInputText from 'primevue/inputtext';
14
14
  import PMenubar from 'primevue/menubar';
15
15
  import PPopover from 'primevue/popover';
16
16
  import PRadio from 'primevue/radiobutton';
17
- import PSlider from 'primevue/slider'
17
+ import PSlider from 'primevue/slider';
18
+ import PTextarea from 'primevue/textarea';
18
19
  import PToggleSwitch from 'primevue/toggleswitch';
19
20
  import PToolbar from 'primevue/toolbar';
20
21
  import Tooltip from 'primevue/tooltip';
@@ -49,6 +50,7 @@ const initPrimevue = (app) => {
49
50
  app.component('PColumn', changeComponentCompatMode(PColumn));
50
51
  app.component('PRadio', changeComponentCompatMode(PRadio));
51
52
  app.component('PChip', changeComponentCompatMode(PChip));
53
+ app.component('PTextarea', changeComponentCompatMode(PTextarea));
52
54
  app.component('PToggleSwitch', changeComponentCompatMode(PToggleSwitch));
53
55
  app.component('PBreadcrumb', changeComponentCompatMode(PBreadcrumb));
54
56
  app.component('PSlider', changeComponentCompatMode(PSlider));
@@ -13,6 +13,7 @@ import radio from './radio/radio.js';
13
13
  import slider from './slider/slider.js';
14
14
  import switcher from './switcher/switcher.js';
15
15
  import table from './table/table.js';
16
+ import textarea from './textarea/textarea.js';
16
17
  import toolbar from './toolbar/toolbar.js';
17
18
  import tooltip from './tooltip/tooltip.js';
18
19
 
@@ -23,6 +24,7 @@ const components = {
23
24
  button,
24
25
  chip,
25
26
  checkbox,
27
+ textarea,
26
28
  toggleswitch: switcher,
27
29
  divider,
28
30
  image,
@@ -0,0 +1,14 @@
1
+ import { TextareaScheme } from '@webitel/styleguide/component-schemes';
2
+
3
+ const textarea = {
4
+ ...TextareaScheme.sizes,
5
+ colorScheme: TextareaScheme.colorScheme,
6
+
7
+ css: ({ dt }) => `
8
+ .wt-textarea__textarea {
9
+ min-height: ${dt('textarea.minHeight')};
10
+ }
11
+ `,
12
+ };
13
+
14
+ export default textarea;