platform/plugins/contact-resources/src/components/EmployeePresenter.svelte

57 lines
1.5 KiB
Svelte
Raw Normal View History

<script lang="ts">
import { Employee } from '@anticrm/contact'
import EmployeeStatusPresenter from './EmployeeStatusPresenter.svelte'
import PersonPresenter from '../components/PersonPresenter.svelte'
import { showPopup } from '@anticrm/ui'
import EmployeePreviewPopup from './EmployeePreviewPopup.svelte'
import { WithLookup } from '@anticrm/core'
2022-06-07 11:29:35 +00:00
import { IntlString } from '@anticrm/platform'
2022-06-07 08:57:05 +00:00
export let value: WithLookup<Employee> | null | undefined
2022-06-07 11:29:35 +00:00
export let tooltipLabels: { personLabel: IntlString; placeholderLabel?: IntlString } | undefined = undefined
export let shouldShowAvatar: boolean = true
export let shouldShowName: boolean = true
export let onEmployeeEdit: ((event: MouseEvent) => void) | undefined = undefined
let container: HTMLElement
const onEdit = () => {
2022-06-07 08:57:05 +00:00
if (value) {
showPopup(
EmployeePreviewPopup,
{
employeeId: value._id
},
container
)
}
}
$: handlePersonEdit = onEmployeeEdit ?? onEdit
</script>
<div bind:this={container} class="flex-row-center clear-mins">
<div class="over-underline" class:pr-2={shouldShowName}>
2022-06-07 08:57:05 +00:00
<PersonPresenter
{value}
2022-06-07 11:29:35 +00:00
{tooltipLabels}
2022-06-07 08:57:05 +00:00
onEdit={handlePersonEdit}
{shouldShowAvatar}
{shouldShowName}
shouldShowPlaceholder={true}
/>
</div>
2022-06-07 08:57:05 +00:00
{#if value?.$lookup?.statuses?.length}
<div class="status content-color">
<EmployeeStatusPresenter employee={value} />
</div>
{/if}
</div>
<style lang="scss">
.status {
font-weight: 400;
font-size: 0.875rem;
}
</style>