mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-29 13:05:08 +02:00
Default values (#2792)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user