diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-17 23:35:54 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-18 00:15:19 +0200 |
commit | b24e02e5df5c1825060be295d21eaa6001c3cd17 (patch) | |
tree | bbf05746d4b1764463738ceb24a1374530ec6047 | |
parent | 26abc86eca7cf6ae95f20e1dc180774d11892aab (diff) | |
download | nextcloud-server-b24e02e5df5c1825060be295d21eaa6001c3cd17.tar.gz nextcloud-server-b24e02e5df5c1825060be295d21eaa6001c3cd17.zip |
fix(core): profile design and pronouns supportfieat/profile-pronounces
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | build/integration/features/provisioning-v1.feature | 1454 | ||||
-rw-r--r-- | core/src/views/Profile.vue | 25 | ||||
-rw-r--r-- | dist/core-profile.js | 4 | ||||
-rw-r--r-- | dist/core-profile.js.map | 2 | ||||
-rw-r--r-- | lib/private/Profile/ProfileManager.php | 2 | ||||
-rw-r--r-- | lib/public/Profile/IProfileManager.php | 3 |
6 files changed, 752 insertions, 738 deletions
diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature index a40afbab769..73e159464bd 100644 --- a/build/integration/features/provisioning-v1.feature +++ b/build/integration/features/provisioning-v1.feature @@ -2,62 +2,62 @@ # SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. # SPDX-License-Identifier: AGPL-3.0-only Feature: provisioning - Background: - Given using api version "1" - - Scenario: Getting an not existing user - Given As an "admin" - When sending "GET" to "/cloud/users/test" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - Scenario: Listing all users - Given As an "admin" - When sending "GET" to "/cloud/users" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Create a user - Given As an "admin" - And user "brand-new-user" does not exist - When sending "POST" to "/cloud/users" with - | userid | brand-new-user | - | password | 123456 | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "brand-new-user" exists - - Scenario: Create an existing user - Given As an "admin" - And user "brand-new-user" exists - When sending "POST" to "/cloud/users" with - | userid | brand-new-user | - | password | 123456 | - Then the OCS status code should be "102" - And the HTTP status code should be "200" - And user "brand-new-user" has - | id | brand-new-user | - | displayname | brand-new-user | - | email | | - | phone | | - | address | | - | website | | - | twitter | | - - Scenario: Get an existing user - Given As an "admin" - When sending "GET" to "/cloud/users/brand-new-user" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Getting all users - Given As an "admin" - And user "brand-new-user" exists - And user "admin" exists - When sending "GET" to "/cloud/users" - Then users returned are - | brand-new-user | - | admin | + Background: + Given using api version "1" + + Scenario: Getting an not existing user + Given As an "admin" + When sending "GET" to "/cloud/users/test" + Then the OCS status code should be "404" + And the HTTP status code should be "200" + + Scenario: Listing all users + Given As an "admin" + When sending "GET" to "/cloud/users" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Create a user + Given As an "admin" + And user "brand-new-user" does not exist + When sending "POST" to "/cloud/users" with + | userid | brand-new-user | + | password | 123456 | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And user "brand-new-user" exists + + Scenario: Create an existing user + Given As an "admin" + And user "brand-new-user" exists + When sending "POST" to "/cloud/users" with + | userid | brand-new-user | + | password | 123456 | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + And user "brand-new-user" has + | id | brand-new-user | + | displayname | brand-new-user | + | email | | + | phone | | + | address | | + | website | | + | twitter | | + + Scenario: Get an existing user + Given As an "admin" + When sending "GET" to "/cloud/users/brand-new-user" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Getting all users + Given As an "admin" + And user "brand-new-user" exists + And user "admin" exists + When sending "GET" to "/cloud/users" + Then users returned are + | brand-new-user | + | admin | Scenario: Get editable fields Given As an "admin" @@ -75,8 +75,8 @@ Feature: provisioning | role | | headline | | biography | - | pronouns | | profile_enabled | + | pronouns | Given As an "brand-new-user" Then user "brand-new-user" has editable fields | displayname | @@ -91,8 +91,8 @@ Feature: provisioning | role | | headline | | biography | - | pronouns | | profile_enabled | + | pronouns | Then user "self" has editable fields | displayname | | email | @@ -106,27 +106,27 @@ Feature: provisioning | role | | headline | | biography | - | pronouns | | profile_enabled | + | pronouns | - Scenario: Edit a user - Given As an "admin" - And user "brand-new-user" exists - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | displayname | - | value | Brand New User | - And the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | quota | - | value | 12MB | - And the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | email | - | value | no-reply@nextcloud.com | - And the OCS status code should be "100" - And the HTTP status code should be "200" + Scenario: Edit a user + Given As an "admin" + And user "brand-new-user" exists + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | displayname | + | value | Brand New User | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | quota | + | value | 12MB | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | email | + | value | no-reply@nextcloud.com | + And the OCS status code should be "100" + And the HTTP status code should be "200" And sending "PUT" to "/cloud/users/brand-new-user" with | key | additional_mail | | value | no.reply@nextcloud.com | @@ -137,105 +137,105 @@ Feature: provisioning | value | noreply@nextcloud.com | And the OCS status code should be "100" And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | phone | - | value | +49 711 / 25 24 28-90 | - And the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | address | - | value | Foo Bar Town | - And the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | website | - | value | https://nextcloud.com | - And the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | twitter | - | value | Nextcloud | - And the OCS status code should be "100" - And the HTTP status code should be "200" - Then user "brand-new-user" has - | id | brand-new-user | - | displayname | Brand New User | - | email | no-reply@nextcloud.com | + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | phone | + | value | +49 711 / 25 24 28-90 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | address | + | value | Foo Bar Town | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | website | + | value | https://nextcloud.com | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | twitter | + | value | Nextcloud | + And the OCS status code should be "100" + And the HTTP status code should be "200" + Then user "brand-new-user" has + | id | brand-new-user | + | displayname | Brand New User | + | email | no-reply@nextcloud.com | | additional_mail | no.reply@nextcloud.com;noreply@nextcloud.com | - | phone | +4971125242890 | - | address | Foo Bar Town | - | website | https://nextcloud.com | - | twitter | Nextcloud | + | phone | +4971125242890 | + | address | Foo Bar Town | + | website | https://nextcloud.com | + | twitter | Nextcloud | - Scenario: Edit a user account properties scopes - Given user "brand-new-user" exists + Scenario: Edit a user account properties scopes + Given user "brand-new-user" exists And As an "brand-new-user" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | phoneScope | - | value | v2-private | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | twitterScope | - | value | v2-local | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | addressScope | - | value | v2-federated | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | emailScope | - | value | v2-published | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | websiteScope | - | value | public | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | displaynameScope | - | value | contacts | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | avatarScope | - | value | private | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | email | - | value | no-reply@nextcloud.com | - And the OCS status code should be "100" - And the HTTP status code should be "200" - # Duplicating primary address - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | additional_mail | - | value | no-reply@nextcloud.com | - And the OCS status code should be "102" - And the HTTP status code should be "200" - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | additional_mail | - | value | no.reply2@nextcloud.com | - And the OCS status code should be "100" - And the HTTP status code should be "200" - # Duplicating another additional address - And sending "PUT" to "/cloud/users/brand-new-user" with - | key | additional_mail | - | value | no.reply2@nextcloud.com | - And the OCS status code should be "102" - And the HTTP status code should be "200" - Then user "brand-new-user" has - | id | brand-new-user | - | phoneScope | v2-private | - | twitterScope | v2-local | - | addressScope | v2-federated | - | emailScope | v2-published | - | websiteScope | v2-published | - | displaynameScope | v2-federated | - | avatarScope | v2-local | + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | phoneScope | + | value | v2-private | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | twitterScope | + | value | v2-local | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | addressScope | + | value | v2-federated | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | emailScope | + | value | v2-published | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | websiteScope | + | value | public | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | displaynameScope | + | value | contacts | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | avatarScope | + | value | private | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | email | + | value | no-reply@nextcloud.com | + And the OCS status code should be "100" + And the HTTP status code should be "200" + # Duplicating primary address + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | additional_mail | + | value | no-reply@nextcloud.com | + And the OCS status code should be "102" + And the HTTP status code should be "200" + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | additional_mail | + | value | no.reply2@nextcloud.com | + And the OCS status code should be "100" + And the HTTP status code should be "200" + # Duplicating another additional address + And sending "PUT" to "/cloud/users/brand-new-user" with + | key | additional_mail | + | value | no.reply2@nextcloud.com | + And the OCS status code should be "102" + And the HTTP status code should be "200" + Then user "brand-new-user" has + | id | brand-new-user | + | phoneScope | v2-private | + | twitterScope | v2-local | + | addressScope | v2-federated | + | emailScope | v2-published | + | websiteScope | v2-published | + | displaynameScope | v2-federated | + | avatarScope | v2-local | Scenario: Edit a user account multivalue property scopes Given user "brand-new-user" exists @@ -264,24 +264,24 @@ Feature: provisioning | id | brand-new-user | | additional_mailScope | v2-federated;v2-published | - Scenario: Edit a user account properties scopes with invalid or unsupported value - Given user "brand-new-user" exists + Scenario: Edit a user account properties scopes with invalid or unsupported value + Given user "brand-new-user" exists And As an "brand-new-user" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | phoneScope | - | value | invalid | - Then the OCS status code should be "102" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | displaynameScope | - | value | v2-private | - Then the OCS status code should be "102" - And the HTTP status code should be "200" - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | emailScope | - | value | v2-private | - Then the OCS status code should be "102" - And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | phoneScope | + | value | invalid | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | displaynameScope | + | value | v2-private | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | emailScope | + | value | v2-private | + Then the OCS status code should be "102" + And the HTTP status code should be "200" Scenario: Edit a user account multi-value property scopes with invalid or unsupported value Given user "brand-new-user" exists @@ -320,540 +320,540 @@ Feature: provisioning Then user "brand-new-user" has not | additional_mail | no.reply6@nextcloud.com | - Scenario: An admin cannot edit user account property scopes - Given As an "admin" - And user "brand-new-user" exists - When sending "PUT" to "/cloud/users/brand-new-user" with - | key | phoneScope | - | value | v2-private | - Then the OCS status code should be "103" - And the HTTP status code should be "200" - - Scenario: Search by phone number - Given As an "admin" - And user "phone-user" exists - And sending "PUT" to "/cloud/users/phone-user" with - | key | phone | - | value | +49 711 / 25 24 28-90 | - And the OCS status code should be "100" - And the HTTP status code should be "200" - Then search users by phone for region "DE" with - | random-string1 | 0711 / 123 456 78 | - | random-string1 | 0711 / 252 428-90 | - | random-string2 | 0711 / 90-824 252 | - And the OCS status code should be "100" - And the HTTP status code should be "200" - Then phone matches returned are - | random-string1 | phone-user@localhost:8080 | - - Scenario: Create a group - Given As an "admin" - And group "new-group" does not exist - When sending "POST" to "/cloud/groups" with - | groupid | new-group | - | password | 123456 | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And group "new-group" exists - And group "new-group" has - | displayname | new-group | - - Scenario: Create a group with custom display name - Given As an "admin" - And group "new-group" does not exist - When sending "POST" to "/cloud/groups" with - | groupid | new-group | - | password | 123456 | - | displayname | new-group-displayname | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And group "new-group" exists - And group "new-group" has - | displayname | new-group-displayname | - - Scenario: Create a group with special characters - Given As an "admin" - And group "España" does not exist - When sending "POST" to "/cloud/groups" with - | groupid | España | - | password | 123456 | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And group "España" exists - And group "España" has - | displayname | España | - - Scenario: adding user to a group without sending the group - Given As an "admin" - And user "brand-new-user" exists - When sending "POST" to "/cloud/users/brand-new-user/groups" with - | groupid | | - Then the OCS status code should be "101" - And the HTTP status code should be "200" - - Scenario: adding user to a group which doesn't exist - Given As an "admin" - And user "brand-new-user" exists - And group "not-group" does not exist - When sending "POST" to "/cloud/users/brand-new-user/groups" with - | groupid | not-group | - Then the OCS status code should be "102" - And the HTTP status code should be "200" - - Scenario: adding user to a group without privileges - Given user "brand-new-user" exists - And As an "brand-new-user" - When sending "POST" to "/cloud/users/brand-new-user/groups" with - | groupid | new-group | - Then the OCS status code should be "403" - And the HTTP status code should be "200" - - Scenario: adding user to a group - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - When sending "POST" to "/cloud/users/brand-new-user/groups" with - | groupid | new-group | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: getting groups of an user - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - When sending "GET" to "/cloud/users/brand-new-user/groups" - Then groups returned are - | new-group | - And the OCS status code should be "100" - - Scenario: adding a user which doesn't exist to a group - Given As an "admin" - And user "not-user" does not exist - And group "new-group" exists - When sending "POST" to "/cloud/users/not-user/groups" with - | groupid | new-group | - Then the OCS status code should be "103" - And the HTTP status code should be "200" - - Scenario: getting a group - Given As an "admin" - And group "new-group" exists - When sending "GET" to "/cloud/groups/new-group" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Getting all groups - Given As an "admin" - And group "new-group" exists - And group "admin" exists - When sending "GET" to "/cloud/groups" - Then groups returned are - | España | - | admin | - | new-group | - - Scenario: create a subadmin - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - When sending "POST" to "/cloud/users/brand-new-user/subadmins" with - | groupid | new-group | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: get users using a subadmin - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - And user "brand-new-user" belongs to group "new-group" - And user "brand-new-user" is subadmin of group "new-group" - And As an "brand-new-user" - When sending "GET" to "/cloud/users" - Then users returned are - | brand-new-user | - And the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: removing a user from a group which doesn't exists - Given As an "admin" - And user "brand-new-user" exists - And group "not-group" does not exist - When sending "DELETE" to "/cloud/users/brand-new-user/groups" with - | groupid | not-group | - Then the OCS status code should be "102" - - Scenario: removing a user from a group - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - And user "brand-new-user" belongs to group "new-group" - When sending "DELETE" to "/cloud/users/brand-new-user/groups" with - | groupid | new-group | - Then the OCS status code should be "100" - And user "brand-new-user" does not belong to group "new-group" - - Scenario: create a subadmin using a user which not exist - Given As an "admin" - And user "not-user" does not exist - And group "new-group" exists - When sending "POST" to "/cloud/users/not-user/subadmins" with - | groupid | new-group | - Then the OCS status code should be "101" - And the HTTP status code should be "200" - - Scenario: create a subadmin using a group which not exist - Given As an "admin" - And user "brand-new-user" exists - And group "not-group" does not exist - When sending "POST" to "/cloud/users/brand-new-user/subadmins" with - | groupid | not-group | - Then the OCS status code should be "102" - And the HTTP status code should be "200" - - Scenario: Getting subadmin groups - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - When sending "GET" to "/cloud/users/brand-new-user/subadmins" - Then subadmin groups returned are - | new-group | - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Getting subadmin groups of a user which not exist - Given As an "admin" - And user "not-user" does not exist - And group "new-group" exists - When sending "GET" to "/cloud/users/not-user/subadmins" - Then the OCS status code should be "404" - And the HTTP status code should be "200" - - Scenario: Getting subadmin users of a group - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - When sending "GET" to "/cloud/groups/new-group/subadmins" - Then subadmin users returned are - | brand-new-user | - And the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Getting subadmin users of a group which doesn't exist - Given As an "admin" - And user "brand-new-user" exists - And group "not-group" does not exist - When sending "GET" to "/cloud/groups/not-group/subadmins" - Then the OCS status code should be "101" - And the HTTP status code should be "200" - - Scenario: Removing subadmin from a group - Given As an "admin" - And user "brand-new-user" exists - And group "new-group" exists - And user "brand-new-user" is subadmin of group "new-group" - When sending "DELETE" to "/cloud/users/brand-new-user/subadmins" with - | groupid | new-group | - And the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: Delete a user - Given As an "admin" - And user "brand-new-user" exists - When sending "DELETE" to "/cloud/users/brand-new-user" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "brand-new-user" does not exist - - Scenario: Delete a group - Given As an "admin" - And group "new-group" exists - When sending "DELETE" to "/cloud/groups/new-group" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And group "new-group" does not exist - - Scenario: Delete a group with special characters - Given As an "admin" - And group "España" exists - When sending "DELETE" to "/cloud/groups/España" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And group "España" does not exist - - Scenario: get enabled apps - Given As an "admin" - When sending "GET" to "/cloud/apps?filter=enabled" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And apps returned are - | cloud_federation_api | - | comments | - | contactsinteraction | - | dashboard | - | dav | - | federatedfilesharing | - | federation | - | files | - | files_reminders | - | files_sharing | - | files_trashbin | - | files_versions | - | lookup_server_connector | - | provisioning_api | - | settings | - | sharebymail | - | systemtags | - | theming | - | twofactor_backupcodes | - | updatenotification | - | user_ldap | - | user_status | - | viewer | - | workflowengine | - | webhook_listeners | - | weather_status | - | files_external | - | oauth2 | - - Scenario: get app info - Given As an "admin" - When sending "GET" to "/cloud/apps/files" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - - Scenario: get app info from app that does not exist - Given As an "admin" - When sending "GET" to "/cloud/apps/this_app_should_never_exist" - Then the OCS status code should be "998" - And the HTTP status code should be "200" - - Scenario: enable an app - Given As an "admin" - And app "testing" is disabled - When sending "POST" to "/cloud/apps/testing" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And app "testing" is enabled - - Scenario: enable an app that does not exist - Given As an "admin" - When sending "POST" to "/cloud/apps/this_app_should_never_exist" - Then the OCS status code should be "998" - And the HTTP status code should be "200" - - Scenario: disable an app - Given As an "admin" - And app "testing" is enabled - When sending "DELETE" to "/cloud/apps/testing" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And app "testing" is disabled - - Scenario: disable an user - Given As an "admin" - And user "user1" exists - When sending "PUT" to "/cloud/users/user1/disable" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "user1" is disabled - - Scenario: enable an user - Given As an "admin" - And user "user1" exists - And assure user "user1" is disabled - When sending "PUT" to "/cloud/users/user1/enable" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And user "user1" is enabled - - Scenario: Subadmin should be able to enable or disable an user in their group - Given As an "admin" - And user "subadmin" exists - And user "user1" exists - And group "new-group" exists - And user "subadmin" belongs to group "new-group" - And user "user1" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - And As an "subadmin" - When sending "PUT" to "/cloud/users/user1/disable" - Then the OCS status code should be "100" - Then the HTTP status code should be "200" - And As an "admin" - And user "user1" is disabled - - Scenario: Subadmin should not be able to enable or disable an user not in their group - Given As an "admin" - And user "subadmin" exists - And user "user1" exists - And group "new-group" exists - And group "another-group" exists - And user "subadmin" belongs to group "new-group" - And user "user1" belongs to group "another-group" - And Assure user "subadmin" is subadmin of group "new-group" - And As an "subadmin" - When sending "PUT" to "/cloud/users/user1/disable" - Then the OCS status code should be "998" - Then the HTTP status code should be "200" - And As an "admin" - And user "user1" is enabled - - Scenario: Subadmins should not be able to disable users that have admin permissions in their group - Given As an "admin" - And user "another-admin" exists - And user "subadmin" exists - And group "new-group" exists - And user "another-admin" belongs to group "admin" - And user "subadmin" belongs to group "new-group" - And user "another-admin" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - And As an "subadmin" - When sending "PUT" to "/cloud/users/another-admin/disable" - Then the OCS status code should be "998" - Then the HTTP status code should be "200" - And As an "admin" - And user "another-admin" is enabled - - Scenario: Admin can disable another admin user - Given As an "admin" - And user "another-admin" exists - And user "another-admin" belongs to group "admin" - When sending "PUT" to "/cloud/users/another-admin/disable" - Then the OCS status code should be "100" - Then the HTTP status code should be "200" - And user "another-admin" is disabled - - Scenario: Admin can enable another admin user - Given As an "admin" - And user "another-admin" exists - And user "another-admin" belongs to group "admin" - And assure user "another-admin" is disabled - When sending "PUT" to "/cloud/users/another-admin/enable" - Then the OCS status code should be "100" - Then the HTTP status code should be "200" - And user "another-admin" is enabled - - Scenario: Admin can disable subadmins in the same group - Given As an "admin" - And user "subadmin" exists - And group "new-group" exists - And user "subadmin" belongs to group "new-group" - And user "admin" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - When sending "PUT" to "/cloud/users/subadmin/disable" - Then the OCS status code should be "100" - Then the HTTP status code should be "200" - And user "subadmin" is disabled - - Scenario: Admin can enable subadmins in the same group - Given As an "admin" - And user "subadmin" exists - And group "new-group" exists - And user "subadmin" belongs to group "new-group" - And user "admin" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - And assure user "another-admin" is disabled - When sending "PUT" to "/cloud/users/subadmin/disable" - Then the OCS status code should be "100" - Then the HTTP status code should be "200" - And user "subadmin" is disabled - - Scenario: Admin user cannot disable himself - Given As an "admin" - And user "another-admin" exists - And user "another-admin" belongs to group "admin" - And As an "another-admin" - When sending "PUT" to "/cloud/users/another-admin/disable" - Then the OCS status code should be "101" - And the HTTP status code should be "200" - And As an "admin" - And user "another-admin" is enabled - - Scenario:Admin user cannot enable himself - Given As an "admin" - And user "another-admin" exists - And user "another-admin" belongs to group "admin" - And assure user "another-admin" is disabled - And As an "another-admin" - When sending "PUT" to "/cloud/users/another-admin/enable" - And As an "admin" - Then user "another-admin" is disabled - - Scenario: disable an user with a regular user - Given As an "admin" - And user "user1" exists - And user "user2" exists - And As an "user1" - When sending "PUT" to "/cloud/users/user2/disable" - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And As an "admin" - And user "user2" is enabled - - Scenario: enable an user with a regular user - Given As an "admin" - And user "user1" exists - And user "user2" exists - And assure user "user2" is disabled - And As an "user1" - When sending "PUT" to "/cloud/users/user2/enable" - Then the OCS status code should be "403" - And the HTTP status code should be "200" - And As an "admin" - And user "user2" is disabled - - Scenario: Subadmin should not be able to disable himself - Given As an "admin" - And user "subadmin" exists - And group "new-group" exists - And user "subadmin" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - And As an "subadmin" - When sending "PUT" to "/cloud/users/subadmin/disable" - Then the OCS status code should be "101" - Then the HTTP status code should be "200" - And As an "admin" - And user "subadmin" is enabled - - Scenario: Subadmin should not be able to enable himself - Given As an "admin" - And user "subadmin" exists - And group "new-group" exists - And user "subadmin" belongs to group "new-group" - And Assure user "subadmin" is subadmin of group "new-group" - And assure user "subadmin" is disabled - And As an "subadmin" - When sending "PUT" to "/cloud/users/subadmin/enabled" - And As an "admin" - And user "subadmin" is disabled - - Scenario: Making a ocs request with an enabled user - Given As an "admin" - And user "user0" exists - And As an "user0" - When sending "GET" to "/cloud/capabilities" - Then the HTTP status code should be "200" - And the OCS status code should be "100" - - Scenario: Making a web request with an enabled user - Given As an "admin" - And user "user0" exists - And As an "user0" - When sending "GET" with exact url to "/index.php/apps/files" - Then the HTTP status code should be "200" - - Scenario: Making a ocs request with a disabled user - Given As an "admin" - And user "user0" exists - And assure user "user0" is disabled - And As an "user0" - When sending "GET" to "/cloud/capabilities" - Then the OCS status code should be "997" - And the HTTP status code should be "401" - - Scenario: Making a web request with a disabled user - Given As an "admin" - And user "user0" exists - And assure user "user0" is disabled - And As an "user0" - When sending "GET" with exact url to "/index.php/apps/files" - And the HTTP status code should be "401" + Scenario: An admin cannot edit user account property scopes + Given As an "admin" + And user "brand-new-user" exists + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | phoneScope | + | value | v2-private | + Then the OCS status code should be "103" + And the HTTP status code should be "200" + + Scenario: Search by phone number + Given As an "admin" + And user "phone-user" exists + And sending "PUT" to "/cloud/users/phone-user" with + | key | phone | + | value | +49 711 / 25 24 28-90 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + Then search users by phone for region "DE" with + | random-string1 | 0711 / 123 456 78 | + | random-string1 | 0711 / 252 428-90 | + | random-string2 | 0711 / 90-824 252 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + Then phone matches returned are + | random-string1 | phone-user@localhost:8080 | + + Scenario: Create a group + Given As an "admin" + And group "new-group" does not exist + When sending "POST" to "/cloud/groups" with + | groupid | new-group | + | password | 123456 | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "new-group" exists + And group "new-group" has + | displayname | new-group | + + Scenario: Create a group with custom display name + Given As an "admin" + And group "new-group" does not exist + When sending "POST" to "/cloud/groups" with + | groupid | new-group | + | password | 123456 | + | displayname | new-group-displayname | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "new-group" exists + And group "new-group" has + | displayname | new-group-displayname | + + Scenario: Create a group with special characters + Given As an "admin" + And group "España" does not exist + When sending "POST" to "/cloud/groups" with + | groupid | España | + | password | 123456 | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "España" exists + And group "España" has + | displayname | España | + + Scenario: adding user to a group without sending the group + Given As an "admin" + And user "brand-new-user" exists + When sending "POST" to "/cloud/users/brand-new-user/groups" with + | groupid | | + Then the OCS status code should be "101" + And the HTTP status code should be "200" + + Scenario: adding user to a group which doesn't exist + Given As an "admin" + And user "brand-new-user" exists + And group "not-group" does not exist + When sending "POST" to "/cloud/users/brand-new-user/groups" with + | groupid | not-group | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + + Scenario: adding user to a group without privileges + Given user "brand-new-user" exists + And As an "brand-new-user" + When sending "POST" to "/cloud/users/brand-new-user/groups" with + | groupid | new-group | + Then the OCS status code should be "403" + And the HTTP status code should be "200" + + Scenario: adding user to a group + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + When sending "POST" to "/cloud/users/brand-new-user/groups" with + | groupid | new-group | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: getting groups of an user + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + When sending "GET" to "/cloud/users/brand-new-user/groups" + Then groups returned are + | new-group | + And the OCS status code should be "100" + + Scenario: adding a user which doesn't exist to a group + Given As an "admin" + And user "not-user" does not exist + And group "new-group" exists + When sending "POST" to "/cloud/users/not-user/groups" with + | groupid | new-group | + Then the OCS status code should be "103" + And the HTTP status code should be "200" + + Scenario: getting a group + Given As an "admin" + And group "new-group" exists + When sending "GET" to "/cloud/groups/new-group" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Getting all groups + Given As an "admin" + And group "new-group" exists + And group "admin" exists + When sending "GET" to "/cloud/groups" + Then groups returned are + | España | + | admin | + | new-group | + + Scenario: create a subadmin + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + When sending "POST" to "/cloud/users/brand-new-user/subadmins" with + | groupid | new-group | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: get users using a subadmin + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + And user "brand-new-user" belongs to group "new-group" + And user "brand-new-user" is subadmin of group "new-group" + And As an "brand-new-user" + When sending "GET" to "/cloud/users" + Then users returned are + | brand-new-user | + And the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: removing a user from a group which doesn't exists + Given As an "admin" + And user "brand-new-user" exists + And group "not-group" does not exist + When sending "DELETE" to "/cloud/users/brand-new-user/groups" with + | groupid | not-group | + Then the OCS status code should be "102" + + Scenario: removing a user from a group + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + And user "brand-new-user" belongs to group "new-group" + When sending "DELETE" to "/cloud/users/brand-new-user/groups" with + | groupid | new-group | + Then the OCS status code should be "100" + And user "brand-new-user" does not belong to group "new-group" + + Scenario: create a subadmin using a user which not exist + Given As an "admin" + And user "not-user" does not exist + And group "new-group" exists + When sending "POST" to "/cloud/users/not-user/subadmins" with + | groupid | new-group | + Then the OCS status code should be "101" + And the HTTP status code should be "200" + + Scenario: create a subadmin using a group which not exist + Given As an "admin" + And user "brand-new-user" exists + And group "not-group" does not exist + When sending "POST" to "/cloud/users/brand-new-user/subadmins" with + | groupid | not-group | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + + Scenario: Getting subadmin groups + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + When sending "GET" to "/cloud/users/brand-new-user/subadmins" + Then subadmin groups returned are + | new-group | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Getting subadmin groups of a user which not exist + Given As an "admin" + And user "not-user" does not exist + And group "new-group" exists + When sending "GET" to "/cloud/users/not-user/subadmins" + Then the OCS status code should be "404" + And the HTTP status code should be "200" + + Scenario: Getting subadmin users of a group + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + When sending "GET" to "/cloud/groups/new-group/subadmins" + Then subadmin users returned are + | brand-new-user | + And the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Getting subadmin users of a group which doesn't exist + Given As an "admin" + And user "brand-new-user" exists + And group "not-group" does not exist + When sending "GET" to "/cloud/groups/not-group/subadmins" + Then the OCS status code should be "101" + And the HTTP status code should be "200" + + Scenario: Removing subadmin from a group + Given As an "admin" + And user "brand-new-user" exists + And group "new-group" exists + And user "brand-new-user" is subadmin of group "new-group" + When sending "DELETE" to "/cloud/users/brand-new-user/subadmins" with + | groupid | new-group | + And the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: Delete a user + Given As an "admin" + And user "brand-new-user" exists + When sending "DELETE" to "/cloud/users/brand-new-user" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And user "brand-new-user" does not exist + + Scenario: Delete a group + Given As an "admin" + And group "new-group" exists + When sending "DELETE" to "/cloud/groups/new-group" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "new-group" does not exist + + Scenario: Delete a group with special characters + Given As an "admin" + And group "España" exists + When sending "DELETE" to "/cloud/groups/España" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "España" does not exist + + Scenario: get enabled apps + Given As an "admin" + When sending "GET" to "/cloud/apps?filter=enabled" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And apps returned are + | cloud_federation_api | + | comments | + | contactsinteraction | + | dashboard | + | dav | + | federatedfilesharing | + | federation | + | files | + | files_reminders | + | files_sharing | + | files_trashbin | + | files_versions | + | lookup_server_connector | + | provisioning_api | + | settings | + | sharebymail | + | systemtags | + | theming | + | twofactor_backupcodes | + | updatenotification | + | user_ldap | + | user_status | + | viewer | + | workflowengine | + | webhook_listeners | + | weather_status | + | files_external | + | oauth2 | + + Scenario: get app info + Given As an "admin" + When sending "GET" to "/cloud/apps/files" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + + Scenario: get app info from app that does not exist + Given As an "admin" + When sending "GET" to "/cloud/apps/this_app_should_never_exist" + Then the OCS status code should be "998" + And the HTTP status code should be "200" + + Scenario: enable an app + Given As an "admin" + And app "testing" is disabled + When sending "POST" to "/cloud/apps/testing" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And app "testing" is enabled + + Scenario: enable an app that does not exist + Given As an "admin" + When sending "POST" to "/cloud/apps/this_app_should_never_exist" + Then the OCS status code should be "998" + And the HTTP status code should be "200" + + Scenario: disable an app + Given As an "admin" + And app "testing" is enabled + When sending "DELETE" to "/cloud/apps/testing" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And app "testing" is disabled + + Scenario: disable an user + Given As an "admin" + And user "user1" exists + When sending "PUT" to "/cloud/users/user1/disable" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And user "user1" is disabled + + Scenario: enable an user + Given As an "admin" + And user "user1" exists + And assure user "user1" is disabled + When sending "PUT" to "/cloud/users/user1/enable" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And user "user1" is enabled + + Scenario: Subadmin should be able to enable or disable an user in their group + Given As an "admin" + And user "subadmin" exists + And user "user1" exists + And group "new-group" exists + And user "subadmin" belongs to group "new-group" + And user "user1" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + And As an "subadmin" + When sending "PUT" to "/cloud/users/user1/disable" + Then the OCS status code should be "100" + Then the HTTP status code should be "200" + And As an "admin" + And user "user1" is disabled + + Scenario: Subadmin should not be able to enable or disable an user not in their group + Given As an "admin" + And user "subadmin" exists + And user "user1" exists + And group "new-group" exists + And group "another-group" exists + And user "subadmin" belongs to group "new-group" + And user "user1" belongs to group "another-group" + And Assure user "subadmin" is subadmin of group "new-group" + And As an "subadmin" + When sending "PUT" to "/cloud/users/user1/disable" + Then the OCS status code should be "998" + Then the HTTP status code should be "200" + And As an "admin" + And user "user1" is enabled + + Scenario: Subadmins should not be able to disable users that have admin permissions in their group + Given As an "admin" + And user "another-admin" exists + And user "subadmin" exists + And group "new-group" exists + And user "another-admin" belongs to group "admin" + And user "subadmin" belongs to group "new-group" + And user "another-admin" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + And As an "subadmin" + When sending "PUT" to "/cloud/users/another-admin/disable" + Then the OCS status code should be "998" + Then the HTTP status code should be "200" + And As an "admin" + And user "another-admin" is enabled + + Scenario: Admin can disable another admin user + Given As an "admin" + And user "another-admin" exists + And user "another-admin" belongs to group "admin" + When sending "PUT" to "/cloud/users/another-admin/disable" + Then the OCS status code should be "100" + Then the HTTP status code should be "200" + And user "another-admin" is disabled + + Scenario: Admin can enable another admin user + Given As an "admin" + And user "another-admin" exists + And user "another-admin" belongs to group "admin" + And assure user "another-admin" is disabled + When sending "PUT" to "/cloud/users/another-admin/enable" + Then the OCS status code should be "100" + Then the HTTP status code should be "200" + And user "another-admin" is enabled + + Scenario: Admin can disable subadmins in the same group + Given As an "admin" + And user "subadmin" exists + And group "new-group" exists + And user "subadmin" belongs to group "new-group" + And user "admin" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + When sending "PUT" to "/cloud/users/subadmin/disable" + Then the OCS status code should be "100" + Then the HTTP status code should be "200" + And user "subadmin" is disabled + + Scenario: Admin can enable subadmins in the same group + Given As an "admin" + And user "subadmin" exists + And group "new-group" exists + And user "subadmin" belongs to group "new-group" + And user "admin" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + And assure user "another-admin" is disabled + When sending "PUT" to "/cloud/users/subadmin/disable" + Then the OCS status code should be "100" + Then the HTTP status code should be "200" + And user "subadmin" is disabled + + Scenario: Admin user cannot disable himself + Given As an "admin" + And user "another-admin" exists + And user "another-admin" belongs to group "admin" + And As an "another-admin" + When sending "PUT" to "/cloud/users/another-admin/disable" + Then the OCS status code should be "101" + And the HTTP status code should be "200" + And As an "admin" + And user "another-admin" is enabled + + Scenario:Admin user cannot enable himself + Given As an "admin" + And user "another-admin" exists + And user "another-admin" belongs to group "admin" + And assure user "another-admin" is disabled + And As an "another-admin" + When sending "PUT" to "/cloud/users/another-admin/enable" + And As an "admin" + Then user "another-admin" is disabled + + Scenario: disable an user with a regular user + Given As an "admin" + And user "user1" exists + And user "user2" exists + And As an "user1" + When sending "PUT" to "/cloud/users/user2/disable" + Then the OCS status code should be "403" + And the HTTP status code should be "200" + And As an "admin" + And user "user2" is enabled + + Scenario: enable an user with a regular user + Given As an "admin" + And user "user1" exists + And user "user2" exists + And assure user "user2" is disabled + And As an "user1" + When sending "PUT" to "/cloud/users/user2/enable" + Then the OCS status code should be "403" + And the HTTP status code should be "200" + And As an "admin" + And user "user2" is disabled + + Scenario: Subadmin should not be able to disable himself + Given As an "admin" + And user "subadmin" exists + And group "new-group" exists + And user "subadmin" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + And As an "subadmin" + When sending "PUT" to "/cloud/users/subadmin/disable" + Then the OCS status code should be "101" + Then the HTTP status code should be "200" + And As an "admin" + And user "subadmin" is enabled + + Scenario: Subadmin should not be able to enable himself + Given As an "admin" + And user "subadmin" exists + And group "new-group" exists + And user "subadmin" belongs to group "new-group" + And Assure user "subadmin" is subadmin of group "new-group" + And assure user "subadmin" is disabled + And As an "subadmin" + When sending "PUT" to "/cloud/users/subadmin/enabled" + And As an "admin" + And user "subadmin" is disabled + + Scenario: Making a ocs request with an enabled user + Given As an "admin" + And user "user0" exists + And As an "user0" + When sending "GET" to "/cloud/capabilities" + Then the HTTP status code should be "200" + And the OCS status code should be "100" + + Scenario: Making a web request with an enabled user + Given As an "admin" + And user "user0" exists + And As an "user0" + When sending "GET" with exact url to "/index.php/apps/files" + Then the HTTP status code should be "200" + + Scenario: Making a ocs request with a disabled user + Given As an "admin" + And user "user0" exists + And assure user "user0" is disabled + And As an "user0" + When sending "GET" to "/cloud/capabilities" + Then the OCS status code should be "997" + And the HTTP status code should be "401" + + Scenario: Making a web request with a disabled user + Given As an "admin" + And user "user0" exists + And assure user "user0" is disabled + And As an "user0" + When sending "GET" with exact url to "/index.php/apps/files" + And the HTTP status code should be "401" diff --git a/core/src/views/Profile.vue b/core/src/views/Profile.vue index 1df8fce6606..661e9a7fa0b 100644 --- a/core/src/views/Profile.vue +++ b/core/src/views/Profile.vue @@ -11,7 +11,8 @@ <div class="profile__header__container__placeholder" /> <div class="profile__header__container__displayname"> <h2>{{ displayname || userId }}</h2> - <span v-if="pronouns" class="profile__header__container__pronouns">· {{ pronouns }}</span> + <span v-if="pronouns">·</span> + <span v-if="pronouns" class="profile__header__container__pronouns">{{ pronouns }}</span> <NcButton v-if="isCurrentUser" type="primary" :href="settingsUrl"> @@ -270,6 +271,7 @@ $content-max-width: 640px; overflow-y: auto; &__header { + display: flex; position: sticky; height: 190px; top: -40px; @@ -281,7 +283,8 @@ $content-max-width: 640px; align-self: flex-end; width: 100%; max-width: $profile-max-width; - margin: 0 auto; + margin: 8px auto; + row-gap: 8px; display: grid; grid-template-rows: max-content max-content; grid-template-columns: 240px 1fr; @@ -295,13 +298,18 @@ $content-max-width: 640px; padding-inline: 16px; // same as the status text button, see NcButton width: $content-max-width; height: 45px; - margin-block: 100px 0; + margin-block: 125px 0; display: flex; align-items: center; gap: 18px; h2 { font-size: 30px; + margin: 0; + } + + span { + font-size: 20px; } } } @@ -405,13 +413,13 @@ $content-max-width: 640px; &__container { grid-template-columns: unset; + margin-bottom: 110px; &__displayname { - margin: 80px 20px 0px!important; - height: 1em; + margin: 80px 20px 0px 0px!important; width: unset; - display: unset; text-align: center; + padding-inline: 12px; } &__edit-button { @@ -428,6 +436,11 @@ $content-max-width: 640px; &__content { display: block; + + .avatar { + // Overlap avatar to top header + margin-top: -110px !important; + } } &__blocks { diff --git a/dist/core-profile.js b/dist/core-profile.js index bb0e92b24c3..a3b769f630f 100644 --- a/dist/core-profile.js +++ b/dist/core-profile.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e,n,i={69095:(t,e,n)=>{var i=n(21777),a=n(85471),r=n(85168),o=n(61338),s=n(32981),A=n(53334),l=n(63814),c=n(24764),p=n(73267),d=n(18195),u=n(41944),C=n(18740),_=n(22378),h=n(34196);const f={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var m=n(14486);const g=(0,m.A)(f,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,v={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},x=(0,m.A)(v,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon map-marker-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var b=n(93919),y=n(96763);const k=(0,a.pM)({name:"Profile",components:{AccountIcon:g,MapMarkerIcon:x,NcActionLink:p.A,NcActions:c.A,NcAppContent:d.A,NcAvatar:u.A,NcButton:C.A,NcContent:_.A,NcEmptyContent:h.A,PencilIcon:b.A},data:()=>({...(0,s.C)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1,pronouns:null}),status:(0,s.C)("core","status",{}),sections:window.OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){return(0,i.HW)()?.uid===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},otherActions(){return y.warn(this.allActions),this.allActions.length>1?this.allActions.slice(1):[]},settingsUrl:()=>(0,l.Jv)("/settings/user"),emptyProfileMessage(){return this.isCurrentUser?(0,A.Tl)("core","You have not added any info yet"):(0,A.Tl)("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title=`${this.displayname||this.userId} - ${document.title}`,(0,o.B1)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,o.al)("user_status:status.updated",this.handleStatusUpdate)},methods:{t:A.Tl,handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const t=document.querySelector(".user-status-menu-item");this.isCurrentUser&&(t?t.click():(0,r.Qg)((0,A.Tl)("core","Error opening the user status modal, try hard refreshing the page")))}}});var w=n(85072),B=n.n(w),S=n(97825),E=n.n(S),I=n(77659),D=n.n(I),N=n(55056),O=n.n(N),P=n(10540),U=n.n(P),j=n(41113),M=n.n(j),z=n(64614),T={};T.styleTagTransform=M(),T.setAttributes=O(),T.insert=D().bind(null,"head"),T.domAPI=E(),T.insertStyleElement=U(),B()(z.A,T),z.A&&z.A.locals&&z.A.locals;const $=(0,m.A)(k,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcContent",{attrs:{"app-name":"profile"}},[e("NcAppContent",[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("div",{staticClass:"profile__header__container__displayname"},[e("h2",[t._v(t._s(t.displayname||t.userId))]),t._v(" "),t.pronouns?e("span",{staticClass:"profile__header__container__pronouns"},[t._v("· "+t._s(t.pronouns))]):t._e(),t._v(" "),t.isCurrentUser?e("NcButton",{attrs:{type:"primary",href:t.settingsUrl},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PencilIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4260349822)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t\t")]):t._e()],1),t._v(" "),t.status.icon||t.status.message?e("NcButton",{attrs:{disabled:!t.isCurrentUser,type:t.isCurrentUser?"tertiary":"tertiary-no-background"},on:{click:t.openStatusModal}},[t._v("\n\t\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t\t")]):t._e()],1)]),t._v(" "),e("div",{staticClass:"profile__wrapper"},[e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("NcButton",{staticClass:"user-actions__primary",attrs:{type:"primary",href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__primary__icon",attrs:{src:t.primaryAction.icon,alt:""}})]},proxy:!0}],null,!1,1780240256)},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),e("NcActions",{staticClass:"user-actions__other",attrs:{inline:4}},t._l(t.otherActions,(function(n){return e("NcActionLink",{key:n.id,attrs:{"close-after-click":!0,href:n.target,target:"phone"===n.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__other__icon",attrs:{src:n.icon,alt:""}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?e("h3",{staticClass:"profile__blocks-headline"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.headline)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t.biography?e("p",{staticClass:"profile__blocks-biography"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.biography)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t._l(t.sections,(function(n,i){return e("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"profile__additionalContent"},[e(n(t.$refs["section-"+i],t.userId),{tag:"component",attrs:{"user-id":t.userId}})],1)}))]:e("NcEmptyContent",{staticClass:"profile__blocks-empty-info",attrs:{name:t.emptyProfileMessage,description:t.t("core","The headline and about sections will show up here")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountIcon",{attrs:{size:60}})]},proxy:!0}])})],2)])])])],1)}),[],!1,null,"eec264ec",null).exports;n.nc=(0,i.aV)(),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}(e="_sections"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}});const G=a.Ay.extend($);window.addEventListener("DOMContentLoaded",(()=>{(new G).$mount("#content")}))},64614:(t,e,n)=>{n.d(e,{A:()=>s});var i=n(71354),a=n.n(i),r=n(76314),o=n.n(r)()(a());o.push([t.id,"[data-v-eec264ec] #app-content-vue{background-color:unset}.profile[data-v-eec264ec]{width:100%;overflow-y:auto}.profile__header[data-v-eec264ec]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-eec264ec]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-eec264ec]{grid-row:1/3}.profile__header__container__displayname[data-v-eec264ec]{padding-inline:16px;width:640px;height:45px;margin-block:100px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-eec264ec]{font-size:30px}.profile__sidebar[data-v-eec264ec]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-eec264ec]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-eec264ec]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-eec264ec]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-eec264ec],.profile__blocks h3[data-v-eec264ec]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-eec264ec]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-eec264ec]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-eec264ec]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-eec264ec]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-eec264ec]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-eec264ec]{height:250px;position:unset}.profile__header__container[data-v-eec264ec]{grid-template-columns:unset}.profile__header__container__displayname[data-v-eec264ec]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-eec264ec]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-eec264ec]{margin:4px auto}.profile__content[data-v-eec264ec]{display:block}.profile__blocks[data-v-eec264ec]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-eec264ec]{margin:unset;position:unset}}.user-actions[data-v-eec264ec]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-eec264ec]{margin:0 auto}.user-actions__primary__icon[data-v-eec264ec]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-eec264ec]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-eec264ec]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAtBiB,CAuBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WAlCgB,CAmChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7FkB,CA8FlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtGkB,CAwGlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n:deep(#app-content-vue) {\n\tbackground-color: unset;\n}\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\tpadding-inline: 16px; // same as the status text button, see NcButton\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-block: 100px 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 18px;\n\n\t\t\t\th2 {\n\t\t\t\t\tfont-size: 30px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin-block: -150px 0;\n\t\tmargin-inline: 0 20px;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t:deep(.avatar.avatardiv) {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\n\t\t\t&.interactive {\n\t\t\t\t.avatardiv__user-status {\n\t\t\t\t\t// Show that the status is interactive\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.avatardiv__user-status {\n\t\t\t\tinset-inline-end: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\tcursor: text;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-inline: 0;\n\t\t\tmargin-block: 10px 0;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\n\t\t&__icon {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\talign-self: center;\n\t\t\tmargin: 12px; // so we get 44px x 44px\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o}},a={};function r(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=i,t=[],r.O=(e,n,i,a)=>{if(!n){var o=1/0;for(c=0;c<t.length;c++){n=t[c][0],i=t[c][1],a=t[c][2];for(var s=!0,A=0;A<n.length;A++)(!1&a||o>=a)&&Object.keys(r.O).every((t=>r.O[t](n[A])))?n.splice(A--,1):(s=!1,a<o&&(o=a));if(s){t.splice(c--,1);var l=i();void 0!==l&&(e=l)}}return e}a=a||0;for(var c=t.length;c>0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,i,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.f={},r.e=t=>Promise.all(Object.keys(r.f).reduce(((e,n)=>(r.f[n](t,e),e)),[])),r.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",9291:"077955af818a227340aa"}[t],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",r.l=(t,i,a,o)=>{if(e[t])e[t].push(i);else{var s,A;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var p=l[c];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==n+a){s=p;break}}s||(A=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",n+a),s.src=t),e[t]=[i];var d=(n,i)=>{s.onerror=s.onload=null,clearTimeout(u);var a=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),a&&a.forEach((t=>t(i))),n)return n(i)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),A&&document.head.appendChild(s)}},r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=1390,(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),(()=>{r.b=document.baseURI||self.location.href;var t={1390:0};r.f.j=(e,n)=>{var i=r.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var a=new Promise(((n,a)=>i=t[e]=[n,a]));n.push(i[2]=a);var o=r.p+r.u(e),s=new Error;r.l(o,(n=>{if(r.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var a=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,i[1](s)}}),"chunk-"+e,e)}},r.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,o=n[0],s=n[1],A=n[2],l=0;if(o.some((e=>0!==t[e]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);if(A)var c=A(r)}for(e&&e(n);l<o.length;l++)a=o[l],r.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(69095)));o=r.O(o)})(); -//# sourceMappingURL=core-profile.js.map?v=c3cb11f38495ec1cae9e
\ No newline at end of file +(()=>{"use strict";var t,e,n,i={96219:(t,e,n)=>{var i=n(21777),a=n(85471),r=n(85168),o=n(61338),s=n(32981),A=n(53334),l=n(63814),c=n(24764),p=n(73267),d=n(18195),C=n(41944),u=n(18740),_=n(22378),f=n(34196);const m={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var h=n(14486);const g=(0,h.A)(m,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,v={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},b=(0,h.A)(v,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon map-marker-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var x=n(93919),y=n(96763);const k=(0,a.pM)({name:"Profile",components:{AccountIcon:g,MapMarkerIcon:b,NcActionLink:p.A,NcActions:c.A,NcAppContent:d.A,NcAvatar:C.A,NcButton:u.A,NcContent:_.A,NcEmptyContent:f.A,PencilIcon:x.A},data:()=>({...(0,s.C)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1,pronouns:null}),status:(0,s.C)("core","status",{}),sections:window.OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){return(0,i.HW)()?.uid===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},otherActions(){return y.warn(this.allActions),this.allActions.length>1?this.allActions.slice(1):[]},settingsUrl:()=>(0,l.Jv)("/settings/user"),emptyProfileMessage(){return this.isCurrentUser?(0,A.Tl)("core","You have not added any info yet"):(0,A.Tl)("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title=`${this.displayname||this.userId} - ${document.title}`,(0,o.B1)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,o.al)("user_status:status.updated",this.handleStatusUpdate)},methods:{t:A.Tl,handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const t=document.querySelector(".user-status-menu-item");this.isCurrentUser&&(t?t.click():(0,r.Qg)((0,A.Tl)("core","Error opening the user status modal, try hard refreshing the page")))}}});var w=n(85072),B=n.n(w),S=n(97825),E=n.n(S),I=n(77659),D=n.n(I),O=n(55056),N=n.n(O),P=n(10540),j=n.n(P),U=n(41113),M=n.n(U),z=n(52054),T={};T.styleTagTransform=M(),T.setAttributes=N(),T.insert=D().bind(null,"head"),T.domAPI=E(),T.insertStyleElement=j(),B()(z.A,T),z.A&&z.A.locals&&z.A.locals;const $=(0,h.A)(k,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcContent",{attrs:{"app-name":"profile"}},[e("NcAppContent",[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("div",{staticClass:"profile__header__container__displayname"},[e("h2",[t._v(t._s(t.displayname||t.userId))]),t._v(" "),t.pronouns?e("span",[t._v("·")]):t._e(),t._v(" "),t.pronouns?e("span",{staticClass:"profile__header__container__pronouns"},[t._v(t._s(t.pronouns))]):t._e(),t._v(" "),t.isCurrentUser?e("NcButton",{attrs:{type:"primary",href:t.settingsUrl},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PencilIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4260349822)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t\t")]):t._e()],1),t._v(" "),t.status.icon||t.status.message?e("NcButton",{attrs:{disabled:!t.isCurrentUser,type:t.isCurrentUser?"tertiary":"tertiary-no-background"},on:{click:t.openStatusModal}},[t._v("\n\t\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t\t")]):t._e()],1)]),t._v(" "),e("div",{staticClass:"profile__wrapper"},[e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("NcButton",{staticClass:"user-actions__primary",attrs:{type:"primary",href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__primary__icon",attrs:{src:t.primaryAction.icon,alt:""}})]},proxy:!0}],null,!1,1780240256)},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),e("NcActions",{staticClass:"user-actions__other",attrs:{inline:4}},t._l(t.otherActions,(function(n){return e("NcActionLink",{key:n.id,attrs:{"close-after-click":!0,href:n.target,target:"phone"===n.id?"_self":"_blank"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("img",{staticClass:"user-actions__other__icon",attrs:{src:n.icon,alt:""}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?e("h3",{staticClass:"profile__blocks-headline"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.headline)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t.biography?e("p",{staticClass:"profile__blocks-biography"},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.biography)+"\n\t\t\t\t\t\t")]):t._e(),t._v(" "),t._l(t.sections,(function(n,i){return e("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"profile__additionalContent"},[e(n(t.$refs["section-"+i],t.userId),{tag:"component",attrs:{"user-id":t.userId}})],1)}))]:e("NcEmptyContent",{staticClass:"profile__blocks-empty-info",attrs:{name:t.emptyProfileMessage,description:t.t("core","The headline and about sections will show up here")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountIcon",{attrs:{size:60}})]},proxy:!0}])})],2)])])])],1)}),[],!1,null,"b76e3ec8",null).exports;n.nc=(0,i.aV)(),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}(e="_sections"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}});const G=a.Ay.extend($);window.addEventListener("DOMContentLoaded",(()=>{(new G).$mount("#content")}))},52054:(t,e,n)=>{n.d(e,{A:()=>s});var i=n(71354),a=n.n(i),r=n(76314),o=n.n(r)()(a());o.push([t.id,"[data-v-b76e3ec8] #app-content-vue{background-color:unset}.profile[data-v-b76e3ec8]{width:100%;overflow-y:auto}.profile__header[data-v-b76e3ec8]{display:flex;position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-b76e3ec8]{align-self:flex-end;width:100%;max-width:1024px;margin:8px auto;row-gap:8px;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-b76e3ec8]{grid-row:1/3}.profile__header__container__displayname[data-v-b76e3ec8]{padding-inline:16px;width:640px;height:45px;margin-block:125px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-b76e3ec8]{font-size:30px;margin:0}.profile__header__container__displayname span[data-v-b76e3ec8]{font-size:20px}.profile__sidebar[data-v-b76e3ec8]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-b76e3ec8]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-b76e3ec8]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-b76e3ec8]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-b76e3ec8],.profile__blocks h3[data-v-b76e3ec8]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-b76e3ec8]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-b76e3ec8]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-b76e3ec8]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-b76e3ec8]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-b76e3ec8]{height:250px;position:unset}.profile__header__container[data-v-b76e3ec8]{grid-template-columns:unset;margin-bottom:110px}.profile__header__container__displayname[data-v-b76e3ec8]{margin:80px 20px 0px 0px !important;width:unset;text-align:center;padding-inline:12px}.profile__header__container__edit-button[data-v-b76e3ec8]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-b76e3ec8]{margin:4px auto}.profile__content[data-v-b76e3ec8]{display:block}.profile__content .avatar[data-v-b76e3ec8]{margin-top:-110px !important}.profile__blocks[data-v-b76e3ec8]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-b76e3ec8]{margin:unset;position:unset}}.user-actions[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-b76e3ec8]{margin:0 auto}.user-actions__primary__icon[data-v-b76e3ec8]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-b76e3ec8]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-b76e3ec8]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,YAAA,CACA,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAvBiB,CAwBjB,eAAA,CACA,WAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WApCgB,CAqChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CACA,QAAA,CAGD,+DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBApGkB,CAqGlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7GkB,CA+GlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CACA,mBAAA,CAEA,0DACC,mCAAA,CACA,WAAA,CACA,iBAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAEC,2CAEA,4BAAA,CAIF,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n:deep(#app-content-vue) {\n\tbackground-color: unset;\n}\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 8px auto;\n\t\t\trow-gap: 8px;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\tpadding-inline: 16px; // same as the status text button, see NcButton\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-block: 125px 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 18px;\n\n\t\t\t\th2 {\n\t\t\t\t\tfont-size: 30px;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin-block: -150px 0;\n\t\tmargin-inline: 0 20px;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t:deep(.avatar.avatardiv) {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\n\t\t\t&.interactive {\n\t\t\t\t.avatardiv__user-status {\n\t\t\t\t\t// Show that the status is interactive\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.avatardiv__user-status {\n\t\t\t\tinset-inline-end: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\tcursor: text;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-inline: 0;\n\t\t\tmargin-block: 10px 0;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\t\t\t\tmargin-bottom: 110px;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px 0px!important;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\tpadding-inline: 12px;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\n\t\t\t .avatar {\n\t\t\t\t// Overlap avatar to top header\n\t\t\t\tmargin-top: -110px !important;\n\t\t\t }\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\n\t\t&__icon {\n\t\t\tfilter: var(--primary-invert-if-dark);\n\t\t}\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\n\t\t&__icon {\n\t\t\theight: 20px;\n\t\t\twidth: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\talign-self: center;\n\t\t\tmargin: 12px; // so we get 44px x 44px\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=o}},a={};function r(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return i[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=i,t=[],r.O=(e,n,i,a)=>{if(!n){var o=1/0;for(c=0;c<t.length;c++){n=t[c][0],i=t[c][1],a=t[c][2];for(var s=!0,A=0;A<n.length;A++)(!1&a||o>=a)&&Object.keys(r.O).every((t=>r.O[t](n[A])))?n.splice(A--,1):(s=!1,a<o&&(o=a));if(s){t.splice(c--,1);var l=i();void 0!==l&&(e=l)}}return e}a=a||0;for(var c=t.length;c>0&&t[c-1][2]>a;c--)t[c]=t[c-1];t[c]=[n,i,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.f={},r.e=t=>Promise.all(Object.keys(r.f).reduce(((e,n)=>(r.f[n](t,e),e)),[])),r.u=t=>t+"-"+t+".js?v="+{802:"eddac441912aee9d7aa8",9291:"077955af818a227340aa"}[t],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",r.l=(t,i,a,o)=>{if(e[t])e[t].push(i);else{var s,A;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var p=l[c];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==n+a){s=p;break}}s||(A=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,r.nc&&s.setAttribute("nonce",r.nc),s.setAttribute("data-webpack",n+a),s.src=t),e[t]=[i];var d=(n,i)=>{s.onerror=s.onload=null,clearTimeout(C);var a=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),a&&a.forEach((t=>t(i))),n)return n(i)},C=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),A&&document.head.appendChild(s)}},r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=1390,(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&(!t||!/^http(s?):/.test(t));)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),(()=>{r.b=document.baseURI||self.location.href;var t={1390:0};r.f.j=(e,n)=>{var i=r.o(t,e)?t[e]:void 0;if(0!==i)if(i)n.push(i[2]);else{var a=new Promise(((n,a)=>i=t[e]=[n,a]));n.push(i[2]=a);var o=r.p+r.u(e),s=new Error;r.l(o,(n=>{if(r.o(t,e)&&(0!==(i=t[e])&&(t[e]=void 0),i)){var a=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,i[1](s)}}),"chunk-"+e,e)}},r.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,o=n[0],s=n[1],A=n[2],l=0;if(o.some((e=>0!==t[e]))){for(i in s)r.o(s,i)&&(r.m[i]=s[i]);if(A)var c=A(r)}for(e&&e(n);l<o.length;l++)a=o[l],r.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(96219)));o=r.O(o)})(); +//# sourceMappingURL=core-profile.js.map?v=b2f21a989ca39d5c35c2
\ No newline at end of file diff --git a/dist/core-profile.js.map b/dist/core-profile.js.map index b20e1083fbe..60f030308aa 100644 --- a/dist/core-profile.js.map +++ b/dist/core-profile.js.map @@ -1 +1 @@ -{"version":3,"file":"core-profile.js?v=c3cb11f38495ec1cae9e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Account.vue?d3d9","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=template&id=0571d43c","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MapMarker.vue?eeb6","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=template&id=42c21a41","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/views/Profile.vue?44ab","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/profile.ts","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=0571d43c\"\nimport script from \"./Account.vue?vue&type=script&lang=js\"\nexport * from \"./Account.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./MapMarker.vue?vue&type=template&id=42c21a41\"\nimport script from \"./MapMarker.vue?vue&type=script&lang=js\"\nexport * from \"./MapMarker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon map-marker-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"profile\"}},[_c('NcAppContent',[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('div',{staticClass:\"profile__header__container__displayname\"},[_c('h2',[_vm._v(_vm._s(_vm.displayname || _vm.userId))]),_vm._v(\" \"),(_vm.pronouns)?_c('span',{staticClass:\"profile__header__container__pronouns\"},[_vm._v(\"· \"+_vm._s(_vm.pronouns))]):_vm._e(),_vm._v(\" \"),(_vm.isCurrentUser)?_c('NcButton',{attrs:{\"type\":\"primary\",\"href\":_vm.settingsUrl},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PencilIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4260349822)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('NcButton',{attrs:{\"disabled\":!_vm.isCurrentUser,\"type\":_vm.isCurrentUser ? 'tertiary' : 'tertiary-no-background'},on:{\"click\":_vm.openStatusModal}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('NcButton',{staticClass:\"user-actions__primary\",attrs:{\"type\":\"primary\",\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__primary__icon\",attrs:{\"src\":_vm.primaryAction.icon,\"alt\":\"\"}})]},proxy:true}],null,false,1780240256)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"user-actions__other\",attrs:{\"inline\":4}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,attrs:{\"close-after-click\":true,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__other__icon\",attrs:{\"src\":action.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('h3',{staticClass:\"profile__blocks-headline\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.headline)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('p',{staticClass:\"profile__blocks-biography\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.biography)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"user-id\":_vm.userId}})],1)})]:_c('NcEmptyContent',{staticClass:\"profile__blocks-empty-info\",attrs:{\"name\":_vm.emptyProfileMessage,\"description\":_vm.t('core', 'The headline and about sections will show up here')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountIcon',{attrs:{\"size\":60}})]},proxy:true}])})],2)])])])],1)\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!./Profile.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!./Profile.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!./Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Profile.vue?vue&type=style&index=0&id=eec264ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=eec264ec&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=eec264ec&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 \"eec264ec\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport Vue from 'vue';\nimport Profile from './views/Profile.vue';\nimport ProfileSections from './profile/ProfileSections.js';\n__webpack_nonce__ = getCSPNonce();\nif (!window.OCA) {\n window.OCA = {};\n}\nif (!window.OCA.Core) {\n window.OCA.Core = {};\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() });\nconst View = Vue.extend(Profile);\nwindow.addEventListener('DOMContentLoaded', () => {\n new View().$mount('#content');\n});\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\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, `[data-v-eec264ec] #app-content-vue{background-color:unset}.profile[data-v-eec264ec]{width:100%;overflow-y:auto}.profile__header[data-v-eec264ec]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-eec264ec]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-eec264ec]{grid-row:1/3}.profile__header__container__displayname[data-v-eec264ec]{padding-inline:16px;width:640px;height:45px;margin-block:100px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-eec264ec]{font-size:30px}.profile__sidebar[data-v-eec264ec]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-eec264ec] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-eec264ec]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-eec264ec]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-eec264ec]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-eec264ec],.profile__blocks h3[data-v-eec264ec]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-eec264ec]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-eec264ec]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-eec264ec]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-eec264ec]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-eec264ec]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-eec264ec]{height:250px;position:unset}.profile__header__container[data-v-eec264ec]{grid-template-columns:unset}.profile__header__container__displayname[data-v-eec264ec]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-eec264ec]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-eec264ec]{margin:4px auto}.profile__content[data-v-eec264ec]{display:block}.profile__blocks[data-v-eec264ec]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-eec264ec]{margin:unset;position:unset}}.user-actions[data-v-eec264ec]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-eec264ec]{margin:0 auto}.user-actions__primary__icon[data-v-eec264ec]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-eec264ec]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-eec264ec]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAtBiB,CAuBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WAlCgB,CAmChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7FkB,CA8FlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtGkB,CAwGlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n:deep(#app-content-vue) {\\n\\tbackground-color: unset;\\n}\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\tpadding-inline: 16px; // same as the status text button, see NcButton\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-block: 100px 0;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tgap: 18px;\\n\\n\\t\\t\\t\\th2 {\\n\\t\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin-block: -150px 0;\\n\\t\\tmargin-inline: 0 20px;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t:deep(.avatar.avatardiv) {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\t\\t// Show that the status is interactive\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tinset-inline-end: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\tcursor: text;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-inline: 0;\\n\\t\\t\\tmargin-block: 10px 0;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px!important;\\n\\t\\t\\t\\t\\theight: 1em;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\n\\t\\t&__icon {\\n\\t\\t\\theight: 20px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\tobject-fit: contain;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\talign-self: center;\\n\\t\\t\\tmargin: 12px; // so we get 44px x 44px\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"9291\":\"077955af818a227340aa\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1390;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1390: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(69095)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","defineComponent","components","AccountIcon","MapMarkerIcon","NcActionLink","NcActions","NcAppContent","NcAvatar","NcButton","NcContent","NcEmptyContent","PencilIcon","data","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","pronouns","status","sections","window","OCA","Core","ProfileSections","getSections","computed","isCurrentUser","getCurrentUser","uid","allActions","primaryAction","length","otherActions","console","warn","slice","settingsUrl","generateUrl","emptyProfileMessage","t","user","mounted","document","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","icon","message","class","interactive","nativeOn","preventDefault","stopPropagation","apply","arguments","target","id","_l","action","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","getCSPNonce","Object","assign","constructor","_sections","registerSection","push","View","Vue","extend","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-profile.js?v=b2f21a989ca39d5c35c2","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Account.vue?d3d9","webpack:///nextcloud/node_modules/vue-material-design-icons/Account.vue?vue&type=template&id=0571d43c","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/MapMarker.vue?eeb6","webpack:///nextcloud/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=template&id=42c21a41","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/views/Profile.vue?af59","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/profile.ts","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=0571d43c\"\nimport script from \"./Account.vue?vue&type=script&lang=js\"\nexport * from \"./Account.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./MapMarker.vue?vue&type=template&id=42c21a41\"\nimport script from \"./MapMarker.vue?vue&type=script&lang=js\"\nexport * from \"./MapMarker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon map-marker-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"profile\"}},[_c('NcAppContent',[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('div',{staticClass:\"profile__header__container__displayname\"},[_c('h2',[_vm._v(_vm._s(_vm.displayname || _vm.userId))]),_vm._v(\" \"),(_vm.pronouns)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\" \"),(_vm.pronouns)?_c('span',{staticClass:\"profile__header__container__pronouns\"},[_vm._v(_vm._s(_vm.pronouns))]):_vm._e(),_vm._v(\" \"),(_vm.isCurrentUser)?_c('NcButton',{attrs:{\"type\":\"primary\",\"href\":_vm.settingsUrl},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PencilIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4260349822)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('NcButton',{attrs:{\"disabled\":!_vm.isCurrentUser,\"type\":_vm.isCurrentUser ? 'tertiary' : 'tertiary-no-background'},on:{\"click\":_vm.openStatusModal}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('NcButton',{staticClass:\"user-actions__primary\",attrs:{\"type\":\"primary\",\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__primary__icon\",attrs:{\"src\":_vm.primaryAction.icon,\"alt\":\"\"}})]},proxy:true}],null,false,1780240256)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"user-actions__other\",attrs:{\"inline\":4}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,attrs:{\"close-after-click\":true,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"user-actions__other__icon\",attrs:{\"src\":action.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('h3',{staticClass:\"profile__blocks-headline\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.headline)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('p',{staticClass:\"profile__blocks-biography\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.biography)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"user-id\":_vm.userId}})],1)})]:_c('NcEmptyContent',{staticClass:\"profile__blocks-empty-info\",attrs:{\"name\":_vm.emptyProfileMessage,\"description\":_vm.t('core', 'The headline and about sections will show up here')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountIcon',{attrs:{\"size\":60}})]},proxy:true}])})],2)])])])],1)\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!./Profile.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!./Profile.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!./Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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!./Profile.vue?vue&type=style&index=0&id=b76e3ec8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=b76e3ec8&scoped=true\"\nimport script from \"./Profile.vue?vue&type=script&lang=ts\"\nexport * from \"./Profile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=b76e3ec8&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 \"b76e3ec8\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport Vue from 'vue';\nimport Profile from './views/Profile.vue';\nimport ProfileSections from './profile/ProfileSections.js';\n__webpack_nonce__ = getCSPNonce();\nif (!window.OCA) {\n window.OCA = {};\n}\nif (!window.OCA.Core) {\n window.OCA.Core = {};\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() });\nconst View = Vue.extend(Profile);\nwindow.addEventListener('DOMContentLoaded', () => {\n new View().$mount('#content');\n});\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\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, `[data-v-b76e3ec8] #app-content-vue{background-color:unset}.profile[data-v-b76e3ec8]{width:100%;overflow-y:auto}.profile__header[data-v-b76e3ec8]{display:flex;position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-b76e3ec8]{align-self:flex-end;width:100%;max-width:1024px;margin:8px auto;row-gap:8px;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-b76e3ec8]{grid-row:1/3}.profile__header__container__displayname[data-v-b76e3ec8]{padding-inline:16px;width:640px;height:45px;margin-block:125px 0;display:flex;align-items:center;gap:18px}.profile__header__container__displayname h2[data-v-b76e3ec8]{font-size:30px;margin:0}.profile__header__container__displayname span[data-v-b76e3ec8]{font-size:20px}.profile__sidebar[data-v-b76e3ec8]{position:sticky;top:0;align-self:flex-start;padding-top:20px;min-width:220px;margin-block:-150px 0;margin-inline:0 20px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv.interactive .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-b76e3ec8] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__wrapper[data-v-b76e3ec8]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-b76e3ec8]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-b76e3ec8]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-b76e3ec8],.profile__blocks h3[data-v-b76e3ec8]{cursor:text;overflow-wrap:anywhere}.profile__blocks-details[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-b76e3ec8]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-b76e3ec8]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-b76e3ec8]{margin-inline:0;margin-block:10px 0;font-weight:bold;font-size:20px}.profile__blocks-biography[data-v-b76e3ec8]{white-space:pre-line}@media only screen and (max-width: 1024px){.profile__header[data-v-b76e3ec8]{height:250px;position:unset}.profile__header__container[data-v-b76e3ec8]{grid-template-columns:unset;margin-bottom:110px}.profile__header__container__displayname[data-v-b76e3ec8]{margin:80px 20px 0px 0px !important;width:unset;text-align:center;padding-inline:12px}.profile__header__container__edit-button[data-v-b76e3ec8]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-b76e3ec8]{margin:4px auto}.profile__content[data-v-b76e3ec8]{display:block}.profile__content .avatar[data-v-b76e3ec8]{margin-top:-110px !important}.profile__blocks[data-v-b76e3ec8]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__sidebar[data-v-b76e3ec8]{margin:unset;position:unset}}.user-actions[data-v-b76e3ec8]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-b76e3ec8]{margin:0 auto}.user-actions__primary__icon[data-v-b76e3ec8]{filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-b76e3ec8]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-b76e3ec8]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,mCACC,sBAAA,CAGD,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,YAAA,CACA,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAvBiB,CAwBjB,eAAA,CACA,WAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,0DACC,mBAAA,CACA,WApCgB,CAqChB,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,QAAA,CAEA,6DACC,cAAA,CACA,QAAA,CAGD,+DACC,cAAA,CAMJ,mCACC,eAAA,CACA,KAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,qBAAA,CACA,oBAAA,CAGA,qDACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGC,yFAEC,cAAA,CAIF,6EACC,qBAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKH,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBApGkB,CAqGlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7GkB,CA+GlB,yEACC,WAAA,CACA,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CACA,mBAAA,CACA,gBAAA,CACA,cAAA,CAGD,4CACC,oBAAA,CAKH,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CACA,mBAAA,CAEA,0DACC,mCAAA,CACA,WAAA,CACA,iBAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAEC,2CAEA,4BAAA,CAIF,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAGD,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAEA,8CACC,oCAAA,CAIF,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAEA,4CACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n:deep(#app-content-vue) {\\n\\tbackground-color: unset;\\n}\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 8px auto;\\n\\t\\t\\trow-gap: 8px;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\tpadding-inline: 16px; // same as the status text button, see NcButton\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-block: 125px 0;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tgap: 18px;\\n\\n\\t\\t\\t\\th2 {\\n\\t\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin-block: -150px 0;\\n\\t\\tmargin-inline: 0 20px;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t:deep(.avatar.avatardiv) {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\t\\t// Show that the status is interactive\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tinset-inline-end: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\tcursor: text;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-inline: 0;\\n\\t\\t\\tmargin-block: 10px 0;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\t\\t\\t\\tmargin-bottom: 110px;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px 0px!important;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t\\tpadding-inline: 12px;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t .avatar {\\n\\t\\t\\t\\t// Overlap avatar to top header\\n\\t\\t\\t\\tmargin-top: -110px !important;\\n\\t\\t\\t }\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tfilter: var(--primary-invert-if-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\n\\t\\t&__icon {\\n\\t\\t\\theight: 20px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\tobject-fit: contain;\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\talign-self: center;\\n\\t\\t\\tmargin: 12px; // so we get 44px x 44px\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"802\":\"eddac441912aee9d7aa8\",\"9291\":\"077955af818a227340aa\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1390;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1390: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(96219)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","defineComponent","components","AccountIcon","MapMarkerIcon","NcActionLink","NcActions","NcAppContent","NcAvatar","NcButton","NcContent","NcEmptyContent","PencilIcon","data","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","pronouns","status","sections","window","OCA","Core","ProfileSections","getSections","computed","isCurrentUser","getCurrentUser","uid","allActions","primaryAction","length","otherActions","console","warn","slice","settingsUrl","generateUrl","emptyProfileMessage","t","user","mounted","document","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","icon","message","class","interactive","nativeOn","preventDefault","stopPropagation","apply","arguments","target","id","_l","action","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","getCSPNonce","Object","assign","constructor","_sections","registerSection","push","View","Vue","extend","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/private/Profile/ProfileManager.php b/lib/private/Profile/ProfileManager.php index b2d5016104b..9d3d94fab21 100644 --- a/lib/private/Profile/ProfileManager.php +++ b/lib/private/Profile/ProfileManager.php @@ -223,7 +223,7 @@ class ProfileManager implements IProfileManager { /** * Return the profile parameters of the target user that are visible to the visiting user * in an associative array - * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: non-falsy-string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>} + * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>} */ public function getProfileFields(IUser $targetUser, ?IUser $visitingUser): array { $account = $this->accountManager->getAccount($targetUser); diff --git a/lib/public/Profile/IProfileManager.php b/lib/public/Profile/IProfileManager.php index 3f5802a5441..0a1e6733e58 100644 --- a/lib/public/Profile/IProfileManager.php +++ b/lib/public/Profile/IProfileManager.php @@ -54,6 +54,7 @@ interface IProfileManager { IAccountManager::PROPERTY_PHONE => self::VISIBILITY_SHOW_USERS_ONLY, IAccountManager::PROPERTY_TWITTER => self::VISIBILITY_SHOW, IAccountManager::PROPERTY_WEBSITE => self::VISIBILITY_SHOW, + IAccountManager::PROPERTY_PRONOUNS => self::VISIBILITY_SHOW, ]; /** @@ -82,7 +83,7 @@ interface IProfileManager { * Return the profile parameters of the target user that are visible to the visiting user * in an associative array * - * @return array{userId: string, address?: ?string, biography?: ?string, displayname?: ?string, headline?: ?string, isUserAvatarVisible?: bool, organisation?: ?string, role?: ?string, actions: list<array{id: string, icon: string, title: string, target: ?string}>} + * @return array{userId: string, address?: string|null, biography?: string|null, displayname?: string|null, headline?: string|null, isUserAvatarVisible?: bool, organisation?: string|null, pronouns?: string|null, role?: string|null, actions: list<array{id: string, icon: string, title: string, target: ?string}>} * @since 28.0.0 */ public function getProfileFields(IUser $targetUser, ?IUser $visitingUser): array; |