alytus-ff 0.1.19 → 0.1.20

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/App.vue.d.ts CHANGED
@@ -1,6 +1,56 @@
1
1
  declare const _default: import('vue').DefineComponent<{}, {
2
2
  showDialog: import('vue').Ref<boolean, boolean>;
3
3
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {
4
+ UserAvatar: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
+ user: {
6
+ type: import('vue').PropType<import('.').IUser>;
7
+ required: true;
8
+ };
9
+ size: {
10
+ type: NumberConstructor;
11
+ required: true;
12
+ };
13
+ baseUrl: {
14
+ type: StringConstructor;
15
+ required: true;
16
+ };
17
+ }>, {
18
+ fullName: import('vue').ComputedRef<string>;
19
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
20
+ user: {
21
+ type: import('vue').PropType<import('.').IUser>;
22
+ required: true;
23
+ };
24
+ size: {
25
+ type: NumberConstructor;
26
+ required: true;
27
+ };
28
+ baseUrl: {
29
+ type: StringConstructor;
30
+ required: true;
31
+ };
32
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
33
+ AccountAvatar: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
34
+ item: {
35
+ type: import('vue').PropType<import('.').IAccount>;
36
+ required: true;
37
+ };
38
+ size: {
39
+ type: NumberConstructor;
40
+ default: number;
41
+ };
42
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
43
+ item: {
44
+ type: import('vue').PropType<import('.').IAccount>;
45
+ required: true;
46
+ };
47
+ size: {
48
+ type: NumberConstructor;
49
+ default: number;
50
+ };
51
+ }>> & Readonly<{}>, {
52
+ size: number;
53
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
4
54
  PageTitle: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
55
  title: {
6
56
  type: StringConstructor;
@@ -39,7 +89,9 @@ declare const _default: import('vue').DefineComponent<{}, {
39
89
  type: BooleanConstructor;
40
90
  default: boolean;
41
91
  };
42
- }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
92
+ }>, {}, {}, {}, {
93
+ mdiClose(): string;
94
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
43
95
  value: {
44
96
  type: BooleanConstructor;
45
97
  required: true;
package/dist/alytus-ff.js CHANGED
@@ -1,5 +1,5 @@
1
- import { defineComponent as m, openBlock as a, createElementBlock as u, createElementVNode as d, toDisplayString as f, createCommentVNode as v, renderSlot as i, resolveComponent as l, createBlock as $, withCtx as c, createVNode as p } from "vue";
2
- const k = m({
1
+ import { defineComponent as m, openBlock as a, createElementBlock as $, createElementVNode as v, toDisplayString as d, createCommentVNode as y, renderSlot as c, resolveComponent as r, createBlock as p, withCtx as l, createVNode as _, normalizeClass as b, createTextVNode as N, computed as S } from "vue";
2
+ const U = m({
3
3
  name: "PageTitle",
4
4
  props: {
5
5
  title: {
@@ -11,27 +11,27 @@ const k = m({
11
11
  default: null
12
12
  }
13
13
  }
14
- }), _ = (e, t) => {
15
- const n = e.__vccOpts || e;
16
- for (const [s, o] of t)
17
- n[s] = o;
18
- return n;
19
- }, S = { class: "mt-6 mb-3 ff-page-title" }, w = { class: "text-h5 ff-title" }, B = {
14
+ }), f = (e, t) => {
15
+ const o = e.__vccOpts || e;
16
+ for (const [s, n] of t)
17
+ o[s] = n;
18
+ return o;
19
+ }, q = { class: "mt-6 mb-3 ff-page-title" }, A = { class: "text-h5 ff-title" }, w = {
20
20
  key: 0,
21
21
  class: "text-body-2 ff-description"
22
22
  };
23
- function D(e, t, n, s, o, r) {
24
- return a(), u("div", S, [
25
- d("div", null, [
26
- d("span", w, f(e.title), 1),
27
- e.description ? (a(), u("div", B, f(e.description), 1)) : v("", !0)
23
+ function B(e, t, o, s, n, i) {
24
+ return a(), $("div", q, [
25
+ v("div", null, [
26
+ v("span", A, d(e.title), 1),
27
+ e.description ? (a(), $("div", w, d(e.description), 1)) : y("", !0)
28
28
  ]),
29
- d("div", null, [
30
- i(e.$slots, "buttons")
29
+ v("div", null, [
30
+ c(e.$slots, "buttons")
31
31
  ])
32
32
  ]);
33
33
  }
34
- const I = /* @__PURE__ */ _(k, [["render", D]]), T = m({
34
+ const K = /* @__PURE__ */ f(U, [["render", B]]), T = m({
35
35
  name: "PageSubtitle",
36
36
  props: {
37
37
  subtitle: {
@@ -39,12 +39,19 @@ const I = /* @__PURE__ */ _(k, [["render", D]]), T = m({
39
39
  required: !0
40
40
  }
41
41
  }
42
- }), U = { class: "text-h6 font-weight-bold mt-7 mb-4" };
43
- function P(e, t, n, s, o, r) {
44
- return a(), u("div", U, f(e.subtitle), 1);
42
+ }), D = { class: "text-h6 font-weight-bold mt-7 mb-4" };
43
+ function V(e, t, o, s, n, i) {
44
+ return a(), $("div", D, d(e.subtitle), 1);
45
45
  }
46
- const N = /* @__PURE__ */ _(T, [["render", P]]), R = m({
46
+ const Q = /* @__PURE__ */ f(T, [["render", V]]);
47
+ var P = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";
48
+ const R = m({
47
49
  name: "CustomDialog",
50
+ methods: {
51
+ mdiClose() {
52
+ return P;
53
+ }
54
+ },
48
55
  props: {
49
56
  value: {
50
57
  type: Boolean,
@@ -63,31 +70,41 @@ const N = /* @__PURE__ */ _(T, [["render", P]]), R = m({
63
70
  default: !1
64
71
  }
65
72
  }
66
- });
67
- function V(e, t, n, s, o, r) {
68
- const g = l("v-card-text"), y = l("v-spacer"), C = l("v-card-actions"), b = l("v-card"), h = l("v-dialog");
69
- return a(), $(h, {
73
+ }), E = { class: "close-btn" };
74
+ function F(e, t, o, s, n, i) {
75
+ const u = r("v-btn"), g = r("v-card-text"), h = r("v-spacer"), C = r("v-card-actions"), k = r("v-card"), L = r("v-dialog");
76
+ return a(), p(L, {
70
77
  "model-value": e.value,
71
78
  "max-width": "960",
72
79
  persistent: e.persistent,
73
80
  fullscreen: e.$vuetify.display.smAndDown,
74
- "onUpdate:modelValue": t[0] || (t[0] = (q) => e.$emit("close"))
81
+ class: "ff-dialog",
82
+ "onUpdate:modelValue": t[1] || (t[1] = (z) => e.$emit("close"))
75
83
  }, {
76
- default: c(() => [
77
- i(e.$slots, "card", {}, () => [
78
- p(b, { title: e.title }, {
79
- default: c(() => [
80
- p(g, null, {
81
- default: c(() => [
82
- i(e.$slots, "default")
84
+ default: l(() => [
85
+ c(e.$slots, "card", {}, () => [
86
+ _(k, { title: e.title }, {
87
+ append: l(() => [
88
+ v("div", E, [
89
+ _(u, {
90
+ variant: "text",
91
+ icon: e.mdiClose(),
92
+ onClick: t[0] || (t[0] = (z) => e.$emit("close"))
93
+ }, null, 8, ["icon"])
94
+ ])
95
+ ]),
96
+ default: l(() => [
97
+ _(g, null, {
98
+ default: l(() => [
99
+ c(e.$slots, "default")
83
100
  ]),
84
101
  _: 3
85
102
  }),
86
- e.noFooter ? v("", !0) : (a(), $(C, { key: 0 }, {
87
- default: c(() => [
88
- i(e.$slots, "left-footer"),
89
- p(y),
90
- i(e.$slots, "footer")
103
+ e.noFooter ? y("", !0) : (a(), p(C, { key: 0 }, {
104
+ default: l(() => [
105
+ c(e.$slots, "left-footer"),
106
+ _(h),
107
+ c(e.$slots, "footer")
91
108
  ]),
92
109
  _: 3
93
110
  }))
@@ -99,18 +116,83 @@ function V(e, t, n, s, o, r) {
99
116
  _: 3
100
117
  }, 8, ["model-value", "persistent", "fullscreen"]);
101
118
  }
102
- const F = /* @__PURE__ */ _(R, [["render", V]]), A = (e) => e ? e.replace(/(?:\r\n|\r|\n)/g, "<br>") : "", O = (e) => {
119
+ const W = /* @__PURE__ */ f(R, [["render", F]]), I = m({
120
+ name: "AccountAvatar",
121
+ props: {
122
+ item: {
123
+ type: Object,
124
+ required: !0
125
+ },
126
+ size: {
127
+ type: Number,
128
+ default: 32
129
+ }
130
+ }
131
+ });
132
+ function O(e, t, o, s, n, i) {
133
+ const u = r("v-avatar");
134
+ return a(), p(u, {
135
+ class: b(`ff-avatar avatar-${e.size}-${e.item.initials.length >= 3 ? "l" : "s"}`),
136
+ size: e.size
137
+ }, {
138
+ default: l(() => [
139
+ N(d(e.item.initials), 1)
140
+ ]),
141
+ _: 1
142
+ }, 8, ["class", "size"]);
143
+ }
144
+ const X = /* @__PURE__ */ f(I, [["render", O]]), M = (e) => e.surname ? `${e.name} ${e.surname}` : e.name, Z = m({
145
+ name: "UserAvatar",
146
+ props: {
147
+ user: {
148
+ type: Object,
149
+ required: !0
150
+ },
151
+ size: {
152
+ type: Number,
153
+ required: !0
154
+ },
155
+ baseUrl: {
156
+ type: String,
157
+ required: !0
158
+ }
159
+ },
160
+ setup(e) {
161
+ return { fullName: S(() => M(e.user)) };
162
+ }
163
+ }), G = { key: 1 };
164
+ function H(e, t, o, s, n, i) {
165
+ const u = r("v-img"), g = r("v-avatar");
166
+ return a(), p(g, {
167
+ color: e.user.avatar_thumb ? "light_grey_bg" : e.user.color ?? "primary",
168
+ class: b(`avatar-${e.size}-${e.user.initials.length >= 3 ? "l" : "s"}`),
169
+ size: e.size
170
+ }, {
171
+ default: l(() => [
172
+ e.user.avatar_thumb ? (a(), p(u, {
173
+ key: 0,
174
+ alt: e.fullName,
175
+ src: `${e.baseUrl}/${e.user.avatar_thumb}`
176
+ }, null, 8, ["alt", "src"])) : (a(), $("span", G, d(e.user.initials), 1))
177
+ ]),
178
+ _: 1
179
+ }, 8, ["color", "class", "size"]);
180
+ }
181
+ const Y = /* @__PURE__ */ f(Z, [["render", H]]), j = (e) => e ? e.replace(/(?:\r\n|\r|\n)/g, "<br>") : "", x = (e) => {
103
182
  let t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)"));
104
183
  return t ? decodeURIComponent(t[3]) : null;
105
- }, j = (e, t, n, s) => {
106
- let o, r;
107
- return s == null && (s = "/"), r = "", n && (o = /* @__PURE__ */ new Date(), o.setTime(o.getTime() + n * 24 * 60 * 60 * 1e3), r = "; expires=" + o.toUTCString()), document.cookie = encodeURIComponent(e) + "=" + encodeURIComponent(t) + r + "; path=" + s, !0;
184
+ }, ee = (e, t, o, s) => {
185
+ let n, i;
186
+ return s == null && (s = "/"), i = "", o && (n = /* @__PURE__ */ new Date(), n.setTime(n.getTime() + o * 24 * 60 * 60 * 1e3), i = "; expires=" + n.toUTCString()), document.cookie = encodeURIComponent(e) + "=" + encodeURIComponent(t) + i + "; path=" + s, !0;
108
187
  };
109
188
  export {
110
- F as CustomDialog,
111
- N as PageSubtitle,
112
- I as PageTitle,
113
- O as getCookie,
114
- A as nl2br,
115
- j as setCookie
189
+ X as AccountAvatar,
190
+ W as CustomDialog,
191
+ Q as PageSubtitle,
192
+ K as PageTitle,
193
+ Y as UserAvatar,
194
+ M as formatFullName,
195
+ x as getCookie,
196
+ j as nl2br,
197
+ ee as setCookie
116
198
  };
@@ -1 +1 @@
1
- (function(o,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(o=typeof globalThis<"u"?globalThis:o||self,e(o["Alytus FF"]={},o.Vue))})(this,function(o,e){"use strict";const d=e.defineComponent({name:"PageTitle",props:{title:{type:String,required:!0},description:{type:String,default:null}}}),c=(t,n)=>{const l=t.__vccOpts||t;for(const[s,r]of n)l[s]=r;return l},a={class:"mt-6 mb-3 ff-page-title"},p={class:"text-h5 ff-title"},m={key:0,class:"text-body-2 ff-description"};function f(t,n,l,s,r,i){return e.openBlock(),e.createElementBlock("div",a,[e.createElementVNode("div",null,[e.createElementVNode("span",p,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("div",m,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",null,[e.renderSlot(t.$slots,"buttons")])])}const u=c(d,[["render",f]]),_=e.defineComponent({name:"PageSubtitle",props:{subtitle:{type:String,required:!0}}}),g={class:"text-h6 font-weight-bold mt-7 mb-4"};function C(t,n,l,s,r,i){return e.openBlock(),e.createElementBlock("div",g,e.toDisplayString(t.subtitle),1)}const $=c(_,[["render",C]]),y=e.defineComponent({name:"CustomDialog",props:{value:{type:Boolean,required:!0},title:{type:String,default:null},persistent:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1}}});function k(t,n,l,s,r,i){const V=e.resolveComponent("v-card-text"),w=e.resolveComponent("v-spacer"),T=e.resolveComponent("v-card-actions"),D=e.resolveComponent("v-card"),N=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(N,{"model-value":t.value,"max-width":"960",persistent:t.persistent,fullscreen:t.$vuetify.display.smAndDown,"onUpdate:modelValue":n[0]||(n[0]=E=>t.$emit("close"))},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"card",{},()=>[e.createVNode(D,{title:t.title},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3}),t.noFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(T,{key:0},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"left-footer"),e.createVNode(w),e.renderSlot(t.$slots,"footer")]),_:3}))]),_:3},8,["title"])])]),_:3},8,["model-value","persistent","fullscreen"])}const S=c(y,[["render",k]]),h=t=>t?t.replace(/(?:\r\n|\r|\n)/g,"<br>"):"",b=t=>{let n=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},B=(t,n,l,s)=>{let r,i;return s==null&&(s="/"),i="",l&&(r=new Date,r.setTime(r.getTime()+l*24*60*60*1e3),i="; expires="+r.toUTCString()),document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(n)+i+"; path="+s,!0};o.CustomDialog=S,o.PageSubtitle=$,o.PageTitle=u,o.getCookie=b,o.nl2br=h,o.setCookie=B,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
1
+ (function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n["Alytus FF"]={},n.Vue))})(this,function(n,e){"use strict";const m=e.defineComponent({name:"PageTitle",props:{title:{type:String,required:!0},description:{type:String,default:null}}}),i=(t,o)=>{const s=t.__vccOpts||t;for(const[a,r]of o)s[a]=r;return s},f={class:"mt-6 mb-3 ff-page-title"},u={class:"text-h5 ff-title"},_={key:0,class:"text-body-2 ff-description"};function $(t,o,s,a,r,l){return e.openBlock(),e.createElementBlock("div",f,[e.createElementVNode("div",null,[e.createElementVNode("span",u,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("div",_,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",null,[e.renderSlot(t.$slots,"buttons")])])}const C=i(m,[["render",$]]),g=e.defineComponent({name:"PageSubtitle",props:{subtitle:{type:String,required:!0}}}),y={class:"text-h6 font-weight-bold mt-7 mb-4"};function k(t,o,s,a,r,l){return e.openBlock(),e.createElementBlock("div",y,e.toDisplayString(t.subtitle),1)}const h=i(g,[["render",k]]);var b="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";const B=e.defineComponent({name:"CustomDialog",methods:{mdiClose(){return b}},props:{value:{type:Boolean,required:!0},title:{type:String,default:null},persistent:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1}}}),S={class:"close-btn"};function N(t,o,s,a,r,l){const c=e.resolveComponent("v-btn"),d=e.resolveComponent("v-card-text"),F=e.resolveComponent("v-spacer"),O=e.resolveComponent("v-card-actions"),R=e.resolveComponent("v-card"),I=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(I,{"model-value":t.value,"max-width":"960",persistent:t.persistent,fullscreen:t.$vuetify.display.smAndDown,class:"ff-dialog","onUpdate:modelValue":o[1]||(o[1]=M=>t.$emit("close"))},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"card",{},()=>[e.createVNode(R,{title:t.title},{append:e.withCtx(()=>[e.createElementVNode("div",S,[e.createVNode(c,{variant:"text",icon:t.mdiClose(),onClick:o[0]||(o[0]=M=>t.$emit("close"))},null,8,["icon"])])]),default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3}),t.noFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(O,{key:0},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"left-footer"),e.createVNode(F),e.renderSlot(t.$slots,"footer")]),_:3}))]),_:3},8,["title"])])]),_:3},8,["model-value","persistent","fullscreen"])}const V=i(B,[["render",N]]),w=e.defineComponent({name:"AccountAvatar",props:{item:{type:Object,required:!0},size:{type:Number,default:32}}});function z(t,o,s,a,r,l){const c=e.resolveComponent("v-avatar");return e.openBlock(),e.createBlock(c,{class:e.normalizeClass(`ff-avatar avatar-${t.size}-${t.item.initials.length>=3?"l":"s"}`),size:t.size},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.item.initials),1)]),_:1},8,["class","size"])}const L=i(w,[["render",z]]),p=t=>t.surname?`${t.name} ${t.surname}`:t.name,A=e.defineComponent({name:"UserAvatar",props:{user:{type:Object,required:!0},size:{type:Number,required:!0},baseUrl:{type:String,required:!0}},setup(t){return{fullName:e.computed(()=>p(t.user))}}}),D={key:1};function T(t,o,s,a,r,l){const c=e.resolveComponent("v-img"),d=e.resolveComponent("v-avatar");return e.openBlock(),e.createBlock(d,{color:t.user.avatar_thumb?"light_grey_bg":t.user.color??"primary",class:e.normalizeClass(`avatar-${t.size}-${t.user.initials.length>=3?"l":"s"}`),size:t.size},{default:e.withCtx(()=>[t.user.avatar_thumb?(e.openBlock(),e.createBlock(c,{key:0,alt:t.fullName,src:`${t.baseUrl}/${t.user.avatar_thumb}`},null,8,["alt","src"])):(e.openBlock(),e.createElementBlock("span",D,e.toDisplayString(t.user.initials),1))]),_:1},8,["color","class","size"])}const U=i(A,[["render",T]]),E=t=>t?t.replace(/(?:\r\n|\r|\n)/g,"<br>"):"",q=t=>{let o=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return o?decodeURIComponent(o[3]):null},P=(t,o,s,a)=>{let r,l;return a==null&&(a="/"),l="",s&&(r=new Date,r.setTime(r.getTime()+s*24*60*60*1e3),l="; expires="+r.toUTCString()),document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(o)+l+"; path="+a,!0};n.AccountAvatar=L,n.CustomDialog=V,n.PageSubtitle=h,n.PageTitle=C,n.UserAvatar=U,n.formatFullName=p,n.getCookie=q,n.nl2br=E,n.setCookie=P,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1,24 @@
1
+ import { PropType } from 'vue';
2
+ import { IAccount } from '../../types/Account.ts';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ item: {
5
+ type: PropType<IAccount>;
6
+ required: true;
7
+ };
8
+ size: {
9
+ type: NumberConstructor;
10
+ default: number;
11
+ };
12
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
13
+ item: {
14
+ type: PropType<IAccount>;
15
+ required: true;
16
+ };
17
+ size: {
18
+ type: NumberConstructor;
19
+ default: number;
20
+ };
21
+ }>> & Readonly<{}>, {
22
+ size: number;
23
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
24
+ export default _default;
@@ -0,0 +1,32 @@
1
+ import { PropType } from 'vue';
2
+ import { IUser } from '../../types/User.ts';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ user: {
5
+ type: PropType<IUser>;
6
+ required: true;
7
+ };
8
+ size: {
9
+ type: NumberConstructor;
10
+ required: true;
11
+ };
12
+ baseUrl: {
13
+ type: StringConstructor;
14
+ required: true;
15
+ };
16
+ }>, {
17
+ fullName: import('vue').ComputedRef<string>;
18
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
19
+ user: {
20
+ type: PropType<IUser>;
21
+ required: true;
22
+ };
23
+ size: {
24
+ type: NumberConstructor;
25
+ required: true;
26
+ };
27
+ baseUrl: {
28
+ type: StringConstructor;
29
+ required: true;
30
+ };
31
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
32
+ export default _default;
@@ -15,7 +15,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
15
15
  type: BooleanConstructor;
16
16
  default: boolean;
17
17
  };
18
- }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
18
+ }>, {}, {}, {}, {
19
+ mdiClose(): string;
20
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
19
21
  value: {
20
22
  type: BooleanConstructor;
21
23
  required: true;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,12 @@
1
1
  import { default as PageTitle } from './components/Page/PageTitle.vue';
2
2
  import { default as PageSubtitle } from './components/Page/PageSubtitle.vue';
3
3
  import { default as CustomDialog } from './components/Dialog/CustomDialog.vue';
4
+ import { default as AccountAvatar } from './components/Avatar/AccountAvatar.vue';
5
+ import { default as UserAvatar } from './components/Avatar/UserAvatar.vue';
4
6
  import { nl2br } from './utils/HtmlUtil.ts';
5
7
  import { getCookie, setCookie } from './utils/CookieUtil.ts';
8
+ import { formatFullName } from './utils/StringUtil.ts';
6
9
  import { NameValuePair } from './types/Base.ts';
7
- export { PageTitle, PageSubtitle, CustomDialog, nl2br, getCookie, setCookie, NameValuePair };
10
+ import { IAccount } from './types/Account.ts';
11
+ import { IUser } from './types/User.ts';
12
+ export { PageTitle, PageSubtitle, CustomDialog, AccountAvatar, UserAvatar, nl2br, getCookie, setCookie, formatFullName, NameValuePair, IAccount, IUser };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .ff-page-title,.ff-page-subtitle{display:flex;justify-content:space-between;align-items:center}.ff-page-title .v-btn,.ff-page-subtitle .v-btn{text-transform:unset;letter-spacing:.045em}
1
+ .ff-page-title,.ff-page-subtitle{display:flex;justify-content:space-between;align-items:center}.ff-page-title .v-btn,.ff-page-subtitle .v-btn{text-transform:unset;letter-spacing:.045em}.ff-dialog.v-dialog .close-btn{margin-right:-4px}@media screen and (min-width: 600px){.ff-dialog.v-dialog .close-btn{margin-right:-12px}}.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-item{padding-left:16px;padding-right:16px}@media screen and (min-width: 600px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-item{padding-left:24px;padding-right:24px}}@media screen and (min-width: 960px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-item{padding-left:36px;padding-right:36px}}.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-text{padding-left:16px;padding-right:16px}@media screen and (min-width: 600px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-text{padding-left:24px;padding-right:24px}}@media screen and (min-width: 960px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-text{padding-left:36px;padding-right:36px}}.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-actions{padding:12px 16px 16px}@media screen and (min-width: 600px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-actions{padding-left:24px;padding-right:24px}}@media screen and (min-width: 960px){.ff-dialog.v-dialog>.v-overlay__content>.v-card>.v-card-actions{padding-left:36px;padding-right:36px}}.ff-avatar{background:linear-gradient(180deg,#3c3c3c,#4f4f4f 25%,#787878)!important;color:#fff!important}.avatar-96-s{font-size:32px!important;font-weight:500!important}.avatar-96-l{font-size:26px!important;font-weight:500!important}.avatar-32-s{font-size:14px!important;font-weight:500!important;line-height:normal!important;letter-spacing:1px}.avatar-32-l{font-size:11px!important;font-weight:500!important;line-height:normal!important;letter-spacing:1px}
@@ -0,0 +1,5 @@
1
+ export interface IAccount {
2
+ name: string;
3
+ surname: string | null;
4
+ initials: string;
5
+ }
@@ -0,0 +1,7 @@
1
+ export interface IUser {
2
+ name: string;
3
+ surname: string | null;
4
+ initials: string;
5
+ color: string;
6
+ avatar_thumb: string | null;
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare const formatFullName: (obj: {
2
+ name: string;
3
+ surname: string | null;
4
+ }) => string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "alytus-ff",
3
3
  "private": false,
4
- "version": "0.1.19",
4
+ "version": "0.1.20",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <v-avatar :class="`ff-avatar avatar-${size}-${item.initials.length >= 3 ? 'l' : 's'}`" :size="size">{{ item.initials }}</v-avatar>
3
+ </template>
4
+
5
+ <script lang="ts">
6
+ import {defineComponent, type PropType} from "vue"
7
+ import {IAccount} from "../../types/Account.ts"
8
+
9
+ export default defineComponent({
10
+ name: "AccountAvatar",
11
+ props: {
12
+ item: {
13
+ type: Object as PropType<IAccount>,
14
+ required: true
15
+ },
16
+ size: {
17
+ type: Number,
18
+ default: 32
19
+ }
20
+ }
21
+ })
22
+ </script>
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <v-avatar
3
+ :color="user.avatar_thumb ? 'light_grey_bg' : (user.color ?? 'primary')"
4
+ :class="`avatar-${size}-${user.initials.length >= 3 ? 'l' : 's'}`"
5
+ :size="size"
6
+ >
7
+ <v-img v-if="user.avatar_thumb" :alt="fullName" :src="`${baseUrl}/${user.avatar_thumb}`" />
8
+ <span v-else>{{user.initials}}</span>
9
+ </v-avatar>
10
+ </template>
11
+
12
+ <script lang="ts">
13
+ import {computed, defineComponent, type PropType} from "vue"
14
+ import {IUser} from "../../types/User.ts"
15
+ import {formatFullName} from "../../utils/StringUtil.ts";
16
+
17
+ export default defineComponent({
18
+ name: "UserAvatar",
19
+ props: {
20
+ user: {
21
+ type: Object as PropType<IUser>,
22
+ required: true
23
+ },
24
+ size: {
25
+ type: Number,
26
+ required: true
27
+ },
28
+ baseUrl: {
29
+ type: String,
30
+ required: true
31
+ }
32
+ },
33
+ setup(props) {
34
+ const fullName = computed(() => formatFullName(props.user))
35
+ return {fullName}
36
+ }
37
+ })
38
+ </script>
@@ -1,7 +1,12 @@
1
1
  <template>
2
- <v-dialog :model-value="value" max-width="960" :persistent="persistent" :fullscreen="$vuetify.display.smAndDown" @update:modelValue="$emit('close')">
2
+ <v-dialog :model-value="value" max-width="960" :persistent="persistent" :fullscreen="$vuetify.display.smAndDown" class="ff-dialog" @update:modelValue="$emit('close')">
3
3
  <slot name="card">
4
4
  <v-card :title="title">
5
+ <template v-slot:append>
6
+ <div class="close-btn">
7
+ <v-btn variant="text" :icon="mdiClose()" @click="$emit('close')" />
8
+ </div>
9
+ </template>
5
10
  <v-card-text>
6
11
  <slot></slot>
7
12
  </v-card-text>
@@ -17,9 +22,15 @@
17
22
 
18
23
  <script lang="ts">
19
24
  import {defineComponent} from "vue";
25
+ import {mdiClose} from "@mdi/js";
20
26
 
21
27
  export default defineComponent({
22
28
  name: "CustomDialog",
29
+ methods: {
30
+ mdiClose() {
31
+ return mdiClose
32
+ }
33
+ },
23
34
  props: {
24
35
  value: {
25
36
  type: Boolean,