Default values (#2792)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov
2023-03-21 23:08:45 +07:00
committed by GitHub
parent 79fbb9e6f3
commit 95ea0aab98
16 changed files with 118 additions and 31 deletions
@@ -36,6 +36,7 @@
let name: string
let type: Type<PropertyType> | undefined
let index: IndexKind | undefined
let defaultValue: any | undefined
let is: AnyComponent | undefined
const client = getClient()
const hierarchy = client.getHierarchy()
@@ -49,7 +50,8 @@
name: name.trim().replace('/', '').replace(' ', '') + '_' + generateId(),
label: getEmbeddedLabel(name),
isCustom: true,
type
type,
defaultValue
}
if (index !== undefined) {
data.index = index
@@ -89,6 +91,7 @@
const handleChange = (e: any) => {
type = e.detail?.type
index = e.detail?.index
defaultValue = e.detail?.defaultValue
}
</script>
@@ -26,6 +26,7 @@
let name: string
let type: Type<PropertyType> | undefined = attribute.type
let index: IndexKind | undefined = attribute.index
let defaultValue: any | undefined = attribute.defaultValue
let is: AnyComponent | undefined
const client = getClient()
@@ -40,6 +41,9 @@
if (newLabel !== attribute.label) {
update.label = newLabel
}
if (defaultValue !== attribute.defaultValue) {
update.defaultValue = defaultValue
}
if (!exist) {
if (index !== attribute.index) {
update.index = index
@@ -83,6 +87,7 @@
const handleChange = (e: any) => {
type = e.detail?.type
index = e.detail?.index
defaultValue = e.detail?.defaultValue
}
</script>
@@ -119,6 +124,7 @@
{is}
props={{
type,
defaultValue,
editable: !exist
}}
on:change={handleChange}
@@ -17,6 +17,7 @@
import { TypeEnum } from '@hcengineering/model'
import presentation, { getClient } from '@hcengineering/presentation'
import { Button, Label, showPopup } from '@hcengineering/ui'
import { EnumEditor } from '@hcengineering/view-resources'
import { createEventDispatcher } from 'svelte'
import setting from '../../plugin'
import EnumSelect from './EnumSelect.svelte'
@@ -24,11 +25,12 @@
export let type: EnumOf | undefined
export let editable: boolean = true
export let value: Enum | undefined
export let defaultValue: string | undefined
const client = getClient()
const dispatch = createEventDispatcher()
$: value && dispatch('change', { type: TypeEnum(value._id) })
$: value && changeEnum(value)
$: ref = value?._id ?? type?.of
const create = {
@@ -36,6 +38,11 @@
component: setting.component.EditEnum
}
function changeEnum (value: Enum) {
type = TypeEnum(value._id)
dispatch('change', { type, defaultValue })
}
async function updateSelected (ref: Ref<Enum> | undefined) {
value = ref !== undefined ? await client.findOne(core.class.Enum, { _id: ref }) : undefined
}
@@ -48,24 +55,42 @@
}
</script>
<div class="flex-row-center flex-grow">
<Label label={core.string.Enum} />
<div class="ml-4">
{#if editable}
<EnumSelect label={core.string.Enum} bind:value {create} />
{:else if value}
{value.name}
<div>
<div class="flex-row-center flex-grow">
<Label label={core.string.Enum} />
<div class="ml-4">
{#if editable}
<EnumSelect label={core.string.Enum} bind:value {create} />
{:else if value}
{value.name}
{/if}
</div>
{#if value}
<div class="ml-2">
<Button
icon={setting.icon.Setting}
kind={'no-border'}
size={'small'}
showTooltip={{ label: presentation.string.Edit }}
on:click={edit}
/>
</div>
{/if}
</div>
{#if value}
<div class="ml-2">
<Button
icon={setting.icon.Setting}
kind={'no-border'}
size={'small'}
showTooltip={{ label: presentation.string.Edit }}
on:click={edit}
/>
{#if value && type}
<div class="flex-row-center mt-2">
<Label label={setting.string.DefaultValue} />
<div class="ml-2">
<EnumEditor
label={setting.string.DefaultValue}
{type}
value={defaultValue ?? ''}
onChange={(e) => {
defaultValue = e
dispatch('change', { type, defaultValue })
}}
/>
</div>
</div>
{/if}
</div>