@webitel/ui-sdk 25.10.67 → 25.10.69

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 (49) hide show
  1. package/dist/img/sprite/index.js +2 -0
  2. package/dist/img/sprite/tile.svg +6 -0
  3. package/dist/{install-CW8oHjb5.js → install-CjvoevkY.js} +29201 -25101
  4. package/dist/ui-sdk.css +1 -1
  5. package/dist/ui-sdk.js +1 -1
  6. package/dist/ui-sdk.umd.cjs +1130 -609
  7. package/dist/{vidstack-Bq6c3Bam-LsSTFDin.js → vidstack-Bq6c3Bam-CWFzKZjp.js} +2 -2
  8. package/dist/{vidstack-D2pY00kU-BwJtWNq2.js → vidstack-D2pY00kU-Dciejh67.js} +2 -2
  9. package/dist/{vidstack-DDXt6fpN-CA2iLYFD.js → vidstack-DDXt6fpN-BKvZvG7_.js} +1 -1
  10. package/dist/{vidstack-D_-9AA6_-PulLI2mI.js → vidstack-D_-9AA6_-D8BoTZaT.js} +1 -1
  11. package/dist/{vidstack-DqAw8m9J-CfsZRUOX.js → vidstack-DqAw8m9J-Dfgc_T0v.js} +1 -1
  12. package/dist/{vidstack-audio-CnObeLGZ.js → vidstack-audio-ShtBWti0.js} +2 -2
  13. package/dist/{vidstack-dash-CrnWMZAr.js → vidstack-dash-_LMRaHVf.js} +3 -3
  14. package/dist/{vidstack-google-cast-C7wR4EmH.js → vidstack-google-cast-yIg-MfbM.js} +3 -3
  15. package/dist/{vidstack-hls-C6Idke2U.js → vidstack-hls-DLyeImmL.js} +3 -3
  16. package/dist/{vidstack-video-CdqnqAr9.js → vidstack-video-Dp1ZjLt9.js} +2 -2
  17. package/dist/{vidstack-vimeo-9Y9DFwy9.js → vidstack-vimeo-I2_5Xgn3.js} +3 -3
  18. package/dist/{vidstack-youtube-C3w6gYqB.js → vidstack-youtube-B68cnZDv.js} +2 -2
  19. package/package.json +2 -2
  20. package/src/assets/icons/sprite/index.js +2 -0
  21. package/src/assets/icons/sprite/tile.svg +6 -0
  22. package/src/components/index.js +3 -0
  23. package/src/components/on-demand/wt-start-page/components/wt-start-page.vue +4 -2
  24. package/src/components/wt-galleria/types/WtGalleria.d.ts +6 -0
  25. package/src/components/wt-galleria/wt-galleria.vue +229 -0
  26. package/src/components/wt-navigation-bar/wt-navigation-bar.vue +4 -0
  27. package/src/components/wt-popup/_variables.scss +1 -1
  28. package/src/composables/index.ts +1 -0
  29. package/src/composables/useGalleriaFullscreen/useGalleriaFullscreen.ts +65 -0
  30. package/src/enums/WebitelApplications/WfmSections.enum.js +15 -0
  31. package/src/enums/WebitelApplications/WfmSections.ts +7 -0
  32. package/src/enums/WebitelApplications/WtApplication.ts +1 -0
  33. package/src/plugins/primevue/primevue.plugin.js +2 -0
  34. package/src/plugins/primevue/theme/components/components.js +2 -0
  35. package/src/plugins/primevue/theme/components/galleria/galleria.js +71 -0
  36. package/types/components/index.d.ts +3 -1
  37. package/types/components/on-demand/wt-start-page/components/wt-start-page.vue.d.ts +3 -1
  38. package/types/components/wt-galleria/wt-galleria.vue.d.ts +22 -0
  39. package/types/components/wt-navigation-bar/wt-navigation-bar.vue.d.ts +4 -0
  40. package/types/components/wt-popup/wt-popup.vue.d.ts +1 -1
  41. package/types/composables/index.d.ts +1 -0
  42. package/types/composables/useGalleriaFullscreen/useGalleriaFullscreen.d.ts +4 -0
  43. package/types/enums/WebitelApplications/WfmSections.d.ts +6 -0
  44. package/types/enums/WebitelApplications/WfmSections.enum.d.ts +2 -0
  45. package/types/enums/WebitelApplications/WtApplication.d.ts +1 -0
  46. package/types/modules/Filters/components/filter-pagination.vue.d.ts +2 -2
  47. package/types/modules/Filters/components/filter-table-fields.vue.d.ts +2 -2
  48. package/types/plugins/primevue/theme/components/components.d.ts +2 -0
  49. package/types/plugins/primevue/theme/components/galleria/galleria.d.ts +233 -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-CW8oHjb5.js";
