@bildvitta/quasar-ui-asteroid 2.12.2 → 2.14.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.
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * @bildvitta/quasar-ui-asteroid v3.0.0-alpha.2
3
+ * (c) 2022 Bild & Vitta <systemteam@bild.com.br>
4
+ * Released under the MIT License.
5
+ */
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("quasar"),require("autonumeric"),require("fuse.js"),require("lodash-es"),require("signature_pad"),require("sortablejs")):"function"==typeof define&&define.amd?define(["vue","quasar","autonumeric","fuse.js","lodash-es","signature_pad","sortablejs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["{{ umdExportName }}"]=t(e.Vue,e.Quasar,e.AutoNumeric,e.Fuse,e._,e.SignaturePad,e.Sortable)}(this,(function(e,t,o,s,a,l,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(o),c=n(s),d=n(l),u=n(r);const p={good:{color:"warning",label:"Good",progress:.5,textClass:"text-warning"},strong:{color:"positive",label:"Strong",progress:.75,textClass:"text-positive"},veryStrong:{color:"positive",label:"Very strong",progress:1,textClass:"text-positive"},veryWeak:{color:"negative",label:"Very weak",progress:0,textClass:"text-negative"},weak:{color:"warning",label:"Weak",progress:.25,textClass:"text-warning"}};var m={props:{levels:{default:()=>p,type:Object},minlength:{default:8,type:[Number,String]},specials:{default:/[!@#$%^&*()_+\-=[\]{}|;:'",<.>/?`~]/g,type:RegExp},trackColor:{default:"blue-grey-1",type:String},useLowercase:{default:!0,type:Boolean},useNumbers:{default:!0,type:Boolean},useSpecial:{default:!0,type:Boolean},useUppercase:{default:!0,type:Boolean}}},h={computed:{$_isSmall(){return this.$q.screen.xs},$_isMedium(){return this.$q.screen.sm},$_isLarge(){return this.$q.screen.gt.sm},$_untilMedium(){return this.$q.screen.lt.sm},$_untilLarge(){return this.$q.screen.lt.md},$_isMobile(){return this.$q.platform.is.mobile}}},f={name:"QasActions",mixins:[h],props:{align:{default:"end",type:String,validator:e=>["start","around","between","center","end"].includes(e)},gutter:{default:"md",type:String,validator:e=>["xs","sm","md","lg","xl"].includes(e)}},computed:{classes(){return[`justify-${this.align}`,`q-col-gutter-${this.gutter}`,this.$_isSmall?"column reverse":"row"]}}};const g={class:"col-12 col-sm-auto"},v={class:"col-12 col-sm-auto"};f.render=function(t,o,s,a,l,r){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(r.classes)},[e.createElementVNode("div",g,[e.renderSlot(t.$slots,"secondary")]),e.createElementVNode("div",v,[e.renderSlot(t.$slots,"primary")])],2)},f.__file="src/components/actions/QasActions.vue";var y={name:"QasBtn",mixins:[h],inheritAttrs:!1,props:{hideLabelOnSmallScreen:{type:Boolean}},computed:{attributes(){const{label:e,...t}=this.$attrs;return t},hasLabel(){return!(!this.$attrs.label&&!this.$slots.default)},showLabel(){return this.hasLabel&&!(this.hideLabelOnSmallScreen&&this.$_isSmall)},slots(){const{default:e,...t}=this.$slots;return t}}};y.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-btn");return e.openBlock(),e.createBlock(n,e.mergeProps({color:"primary","no-caps":"",unelevated:""},r.attributes),e.createSlots({default:e.withCtx((()=>[r.showLabel?e.renderSlot(t.$slots,"default",{key:0},(()=>[e.createTextVNode(e.toDisplayString(t.$attrs.label),1)])):e.createCommentVNode("v-if",!0)])),_:2},[e.renderList(r.slots,((o,s)=>({name:s,fn:e.withCtx((o=>[e.renderSlot(t.$slots,s,e.normalizeProps(e.guardReactiveProps(o||{})))]))})))]),1040)},y.__file="src/components/btn/QasBtn.vue";var C={name:"QasActionsMenu",components:{QasBtn:y},props:{icon:{default:"o_settings",type:String},label:{default:"Configurações",type:String},list:{default:()=>({}),type:Object}},methods:{onClick(e){if("function"==typeof e.handler){const{handler:t,...o}=e;e.handler(o)}}}};const b={class:"flex items-center justify-center q-gutter-x-md"};function k(e){return e.map((e=>e.children&&"string"!=typeof e.children?Array.isArray(e.children)?k(e.children):e.children.default?k(e.children.default()):void 0:e.children||"")).join("")}C.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-icon"),i=e.resolveComponent("q-item-section"),c=e.resolveComponent("q-item"),d=e.resolveComponent("q-list"),u=e.resolveComponent("q-menu"),p=e.resolveComponent("qas-btn");return e.openBlock(),e.createBlock(p,{class:"qas-actions-menu",color:"primary","hide-label-on-small-screen":"",icon:s.icon,label:s.label,outline:""},{default:e.withCtx((()=>[e.createVNode(u,{class:"qas-actions-menu__menu"},{default:e.withCtx((()=>[e.createVNode(d,{class:"qas-actions-menu__list",separator:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.list,((o,s)=>e.renderSlot(t.$slots,s,{item:o},(()=>[(e.openBlock(),e.createBlock(c,e.mergeProps({key:s,class:"text-bold text-primary",clickable:""},o.props,{onClick:e=>r.onClick(o)}),{default:e.withCtx((()=>[e.createVNode(i,null,{default:e.withCtx((()=>[e.createElementVNode("div",b,[e.createVNode(n,{name:o.icon,size:o.iconSize},null,8,["name","size"]),e.createElementVNode("div",null,e.toDisplayString(o.label),1)])])),_:2},1024)])),_:2},1040,["onClick"]))])))),256))])),_:3})])),_:3})])),_:3},8,["icon","label"])},C.__file="src/components/actions-menu/QasActionsMenu.vue";var x={name:"QasBreakline",props:{split:{default:"\n",type:String},tag:{default:"div",type:String},text:{default:"",type:String}},computed:{lines(){return(this.text||k(this.$slots.default())).split(this.split)}}};x.render=function(t,o,s,a,l,r){return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.lines,((o,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.tag),e.mergeProps({key:a},t.$attrs),{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(o),1)])),_:2},1040)))),128)},x.__file="src/components/breakline/QasBreakline.vue";var V={name:"QasAlert",components:{QasBreakline:x,QasBtn:y},props:{color:{default:"primary",type:String},modelValue:{default:!0,type:Boolean},text:{default:"",type:String},title:{default:"",type:String}},emits:["update:modelValue"],data:()=>({model:!0}),computed:{classes(){return{[`text-${this.color}`]:!0,[`bg-${this.color}-contrast`]:["primary","secondary"].includes(this.color)}}},watch:{modelValue:{handler(e){this.model=e},immediate:!0}},methods:{close(){this.$emit("update:modelValue",!1)}}};const S={class:"q-gutter-md q-mr-lg"},B={key:0,class:"text-bold text-h5"};V.render=function(t,o,s,a,l,r){const n=e.resolveComponent("qas-btn"),i=e.resolveComponent("qas-breakline");return l.model?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["q-pa-lg qas-alert relative-position rounded-borders",r.classes])},[e.createVNode(n,{class:"absolute-top-right q-mr-md q-mt-sm",color:s.color,dense:"",flat:"",icon:"o_close",rounded:"",onClick:r.close},null,8,["color","onClick"]),e.createElementVNode("div",S,[e.renderSlot(t.$slots,"header",{},(()=>[s.title?(e.openBlock(),e.createElementBlock("h5",B,e.toDisplayString(s.title),1)):e.createCommentVNode("v-if",!0)])),e.renderSlot(t.$slots,"default",{},(()=>[e.createVNode(i,{tag:"p",text:s.text},null,8,["text"])]))])],2)):e.createCommentVNode("v-if",!0)},V.__file="src/components/alert/QasAlert.vue";var _={props:{apps:{default:()=>[],type:Array},brand:{default:"",type:String},isAuth:{type:Boolean},notifications:{default:()=>({}),type:Object},title:{default:"",required:!0,type:String},user:{default:()=>({}),require:!0,type:Object}},emits:["sign-out","toggle-menu"],data:()=>({menuDrawer:!0}),computed:{developmentBadgeLabel(){const e={develop:"Develop",feature:"Feature",localhost:"Local",release:"Release"};if(process.env.DEV)return e.localhost;const t=Object.keys(e).find((e=>location.hostname.includes(e)));return t?e[t]:""},hasApps(){return!!this.apps.length},hasDevelopmentBadge(){return!!this.developmentBadgeLabel},hasNotifications(){return!!Object.keys(this.notifications).length}},methods:{goToProfile(){return this.$router.push(this.user.to)},signOut(){this.$emit("sign-out")},toggleMenuDrawer(){this.$emit("toggle-menu")}}};const w=["alt","src"],N={key:1,class:"text-bold text-primary-contrast text-subtitle1 text-uppercase"},q={class:"items-center no-wrap q-gutter-md row"},$={key:0},Q=["title"],E={class:"q-px-sm qas-toolbar__user-data qs-lh-lg text-caption"},L={class:"ellipsis"},P={class:"ellipsis text-bold"},O={class:"qas-toolbar__user-menu"},D={class:"q-pa-lg text-center"},I={class:"ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1"},A={class:"ellipsis q-mt-xs text-caption"},M={class:"q-mt-sm"},z={class:"q-mt-sm"};_.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-ajax-bar"),i=e.resolveComponent("q-btn"),c=e.resolveComponent("q-badge"),d=e.resolveComponent("router-link"),u=e.resolveComponent("q-toolbar-title"),p=e.resolveComponent("qas-btn"),m=e.resolveComponent("qas-apps-menu"),h=e.resolveComponent("qas-avatar"),f=e.resolveComponent("q-menu"),g=e.resolveComponent("q-toolbar"),v=e.resolveDirective("close-popup");return e.openBlock(),e.createBlock(g,{class:"qas-toolbar"},{default:e.withCtx((()=>[e.createVNode(n,{color:"white",position:"top",size:"2px"}),e.createVNode(i,{dense:"",flat:"",icon:"o_menu",round:"",onClick:r.toggleMenuDrawer},null,8,["onClick"]),e.createVNode(u,{class:"flex"},{default:e.withCtx((()=>[e.createVNode(d,{class:"cursor-pointer text-no-decoration",to:"/"},{default:e.withCtx((()=>[s.brand?(e.openBlock(),e.createElementBlock("img",{key:0,alt:s.title,class:"q-mr-sm qas-toolbar__brand",src:s.brand},null,8,w)):e.createCommentVNode("v-if",!0),s.title?(e.openBlock(),e.createElementBlock("span",N,e.toDisplayString(s.title),1)):e.createCommentVNode("v-if",!0),r.hasDevelopmentBadge?(e.openBlock(),e.createBlock(c,{key:2,align:"middle",class:"q-ml-sm",color:"negative",label:r.developmentBadgeLabel},null,8,["label"])):e.createCommentVNode("v-if",!0)])),_:1})])),_:1}),e.createElementVNode("div",q,[e.createCommentVNode(" TODO: Notificações. "),r.hasNotifications?(e.openBlock(),e.createElementBlock("div",$,[e.createVNode(p,{class:"q-mr-md",dense:"",icon:"o_notifications",round:""},{default:e.withCtx((()=>[s.notifications?(e.openBlock(),e.createBlock(c,{key:0,color:"red",floating:""},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(s.notifications.count),1)])),_:1})):e.createCommentVNode("v-if",!0)])),_:1})])):e.createCommentVNode("v-if",!0),r.hasApps?(e.openBlock(),e.createBlock(m,{key:1,apps:s.apps},null,8,["apps"])):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"tools"),s.isAuth?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cursor-pointer items-center q-mr-sm qas-toolbar__user rounded-borders row",title:s.user.name||s.user.givenName},[e.createVNode(h,{class:"rounded-borders-left",color:"white",dark:"",image:s.user.photo,rounded:"",size:"42px","text-color":"primary",title:s.user.name||s.user.givenName},null,8,["image","title"]),e.createElementVNode("div",E,[e.createElementVNode("div",L,e.toDisplayString(s.user.name||s.user.givenName),1),e.createElementVNode("div",P,e.toDisplayString(s.user.email),1)]),e.createVNode(f,{anchor:"bottom end","max-height":"400px",offset:[0,5],self:"top end"},{default:e.withCtx((()=>[e.createElementVNode("div",O,[e.createElementVNode("div",D,[e.createElementVNode("button",{class:"unset",onClick:o[0]||(o[0]=(...e)=>r.goToProfile&&r.goToProfile(...e))},[e.createVNode(h,{image:s.user.photo,size:"145px",title:s.user.name||s.user.givenName},null,8,["image","title"])]),e.createElementVNode("div",I,e.toDisplayString(s.user.name||s.user.givenName),1),e.createElementVNode("div",A,e.toDisplayString(s.user.email),1),e.createElementVNode("div",M,[e.createVNode(p,{flat:"",icon:"o_edit",label:"Editar",to:s.user.to},null,8,["to"])]),e.createElementVNode("div",z,[e.withDirectives(e.createVNode(p,{class:"q-px-lg q-py-xs",dense:"",icon:"o_exit_to_app",label:"Sair",outline:"",onClick:r.signOut},null,8,["onClick"]),[[v]])]),e.renderSlot(t.$slots,"user",{user:s.user})])])])),_:3})],8,Q)):e.createCommentVNode("v-if",!0)])])),_:3})},_.__file="src/components/app-bar/QasAppBar.vue";var j={mixins:[h],props:{itemClass:{default:"",type:[Array,Object,String]},items:{default:()=>[],type:Array},modelValue:{default:!0,type:Boolean}},emits:["update:modelValue"],data:()=>({miniMode:!1}),computed:{activeHeaderClass:()=>"qas-app-menu__header--active",activeItemClass:()=>"bg-primary text-primary-contrast",model:{get(){return this.modelValue},set(e){return this.$emit("update:modelValue",e)}}},methods:{beforeHide(){this.$_isLarge&&(this.model=!0,this.miniMode=!this.miniMode)},hasChildren:({children:e})=>!!e?.length,shouldExpand({children:e,to:t}){return!!e?.length&&this.$route.matched.some((e=>e.path===t.path))}}};j.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-icon"),i=e.resolveComponent("q-item-section"),c=e.resolveComponent("q-item-label"),d=e.resolveComponent("q-item"),u=e.resolveComponent("q-expansion-item"),p=e.resolveComponent("q-list"),m=e.resolveComponent("q-drawer"),h=e.resolveDirective("ripple");return e.openBlock(),e.createBlock(m,{modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e),class:"bg-primary-contrast qas-app-menu",mini:l.miniMode,width:230,onBeforeHide:r.beforeHide},{default:e.withCtx((()=>[e.createVNode(p,{class:"text-primary",padding:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,((t,o)=>(e.openBlock(),e.createElementBlock("div",{key:o},[r.hasChildren(t)?(e.openBlock(),e.createBlock(u,{key:0,"active-class":r.activeHeaderClass,"default-opened":r.shouldExpand(t),"expand-icon":"o_keyboard_arrow_down","expand-separator":"",icon:t.icon,label:t.label,to:t.to},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.children,((t,o)=>e.withDirectives((e.openBlock(),e.createBlock(d,{key:o,"active-class":r.activeItemClass,clickable:"",to:t.to},{default:e.withCtx((()=>[t.icon?(e.openBlock(),e.createBlock(i,{key:0,avatar:""},{default:e.withCtx((()=>[e.createVNode(n,{name:t.icon},null,8,["name"])])),_:2},1024)):e.createCommentVNode("v-if",!0),e.createVNode(i,null,{default:e.withCtx((()=>[e.createVNode(c,null,{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(t.label),1)])),_:2},1024)])),_:2},1024)])),_:2},1032,["active-class","to"])),[[h]]))),128))])),_:2},1032,["active-class","default-opened","icon","label","to"])):e.withDirectives((e.openBlock(),e.createBlock(d,{key:o,"active-class":r.activeItemClass,clickable:"",to:t.to},{default:e.withCtx((()=>[t.icon?(e.openBlock(),e.createBlock(i,{key:0,avatar:""},{default:e.withCtx((()=>[e.createVNode(n,{name:t.icon},null,8,["name"])])),_:2},1024)):e.createCommentVNode("v-if",!0),e.createVNode(i,null,{default:e.withCtx((()=>[e.createVNode(c,null,{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(t.label),1)])),_:2},1024)])),_:2},1024)])),_:2},1032,["active-class","to"])),[[h]])])))),128))])),_:1})])),_:1},8,["modelValue","mini","onBeforeHide"])},j.__file="src/components/app-menu/QasAppMenu.vue";var T={props:{apps:{default:()=>[],type:Array}}};const R={class:"bg-white q-col-gutter-sm q-pa-sm row"},F={class:"q-mt-xs"};T.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-img"),i=e.resolveComponent("q-btn"),c=e.resolveComponent("q-popup-proxy"),d=e.resolveComponent("qas-btn");return e.openBlock(),e.createBlock(d,{dense:"",icon:"o_apps",round:""},{default:e.withCtx((()=>[e.createVNode(c,{anchor:"bottom middle","max-width":"400px",self:"top middle"},{default:e.withCtx((()=>[e.createElementVNode("div",R,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.apps,((t,o)=>(e.openBlock(),e.createElementBlock("div",{key:o,class:"col-6 col-sm-4"},[e.createVNode(i,{class:"full-width q-pa-sm",flat:"",href:t.href,"no-caps":"",type:"a"},{default:e.withCtx((()=>[e.createVNode(n,{alt:t.label,class:"rounded-borders",src:t.image},null,8,["alt","src"]),e.createElementVNode("div",F,e.toDisplayString(t.label),1)])),_:2},1032,["href"])])))),128))])])),_:1})])),_:1})},T.__file="src/components/apps-menu/QasAppsMenu.vue";var K={name:"QasAvatar",props:{color:{default:"primary",type:String},dark:{type:Boolean},icon:{default:"o_error",type:String},image:{default:"",type:String},textColor:{default:"",type:String},title:{default:"",type:String}},data:()=>({hasImageError:!1}),computed:{avatarClass(){if(this.hasImage)return null;const e=this.textColor?this.textColor:this.contrastColor;return[this.dark?`bg-${this.color} text-${e}`:`bg-${e} text-${this.color}`]},contrastColor(){return`${this.color}-contrast`},firstLetter(){return this.title[0].toUpperCase()},hasImage(){return!this.hasImageError&&!!this.image},hasTitle(){return!!this.title}},watch:{image(){this.hasImageError=!1}},methods:{onImageLoadedError(){this.hasImageError=!0}}};K.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-img"),i=e.resolveComponent("q-icon"),c=e.resolveComponent("q-avatar");return e.openBlock(),e.createBlock(c,{class:e.normalizeClass(["text-bold",r.avatarClass]),rounded:""},{default:e.withCtx((()=>[r.hasImage?(e.openBlock(),e.createBlock(n,{key:0,alt:s.title,ratio:1,"spinner-color":"primary","spinner-size":"16px",src:s.image,onError:r.onImageLoadedError},null,8,["alt","src","onError"])):r.hasTitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(r.firstLetter),1)],2112)):(e.openBlock(),e.createBlock(i,{key:2,name:s.icon},null,8,["name"]))])),_:1},8,["class"])},K.__file="src/components/avatar/QasAvatar.vue";var U={name:"QasBox",props:{outlined:{type:Boolean},unelevated:{type:Boolean}},computed:{boxClass(){return{"border-primary-contrast":this.outlined,"shadow-primary":!this.unelevated}}}};U.render=function(t,o,s,a,l,r){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["bg-white q-px-md q-py-lg rounded-borders",r.boxClass])},[e.renderSlot(t.$slots,"default")],2)},U.__file="src/components/box/QasBox.vue";var W={name:"QasActionsMenu",props:{bgImagePosition:{type:String,default:"center"},formMode:{type:Boolean},gutter:{type:String,default:"sm"},images:{default:()=>[],type:Array},outlined:{type:Boolean},result:{default:()=>({}),type:Object},useHeader:{type:Boolean}},data:()=>({slideImage:0}),computed:{bgImagePositionClass(){return`bg-position-${this.bgImagePosition}`},cardClasses(){return this.formMode?"bg-white border-primary no-shadow":"box-shadow-1"},gutterClass(){return`q-col-gutter-${this.gutter}`},hasActionsSlot(){return!!this.$slots.actions},hasImages(){return this.images.length>1},imagesLength(){return this.images?.length},imagesList(){return this.imagesLength&&this.images.slice(0,3)}},methods:{getNavigationIcon:(e,t)=>e?"o_radio_button_checked":t.icon}};const H={class:"col-12 col-lg-3 col-md-4 col-sm-6"},G={key:0,class:"overflow-hidden relative-position w-full"},Z={class:"absolute-top flex items-center q-pa-md"},J={key:1,class:"border-primary-contrast border-top overflow-hidden row"};W.render=function(t,o,s,a,l,r){const n=e.resolveComponent("qas-btn"),i=e.resolveComponent("q-carousel-slide"),c=e.resolveComponent("q-carousel"),d=e.resolveComponent("q-card-section"),u=e.resolveComponent("q-card");return e.openBlock(),e.createElementBlock("div",H,[e.createVNode(u,{class:e.normalizeClass(["border-radius-lg column full-height",r.cardClasses])},{default:e.withCtx((()=>[s.useHeader?(e.openBlock(),e.createElementBlock("div",G,[e.renderSlot(t.$slots,"header",{},(()=>[e.createVNode(c,{modelValue:l.slideImage,"onUpdate:modelValue":o[0]||(o[0]=e=>l.slideImage=e),animated:"",class:"cursor-pointer",height:"205px",infinite:"",navigation:r.hasImages,"navigation-icon":"o_fiber_manual_record",swipeable:""},{"navigation-icon":e.withCtx((({active:t,btnProps:o,onClick:s})=>[e.createVNode(n,{color:"white",dense:"",flat:"",icon:r.getNavigationIcon(t,o),round:"",size:"sm",onClick:s},null,8,["icon","onClick"])])),default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.imagesList,((t,o)=>(e.openBlock(),e.createBlock(i,{key:o,class:e.normalizeClass(["bg-no-repeat",r.bgImagePositionClass]),"img-src":t,name:o},null,8,["class","img-src","name"])))),128))])),_:1},8,["modelValue","navigation"]),e.createElementVNode("div",Z,[e.renderSlot(t.$slots,"carousel-header")])]))])):e.createCommentVNode("v-if",!0),e.createVNode(d,{class:"col-grow column justify-between w-full"},{default:e.withCtx((()=>[e.createElementVNode("div",{class:e.normalizeClass(["w-full",r.gutterClass])},[e.renderSlot(t.$slots,"default")],2)])),_:3}),r.hasActionsSlot?(e.openBlock(),e.createElementBlock("div",J,[e.renderSlot(t.$slots,"actions")])):e.createCommentVNode("v-if",!0)])),_:3},8,["class"])])},W.__file="src/components/card/QasCard.vue";var X={name:"QasCopy",props:{icon:{default:"o_file_copy",type:String},size:{default:"xs",type:String},text:{required:!0,type:String}},data:()=>({isLoading:!1}),methods:{async copy(){this.isLoading=!0;try{await t.copyToClipboard(this.text),this.$qas.success("Copiado!",this.text)}catch(e){this.$qas.error("Não foi possível copiar.",this.text)}finally{setTimeout((()=>{this.isLoading=!1}),500)}}}};const Y=e.createTextVNode("Copiar");X.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-tooltip"),i=e.resolveComponent("qas-btn");return e.openBlock(),e.createElementBlock("span",null,[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(s.text),1)])),e.createVNode(i,{class:"q-ml-xs",color:"grey-5",flat:"",icon:s.icon,loading:l.isLoading,round:"",size:s.size,onClick:r.copy},{default:e.withCtx((()=>[e.createVNode(n,null,{default:e.withCtx((()=>[Y])),_:1})])),_:1},8,["icon","loading","size","onClick"])])},X.__file="src/components/copy/QasCopy.vue";var ee={name:"QasDebugger",props:{inspect:{default:()=>[],required:!0,type:Array}}};const te={class:"bg-grey-3 q-my-md q-pa-md rounded-borders"},oe=e.createElementVNode("summary",null,"Debugger",-1),se={class:"row"};ee.render=function(t,o,s,a,l,r){return e.openBlock(),e.createElementBlock("details",te,[oe,e.createElementVNode("div",se,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.inspect,((t,o)=>(e.openBlock(),e.createElementBlock("pre",{key:o,class:"col q-pa-sm scroll",style:{"max-height":"300px"}},e.toDisplayString(t),1)))),128))])])},ee.__file="src/components/debugger/QasDebugger.vue";var ae={name:"QasDialog",components:{QasBtn:y,QasActions:f},mixins:[h],props:{btnActionsProps:{default:()=>({}),type:Object},cancel:{default:()=>({}),type:[Object,Boolean]},card:{default:()=>({}),type:Object},cardProps:{default:()=>({}),type:Object},maxWidth:{default:"",type:String},minWidth:{default:"",type:String},ok:{default:()=>({}),type:[Object,Boolean]},persistent:{default:!0,type:Boolean},useForm:{type:Boolean},modelValue:{type:Boolean},usePlugin:{type:Boolean}},emits:["update:modelValue","validate","ok","hide","update:open"],computed:{defaultCancel(){return{...this.cancel?.events,label:"Cancelar",outline:!0,...this.cancel?.props}},defaultOk(){return{...this.ok?.events,label:"Ok",type:this.ok?.props?.type||this.useForm?"submit":"button",...this.ok?.props}},style(){return{maxWidth:this.maxWidth||(this.$_isSmall?"":"600px"),minWidth:this.minWidth||(this.$_isSmall?"":"400px")}},componentTag(){return this.useForm?"q-form":"div"},dialogProps(){return{...!this.usePlugin&&{modelValue:this.modelValue},...this.$attrs}}},methods:{async submitHandler(){this.useForm&&this.$emit("validate",await this.$refs.form.validate())},show(){this.$refs.dialog.show()},hide(){this.$refs.dialog.hide()},onDialogHide(){this.$emit("hide")},updateModelValue(e){this.$emit("update:modelValue",e)}}};const le={class:"text-bold text-h6"},re={key:0};ae.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-card-section"),i=e.resolveComponent("qas-btn"),c=e.resolveComponent("qas-actions"),d=e.resolveComponent("q-card"),u=e.resolveComponent("q-dialog"),p=e.resolveDirective("close-popup");return e.openBlock(),e.createBlock(u,e.mergeProps({ref:"dialog",persistent:s.persistent},r.dialogProps,{onHide:r.onDialogHide,"onUpdate:modelValue":r.updateModelValue}),{default:e.withCtx((()=>[e.createVNode(d,e.mergeProps(s.cardProps,{class:"q-pa-sm",style:r.style}),{default:e.withCtx((()=>[e.createVNode(n,null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"header",{},(()=>[e.createElementVNode("div",le,e.toDisplayString(s.card.title),1)]))])),_:3}),e.createVNode(n,{class:"q-pt-none"},{default:e.withCtx((()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.componentTag),{ref:"form"},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"description",{},(()=>[s.card.description?(e.openBlock(),e.createElementBlock("div",re,e.toDisplayString(s.card.description),1)):e.createCommentVNode("v-if",!0)]))])),_:3},512))])),_:3}),e.createVNode(n,null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"actions",{},(()=>[e.createVNode(c,e.normalizeProps(e.guardReactiveProps(s.btnActionsProps)),{primary:e.withCtx((()=>[s.ok?e.withDirectives((e.openBlock(),e.createBlock(i,e.mergeProps({key:0,class:"full-width"},r.defaultOk,{onClick:r.submitHandler}),null,16,["onClick"])),[[p,!s.useForm]]):e.createCommentVNode("v-if",!0)])),secondary:e.withCtx((()=>[s.cancel?e.withDirectives((e.openBlock(),e.createBlock(i,e.mergeProps({key:0,class:"full-width"},r.defaultCancel),null,16)),[[p]]):e.createCommentVNode("v-if",!0)])),_:1},16)]))])),_:3})])),_:3},16,["style"])])),_:3},16,["persistent","onHide","onUpdate:modelValue"])},ae.__file="src/components/dialog/QasDialog.vue";var ne={name:"QasInput",props:{modelValue:{default:"",type:String}},emits:["update:modelValue"],computed:{hasError(){return this.inputReference.hasError},inputReference(){return this.$refs.input},mask(){const{mask:e}=this.$attrs;return Object.prototype.hasOwnProperty.call(this.masks,e)?this.masks[e]():e},masks(){return{"company-document":()=>"##.###.###/####-##",document:()=>this.toggleMask("###.###.###-###","##.###.###/####-##"),"personal-document":()=>"###.###.###-##",phone:()=>this.toggleMask("(##) ####-#####","(##) #####-####"),"postal-code":()=>"#####-###"}},model:{get(){return this.modelValue},set(e){return this.$emit("update:modelValue",e)}}},watch:{mask(){const e=this.inputReference.$el?.querySelector("input");requestAnimationFrame((()=>{e.selectionStart=e.value?e.value.length:""}))}},methods:{focus(){return this.inputReference.focus()},resetValidation(){return this.inputReference.resetValidation()},toggleMask(e,t){const o=e.split("#").length-2;return this.modelValue?.length>o?t:e},validate(e){return this.inputReference.validate(e)}}};ne.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-input");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(n,e.mergeProps({ref:"input",modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e),"bottom-slots":""},t.$attrs,{mask:r.mask,"unmasked-value":""}),e.createSlots({_:2},[e.renderList(t.$slots,((o,s)=>({name:s,fn:e.withCtx((o=>[e.renderSlot(t.$slots,s,e.normalizeProps(e.guardReactiveProps(o||{})))]))})))]),1040,["modelValue","mask"])])},ne.__file="src/components/input/QasInput.vue";var ie={name:"QasLabel",props:{count:{default:0,type:[Number,String]},label:{default:"",type:String},margin:{default:"sm",type:String}},computed:{labelClass(){return`q-mb-${this.margin}`},labelWithSuffix(){return e=this.label,(t=parseFloat(this.count))?`${e} (${t})`:e;var e,t}}};ie.render=function(t,o,s,a,l,r){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["text-bold text-subtitle2",r.labelClass])},[e.renderSlot(t.$slots,"default",{labelWithSuffix:r.labelWithSuffix},(()=>[e.createTextVNode(e.toDisplayString(r.labelWithSuffix),1)]))],2)},ie.__file="src/components/label/QasLabel.vue";var ce={name:"QasListItems",components:{QasBtn:y},props:{iconProps:{default:()=>({color:"primary",name:"o_chevron_right"}),type:Object},list:{default:()=>[],type:Array},redirectKey:{default:"uuid",type:String},redirectOnIcon:{default:!0,type:Boolean},to:{default:()=>({}),type:Object},useSectionActions:{default:!0,type:Boolean}},methods:{getRedirectPayload(e){return{params:{[this.redirectKey]:e[this.redirectKey]},...this.to}},redirect(e){return this.redirectOnIcon?void 0:this.getRedirectPayload(e)}}};const de={class:"qas-list-items shadow-primary"};ce.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-item-section"),i=e.resolveComponent("q-icon"),c=e.resolveComponent("qas-btn"),d=e.resolveComponent("q-item"),u=e.resolveComponent("q-list"),p=e.resolveDirective("ripple");return e.openBlock(),e.createElementBlock("div",de,[e.createVNode(u,{bordered:"",class:"rounded-borders",separator:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.list,((o,a)=>e.withDirectives((e.openBlock(),e.createBlock(d,{key:a,clickable:!s.redirectOnIcon,to:r.redirect(o)},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item",{index:a,item:o},(()=>[e.createVNode(n,null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item-section-left",{index:a,item:o})])),_:2},1024),s.useSectionActions?(e.openBlock(),e.createBlock(n,{key:0,side:""},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item-section-side",{index:a,item:o},(()=>[e.createVNode(c,{flat:"",round:"",to:r.getRedirectPayload(o)},{default:e.withCtx((()=>[e.createVNode(i,e.normalizeProps(e.guardReactiveProps(s.iconProps)),null,16)])),_:2},1032,["to"])]))])),_:2},1024)):e.createCommentVNode("v-if",!0)]))])),_:2},1032,["clickable","to"])),[[p]]))),128))])),_:3})])},ce.__file="src/components/list-items/QasListItems.vue";const ue={decimal:"commaDecimalCharDotSeparator",integer:["commaDecimalCharDotSeparator","integer"],money:"Brazilian",percent:"percentageEU2dec"};var pe={name:"QasNumericInput",props:{allowNegative:{default:!0,type:Boolean},allowPositive:{default:!0,type:Boolean},autonumericProps:{default:()=>({}),type:Object},decimalPlaces:{default:2,type:Number},mode:{default:"integer",type:String,validator:e=>["integer","decimal","percent","money"].includes(e)},modelValue:{default:"",validator:e=>"number"==typeof e||"string"==typeof e||""===e||null===e},preset:{default:!1,type:[Boolean,String]}},emits:["update:modelValue"],data:()=>({autoNumeric:null}),computed:{defaultMode(){return ue[this.mode]},model:{get(){return this.modelValue},set(){this.$emit("update:modelValue",this.autoNumeric.getNumber())}}},async created(){const e=i.default.getPredefinedOptions();let t=this.preset||this.defaultMode;Array.isArray(t)||(t=[t]);const o={};for(const s of t)Object.assign(o,e[s]);this.allowNegative||(o.minimumValue=0),this.allowPositive||(o.maximumValue=0),"integer"!==this.mode&&(o.decimalPlaces=this.decimalPlaces),Object.assign(o,this.autonumericProps),this.$nextTick((()=>{this.$refs.input.value=this.modelValue,this.autoNumeric=new i.default(this.$refs.input,o)}))},beforeUnmount(){this.autoNumeric.remove()}};const me=["id","model-value","onInput"];pe.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-field");return e.openBlock(),e.createBlock(n,{modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e)},{control:e.withCtx((({emitValue:t,floatingLabel:o,id:s,value:a})=>[e.withDirectives(e.createElementVNode("input",{id:s,ref:"input",class:"q-field__input","model-value":a,onInput:e=>t(e.target.value)},null,40,me),[[e.vShow,o]])])),_:1},8,["modelValue"])},pe.__file="src/components/numeric-input/QasNumericInput.vue";var he={name:"QasPasswordStrengthChecker",mixins:[m],props:{modelValue:{default:!1,type:Boolean},password:{default:"",type:String}},emits:["update:model-value"],computed:{length(){return this.password.length},level(){return this.levelsValues[this.score]},levelsValues(){return Object.values(this.levels)},score(){let e=0;return this.length>=parseInt(this.minlength)&&(e+=this.useLowercase?this.password.match(/[a-z]/g)?1:0:1,e+=this.useNumbers?this.password.match(/[0-9]/g)?1:0:1,e+=this.useSpecial?this.password.match(this.specials)?1:0:1,e+=this.useUppercase?this.password.match(/[A-Z]/g)?1:0:1),e}},watch:{password(){this.emitValue()}},created(){this.emitValue()},methods:{emitValue(){this.$emit("update:model-value",4===this.score)}}};const fe={key:0};he.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-linear-progress");return r.length?(e.openBlock(),e.createElementBlock("div",fe,[e.renderSlot(t.$slots,"default",{level:r.level},(()=>[e.createVNode(n,{color:r.level.color,"track-color":t.trackColor,value:r.level.progress},null,8,["color","track-color","value"]),e.createElementVNode("div",{class:e.normalizeClass(["text-caption",r.level.textClass])},e.toDisplayString(r.level.label),3)]))])):e.createCommentVNode("v-if",!0)},he.__file="src/components/password-strength-checker/QasPasswordStrengthChecker.vue";var ge={name:"QasPasswordInput",components:{QasPasswordStrengthChecker:he},mixins:[m],props:{hideStrengthChecker:{type:Boolean},iconColor:{type:String,default:"primary"},modelValue:{type:String,default:""}},emits:["update:modelValue"],data:()=>({key:"error",toggleType:!0}),computed:{icon(){return this.toggleType?"o_visibility_off":"o_visibility"},model:{get(){return this.modelValue},set(e){return this.$emit("update:modelValue",e)}},strengthCheckerProps(){const{modelValue:e,...t}=this.$props;return t},type(){return this.toggleType?"password":"text"}},watch:{modelValue(){this.$attrs.error&&(this.$attrs.error=!1,this.$attrs.errorMessage="")}},methods:{toggle(){this.toggleType=!this.toggleType}}};ge.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-icon"),i=e.resolveComponent("qas-password-strength-checker"),c=e.resolveComponent("q-input");return e.openBlock(),e.createBlock(c,{modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e),"bottom-slots":"",type:r.type},e.createSlots({append:e.withCtx((()=>[e.createVNode(n,{class:"cursor-pointer",color:s.iconColor,name:r.icon,onClick:r.toggle},null,8,["color","name","onClick"])])),_:2},[e.renderList(t.$slots,((o,s)=>({name:s,fn:e.withCtx((o=>[e.renderSlot(t.$slots,s,e.normalizeProps(e.guardReactiveProps(o||{})))]))}))),s.hideStrengthChecker?void 0:{name:"hint",fn:e.withCtx((()=>[e.createVNode(i,e.mergeProps(r.strengthCheckerProps,{password:r.model}),null,16,["password"])]))}]),1032,["modelValue","type"])},ge.__file="src/components/password-input/QasPasswordInput.vue";var ve={name:"QasSearchBox",components:{QasBox:U},props:{emptyListHeight:{default:"100px",type:String},fuseOptions:{default:()=>({}),type:Object},height:{default:"300px",type:String},list:{default:()=>[],type:Array},modelValue:{default:"",type:String},placeholder:{default:"Pesquisar",type:String},useEmptySlot:{default:!0,type:Boolean}},emits:["empty-result","update:modelValue"],data(){return{fuse:null,results:this.list,search:""}},computed:{contentStyle(){return{height:this.list.length?this.height:this.emptyListHeight}},defaultFuseOptions(){return{distance:100,location:0,maxPatternLength:32,minMatchCharLength:1,shouldSort:!0,threshold:.1,tokenize:!0,...this.fuseOptions}},hasResults(){return!!this.results.length},normalizedResults(){return this.results.map((e=>e?.item))||[]}},watch:{defaultFuseOptions(e){this.fuse.options={...this.fuse.options,...e}},hasResults(e){!e&&this.$emit("empty-result")},list:{handler(e){this.fuse.list=e,this.setResults(this.search)},deep:!0},search:{handler(e){this.setResults(e),this.$emit("update:modelValue",e)},immediate:!0}},async created(){this.search=this.modelValue,this.fuse=new c.default(this.list,this.defaultFuseOptions),this.setResults()},methods:{setResults(e){this.results=e?this.fuse.search(e):this.list.map((e=>({item:e})))}}};const ye={class:"absolute-center text-center"},Ce=e.createElementVNode("div",null,"Não há resultados disponíveis.",-1);ve.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-icon"),i=e.resolveComponent("q-input"),c=e.resolveComponent("qas-box");return e.openBlock(),e.createBlock(c,null,{default:e.withCtx((()=>[e.createVNode(i,{modelValue:l.search,"onUpdate:modelValue":o[0]||(o[0]=e=>l.search=e),clearable:"",disable:!s.list.length,outlined:"",placeholder:s.placeholder},{append:e.withCtx((()=>[e.createVNode(n,{color:"primary",name:"o_search"})])),_:1},8,["modelValue","disable","placeholder"]),e.createElementVNode("div",{class:"overflow-auto q-mt-xs relative-position",style:e.normalizeStyle(r.contentStyle)},[r.hasResults?e.renderSlot(t.$slots,"default",{key:0,results:r.normalizedResults}):s.useEmptySlot?e.renderSlot(t.$slots,"empty-result",{key:1},(()=>[e.createElementVNode("div",ye,[e.createVNode(n,{class:"q-mb-sm text-center",color:"primary",name:"o_search",size:"38px"}),Ce])])):e.createCommentVNode("v-if",!0)],4)])),_:3})},ve.__file="src/components/search-box/QasSearchBox.vue";var be={name:"QasSelect",props:{fuseOptions:{default:()=>({}),type:Object},labelKey:{default:"",type:String},modelValue:{default:()=>[],type:[Array,Object,String,Number]},noOptionLabel:{default:"Nenhum resultado foi encontrado.",type:String},options:{default:()=>[],type:Array},searchable:{type:Boolean},valueKey:{default:"",type:String}},emits:["update:modelValue"],data:()=>({filteredOptions:[],fuse:null}),computed:{attributes(){return{clearable:this.searchable,emitValue:!0,mapOptions:!0,outlined:!0,...this.$attrs,options:this.filteredOptions,useInput:this.searchable}},defaultFuseOptions(){return{distance:100,includeScore:!0,keys:["label","value"],location:0,maxPatternLength:32,minMatchCharLength:1,shouldSort:!0,threshold:.1,tokenize:!0,...this.fuseOptions}},formattedResult(){return this.labelKey||this.valueKey?this.options.map((e=>this.renameKey(e))):this.options},model:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{defaultFuseOptions(e){this.fuse.options={...this.fuse.options,...e}},options:{handler(){this.fuse&&(this.fuse.list=this.formattedResult),this.filteredOptions=this.formattedResult},immediate:!0}},async created(){this.searchable&&(this.fuse=new c.default(this.options,this.defaultFuseOptions))},methods:{filterOptions(e,t){t((()=>{if(this.searchable)if(""===e)this.filteredOptions=this.formattedResult;else{const t=this.fuse.search(e);this.filteredOptions=t.map((e=>e.item))}}))},renameKey(e){const t={label:this.labelKey,value:this.valueKey};for(const o in t)e.hasOwnProperty.call(o)||(e[o]=e[t[o]],delete e[t[o]]);return e}}};be.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-icon"),i=e.resolveComponent("q-item-section"),c=e.resolveComponent("q-item"),d=e.resolveComponent("q-select");return e.openBlock(),e.createBlock(d,e.mergeProps({modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e)},r.attributes,{onFilter:r.filterOptions}),e.createSlots({append:e.withCtx((()=>[e.renderSlot(t.$slots,"append",{},(()=>[s.searchable?(e.openBlock(),e.createBlock(n,{key:0,name:"o_search"})):e.createCommentVNode("v-if",!0)]))])),"no-option":e.withCtx((()=>[e.renderSlot(t.$slots,"no-option",{},(()=>[e.createVNode(c,null,{default:e.withCtx((()=>[e.createVNode(i,{class:"text-grey"},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(s.noOptionLabel),1)])),_:1})])),_:1})]))])),_:2},[e.renderList(t.$slots,((o,s)=>({name:s,fn:e.withCtx((o=>[e.renderSlot(t.$slots,s,e.normalizeProps(e.guardReactiveProps(o||{})))]))})))]),1040,["modelValue","onFilter"])},be.__file="src/components/select/QasSelect.vue";var ke={name:"QasSelectList",components:{QasBtn:y,QasSearchBox:ve},mixins:[h],props:{deleteOnly:{type:Boolean},fuseOptions:{default:()=>({keys:["label"]}),type:Object},list:{default:()=>[],type:Array},modelValue:{type:Array,default:()=>[]},to:{default:()=>({}),type:Object},toIdentifier:{default:"value",type:String}},emits:["added","update:modelValue","removed"],data:()=>({sortedList:[],values:[]}),computed:{isRedirectEnabled(){return Object.keys(this.to).length},labelClass(){return this.isRedirectEnabled?"cursor-pointer":""},slotData(){return{add:this.add,handleClick:this.handleClick,remove:this.remove,updateModel:this.updateModel}}},watch:{list:{handler(e){this.sortedList.length||(this.sortedList=e)},immediate:!0},modelValue(e){this.values=[...e]}},created(){this.values=[...this.modelValue],this.handleOptions()},methods:{add(e){this.values.push(e.value),this.updateModel(),this.$emit("added",e)},getButtonProps({value:e}){const t=this.values.includes(e);return{dense:this.$_isSmall,hideLabelOnSmallScreen:!0,icon:this.$_isSmall?t?"o_close":"o_add":void 0,label:t?"Remover":"Adicionar",outline:t,size:"sm"}},handleClick(e){return this.values.includes(e.value)?this.remove(e):this.add(e)},handleOptions(){if(this.modelValue.length)return this.sortList();const e=this.$watch("modelValue",(()=>{this.sortedList.length||(this.sortList(),e())}))},redirectRoute(e){return this.isRedirectEnabled&&this.$router.push({params:{id:e[this.toIdentifier]},...this.to})},remove(e){const t=this.values.findIndex((t=>t===e.value));this.values.splice(t,1),this.updateModel(),this.$emit("removed",e,t)},sortList(){this.sortedList=this.deleteOnly?this.options.filter((e=>this.modelValue.includes(e.value))):a.sortBy(this.options,(e=>!this.modelValue.includes(e.value)))},updateModel(e){this.$emit("update:modelValue",e||this.values)}}};const xe=["onClick"];ke.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-item-section"),i=e.resolveComponent("qas-btn"),c=e.resolveComponent("q-item"),d=e.resolveComponent("q-list"),u=e.resolveComponent("qas-search-box");return e.openBlock(),e.createBlock(u,{class:"q-pa-md","fuse-options":s.fuseOptions,list:l.sortedList},{default:e.withCtx((({results:o})=>[e.createVNode(d,{separator:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o,(o=>(e.openBlock(),e.createBlock(c,{key:o.value},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item",e.normalizeProps(e.guardReactiveProps(r.slotData)),(()=>[e.renderSlot(t.$slots,"item-section",{result:o},(()=>[e.createVNode(n,{class:"items-start text-bold"},{default:e.withCtx((()=>[e.createElementVNode("div",{class:e.normalizeClass(r.labelClass),onClick:e=>r.redirectRoute(o)},e.toDisplayString(o.label),11,xe)])),_:2},1024)])),e.createVNode(n,{avatar:""},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item-action",e.normalizeProps(e.guardReactiveProps(r.slotData)),(()=>[e.createVNode(i,e.mergeProps(r.getButtonProps(o),{onClick:e=>r.handleClick(o)}),null,16,["onClick"])]))])),_:2},1024)]))])),_:2},1024)))),128))])),_:2},1024)])),_:3},8,["fuse-options","list"])},ke.__file="src/components/select-list/QasSelectList.vue";var Ve={name:"QasSignaturePad",components:{QasBtn:y},props:{emptyModel:{type:Boolean,default:!0},height:{default:"250",type:String},signatureOptions:{default:()=>({}),type:Object},type:{default:"image/png",type:String}},emits:["update:emptyModel"],expose:["clearSignature","saveSignature","updateEmptyModel"],data:()=>({canvasId:t.uid(),hasEndStrokeEvent:!1,signaturePad:null,SignaturePad:null}),watch:{async signatureOptions(e,t){a.isEqual(e,t)||(await this.setupSignaturePad(),this.updateEmptyModel())}},async mounted(){window.addEventListener("resize",this.setCanvasWidth),this.setCanvasWidth(),this.setupSignaturePad()},unmounted(){window.removeEventListener("resize",this.setCanvasWidth),this.signaturePad.off()},methods:{clearSignature(){this.signaturePad.clear(),this.updateEmptyModel()},saveSignature(){return this.signaturePad.toDataURL(this.type)},setCanvasWidth(){const e=this.$refs.signatureContainer;e.querySelector("canvas").setAttribute("width",e.offsetWidth)},setupSignaturePad(){const e=document.getElementById(this.canvasId);this.signaturePad=new d.default(e,this.signatureOptions),this.hasEndStrokeEvent||this.signaturePad.addEventListener("endStroke",this.updateEmptyModel),this.hasEndStrokeEvent=!0,this.clearSignature()},updateEmptyModel(){this.$emit("update:emptyModel",this.signaturePad.isEmpty())}}};const Se={ref:"signatureContainer",class:"qas-signature-pad relative-position"},Be=["id","height"];Ve.render=function(t,o,s,a,l,r){const n=e.resolveComponent("qas-btn");return e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("canvas",{id:l.canvasId,ref:t.$attrs.ref,class:"qas-signature-pad__canvas rounded-borders vertical-bottom",height:s.height},null,8,Be),s.emptyModel?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(n,{key:0,class:"absolute-bottom-right q-mb-sm q-mr-sm",color:"primary",dense:"",icon:"o_delete",round:"",onClick:r.clearSignature},null,8,["onClick"]))],512)},Ve.__file="src/components/signature-pad/QasSignaturePad.vue";var _e=(e={})=>{t.Dialog.create({component:ae,componentProps:{...e,usePlugin:!0}})};t.Notify.registerType("error",{color:"negative",progress:!0});var we=(e,o)=>{t.Notify.create({caption:o,message:e,type:"error"})};t.Notify.registerType("success",{icon:"o_check",progress:!0});var Ne=(e,o)=>{t.Notify.create({caption:o,message:e,type:"success"})},qe={name:"QasSortable",props:{entity:{default:"",type:String},sortableOptions:{default:()=>({animation:500}),type:Object},results:{default:()=>[],type:Array},tag:{default:"div",type:String},url:{default:"",type:String},sortedModel:{default:()=>[],type:Array}},emits:["update:sortedModel","sort","success"],data:()=>({sortable:null,sorted:null}),computed:{identifiers(){return this.sorted.map((({id:e})=>e))}},watch:{sortableOptions(e){this.sortable.options={...this.sortable.options,...e}},results(e){this.setSortedValue(e),this.sortable.sort(this.sortable.toArray())}},created(){this.setSortedValue()},async mounted(){this.sortable=new u.default(this.$refs.sortableItems,{...this.sortableOptions,onUpdate:e=>{this.updateOrder(e),this.$emit("sort",e)}})},unmounted(){this.sortable.destroy()},methods:{setError(e){const{response:t}=e,o=t?.data?.exception||e.message;we("Ops! Erro ao ordernar itens.",o)},async replace(){t.Loading.show();try{const e=await this.$store.dispatch(`${this.entity}/replace`,{payload:{order:this.identifiers},url:this.url||`${this.entity}/sort`});this.$emit("success",e)}catch(e){this.setError(e)}finally{t.Loading.hide()}},updateOrder({newIndex:e,oldIndex:t}){const o=this.sorted.splice(t,1);this.sorted.splice(e,0,o[0]),this.replace()},setSortedValue(e){this.sorted=t.extend(!0,[],e||this.results),this.updateSortedModel()},updateSortedModel(){return this.$emit("update:sortedModel",this.sorted)}}};qe.render=function(t,o,s,a,l,r){return e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.tag),{ref:"sortableItems"},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},512)},qe.__file="src/components/sortable/QasSortable.vue";var $e={name:"QasTabsGenerator",props:{activeColor:{default:"primary",type:String},counterProps:{default:()=>({}),type:Object},counters:{default:()=>({}),type:Object},indicatorColor:{default:"primary",type:String},modelValue:{default:"",type:String},tabClass:{default:"text-primary",type:String},tabs:{default:()=>({}),required:!0,type:Object}},emits:["update:modelValue"],computed:{defaultCounterProps(){return{color:"negative",floating:!0,...this.counterProps}},formattedTabs(){const e=t.extend(!0,{},this.tabs);for(const t in e)"string"==typeof e[t]&&(e[t]={label:e[t]});return e},model:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}}};$e.render=function(t,o,s,a,l,r){const n=e.resolveComponent("q-badge"),i=e.resolveComponent("q-tab"),c=e.resolveComponent("q-tabs");return e.openBlock(),e.createBlock(c,{modelValue:r.model,"onUpdate:modelValue":o[0]||(o[0]=e=>r.model=e),"active-color":s.activeColor,"indicator-color":s.indicatorColor,"outside-arrows":""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.formattedTabs,((o,a)=>e.renderSlot(t.$slots,`tab-${o.value}`,{item:o},(()=>[(e.openBlock(),e.createBlock(i,e.mergeProps({key:a},o,{class:s.tabClass,label:o.label,name:a}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,`tab-after-${o.value}`,{item:o},(()=>[s.counters[a]?(e.openBlock(),e.createBlock(n,e.mergeProps({key:0,label:s.counters[a]},r.defaultCounterProps),null,16,["label"])):e.createCommentVNode("v-if",!0)]))])),_:2},1040,["class","label","name"]))])))),256))])),_:3},8,["modelValue","active-color","indicator-color"])},$e.__file="src/components/tabs-generator/QasTabsGenerator.vue";var Qe={name:"QasTransfer",components:{QasBtn:y,QasLabel:ie,QasSearchBox:ve},mixins:[h],props:{emitValue:{type:Boolean},fuseOptions:{default:()=>({keys:["label"]}),type:Object},label:{default:"",required:!0,type:String},labelKey:{default:"label",type:String},modelValue:{default:()=>[],type:Array},options:{default:()=>[],type:Array},useEmptySlot:{default:!0,type:Boolean},valueKey:{default:"value",type:String}},emits:["update:modelValue"],data:()=>({firstQueue:[],optionsList:[],secondQueue:[],selectedList:[]}),computed:{actionsClass(){return!this.$_isSmall&&"column"},gutterClass(){return"q-col-gutter-"+(this.$_untilLarge?"md":"xl")},iconClass(){return!this.$_isSmall&&"qas-transfer__icon"},searchBoxProps(){return{fuseOptions:this.fuseOptions,useEmptySlot:this.useEmptySlot}}},watch:{modelValue:{handler(){this.setSelectedFromValue(!0)},immediate:!0},options:{handler(e){this.optionsList=t.extend(!0,[],e)},immediate:!0},selectedList:{handler(){this.updateModelValue()}}},methods:{deleteItemsFromList(e){this[e?"firstQueue":"secondQueue"].forEach((t=>{const o=e?"optionsList":"selectedList",s=this[o].findIndex((e=>(e[this.valueKey]||e)===t[this.valueKey]));~s&&this[o].splice(s,1)}))},getItemClass(e,t){return this[t?"firstQueue":"secondQueue"].some((t=>t[this.valueKey]===e[this.valueKey]))&&"bg-secondary"},getItemLabel(e){return e?.[this.labelKey]},getModelValue(){const e=t.extend(!0,[],this.selectedList);return this.emitValue?e.map((e=>e[this.valueKey])):e},handleSelectedList(e){const t=e?"firstQueue":"secondQueue";this[e?"selectedList":"optionsList"].push(...this[t]),this.deleteItemsFromList(e),this[t]=[]},onSelectQueue(e,t){const o=t?"firstQueue":"secondQueue",s=this[o].findIndex((t=>t[this.valueKey]===e[this.valueKey]));~s?this[o].splice(s,1):this[o].push(e)},setSelectedFromClick(e){this.handleSelectedList(e)},setSelectedFromValue(e){this.modelValue.forEach((e=>{const o=this.optionsList.find((t=>t[this.valueKey]===(this.emitValue?e:e[this.valueKey])));o&&this.firstQueue.push(t.extend(!0,{},o))})),this.handleSelectedList(e)},updateModelValue(){return this.$emit("update:modelValue",this.getModelValue())}}};const Ee=e.createElementVNode("div",{class:"col-12"},null,-1),Le={class:"col-12 col-sm"},Pe=e.createTextVNode("Selecionar"),Oe=e.createTextVNode("Remover"),De={class:"col-12 col-sm"};Qe.render=function(t,o,s,a,l,r){const n=e.resolveComponent("qas-label"),i=e.resolveComponent("q-item-section"),c=e.resolveComponent("q-item"),d=e.resolveComponent("q-list"),u=e.resolveComponent("qas-search-box"),p=e.resolveComponent("qas-btn"),m=e.resolveComponent("q-tooltip");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["qas-transfer row",r.gutterClass])},[Ee,e.createElementVNode("div",Le,[e.createVNode(n,{label:s.label,quantity:l.optionsList.length},null,8,["label","quantity"]),e.createVNode(u,e.mergeProps({"form-mode":"",list:l.optionsList},r.searchBoxProps),{default:e.withCtx((({results:o})=>[e.createVNode(d,{separator:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o,((o,s)=>(e.openBlock(),e.createBlock(c,{key:s,class:e.normalizeClass(r.getItemClass(o,!0)),clickable:"",onClick:e=>r.onSelectQueue(o,!0)},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item-first-column",{},(()=>[e.createVNode(i,null,{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.getItemLabel(o)),1)])),_:2},1024)]))])),_:2},1032,["class","onClick"])))),128))])),_:2},1024)])),_:3},16,["list"])]),e.createElementVNode("div",{class:e.normalizeClass(["col-12 col-sm-auto items-center justify-center q-col-gutter-md row",r.actionsClass])},[e.createElementVNode("div",null,[e.createVNode(p,{class:e.normalizeClass(r.iconClass),dense:"",disabled:!l.firstQueue.length,flat:"",icon:"o_arrow_circle_down",rounded:"",onClick:o[0]||(o[0]=e=>r.setSelectedFromClick(!0))},null,8,["class","disabled"]),e.createVNode(m,{anchor:"top middle",self:"center middle"},{default:e.withCtx((()=>[Pe])),_:1})]),e.createElementVNode("div",null,[e.createElementVNode("div",null,[e.createVNode(p,{class:e.normalizeClass(r.iconClass),dense:"",disabled:!l.secondQueue.length,flat:"",icon:"o_arrow_circle_up",rounded:"",onClick:o[1]||(o[1]=e=>r.setSelectedFromClick())},null,8,["class","disabled"]),e.createVNode(m,{anchor:"bottom middle",self:"center middle"},{default:e.withCtx((()=>[Oe])),_:1})])])],2),e.createElementVNode("div",De,[e.createVNode(n,{label:"Selecionadas",quantity:l.selectedList.length},null,8,["quantity"]),e.createVNode(u,e.mergeProps(r.searchBoxProps,{"empty-list-height":"300px","form-mode":"",label:"Selecionadas",list:l.selectedList}),{default:e.withCtx((({results:o})=>[e.createVNode(d,{separator:""},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o,((o,s)=>(e.openBlock(),e.createBlock(c,{key:s,class:e.normalizeClass(r.getItemClass(o)),clickable:"",onClick:e=>r.onSelectQueue(o)},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item-second-column",{},(()=>[e.createVNode(i,null,{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.getItemLabel(o)),1)])),_:2},1024)]))])),_:2},1032,["class","onClick"])))),128))])),_:2},1024)])),_:3},16,["list"])])],2)},Qe.__file="src/components/transfer/QasTransfer.vue";return Object.freeze({__proto__:null,version:"3.0.0-alpha.2",QasActions:f,QasActionsMenu:C,QasAlert:V,QasAppBar:_,QasAppMenu:j,QasAppsMenu:T,QasAvatar:K,QasBox:U,QasBreakline:x,QasBtn:y,QasCard:W,QasCopy:X,QasDebugger:ee,QasDialog:ae,QasInput:ne,QasLabel:ie,QasListItems:ce,QasNumericInput:pe,QasPasswordInput:ge,QasPasswordStrengthChecker:he,QasSearchBox:ve,QasSelect:be,QasSelectList:ke,QasSignaturePad:Ve,QasSortable:qe,QasTabsGenerator:$e,QasTransfer:Qe,Dialog:_e,NotifyError:we,NotifySuccess:Ne,install:function(e){e.component("QasActions",f),e.component("QasActionsMenu",C),e.component("QasAlert",V),e.component("QasAppBar",_),e.component("QasAppMenu",j),e.component("QasAppsMenu",T),e.component("QasAvatar",K),e.component("QasBox",U),e.component("QasBreakline",x),e.component("QasBtn",y),e.component("QasCard",W),e.component("QasCopy",X),e.component("QasDebugger",ee),e.component("QasDialog",ae),e.component("QasInput",ne),e.component("QasLabel",ie),e.component("QasListItems",ce),e.component("QasNumericInput",pe),e.component("QasPasswordInput",ge),e.component("QasPasswordStrengthChecker",he),e.component("QasSearchBox",ve),e.component("QasSelect",be),e.component("QasSelectList",ke),e.component("QasSignaturePad",Ve),e.component("QasSortable",qe),e.component("QasTabsGenerator",$e),e.component("QasTransfer",Qe),e.config.globalProperties.$qas={error:we,success:Ne,dialog:_e}}})}));
@@ -0,0 +1,14 @@
1
+ {
2
+ "qas-breakline/split": {
3
+ "description": "Caracter ou conjunto de caracteres que serão utilizados para dividir o texto.",
4
+ "type": "string"
5
+ },
6
+ "qas-breakline/tag": {
7
+ "description": "Tag HTML que será utilizada para encapsular o texto dividido.",
8
+ "type": "string"
9
+ },
10
+ "qas-breakline/text": {
11
+ "description": "Texto que será dividido.",
12
+ "type": "string"
13
+ }
14
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "qas-breakline": {
3
+ "attributes": [
4
+ "split",
5
+ "tag",
6
+ "text"
7
+ ],
8
+ "description": "Permite encapsular quebra de linhas (\\n) de um texto em uma tag HTML ou componente Vue."
9
+ }
10
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bildvitta/quasar-ui-asteroid",
3
- "version": "2.12.2",
3
+ "version": "2.14.0",
4
4
  "description": "",
5
5
  "main": "./src/index.js",
6
6
  "scripts": {
@@ -58,6 +58,7 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@quasar/extras": "^1.9.14",
61
+ "autonumeric": "^4.6.0",
61
62
  "axios": "^0.21.1",
62
63
  "date-fns": "^2.16.1",
63
64
  "fuse.js": "^3.4.6",
@@ -0,0 +1 @@
1
+ <svg width="126" height="26" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".3"><g clip-path="url(#a)"><path d="M6.829 10.909c.02-2.295.059-4.6.119-6.895C9.197 2.653 11.41 1.3 13.58 0c2.172 1.301 4.393 2.653 6.634 4.014.07 2.295.11 4.6.12 6.895a342.175 342.175 0 0 0 6.048 3.417c-.02 2.504-.1 5.017-.238 7.521A575.699 575.699 0 0 0 19.392 26a404.892 404.892 0 0 1-5.81-3.388A525.05 525.05 0 0 1 7.77 26a574.702 574.702 0 0 0-6.753-4.153 158.72 158.72 0 0 1-.238-7.52 381.833 381.833 0 0 0 6.049-3.418Zm6.752-9.24c-1.487.884-2.994 1.788-4.521 2.702 1.487.855 2.994 1.73 4.521 2.613a830.152 830.152 0 0 1 4.522-2.613c-1.527-.904-3.034-1.818-4.522-2.702Zm.714 6.577v5.295c1.537-.884 3.064-1.768 4.591-2.642-.01-1.759-.03-3.507-.06-5.266-1.487.855-3.004 1.729-4.53 2.613Zm5.87 15.658a402.133 402.133 0 0 1 4.602-2.792c.079-1.719.128-3.438.158-5.156-1.547.884-3.084 1.788-4.62 2.692-.04 1.749-.08 3.507-.14 5.256Zm4.046-9.16c-1.517-.845-3.044-1.72-4.571-2.593a767.782 767.782 0 0 0-4.601 2.652c1.527.884 3.044 1.759 4.551 2.613 1.547-.894 3.084-1.788 4.621-2.672Zm-15.806 9.21c1.468-.835 2.955-1.71 4.462-2.594 0-1.768-.01-3.546-.01-5.315a577.521 577.521 0 0 1-4.56 2.623c.029 1.758.059 3.527.108 5.285Zm3.719-9.15c-1.537-.885-3.064-1.78-4.601-2.653a310.65 310.65 0 0 1-4.572 2.593c1.537.874 3.084 1.768 4.621 2.672a573.757 573.757 0 0 0 4.552-2.613Z" fill="#00314D"/></g><path d="m47.676 21.17-.022-10.315-5.113 8.536h-1.29l-5.112-8.403V21.17h-2.756V5.61h2.378l6.18 10.314L48.01 5.61h2.378l.022 15.56h-2.734ZM58.193 21.325c-1.2 0-2.282-.26-3.245-.778a5.774 5.774 0 0 1-2.268-2.156c-.533-.934-.8-1.986-.8-3.157 0-1.17.267-2.215.8-3.134a5.774 5.774 0 0 1 2.267-2.156c.964-.52 2.045-.778 3.246-.778 1.215 0 2.304.259 3.268.778a5.619 5.619 0 0 1 2.245 2.156c.548.919.822 1.963.822 3.134 0 1.17-.274 2.223-.822 3.157a5.62 5.62 0 0 1-2.245 2.156c-.964.518-2.053.778-3.268.778Zm0-2.379c1.023 0 1.867-.34 2.534-1.022.667-.682 1-1.578 1-2.69 0-1.111-.333-2.008-1-2.69-.667-.681-1.511-1.022-2.534-1.022s-1.867.34-2.534 1.022c-.652.682-.978 1.579-.978 2.69 0 1.112.326 2.008.978 2.69.667.681 1.511 1.022 2.534 1.022ZM78.513 4.675V21.17h-2.667v-1.534c-.46.563-1.03.986-1.712 1.267-.667.282-1.408.423-2.223.423-1.14 0-2.17-.252-3.09-.756a5.47 5.47 0 0 1-2.133-2.134c-.52-.934-.779-2-.779-3.2 0-1.201.26-2.26.778-3.18a5.471 5.471 0 0 1 2.135-2.134c.918-.504 1.948-.755 3.09-.755.785 0 1.503.133 2.155.4a4.337 4.337 0 0 1 1.668 1.2v-6.09h2.778Zm-6.268 14.271c.667 0 1.267-.148 1.8-.444a3.372 3.372 0 0 0 1.267-1.312c.312-.563.467-1.215.467-1.956 0-.74-.155-1.393-.467-1.956a3.217 3.217 0 0 0-1.267-1.29 3.507 3.507 0 0 0-1.8-.466c-.667 0-1.267.155-1.8.467a3.217 3.217 0 0 0-1.268 1.289c-.311.563-.467 1.215-.467 1.956 0 .741.156 1.393.467 1.956.311.563.734 1 1.267 1.312a3.644 3.644 0 0 0 1.8.444ZM91.854 9.299v11.87H89.21v-1.511c-.444.533-1 .948-1.667 1.244a5.487 5.487 0 0 1-2.156.423c-1.586 0-2.838-.437-3.757-1.312-.904-.889-1.356-2.2-1.356-3.934v-6.78h2.779V15.7c0 1.067.237 1.867.711 2.4.49.52 1.178.779 2.067.779.993 0 1.779-.304 2.357-.912.592-.622.889-1.511.889-2.667V9.299h2.778ZM93.805 4.675h2.78V21.17h-2.78V4.675ZM103.773 9.166c1.749 0 3.083.422 4.002 1.267.933.83 1.4 2.09 1.4 3.778v6.958h-2.623v-1.445c-.341.519-.83.92-1.467 1.2-.622.267-1.378.4-2.267.4-.89 0-1.668-.147-2.334-.444-.667-.311-1.186-.733-1.556-1.267a3.317 3.317 0 0 1-.534-1.845c0-1.067.393-1.919 1.178-2.556.8-.652 2.053-.978 3.757-.978h3.067v-.178c0-.83-.252-1.467-.755-1.912-.489-.444-1.223-.667-2.201-.667-.667 0-1.326.104-1.978.312-.638.207-1.179.496-1.623.867l-1.09-2.023c.623-.475 1.371-.838 2.246-1.09a9.984 9.984 0 0 1 2.778-.377Zm-.377 10.136c.696 0 1.311-.156 1.845-.467a2.638 2.638 0 0 0 1.155-1.378v-1.378h-2.867c-1.601 0-2.401.526-2.401 1.578 0 .504.2.904.6 1.2.4.297.956.445 1.668.445ZM113.997 11.033c.8-1.245 2.208-1.867 4.224-1.867v2.645a3.532 3.532 0 0 0-.645-.067c-1.082 0-1.927.319-2.534.956-.608.622-.912 1.526-.912 2.712v5.757h-2.778V9.3h2.645v1.734Z" fill="#00314D"/></g><defs><clipPath id="a"><path fill="#fff" transform="matrix(-1 0 0 1 26.383 0)" d="M0 0h25.603v26H0z"/></clipPath></defs></svg>
@@ -17,10 +17,6 @@ export default {
17
17
  },
18
18
 
19
19
  argTypes: {
20
- apps: {
21
- description: 'List of apps with `href`, `image` and `label`. Used by QasAppsMenu.'
22
- },
23
-
24
20
  brand: {
25
21
  description: 'Brand image path.'
26
22
  },
@@ -1,82 +1,77 @@
1
1
  <template>
2
- <q-toolbar class="qas-toolbar">
3
- <q-ajax-bar color="white" position="top" size="2px" />
2
+ <q-header v-bind="$attrs" class="bg-white shadow-primary" height-hint="70" v-on="$listeners">
3
+ <q-toolbar class="qas-toolbar" color="bg-white">
4
+ <q-ajax-bar color="white" position="top" size="2px" />
4
5
 
5
- <q-btn dense flat icon="o_menu" round @click="toggleMenuDrawer" />
6
+ <q-btn color="grey-7" dense flat icon="o_menu" round @click="toggleMenuDrawer" />
6
7
 
7
- <q-toolbar-title class="flex">
8
- <div class="cursor-pointer" @click="goToRoot">
9
- <img v-if="brand" :alt="title" class="q-mr-sm qas-toolbar__brand" :src="brand">
10
- <span v-if="title" class="text-bold text-primary-contrast text-subtitle1 text-uppercase">{{ title }}</span>
11
- <q-badge v-if="hasDevelopmentBadge" align="middle" class="q-ml-sm" color="negative" :label="developmentBadgeLabel" />
12
- </div>
13
- </q-toolbar-title>
8
+ <q-toolbar-title class="flex">
9
+ <div class="cursor-pointer" @click="goToRoot">
10
+ <img v-if="brand" :alt="title" class="q-mr-sm qas-toolbar__brand" :src="brand">
11
+ <span v-if="showTitle" class="text-bold text-grey-9 text-subtitle1 text-uppercase">{{ title }}</span>
12
+ <q-badge v-if="hasDevelopmentBadge" align="middle" class="q-ml-sm" color="negative" :label="developmentBadgeLabel" />
13
+ </div>
14
+ </q-toolbar-title>
14
15
 
15
- <!-- TODO: Notificações. -->
16
- <div v-if="hasNotifications" class="q-mr-md">
17
- <q-btn class="q-mr-md" dense icon="o_notifications" round unelevated>
18
- <q-badge v-if="notifications" color="red" floating>{{ notifications.count }}</q-badge>
19
- </q-btn>
20
- </div>
16
+ <!-- TODO: Notificações. -->
17
+ <div v-if="hasNotifications" class="q-mr-md">
18
+ <q-btn class="q-mr-md" dense icon="o_notifications" round unelevated>
19
+ <q-badge v-if="notifications" color="red" floating>{{ notifications.count }}</q-badge>
20
+ </q-btn>
21
+ </div>
21
22
 
22
- <qas-apps-menu v-if="hasApps" :apps="apps" class="q-mr-md" />
23
+ <div class="items-center no-wrap q-gutter-md row">
24
+ <slot name="tools" />
23
25
 
24
- <div class="items-center no-wrap q-gutter-md row">
25
- <slot name="tools" />
26
+ <div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-toolbar__user rounded-borders row text-grey-9" :title="user.name || user.givenName">
27
+ <qas-avatar class="rounded-borders-left" color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="user.name || user.givenName" />
26
28
 
27
- <div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-toolbar__user rounded-borders row" :title="user.name || user.givenName">
28
- <qas-avatar class="rounded-borders-left" color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="user.name || user.givenName" />
29
+ <div class="q-px-sm qas-toolbar__user-data qs-lh-lg text-caption">
30
+ <div class="ellipsis">{{ user.name || user.givenName }}</div>
31
+ <div class="ellipsis text-bold">{{ user.email }}</div>
32
+ </div>
29
33
 
30
- <div class="q-px-sm qas-toolbar__user-data qs-lh-lg text-caption">
31
- <div class="ellipsis">{{ user.name || user.givenName }}</div>
32
- <div class="ellipsis text-bold">{{ user.email }}</div>
33
- </div>
34
+ <q-menu anchor="bottom end" content-class="shadow-primary" max-height="400px" :offset="[0, 5]" self="top end">
35
+ <div class="qas-toolbar__user-menu">
36
+ <div class="q-pa-lg text-center">
37
+ <button class="unset" @click="goToProfile">
38
+ <qas-avatar :image="user.photo" size="145px" :title="user.name || user.givenName" />
39
+ </button>
34
40
 
35
- <q-menu anchor="bottom end" content-class="shadow-primary" max-height="400px" :offset="[0, 5]" self="top end">
36
- <div class="qas-toolbar__user-menu">
37
- <div class="q-pa-lg text-center">
38
- <button class="unset" @click="goToProfile">
39
- <qas-avatar :image="user.photo" size="145px" :title="user.name || user.givenName" />
40
- </button>
41
+ <div class="ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1">{{ user.name || user.givenName }}</div>
42
+ <div class="ellipsis q-mt-xs text-caption">{{ user.email }}</div>
41
43
 
42
- <div class="ellipsis q-mt-lg qs-lh-sm text-bold text-subtitle1">{{ user.name || user.givenName }}</div>
43
- <div class="ellipsis q-mt-xs text-caption">{{ user.email }}</div>
44
+ <div class="q-mt-sm">
45
+ <qas-btn flat icon="o_edit" label="Editar" :to="user.to" />
46
+ </div>
44
47
 
45
- <div class="q-mt-sm">
46
- <qas-btn flat icon="o_edit" label="Editar" :to="user.to" />
47
- </div>
48
+ <div class="q-mt-sm">
49
+ <qas-btn v-close-popup class="q-px-lg q-py-xs" dense icon="o_exit_to_app" label="Sair" outline @click="signOut" />
50
+ </div>
48
51
 
49
- <div class="q-mt-sm">
50
- <qas-btn v-close-popup class="q-px-lg q-py-xs" dense icon="o_exit_to_app" label="Sair" outline @click="signOut" />
52
+ <slot name="user" :user="user" />
51
53
  </div>
52
-
53
- <slot name="user" :user="user" />
54
54
  </div>
55
- </div>
56
- </q-menu>
55
+ </q-menu>
56
+ </div>
57
57
  </div>
58
- </div>
59
- </q-toolbar>
58
+ </q-toolbar>
59
+ </q-header>
60
60
  </template>
61
61
 
62
62
  <script>
63
- import QasAppsMenu from '../apps-menu/QasAppsMenu'
64
63
  import QasAvatar from '../avatar/QasAvatar'
65
64
  import QasBtn from '../btn/QasBtn'
66
65
 
67
66
  export default {
67
+ name: 'QasAppBar',
68
+
68
69
  components: {
69
- QasAppsMenu,
70
70
  QasAvatar,
71
71
  QasBtn
72
72
  },
73
73
 
74
74
  props: {
75
- apps: {
76
- default: () => [],
77
- type: Array
78
- },
79
-
80
75
  brand: {
81
76
  default: '',
82
77
  type: String
@@ -128,16 +123,16 @@ export default {
128
123
  return current ? hosts[current] : ''
129
124
  },
130
125
 
131
- hasApps () {
132
- return !!this.apps.length
133
- },
134
-
135
126
  hasDevelopmentBadge () {
136
127
  return !!this.developmentBadgeLabel
137
128
  },
138
129
 
139
130
  hasNotifications () {
140
131
  return !!Object.keys(this.notifications).length
132
+ },
133
+
134
+ showTitle () {
135
+ return this.title && !this.brand
141
136
  }
142
137
  },
143
138
 
@@ -173,7 +168,7 @@ export default {
173
168
  }
174
169
 
175
170
  &__user {
176
- background-color: rgba(white, 0.1);
171
+ background-color: var(--qas-background-color);
177
172
  transition: background-color $generic-hover-transition;
178
173
 
179
174
  &:focus,
@@ -30,6 +30,10 @@ export default {
30
30
  description: 'Controls drawer menu visibility.'
31
31
  },
32
32
 
33
+ title: {
34
+ description: 'Title for displaying inside "modules" as label when is in development (local).'
35
+ },
36
+
33
37
  // Events
34
38
  input: {
35
39
  description: 'Fires when opening or closing the drawer menu.'
@@ -1,35 +1,54 @@
1
1
  <template>
2
- <q-drawer v-model="model" content-class="bg-primary-contrast" :mini="miniMode" :width="230" @before-hide="beforeHide">
3
- <q-list class="text-primary">
4
- <div v-for="(header, index) in items" :key="index">
5
- <q-expansion-item v-if="hasChildren(header)" :active-class="activeSecondaryItemClasses" :default-opened="shouldExpand(header)" expand-icon="o_keyboard_arrow_down" expand-separator :icon="header.icon" :label="header.label" :to="header.to">
6
- <q-item v-for="(item, itemIndex) in header.children" :key="itemIndex" v-ripple :active-class="activeItemClasses" clickable :to="item.to">
7
- <q-item-section v-if="item.icon" avatar>
8
- <q-icon :name="item.icon" />
9
- </q-item-section>
10
- <q-item-section>
11
- <q-item-label>{{ item.label }}</q-item-label>
12
- </q-item-section>
13
- </q-item>
14
- </q-expansion-item>
15
-
16
- <q-item v-else :key="index" v-ripple :active-class="activeItemClasses" clickable :to="header.to">
17
- <q-item-section v-if="header.icon" avatar>
18
- <q-icon :name="header.icon" />
19
- </q-item-section>
20
- <q-item-section>
21
- <q-item-label>{{ header.label }}</q-item-label>
22
- </q-item-section>
23
- </q-item>
2
+ <q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230" v-on="$listeners" @before-hide="beforeHide" @mini-state="setMiniState">
3
+ <div class="column flex full-height justify-between no-wrap overflow-x-hidden">
4
+ <div>
5
+ <div v-if="displayModuleSection" class="q-ma-md">
6
+ <div class="q-mb-sm text-caption text-grey-7 text-weight-medium">
7
+ Você está no modulo:
8
+ </div>
9
+
10
+ <qas-select v-model="module" :options="defaultModules" @input="redirectHandler(currentModelOption)" />
11
+ </div>
12
+
13
+ <q-list class="text-grey-9 text-weight-medium">
14
+ <template v-for="(header, index) in items">
15
+ <q-expansion-item v-if="hasChildren(header)" :key="header.label" :ref="`item-${index}`" :active-class="activeItemClassesSecondary" :default-opened="shouldExpand(header)" expand-icon="o_keyboard_arrow_down" expand-separator group="item" :icon="header.icon" :label="header.label" :to="header.to" @click="toggleItem(index)">
16
+ <q-item v-for="(item, itemIndex) in header.children" :key="itemIndex" v-ripple :active-class="activeItemClasses" clickable :to="item.to">
17
+ <q-item-section v-if="item.icon" avatar>
18
+ <q-icon :name="item.icon" />
19
+ </q-item-section>
20
+ <q-item-section>
21
+ <q-item-label>{{ item.label }}</q-item-label>
22
+ </q-item-section>
23
+ </q-item>
24
+ </q-expansion-item>
25
+
26
+ <q-item v-else :key="index" v-ripple :active-class="activeItemClasses" clickable :to="header.to">
27
+ <q-item-section v-if="header.icon" avatar>
28
+ <q-icon :name="header.icon" />
29
+ </q-item-section>
30
+ <q-item-section>
31
+ <q-item-label>{{ header.label }}</q-item-label>
32
+ </q-item-section>
33
+ </q-item>
34
+ </template>
35
+ </q-list>
24
36
  </div>
25
- </q-list>
37
+
38
+ <div class="q-mx-md">
39
+ <img v-if="!isMini" alt="modular logo" class="block q-mb-md q-mx-auto" src="../../assets/logo-modular.svg">
40
+ </div>
41
+ </div>
26
42
  </q-drawer>
27
43
  </template>
28
44
 
29
45
  <script>
30
46
  import { screenMixin } from '../../mixins'
47
+ import { isLocalDevelopment } from '../../helpers'
31
48
 
32
49
  export default {
50
+ name: 'QasAppMenu',
51
+
33
52
  mixins: [screenMixin],
34
53
 
35
54
  props: {
@@ -46,22 +65,50 @@ export default {
46
65
  value: {
47
66
  default: true,
48
67
  type: Boolean
68
+ },
69
+
70
+ title: {
71
+ default: '',
72
+ type: String
73
+ },
74
+
75
+ modules: {
76
+ default: () => [],
77
+ type: Array
49
78
  }
50
79
  },
51
80
 
52
81
  data () {
53
82
  return {
54
- miniMode: false
83
+ miniMode: false,
84
+ module: '',
85
+ isMini: false
55
86
  }
56
87
  },
57
88
 
58
89
  computed: {
59
90
  activeItemClasses () {
60
- return 'bg-primary text-primary-contrast'
91
+ return 'bg-primary-contrast text-primary text-weight-bold'
61
92
  },
62
93
 
63
- activeSecondaryItemClasses () {
64
- return 'active bg-secondary-contrast text-primary-contrast'
94
+ activeItemClassesSecondary () {
95
+ return 'text-primary bg-secondary-contrast'
96
+ },
97
+
98
+ defaultModules () {
99
+ if (!isLocalDevelopment()) return this.modules
100
+
101
+ const defaultModules = [...this.modules]
102
+ const { host, protocol } = window.location
103
+ const value = `${protocol}//${host}`
104
+
105
+ // if app is in development mode (local) it's added a default module
106
+ defaultModules.unshift({
107
+ label: `Localhost ${this.title ? `(${this.title})` : ''}`,
108
+ value
109
+ })
110
+
111
+ return defaultModules
65
112
  },
66
113
 
67
114
  model: {
@@ -72,6 +119,29 @@ export default {
72
119
  set (value) {
73
120
  return this.$emit('input', value)
74
121
  }
122
+ },
123
+
124
+ currentModelOption () {
125
+ return this.defaultModules.find(module => module?.value === this.module)
126
+ },
127
+
128
+ displayModuleSection () {
129
+ return !this.isMini && this.defaultModules.length
130
+ },
131
+
132
+ currentModule () {
133
+ const hostname = window.location.hostname
134
+
135
+ return this.defaultModules.find(module => module?.value.includes(hostname))?.value
136
+ }
137
+ },
138
+
139
+ watch: {
140
+ currentModule: {
141
+ handler (value) {
142
+ this.module = value
143
+ },
144
+ immediate: true
75
145
  }
76
146
  },
77
147
 
@@ -81,7 +151,7 @@ export default {
81
151
  },
82
152
 
83
153
  shouldExpand ({ children, to }) {
84
- return children?.length && this.$route.matched.some(item => item.path === to.path)
154
+ return children?.length && this.$route.matched.some(item => item?.path === to?.path)
85
155
  },
86
156
 
87
157
  beforeHide () {
@@ -89,21 +159,35 @@ export default {
89
159
  this.model = true
90
160
  this.miniMode = !this.miniMode
91
161
  }
162
+ },
163
+
164
+ setMiniState (value) {
165
+ this.isMini = value
166
+ },
167
+
168
+ redirectHandler ({ value }) {
169
+ if (!value.includes(window.location.host)) {
170
+ window.location.href = value
171
+ }
172
+ },
173
+
174
+ toggleItem (index) {
175
+ const component = this.getComponent(index)
176
+
177
+ component?.to && this.isMini && component.toggle()
178
+ },
179
+
180
+ getComponent (index) {
181
+ return this.$refs[`item-${index}`]?.[0]
92
182
  }
93
183
  }
94
184
  }
95
185
  </script>
96
186
 
97
187
  <style lang="scss">
98
- .q-expansion-item {
99
- .active .q-expansion-item__toggle-icon {
100
- color: white !important;
101
- opacity: 1;
102
- }
103
-
104
- .q-expansion-item__toggle-icon {
105
- color: $primary;
106
- opacity: 0.2;
188
+ .qas-app-menu {
189
+ .q-expansion-item--expanded .q-item:not(&--active.q-item) {
190
+ background-color: $grey-1;
107
191
  }
108
192
  }
109
193
  </style>