{"version":3,"sources":["webpack:///../../../src/components/VCombobox/VCombobox.ts","webpack:///./src/views/team/TeamManage.vue?881c","webpack:///./src/views/team/TeamManage.vue?d209","webpack:///./src/components/InviteTeamMemberForm.vue?e694","webpack:///./src/components/InviteTeamMemberForm.vue","webpack:///./src/components/InviteTeamMemberForm.vue?fe66","webpack:///./src/components/InviteTeamMemberForm.vue?00c8","webpack:///./src/views/team/TeamManage.vue","webpack:///./src/views/team/TeamManage.vue?a174","webpack:///./src/views/team/TeamManage.vue?24eb","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///./src/components/InviteTeamMemberForm.vue?7fb7"],"names":["VAutocomplete","extend","name","props","delimiters","type","Array","default","returnObject","Boolean","data","editingIndex","computed","computedCounterValue","this","multiple","selectedItems","length","internalSearch","toString","hasSlot","VSelect","options","call","isAnyValueAllowed","menuCanShow","isFocused","hasDisplayedItems","$slots","hideNoData","methods","onInternalSearchChanged","val","delimiter","find","d","endsWith","slice","updateTags","updateMenuDimensions","genInput","input","attrs","on","paste","onPaste","genChipSelection","item","index","chip","componentOptions","listeners","dblclick","getText","selectedIndex","onChipInput","onEnterDown","e","preventDefault","getMenuIndex","$nextTick","updateSelf","onFilteredItemsChanged","oldVal","autoSelectFirst","onKeyDown","keyCode","keyCodes","left","$refs","selectionStart","enter","changeSelectedIndex","onTabDown","stopPropagation","selectItem","updateEditing","setSelectedItems","internalValue","setValue","value","updateCombobox","isUsingSlot","$scopedSlots","selection","hasChips","searchIsDirty","undefined","menuIndex","indexOf","splice","event","pastedItemText","clipboardData","_event$clipboardData","getData","findExistingIndex","render","_vm","_h","$createElement","_c","_self","_v","_s","$t","$event","openCreateItemDialog","model","callback","$$v","createItemDialog","expression","closeItemFormDialog","onSaved","staticClass","rolesUpdated","saveRolesDialog","saveRoles","search","headers","itemsLoading","team","scopedSlots","_u","key","fn","ref","openDeleteTeamMemberDialog","id","getRoleItems","onRolesOkClicked","proxy","$set","_e","inactive","deleteTeamMemberDialog","deleteTeamMember","staticRenderFns","emailErrors","email","roles","clear","sending","send","namespace","InviteTeamMemberForm","Vue","constructor","created","resetForm","TeamApiService","sendInvite","teamMembers","map","x","then","Toast","success","cancel","catch","err","error","finally","TeamMemberRole","getKeys","text","el","blur","validateEmail","emailRegex","test","push","__decorate","Prop","Watch","Component","components","ConfirmDialog","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VCombobox","VRow","VSpacer","VTextField","ItemsManage","align","filterable","width","editItemDialog","selectedItem","getTeam","filter","teamMemberId","updatedRoles","y","res","a","console","log","openDeleteItemDialog","teammember","openUpdateItemDialog","VContainer","VDataTable","VDialog","VIcon","VGrid","functional","String","tag","h","children","trim","classes","Object","keys","startsWith","join","domProps","Grid","fluid","mergeData","class","concat"],"mappings":"+GAAA,kDAceA,cAAcC,OAAO,CAClCC,KAAM,aAENC,MAAO,CACLC,WAAY,CACVC,KAAMC,MACNC,QAAS,IAAO,IAElBC,aAAc,CACZH,KAAMI,QACNF,SAAS,IAIbG,KAAM,KAAM,CACVC,cAAe,IAGjBC,SAAU,CACRC,uBACE,OAAOC,KAAKC,SACRD,KAAKE,cAAcC,QAClBH,KAAKI,gBAAkB,IAAIC,WAAWF,QAE7CG,UACE,OAAOC,OAAQC,QAAQV,SAASQ,QAAQG,KAAKT,OAASA,KAAKC,UAE7DS,oBACE,OAAO,GAETC,cACE,QAAKX,KAAKY,YAEHZ,KAAKa,qBACPb,KAAKc,OAAO,aAAed,KAAKe,cAIzCC,QAAS,CACPC,wBAAyBC,GACvB,GACEA,GACAlB,KAAKC,UACLD,KAAKV,WAAWa,OAChB,CACA,MAAMgB,EAAYnB,KAAKV,WAAW8B,KAAKC,GAAKH,EAAII,SAASD,IACxC,MAAbF,IACFnB,KAAKI,eAAiBc,EAAIK,MAAM,EAAGL,EAAIf,OAASgB,EAAUhB,QAC1DH,KAAKwB,cAITxB,KAAKyB,wBAEPC,WACE,MAAMC,EAAQzC,OAAcsB,QAAQQ,QAAQU,SAASjB,KAAKT,MAK1D,cAHO2B,EAAM/B,KAAMgC,MAAOxC,KAC1BuC,EAAM/B,KAAMiC,GAAIC,MAAQ9B,KAAK+B,QAEtBJ,GAETK,iBAAkBC,EAAcC,GAC9B,MAAMC,EAAO5B,OAAQC,QAAQQ,QAAQgB,iBAAiBvB,KAAKT,KAAMiC,EAAMC,GAcvE,OAXIlC,KAAKC,WACPkC,EAAKC,iBAAkBC,UAAa,IAC/BF,EAAKC,iBAAkBC,UAC1BC,SAAU,KACRtC,KAAKH,aAAeqC,EACpBlC,KAAKI,eAAiBJ,KAAKuC,QAAQN,GACnCjC,KAAKwC,eAAiB,KAKrBL,GAETM,YAAaR,GACX1B,OAAQC,QAAQQ,QAAQyB,YAAYhC,KAAKT,KAAMiC,GAE/CjC,KAAKH,cAAgB,GAIvB6C,YAAaC,GACXA,EAAEC,iBAEE5C,KAAK6C,gBAAkB,GAE3B7C,KAAK8C,UAAU9C,KAAK+C,aAEtBC,uBAAwB9B,EAAc+B,GAC/BjD,KAAKkD,iBAEVhE,OAAcsB,QAAQQ,QAAQgC,uBAAuBvC,KAAKT,KAAMkB,EAAK+B,IAEvEE,UAAWR,GACT,MAAMS,EAAUT,EAAES,QAElB7C,OAAQC,QAAQQ,QAAQmC,UAAU1C,KAAKT,KAAM2C,GAIzC3C,KAAKC,UACPmD,IAAYC,OAASC,MACe,IAApCtD,KAAKuD,MAAM5B,MAAM6B,eAEjBxD,KAAK+C,aACIK,IAAYC,OAASI,OAC9BzD,KAAK0C,YAAYC,GAOnB3C,KAAK0D,oBAAoBN,IAE3BO,UAAWhB,GAIT,GAAI3C,KAAKC,UACPD,KAAKI,iBACoB,IAAzBJ,KAAK6C,eAKL,OAHAF,EAAEC,iBACFD,EAAEiB,kBAEK5D,KAAKwB,aAGdtC,OAAcsB,QAAQQ,QAAQ2C,UAAUlD,KAAKT,KAAM2C,IAErDkB,WAAY5B,GAENjC,KAAKH,cAAgB,EACvBG,KAAK8D,gBAEL5E,OAAcsB,QAAQQ,QAAQ6C,WAAWpD,KAAKT,KAAMiC,IAGxD8B,mBAC4B,MAAtB/D,KAAKgE,eACgB,KAAvBhE,KAAKgE,cAELhE,KAAKE,cAAgB,GAErBF,KAAKE,cAAgBF,KAAKC,SAAWD,KAAKgE,cAAgB,CAAChE,KAAKgE,gBAGpEC,SAAUC,GAAW,MACnB3D,OAAQC,QAAQQ,QAAQiD,SAASxD,KAAKT,KAAtC,SAA4CkE,GAA5C,EAAqDlE,KAAKI,iBAE5D0D,gBACE,MAAMI,EAAQlE,KAAKgE,cAAczC,QACjC2C,EAAMlE,KAAKH,cAAgBG,KAAKI,eAEhCJ,KAAKiE,SAASC,GAEdlE,KAAKH,cAAgB,GAEvBsE,iBACE,MAAMC,EAAczE,QAAQK,KAAKqE,aAAaC,YAActE,KAAKuE,SAI7DH,IAAgBpE,KAAKwE,gBAIrBxE,KAAKI,iBAAmBJ,KAAKuC,QAAQvC,KAAKgE,gBAAgBhE,KAAKiE,WAI/DG,IAAapE,KAAKI,oBAAiBqE,KAEzC1B,aACE/C,KAAKC,SAAWD,KAAKwB,aAAexB,KAAKmE,kBAE3C3C,aACE,MAAMkD,EAAY1E,KAAK6C,eAKvB,GAAI6B,EAAY,IACb1E,KAAKwE,cACN,OAEF,GAAIxE,KAAKH,cAAgB,EACvB,OAAOG,KAAK8D,gBAGd,MAAM5B,EAAQlC,KAAKE,cAAcyE,QAAQ3E,KAAKI,gBAI9C,GAAI8B,GAAS,EAAG,CACd,MAAM8B,EAAgBhE,KAAKgE,cAAczC,QACzCyC,EAAcY,OAAO1C,EAAO,GAE5BlC,KAAKiE,SAASD,GAMhB,GAAIU,GAAa,EAAG,OAAQ1E,KAAKI,eAAiB,KAElDJ,KAAK6D,WAAW7D,KAAKI,gBACrBJ,KAAKI,eAAiB,MAExB2B,QAAS8C,GAAqB,MAC5B,IAAK7E,KAAKC,UAAYD,KAAKwE,cAAe,OAE1C,MAAMM,EAAc,SAAGD,EAAME,oBAAT,EAAGC,EAAqBC,QAAQ,4CAChDH,IAAqE,IAAnD9E,KAAKkF,kBAAkBJ,KAC3CD,EAAMjC,iBACNrC,OAAQC,QAAQQ,QAAQ6C,WAAWpD,KAAKT,KAAM8E,S,oCC3OtD,yBAA4jB,EAAG,G,yCCA/jB,IAAIK,EAAS,WAAa,IAAIC,EAAIpF,KAASqF,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,cAAc,CAAC3D,MAAM,CAAC,MAAQ,KAAK,CAAC2D,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACH,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,iCAAiC,GAAGJ,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC3D,MAAM,CAAC,KAAO,SAAS,MAAQ,UAAU,UAAY,GAAG,QAAU,GAAG,MAAQ,IAAIC,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAIS,0BAA0B,CAACT,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,mCAAmCJ,EAAG,WAAW,CAAC3D,MAAM,CAAC,WAAa,GAAG,MAAQ,OAAOkE,MAAM,CAAC5B,MAAOkB,EAAoB,iBAAEW,SAAS,SAAUC,GAAMZ,EAAIa,iBAAiBD,GAAKE,WAAW,qBAAqB,CAACX,EAAG,uBAAuB,CAAC3D,MAAM,CAAC,OAASwD,EAAIe,oBAAoB,QAAUf,EAAIgB,YAAY,GAAGb,EAAG,QAAQ,CAACc,YAAY,OAAOzE,MAAM,CAAC,UAAYwD,EAAIkB,aAAa,KAAO,SAAS,MAAQ,UAAU,UAAY,GAAG,QAAU,GAAG,MAAQ,IAAIzE,GAAG,CAAC,MAAQ,SAAS+D,GAAQR,EAAImB,iBAAkB,KAAQ,CAACnB,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,4BAA4BJ,EAAG,WAAW,CAAC3D,MAAM,CAAC,MAAQ,OAAOkE,MAAM,CAAC5B,MAAOkB,EAAmB,gBAAEW,SAAS,SAAUC,GAAMZ,EAAImB,gBAAgBP,GAAKE,WAAW,oBAAoB,CAACX,EAAG,gBAAgB,CAAC3D,MAAM,CAAC,WAAawD,EAAIO,GAAG,wBAAwB,MAAQ,UAAU,OAASP,EAAIO,GAAG,wBAAwB,iBAAmB,aAEvwC,WAAaP,EAAIO,GAAG,qBAAqB,OAAS,WAAc,OAAOP,EAAIoB,aAAe,QAAUpB,EAAIO,GAAG,+BAA+B,aAAe,WAAc,OAAQP,EAAImB,iBAAkB,OAAc,IAAI,IAAI,IAAI,GAAGhB,EAAG,MAAM,CAACc,YAAY,mBAAmBd,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAC3D,MAAM,CAAC,GAAK,MAAM,CAAC2D,EAAG,eAAe,CAAC3D,MAAM,CAAC,GAAK,SAAS,SAAW,GAAG,QAAU,GAAG,KAAO,OAAO,YAAcwD,EAAIO,GAAG,gCAAgC,eAAe,GAAG,MAAQP,EAAIO,GAAG,sBAAsBG,MAAM,CAAC5B,MAAOkB,EAAU,OAAEW,SAAS,SAAUC,GAAMZ,EAAIqB,OAAOT,GAAKE,WAAW,aAAa,IAAI,IAAI,IAAI,GAAGX,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,eAAe,CAAC3D,MAAM,CAAC,QAAUwD,EAAIsB,QAAQ,QAAUtB,EAAIuB,aAAa,OAASvB,EAAIqB,OAAO,MAAQrB,EAAIwB,KAAK,eAAexB,EAAIO,GAAG,6BAA6BkB,YAAYzB,EAAI0B,GAAG,CAAC,CAACC,IAAI,eAAeC,GAAG,SAASC,GACt2B,IAAIhF,EAAOgF,EAAIhF,KACtB,MAAO,CAACsD,EAAG,QAAQ,CAAC3D,MAAM,CAAC,KAAO,GAAG,MAAQ,SAASC,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAI8B,2BAA2BjF,MAAS,CAACsD,EAAG,SAAS,CAACH,EAAIK,GAAG,2BAA2B,MAAM,CAACsB,IAAI,uBAAuBC,GAAG,SAASC,GACzN,IAAIhF,EAAOgF,EAAIhF,KACtB,MAAO,CAACsD,EAAG,aAAa,CAAC0B,IAAI,aAAehF,EAAKkF,GAAGvF,MAAM,CAAC,MAAQwD,EAAIgC,eAAe,eAAe,GAAG,QAAU,GAAG,SAAW,GAAG,MAAQ,GAAG,SAAW,IAAIvF,GAAG,CAAC,OAAS,SAAS+D,GAAQR,EAAIkB,cAAe,IAAOO,YAAYzB,EAAI0B,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,WAAW,MAAO,CAACzB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACc,YAAY,gCAAgC,CAACd,EAAG,QAAQ,CAAC3D,MAAM,CAAC,KAAO,GAAG,QAAU,GAAG,MAAQ,WAAWC,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAIiC,iBAAiBpF,MAAS,CAACmD,EAAIK,GAAG,WAAW,IAAI,KAAK6B,OAAM,IAAO,MAAK,GAAMxB,MAAM,CAAC5B,MAAOjC,EAAiB,aAAE8D,SAAS,SAAUC,GAAMZ,EAAImC,KAAKtF,EAAM,eAAgB+D,IAAME,WAAW,0BAA0B,CAACa,IAAI,gBAAgBC,GAAG,SAASC,GACxqB,IAAIhF,EAAOgF,EAAIhF,KACtB,MAAO,CAAEA,EAAa,SAAEsD,EAAG,SAAS,CAAC3D,MAAM,CAAC,MAAQ,UAAU,CAACwD,EAAIK,GAAG,mBAAmBL,EAAIoC,KAAOvF,EAAKwF,SAA6ErC,EAAIoC,KAAvEjC,EAAG,SAAS,CAAC3D,MAAM,CAAC,MAAQ,YAAY,CAACwD,EAAIK,GAAG,2BAAoC,IAAI,GAAGF,EAAG,WAAW,CAAC3D,MAAM,CAAC,MAAQ,OAAOkE,MAAM,CAAC5B,MAAOkB,EAA0B,uBAAEW,SAAS,SAAUC,GAAMZ,EAAIsC,uBAAuB1B,GAAKE,WAAW,2BAA2B,CAACX,EAAG,gBAAgB,CAAC3D,MAAM,CAAC,WAAawD,EAAIO,GAAG,+BAA+B,MAAQ,QAAQ,OAASP,EAAIO,GAAG,+BAA+B,iBAAmB,aAEvhB,WAAaP,EAAIO,GAAG,qBAAqB,OAAS,WAAc,OAAOP,EAAIuC,oBAAsB,QAAUvC,EAAIO,GAAG,4BAA4B,aAAe,WAAc,OAAQP,EAAIsC,wBAAyB,OAAc,IAAI,IACpOE,EAAkB,G,oFCXlB,EAAS,WAAa,IAAIxC,EAAIpF,KAASqF,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,KAAK,CAACH,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,gCAAgCJ,EAAG,cAAc,CAACA,EAAG,eAAe,CAAC3D,MAAM,CAAC,GAAK,QAAQ,SAAW,GAAG,QAAU,GAAG,KAAO,QAAQ,iBAAiBwD,EAAIyC,YAAY,YAAczC,EAAIO,GAAG,qCAAqC,MAAQP,EAAIO,GAAG,gCAAgCG,MAAM,CAAC5B,MAAOkB,EAAS,MAAEW,SAAS,SAAUC,GAAMZ,EAAI0C,MAAM9B,GAAKE,WAAW,WAAWX,EAAG,aAAa,CAAC0B,IAAI,aAAarF,MAAM,CAAC,MAAQwD,EAAIgC,eAAe,MAAQ,QAAQ,eAAe,GAAG,QAAU,GAAG,SAAW,GAAG,SAAW,IAAIvF,GAAG,CAAC,OAAS,SAAS+D,GAAQR,EAAIkB,cAAe,IAAOO,YAAYzB,EAAI0B,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,WAAW,MAAO,CAACzB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACc,YAAY,gCAAgC,CAACd,EAAG,QAAQ,CAAC3D,MAAM,CAAC,KAAO,GAAG,QAAU,GAAG,MAAQ,WAAWC,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAIiC,sBAAsB,CAACjC,EAAIK,GAAG,IAAIL,EAAIM,GAAGN,EAAIO,GAAG,mCAAmC,QAAQ,IAAI,KAAK2B,OAAM,KAAQxB,MAAM,CAAC5B,MAAOkB,EAAS,MAAEW,SAAS,SAAUC,GAAMZ,EAAI2C,MAAM/B,GAAKE,WAAW,YAAY,GAAGX,EAAG,iBAAiB,CAACA,EAAG,QAAQ,CAAC3D,MAAM,CAAC,QAAU,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAI4C,WAAW,CAAC5C,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,qCAAqCJ,EAAG,YAAYA,EAAG,QAAQ,CAAC3D,MAAM,CAAC,QAAUwD,EAAI6C,QAAQ,MAAQ,UAAU,QAAU,GAAG,KAAO,IAAIpG,GAAG,CAAC,MAAQ,SAAS+D,GAAQ,OAAOR,EAAI8C,UAAU,CAAC9C,EAAIK,GAAGL,EAAIM,GAAGN,EAAIO,GAAG,oCAAoC,IAAI,IAC1/C,EAAkB,G,YCyDTwC,eAAU,QAKvB,IAAqBC,EAArB,cAAkDC,OAAlDC,c,oBAIQ,KAAAR,MAAQ,GACR,KAAAD,YAAwB,GACxB,KAAAE,MAA0B,GAC1B,KAAAE,SAAU,EAEjBM,UACCvI,KAAKwI,YAGCN,QACDlI,KAAK8H,OAAS9H,KAAK6H,YAAY1H,OAAS,IAE7CH,KAAKiI,SAAU,EACfQ,OAAeC,WAAW,CACzBC,YAAa,CACZ,CACCb,MAAO9H,KAAK8H,MACZC,MAAO/H,KAAK+H,MAAMa,IAAIC,GAAMA,EAAU3E,WAIvC4E,KAAK,KACLC,OAAMC,QAAQhJ,KAAK2F,GAAG,+BAA+BtF,YACrDL,KAAKwI,YACLxI,KAAKiJ,SACLjJ,KAAKoG,YAEL8C,MAAMC,IACNJ,OAAMK,MAAMD,KAEZE,QAAQ,KACRrJ,KAAKiI,SAAU,KAIXb,eACN,OAAOkC,OAAeC,UAAUX,IAAIC,IAC5B,CAAEW,KAAMF,OAAejJ,SAASwI,GAAI3E,MAAO2E,KAI7CxB,mBACN,MAAMoC,EAAKzJ,KAAKuD,MAAM,cAClBkG,GAAIA,EAAGC,OAGL1B,QACNhI,KAAKwI,YACLxI,KAAKiJ,SAGET,YACPxI,KAAK8H,MAAQ,GACb9H,KAAK6H,YAAc,GACnB7H,KAAK+H,MAAQ,GAIH4B,gBACV,GAAG3J,KAAK8H,MACR,CACO,MAAM8B,EAAa,6BACnB5J,KAAK6H,YAAc,GACd+B,EAAWC,KAAK7J,KAAK8H,QACtB9H,KAAK6H,YAAYiC,KAAK,oBAnETC,gBAAxBC,eAAK,CAAEvK,QAAS,QAAO,2BAChBsK,gBAAPC,kBAAM,6BACCD,gBAAPC,kBAAM,8BA2DJD,gBADFE,eAAM,UAAQ,kCA7DK7B,EAAoB,gBAHxC8B,eAAU,CACVC,WAAY,CAAEC,yBAEMhC,WC/D0X,I,6ICQ3YiC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,EAAiB,QAchC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,WAAA,OAAWC,OAAA,KAAKC,YAAA,KAAUC,OAAA,KAAKC,UAAA,KAAQC,aAAA,OC+G1F5C,eAAU,QAKvB,IAAqB6C,EAArB,cAAyC3C,OAAzCC,c,oBACQ,KAAAgB,eAAiBA,OACjB,KAAA7C,OAAS,GACT,KAAAH,cAAe,EACf,KAAAC,iBAAkB,EAClB,KAAAG,QAAU,CAChB,CACC8C,KAAMxJ,KAAK2F,GAAG,mBACdsF,MAAO,QACPC,YAAY,EACZhH,MAAO,QAER,CACCsF,KAAMxJ,KAAK2F,GAAG,oBACdsF,MAAO,QACPC,YAAY,EACZhH,MAAO,SAER,CACCsF,KAAMxJ,KAAK2F,GAAG,oBACdsF,MAAO,QACPC,YAAY,EACZC,MAAO,MACPjH,MAAO,mBAER,CACCsF,KAAMxJ,KAAK2F,GAAG,qBACdsF,MAAO,SACP/G,MAAO,YAER,CACCsF,KAAM,GACNyB,MAAO,MACP/G,MAAO,YAIF,KAAAwD,wBAAyB,EACzB,KAAAzB,kBAAmB,EACnB,KAAAmF,gBAAiB,EACjB,KAAAzE,cAAe,EACf,KAAAC,KAAqB,GACrB,KAAAyE,aAAkC,KAEzC9C,UACCvI,KAAKsL,UAGCjE,iBAAiBpF,GACvB,MAAMwH,EAAKzJ,KAAKuD,MAAM,aAAatB,EAAKkF,IACpCsC,GAAIA,EAAGC,OAGLvD,sBACNnG,KAAKiG,kBAAmB,EACxBjG,KAAKoL,gBAAiB,EACtBpL,KAAKqL,aAAe,KAGdnE,2BAA2BjF,GACjCjC,KAAKqL,aAAepJ,EACpBjC,KAAK0H,wBAAyB,EAGxBC,mBACN,GAAK3H,KAAKqL,aACV,OAAO5C,OAAed,iBAAiB3H,KAAKqL,aAAalE,IACvD2B,KAAK,KACLC,OAAMC,QAAQhJ,KAAK2F,GAAG,sCAAsCtF,YAC5DL,KAAK4G,KAAO5G,KAAK4G,KAAK2E,OACrB1C,GAAKA,EAAE1B,KAAQnH,KAAKqL,aAA4BlE,MAGjD+B,MAAMC,GAAOJ,OAAMK,MAAMD,IAGrB3C,YACN,OAAOiC,OAAejC,UAAU,CAC/BmC,YAAa3I,KAAK4G,KAAKgC,IAAIC,IACnB,CACN2C,aAAc3C,EAAE1B,GAChBY,MAAQc,EAAU4C,aAAa7C,IAAI8C,GAAKA,EAAExH,YAI3C4E,KAAK6C,GAAO5C,OAAMC,QAAQhJ,KAAK2F,GAAG,+BAA+BtF,aACjE6I,MAAMC,GAAOJ,OAAMK,MAAMD,IAGrB/B,eACN,OAAOkC,OAAeC,UAAUX,IAAIC,IAC5B,CAAEW,KAAMF,OAAejJ,SAASwI,GAAI3E,MAAO2E,KAI7CgB,KAAK+B,GAEX,OADAC,QAAQC,IAAIF,GACL,GAGDN,UACNtL,KAAK2G,cAAe,EACpB8B,OAAe6C,UACbxC,KAAK6C,IACL3L,KAAK4G,KAAO+E,EAAI/E,KAAKgC,IAAIC,IACjB,IACHA,EACH4C,aAAc5C,EAAEd,MAAMa,IAAI8C,IAClB,CACNlC,KAAMF,OAAejJ,SAASqL,GAC9BxH,MAAOwH,UAMXxC,MAAMC,IACNJ,OAAMK,MAAMD,KAEZE,QAAQ,IAAOrJ,KAAK2G,cAAe,GAG/BP,UACNpG,KAAKsL,UAGCS,qBAAqBC,GAC3BhM,KAAKqL,aAAeW,EACpBhM,KAAK0H,wBAAyB,EAGxB7B,uBACN7F,KAAKqL,aAAe,KACpBrL,KAAKiG,kBAAmB,EAGlBgG,qBAAqBD,GAC3BhM,KAAKqL,aAAeW,EACpBhM,KAAKoL,gBAAiB,IA1IHJ,EAAW,gBAH/Bd,eAAU,CACVC,WAAY,CAAEC,qBAAehC,2BAET4C,WCrJkY,I,4DCQnZ,EAAY,eACd,EACA7F,EACAyC,GACA,EACA,KACA,WACA,MAIa,eAAiB,QAahC,IAAkB,EAAW,CAAC0C,OAAA,KAAKK,OAAA,KAAKC,YAAA,KAAUsB,aAAA,KAAWC,aAAA,KAAWC,UAAA,KAAQC,QAAA,KAAMxB,OAAA,KAAKE,aAAA,Q,uEC7B7E,SAAUuB,EAAOlN,GAE7B,OAAOiJ,OAAIlJ,OAAO,CAChBC,KAAM,KAAKA,EAEXmN,YAAY,EAEZlN,MAAO,CACL8H,GAAIqF,OACJC,IAAK,CACHlN,KAAMiN,OACN/M,QAAS,QAIb0F,OAAQuH,GAAG,MAAErN,EAAF,KAASO,EAAT,SAAe+M,IACxB/M,EAAKyG,YAAe,GAAGjH,KAAQQ,EAAKyG,aAAe,KAAMuG,OAEzD,MAAM,MAAEhL,GAAUhC,EAClB,GAAIgC,EAAO,CAEThC,EAAKgC,MAAQ,GACb,MAAMiL,EAAUC,OAAOC,KAAKnL,GAAO2J,OAAOxE,IAGxC,GAAY,SAARA,EAAgB,OAAO,EAE3B,MAAM7C,EAAQtC,EAAMmF,GAIpB,OAAIA,EAAIiG,WAAW,UACjBpN,EAAKgC,MAAOmF,GAAO7C,GACZ,GAGFA,GAA0B,kBAAVA,IAGrB2I,EAAQ1M,SAAQP,EAAKyG,aAAe,IAAIwG,EAAQI,KAAK,MAQ3D,OALI5N,EAAM8H,KACRvH,EAAKsN,SAAWtN,EAAKsN,UAAY,GACjCtN,EAAKsN,SAAS/F,GAAK9H,EAAM8H,IAGpBuF,EAAErN,EAAMoN,IAAK7M,EAAM+M,M,gBC1CjBQ,SAAK,aAAahO,OAAO,CACtCC,KAAM,cACNmN,YAAY,EACZlN,MAAO,CACL8H,GAAIqF,OACJC,IAAK,CACHlN,KAAMiN,OACN/M,QAAS,OAEX2N,MAAO,CACL7N,KAAMI,QACNF,SAAS,IAGb0F,OAAQuH,GAAG,MAAErN,EAAF,KAASO,EAAT,SAAe+M,IACxB,IAAIE,EACJ,MAAM,MAAEjL,GAAUhC,EA2BlB,OA1BIgC,IAEFhC,EAAKgC,MAAQ,GACbiL,EAAUC,OAAOC,KAAKnL,GAAO2J,OAAOxE,IAGlC,GAAY,SAARA,EAAgB,OAAO,EAE3B,MAAM7C,EAAQtC,EAAMmF,GAIpB,OAAIA,EAAIiG,WAAW,UACjBpN,EAAKgC,MAAOmF,GAAO7C,GACZ,GAGFA,GAA0B,kBAAVA,KAIvB7E,EAAM8H,KACRvH,EAAKsN,SAAWtN,EAAKsN,UAAY,GACjCtN,EAAKsN,SAAS/F,GAAK9H,EAAM8H,IAGpBuF,EACLrN,EAAMoN,IACNY,eAAUzN,EAAM,CACdyG,YAAa,YACbiH,MAAO9N,MAAW,CAChB,mBAAoBH,EAAM+N,QACzBG,OAAOV,GAAW,MAEvBF,O,gFC3DN,yBAAijB,EAAG","file":"js/team-manage.32375305.js","sourcesContent":["// Styles\nimport '../VAutocomplete/VAutocomplete.sass'\n\n// Extensions\nimport VSelect from '../VSelect/VSelect'\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n\n props: {\n delimiters: {\n type: Array,\n default: () => ([]),\n } as PropValidator<string[]>,\n returnObject: {\n type: Boolean,\n default: true,\n },\n },\n\n data: () => ({\n editingIndex: -1,\n }),\n\n computed: {\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.internalSearch || '').toString().length\n },\n hasSlot (): boolean {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple\n },\n isAnyValueAllowed (): boolean {\n return true\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems ||\n (!!this.$slots['no-data'] && !this.hideNoData)\n },\n },\n\n methods: {\n onInternalSearchChanged (val: any) {\n if (\n val &&\n this.multiple &&\n this.delimiters.length\n ) {\n const delimiter = this.delimiters.find(d => val.endsWith(d))\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length)\n this.updateTags()\n }\n }\n\n this.updateMenuDimensions()\n },\n genInput () {\n const input = VAutocomplete.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n input.data!.on!.paste = this.onPaste\n\n return input\n },\n genChipSelection (item: object, index: number) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index)\n\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions!.listeners! = {\n ...chip.componentOptions!.listeners!,\n dblclick: () => {\n this.editingIndex = index\n this.internalSearch = this.getText(item)\n this.selectedIndex = -1\n },\n }\n }\n\n return chip\n },\n onChipInput (item: object) {\n VSelect.options.methods.onChipInput.call(this, item)\n\n this.editingIndex = -1\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown (e: Event) {\n e.preventDefault()\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return\n\n this.$nextTick(this.updateSelf)\n },\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n if (!this.autoSelectFirst) return\n\n VAutocomplete.options.methods.onFilteredItemsChanged.call(this, val, oldVal)\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n VSelect.options.methods.onKeyDown.call(this, e)\n\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple &&\n keyCode === keyCodes.left &&\n this.$refs.input.selectionStart === 0\n ) {\n this.updateSelf()\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onTabDown (e: KeyboardEvent) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple &&\n this.internalSearch &&\n this.getMenuIndex() === -1\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n return this.updateTags()\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e)\n },\n selectItem (item: object) {\n // Currently only supports items:<string[]>\n if (this.editingIndex > -1) {\n this.updateEditing()\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item)\n }\n },\n setSelectedItems () {\n if (this.internalValue == null ||\n this.internalValue === ''\n ) {\n this.selectedItems = []\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue]\n }\n },\n setValue (value?: any) {\n VSelect.options.methods.setValue.call(this, value ?? this.internalSearch)\n },\n updateEditing () {\n const value = this.internalValue.slice()\n value[this.editingIndex] = this.internalSearch\n\n this.setValue(value)\n\n this.editingIndex = -1\n },\n updateCombobox () {\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips\n\n // If search is not dirty and is\n // using slot, do nothing\n if (isUsingSlot && !this.searchIsDirty) return\n\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue()\n\n // Reset search if using slot\n // to avoid a double input\n if (isUsingSlot) this.internalSearch = undefined\n },\n updateSelf () {\n this.multiple ? this.updateTags() : this.updateCombobox()\n },\n updateTags () {\n const menuIndex = this.getMenuIndex()\n\n // If the user is not searching\n // and no menu item is selected\n // do nothing\n if (menuIndex < 0 &&\n !this.searchIsDirty\n ) return\n\n if (this.editingIndex > -1) {\n return this.updateEditing()\n }\n\n const index = this.selectedItems.indexOf(this.internalSearch)\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n const internalValue = this.internalValue.slice()\n internalValue.splice(index, 1)\n\n this.setValue(internalValue)\n }\n\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return (this.internalSearch = null)\n\n this.selectItem(this.internalSearch)\n this.internalSearch = null\n },\n onPaste (event: ClipboardEvent) {\n if (!this.multiple || this.searchIsDirty) return\n\n const pastedItemText = event.clipboardData?.getData('text/vnd.vuetify.autocomplete.item+plain')\n if (pastedItemText && this.findExistingIndex(pastedItemText as any) === -1) {\n event.preventDefault()\n VSelect.options.methods.selectItem.call(this, pastedItemText as any)\n }\n },\n },\n})\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamManage.vue?vue&type=style&index=0&id=d5ba273e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamManage.vue?vue&type=style&index=0&id=d5ba273e&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('div',[_c('v-row',[_c('v-col',[_c('h1',[_vm._v(_vm._s(_vm.$t('TeamManage.teamMembers')))])])],1),_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"type\":\"button\",\"color\":\"primary\",\"depressed\":\"\",\"rounded\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.openCreateItemDialog()}}},[_vm._v(_vm._s(_vm.$t('TeamManage.inviteTeamMember')))]),_c('v-dialog',{attrs:{\"persistent\":\"\",\"width\":\"600\"},model:{value:(_vm.createItemDialog),callback:function ($$v) {_vm.createItemDialog=$$v},expression:\"createItemDialog\"}},[_c('InviteTeamMemberForm',{attrs:{\"cancel\":_vm.closeItemFormDialog,\"onSaved\":_vm.onSaved}})],1),_c('v-btn',{staticClass:\"ml-4\",attrs:{\"disabled\":!_vm.rolesUpdated,\"type\":\"button\",\"color\":\"primary\",\"depressed\":\"\",\"rounded\":\"\",\"large\":\"\"},on:{\"click\":function($event){_vm.saveRolesDialog = true}}},[_vm._v(_vm._s(_vm.$t('TeamManage.saveRoles')))]),_c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.saveRolesDialog),callback:function ($$v) {_vm.saveRolesDialog=$$v},expression:\"saveRolesDialog\"}},[_c('ConfirmDialog',{attrs:{\"actionText\":_vm.$t('TeamManage.saveRoles'),\"color\":'primary',\"header\":_vm.$t('TeamManage.saveRoles'),\"onActionComplete\":function () {\n\t\t\t\t\t\t\t\t/* */\n\t\t\t\t\t\t\t},\"cancelText\":_vm.$t('TeamManage.cancel'),\"action\":function () { return _vm.saveRoles(); },\"message\":_vm.$t('TeamManage.confirmSaveRoles'),\"cancelAction\":function () { return (_vm.saveRolesDialog = false); }}})],1)],1)],1)],1),_c('div',{staticClass:\"header-divider\"}),_c('v-row',[_c('v-col',[_c('v-row',[_c('v-col',{attrs:{\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"id\":\"search\",\"outlined\":\"\",\"rounded\":\"\",\"type\":\"text\",\"placeholder\":_vm.$t('TeamManage.searchTeamMembers'),\"hide-details\":\"\",\"label\":_vm.$t('TeamManage.search')},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"loading\":_vm.itemsLoading,\"search\":_vm.search,\"items\":_vm.team,\"no-data-text\":_vm.$t('TeamManage.noTeamMembers')},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(ref){\n\t\t\t\t\t\t\tvar item = ref.item;\nreturn [_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.openDeleteTeamMemberDialog(item)}}},[_c('v-icon',[_vm._v(\"ri-delete-bin-5-line\")])],1)]}},{key:\"item.teamMemberRoles\",fn:function(ref){\n\t\t\t\t\t\t\tvar item = ref.item;\nreturn [_c('v-combobox',{ref:'rolesCombo' + item.id,attrs:{\"items\":_vm.getRoleItems(),\"hide-details\":\"\",\"rounded\":\"\",\"outlined\":\"\",\"dense\":\"\",\"multiple\":\"\"},on:{\"change\":function($event){_vm.rolesUpdated = true}},scopedSlots:_vm._u([{key:\"append-item\",fn:function(){return [_c('v-row',[_c('v-col',{staticClass:\"d-flex justify-end pa-0 pr-4\"},[_c('v-btn',{attrs:{\"text\":\"\",\"rounded\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onRolesOkClicked(item)}}},[_vm._v(\" OK \")])],1)],1)]},proxy:true}],null,true),model:{value:(item.updatedRoles),callback:function ($$v) {_vm.$set(item, \"updatedRoles\", $$v)},expression:\"item.updatedRoles\"}})]}},{key:\"item.inactive\",fn:function(ref){\n\t\t\t\t\t\t\tvar item = ref.item;\nreturn [(item.inactive)?_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"ri-close-line\")]):_vm._e(),(!item.inactive)?_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"ri-check-line\")]):_vm._e()]}}])})],1)],1),_c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.deleteTeamMemberDialog),callback:function ($$v) {_vm.deleteTeamMemberDialog=$$v},expression:\"deleteTeamMemberDialog\"}},[_c('ConfirmDialog',{attrs:{\"actionText\":_vm.$t('TeamManage.deleteTeamMember'),\"color\":'error',\"header\":_vm.$t('TeamManage.deleteTeamMember'),\"onActionComplete\":function () {\n\t\t\t\t\t/* */\n\t\t\t\t},\"cancelText\":_vm.$t('TeamManage.cancel'),\"action\":function () { return _vm.deleteTeamMember(); },\"message\":_vm.$t('TeamManage.confirmDelete'),\"cancelAction\":function () { return (_vm.deleteTeamMemberDialog = false); }}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('h2',[_vm._v(_vm._s(_vm.$t('InviteTeamMember.title')))])]),_c('v-card-text',[_c('v-text-field',{attrs:{\"id\":\"email\",\"outlined\":\"\",\"rounded\":\"\",\"type\":\"email\",\"error-messages\":_vm.emailErrors,\"placeholder\":_vm.$t('InviteTeamMember.emailPlaceholder'),\"label\":_vm.$t('InviteTeamMember.emailLabel')},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-combobox',{ref:\"rolesCombo\",attrs:{\"items\":_vm.getRoleItems(),\"label\":\"Roles\",\"hide-details\":\"\",\"rounded\":\"\",\"outlined\":\"\",\"multiple\":\"\"},on:{\"change\":function($event){_vm.rolesUpdated = true}},scopedSlots:_vm._u([{key:\"append-item\",fn:function(){return [_c('v-row',[_c('v-col',{staticClass:\"d-flex justify-end pa-0 pr-4\"},[_c('v-btn',{attrs:{\"text\":\"\",\"rounded\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onRolesOkClicked()}}},[_vm._v(\" \"+_vm._s(_vm.$t('InviteTeamMember.rolesOkButton'))+\" \")])],1)],1)]},proxy:true}]),model:{value:(_vm.roles),callback:function ($$v) {_vm.roles=$$v},expression:\"roles\"}})],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"rounded\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},[_vm._v(_vm._s(_vm.$t('InviteTeamMember.cancelButton')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"loading\":_vm.sending,\"color\":\"primary\",\"rounded\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.send()}}},[_vm._v(_vm._s(_vm.$t('InviteTeamMember.sendButton')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { namespace } from 'vuex-class';\r\nimport { Route } from 'vue-router';\r\nimport Toast from '@/services/toast.service';\r\nimport ConfirmDialog from '@/components/ConfirmDialog.vue';\r\nimport TeamApiService from '@/api/team.api';\r\nimport { Item } from '@/models/item';\r\nimport TeamMemberRole from '@/models/enums/teamMemberRole';\r\n\r\nconst auth = namespace('auth');\r\n\r\n@Component({\r\n\tcomponents: { ConfirmDialog }\r\n})\r\nexport default class InviteTeamMemberForm extends Vue {\r\n\t@Prop({ default: null }) public item!: Item;\r\n\t@Prop() public cancel!: any;\r\n\t@Prop() public onSaved!: any;\r\n\tpublic email = '';\r\n\tpublic emailErrors: string[] = [];\r\n\tpublic roles: TeamMemberRole[] = [];\r\n\tpublic sending = false;\r\n\r\n\tcreated() {\r\n\t\tthis.resetForm();\r\n\t}\r\n\r\n\tpublic send() {\r\n\t\tif (!this.email || this.emailErrors.length > 0) return;\r\n\r\n\t\tthis.sending = true;\r\n\t\tTeamApiService.sendInvite({\r\n\t\t\tteamMembers: [\r\n\t\t\t\t{\r\n\t\t\t\t\temail: this.email,\r\n\t\t\t\t\troles: this.roles.map(x => (x as any).value)\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tToast.success(this.$t('InviteTeamMember.inviteSent').toString());\r\n\t\t\t\tthis.resetForm();\r\n\t\t\t\tthis.cancel();\r\n\t\t\t\tthis.onSaved();\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tToast.error(err);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.sending = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic getRoleItems() {\r\n\t\treturn TeamMemberRole.getKeys().map(x => {\r\n\t\t\treturn { text: TeamMemberRole.toString(x), value: x };\r\n\t\t});\r\n\t}\r\n\r\n\tpublic onRolesOkClicked() {\r\n\t\tconst el = this.$refs[`rolesCombo`] as any;\r\n\t\tif (el) el.blur();\r\n\t}\r\n\r\n\tpublic clear() {\r\n\t\tthis.resetForm();\r\n\t\tthis.cancel();\r\n\t}\r\n\r\n\tprivate resetForm() {\r\n\t\tthis.email = '';\r\n\t\tthis.emailErrors = [];\r\n\t\tthis.roles = [];\r\n\t}\r\n\r\n\t@Watch('email')\r\n private validateEmail() {\r\n\t\tif(this.email)\r\n\t\t{\r\n \tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n \tthis.emailErrors = [];\r\n \tif (!emailRegex.test(this.email)) {\r\n \t this.emailErrors.push('Invalid email');\r\n \t}\r\n\t\t}\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteTeamMemberForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteTeamMemberForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InviteTeamMemberForm.vue?vue&type=template&id=76b51b53&scoped=true&\"\nimport script from \"./InviteTeamMemberForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./InviteTeamMemberForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InviteTeamMemberForm.vue?vue&type=style&index=0&id=76b51b53&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76b51b53\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VCombobox,VRow,VSpacer,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { namespace } from 'vuex-class';\r\nimport TeamApiService, { SaveRolesTeamMemberRequest } from '@/api/team.api';\r\nimport Toast from '@/services/toast.service';\r\nimport ConfirmDialog from '@/components/ConfirmDialog.vue';\r\nimport InviteTeamMemberForm from '@/components/InviteTeamMemberForm.vue';\r\nimport { TeamMember } from '@/models/teamMember';\r\nimport TeamMemberRole from '@/models/enums/teamMemberRole';\r\n\r\nconst auth = namespace('auth');\r\n\r\n@Component({\r\n\tcomponents: { ConfirmDialog, InviteTeamMemberForm }\r\n})\r\nexport default class ItemsManage extends Vue {\r\n\tpublic TeamMemberRole = TeamMemberRole;\r\n\tpublic search = '';\r\n\tpublic rolesUpdated = false;\r\n\tpublic saveRolesDialog = false;\r\n\tpublic headers = [\r\n\t\t{\r\n\t\t\ttext: this.$t('TeamManage.name'),\r\n\t\t\talign: 'start',\r\n\t\t\tfilterable: true,\r\n\t\t\tvalue: 'name'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttext: this.$t('TeamManage.email'),\r\n\t\t\talign: 'start',\r\n\t\t\tfilterable: true,\r\n\t\t\tvalue: 'email'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttext: this.$t('TeamManage.roles'),\r\n\t\t\talign: 'start',\r\n\t\t\tfilterable: true,\r\n\t\t\twidth: '400',\r\n\t\t\tvalue: 'teamMemberRoles'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttext: this.$t('TeamManage.active'),\r\n\t\t\talign: 'middle',\r\n\t\t\tvalue: 'inactive'\r\n\t\t},\r\n\t\t{\r\n\t\t\ttext: '',\r\n\t\t\talign: 'end',\r\n\t\t\tvalue: 'actions'\r\n\t\t}\r\n\t];\r\n\r\n\tpublic deleteTeamMemberDialog = false;\r\n\tpublic createItemDialog = false;\r\n\tpublic editItemDialog = false;\r\n\tpublic itemsLoading = false;\r\n\tpublic team: TeamMember[] = [];\r\n\tpublic selectedItem: TeamMember | null = null;\r\n\r\n\tcreated() {\r\n\t\tthis.getTeam();\r\n\t}\r\n\r\n\tpublic onRolesOkClicked(item) {\r\n\t\tconst el = this.$refs[`rolesCombo${item.id}`] as any;\r\n\t\tif (el) el.blur();\r\n\t}\r\n\r\n\tpublic closeItemFormDialog() {\r\n\t\tthis.createItemDialog = false;\r\n\t\tthis.editItemDialog = false;\r\n\t\tthis.selectedItem = null;\r\n\t}\r\n\r\n\tpublic openDeleteTeamMemberDialog(item: TeamMember) {\r\n\t\tthis.selectedItem = item;\r\n\t\tthis.deleteTeamMemberDialog = true;\r\n\t}\r\n\r\n\tpublic deleteTeamMember() {\r\n\t\tif (!this.selectedItem) return;\r\n\t\treturn TeamApiService.deleteTeamMember(this.selectedItem.id)\r\n\t\t\t.then(() => {\r\n\t\t\t\tToast.success(this.$t('TeamManage.deleteTeamMemberSuccess').toString());\r\n\t\t\t\tthis.team = this.team.filter(\r\n\t\t\t\t\tx => x.id !== (this.selectedItem as TeamMember).id\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t\t.catch(err => Toast.error(err));\r\n\t}\r\n\r\n\tpublic saveRoles() {\r\n\t\treturn TeamApiService.saveRoles({\r\n\t\t\tteamMembers: this.team.map(x => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tteamMemberId: x.id,\r\n\t\t\t\t\troles: (x as any).updatedRoles.map(y => y.value)\r\n\t\t\t\t} as SaveRolesTeamMemberRequest;\r\n\t\t\t})\r\n\t\t})\r\n\t\t\t.then(res => Toast.success(this.$t('TeamManage.saveRolesSuccess').toString()))\r\n\t\t\t.catch(err => Toast.error(err));\r\n\t}\r\n\r\n\tpublic getRoleItems() {\r\n\t\treturn TeamMemberRole.getKeys().map(x => {\r\n\t\t\treturn { text: TeamMemberRole.toString(x), value: x };\r\n\t\t});\r\n\t}\r\n\r\n\tpublic test(a) {\r\n\t\tconsole.log(a);\r\n\t\treturn '';\r\n\t}\r\n\r\n\tpublic getTeam() {\r\n\t\tthis.itemsLoading = true;\r\n\t\tTeamApiService.getTeam()\r\n\t\t\t.then(res => {\r\n\t\t\t\tthis.team = res.team.map(x => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...x,\r\n\t\t\t\t\t\tupdatedRoles: x.roles.map(y => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttext: TeamMemberRole.toString(y),\r\n\t\t\t\t\t\t\t\tvalue: y\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tToast.error(err);\r\n\t\t\t})\r\n\t\t\t.finally(() => (this.itemsLoading = false));\r\n\t}\r\n\r\n\tpublic onSaved() {\r\n\t\tthis.getTeam();\r\n\t}\r\n\r\n\tpublic openDeleteItemDialog(teammember: TeamMember) {\r\n\t\tthis.selectedItem = teammember;\r\n\t\tthis.deleteTeamMemberDialog = true;\r\n\t}\r\n\r\n\tpublic openCreateItemDialog() {\r\n\t\tthis.selectedItem = null;\r\n\t\tthis.createItemDialog = true;\r\n\t}\r\n\r\n\tpublic openUpdateItemDialog(teammember: TeamMember) {\r\n\t\tthis.selectedItem = teammember;\r\n\t\tthis.editItemDialog = true;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamManage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamManage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TeamManage.vue?vue&type=template&id=d5ba273e&scoped=true&\"\nimport script from \"./TeamManage.vue?vue&type=script&lang=ts&\"\nexport * from \"./TeamManage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TeamManage.vue?vue&type=style&index=0&id=d5ba273e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5ba273e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VCombobox,VContainer,VDataTable,VDialog,VIcon,VRow,VTextField})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array<any>({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteTeamMemberForm.vue?vue&type=style&index=0&id=76b51b53&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteTeamMemberForm.vue?vue&type=style&index=0&id=76b51b53&lang=scss&scoped=true&\""],"sourceRoot":""}