fcb924d3a5
* refactor WIP * Button design changes * FE2 FormButton Updates * ts composition api * CommonTextLink Changes * CommonTextLink prop updates * Add disabled styles * WIP * Design system updates * Colour Updates * New Text Styles. Initial FE2 changes * More fe2 styling classes * Minor update * Minor update * Fix build * More updates for discussion * More styling updates * Minor updates to inputs * Revert change to size options * More text updates * More font class swapping * Revert dui3 changes * Confirmed Lineheights * Add story files for new text styles * Minor copy changes * Minor typo * Revert variant>color * New Colours WIP * andrew/web-1371-misalignment-in-account-dropdown * andrew/web-1374-settings-text-styles-are-not-right * andrew/web-1375-nav-texts-should-be-14px * andrew/web-1376-decrease-size-of-versions-header * andrew/web-1377-version-card-title * Updates * semibold>medium * Colour updates * Sizing updates * Colour updates * Colour updates * Measure mode * Updates * Fix build * Fix build * WIP Updates * Changes from PR * Updated login, registration and reset password styling * Make share dropdown bg white * Updated viewer titles * Fix: Resize panel highlight color in the viewer should be blue * Fix: Blue + Add link in Models. And other blue links in Viewer * Add labelPosition Prop. Fix Button stories * Updated CommonLink to remove default underline * Add Highlight Color * Card updates from Michal * Updated discussion icon on version card * Small tweaks to version card * Small tweaks to version card * Fix: Ghost button doesn't have padding * Fix: Write Delete... * Fix: Version hover border color * Updates to Project Card. Updates to PageTabs * Fix: Adjust title in announcement modal * Updates from Comments * Select Background Colour * Fix: Select dropdown color * Improve list view. Improve discussions * Fix: Minor tweaks to onboarding checklist * Fix: Clean up nav * Hide third item when not >md * Change project heading size * Add border to version card * Adjust spacing in dropdowns * Slight change * Update button style in Version card * Tweaked nav menu * Tweaked nav menu * Various styling tweaks * Fix settings modal subheader * Various styling tweaks and fixes * Tweak settings dialog styling * Tweak simple scrollbar * Minor tweaks to model page * Minor tweaks to model page * Minor tweak to login * Tweak discussion card * Tweak settings page * Tweak vertical tabs * Tweak Dialog alignment * Fix some paddings * Change IconVersions to ClockIcon * Tweak spacing between icons * Updates to Card Icons * Bold "connectors" in empty project message * Remove padding in Profile field * Update inline model create * Remove icons from share menu * Updated Delete dialog * Wrong text positioning in alert * Updated copy in dropdown * Change bg to bg-foundation in select dropdown component * Fix merge conflicy * Selection Info title colour * Wrong text class * Update card colours based on call * Update card colours * Update empty state * Input label font weight * Updates to Embed * Various styling fixes * Fix; Viewer panel header styling * Fix; Adjust BG in dev mode list items * Fix; Fix button placement in video modal * Fix: Share menu is not using LayoutMenu * Fix: Buttons clash under filters * Fix: Adjust spacing in selection info * Fix: Adjust gray BG behind model preview images * Fix: No hover cursor on model card * Fix: Align text styling in dev mode and selection info panel * Fix for menu width * Fix mobile problems * Fix Add spacing on new login screens * Revert prose change. Add prose-sm * Text - Use contain for bg image * Fix onboarding screens * Responsive fixes * Fix hydration errors * Added padding to Add Model Dialog * Fix versions buttons * Fix build problem * Changes PRE PR * Final Pre PR Changes * Remove DUI3 change * Fix small issue with dialog after merge conflict * Remove label classes from Visibility Select * Revert changes made in Controls.vue * Remove old-webhooks * Add highlight colours to Storybook * Add v-keyboard-clickable --------- Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
118 lines
3.7 KiB
Vue
118 lines
3.7 KiB
Vue
<template>
|
|
<div>
|
|
<div
|
|
class="relative group flex flex-col items-stretch md:flex-row md:space-x-2 border border-outline-3 rounded-xl p-4 transition bg-foundation"
|
|
>
|
|
<div
|
|
class="w-full md:w-48 flex flex-col justify-between col-span-3 lg:col-span-1 mb-4 md:mb-0 flex-shrink-0 space-y-1 pl-4 pr-6 py-2"
|
|
>
|
|
<div class="flex flex-col">
|
|
<NuxtLink
|
|
:to="projectRoute(project.id)"
|
|
class="break-words hover:text-primary text-heading mb-2"
|
|
>
|
|
{{ project.name }}
|
|
</NuxtLink>
|
|
<span
|
|
v-tippy="updatedAt.full"
|
|
class="text-body-3xs mb-1 text-foreground-2 select-none"
|
|
>
|
|
Updated
|
|
{{ updatedAt.relative }}
|
|
</span>
|
|
<span class="text-body-3xs capitalize mb-2 text-foreground-2 select-none">
|
|
{{ project.role?.split(':').reverse()[0] }}
|
|
</span>
|
|
<UserAvatarGroup :users="teamUsers" :max-count="2" />
|
|
</div>
|
|
<div class="pt-3">
|
|
<FormButton
|
|
:to="allProjectModelsRoute(project.id) + '/'"
|
|
size="sm"
|
|
color="outline"
|
|
:icon-right="ChevronRightIcon"
|
|
>
|
|
{{
|
|
`${modelItemTotalCount} ${modelItemTotalCount === 1 ? 'model' : 'models'}`
|
|
}}
|
|
</FormButton>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2 flex-grow col-span-4 lg:col-span-3 w-full sm:[&>*:nth-child(2)]:hidden lg:[&>*:nth-child(2)]:block"
|
|
>
|
|
<ProjectPageModelsCard
|
|
v-for="pendingModel in pendingModels"
|
|
:key="pendingModel.id"
|
|
:model="pendingModel"
|
|
:project="project"
|
|
show-versions
|
|
:project-id="project.id"
|
|
height="h-48"
|
|
show-actions
|
|
/>
|
|
<ProjectPageModelsCard
|
|
v-for="model in models"
|
|
:key="model.id"
|
|
:model="model"
|
|
:project="project"
|
|
show-versions
|
|
show-actions
|
|
:project-id="project.id"
|
|
height="h-48"
|
|
@click="router.push(modelRoute(project.id, model.id))"
|
|
/>
|
|
<ProjectCardImportFileArea
|
|
v-if="hasNoModels"
|
|
:project-id="project.id"
|
|
class="h-28 col-span-4"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
import { FormButton } from '@speckle/ui-components'
|
|
import type { ProjectDashboardItemFragment } from '~~/lib/common/generated/gql/graphql'
|
|
import {
|
|
projectRoute,
|
|
allProjectModelsRoute,
|
|
modelRoute
|
|
} from '~~/lib/common/helpers/route'
|
|
import { useGeneralProjectPageUpdateTracking } from '~~/lib/projects/composables/projectPages'
|
|
import { ChevronRightIcon } from '@heroicons/vue/20/solid'
|
|
|
|
const props = defineProps<{
|
|
project: ProjectDashboardItemFragment
|
|
}>()
|
|
|
|
const router = useRouter()
|
|
|
|
const projectId = computed(() => props.project.id)
|
|
|
|
const updatedAt = computed(() => {
|
|
return {
|
|
full: formattedFullDate(props.project.updatedAt),
|
|
relative: formattedRelativeDate(props.project.updatedAt, { prefix: true })
|
|
}
|
|
})
|
|
|
|
// Tracking updates to project, its models and versions
|
|
useGeneralProjectPageUpdateTracking(
|
|
{ projectId },
|
|
{ redirectHomeOnProjectDeletion: false }
|
|
)
|
|
|
|
const teamUsers = computed(() => props.project.team.map((t) => t.user))
|
|
const pendingModels = computed(() => props.project.pendingImportedModels)
|
|
const models = computed(() => {
|
|
const items = props.project.models?.items || []
|
|
return items.slice(0, Math.max(0, 3 - pendingModels.value.length))
|
|
})
|
|
|
|
const hasNoModels = computed(() => !models.value.length && !pendingModels.value.length)
|
|
const modelItemTotalCount = computed(
|
|
() => props.project.models.totalCount + pendingModels.value.length
|
|
)
|
|
</script>
|