From d893765b243f012fe288d7a9d2cfb5470d16cca0 Mon Sep 17 00:00:00 2001 From: Carter Date: Sat, 6 Jan 2024 15:09:26 -0800 Subject: [PATCH] New organizations (#1488) * [WIP] Transfer organizations to own branch * push progress * Setup organizations page * Add organizations grid to user profile * Remove debug * Add error handling for failed organization fetch * Refactor organization page and settings * Restructure to composition setup api * checklist completion * Apply suggestions from code review Co-authored-by: Emma Alexia * Update pages/[type]/[id]/settings/index.vue Co-authored-by: Emma Alexia * Update pages/[type]/[id]/settings/index.vue Co-authored-by: Emma Alexia * Update pages/[type]/[id]/settings/index.vue Co-authored-by: Emma Alexia * Update pages/[type]/[id]/settings/index.vue Co-authored-by: Emma Alexia * Clean up org state management * Refactor useClientTry to simplify code * Remove unused code and update dependencies * Refactor bulkEditLinks event handler * Refactor organization management functions * Update heading from "Creators" to "Members" * Refactor team member invitation * Refactor member management functions * Implement validation on clientside for org names * Name sanitization for fun characters * Update onInviteTeamMember function parameters * Remove name * sidebar * random rendering issue * Conform to org removal * Org no projects conditional * Update organization links in dashboard * Update Cards to universal-cards * Refactor gallery upload permissions * Refactor to sidebar pattern * Update button classes in gallery and versions components * Finish (most) * almost finish * Finish orgs :D * Fix lint * orgs fixes * fix most things * project settings * convert grid to cards * clean up unused test class * Settings -> Manage * add org view to org management * Fix prop mounting issue * fix analytics grid layout overflow * fix multiselect breaking layout * Refactor chart selection logic in ChartDisplay.vue * Add transfer modal --------- Co-authored-by: Jai A Co-authored-by: Emma Alexia --- assets/images/utils/organization.svg | 1 + assets/styles/components.scss | 4 + components/ui/ModalCreation.vue | 151 ++- components/ui/NotificationItem.vue | 31 +- components/ui/OrganizationCreateModal.vue | 138 +++ .../ui/OrganizationProjectTransferModal.vue | 255 ++++++ components/ui/ProjectCard.vue | 1 + components/ui/ProjectMemberHeader.vue | 555 ++++++----- components/ui/charts/Chart.client.vue | 3 +- components/ui/charts/ChartDisplay.vue | 54 +- composables/route-params.js | 10 + composables/use-client-try.ts | 36 + helpers/notifications.js | 22 +- helpers/teams.js | 2 + layouts/default.vue | 8 +- package.json | 2 +- pages/[type]/[id].vue | 159 ++-- pages/[type]/[id]/gallery.vue | 39 +- pages/[type]/[id]/index.vue | 6 +- pages/[type]/[id]/moderation.vue | 9 +- pages/[type]/[id]/settings/description.vue | 7 +- pages/[type]/[id]/settings/index.vue | 343 ++++--- pages/[type]/[id]/settings/members.vue | 865 +++++++++++++----- pages/[type]/[id]/settings/tags.vue | 124 +-- pages/[type]/[id]/version/[version].vue | 12 +- pages/[type]/[id]/versions.vue | 3 +- pages/collection/[id].vue | 22 +- pages/dashboard.vue | 8 +- pages/dashboard/collections.vue | 5 + pages/dashboard/follows.vue | 51 -- pages/dashboard/organizations.vue | 198 ++++ pages/dashboard/revenue/index.vue | 2 +- pages/dashboard/revenue/transfers.vue | 1 - pages/dashboard/revenue/withdraw.vue | 3 - pages/organization/[id].vue | 538 +++++++++++ pages/organization/[id]/[projectType].vue | 1 + .../organization/[id]/settings/analytics.vue | 27 + pages/organization/[id]/settings/index.vue | 218 +++++ pages/organization/[id]/settings/members.vue | 428 +++++++++ pages/organization/[id]/settings/projects.vue | 668 ++++++++++++++ pages/user/[id].vue | 101 +- plugins/shorthands.js | 6 + pnpm-lock.yaml | 8 +- utils/permissions.ts | 4 + 44 files changed, 4092 insertions(+), 1037 deletions(-) create mode 100644 assets/images/utils/organization.svg create mode 100644 components/ui/OrganizationCreateModal.vue create mode 100644 components/ui/OrganizationProjectTransferModal.vue create mode 100644 composables/route-params.js create mode 100644 composables/use-client-try.ts delete mode 100644 pages/dashboard/follows.vue create mode 100644 pages/dashboard/organizations.vue create mode 100644 pages/organization/[id].vue create mode 100644 pages/organization/[id]/[projectType].vue create mode 100644 pages/organization/[id]/settings/analytics.vue create mode 100644 pages/organization/[id]/settings/index.vue create mode 100644 pages/organization/[id]/settings/members.vue create mode 100644 pages/organization/[id]/settings/projects.vue create mode 100644 utils/permissions.ts diff --git a/assets/images/utils/organization.svg b/assets/images/utils/organization.svg new file mode 100644 index 000000000..d624b2079 --- /dev/null +++ b/assets/images/utils/organization.svg @@ -0,0 +1 @@ + diff --git a/assets/styles/components.scss b/assets/styles/components.scss index f4e89b6f5..12020304f 100644 --- a/assets/styles/components.scss +++ b/assets/styles/components.scss @@ -1133,6 +1133,10 @@ button { font-size: var(--font-size-lg); font-weight: bold; } + + &.no-margin { + margin: 0; + } } .project-list { diff --git a/components/ui/ModalCreation.vue b/components/ui/ModalCreation.vue index 930e59873..37cd53340 100644 --- a/components/ui/ModalCreation.vue +++ b/components/ui/ModalCreation.vue @@ -4,14 +4,6 @@

New projects are created as drafts and can be found under your profile page.

- - @@ -28,9 +20,7 @@ URL*
-
- https://modrinth.com/{{ getProjectType() ? getProjectType().id : '???' }}/ -
+
https://modrinth.com/project/
+ +