1
|
{"version":3,"file":"settings-users-3239.js?v=404a7029b1d2b269c4e4","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=29922c80&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=4684ed00&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=20636959&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=0540d351&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/groups.ts","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?7ade","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc2d","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc3d","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?64c6","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?c0ec","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?e7ff","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/node_modules/is-svg/index.js","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?a8fc","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?6d31","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4758","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=539a4ad0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?d90e","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?1540","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppNavigationGroupList.vue?c74f","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?0ca3","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=78871070&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=4f7fcac6&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=73fd953a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__note[data-v-29922c80]{font-weight:normal}fieldset[data-v-29922c80]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__note {\\n\\t\\tfont-weight: normal;\\n\\t}\\n}\\n\\nfieldset {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-4684ed00]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list[data-v-21942da5]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%;will-change:scroll-position}.user-list__header[data-v-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,oBAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tinset-inline-start: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.footer[data-v-20636959]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-20636959]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-20636959],.footer__cell span[data-v-20636959],.footer__cell label[data-v-20636959]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-20636959],.footer__cell--displayname[data-v-20636959]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-20636959]{inset-inline-start:0}.footer__cell--displayname[data-v-20636959]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-20636959]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-20636959]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-20636959]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-20636959]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-20636959]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-20636959]{min-width:400px;width:400px}.footer__cell--fill[data-v-20636959]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-20636959]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-20636959]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-20636959]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-20636959]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-20636959]{inset-inline-start:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.footer {\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBACC,2CAAA,CCEA,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.header {\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__header[data-v-0540d351]{margin:0}.modal__content[data-v-0540d351]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-0540d351]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { CancelablePromise } from 'cancelable-promise';\nconst formatGroup = (group) => ({\n id: group.id,\n name: group.displayname,\n usercount: group.usercount,\n disabled: group.disabled,\n canAdd: group.canAdd,\n canRemove: group.canRemove,\n});\n/**\n * Search groups\n *\n * @param {object} options Options\n * @param {string} options.search Search query\n * @param {number} options.offset Offset\n * @param {number} options.limit Limit\n */\nexport const searchGroups = ({ search, offset, limit }) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const { data } = await axios.get(generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), {\n signal: controller.signal,\n });\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n resolve(formattedGroups);\n }\n catch (error) {\n reject(error);\n }\n });\n};\n/**\n * Load user groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n/**\n * Load user subadmin groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserSubAdminGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=21942da5&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21942da5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',_vm._g({staticClass:\"dialog\",attrs:{\"size\":\"small\",\"name\":_vm.t('settings', 'New account'),\"out-transition\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{staticClass:\"dialog__submit\",attrs:{\"data-test\":\"submit\",\"form\":\"new-user-form\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new account'))+\"\\n\\t\\t\")])]},proxy:true}])},_vm.$listeners),[_c('form',{staticClass:\"dialog__form\",attrs:{\"id\":\"new-user-form\",\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('NcTextField',{ref:\"username\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"dialog__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"data-test\":\"groups\",\"input-label\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin ? _vm.t('settings', 'Member of the following groups (required)') : _vm.t('settings', 'Member of the following groups'),\"placeholder\":_vm.t('settings', 'Set account groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.availableGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"required\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addGroup(options.at(-1))}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Admin of the following groups'),\"placeholder\":_vm.t('settings', 'Set account as admin for …'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.availableGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},on:{\"search\":_vm.searchGroups},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Quota'),\"placeholder\":_vm.t('settings', 'Set account quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Language'),\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['dialog__item dialog__managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.managerInputLabel,\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcDialog class=\"dialog\"\n\t\tsize=\"small\"\n\t\t:name=\"t('settings', 'New account')\"\n\t\tout-transition\n\t\tv-on=\"$listeners\">\n\t\t<form id=\"new-user-form\"\n\t\t\tclass=\"dialog__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"dialog__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect class=\"dialog__select\"\n\t\t\t\t\tdata-test=\"groups\"\n\t\t\t\t\t:input-label=\"!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:required=\"!settings.isAdmin && !settings.isDelegatedAdmin\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addGroup(options.at(-1))\" />\n\t\t\t\t\t<!-- If user is not admin, they are 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</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Admin of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for …')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@search=\"searchGroups\" />\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Quota')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.language\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Language')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['dialog__item dialog__managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"managerInputLabel\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t</form>\n\n\t\t<template #actions>\n\t\t\t<NcButton class=\"dialog__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\tform=\"new-user-form\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new account') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js'\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nimport { searchGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'NewUserDialog',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcDialog,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerInputLabel: t('settings', 'Manager'),\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set line manager'),\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tavailableGroups() {\n\t\t\tconst groups = (this.settings.isAdmin || this.settings.isDelegatedAdmin)\n\t\t\t\t? this.$store.getters.getSortedGroups\n\t\t\t\t: this.$store.getters.getSubAdminGroups\n\n\t\t\treturn groups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmounted() {\n\t\tthis.$refs.username?.focus?.()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\tthis.$emit('closing')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (!this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\t// managers cannot search for groups\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\t// Populate store from server request\n\t\t\t\tfor (const group of groups) {\n\t\t\t\t\tthis.$store.commit('addGroup', group)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.newUser.groups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.newUser.groups.push(group)\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 * @return {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 = formatFileSize(parseFileSize(quota, true))\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\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.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!./NewUserDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=4f7fcac6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=4f7fcac6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserDialog.vue?vue&type=template&id=4f7fcac6&scoped=true\"\nimport script from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserDialog.vue?vue&type=style&index=0&id=4f7fcac6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f7fcac6\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading accounts …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=20636959&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=20636959&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=20636959&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=20636959&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20636959\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-first-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'First login')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account actions'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=5c0f8828&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c0f8828\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add account to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.groupsDetails,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.subAdminGroupsDetails,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.availableSubAdminGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminGroups},on:{\"search\":_vm.searchGroups,\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminGroupsLabels?.length > 40 ? _vm.userSubAdminGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-first-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userFirstLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel,\"label\":\"displayname\",\"filterable\":false,\"internal-search\":false,\"clearable\":true},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"update:model-value\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.enabledActions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon,\"close-after-click\":\"\"},on:{\"click\":(event) => action(event, { ..._vm.user })},scopedSlots:_vm._u([(_vm.isSvg(icon))?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":icon,\"aria-hidden\":\"true\"}})]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!Object.keys(jsonObject).some(x => x.toLowerCase() === 'svg')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=7e1868f4\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\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 { N as NcActionButton } from \"./chunks/NcActionButton-CuVNJJtW.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-DEf00ge6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-DSMKeccY.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-B4qGsF57.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-yAm71xxU.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-B4VZCD8B.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-DNweMXRJ.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-DyXqBrOB.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-CqKWSnxO.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-DcgSwIOY.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-CrTVtqYV.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport NcAppNavigationNew from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-CcBvnQst.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-BC3kPnxr.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-JruJ3cF1.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-D98cLpyy.mjs\";\nimport NcAppSettingsSection from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-BdryV6wY.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-G2VD8Nfl.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-YSp2ORHc.mjs\";\nimport { u } from \"./chunks/NcAvatar-YSp2ORHc.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-do2wxY-0.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-Cu1XtrUo.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-B1LdRe5_.mjs\";\nimport NcButton from \"./Components/NcButton.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-VeztTzpz.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-CFt-EZON.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-D7aj2f61.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-Cfz3ytoh.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-CDfRYl8B.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-eStjL-WD.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-BRFj1-Ir.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-DshRFtUU.mjs\";\nimport { u as u2 } from \"./chunks/NcDateTime-DshRFtUU.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-CKgpZOiy.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-CROAi1Ll.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-Du-vbR5T.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport NcHeaderButton from \"./Components/NcHeaderButton.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Dj7jeq88.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-Bz6q9mZw.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Cb-cPj1R.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DTtUueUZ.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-B4Uyn2AS.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-0H1Pepui.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-DNjegDVj.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-kYsewfff.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-DegJ2JjE.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-Y38zaKtn.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-Dpk-sL3D.mjs\";\nimport { r } from \"./chunks/index-Dpk-sL3D.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-B8UqleMX.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-CwXSzf21.mjs\";\nimport { N, h, d, i, b, r as r2, c, a } from \"./chunks/index-56SXuvlv.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a as a2, g, b as b2, c as c2, d as d2, s } from \"./chunks/referencePickerModal-4kExxHbR.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/sharing/public\";\nimport \"@nextcloud/auth\";\nimport { N as NcSelect } from \"./chunks/NcSelect-CjUzohn5.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-o_8gWurX.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-nv1147dk.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-wJN9J7_t.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-W17kOow7.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-YO053agL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-C76Kqeew.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CH_kppKo.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-BHERsE_g.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-q46K1fSq.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-B3-E-5F5.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-kbPFeJV6.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { u as u3 } from \"./chunks/usernameToColor-yoVXn0De.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport { directive as directive$1 } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a2 as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b2 as getProvider,\n c2 as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n d as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n b as registerCustomPickerElement,\n r2 as registerWidget,\n c as renderCustomPickerElement,\n a as renderWidget,\n r as richEditor,\n d2 as searchProvider,\n s2 as setCurrentSkinTone,\n s as sortProviders,\n spawnDialog,\n u2 as useFormatDateTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n u3 as usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize } from '@nextcloud/files'\nimport { useFormatDateTime } from '@nextcloud/vue'\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\tquotaOptions: {\n\t\t\ttype: Array,\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\tsetup(props) {\n\t\tconst { formattedFullTime } = useFormatDateTime(props.user.firstLoginTimestamp * 1000, {\n\t\t\trelativeTime: false,\n\t\t\tformat: {\n\t\t\t\ttimeStyle: 'short',\n\t\t\t\tdateStyle: 'short',\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\tformattedFullTime,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectedGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tselectedSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t\tuserGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tuserSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tconst quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(quotaUsed, true) })\n\t\t},\n\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\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 = formatFileSize(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\tuserFirstLogin() {\n\t\t\tif (this.user.firstLoginTimestamp > 0) {\n\t\t\t\treturn this.formattedFullTime\n\t\t\t}\n\t\t\tif (this.user.firstLoginTimestamp < 0) {\n\t\t\t\treturn t('settings', 'Unknown')\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add account to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.groupsDetails\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && (settings.isAdmin || settings.isDelegatedAdmin)\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.subAdminGroupsDetails\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"availableSubAdminGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminGroups\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showFirstLogin\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-first-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userFirstLogin }}</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:filterable=\"false\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@update:model-value=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'\nimport { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\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\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\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\tgroupsDetails: false,\n\t\t\t\tsubAdminGroupsDetails: 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\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tavailableGroups() {\n\t\t\tconst groups = (this.settings.isAdmin || this.settings.isDelegatedAdmin)\n\t\t\t\t? this.$store.getters.getSortedGroups\n\t\t\t\t: this.$store.getters.getSubAdminGroups\n\n\t\t\treturn groups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tavailableSubAdminGroups() {\n\t\t\treturn this.availableGroups.filter(group => group.id !== 'admin')\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => {\n\t\t\t\t\t// Try to match with more extensive group data\n\t\t\t\t\tconst availableGroup = this.availableGroups.find(g => g.id === group.id)\n\t\t\t\t\treturn availableGroup.name ?? group.name ?? group.id\n\t\t\t\t})\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminGroupsLabels() {\n\t\t\treturn this.userSubAdminGroups\n\t\t\t\t.map(group => {\n\t\t\t\t\t// Try to match with more extensive group data\n\t\t\t\t\tconst availableGroup = this.availableSubAdminGroups.find(g => g.id === group.id)\n\t\t\t\t\treturn availableGroup.name ?? group.name ?? group.id\n\t\t\t\t})\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin || this.settings.isDelegatedAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\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 account'),\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', 'Disconnect all devices and delete local data'),\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 account') : t('settings', 'Enable account'),\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\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\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 !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 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 unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync wipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\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 }),\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 }),\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(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\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\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync loadGroupsDetails() {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.loading.groupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserGroups({ userId: this.user.id })\n\t\t\t\t// Populate store from server request\n\t\t\t\tfor (const group of groups) {\n\t\t\t\t\tthis.$store.commit('addGroup', group)\n\t\t\t\t}\n\t\t\t\tthis.selectedGroups = this.selectedGroups.map(selectedGroup => groups.find(group => group.id === selectedGroup.id) ?? selectedGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t\tthis.loading.groupsDetails = false\n\t\t},\n\n\t\tasync loadSubAdminGroupsDetails() {\n\t\t\tthis.loading.subadmins = true\n\t\t\tthis.loading.subAdminGroupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserSubAdminGroups({ userId: this.user.id })\n\t\t\t\t// Populate store from server request\n\t\t\t\tfor (const group of groups) {\n\t\t\t\t\tthis.$store.commit('addGroup', group)\n\t\t\t\t}\n\t\t\t\tthis.selectedSubAdminGroups = this.selectedSubAdminGroups.map(selectedGroup => groups.find(group => group.id === selectedGroup.id) ?? selectedGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load subadmin groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t\tthis.loading.subAdminGroupsDetails = false\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (query === '') {\n\t\t\t\treturn // Prevent unexpected search behaviour e.g. on option:created\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = await searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\t// Populate store from server request\n\t\t\t\tfor (const group of groups) {\n\t\t\t\t\tthis.$store.commit('addGroup', group)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager() {\n\t\t\tthis.loading.manager = true\n\n\t\t\t// Store the current manager before making changes\n\t\t\tconst previousManager = this.user.manager\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: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('settings', 'Failed to update line manager'))\n\t\t\t\tlogger.error('Failed to update manager:', { error })\n\n\t\t\t\t// Revert to the previous manager in the UI on error\n\t\t\t\tthis.currentManager = previousManager\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tasync deleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\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 }),\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 }),\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 * Set user displayName\n\t\t */\n\t\tasync updateDisplayName() {\n\t\t\tthis.loading.displayName = true\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: 'displayname',\n\t\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t\t})\n\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('settings', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t */\n\t\tasync updatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('settings', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'password',\n\t\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t\t})\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('settings', 'Password was successfully changed'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t */\n\t\tasync updateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('settings', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'email',\n\t\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('settings', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = 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\tthis.userGroups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\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\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('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userGroups = this.userGroups.filter(group => group.id !== gid)\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 * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\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\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.userSubAdminGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\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\tthis.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== 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.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch 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 * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\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\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\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,\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 * Validate quota string to make sure it's a valid human file size\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 * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\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\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\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(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t\tthis.loadGroupsDetails()\n\t\t\t\tthis.loadSubAdminGroupsDetails()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include styles.cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\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\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=78871070&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=78871070&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=78871070&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=78871070&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78871070\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NewUserDialog v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@closing=\"closeDialog\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\t{{ t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.') }}\n\t\t\t\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserDialog from './Users/NewUserDialog.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\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\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserDialog,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\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\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\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\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getSortedGroups\n\t\t\t\t.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\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\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\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', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\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\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.selectedGroup === '__nc_internal_recent') {\n\t\t\t\t\tawait this.$store.dispatch('getRecentUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseDialog() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\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\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\t// Is no value set, but user is a line manager we set their group as this is a requirement for line manager\n\t\t\tif (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\tconst groups = this.$store.getters.getSubAdminGroups\n\t\t\t\t// if there are multiple groups we do not know which to add,\n\t\t\t\t// so we cannot make the managers life easier by preselecting it.\n\t\t\t\tif (groups.length === 1) {\n\t\t\t\t\tthis.newUser.groups = [...groups]\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// setting new account 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 * 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\tasync redirectIfDisabled() {\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\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './Users/shared/styles' as *;\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\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\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=73fd953a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=73fd953a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=73fd953a&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=73fd953a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73fd953a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserDialog',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"closing\":_vm.closeDialog}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\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!./UserManagement.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!./UserManagement.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { emit } from '@nextcloud/event-bus'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'All accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t\temit('settings:user-management:loaded')\n\t},\n\n\tmethods: {\n\t\tt,\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 * @param {(user: Record<string, unknown>) => boolean} enabled return true if the action is enabled for the user\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action, enabled) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=4684ed00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=4684ed00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=4684ed00&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=4684ed00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4684ed00\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.account-management__navigation[data-v-539a4ad0] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-539a4ad0]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-539a4ad0]{height:100% !important}.account-management__settings-toggle[data-v-539a4ad0]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management {\\n\\t&__navigation {\\n\\t\\t:deep(.app-navigation__body) {\\n\\t\\t\\twill-change: scroll-position;\\n\\t\\t}\\n\\t}\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"account-management__navigation\",attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'All accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.settings.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.isAdminOrDelegatedAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"recent\",\"exact\":true,\"name\":_setup.t('settings', 'Recently active'),\"to\":{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiHistory}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.recentGroup?.usercount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.recentGroup.usercount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2299424282)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.AppNavigationGroupList)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showFirstLogin\"\n\t\t\t\t:checked.sync=\"showFirstLogin\">\n\t\t\t\t{{ t('settings', 'Show first login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcNoteCard class=\"dialog__note\"\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t:text=\"t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')\" />\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:filter-by=\"filterQuotas\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\ttaggable\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowFirstLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showFirstLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showFirstLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\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\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\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 !== 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 unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Could not update newUser.sendEmail preference', { error })\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a quota matches the current search.\n\t\t * This is a custom filter function to allow to map \"1GB\" to the label \"1 GB\" (ignoring whitespaces).\n\t\t *\n\t\t * @param option The quota to check\n\t\t * @param label The label of the quota\n\t\t * @param search The search string\n\t\t */\n\t\tfilterQuotas(option, label, search) {\n\t\t\tconst searchValue = search.toLocaleLowerCase().replaceAll(/\\s/g, '')\n\t\t\treturn (label || '')\n\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t.replaceAll(/\\s/g, '')\n\t\t\t\t.indexOf(searchValue) > -1\n\t\t},\n\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\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 | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t}\n\t\t\t// unify format output\n\t\t\tquota = formatFileSize(validQuota)\n\t\t\treturn { id: quota, label: quota }\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\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\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\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.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!./UserSettingsDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=29922c80&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=29922c80&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=29922c80&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=29922c80&prod&scoped=true&lang=scss\"\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 \"29922c80\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showFirstLogin\",\"checked\":_vm.showFirstLogin},on:{\"update:checked\":function($event){_vm.showFirstLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show first login'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcNoteCard',{staticClass:\"dialog__note\",attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"clearable\":false,\"create-option\":_vm.validateQuota,\"filter-by\":_vm.filterQuotas,\"input-label\":_vm.t('settings', 'Default quota'),\"options\":_vm.quotaOptions,\"placement\":\"top\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"taggable\":\"\"},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.Fragment,[_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([(_setup.isAdminOrDelegatedAdmin)?{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}:null,(_setup.isAdminOrDelegatedAdmin)?{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountGroup}})]},proxy:true}],null,false,3607647275)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),_c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.t('settings', 'Search groups…')},model:{value:(_setup.groupsSearchQuery),callback:function ($$v) {_setup.groupsSearchQuery=$$v},expression:\"groupsSearchQuery\"}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"group-list-desc\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"aria-describedby\":\"group-list-desc\",\"data-cy-users-settings-navigation-groups\":\"custom\"}},[_vm._l((_setup.filteredGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,ref:\"groupListItems\",refInFor:true,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),_vm._v(\" \"),(_setup.loadingGroups)?_c('div',{attrs:{\"role\":\"note\"}},[_c(_setup.NcLoadingIcon,{attrs:{\"name\":_setup.t('settings', 'Loading groups…')}})],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to delete the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\tref=\"listItem\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Delete group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to delete group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.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!./GroupListItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=0540d351&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=0540d351&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=0540d351&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=0540d351&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0540d351\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to delete the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,ref:\"listItem\",attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n return {\n id: group.id,\n title: group.name,\n usercount: group.usercount ?? 0,\n count: Math.max(0, (group.usercount ?? 0) - (group.disabled ?? 0)),\n };\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== '__nc_internal_recent' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n /**\n * The group of recent users\n */\n const recentGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === '__nc_internal_recent')));\n return { adminGroup, recentGroup, disabledGroup, userGroups };\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./AppNavigationGroupList.vue?vue&type=template&id=49ad50e4\"\nimport script from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\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/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=539a4ad0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=539a4ad0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=539a4ad0&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=539a4ad0&prod&scoped=true&lang=scss\"\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 \"539a4ad0\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list__row[data-v-78871070]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-78871070]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-78871070]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-78871070]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-78871070]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-78871070],.row__cell span[data-v-78871070],.row__cell label[data-v-78871070]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-78871070],.row__cell--displayname[data-v-78871070]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-78871070]{inset-inline-start:0}.row__cell--displayname[data-v-78871070]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-78871070]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-78871070]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-78871070]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-78871070]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-78871070]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-78871070]{min-width:400px;width:400px}.row__cell--fill[data-v-78871070]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-78871070]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-78871070]{color:var(--color-text-maxcontrast)}.row__cell[data-v-78871070]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-78871070] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-78871070]{margin-top:4px}.row__progress--warn[data-v-78871070]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-78871070]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.user-list__row {\\n\\t@include styles.row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__form[data-v-4f7fcac6]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-4f7fcac6]{width:100%}.dialog__item[data-v-4f7fcac6]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-4f7fcac6]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-4f7fcac6]{display:block;padding:4px 0}.dialog__select[data-v-4f7fcac6]{width:100%}.dialog__managers[data-v-4f7fcac6]{margin-bottom:12px}.dialog__submit[data-v-4f7fcac6]{margin-top:4px;margin-bottom:8px}.dialog[data-v-4f7fcac6] .dialog__actions{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 0 8px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__managers {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 4px;\\n\\t\\tmargin-bottom: 8px;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.dialog__actions {\\n\\t\\t\\tmargin: auto;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.empty[data-v-73fd953a] .icon-vue{width:64px;height:64px}.empty[data-v-73fd953a] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@use './Users/shared/styles' as *;\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user The user to check\n * @param user.id Id of the user\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","formatGroup","group","name","displayname","usercount","disabled","canAdd","canRemove","searchGroups","_ref","search","offset","limit","controller","AbortController","CancelablePromise","async","resolve","reject","onCancel","abort","data","axios","get","generateOcsUrl","signal","ocs","groups","map","error","loadUserGroups","userId","_ref2","url","loadUserSubAdminGroups","_ref3","Vue","directive","vElementVisibility","extend","props","dataComponent","type","Object","Function","required","dataKey","String","dataSources","Array","itemHeight","Number","extraProps","default","bufferItems","index","headerHeight","tableHeight","resizeObserver","computed","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","length","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","$el","tfoot","$refs","thead","ResizeObserver","debounce","clientHeight","logger","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","methods","handleFooterVisibility","visible","$emit","round","scrollTop","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","_t","_v","ref","attrs","style","_l","item","i","_b","key","tag","directives","rawName","value","expression","components","NcButton","NcDialog","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerInputLabel","t","managerLabel","promise","showConfig","$store","getters","getShowConfig","settings","getServerData","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","availableGroups","isAdmin","isDelegatedAdmin","getSortedGroups","getSubAdminGroups","filter","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","username","focus","createUser","all","dispatch","userid","password","displayName","email","mailAddress","subadmin","subAdminsGroups","quota","language","code","manager","response","meta","statuscode","query","toggleLoading","cancel","commit","createGroup","gid","addGroup","isCreating","validateQuota","validQuota","OC","Util","computerFileSize","formatFileSize","parseFileSize","label","languageFilterBy","option","some","toLocaleLowerCase","includes","then","users","values","_g","scopedSlots","_u","fn","_s","proxy","$listeners","on","$event","preventDefault","apply","arguments","$set","newUserRequireEmail","_e","at","model","callback","$$v","showLanguages","class","NcLoadingIcon","Boolean","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showFirstLogin","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","edit","user","editSvg","SvgCheck","SvgPencil","enabledActions","action","enabled","isSvg","string","TypeError","trim","XMLValidator","validate","jsonObject","parser","XMLParser","parse","keys","x","toLowerCase","toggleEdit","icon","text","event","Symbol","toStringTag","externalActions","setup","formattedFullTime","useFormatDateTime","firstLoginTimestamp","relativeTime","format","timeStyle","dateStyle","selectedGroups","selectedSubAdminGroups","userGroups","userSubAdminGroups","usedSpace","quotaUsed","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","find","userLanguage","userLang","concat","lang","userFirstLogin","userLastLoginTooltip","lastLoginTimestamp","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","groupsDetails","subAdminGroupsDetails","subadmins","delete","disable","wipe","editedDisplayName","editedPassword","editedMail","isObfuscated","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","availableSubAdminGroups","userGroupsLabels","g","join","userSubAdminGroupsLabels","canEdit","getCurrentUser","uid","defaultQuota","userActions","deleteUser","wipeUserDevices","enableDisableUser","sendWelcomeMail","editedUserQuota","unlimitedQuota","set","availableLanguages","initManager","confirmPassword","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","result","showSuccess","timeout","finally","filterManagers","managers","searchInitialUserManager","loadGroupsDetails","selectedGroup","loadSubAdminGroupsDetails","updateUserManager","previousManager","showError","updateDisplayName","updatePassword","updateEmail","addUserGroup","console","removeUserGroup","$route","params","addUserSubAdmin","removeUserSubAdmin","setUserQuota","undefined","setUserLanguage","$nextTick","displayNameField","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserDialog","UserListFooter","UserListHeader","VirtualList","mdiAccountGroup","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeDialog","assign","defaultLanguage","currentGroup","allGroups","getGroups","findIndex","$router","showNewUserForm","NcAppContent","UserList","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","window","OCA","Settings","registerAction","emit","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcNoteCard","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","post","generateUrl","filterQuotas","searchValue","replaceAll","indexOf","setDefaultQuota","app","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcModal","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","displayNameInput","querySelector","groupid","removeGroup","formatGroupMenu","title","useFormatGroups","adminGroup","disabledGroup","recentGroup","_defineComponent","__name","__props","store","useStore","route","useRoute","router","useRouter","onBeforeMount","loadGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","loadingGroups","groupsSearchQuery","filteredGroups","groupListItems","lastGroupListItem","findLast","component","$vnode","listItem","isLastGroupVisible","useElementVisibility","__sfc","groupId","newGroupListItem","scrollIntoView","behavior","block","mdiPlus","NcActionText","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationSearch","GroupListItem","_setup","refInFor","isDialogOpen","getUserCount","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiShieldAccount","mdiHistory","NcAppNavigation","NcAppNavigationNew","UserSettingsDialog","AppNavigationGroupList","_k","keyCode"],"sourceRoot":""}
|