9
- import { R as ri } from "./vidstack-DqAw8m9J-CfsZRUOX.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-CjvoevkY.js";
9
+ import { R as ri } from "./vidstack-DqAw8m9J-Dfgc_T0v.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-CW8oHjb5.js";
8
+ import { l as b, h as A, S as O, C as D, d as R, m as M } from "./install-CjvoevkY.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-C7wR4EmH.js")).GoogleCastProvider(c(this, n), e);
97
+ return new (await import("./vidstack-google-cast-yIg-MfbM.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-CW8oHjb5.js";
8
+ import { J as M, l as f, e as A, d as P, R as O, b as S } from "./install-CjvoevkY.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-CW8oHjb5.js";
1
+ import { c as d, a as i, I as l, e as m } from "./install-CjvoevkY.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-CW8oHjb5.js";
6
+ import { j as p, t as u } from "./install-CjvoevkY.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-CW8oHjb5.js";
5
- import { H as d, a as u } from "./vidstack-Bq6c3Bam-LsSTFDin.js";
4
+ import { s as p } from "./install-CjvoevkY.js";
5
+ import { H as d, a as u } from "./vidstack-Bq6c3Bam-CWFzKZjp.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-CW8oHjb5.js";
9
- import { VideoProvider as $t } from "./vidstack-video-CdqnqAr9.js";
10
- import { R as jt } from "./vidstack-DqAw8m9J-CfsZRUOX.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-CjvoevkY.js";
9
+ import { VideoProvider as $t } from "./vidstack-video-Dp1ZjLt9.js";
10
+ import { R as jt } from "./vidstack-DqAw8m9J-Dfgc_T0v.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-CW8oHjb5.js";
9
- import { R as wt } from "./vidstack-DqAw8m9J-CfsZRUOX.js";
10
- import { g as Mt, a as Dt, b as it, h as st, l as Nt, c as Pt } from "./vidstack-D2pY00kU-BwJtWNq2.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-CjvoevkY.js";
9
+ import { R as wt } from "./vidstack-DqAw8m9J-Dfgc_T0v.js";
10
+ import { g as Mt, a as Dt, b as it, h as st, l as Nt, c as Pt } from "./vidstack-D2pY00kU-Dciejh67.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-CW8oHjb5.js";
9
- import { VideoProvider as yt } from "./vidstack-video-CdqnqAr9.js";
10
- import { R as gt } from "./vidstack-DqAw8m9J-CfsZRUOX.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-CjvoevkY.js";
9
+ import { VideoProvider as yt } from "./vidstack-video-Dp1ZjLt9.js";
10
+ import { R as gt } from "./vidstack-DqAw8m9J-Dfgc_T0v.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-CW8oHjb5.js";
9
- import { H as z, a as B } from "./vidstack-Bq6c3Bam-LsSTFDin.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-CjvoevkY.js";
9
+ import { H as z, a as B } from "./vidstack-Bq6c3Bam-CWFzKZjp.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-CW8oHjb5.js";
9
- import { R as me } from "./vidstack-DqAw8m9J-CfsZRUOX.js";
10
- import { E as we } from "./vidstack-DDXt6fpN-CA2iLYFD.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-CjvoevkY.js";
9
+ import { R as me } from "./vidstack-DqAw8m9J-Dfgc_T0v.js";
10
+ import { E as we } from "./vidstack-DDXt6fpN-BKvZvG7_.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-CW8oHjb5.js";
9
- import { E as Z } from "./vidstack-DDXt6fpN-CA2iLYFD.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-CjvoevkY.js";
9
+ import { E as Z } from "./vidstack-DDXt6fpN-BKvZvG7_.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.10.67",
3
+ "version": "25.10.69",
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.60",
59
- "@webitel/styleguide": "^24.12.79",
59
+ "@webitel/styleguide": "^24.12.80",
60
60
  "autosize": "^6.0.1",
61
61
  "axios": "^1.8.3",
62
62
  "clipboard-copy": "^4.0.1",
@@ -201,6 +201,7 @@ import sttSearch from './stt-search.svg';
201
201
  import table from './table.svg';
202
202
  import telegramBot from './telegram-bot.svg';
203
203
  import tick from './tick.svg';
204
+ import tile from './tile.svg';
204
205
  import treeCollapse from './tree-collapse.svg';
205
206
  import treeCorner from './tree-corner.svg';
206
207
  import treeCross from './tree-cross.svg';
@@ -446,6 +447,7 @@ export default objCamelToKebab({
446
447
  checkboxTick,
447
448
  log,
448
449
  downloadPdf,
450
+ tile,
449
451
 
450
452
  recordStart,
451
453
  recordStop,
@@ -0,0 +1,6 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M8 13C9.65685 13 11 14.3431 11 16V19C11 20.6569 9.65685 22 8 22H5C3.34315 22 2 20.6569 2 19V16C2 14.3431 3.34315 13 5 13H8ZM5 15H8C8.55229 15 9 15.4477 9 16V19C9 19.5523 8.55228 20 8 20H5C4.44772 20 4 19.5523 4 19V16C4 15.4477 4.44772 15 5 15Z"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M8 2C9.65685 2 11 3.34315 11 5V8C11 9.65685 9.65685 11 8 11H5C3.34315 11 2 9.65685 2 8V5C2 3.34315 3.34315 2 5 2H8ZM5 4H8C8.55229 4 9 4.44772 9 5V8C9 8.55228 8.55228 9 8 9H5C4.44772 9 4 8.55228 4 8V5C4 4.44771 4.44772 4 5 4Z"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M19 13C20.6569 13 22 14.3431 22 16V19C22 20.6569 20.6569 22 19 22H16C14.3431 22 13 20.6569 13 19V16C13 14.3431 14.3431 13 16 13H19ZM16 15H19C19.5523 15 20 15.4477 20 16V19C20 19.5523 19.5523 20 19 20H16C15.4477 20 15 19.5523 15 19V16C15 15.4477 15.4477 15 16 15Z"/>
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M19 2C20.6569 2 22 3.34315 22 5V8C22 9.65685 20.6569 11 19 11H16C14.3431 11 13 9.65685 13 8V5C13 3.34315 14.3431 2 16 2H19ZM16 4H19C19.5523 4 20 4.44772 20 5V8C20 8.55228 19.5523 9 19 9H16C15.4477 9 15 8.55228 15 8V5C15 4.44771 15.4477 4 16 4Z"/>
6
+ </svg>
@@ -27,6 +27,7 @@ import WtEmpty from './wt-empty/wt-empty.vue';
27
27
  import WtErrorPage from './wt-error-page/wt-error-page.vue';
28
28
  import WtExpansionPanel from './wt-expansion-panel/wt-expansion-panel.vue';
29
29
  import WtFiltersPanelWrapper from './wt-filters-panel-wrapper/wt-filters-panel-wrapper.vue';
30
+ import WtGalleria from './wt-galleria/wt-galleria.vue';
30
31
  import WtHeadline from './wt-headline/wt-headline.vue';
31
32
  import WtHint from './wt-hint/wt-hint.vue';
32
33
  import WtIcon from './wt-icon/wt-icon.vue';
@@ -145,6 +146,7 @@ const Components = {
145
146
  WtStartPage,
146
147
  WtSelectionPopup,
147
148
  WtDisplayChipItems,
149
+ WtGalleria,
148
150
  WtVidstackPlayer,
149
151
  WtChatEmoji,
150
152
  };
@@ -173,6 +175,7 @@ export {
173
175
  WtErrorPage,
174
176
  WtExpansionPanel,
175
177
  WtFiltersPanelWrapper,
178
+ WtGalleria,
176
179
  WtHeaderActions,
177
180
  WtHeadline,
178
181
  WtHint,
@@ -38,11 +38,13 @@ interface AppLogo {
38
38
  dark: string;
39
39
  }
40
40
 
41
- const props = defineProps<{
41
+ const props = withDefaults(defineProps<{
42
42
  nav: NavCard[];
43
43
  appLogo: AppLogo;
44
44
  darkMode?: boolean;
45
- }>();
45
+ }>(), {
46
+ darkMode: false,
47
+ });
46
48
 
47
49
  const logo = computed(() => {
48
50
  return props.darkMode ? props.appLogo.dark : props.appLogo.light;
@@ -0,0 +1,6 @@
1
+ export type WtGalleriaItem = {
2
+ src: string;
3
+ thumbnailSrc: string;
4
+ title: string;
5
+ description?: string;
6
+ };
@@ -0,0 +1,229 @@
1
+ <template>
2
+ <p-galleria
3
+ ref="galleria"
4
+ v-model:visible="visible"
5
+ v-model:active-index="activeIndex"
6
+ :value="value"
7
+ :show-thumbnails="showThumbnails"
8
+ full-screen
9
+ circular
10
+ show-item-navigators
11
+ :num-visible="5"
12
+ :pt="{
13
+ root: {
14
+ class: [{ 'flex flex-col': fullScreen }],
15
+ },
16
+ content: {
17
+ class: ['relative', { 'wt-galleria__content--fullscreen': fullScreen }]
18
+ },
19
+ thumbnails: 'wt-galleria__thumbnails',
20
+ closeButton: {
21
+ style: { display: fullScreen ? 'none' : 'block' },
22
+ },
23
+ }"
24
+ >
25
+ <template #item="{item}: {item: WtGalleriaItem}">
26
+ <div
27
+ class="wt-galleria__image-container"
28
+ :class="{ 'wt-galleria__image-container--preview': !fullScreen }"
29
+ >
30
+ <wt-loader v-if="isImageOnLoad" />
31
+ <img
32
+ v-show="!isImageOnLoad"
33
+ class="wt-galleria__image"
34
+ :class="{ 'wt-galleria__image--fullscreen': fullScreen }"
35
+ :src="item.src"
36
+ :alt="item.title"
37
+ @load="onImageLoad"
38
+ />
39
+ </div>
40
+ </template>
41
+ <template #thumbnail="{item}: {item: WtGalleriaItem}">
42
+ <img :src="item.thumbnailSrc" :alt="item.title" class="wt-galleria__thumbnail" />
43
+ </template>
44
+ <template #closeicon>
45
+ <wt-icon
46
+ icon="close"
47
+ />
48
+ </template>
49
+ <template #previousitemicon>
50
+ <wt-icon
51
+ icon="arrow-left"
52
+ />
53
+ </template>
54
+ <template #nextitemicon>
55
+ <wt-icon
56
+ icon="arrow-right"
57
+ />
58
+ </template>
59
+ <template #previousthumbnailicon>
60
+ <wt-icon
61
+ icon="arrow-left"
62
+ />
63
+ </template>
64
+ <template #nextthumbnailicon>
65
+ <wt-icon
66
+ icon="arrow-right"
67
+ />
68
+ </template>
69
+ <template #footer>
70
+ <div class="wt-galleria__footer">
71
+ <wt-icon
72
+ icon="tile"
73
+ @click="toggleThumbnails"
74
+ />
75
+ <span v-if="value.length" class="wt-galleria__footer-info">
76
+ <span>{{ activeIndex + 1 }}/{{ value.length }}</span>
77
+ <span>{{ value[activeIndex].title }}</span>
78
+ <span>{{ value[activeIndex].description }}</span>
79
+ </span>
80
+ <div class="wt-galleria__footer-actions">
81
+ <wt-icon
82
+ icon="download"
83
+ @click="emit('download', activeIndex)"
84
+ />
85
+ <wt-icon
86
+ icon="bucket"
87
+ @click="handleDelete"
88
+ />
89
+ <wt-icon
90
+ :icon="fullScreen ? 'collapse' : 'expand'"
91
+ @click="toggleFullScreen"
92
+ />
93
+ </div>
94
+ </div>
95
+ </template>
96
+ </p-galleria>
97
+ <delete-confirmation-popup
98
+ :shown="isDeleteConfirmationPopup"
99
+ :callback="deleteCallback"
100
+ :delete-count="deleteCount"
101
+ @close="closeDelete"
102
+ />
103
+ </template>
104
+
105
+ <script setup lang="ts">
106
+ import { useDeleteConfirmationPopup } from '@webitel/ui-sdk/src/modules/DeleteConfirmationPopup/composables/useDeleteConfirmationPopup';
107
+ import type { GalleriaProps } from 'primevue';
108
+ import { computed, defineModel, defineProps, ref, useTemplateRef,watch } from 'vue';
109
+
110
+ import { useGalleriaFullscreen } from '../../composables'
111
+ import DeleteConfirmationPopup from '../../modules/DeleteConfirmationPopup/components/delete-confirmation-popup.vue';
112
+ import type { WtGalleriaItem } from './types/WtGalleria.d.ts';
113
+ interface Props extends GalleriaProps{
114
+ value: WtGalleriaItem[];
115
+ }
116
+
117
+ const props = defineProps<Props>();
118
+
119
+ const emit = defineEmits(['download', 'delete']);
120
+
121
+ const visible = defineModel<boolean>('visible', { required: true });
122
+ const activeIndex = defineModel<number>('activeIndex', { default: 0, required: false });
123
+ const currentImage = computed(() => props.value[activeIndex.value]);
124
+ const galleria = useTemplateRef('galleria')
125
+ const isImageOnLoad = ref(true)
126
+
127
+ const showThumbnails = ref(true);
128
+
129
+ const {
130
+ fullScreen,
131
+ toggleFullScreen
132
+ } = useGalleriaFullscreen(galleria)
133
+
134
+ const {
135
+ isVisible: isDeleteConfirmationPopup,
136
+ deleteCount,
137
+ deleteCallback,
138
+
139
+ askDeleteConfirmation,
140
+ closeDelete,
141
+ } = useDeleteConfirmationPopup();
142
+
143
+ const toggleThumbnails = () => {
144
+ showThumbnails.value = !showThumbnails.value
145
+ }
146
+
147
+ const onImageLoad = () => {
148
+ isImageOnLoad.value = false
149
+ }
150
+
151
+ const handleDelete = () => {
152
+ if (fullScreen.value) toggleFullScreen()
153
+ askDeleteConfirmation({
154
+ deleteCount: 1,
155
+ callback: () => emit('delete', activeIndex)
156
+ })
157
+ }
158
+
159
+ watch(() => currentImage.value, () => {
160
+ isImageOnLoad.value = true
161
+ }, { deep: true })
162
+
163
+ watch(() => visible.value, () => {
164
+ if (!visible.value) {
165
+ activeIndex.value = 0
166
+ }
167
+ })
168
+
169
+ watch(() => props.value, () => {
170
+ if (!props.value.length) {
171
+ visible.value = false
172
+ }
173
+ })
174
+ </script>
175
+
176
+ <style lang="scss">
177
+ @use '@webitel/styleguide/typography' as *;
178
+
179
+ .wt-galleria__image-container {
180
+ max-width: 100%;
181
+ display: flex;
182
+ align-items: center;
183
+ background: transparent;
184
+ }
185
+
186
+ .wt-galleria__content--fullscreen {
187
+ flex: 1 1 0;
188
+ justify-content: center;
189
+ }
190
+
191
+ .wt-galleria__image {
192
+ width: 100%;
193
+ height: 100%;
194
+ object-fit: contain;
195
+ }
196
+
197
+ .wt-galleria__thumbnails {
198
+ position: absolute;
199
+ width: 100%;
200
+ left: 0;
201
+ bottom: 0;
202
+ }
203
+
204
+ .wt-galleria__thumbnail {
205
+ object-fit: cover;
206
+ }
207
+
208
+ .wt-galleria__footer {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 0.5rem;
212
+ }
213
+
214
+ .wt-galleria__footer-info {
215
+ display: flex;
216
+ gap: 0.5rem;
217
+ @extend %typo-body-2
218
+ }
219
+
220
+ .wt-galleria__footer svg {
221
+ cursor: pointer;
222
+ }
223
+
224
+ .wt-galleria__footer-actions {
225
+ margin-left: auto;
226
+ display: flex;
227
+ gap: 0.5rem;
228
+ }
229
+ </style>
@@ -150,6 +150,10 @@ const appLogo = {
150
150
  dark: CrmDark,
151
151
  light: CrmLight,
152
152
  },
153
+ [WebitelApplications.Wfm]: {
154
+ dark: CrmDark, // TODO Mock logo from crm for wfm
155
+ light: CrmLight, // TODO Mock logo from crm for wfm
156
+ },
153
157
  };
154
158
 
155
159
  export default {
@@ -1,5 +1,5 @@
1
1
  :root {
2
- --popup-wrapper-z-index: 11;
2
+ --popup-wrapper-z-index: 12;
3
3
 
4
4
  --popup-shadow-opacity: 0.8;
5
5
  --wt-popup-shadow-color: hsla(0, 0%, 0%, var(--popup-shadow-opacity));
@@ -5,6 +5,7 @@ export * from './useCard/useCardComponent';
5
5
  export * from './useCard/useCardTabs';
6
6
  export * from './useClose/useClose';
7
7
  export * from './useDestroyableSortable/useDestroyableSortable';
8
+ export * from './useGalleriaFullscreen/useGalleriaFullscreen';
8
9
  export * from './useRepresentableAgentPauseCause/useRepresentableAgentPauseCause';
9
10
  export * from './useValidate/useValidate';
10
11
  export * from './useWtTable/useWtTable';
@@ -0,0 +1,65 @@
1
+ import { computed, onMounted, onUnmounted,ref } from 'vue';
2
+
3
+ export const useGalleriaFullscreen = (galleriaRef) => {
4
+ const containerId = computed(() => galleriaRef.value?.container?.$id);
5
+ const fullScreen = ref(false);
6
+ const toggleFullScreen = () => {
7
+ if (fullScreen.value) {
8
+ closeFullScreen();
9
+ } else {
10
+ openFullScreen();
11
+ }
12
+ };
13
+ const onFullScreenChange = () => {
14
+ fullScreen.value = !fullScreen.value;
15
+ };
16
+ const openFullScreen = () => {
17
+ const element = document.getElementById(containerId.value)
18
+ if (element.requestFullscreen) {
19
+ element.requestFullscreen();
20
+ } else if (element.mozRequestFullScreen) {
21
+ /* Firefox */
22
+ element.mozRequestFullScreen();
23
+ } else if (element.webkitRequestFullscreen) {
24
+ /* Chrome, Safari & Opera */
25
+ element.webkitRequestFullscreen();
26
+ } else if (element.msRequestFullscreen) {
27
+ /* IE/Edge */
28
+ element.msRequestFullscreen();
29
+ }
30
+ };
31
+ const closeFullScreen = () => {
32
+ if (document.exitFullscreen) {
33
+ document.exitFullscreen();
34
+ } else if (document.mozCancelFullScreen) {
35
+ document.mozCancelFullScreen();
36
+ } else if (document.webkitExitFullscreen) {
37
+ document.webkitExitFullscreen();
38
+ } else if (document.msExitFullscreen) {
39
+ document.msExitFullscreen();
40
+ }
41
+ };
42
+ const bindDocumentListeners = () => {
43
+ document.addEventListener('fullscreenchange', onFullScreenChange);
44
+ document.addEventListener('mozfullscreenchange', onFullScreenChange);
45
+ document.addEventListener('webkitfullscreenchange', onFullScreenChange);
46
+ document.addEventListener('msfullscreenchange', onFullScreenChange);
47
+ };
48
+ const unbindDocumentListeners = () => {
49
+ document.removeEventListener('fullscreenchange', onFullScreenChange);
50
+ document.removeEventListener('mozfullscreenchange', onFullScreenChange);
51
+ document.removeEventListener('webkitfullscreenchange', onFullScreenChange);
52
+ document.removeEventListener('msfullscreenchange', onFullScreenChange);
53
+ };
54
+
55
+ onMounted(() => {
56
+ bindDocumentListeners();
57
+ });
58
+ onUnmounted(() => {
59
+ unbindDocumentListeners();
60
+ });
61
+ return {
62
+ fullScreen,
63
+ toggleFullScreen,
64
+ };
65
+ };
@@ -0,0 +1,15 @@
1
+ import upperCase from 'lodash/upperCase.js';
2
+
3
+ import { WfmSections } from './WfmSections';
4
+
5
+ /**
6
+ * @deprecated
7
+ * default export is for backward compatibility,
8
+ * use ts enum instead (and don't forget to compile it)
9
+ */
10
+ export default Object.fromEntries(
11
+ Object.entries(WfmSections).map(([key, value]) => [
12
+ upperCase(key).replaceAll(' ', '_'),
13
+ value,
14
+ ]),
15
+ );
@@ -0,0 +1,7 @@
1
+ export const WfmSections = {
2
+ MySchedules: 'mySchedules',
3
+ Agents: 'agents',
4
+ Schedules: 'schedules',
5
+ } as const;
6
+
7
+ export type WfmSections = (typeof WfmSections)[keyof typeof WfmSections];
@@ -6,6 +6,7 @@ export const WtApplication = {
6
6
  Audit: 'audit',
7
7
  Analytics: 'grafana',
8
8
  Crm: 'crm',
9
+ Wfm: 'wfm'
9
10
  } as const;
10
11
 
11
12
  export type WtApplication = (typeof WtApplication)[keyof typeof WtApplication];
@@ -8,6 +8,7 @@ import PColumn from 'primevue/column';
8
8
  import PrimeVue from 'primevue/config';
9
9
  import PTable from 'primevue/datatable';
10
10
  import PDivider from 'primevue/divider';
11
+ import PGalleria from 'primevue/galleria';
11
12
  import PImage from 'primevue/image';
12
13
  import PInputText from 'primevue/inputtext';
13
14
  import PMenubar from 'primevue/menubar';
@@ -53,6 +54,7 @@ const initPrimevue = (app) => {
53
54
  app.component('PSlider', changeComponentCompatMode(PSlider));
54
55
  app.component('PDivider', changeComponentCompatMode(PDivider));
55
56
  app.component('PImage', changeComponentCompatMode(PImage));
57
+ app.component('PGalleria', changeComponentCompatMode(PGalleria));
56
58
 
57
59
  app.directive('tooltip', Tooltip);
58
60
  };
@@ -5,6 +5,7 @@ import button from './button/button.js';
5
5
  import checkbox from './checkbox/checkbox.js';
6
6
  import chip from './chip/chip.js';
7
7
  import divider from './divider/divider.js';
8
+ import galleria from './galleria/galleria.js';
8
9
  import image from './image/image.js';
9
10
  import menubar from './menubar/menubar.js';
10
11
  import popover from './popover/popover.js';
@@ -32,6 +33,7 @@ const components = {
32
33
  tooltip,
33
34
  datatable: table,
34
35
  toolbar,
36
+ galleria,
35
37
  };
36
38
 
37
39
  export default components;