platform/plugins/contact-resources/src/components/EmployeeAttributePresenter.svelte
Alexander Platov ee0754422d
UBER-538: update ListView layout. Subissues, related issues. (#3467)
Signed-off-by: Alexander Platov <sas_lord@mail.ru>
2023-06-29 11:29:12 +07:00

63 lines
1.8 KiB
Svelte

<script lang="ts">
import { Employee } from '@hcengineering/contact'
import { Ref } from '@hcengineering/core'
import { ButtonKind, IconSize } from '@hcengineering/ui'
import { PersonLabelTooltip } from '..'
import contact from '../plugin'
import { employeeByIdStore } from '../utils'
import AssigneeBox from './AssigneeBox.svelte'
import EmployeePresenter from './EmployeePresenter.svelte'
export let value: Ref<Employee> | null | undefined
export let kind: ButtonKind = 'link'
export let tooltipLabels: PersonLabelTooltip | undefined = undefined
export let onChange: ((value: Ref<Employee>) => void) | undefined = undefined
export let colorInherit: boolean = false
export let accent: boolean = false
export let inline: boolean = false
export let shouldShowName: boolean = true
export let avatarSize: IconSize = kind === 'list-header' ? 'smaller' : 'x-small'
$: employee = value ? $employeeByIdStore.get(value) : undefined
function getValue (
employee: Employee | undefined,
value: Ref<Employee> | null | undefined
): Employee | null | undefined {
if (value === undefined || value === null) {
return value
}
return employee
}
</script>
{#if onChange !== undefined}
<AssigneeBox
label={contact.string.Employee}
{value}
size={'medium'}
kind={'link'}
showNavigate={false}
justify={'left'}
{shouldShowName}
{avatarSize}
on:change={({ detail }) => onChange?.(detail)}
on:accent-color
/>
{:else}
<EmployeePresenter
value={getValue(employee, value)}
{inline}
{tooltipLabels}
disabled
shouldShowAvatar
shouldShowPlaceholder
defaultName={contact.string.NotSpecified}
shouldShowName={shouldShowName ? kind !== 'list' : false}
{avatarSize}
{colorInherit}
{accent}
on:accent-color
/>
{/if}