diff options
author | dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> | 2019-12-22 19:13:43 +0000 |
---|---|---|
committer | npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com> | 2019-12-22 19:48:34 +0000 |
commit | 0fb3569a65302c07e57743b366bf38ecb31dd18b (patch) | |
tree | 980b4bdb84f72ed56d265c7dee5c3af9bac5435e /apps/settings/js/vue-5.js.map | |
parent | 136e0a9422e3afd1ae6dca509974099194bb8611 (diff) | |
download | nextcloud-server-0fb3569a65302c07e57743b366bf38ecb31dd18b.tar.gz nextcloud-server-0fb3569a65302c07e57743b366bf38ecb31dd18b.zip |
Bump @nextcloud/auth from 0.3.1 to 1.1.0
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 0.3.1 to 1.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v0.3.1...v1.1.0)
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Signed-off-by: npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com>
Diffstat (limited to 'apps/settings/js/vue-5.js.map')
-rw-r--r-- | apps/settings/js/vue-5.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/apps/settings/js/vue-5.js.map b/apps/settings/js/vue-5.js.map index acc5858c278..0f3a44e7f66 100644 --- a/apps/settings/js/vue-5.js.map +++ b/apps/settings/js/vue-5.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?cdcc","webpack:///./node_modules/vue-click-outside/index.js","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?ae16","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?11a6","webpack:///./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js","webpack:///./apps/settings/src/views/Users.vue?1703","webpack:///./apps/settings/src/mixins/UserRowMixin.js","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?6483","webpack:///apps/settings/src/components/UserList/UserRowSimple.vue","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?e136","webpack:///apps/settings/src/components/UserList/UserRow.vue","webpack:///./apps/settings/src/components/UserList/UserRow.vue?4147","webpack:///./apps/settings/src/components/UserList/UserRow.vue","webpack:///./apps/settings/src/components/UserList/UserRow.vue?1d65","webpack:///apps/settings/src/components/UserList.vue","webpack:///./apps/settings/src/components/UserList.vue?69dd","webpack:///./apps/settings/src/components/UserList.vue","webpack:///./apps/settings/src/components/UserList.vue?ff1f","webpack:///apps/settings/src/views/Users.vue","webpack:///./apps/settings/src/views/Users.vue?83c0","webpack:///./apps/settings/src/views/Users.vue"],"names":["content","module","i","locals","exports","add","default","validate","binding","value","console","warn","expression","isServer","vNode","componentInstance","$isServer","bind","el","handler","e","context","elements","path","composedPath","length","unshift","target","contains","popupItem","len","isPopup","__vueClickOutside__","callback","document","addEventListener","update","unbind","removeEventListener","___CSS_LOADER_API_IMPORT___","push","t","n","r","l","call","m","c","d","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","prototype","hasOwnProperty","p","s","toString","this","map","btoa","unescape","encodeURIComponent","JSON","stringify","a","sources","sourceRoot","concat","join","id","css","media","sourceMap","parts","b","DEBUG","Error","head","getElementsByTagName","u","f","navigator","test","userAgent","toLowerCase","h","refs","g","createElement","type","appendChild","querySelector","parentNode","removeChild","w","setAttribute","ssrId","styleSheet","cssText","firstChild","createTextNode","v","y","filter","Boolean","childNodes","insertBefore","iterator","constructor","throttleLimit","loopCheckTimeout","loopCheckMaxCalls","passive","window","remove","STATE_CHANGER","INFINITE_EVENT","IDENTIFIER","INFINITE_LOOP","READY","LOADING","COMPLETE","ERROR","color","fontSize","padding","mode","props","spinner","distance","forceUseInfiniteWrapper","system","slots","noResults","noMore","error","errorBtnText","WARNINGS","ERRORS","STATUS","BUBBLES","render","attrs","class","Array","apply","CIRCLES","DEFAULT","SPIRAL","WAVEDOTS","options","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","name","computed","spinnerView","$attrs","toUpperCase","spinnerInConfig","_v","$createElement","_self","_c","tag","__inject__","__file","timers","caches","throttle","indexOf","setTimeout","splice","shift","reset","forEach","clearTimeout","isChecked","timer","times","track","key","getScrollElm","documentElement","save","scrollHeight","restore","scrollTop","k","offsetWidth","offsetHeight","S","data","scrollParent","scrollHandler","isFirstLoad","status","components","Spinner","isShowSpinner","isShowError","isShowNoResults","isShowNoMore","slotStyles","keys","replace","x","$slots","Number","String","direction","identifier","Date","onInfinite","Function","watch","stateChanger","mounted","$watch","getScrollParent","immediate","Event","$el","attemptLoad","$on","$nextTick","$forceUpdate","loaded","$emit","complete","deactivated","activated","methods","getCurrentDistance","pageYOffset","getBoundingClientRect","top","innerHeight","bottom","arguments","tagName","getComputedStyle","overflowY","hasAttribute","destroyed","staticClass","directives","rawName","style","_t","_s","trigger","domProps","textContent","on","click","E","_","config","productionTip","configurable","assign","component","Vue","user","required","settings","groups","subAdminsGroups","quotaOptions","showConfig","languages","externalActions","userGroups","group","includes","userSubAdminsGroups","subadmin","availableGroups","groupClone","$isDisabled","canAdd","canRemove","usedSpace","quota","used","size","OC","Util","humanFileSize","usedQuota","Math","min","round","pow","isNaN","userQuota","humanQuota","find","label","minPasswordLength","$store","getters","getPasswordPolicyMinLength","userLanguage","userLang","lang","code","language","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","generateAvatar","generateUrl","version","oc_userconfig","avatar","_vm","_h","loading","delete","disable","wipe","_e","displayname","email","userGroupsLabels","isAdmin","userSubAdminsGroupsLabels","modifiers","showUserBackend","showStoragePath","backend","storageLocation","canEdit","all","toggleEdit","$event","openedMenu","userActions","opacity","feedbackMessage","editing","displayName","preventDefault","updateDisplayName","backendCapabilities","ref","rand","canChangePassword","setPassword","password","updatePassword","mailAddress","updateEmail","removeUserGroup","addUserGroup","createGroup","slot","subadmins","removeUserSubAdmin","addUserSubAdmin","setUserQuota","validateQuota","setUserLanguage","currentUser","toggleMenu","hideMenu","onScroll","scrolled","showNewUserForm","createUser","newUser","newUserGenerateUserID","composing","$set","newUserRequireEmail","canAddGroups","model","$$v","_l","infiniteHandler","loadingAddGroup","toggleNewUserMenu","item","defaultQuota","setDefaultQuota","isArray","showLanguages","_i","$$a","$$el","$$c","checked","$$i","slice","showLastLogin","users","selectedGroup","scopedSlots","_u","fn","proxy"],"mappings":"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KACA,WACA,M,QEyOF,mBAEA,IC1PyM,ED0PzM,CACA,eACA,YACA,gBACA,0BACA,kBACA,4BACA,2BAEA,YACA,kBAEA,WACA,OACA,MACA,YACA,aAEA,UACA,YACA,8BAEA,QACA,WACA,8BAEA,iBACA,WACA,8BAEA,cACA,WACA,8BAEA,YACA,YACA,8BAEA,WACA,WACA,aAEA,iBACA,WACA,+BAGA,KA/CA,WAgDA,OACA,iCACA,cACA,mBACA,WACA,SACA,OACA,eACA,YACA,eACA,UACA,aACA,SACA,UACA,WACA,aACA,WAIA,UAEA,YAFA,WAGA,OACA,CACA,mBACA,iCACA,wBAEA,CACA,mBACA,sCACA,6BAEA,CACA,+CACA,gFACA,gCAUA,OAPA,8CACA,QACA,iBACA,0CACA,8BAGA,iCAIA,SAEA,WAFA,WAGA,kCAEA,SALA,WAMA,oBAGA,gBATA,WASA,WACA,eACA,8BACA,6NACA,uCACA,CACA,+BACA,2DACA,uBACA,gCAEA,YACA,IACA,kBACA,iBACA,uCACA,iBACA,kBACA,wBAIA,IAIA,WAnCA,WAmCA,WACA,eACA,8BACA,8GACA,iCACA,CACA,+BACA,6DACA,uBACA,gCAEA,YACA,KAGA,OAFA,oBACA,iBACA,kCACA,iBACA,oBACA,uBAIA,IAIA,kBA7DA,WA6DA,WACA,uBACA,oBACA,mBACA,qBACA,iDACA,SACA,YAEA,iBACA,oBACA,qBASA,kBAjFA,WAiFA,WACA,+BACA,4BACA,oCACA,oBACA,kBACA,UACA,iBACA,yBACA,gCASA,eAnGA,WAmGA,WACA,4BACA,yBACA,oCACA,oBACA,eACA,UACA,iBACA,sBACA,8BASA,YArHA,WAqHA,WACA,+BACA,4BACA,oCACA,oBACA,YACA,UACA,iBACA,yBACA,gCASA,YAvIA,SAuIA,GAvIA,8FAwIA,sCAxIA,2CA0IA,oCA1IA,cA2IA,eA3IA,kCA4IA,uDA5IA,uDA8IA,oBA9IA,yBAgJA,sCAhJA,8CAkJA,mDAlJA,+DA0JA,aA1JA,SA0JA,GA1JA,6FA2JA,aA3JA,0CA4JA,GA5JA,cA8JA,uBA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","file":"vue-5.js?v=7e340836e9656dc36da5","sourcesContent":["// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=style&index=0&id=81e9cdfa&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6818a5c5\", content, true, {});","function validate(binding) {\r\n if (typeof binding.value !== 'function') {\r\n console.warn('[Vue-click-outside:] provided expression', binding.expression, 'is not a function.')\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isPopup(popupItem, elements) {\r\n if (!popupItem || !elements)\r\n return false\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n try {\r\n if (popupItem.contains(elements[i])) {\r\n return true\r\n }\r\n if (elements[i].contains(popupItem)) {\r\n return false\r\n }\r\n } catch(e) {\r\n return false\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nfunction isServer(vNode) {\r\n return typeof vNode.componentInstance !== 'undefined' && vNode.componentInstance.$isServer\r\n}\r\n\r\nexports = module.exports = {\r\n bind: function (el, binding, vNode) {\r\n if (!validate(binding)) return\r\n\r\n // Define Handler and cache it on the element\r\n function handler(e) {\r\n if (!vNode.context) return\r\n\r\n // some components may have related popup item, on which we shall prevent the click outside event handler.\r\n var elements = e.path || (e.composedPath && e.composedPath())\r\n elements && elements.length > 0 && elements.unshift(e.target)\r\n \r\n if (el.contains(e.target) || isPopup(vNode.context.popupItem, elements)) return\r\n\r\n el.__vueClickOutside__.callback(e)\r\n }\r\n\r\n // add Event Listeners\r\n el.__vueClickOutside__ = {\r\n handler: handler,\r\n callback: binding.value\r\n }\r\n !isServer(vNode) && document.addEventListener('click', handler)\r\n },\r\n\r\n update: function (el, binding) {\r\n if (validate(binding)) el.__vueClickOutside__.callback = binding.value\r\n },\r\n \r\n unbind: function (el, binding, vNode) {\r\n // Remove Event Listeners\r\n !isServer(vNode) && document.removeEventListener('click', el.__vueClickOutside__.handler)\r\n delete el.__vueClickOutside__\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=style&index=0&id=81e9cdfa&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=style&index=0&id=81e9cdfa&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = module.exports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.cellText[data-v-81e9cdfa] {\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\twhite-space: nowrap;\\n}\\n\", \"\"]);\n","/*!\n * vue-infinite-loading v2.4.4\n * (c) 2016-2019 PeachScript\n * MIT License\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueInfiniteLoading=e():t.VueInfiniteLoading=e()}(this,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){var i=n(6);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(3).default)(\"09280948\",i,!0,{})},function(t,e,n){var i=n(8);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(3).default)(\"51e4c3f9\",i,!0,{})},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",i=t[3];if(!i)return n;if(e&&\"function\"==typeof btoa){var r=(o=i,\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\"),a=i.sources.map(function(t){return\"/*# sourceURL=\"+i.sourceRoot+t+\" */\"});return[n].concat(a).concat([r]).join(\"\\n\")}var o;return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+n+\"}\":n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var i={},r=0;r<this.length;r++){var a=this[r][0];\"number\"==typeof a&&(i[a]=!0)}for(r=0;r<t.length;r++){var o=t[r];\"number\"==typeof o[0]&&i[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]=\"(\"+o[2]+\") and (\"+n+\")\"),e.push(o))}},e}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var a=e[r],o=a[0],s={id:t+\":\"+r,css:a[1],media:a[2],sourceMap:a[3]};i[o]?i[o].parts.push(s):n.push(i[o]={id:o,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return b});var r=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!r)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},o=r&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,l=0,d=!1,c=function(){},u=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function b(t,e,n,r){d=n,u=r||{};var o=i(t,e);return h(o),function(e){for(var n=[],r=0;r<o.length;r++){var s=o[r];(l=a[s.id]).refs--,n.push(l)}e?h(o=i(t,e)):o=[];for(r=0;r<n.length;r++){var l;if(0===(l=n[r]).refs){for(var d=0;d<l.parts.length;d++)l.parts[d]();delete a[l.id]}}}}function h(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(g(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var o=[];for(r=0;r<n.parts.length;r++)o.push(g(n.parts[r]));a[n.id]={id:n.id,refs:1,parts:o}}}}function m(){var t=document.createElement(\"style\");return t.type=\"text/css\",o.appendChild(t),t}function g(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(d)return c;i.parentNode.removeChild(i)}if(f){var r=l++;i=s||(s=m()),e=w.bind(null,i,r,!1),n=w.bind(null,i,r,!0)}else i=m(),e=function(t,e){var n=e.css,i=e.media,r=e.sourceMap;i&&t.setAttribute(\"media\",i);u.ssrId&&t.setAttribute(p,e.id);r&&(n+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var v,y=(v=[],function(t,e){return v[t]=e,v.filter(Boolean).join(\"\\n\")});function w(t,e,n,i){var r=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var a=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(a,o[e]):t.appendChild(a)}}},function(t,e){function n(t){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function i(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},i(e)}t.exports=i},function(t,e,n){\"use strict\";n.r(e);var i=n(0),r=n.n(i);for(var a in i)\"default\"!==a&&function(t){n.d(e,t,function(){return i[t]})}(a);e.default=r.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,'.loading-wave-dots[data-v-46b20d22]{position:relative}.loading-wave-dots[data-v-46b20d22] .wave-item{position:absolute;top:50%;left:50%;display:inline-block;margin-top:-4px;width:8px;height:8px;border-radius:50%;-webkit-animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite;animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite}.loading-wave-dots[data-v-46b20d22] .wave-item:first-child{margin-left:-36px}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(2){margin-left:-20px;-webkit-animation-delay:.14s;animation-delay:.14s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(3){margin-left:-4px;-webkit-animation-delay:.28s;animation-delay:.28s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(4){margin-left:12px;-webkit-animation-delay:.42s;animation-delay:.42s}.loading-wave-dots[data-v-46b20d22] .wave-item:last-child{margin-left:28px;-webkit-animation-delay:.56s;animation-delay:.56s}@-webkit-keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}@keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}.loading-circles[data-v-46b20d22] .circle-item{width:5px;height:5px;-webkit-animation:loading-circles-data-v-46b20d22 linear .75s infinite;animation:loading-circles-data-v-46b20d22 linear .75s infinite}.loading-circles[data-v-46b20d22] .circle-item:first-child{margin-top:-14.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){margin-top:-11.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){margin-top:-2.5px;margin-left:9.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){margin-top:6.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){margin-top:9.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){margin-top:6.26px;margin-left:-11.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){margin-top:-2.5px;margin-left:-14.5px}.loading-circles[data-v-46b20d22] .circle-item:last-child{margin-top:-11.26px;margin-left:-11.26px}@-webkit-keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}@keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}.loading-bubbles[data-v-46b20d22] .bubble-item{background:#666;-webkit-animation:loading-bubbles-data-v-46b20d22 linear .75s infinite;animation:loading-bubbles-data-v-46b20d22 linear .75s infinite}.loading-bubbles[data-v-46b20d22] .bubble-item:first-child{margin-top:-12.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2){margin-top:-9.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3){margin-top:-.5px;margin-left:11.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4){margin-top:8.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5){margin-top:11.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6){margin-top:8.26px;margin-left:-9.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7){margin-top:-.5px;margin-left:-12.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child{margin-top:-9.26px;margin-left:-9.26px}@-webkit-keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}@keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}.loading-default[data-v-46b20d22]{position:relative;border:1px solid #999;-webkit-animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite;animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite}.loading-default[data-v-46b20d22]:before{content:\"\";position:absolute;display:block;top:0;left:50%;margin-top:-3px;margin-left:-3px;width:6px;height:6px;background-color:#999;border-radius:50%}.loading-spiral[data-v-46b20d22]{border:2px solid #777;border-right-color:transparent;-webkit-animation:loading-rotating-data-v-46b20d22 linear .85s infinite;animation:loading-rotating-data-v-46b20d22 linear .85s infinite}@-webkit-keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-bubbles[data-v-46b20d22],.loading-circles[data-v-46b20d22]{position:relative}.loading-bubbles[data-v-46b20d22] .bubble-item,.loading-circles[data-v-46b20d22] .circle-item{position:absolute;top:50%;left:50%;display:inline-block;border-radius:50%}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2),.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){-webkit-animation-delay:93ms;animation-delay:93ms}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3),.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){-webkit-animation-delay:.186s;animation-delay:.186s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4),.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){-webkit-animation-delay:.279s;animation-delay:.279s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5),.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){-webkit-animation-delay:.372s;animation-delay:.372s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6),.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){-webkit-animation-delay:.465s;animation-delay:.465s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7),.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){-webkit-animation-delay:.558s;animation-delay:.558s}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child,.loading-circles[data-v-46b20d22] .circle-item:last-child{-webkit-animation-delay:.651s;animation-delay:.651s}',\"\"])},function(t,e,n){\"use strict\";n.r(e);var i=n(1),r=n.n(i);for(var a in i)\"default\"!==a&&function(t){n.d(e,t,function(){return i[t]})}(a);e.default=r.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,\".infinite-loading-container[data-v-46b21138]{clear:both;text-align:center}.infinite-loading-container[data-v-46b21138] [class^=loading-]{display:inline-block;margin:5px 0;width:28px;height:28px;font-size:28px;line-height:28px;border-radius:50%}.btn-try-infinite[data-v-46b21138]{margin-top:5px;padding:5px 10px;color:#999;font-size:14px;line-height:1;background:transparent;border:1px solid #ccc;border-radius:3px;outline:none;cursor:pointer}.btn-try-infinite[data-v-46b21138]:not(:active):hover{opacity:.8}\",\"\"])},function(t,e,n){\"use strict\";n.r(e);var i={throttleLimit:50,loopCheckTimeout:1e3,loopCheckMaxCalls:10},r=function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){return t={passive:!0},!0}});window.addEventListener(\"testpassive\",e,e),window.remove(\"testpassive\",e,e)}catch(t){}return t}(),a={STATE_CHANGER:[\"emit `loaded` and `complete` event through component instance of `$refs` may cause error, so it will be deprecated soon, please use the `$state` argument instead (`$state` just the special `$event` variable):\",\"\\ntemplate:\",'<infinite-loading @infinite=\"infiniteHandler\"></infinite-loading>',\"\\nscript:\\n...\\ninfiniteHandler($state) {\\n ajax('https://www.example.com/api/news')\\n .then((res) => {\\n if (res.data.length) {\\n $state.loaded();\\n } else {\\n $state.complete();\\n }\\n });\\n}\\n...\",\"\",\"more details: https://github.com/PeachScript/vue-infinite-loading/issues/57#issuecomment-324370549\"].join(\"\\n\"),INFINITE_EVENT:\"`:on-infinite` property will be deprecated soon, please use `@infinite` event instead.\",IDENTIFIER:\"the `reset` event will be deprecated soon, please reset this component by change the `identifier` property.\"},o={INFINITE_LOOP:[\"executed the callback function more than \".concat(i.loopCheckMaxCalls,\" times for a short time, it looks like searched a wrong scroll wrapper that doest not has fixed height or maximum height, please check it. If you want to force to set a element as scroll wrapper ranther than automatic searching, you can do this:\"),'\\n\\x3c!-- add a special attribute for the real scroll wrapper --\\x3e\\n<div infinite-wrapper>\\n ...\\n \\x3c!-- set force-use-infinite-wrapper --\\x3e\\n <infinite-loading force-use-infinite-wrapper></infinite-loading>\\n</div>\\nor\\n<div class=\"infinite-wrapper\">\\n ...\\n \\x3c!-- set force-use-infinite-wrapper as css selector of the real scroll wrapper --\\x3e\\n <infinite-loading force-use-infinite-wrapper=\".infinite-wrapper\"></infinite-loading>\\n</div>\\n ',\"more details: https://github.com/PeachScript/vue-infinite-loading/issues/55#issuecomment-316934169\"].join(\"\\n\")},s={READY:0,LOADING:1,COMPLETE:2,ERROR:3},l={color:\"#666\",fontSize:\"14px\",padding:\"10px 0\"},d={mode:\"development\",props:{spinner:\"default\",distance:100,forceUseInfiniteWrapper:!1},system:i,slots:{noResults:\"No results :(\",noMore:\"No more data :)\",error:\"Opps, something went wrong :(\",errorBtnText:\"Retry\",spinner:\"\"},WARNINGS:a,ERRORS:o,STATUS:s},c=n(4),u=n.n(c),p={BUBBLES:{render:function(t){return t(\"span\",{attrs:{class:\"loading-bubbles\"}},Array.apply(Array,Array(8)).map(function(){return t(\"span\",{attrs:{class:\"bubble-item\"}})}))}},CIRCLES:{render:function(t){return t(\"span\",{attrs:{class:\"loading-circles\"}},Array.apply(Array,Array(8)).map(function(){return t(\"span\",{attrs:{class:\"circle-item\"}})}))}},DEFAULT:{render:function(t){return t(\"i\",{attrs:{class:\"loading-default\"}})}},SPIRAL:{render:function(t){return t(\"i\",{attrs:{class:\"loading-spiral\"}})}},WAVEDOTS:{render:function(t){return t(\"span\",{attrs:{class:\"loading-wave-dots\"}},Array.apply(Array,Array(5)).map(function(){return t(\"span\",{attrs:{class:\"wave-item\"}})}))}}};function f(t,e,n,i,r,a,o,s){var l,d=\"function\"==typeof t?t.options:t;if(e&&(d.render=e,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),a&&(d._scopeId=\"data-v-\"+a),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(d.functional){d._injectStyles=l;var c=d.render;d.render=function(t,e){return l.call(e),c(t,e)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:d}}var b=f({name:\"Spinner\",computed:{spinnerView:function(){return p[(this.$attrs.spinner||\"\").toUpperCase()]||this.spinnerInConfig},spinnerInConfig:function(){return d.slots.spinner&&\"string\"==typeof d.slots.spinner?{render:function(){return this._v(d.slots.spinner)}}:\"object\"===u()(d.slots.spinner)?d.slots.spinner:p[d.props.spinner.toUpperCase()]||p.DEFAULT}}},function(){var t=this.$createElement;return(this._self._c||t)(this.spinnerView,{tag:\"component\"})},[],!1,function(t){var e=n(5);e.__inject__&&e.__inject__(t)},\"46b20d22\",null);b.options.__file=\"Spinner.vue\";var h=b.exports;function m(t){\"production\"!==d.mode&&console.warn(\"[Vue-infinite-loading warn]: \".concat(t))}function g(t){console.error(\"[Vue-infinite-loading error]: \".concat(t))}var v={timers:[],caches:[],throttle:function(t){var e=this;-1===this.caches.indexOf(t)&&(this.caches.push(t),this.timers.push(setTimeout(function(){t(),e.caches.splice(e.caches.indexOf(t),1),e.timers.shift()},d.system.throttleLimit)))},reset:function(){this.timers.forEach(function(t){clearTimeout(t)}),this.timers.length=0,this.caches=[]}},y={isChecked:!1,timer:null,times:0,track:function(){var t=this;this.times+=1,clearTimeout(this.timer),this.timer=setTimeout(function(){t.isChecked=!0},d.system.loopCheckTimeout),this.times>d.system.loopCheckMaxCalls&&(g(o.INFINITE_LOOP),this.isChecked=!0)}},w={key:\"_infiniteScrollHeight\",getScrollElm:function(t){return t===window?document.documentElement:t},save:function(t){var e=this.getScrollElm(t);e[this.key]=e.scrollHeight},restore:function(t){var e=this.getScrollElm(t);\"number\"==typeof e[this.key]&&(e.scrollTop=e.scrollHeight-e[this.key]+e.scrollTop),this.remove(e)},remove:function(t){void 0!==t[this.key]&&delete t[this.key]}};function x(t){return t.replace(/[A-Z]/g,function(t){return\"-\".concat(t.toLowerCase())})}function k(t){return t.offsetWidth+t.offsetHeight>0}var S=f({name:\"InfiniteLoading\",data:function(){return{scrollParent:null,scrollHandler:null,isFirstLoad:!0,status:s.READY,slots:d.slots}},components:{Spinner:h},computed:{isShowSpinner:function(){return this.status===s.LOADING},isShowError:function(){return this.status===s.ERROR},isShowNoResults:function(){return this.status===s.COMPLETE&&this.isFirstLoad},isShowNoMore:function(){return this.status===s.COMPLETE&&!this.isFirstLoad},slotStyles:function(){var t=this,e={};return Object.keys(d.slots).forEach(function(n){var i=x(n);(!t.$slots[i]&&!d.slots[n].render||t.$slots[i]&&!t.$slots[i][0].tag)&&(e[n]=l)}),e}},props:{distance:{type:Number,default:d.props.distance},spinner:String,direction:{type:String,default:\"bottom\"},forceUseInfiniteWrapper:{type:[Boolean,String],default:d.props.forceUseInfiniteWrapper},identifier:{default:+new Date},onInfinite:Function},watch:{identifier:function(){this.stateChanger.reset()}},mounted:function(){var t=this;this.$watch(\"forceUseInfiniteWrapper\",function(){t.scrollParent=t.getScrollParent()},{immediate:!0}),this.scrollHandler=function(e){t.status===s.READY&&(e&&e.constructor===Event&&k(t.$el)?v.throttle(t.attemptLoad):t.attemptLoad())},setTimeout(function(){t.scrollHandler(),t.scrollParent.addEventListener(\"scroll\",t.scrollHandler,r)},1),this.$on(\"$InfiniteLoading:loaded\",function(e){t.isFirstLoad=!1,\"top\"===t.direction&&t.$nextTick(function(){w.restore(t.scrollParent)}),t.status===s.LOADING&&t.$nextTick(t.attemptLoad.bind(null,!0)),e&&e.target===t||m(a.STATE_CHANGER)}),this.$on(\"$InfiniteLoading:complete\",function(e){t.status=s.COMPLETE,t.$nextTick(function(){t.$forceUpdate()}),t.scrollParent.removeEventListener(\"scroll\",t.scrollHandler,r),e&&e.target===t||m(a.STATE_CHANGER)}),this.$on(\"$InfiniteLoading:reset\",function(e){t.status=s.READY,t.isFirstLoad=!0,w.remove(t.scrollParent),t.scrollParent.addEventListener(\"scroll\",t.scrollHandler,r),setTimeout(function(){v.reset(),t.scrollHandler()},1),e&&e.target===t||m(a.IDENTIFIER)}),this.stateChanger={loaded:function(){t.$emit(\"$InfiniteLoading:loaded\",{target:t})},complete:function(){t.$emit(\"$InfiniteLoading:complete\",{target:t})},reset:function(){t.$emit(\"$InfiniteLoading:reset\",{target:t})},error:function(){t.status=s.ERROR,v.reset()}},this.onInfinite&&m(a.INFINITE_EVENT)},deactivated:function(){this.status===s.LOADING&&(this.status=s.READY),this.scrollParent.removeEventListener(\"scroll\",this.scrollHandler,r)},activated:function(){this.scrollParent.addEventListener(\"scroll\",this.scrollHandler,r)},methods:{attemptLoad:function(t){var e=this;this.status!==s.COMPLETE&&k(this.$el)&&this.getCurrentDistance()<=this.distance?(this.status=s.LOADING,\"top\"===this.direction&&this.$nextTick(function(){w.save(e.scrollParent)}),\"function\"==typeof this.onInfinite?this.onInfinite.call(null,this.stateChanger):this.$emit(\"infinite\",this.stateChanger),!t||this.forceUseInfiniteWrapper||y.isChecked||y.track()):this.status===s.LOADING&&(this.status=s.READY)},getCurrentDistance:function(){var t;\"top\"===this.direction?t=\"number\"==typeof this.scrollParent.scrollTop?this.scrollParent.scrollTop:this.scrollParent.pageYOffset:t=this.$el.getBoundingClientRect().top-(this.scrollParent===window?window.innerHeight:this.scrollParent.getBoundingClientRect().bottom);return t},getScrollParent:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.$el;return\"string\"==typeof this.forceUseInfiniteWrapper&&(t=e.querySelector(this.forceUseInfiniteWrapper)),t||(\"BODY\"===e.tagName?t=window:!this.forceUseInfiniteWrapper&&[\"scroll\",\"auto\"].indexOf(getComputedStyle(e).overflowY)>-1?t=e:(e.hasAttribute(\"infinite-wrapper\")||e.hasAttribute(\"data-infinite-wrapper\"))&&(t=e)),t||this.getScrollParent(e.parentNode)}},destroyed:function(){!this.status!==s.COMPLETE&&(v.reset(),w.remove(this.scrollParent),this.scrollParent.removeEventListener(\"scroll\",this.scrollHandler,r))}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"infinite-loading-container\"},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowSpinner,expression:\"isShowSpinner\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.spinner},[t._t(\"spinner\",[n(\"spinner\",{attrs:{spinner:t.spinner}})])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowNoResults,expression:\"isShowNoResults\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.noResults},[t._t(\"no-results\",[t.slots.noResults.render?n(t.slots.noResults,{tag:\"component\"}):[t._v(t._s(t.slots.noResults))]])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowNoMore,expression:\"isShowNoMore\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.noMore},[t._t(\"no-more\",[t.slots.noMore.render?n(t.slots.noMore,{tag:\"component\"}):[t._v(t._s(t.slots.noMore))]])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowError,expression:\"isShowError\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.error},[t._t(\"error\",[t.slots.error.render?n(t.slots.error,{tag:\"component\",attrs:{trigger:t.attemptLoad}}):[t._v(\"\\n \"+t._s(t.slots.error)+\"\\n \"),n(\"br\"),t._v(\" \"),n(\"button\",{staticClass:\"btn-try-infinite\",domProps:{textContent:t._s(t.slots.errorBtnText)},on:{click:t.attemptLoad}})]],{trigger:t.attemptLoad})],2)])},[],!1,function(t){var e=n(7);e.__inject__&&e.__inject__(t)},\"46b21138\",null);S.options.__file=\"InfiniteLoading.vue\";var E=S.exports;function _(t){d.mode=t.config.productionTip?\"development\":\"production\"}Object.defineProperty(E,\"install\",{configurable:!1,enumerable:!1,value:function(t,e){Object.assign(d.props,e&&e.props),Object.assign(d.slots,e&&e.slots),Object.assign(d.system,e&&e.system),t.component(\"infinite-loading\",E),_(t)}}),\"undefined\"!=typeof window&&window.Vue&&(window.Vue.component(\"infinite-loading\",E),_(window.Vue));e.default=E}])});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{attrs:{\"app-name\":\"settings\",\"navigation-class\":{ 'icon-loading': _vm.loadingAddGroup }}},[_c('AppNavigation',[_c('AppNavigationNew',{attrs:{\"button-id\":\"new-user-button\",\"text\":_vm.t('settings','New user'),\"button-class\":\"icon-add\"},on:{\"click\":_vm.toggleNewUserMenu}}),_vm._v(\" \"),_c('ul',{attrs:{\"id\":\"usergrouplist\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1),_vm._v(\" \"),_c('AppNavigationSettings',[_c('div',[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'Default quota:')))]),_vm._v(\" \"),_c('Multiselect',{attrs:{\"value\":_vm.defaultQuota,\"options\":_vm.quotaOptions,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"label\":\"label\",\"track-by\":\"id\",\"allow-empty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota,\"input\":_vm.setDefaultQuota}})],1),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLanguages),expression:\"showLanguages\"}],staticClass:\"checkbox\",attrs:{\"id\":\"showLanguages\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showLanguages)?_vm._i(_vm.showLanguages,null)>-1:(_vm.showLanguages)},on:{\"change\":function($event){var $$a=_vm.showLanguages,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLanguages=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLanguages=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLanguages=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLanguages\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show Languages')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLastLogin),expression:\"showLastLogin\"}],staticClass:\"checkbox\",attrs:{\"id\":\"showLastLogin\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showLastLogin)?_vm._i(_vm.showLastLogin,null)>-1:(_vm.showLastLogin)},on:{\"change\":function($event){var $$a=_vm.showLastLogin,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLastLogin=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLastLogin=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLastLogin=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLastLogin\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show last login')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showUserBackend),expression:\"showUserBackend\"}],staticClass:\"checkbox\",attrs:{\"id\":\"showUserBackend\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showUserBackend)?_vm._i(_vm.showUserBackend,null)>-1:(_vm.showUserBackend)},on:{\"change\":function($event){var $$a=_vm.showUserBackend,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showUserBackend=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showUserBackend=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showUserBackend=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showUserBackend\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show user backend')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showStoragePath),expression:\"showStoragePath\"}],staticClass:\"checkbox\",attrs:{\"id\":\"showStoragePath\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showStoragePath)?_vm._i(_vm.showStoragePath,null)>-1:(_vm.showStoragePath)},on:{\"change\":function($event){var $$a=_vm.showStoragePath,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showStoragePath=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showStoragePath=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showStoragePath=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showStoragePath\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show storage path')))])])])],1),_vm._v(\" \"),_c('AppContent',[_c('UserList',{attrs:{\"users\":_vm.users,\"show-config\":_vm.showConfig,\"selected-group\":_vm.selectedGroup,\"external-actions\":_vm.externalActions},scopedSlots:_vm._u([{key:\"content\",fn:function(){return undefined},proxy:true}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tshowConfig: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Generate avatar url\n\t\t *\n\t\t * @param {string} user The user name\n\t\t * @param {int} size Size integer, default 32\n\t\t * @returns {string}\n\t\t */\n\t\tgenerateAvatar(user, size = 32) {\n\t\t\treturn OC.generateUrl(\n\t\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t\t{\n\t\t\t\t\tuser: user,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=script&lang=js&\"","<template>\n\t<div\n\t\tclass=\"row\"\n\t\t:class=\"{'disabled': loading.delete || loading.disable}\"\n\t\t:data-id=\"user.id\">\n\t\t<div class=\"avatar\" :class=\"{'icon-loading-small': loading.delete || loading.disable || loading.wipe}\">\n\t\t\t<img v-if=\"!loading.delete && !loading.disable && !loading.wipe\"\n\t\t\t\talt=\"\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\t:src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t:srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\">\n\t\t</div>\n\t\t<!-- dirty hack to ellipsis on two lines -->\n\t\t<div class=\"name\">\n\t\t\t{{ user.id }}\n\t\t\t<div class=\"displayName subtitle\">\n\t\t\t\t<div v-tooltip=\"user.displayname.length > 20 ? user.displayname : ''\" class=\"cellText\">\n\t\t\t\t\t{{ user.displayname }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div />\n\t\t<div class=\"mailAddress\">\n\t\t\t<div v-tooltip=\"user.email !== null && user.email.length > 20 ? user.email : ''\" class=\"cellText\">\n\t\t\t\t{{ user.email }}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"groups\">\n\t\t\t{{ userGroupsLabels }}\n\t\t</div>\n\t\t<div v-if=\"subAdminsGroups.length > 0 && settings.isAdmin\" class=\"subAdminsGroups\">\n\t\t\t{{ userSubAdminsGroupsLabels }}\n\t\t</div>\n\t\t<div v-tooltip.auto=\"usedSpace\" class=\"quota\">\n\t\t\t<progress\n\t\t\t\tclass=\"quota-user-progress\"\n\t\t\t\t:class=\"{'warn': usedQuota > 80}\"\n\t\t\t\t:value=\"usedQuota\"\n\t\t\t\tmax=\"100\" />\n\t\t</div>\n\t\t<div v-if=\"showConfig.showLanguages\" class=\"languages\">\n\t\t\t{{ userLanguage.name }}\n\t\t</div>\n\t\t<div v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\" class=\"userBackend\">\n\t\t\t<div v-if=\"showConfig.showUserBackend\" class=\"userBackend\">\n\t\t\t\t{{ user.backend }}\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showStoragePath\" class=\"storageLocation subtitle\">\n\t\t\t\t{{ user.storageLocation }}\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"showConfig.showLastLogin\" v-tooltip.auto=\"userLastLoginTooltip\" class=\"lastLogin\">\n\t\t\t{{ userLastLogin }}\n\t\t</div>\n\n\t\t<div class=\"userActions\">\n\t\t\t<div v-if=\"canEdit && !loading.all\" class=\"toggleUserActions\">\n\t\t\t\t<Actions>\n\t\t\t\t\t<ActionButton icon=\"icon-rename\" @click=\"toggleEdit\">\n\t\t\t\t\t\t{{ t('settings', 'Edit User') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t\t<div v-click-outside=\"hideMenu\" class=\"icon-more\" @click=\"$emit('toggleMenu')\" />\n\t\t\t\t<div class=\"popovermenu\" :class=\"{ 'open': openedMenu }\">\n\t\t\t\t\t<PopoverMenu :menu=\"userActions\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"feedback\" :style=\"{opacity: feedbackMessage !== '' ? 1 : 0}\">\n\t\t\t\t<div class=\"icon-checkmark\" />\n\t\t\t\t{{ feedbackMessage }}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { PopoverMenu, Actions, ActionButton } from 'nextcloud-vue'\nimport ClickOutside from 'vue-click-outside'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport UserRowMixin from '../../mixins/UserRowMixin'\nexport default {\n\tname: 'UserRowSimple',\n\tcomponents: {\n\t\tPopoverMenu,\n\t\tActionButton,\n\t\tActions,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tmixins: [UserRowMixin],\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshowConfig: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tuserActions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\topenedMenu: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tfeedbackMessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\t\tuserSubAdminsGroupsLabels() {\n\t\t\treturn this.userSubAdminsGroups\n\t\t\t\t.map(group => group.name)\n\t\t\t\t.join(', ')\n\t\t},\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id && this.user.id !== 'admin'\n\t\t},\n\n\t},\n\tmethods: {\n\t\thideMenu() {\n\t\t\tthis.$emit('hideMenu')\n\t\t},\n\t\ttoggleEdit() {\n\t\t\tthis.$emit('update:editing', true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.cellText {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n</style>\n","import { render, staticRenderFns } from \"./UserRowSimple.vue?vue&type=template&id=81e9cdfa&scoped=true&\"\nimport script from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\nexport * from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserRowSimple.vue?vue&type=style&index=0&id=81e9cdfa&scoped=true&lang=css&\"\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 \"81e9cdfa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\",class:{'disabled': _vm.loading.delete || _vm.loading.disable},attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.user.id)+\"\\n\\t\\t\"),_c('div',{staticClass:\"displayName subtitle\"},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.user.displayname.length > 20 ? _vm.user.displayname : ''),expression:\"user.displayname.length > 20 ? user.displayname : ''\"}],staticClass:\"cellText\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")])])]),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\"},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.user.email !== null && _vm.user.email.length > 20 ? _vm.user.email : ''),expression:\"user.email !== null && user.email.length > 20 ? user.email : ''\"}],staticClass:\"cellText\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"groups\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subAdminsGroups\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.usedSpace),expression:\"usedSpace\",modifiers:{\"auto\":true}}],staticClass:\"quota\"},[_c('progress',{staticClass:\"quota-user-progress\",class:{'warn': _vm.usedQuota > 80},attrs:{\"max\":\"100\"},domProps:{\"value\":_vm.usedQuota}})]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('div',{staticClass:\"userBackend\"},[(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.backend)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.userLastLoginTooltip),expression:\"userLastLoginTooltip\",modifiers:{\"auto\":true}}],staticClass:\"lastLogin\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userLastLogin)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[(_vm.canEdit && !_vm.loading.all)?_c('div',{staticClass:\"toggleUserActions\"},[_c('Actions',[_c('ActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Edit User'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"icon-more\",on:{\"click\":function($event){return _vm.$emit('toggleMenu')}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'open': _vm.openedMenu }},[_c('PopoverMenu',{attrs:{\"menu\":_vm.userActions}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"feedback\",style:({opacity: _vm.feedbackMessage !== '' ? 1 : 0})},[_c('div',{staticClass:\"icon-checkmark\"}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.feedbackMessage)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n - @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Gary Kim <gary@garykim.dev>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<!-- Obfuscated user: Logged in user does not have permissions to see all of the data -->\n\t<div v-if=\"Object.keys(user).length ===1\" :data-id=\"user.id\" class=\"row\">\n\t\t<div :class=\"{'icon-loading-small': loading.delete || loading.disable || loading.wipe}\"\n\t\t\tclass=\"avatar\">\n\t\t\t<img v-if=\"!loading.delete && !loading.disable && !loading.wipe\"\n\t\t\t\t:src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t:srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\talt=\"\"\n\t\t\t\theight=\"32\"\n\t\t\t\twidth=\"32\">\n\t\t</div>\n\t\t<div class=\"name\">\n\t\t\t{{ user.id }}\n\t\t</div>\n\t\t<div class=\"obfuscated\">\n\t\t\t{{ t('settings','You do not have permissions to see the details of this user') }}\n\t\t</div>\n\t</div>\n\n\t<!-- User full data -->\n\t<UserRowSimple\n\t\tv-else-if=\"!editing\"\n\t\t:editing.sync=\"editing\"\n\t\t:feedback-message=\"feedbackMessage\"\n\t\t:groups=\"groups\"\n\t\t:languages=\"languages\"\n\t\t:loading=\"loading\"\n\t\t:opened-menu=\"openedMenu\"\n\t\t:settings=\"settings\"\n\t\t:show-config=\"showConfig\"\n\t\t:sub-admins-groups=\"subAdminsGroups\"\n\t\t:user-actions=\"userActions\"\n\t\t:user=\"user\"\n\t\t@hideMenu=\"hideMenu\"\n\t\t@toggleMenu=\"toggleMenu\" />\n\t<div v-else\n\t\t:class=\"{'disabled': loading.delete || loading.disable}\"\n\t\t:data-id=\"user.id\"\n\t\tclass=\"row row--editable\">\n\t\t<div :class=\"{'icon-loading-small': loading.delete || loading.disable || loading.wipe}\"\n\t\t\tclass=\"avatar\">\n\t\t\t<img v-if=\"!loading.delete && !loading.disable && !loading.wipe\"\n\t\t\t\t:src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t:srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\talt=\"\"\n\t\t\t\theight=\"32\"\n\t\t\t\twidth=\"32\">\n\t\t</div>\n\t\t<!-- dirty hack to ellipsis on two lines -->\n\t\t<div class=\"displayName\">\n\t\t\t<form\n\t\t\t\t:class=\"{'icon-loading-small': loading.displayName}\"\n\t\t\t\tclass=\"displayName\"\n\t\t\t\t@submit.prevent=\"updateDisplayName\">\n\t\t\t\t<template v-if=\"user.backendCapabilities.setDisplayName\">\n\t\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\"\n\t\t\t\t\t\t:id=\"'displayName'+user.id+rand\"\n\t\t\t\t\t\tref=\"displayName\"\n\t\t\t\t\t\t:disabled=\"loading.displayName||loading.all\"\n\t\t\t\t\t\t:value=\"user.displayname\"\n\t\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\ttype=\"text\">\n\t\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\"\n\t\t\t\t\t\tclass=\"icon-confirm\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t</template>\n\t\t\t\t<div v-else\n\t\t\t\t\tv-tooltip.auto=\"t('settings', 'The backend does not support changing the display name')\"\n\t\t\t\t\tclass=\"name\" />\n\t\t\t</form>\n\t\t</div>\n\t\t<form v-if=\"settings.canChangePassword && user.backendCapabilities.setPassword\"\n\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\tclass=\"password\"\n\t\t\t@submit.prevent=\"updatePassword\">\n\t\t\t<input :id=\"'password'+user.id+rand\"\n\t\t\t\tref=\"password\"\n\t\t\t\t:disabled=\"loading.password || loading.all\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:placeholder=\"t('settings', 'Add new password')\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\trequired\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\ttype=\"password\"\n\t\t\t\tvalue=\"\">\n\t\t\t<input class=\"icon-confirm\" type=\"submit\" value=\"\">\n\t\t</form>\n\t\t<div v-else />\n\t\t<form :class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\tclass=\"mailAddress\"\n\t\t\t@submit.prevent=\"updateEmail\">\n\t\t\t<input :id=\"'mailAddress'+user.id+rand\"\n\t\t\t\tref=\"mailAddress\"\n\t\t\t\t:disabled=\"loading.mailAddress||loading.all\"\n\t\t\t\t:placeholder=\"t('settings', 'Add new email address')\"\n\t\t\t\t:value=\"user.email\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\ttype=\"email\">\n\t\t\t<input class=\"icon-confirm\" type=\"submit\" value=\"\">\n\t\t</form>\n\t\t<div :class=\"{'icon-loading-small': loading.groups}\" class=\"groups\">\n\t\t\t<Multiselect :close-on-select=\"false\"\n\t\t\t\t:disabled=\"loading.groups||loading.all\"\n\t\t\t\t:limit=\"2\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t:placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t:tag-width=\"60\"\n\t\t\t\t:taggable=\"settings.isAdmin\"\n\t\t\t\t:value=\"userGroups\"\n\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\tlabel=\"name\"\n\t\t\t\ttag-placeholder=\"create\"\n\t\t\t\ttrack-by=\"id\"\n\t\t\t\t@remove=\"removeUserGroup\"\n\t\t\t\t@select=\"addUserGroup\"\n\t\t\t\t@tag=\"createGroup\">\n\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t</Multiselect>\n\t\t</div>\n\t\t<div v-if=\"subAdminsGroups.length>0 && settings.isAdmin\"\n\t\t\t:class=\"{'icon-loading-small': loading.subadmins}\"\n\t\t\tclass=\"subadmins\">\n\t\t\t<Multiselect :close-on-select=\"false\"\n\t\t\t\t:disabled=\"loading.subadmins||loading.all\"\n\t\t\t\t:limit=\"2\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t:placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t:tag-width=\"60\"\n\t\t\t\t:value=\"userSubAdminsGroups\"\n\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\tlabel=\"name\"\n\t\t\t\ttrack-by=\"id\"\n\t\t\t\t@remove=\"removeUserSubAdmin\"\n\t\t\t\t@select=\"addUserSubAdmin\">\n\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t</Multiselect>\n\t\t</div>\n\t\t<div v-tooltip.auto=\"usedSpace\"\n\t\t\t:class=\"{'icon-loading-small': loading.quota}\"\n\t\t\tclass=\"quota\">\n\t\t\t<Multiselect :allow-empty=\"false\"\n\t\t\t\t:disabled=\"loading.quota||loading.all\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t:placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t:taggable=\"true\"\n\t\t\t\t:value=\"userQuota\"\n\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\tlabel=\"label\"\n\t\t\t\ttag-placeholder=\"create\"\n\t\t\t\ttrack-by=\"id\"\n\t\t\t\t@input=\"setUserQuota\"\n\t\t\t\t@tag=\"validateQuota\" />\n\t\t</div>\n\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t:class=\"{'icon-loading-small': loading.languages}\"\n\t\t\tclass=\"languages\">\n\t\t\t<Multiselect :allow-empty=\"false\"\n\t\t\t\t:disabled=\"loading.languages||loading.all\"\n\t\t\t\t:options=\"languages\"\n\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t:value=\"userLanguage\"\n\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\tgroup-label=\"label\"\n\t\t\t\tgroup-values=\"languages\"\n\t\t\t\tlabel=\"name\"\n\t\t\t\ttrack-by=\"code\"\n\t\t\t\t@input=\"setUserLanguage\" />\n\t\t</div>\n\n\t\t<!-- don't show this on edit mode -->\n\t\t<div v-if=\"showConfig.showStoragePath || showConfig.showUserBackend\"\n\t\t\tclass=\"storageLocation\" />\n\t\t<div v-if=\"showConfig.showLastLogin\" />\n\n\t\t<div class=\"userActions\">\n\t\t\t<div v-if=\"OC.currentUser !== user.id && user.id !== 'admin' && !loading.all\"\n\t\t\t\tclass=\"toggleUserActions\">\n\t\t\t\t<Actions>\n\t\t\t\t\t<ActionButton icon=\"icon-checkmark\"\n\t\t\t\t\t\t@click=\"editing = false\">\n\t\t\t\t\t\t{{ t('settings', 'Done') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t\t<div v-click-outside=\"hideMenu\"\n\t\t\t\t\tclass=\"icon-more\"\n\t\t\t\t\t@click=\"toggleMenu\" />\n\t\t\t\t<div :class=\"{ 'open': openedMenu }\" class=\"popovermenu\">\n\t\t\t\t\t<PopoverMenu :menu=\"userActions\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :style=\"{opacity: feedbackMessage !== '' ? 1 : 0}\"\n\t\t\t\tclass=\"feedback\">\n\t\t\t\t<div class=\"icon-checkmark\" />\n\t\t\t\t{{ feedbackMessage }}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport ClickOutside from 'vue-click-outside'\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport {\n\tPopoverMenu,\n\tMultiselect,\n\tActions,\n\tActionButton,\n} from 'nextcloud-vue'\nimport UserRowSimple from './UserRowSimple'\nimport UserRowMixin from '../../mixins/UserRowMixin'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'UserRow',\n\tcomponents: {\n\t\tUserRowSimple,\n\t\tPopoverMenu,\n\t\tActions,\n\t\tActionButton,\n\t\tMultiselect,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tmixins: [UserRowMixin],\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tshowConfig: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tfeedbackMessage: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Wipe all devices'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\ttoggleMenu() {\n\t\t\tthis.openedMenu = !this.openedMenu\n\t\t},\n\t\thideMenu() {\n\t\t\tthis.openedMenu = false\n\t\t},\n\n\t\twipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', { userid: userid }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid: userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t)\n\t\t},\n\n\t\tdeleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid: userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid: userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Set user displayName\n\t\t\t *\n\t\t\t * @param {string} displayName The display name\n\t\t\t */\n\t\tupdateDisplayName() {\n\t\t\tconst displayName = this.$refs.displayName.value\n\t\t\tthis.loading.displayName = true\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName,\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t\tthis.$refs.displayName.value = displayName\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Set user password\n\t\t\t *\n\t\t\t * @param {string} password The email adress\n\t\t\t */\n\t\tupdatePassword() {\n\t\t\tconst password = this.$refs.password.value\n\t\t\tthis.loading.password = true\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password,\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.password = false\n\t\t\t\tthis.$refs.password.value = '' // empty & show placeholder\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Set user mailAddress\n\t\t\t *\n\t\t\t * @param {string} mailAddress The email adress\n\t\t\t */\n\t\tupdateEmail() {\n\t\t\tconst mailAddress = this.$refs.mailAddress.value\n\t\t\tthis.loading.mailAddress = true\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress,\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.$refs.mailAddress.value = mailAddress\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Create a new group and add user to it\n\t\t\t *\n\t\t\t * @param {string} gid Group id\n\t\t\t */\n\t\tasync createGroup(gid) {\n\t\t\tthis.loading = { groups: true, subadmins: true }\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = { groups: false, subadmins: false }\n\t\t\t}\n\t\t\treturn this.$store.getters.getGroups[this.groups.length]\n\t\t},\n\n\t\t/**\n\t\t\t * Add user to group\n\t\t\t *\n\t\t\t * @param {object} group Group object\n\t\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Remove user from group\n\t\t\t *\n\t\t\t * @param {object} group Group object\n\t\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Add user to group\n\t\t\t *\n\t\t\t * @param {object} group Group object\n\t\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Remove user from group\n\t\t\t *\n\t\t\t * @param {object} group Group object\n\t\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Dispatch quota set request\n\t\t\t *\n\t\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t\t * @returns {string}\n\t\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\tthis.loading.quota = true\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue: quota,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t\t * Validate quota string to make sure it's a valid human file size\n\t\t\t *\n\t\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t\t * @returns {Promise|boolean}\n\t\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)))\n\t\t\t}\n\t\t\t// if no valid do not change\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t\t * Dispatch language set request\n\t\t\t *\n\t\t\t * @param {Object} lang language object {code:'en', name:'English'}\n\t\t\t * @returns {Object}\n\t\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.languages = false\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t\t * Dispatch new welcome mail request\n\t\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(success => {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\t// Show feedback to indicate the success\n\t\t\t\t\t\tthis.feedbackMessage = t('setting', 'Welcome mail sent!')\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.feedbackMessage = ''\n\t\t\t\t\t\t}, 2000)\n\t\t\t\t\t}\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=46ede1ca&\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js&\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (Object.keys(_vm.user).length ===1)?_c('div',{staticClass:\"row\",attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x',\"alt\":\"\",\"height\":\"32\",\"width\":\"32\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.user.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"obfuscated\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings','You do not have permissions to see the details of this user'))+\"\\n\\t\")])]):(!_vm.editing)?_c('UserRowSimple',{attrs:{\"editing\":_vm.editing,\"feedback-message\":_vm.feedbackMessage,\"groups\":_vm.groups,\"languages\":_vm.languages,\"loading\":_vm.loading,\"opened-menu\":_vm.openedMenu,\"settings\":_vm.settings,\"show-config\":_vm.showConfig,\"sub-admins-groups\":_vm.subAdminsGroups,\"user-actions\":_vm.userActions,\"user\":_vm.user},on:{\"update:editing\":function($event){_vm.editing=$event},\"hideMenu\":_vm.hideMenu,\"toggleMenu\":_vm.toggleMenu}}):_c('div',{staticClass:\"row row--editable\",class:{'disabled': _vm.loading.delete || _vm.loading.disable},attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x',\"alt\":\"\",\"height\":\"32\",\"width\":\"32\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\"},[_c('form',{staticClass:\"displayName\",class:{'icon-loading-small': _vm.loading.displayName},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateDisplayName($event)}}},[(_vm.user.backendCapabilities.setDisplayName)?[(_vm.user.backendCapabilities.setDisplayName)?_c('input',{ref:\"displayName\",attrs:{\"id\":'displayName'+_vm.user.id+_vm.rand,\"disabled\":_vm.loading.displayName||_vm.loading.all,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"spellcheck\":\"false\",\"type\":\"text\"},domProps:{\"value\":_vm.user.displayname}}):_vm._e(),_vm._v(\" \"),(_vm.user.backendCapabilities.setDisplayName)?_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}}):_vm._e()]:_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'The backend does not support changing the display name')),expression:\"t('settings', 'The backend does not support changing the display name')\",modifiers:{\"auto\":true}}],staticClass:\"name\"})],2)]),_vm._v(\" \"),(_vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?_c('form',{staticClass:\"password\",class:{'icon-loading-small': _vm.loading.password},on:{\"submit\":function($event){$event.preventDefault();return _vm.updatePassword($event)}}},[_c('input',{ref:\"password\",attrs:{\"id\":'password'+_vm.user.id+_vm.rand,\"disabled\":_vm.loading.password || _vm.loading.all,\"minlength\":_vm.minPasswordLength,\"placeholder\":_vm.t('settings', 'Add new password'),\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\",\"value\":\"\"}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):_c('div'),_vm._v(\" \"),_c('form',{staticClass:\"mailAddress\",class:{'icon-loading-small': _vm.loading.mailAddress},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateEmail($event)}}},[_c('input',{ref:\"mailAddress\",attrs:{\"id\":'mailAddress'+_vm.user.id+_vm.rand,\"disabled\":_vm.loading.mailAddress||_vm.loading.all,\"placeholder\":_vm.t('settings', 'Add new email address'),\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"spellcheck\":\"false\",\"type\":\"email\"},domProps:{\"value\":_vm.user.email}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",class:{'icon-loading-small': _vm.loading.groups}},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"close-on-select\":false,\"disabled\":_vm.loading.groups||_vm.loading.all,\"limit\":2,\"multiple\":true,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add user in group'),\"tag-width\":60,\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"tag-placeholder\":\"create\",\"track-by\":\"id\"},on:{\"remove\":_vm.removeUserGroup,\"select\":_vm.addUserGroup,\"tag\":_vm.createGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",class:{'icon-loading-small': _vm.loading.subadmins}},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"close-on-select\":false,\"disabled\":_vm.loading.subadmins||_vm.loading.all,\"limit\":2,\"multiple\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"tag-width\":60,\"value\":_vm.userSubAdminsGroups,\"label\":\"name\",\"track-by\":\"id\"},on:{\"remove\":_vm.removeUserSubAdmin,\"select\":_vm.addUserSubAdmin}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.usedSpace),expression:\"usedSpace\",modifiers:{\"auto\":true}}],staticClass:\"quota\",class:{'icon-loading-small': _vm.loading.quota}},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"allow-empty\":false,\"disabled\":_vm.loading.quota||_vm.loading.all,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"taggable\":true,\"value\":_vm.userQuota,\"label\":\"label\",\"tag-placeholder\":\"create\",\"track-by\":\"id\"},on:{\"input\":_vm.setUserQuota,\"tag\":_vm.validateQuota}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",class:{'icon-loading-small': _vm.loading.languages}},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"allow-empty\":false,\"disabled\":_vm.loading.languages||_vm.loading.all,\"options\":_vm.languages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"group-label\":\"label\",\"group-values\":\"languages\",\"label\":\"name\",\"track-by\":\"code\"},on:{\"input\":_vm.setUserLanguage}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath || _vm.showConfig.showUserBackend)?_c('div',{staticClass:\"storageLocation\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div'):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[(_vm.OC.currentUser !== _vm.user.id && _vm.user.id !== 'admin' && !_vm.loading.all)?_c('div',{staticClass:\"toggleUserActions\"},[_c('Actions',[_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){_vm.editing = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Done'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"icon-more\",on:{\"click\":_vm.toggleMenu}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'open': _vm.openedMenu }},[_c('PopoverMenu',{attrs:{\"menu\":_vm.userActions}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"feedback\",style:({opacity: _vm.feedbackMessage !== '' ? 1 : 0})},[_c('div',{staticClass:\"icon-checkmark\"}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.feedbackMessage)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content\" class=\"user-list-grid\" @scroll.passive=\"onScroll\">\n\t\t<div id=\"grid-header\"\n\t\t\t:class=\"{'sticky': scrolled && !showConfig.showNewUserForm}\"\n\t\t\tclass=\"row\">\n\t\t\t<div id=\"headerAvatar\" class=\"avatar\" />\n\t\t\t<div id=\"headerName\" class=\"name\">\n\t\t\t\t{{ t('settings', 'Username') }}\n\n\t\t\t\t<div class=\"subtitle\">\n\t\t\t\t\t{{ t('settings', 'Display name') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div id=\"headerPassword\" class=\"password\">\n\t\t\t\t{{ t('settings', 'Password') }}\n\t\t\t</div>\n\t\t\t<div id=\"headerAddress\" class=\"mailAddress\">\n\t\t\t\t{{ t('settings', 'Email') }}\n\t\t\t</div>\n\t\t\t<div id=\"headerGroups\" class=\"groups\">\n\t\t\t\t{{ t('settings', 'Groups') }}\n\t\t\t</div>\n\t\t\t<div v-if=\"subAdminsGroups.length>0 && settings.isAdmin\"\n\t\t\t\tid=\"headerSubAdmins\"\n\t\t\t\tclass=\"subadmins\">\n\t\t\t\t{{ t('settings', 'Group admin for') }}\n\t\t\t</div>\n\t\t\t<div id=\"headerQuota\" class=\"quota\">\n\t\t\t\t{{ t('settings', 'Quota') }}\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tid=\"headerLanguages\"\n\t\t\t\tclass=\"languages\">\n\t\t\t\t{{ t('settings', 'Language') }}\n\t\t\t</div>\n\n\t\t\t<div v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\t\tclass=\"headerUserBackend userBackend\">\n\t\t\t\t<div v-if=\"showConfig.showUserBackend\" class=\"userBackend\">\n\t\t\t\t\t{{ t('settings', 'User backend') }}\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\tclass=\"subtitle storageLocation\">\n\t\t\t\t\t{{ t('settings', 'Storage location') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLastLogin\"\n\t\t\t\tclass=\"headerLastLogin lastLogin\">\n\t\t\t\t{{ t('settings', 'Last login') }}\n\t\t\t</div>\n\n\t\t\t<div class=\"userActions\" />\n\t\t</div>\n\n\t\t<form v-show=\"showConfig.showNewUserForm\"\n\t\t\tid=\"new-user\"\n\t\t\t:class=\"{'sticky': scrolled && showConfig.showNewUserForm}\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\tclass=\"row\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<div :class=\"loading.all?'icon-loading-small':'icon-add'\" />\n\t\t\t<div class=\"name\">\n\t\t\t\t<input id=\"newusername\"\n\t\t\t\t\tref=\"newusername\"\n\t\t\t\t\tv-model=\"newUser.id\"\n\t\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t\t:placeholder=\"settings.newUserGenerateUserID\n\t\t\t\t\t\t? t('settings', 'Will be autogenerated')\n\t\t\t\t\t\t: t('settings', 'Username')\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tname=\"username\"\n\t\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\t\trequired\n\t\t\t\t\ttype=\"text\">\n\t\t\t</div>\n\t\t\t<div class=\"displayName\">\n\t\t\t\t<input id=\"newdisplayname\"\n\t\t\t\t\tv-model=\"newUser.displayName\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Display name')\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tname=\"displayname\"\n\t\t\t\t\ttype=\"text\">\n\t\t\t</div>\n\t\t\t<div class=\"password\">\n\t\t\t\t<input id=\"newuserpassword\"\n\t\t\t\t\tref=\"newuserpassword\"\n\t\t\t\t\tv-model=\"newUser.password\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Password')\"\n\t\t\t\t\t:required=\"newUser.mailAddress===''\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\ttype=\"password\">\n\t\t\t</div>\n\t\t\t<div class=\"mailAddress\">\n\t\t\t\t<input id=\"newemail\"\n\t\t\t\t\tv-model=\"newUser.mailAddress\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Email')\"\n\t\t\t\t\t:required=\"newUser.password==='' || settings.newUserRequireEmail\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tname=\"email\"\n\t\t\t\t\ttype=\"email\">\n\t\t\t</div>\n\t\t\t<div class=\"groups\">\n\t\t\t\t<!-- hidden input trick for vanilla html5 form validation -->\n\t\t\t\t<input v-if=\"!settings.isAdmin\"\n\t\t\t\t\tid=\"newgroups\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.groups}\"\n\t\t\t\t\t:required=\"!settings.isAdmin\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\ttype=\"text\">\n\t\t\t\t<Multiselect v-model=\"newUser.groups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"loading.groups||loading.all\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:options=\"canAddGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttag-placeholder=\"create\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\t@tag=\"createGroup\">\n\t\t\t\t\t<!-- If user is not admin, he is a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</Multiselect>\n\t\t\t</div>\n\t\t\t<div v-if=\"subAdminsGroups.length>0 && settings.isAdmin\"\n\t\t\t\tclass=\"subadmins\">\n\t\t\t\t<Multiselect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"id\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</Multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"quota\">\n\t\t\t\t<Multiselect v-model=\"newUser.quota\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\tlabel=\"label\"\n\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\t@tag=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\" class=\"languages\">\n\t\t\t\t<Multiselect v-model=\"newUser.language\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Default language')\"\n\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\tgroup-label=\"label\"\n\t\t\t\t\tgroup-values=\"languages\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\ttrack-by=\"code\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showStoragePath\" class=\"storageLocation\" />\n\t\t\t<div v-if=\"showConfig.showUserBackend\" class=\"userBackend\" />\n\t\t\t<div v-if=\"showConfig.showLastLogin\" class=\"lastLogin\" />\n\t\t\t<div class=\"userActions\">\n\t\t\t\t<input id=\"newsubmit\"\n\t\t\t\t\t:title=\"t('settings', 'Add a new user')\"\n\t\t\t\t\tclass=\"button primary icon-checkmark-white has-tooltip\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<user-row v-for=\"(user, key) in filteredUsers\"\n\t\t\t:key=\"key\"\n\t\t\t:external-actions=\"externalActions\"\n\t\t\t:groups=\"groups\"\n\t\t\t:languages=\"languages\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t:settings=\"settings\"\n\t\t\t:show-config=\"showConfig\"\n\t\t\t:sub-admins-groups=\"subAdminsGroups\"\n\t\t\t:user=\"user\" />\n\t\t<InfiniteLoading ref=\"infiniteLoading\" @infinite=\"infiniteHandler\">\n\t\t\t<div slot=\"spinner\">\n\t\t\t\t<div class=\"users-icon-loading icon-loading\" />\n\t\t\t</div>\n\t\t\t<div slot=\"no-more\">\n\t\t\t\t<div class=\"users-list-end\" />\n\t\t\t</div>\n\t\t\t<div slot=\"no-results\">\n\t\t\t\t<div id=\"emptycontent\">\n\t\t\t\t\t<div class=\"icon-contacts-dark\" />\n\t\t\t\t\t<h2>{{ t('settings', 'No users in here') }}</h2>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</InfiniteLoading>\n\t</div>\n</template>\n\n<script>\nimport userRow from './UserList/UserRow'\nimport { Multiselect } from 'nextcloud-vue'\nimport InfiniteLoading from 'vue-infinite-loading'\nimport Vue from 'vue'\n\nconst unlimitedQuota = {\n\tid: 'none',\n\tlabel: t('settings', 'Unlimited'),\n}\nconst defaultQuota = {\n\tid: 'default',\n\tlabel: t('settings', 'Default quota'),\n}\nconst newUser = {\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n}\n\nexport default {\n\tname: 'UserList',\n\tcomponents: {\n\t\tuserRow,\n\t\tMultiselect,\n\t\tInfiniteLoading,\n\t},\n\tprops: {\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tshowConfig: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tunlimitedQuota,\n\t\t\tdefaultQuota,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t},\n\t\t\tscrolled: false,\n\t\t\tsearchQuery: '',\n\t\t\tnewUser: Object.assign({}, newUser),\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\tif (!this.settings.isAdmin) {\n\t\t\t\t// we don't want subadmins to edit themselves\n\t\t\t\treturn this.users.filter(user => user.enabled !== false && user.id !== OC.getCurrentUser().uid)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t\tcanAddGroups() {\n\t\t\t// disabled if no permission to add new users to group\n\t\t\treturn this.groups.map(group => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tgroup = Object.assign({}, group)\n\t\t\t\tgroup.$isDisabled = group.canAdd === false\n\t\t\t\treturn group\n\t\t\t})\n\t\t},\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups\n\t\t},\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota)\n\t\t\tquotaPreset.unshift(this.defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonlanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\t\tlanguages: this.settings.languages.languages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function(val, old) {\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tthis.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\t// make sure the infiniteLoading state is changed if we manually\n\t\t// add/remove data from the store\n\t\tusersCount: function(val, old) {\n\t\t\t// deleting the last user, reset the list\n\t\t\tif (val === 0 && old === 1) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t\t// adding the first user, warn the infiniteLoader that\n\t\t\t\t// the list is not empty anymore (we don't fetch the newly\n\t\t\t\t// added user as we already have all the info we need)\n\t\t\t} else if (val === 1 && old === 0) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.loaded()\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tthis.userSearch = new OCA.Search(this.search, this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tthis.redirectIfDisabled()\n\t},\n\tmethods: {\n\t\tonScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTo > 0\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tinfiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', {\n\t\t\t\toffset: this.usersOffset,\n\t\t\t\tlimit: this.usersLimit,\n\t\t\t\tgroup: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',\n\t\t\t\tsearch: this.searchQuery,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresponse ? $state.loaded() : $state.complete()\n\t\t\t\t})\n\t\t},\n\n\t\t/* SEARCH */\n\t\tsearch(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.search('')\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\t\tcreateUser() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.resetForm()\n\t\t\t\t\tthis.$refs.newusername.focus()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\t\tthis.$refs.newusername.focus()\n\t\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\t\tthis.$refs.newuserpassword.focus()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\tif (value && value.length > 0) {\n\t\t\t\t// setting new user default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateGroup(gid) {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then((group) => {\n\t\t\t\t\tthis.newUser.groups.push(this.groups.find(group => group.id === gid))\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t})\n\t\t\treturn this.$store.getters.getGroups[this.groups.length]\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * * we only check for 0 because we don't have the count on ldap\n\t\t * * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tredirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=36d8c983&\"\nimport script from \"./UserList.vue?vue&type=script&lang=js&\"\nexport * from \"./UserList.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-list-grid\",attrs:{\"id\":\"app-content\"},on:{\"&scroll\":function($event){return _vm.onScroll($event)}}},[_c('div',{staticClass:\"row\",class:{'sticky': _vm.scrolled && !_vm.showConfig.showNewUserForm},attrs:{\"id\":\"grid-header\"}},[_c('div',{staticClass:\"avatar\",attrs:{\"id\":\"headerAvatar\"}}),_vm._v(\" \"),_c('div',{staticClass:\"name\",attrs:{\"id\":\"headerName\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\n\\t\\t\\t\"),_c('div',{staticClass:\"subtitle\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"password\",attrs:{\"id\":\"headerPassword\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Password'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\",attrs:{\"id\":\"headerAddress\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Email'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",attrs:{\"id\":\"headerGroups\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Groups'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",attrs:{\"id\":\"headerSubAdmins\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Group admin for'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\",attrs:{\"id\":\"headerQuota\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",attrs:{\"id\":\"headerLanguages\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('div',{staticClass:\"headerUserBackend userBackend\"},[(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"subtitle storageLocation\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"headerLastLogin lastLogin\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Last login'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"})]),_vm._v(\" \"),_c('form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showConfig.showNewUserForm),expression:\"showConfig.showNewUserForm\"}],staticClass:\"row\",class:{'sticky': _vm.scrolled && _vm.showConfig.showNewUserForm},attrs:{\"id\":\"new-user\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser($event)}}},[_c('div',{class:_vm.loading.all?'icon-loading-small':'icon-add'}),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.id),expression:\"newUser.id\"}],ref:\"newusername\",attrs:{\"id\":\"newusername\",\"disabled\":_vm.settings.newUserGenerateUserID,\"placeholder\":_vm.settings.newUserGenerateUserID\n\t\t\t\t\t? _vm.t('settings', 'Will be autogenerated')\n\t\t\t\t\t: _vm.t('settings', 'Username'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"name\":\"username\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\",\"type\":\"text\"},domProps:{\"value\":(_vm.newUser.id)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"id\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.displayName),expression:\"newUser.displayName\"}],attrs:{\"id\":\"newdisplayname\",\"placeholder\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"name\":\"displayname\",\"type\":\"text\"},domProps:{\"value\":(_vm.newUser.displayName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"displayName\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"password\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.password),expression:\"newUser.password\"}],ref:\"newuserpassword\",attrs:{\"id\":\"newuserpassword\",\"minlength\":_vm.minPasswordLength,\"placeholder\":_vm.t('settings', 'Password'),\"required\":_vm.newUser.mailAddress==='',\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"name\":\"password\",\"type\":\"password\"},domProps:{\"value\":(_vm.newUser.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.mailAddress),expression:\"newUser.mailAddress\"}],attrs:{\"id\":\"newemail\",\"placeholder\":_vm.t('settings', 'Email'),\"required\":_vm.newUser.password==='' || _vm.settings.newUserRequireEmail,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"name\":\"email\",\"type\":\"email\"},domProps:{\"value\":(_vm.newUser.mailAddress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\"},[(!_vm.settings.isAdmin)?_c('input',{class:{'icon-loading-small': _vm.loading.groups},attrs:{\"id\":\"newgroups\",\"required\":!_vm.settings.isAdmin,\"tabindex\":\"-1\",\"type\":\"text\"},domProps:{\"value\":_vm.newUser.groups}}):_vm._e(),_vm._v(\" \"),_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"close-on-select\":false,\"disabled\":_vm.loading.groups||_vm.loading.all,\"multiple\":true,\"options\":_vm.canAddGroups,\"placeholder\":_vm.t('settings', 'Add user in group'),\"tag-width\":60,\"taggable\":true,\"label\":\"name\",\"tag-placeholder\":\"create\",\"track-by\":\"id\"},on:{\"tag\":_vm.createGroup},model:{value:(_vm.newUser.groups),callback:function ($$v) {_vm.$set(_vm.newUser, \"groups\", $$v)},expression:\"newUser.groups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\"},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"close-on-select\":false,\"multiple\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"tag-width\":60,\"label\":\"name\",\"track-by\":\"id\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\"},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"allow-empty\":false,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"taggable\":true,\"label\":\"label\",\"track-by\":\"id\"},on:{\"tag\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\"},[_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"allow-empty\":false,\"options\":_vm.languages,\"placeholder\":_vm.t('settings', 'Default language'),\"group-label\":\"label\",\"group-values\":\"languages\",\"label\":\"name\",\"track-by\":\"code\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"lastLogin\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[_c('input',{staticClass:\"button primary icon-checkmark-white has-tooltip\",attrs:{\"id\":\"newsubmit\",\"title\":_vm.t('settings', 'Add a new user'),\"type\":\"submit\",\"value\":\"\"}})])]),_vm._v(\" \"),_vm._l((_vm.filteredUsers),function(user,key){return _c('user-row',{key:key,attrs:{\"external-actions\":_vm.externalActions,\"groups\":_vm.groups,\"languages\":_vm.languages,\"quota-options\":_vm.quotaOptions,\"settings\":_vm.settings,\"show-config\":_vm.showConfig,\"sub-admins-groups\":_vm.subAdminsGroups,\"user\":user}})}),_vm._v(\" \"),_c('InfiniteLoading',{ref:\"infiniteLoading\",on:{\"infinite\":_vm.infiniteHandler}},[_c('div',{attrs:{\"slot\":\"spinner\"},slot:\"spinner\"},[_c('div',{staticClass:\"users-icon-loading icon-loading\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_c('div',{staticClass:\"users-list-end\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-results\"},slot:\"no-results\"},[_c('div',{attrs:{\"id\":\"emptycontent\"}},[_c('div',{staticClass:\"icon-contacts-dark\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No users in here')))])])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\" :navigation-class=\"{ 'icon-loading': loadingAddGroup }\">\n\t\t<AppNavigation>\n\t\t\t<AppNavigationNew button-id=\"new-user-button\"\n\t\t\t\t:text=\"t('settings','New user')\"\n\t\t\t\tbutton-class=\"icon-add\"\n\t\t\t\t@click=\"toggleNewUserMenu\" />\n\t\t\t<ul id=\"usergrouplist\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t\t<AppNavigationSettings>\n\t\t\t\t<div>\n\t\t\t\t\t<p>{{ t('settings', 'Default quota:') }}</p>\n\t\t\t\t\t<Multiselect :value=\"defaultQuota\"\n\t\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t\ttag-placeholder=\"create\"\n\t\t\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\t\t\tlabel=\"label\"\n\t\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t\t@tag=\"validateQuota\"\n\t\t\t\t\t\t@input=\"setDefaultQuota\" />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input id=\"showLanguages\"\n\t\t\t\t\t\tv-model=\"showLanguages\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t\t<label for=\"showLanguages\">{{ t('settings', 'Show Languages') }}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input id=\"showLastLogin\"\n\t\t\t\t\t\tv-model=\"showLastLogin\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t\t<label for=\"showLastLogin\">{{ t('settings', 'Show last login') }}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input id=\"showUserBackend\"\n\t\t\t\t\t\tv-model=\"showUserBackend\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t\t<label for=\"showUserBackend\">{{ t('settings', 'Show user backend') }}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input id=\"showStoragePath\"\n\t\t\t\t\t\tv-model=\"showStoragePath\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t\t<label for=\"showStoragePath\">{{ t('settings', 'Show storage path') }}</label>\n\t\t\t\t</div>\n\t\t\t</AppNavigationSettings>\n\t\t</AppNavigation>\n\t\t<AppContent>\n\t\t\t<UserList #content\n\t\t\t\t:users=\"users\"\n\t\t\t\t:show-config=\"showConfig\"\n\t\t\t\t:selected-group=\"selectedGroup\"\n\t\t\t\t:external-actions=\"externalActions\" />\n\t\t</AppContent>\n\t</Content>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\nimport {\n\tAppContent,\n\tAppNavigation,\n\tAppNavigationItem,\n\tAppNavigationNew,\n\tAppNavigationSettings,\n\tContent,\n\tMultiselect,\n} from 'nextcloud-vue'\nimport UserList from '../components/UserList'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Users',\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigation,\n\t\tAppNavigationItem,\n\t\tAppNavigationNew,\n\t\tAppNavigationSettings,\n\t\tContent,\n\t\tUserList,\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\t// default quota is set to unlimited\n\t\t\tunlimitedQuota: { id: 'none', label: t('settings', 'Unlimited') },\n\t\t\t// temporary value used for multiselect change\n\t\t\tselectedQuota: false,\n\t\t\texternalActions: [],\n\t\t\tshowAddGroupEntry: false,\n\t\t\tloadingAddGroup: false,\n\t\t\tshowConfig: {\n\t\t\t\tshowStoragePath: false,\n\t\t\t\tshowUserBackend: false,\n\t\t\t\tshowLastLogin: false,\n\t\t\t\tshowNewUserForm: false,\n\t\t\t\tshowLanguages: false,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\t// Local settings\n\t\tshowLanguages: {\n\t\t\tget: function() { return this.getLocalstorage('showLanguages') },\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLanguages', status)\n\t\t\t},\n\t\t},\n\t\tshowLastLogin: {\n\t\t\tget: function() { return this.getLocalstorage('showLastLogin') },\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLastLogin', status)\n\t\t\t},\n\t\t},\n\t\tshowUserBackend: {\n\t\t\tget: function() { return this.getLocalstorage('showUserBackend') },\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showUserBackend', status)\n\t\t\t},\n\t\t},\n\t\tshowStoragePath: {\n\t\t\tget: function() { return this.getLocalstorage('showStoragePath') },\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tuserCount() {\n\t\t\treturn this.$store.getters.getUserCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\t// default quota\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\t\t// mapping saved values to objects\n\t\tdefaultQuota: {\n\t\t\tget: function() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== this.unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn this.unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset: function(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tconst self = this\n\t\t\tlet groups = this.$store.getters.getGroups\n\t\t\tgroups = Array.isArray(groups) ? groups : []\n\n\t\t\t// Map groups\n\t\t\tgroups = groups.map(group => {\n\t\t\t\tconst item = {}\n\t\t\t\titem.id = group.id.replace(' ', '_')\n\t\t\t\titem.key = item.id\n\t\t\t\titem.utils = {}\n\n\t\t\t\t// router link to\n\t\t\t\titem.router = {\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tparams: { selectedGroup: group.id },\n\t\t\t\t}\n\n\t\t\t\t// group name\n\t\t\t\titem.text = group.name\n\t\t\t\titem.title = group.name\n\n\t\t\t\t// users count for all groups\n\t\t\t\tif (group.usercount - group.disabled > 0 || group.usercount === -1) {\n\t\t\t\t\titem.utils.counter = group.usercount - group.disabled\n\t\t\t\t}\n\n\t\t\t\tif (item.id !== 'admin' && item.id !== 'disabled' && this.settings.isAdmin) {\n\t\t\t\t\t// add delete button on real groups\n\t\t\t\t\titem.utils.actions = [{\n\t\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\t\ttext: t('settings', 'Remove group'),\n\t\t\t\t\t\taction: function() {\n\t\t\t\t\t\t\tself.removeGroup(group.id)\n\t\t\t\t\t\t},\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\t// Every item is added on top of the array, so we're going backward\n\t\t\t// Groups, separator, disabled, admin, everyone\n\n\t\t\t// Add separator\n\t\t\tlet realGroups = groups.find((group) => { return group.id !== 'disabled' && group.id !== 'admin' })\n\t\t\trealGroups = typeof realGroups === 'undefined' ? [] : realGroups\n\t\t\trealGroups = Array.isArray(realGroups) ? realGroups : [realGroups]\n\t\t\tif (realGroups.length > 0) {\n\t\t\t\tconst separator = {\n\t\t\t\t\tcaption: true,\n\t\t\t\t\ttext: t('settings', 'Groups'),\n\t\t\t\t}\n\t\t\t\tgroups.unshift(separator)\n\t\t\t}\n\n\t\t\t// Adjust admin and disabled groups\n\t\t\tconst adminGroup = groups.find(group => group.id === 'admin')\n\t\t\tconst disabledGroup = groups.find(group => group.id === 'disabled')\n\n\t\t\t// filter out admin and disabled\n\t\t\tgroups = groups.filter(group => ['admin', 'disabled'].indexOf(group.id) === -1)\n\n\t\t\tif (adminGroup && adminGroup.text) {\n\t\t\t\tadminGroup.text = t('settings', 'Admins')\t// rename admin group\n\t\t\t\tadminGroup.icon = 'icon-user-admin'\t\t\t// set icon\n\t\t\t\tgroups.unshift(adminGroup)\t\t\t\t\t// add admin group if present\n\t\t\t}\n\t\t\tif (disabledGroup && disabledGroup.text) {\n\t\t\t\tdisabledGroup.text = t('settings', 'Disabled users')\t// rename disabled group\n\t\t\t\tdisabledGroup.icon = 'icon-disabled-users'\t\t\t\t// set icon\n\t\t\t\tif (disabledGroup.utils && (\n\t\t\t\t\tdisabledGroup.utils.counter > 0\t\t\t\t\t\t// add disabled if not empty\n\t\t\t\t\t|| disabledGroup.utils.counter === -1)\t\t\t\t// add disabled if ldap enabled\n\t\t\t\t) {\n\t\t\t\t\tgroups.unshift(disabledGroup)\n\t\t\t\t\tif (disabledGroup.utils.counter === -1) {\n\t\t\t\t\t\t// hides the counter instead of showing -1\n\t\t\t\t\t\tdelete disabledGroup.utils.counter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add everyone group\n\t\t\tconst everyoneGroup = {\n\t\t\t\tid: 'everyone',\n\t\t\t\tkey: 'everyone',\n\t\t\t\ticon: 'icon-contacts-dark',\n\t\t\t\trouter: { name: 'users' },\n\t\t\t\ttext: t('settings', 'Everyone'),\n\t\t\t}\n\t\t\t// users count\n\t\t\tif (this.userCount > 0) {\n\t\t\t\tVue.set(everyoneGroup, 'utils', {\n\t\t\t\t\tcounter: this.userCount,\n\t\t\t\t})\n\t\t\t}\n\t\t\tgroups.unshift(everyoneGroup)\n\n\t\t\tconst addGroup = {\n\t\t\t\tid: 'addgroup',\n\t\t\t\tkey: 'addgroup',\n\t\t\t\ticon: 'icon-add',\n\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\tclasses: this.loadingAddGroup ? 'icon-loading-small' : '',\n\t\t\t}\n\t\t\tif (this.showAddGroupEntry) {\n\t\t\t\tVue.set(addGroup, 'edit', {\n\t\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\t\taction: this.createGroup,\n\t\t\t\t\treset: function() {\n\t\t\t\t\t\tself.showAddGroupEntry = false\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\taddGroup.classes = 'editing'\n\t\t\t} else {\n\t\t\t\tVue.set(addGroup, 'action', function() {\n\t\t\t\t\tself.showAddGroupEntry = true\n\t\t\t\t\t// focus input\n\t\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\t\twindow.addgroup.querySelector('form > input[type=\"text\"]').focus()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t\tgroups.unshift(addGroup)\n\n\t\t\treturn groups\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups,\n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount,\n\t\t})\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\t// and add the registerAction method\n\t\tObject.assign(OCA, {\n\t\t\tSettings: {\n\t\t\t\tUserList: {\n\t\t\t\t\tregisterAction: this.registerAction,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t},\n\tmethods: {\n\t\ttoggleNewUserMenu() {\n\t\t\tthis.showConfig.showNewUserForm = !this.showConfig.showNewUserForm\n\t\t\tif (this.showConfig.showNewUserForm) {\n\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\twindow.newusername.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tgetLocalstorage(key) {\n\t\t\t// force initialization\n\t\t\tconst localConfig = this.$localStorage.get(key)\n\t\t\t// if localstorage is null, fallback to original values\n\t\t\tthis.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key]\n\t\t\treturn this.showConfig[key]\n\t\t},\n\t\tsetLocalStorage(key, status) {\n\t\t\tthis.showConfig[key] = status\n\t\t\tthis.$localStorage.set(key, status)\n\t\t\treturn status\n\t\t},\n\t\tremoveGroup(groupid) {\n\t\t\tconst self = this\n\t\t\t// TODO migrate to a vue js confirm dialog component\n\t\t\tOC.dialogs.confirm(\n\t\t\t\tt('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', { group: groupid }),\n\t\t\t\tt('settings', 'Please confirm the group removal '),\n\t\t\t\tfunction(success) {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tself.$store.dispatch('removeGroup', groupid)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Promise|boolean}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn this.setDefaultQuota('none')\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @returns {Array}\n\t\t */\n\t\tregisterAction(icon, text, action) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon: icon,\n\t\t\t\ttext: text,\n\t\t\t\taction: action,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {Object} event The form submit event\n\t\t */\n\t\tcreateGroup(event) {\n\t\t\tconst gid = event.target[0].value\n\t\t\tthis.loadingAddGroup = true\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.showAddGroupEntry = false\n\t\t\t\t\tthis.loadingAddGroup = false\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'group',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tselectedGroup: gid,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loadingAddGroup = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=64be0604&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"sources":["webpack:///./apps/settings/src/components/AppList/AppItem.vue?26cc","webpack:///./apps/settings/src/components/AppDetails.vue?59a9","webpack:///./apps/settings/src/components/AppList/AppItem.vue?85d8","webpack:///./apps/settings/src/components/AppList/AppItem.vue?b7de","webpack:///./apps/settings/src/components/AppDetails.vue?edbb","webpack:///./apps/settings/src/components/AppDetails.vue?3028","webpack:///./apps/settings/src/views/Apps.vue?0f05","webpack:///./apps/settings/src/components/AppList/AppScore.vue?5862","webpack:///apps/settings/src/components/AppList/AppScore.vue","webpack:///./apps/settings/src/components/AppList/AppScore.vue","webpack:///./apps/settings/src/components/AppList/AppScore.vue?1b29","webpack:///./apps/settings/src/components/AppManagement.vue?9197","webpack:///apps/settings/src/components/AppManagement.vue","webpack:///./apps/settings/src/components/AppManagement.vue","webpack:///./apps/settings/src/components/SvgFilterMixin.vue?0fa6","webpack:///apps/settings/src/components/SvgFilterMixin.vue","webpack:///./apps/settings/src/components/SvgFilterMixin.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue?6d51","webpack:///apps/settings/src/components/AppList/AppItem.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue?e987","webpack:///./apps/settings/src/components/PrefixMixin.vue?4fe7","webpack:///apps/settings/src/components/PrefixMixin.vue","webpack:///./apps/settings/src/components/PrefixMixin.vue","webpack:///./apps/settings/src/components/AppList.vue?ff65","webpack:///apps/settings/src/components/AppList.vue","webpack:///./apps/settings/src/components/AppList.vue","webpack:///./apps/settings/src/components/AppList.vue?d480","webpack:///./apps/settings/src/components/AppDetails.vue?0b0a","webpack:///apps/settings/src/components/AppDetails.vue","webpack:///./apps/settings/src/components/AppDetails.vue","webpack:///./apps/settings/src/components/AppDetails.vue?7bf7","webpack:///apps/settings/src/views/Apps.vue","webpack:///./apps/settings/src/views/Apps.vue?53fc","webpack:///./apps/settings/src/views/Apps.vue"],"names":["content","module","i","locals","exports","add","default","___CSS_LOADER_API_IMPORT___","push","_h","this","$createElement","_self","_c","staticClass","attrs","scoreImage","_vm","class","selected","isSelected","on","showAppDetails","listView","app","preview","screenshot","_e","_v","filterId","filterUrl","_s","name","summary","version","appstoreData","releases","level","directives","rawName","value","t","expression","modifiers","hasRating","score","error","loading","id","update","installing","$event","stopPropagation","remove","disable","active","canInstall","isCompatible","forceEnableButtonText","forceEnable","enableButtonText","enable","installed","useBundleView","useListView","store","useAppStoreView","counter","updateAll","_l","key","category","bundle","bundleToggleText","toggleBundle","bundleApps","search","searchApps","length","apps","staticStyle","previewAsIcon","ratingOverall","a","index","author","licence","canLimitToGroups","prefix","domProps","Array","isArray","groupCheckedAppsData","_i","$$a","$$el","target","$$c","checked","$$v","$$i","concat","slice","setGroupLimit","isLimitedToGroups","groups","appGroups","addGroupLimitation","removeGroupLimitation","asyncFindGroup","slot","dep","internal","appstoreUrl","website","bugs","documentation","user","admin","developer","renderMarkdown","currentApp","loadingList","item","searchQuery","hideAppDetails"],"mappings":"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","file":"vue-5.js?v=05afd2379fbbcacd65e0","sourcesContent":["// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=86525a0a&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"43f49a2e\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=4e37c68e&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3ee59ee2\", content, true, {});","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=86525a0a&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=86525a0a&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = module.exports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-86525a0a] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-86525a0a]:hover,\\n.force[data-v-86525a0a]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=4e37c68e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=4e37c68e&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = module.exports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-4e37c68e] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-4e37c68e]:hover,\\n.force[data-v-4e37c68e]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.currentApp},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',[_c('ul',{attrs:{\"id\":\"appscategories\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1)]),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.currentApp)?_c('AppSidebar',{on:{\"close\":_vm.hideAppDetails}},[_c('AppDetails',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn OC.imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=285fda30&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppManagement.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tloading() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.$store.getters.loading(id)\n\t\t\t}\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the app store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the app store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit: function() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId: appId, groups: [] })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId: appId, groups: [] })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./AppManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./AppManagement.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100)) + new Date().getSeconds() + new Date().getMilliseconds()\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !app.screenshot)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:filter=\"filterUrl\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot\" :src=\"app.screenshot\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-version\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"loading(app.id)\" class=\"icon icon-loading-small\" />\n\t\t\t<input v-if=\"app.update\"\n\t\t\t\tclass=\"update primary\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Update to {update}', {update:app.update})\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t<input v-if=\"app.active\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\tclass=\"enable force\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore'\nimport AppManagement from '../AppManagement'\nimport SvgFilterMixin from '../SvgFilterMixin'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id': function(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=86525a0a&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=86525a0a&scoped=true&lang=css&\"\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 \"86525a0a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.app.screenshot))?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.loading(_vm.app.id))?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"counter\">\n\t\t\t\t\t{{ t('settings', '{counter} apps have an update available', {counter}) }}\n\t\t\t\t\t<button v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ t('settings', 'Update all') }}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t\t:list-view=\"true\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 1\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && ['installed', 'updates'].includes(this.category)\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => app.bundleId === bundle)\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=0609857c&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', '{counter} apps have an update available', {counter: _vm.counter}))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('button',{staticClass:\"primary\",attrs:{\"id\":\"app-list-update-all\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update all'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-details-view\" style=\"padding: 20px;\">\n\t\t<h2>\n\t\t\t<div v-if=\"!app.preview\" class=\"icon-settings-dark\" />\n\t\t\t<svg v-if=\"app.previewAsIcon && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:filter=\"filterUrl\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\t\t\t{{ app.name }}\n\t\t</h2>\n\t\t<img v-if=\"app.screenshot\" :src=\"app.screenshot\" width=\"100%\">\n\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t</div>\n\n\t\t<div v-if=\"author\" class=\"app-author\">\n\t\t\t{{ t('settings', 'by') }}\n\t\t\t<span v-for=\"(a, index) in author\" :key=\"index\">\n\t\t\t\t<a v-if=\"a['@attributes'] && a['@attributes']['homepage']\" :href=\"a['@attributes']['homepage']\">{{ a['@value'] }}</a><span v-else-if=\"a['@value']\">{{ a['@value'] }}</span><span v-else>{{ a }}</span><span v-if=\"index+1 < author.length\">, </span>\n\t\t\t</span>\n\t\t</div>\n\t\t<div v-if=\"licence\" class=\"app-licence\">\n\t\t\t{{ licence }}\n\t\t</div>\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"actions-buttons\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', {version: app.update})\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || loading(app.id)\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t\t<div class=\"app-groups\">\n\t\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"groups-enable\">\n\t\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t\t<Multiselect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t\t:options-limit=\"5\"\n\t\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\t\tclass=\"multiselect-vue\"\n\t\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t\t:tag-width=\"60\"\n\t\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t\t</Multiselect>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\n\t\t<div class=\"app-description\" v-html=\"renderMarkdown\" />\n\t</div>\n</template>\n\n<script>\nimport { Multiselect } from 'nextcloud-vue'\nimport marked from 'marked'\nimport dompurify from 'dompurify'\n\nimport AppScore from './AppList/AppScore'\nimport AppManagement from './AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport SvgFilterMixin from './SvgFilterMixin'\n\nexport default {\n\tname: 'AppDetails',\n\tcomponents: {\n\t\tMultiselect,\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, PrefixMixin, SvgFilterMixin],\n\tprops: ['category', 'app'],\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.app.description.trim(), {\n\t\t\t\t\trenderer: renderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t)\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=4e37c68e&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=4e37c68e&scoped=true&lang=css&\"\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 \"4e37c68e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\"},attrs:{\"id\":\"app-details-view\"}},[_c('h2',[(!_vm.app.preview)?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.app.previewAsIcon && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e(),_vm._v(\" \"),(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.author)?_c('div',{staticClass:\"app-author\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'by'))+\"\\n\\t\\t\"),_vm._l((_vm.author),function(a,index){return _c('span',{key:index},[(a['@attributes'] && a['@attributes']['homepage'])?_c('a',{attrs:{\"href\":a['@attributes']['homepage']}},[_vm._v(_vm._s(a['@value']))]):(a['@value'])?_c('span',[_vm._v(_vm._s(a['@value']))]):_c('span',[_vm._v(_vm._s(a))]),(index+1 < _vm.author.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e(),_vm._v(\" \"),(_vm.licence)?_c('div',{staticClass:\"app-licence\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.licence)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-buttons\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', {version: _vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"groups-enable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-description\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': currentApp}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<AppNavigation>\n\t\t\t<ul id=\"appscategories\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t</AppNavigation>\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"currentApp\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\t\t<AppSidebar v-if=\"id && currentApp\" @close=\"hideAppDetails\">\n\t\t\t<AppDetails :category=\"category\" :app=\"currentApp\" />\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport {\n\tAppContent,\n\tAppNavigation,\n\tAppNavigationItem,\n\tAppSidebar,\n\tContent,\n} from 'nextcloud-vue'\nimport AppList from '../components/AppList'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\nimport AppDetails from '../components/AppDetails'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigation,\n\t\tAppNavigationItem,\n\t\tAppSidebar,\n\t\tContent,\n\t\tAppDetails,\n\t\tAppList,\n\t},\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tcurrentApp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tlet categories = this.$store.getters.getCategories\n\t\t\tcategories = Array.isArray(categories) ? categories : []\n\n\t\t\t// Map groups\n\t\t\tcategories = categories.map(category => {\n\t\t\t\tconst item = {}\n\t\t\t\titem.id = 'app-category-' + category.ident\n\t\t\t\titem.icon = 'icon-category-' + category.ident\n\t\t\t\titem.classes = []\t\t\t\t\t\t\t// empty classes, active will be set later\n\t\t\t\titem.router = {\t\t\t\t\t\t\t\t// router link to\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: { category: category.ident },\n\t\t\t\t}\n\t\t\t\titem.text = category.displayName\n\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\t// Add everyone group\n\t\t\tconst defaultCategories = [\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-your-apps',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\trouter: { name: 'apps' },\n\t\t\t\t\ticon: 'icon-category-installed',\n\t\t\t\t\ttext: t('settings', 'Your apps'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'app-category-enabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-enabled',\n\t\t\t\t\trouter: { name: 'apps-category', params: { category: 'enabled' } },\n\t\t\t\t\ttext: t('settings', 'Active apps'),\n\t\t\t\t}, {\n\t\t\t\t\tid: 'app-category-disabled',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-category-disabled',\n\t\t\t\t\trouter: { name: 'apps-category', params: { category: 'disabled' } },\n\t\t\t\t\ttext: t('settings', 'Disabled apps'),\n\t\t\t\t},\n\t\t\t]\n\n\t\t\tif (!this.settings.appstoreEnabled) {\n\t\t\t\treturn defaultCategories\n\t\t\t}\n\n\t\t\tif (this.$store.getters.getUpdateCount > 0) {\n\t\t\t\tdefaultCategories.push({\n\t\t\t\t\tid: 'app-category-updates',\n\t\t\t\t\tclasses: [],\n\t\t\t\t\ticon: 'icon-download',\n\t\t\t\t\trouter: { name: 'apps-category', params: { category: 'updates' } },\n\t\t\t\t\ttext: t('settings', 'Updates'),\n\t\t\t\t\tutils: { counter: this.$store.getters.getUpdateCount },\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdefaultCategories.push({\n\t\t\t\tid: 'app-category-app-bundles',\n\t\t\t\tclasses: [],\n\t\t\t\ticon: 'icon-category-app-bundles',\n\t\t\t\trouter: { name: 'apps-category', params: { category: 'app-bundles' } },\n\t\t\t\ttext: t('settings', 'App bundles'),\n\t\t\t})\n\n\t\t\tcategories = defaultCategories.concat(categories)\n\n\t\t\t// Set current group as active\n\t\t\tconst activeGroup = categories.findIndex(group => group.id === 'app-category-' + this.category)\n\t\t\tif (activeGroup >= 0) {\n\t\t\t\tcategories[activeGroup].classes.push('active')\n\t\t\t} else {\n\t\t\t\tcategories[0].classes.push('active')\n\t\t\t}\n\n\t\t\tcategories.push({\n\t\t\t\tid: 'app-developer-docs',\n\t\t\t\tclasses: [],\n\t\t\t\thref: this.settings.developerDocumentation,\n\t\t\t\ttext: t('settings', 'Developer documentation') + ' ↗',\n\t\t\t})\n\n\t\t\t// Return\n\t\t\treturn categories\n\t\t},\n\t},\n\twatch: {\n\t\tcategory: function(val, old) {\n\t\t\tthis.setSearch('')\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories')\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\tmounted() {\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tthis.appSearch = new OCA.Search(this.setSearch, this.resetSearch)\n\t},\n\tmethods: {\n\t\tsetSearch(query) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.setSearch('')\n\t\t},\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=bfb67596&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file |