From db5cb7fba2e2ea69cf5734e3f8527bdcaa197fdf Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Mon, 27 Mar 2023 12:12:01 +0600 Subject: [PATCH] Fix fill defaults (#2832) Signed-off-by: Denis Bykhov --- .../ui/src/components/DropdownLabels.svelte | 10 ++++++-- .../src/components/CreateVacancy.svelte | 23 ++++++++----------- .../typeEditors/EnumTypeEditor.svelte | 1 + .../src/components/CreateIssue.svelte | 1 + .../src/components/EnumEditor.svelte | 2 ++ 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/packages/ui/src/components/DropdownLabels.svelte b/packages/ui/src/components/DropdownLabels.svelte index 750e4f0c4a..1e16582d05 100644 --- a/packages/ui/src/components/DropdownLabels.svelte +++ b/packages/ui/src/components/DropdownLabels.svelte @@ -29,6 +29,7 @@ export let items: DropdownTextItem[] export let multiselect = false export let selected: DropdownTextItem['id'] | DropdownTextItem['id'][] | undefined = multiselect ? [] : undefined + export let allowDeselect: boolean = false export let kind: ButtonKind = 'no-border' export let size: ButtonSize = 'small' @@ -70,8 +71,13 @@ container, (result) => { if (result) { - selected = result - dispatch('selected', result) + if (allowDeselect && selected === result) { + selected = undefined + dispatch('selected', undefined) + } else { + selected = result + dispatch('selected', result) + } } opened = false mgr?.setFocusPos(focusIndex) diff --git a/plugins/recruit-resources/src/components/CreateVacancy.svelte b/plugins/recruit-resources/src/components/CreateVacancy.svelte index 3aaffde853..627cce7fd9 100644 --- a/plugins/recruit-resources/src/components/CreateVacancy.svelte +++ b/plugins/recruit-resources/src/components/CreateVacancy.svelte @@ -82,20 +82,20 @@ return name === '' && templateId !== undefined } - let changed = false - const client = getClient() const hierarchy = client.getHierarchy() const templateQ = createQuery() fillDefaults(hierarchy, vacancyData, recruit.class.Vacancy) - $: templateQ.query(task.class.KanbanTemplate, { _id: templateId }, (result) => { - const { _class, _id, description, ...templateData } = result[0] - vacancyData = { ...(templateData as unknown as Data), fullDescription: description } - if (appliedTemplateId !== templateId) { - fullDescription = description ?? '' - appliedTemplateId = templateId - } - }) + $: templateId && + templateQ.query(task.class.KanbanTemplate, { _id: templateId }, (result) => { + const { _class, _id, description, ...templateData } = result[0] + vacancyData = { ...(templateData as unknown as Data), fullDescription: description } + if (appliedTemplateId !== templateId) { + fullDescription = description ?? '' + appliedTemplateId = templateId + } + fillDefaults(hierarchy, vacancyData, recruit.class.Vacancy) + }) const issueTemplatesQ = createQuery() $: issueTemplatesQ.query(tracker.class.IssueTemplate, { 'relations._id': templateId }, async (result) => { @@ -267,9 +267,6 @@ bind:content={fullDescription} placeholder={recruit.string.FullDescription} emphasized - on:changeContent={() => { - changed = true - }} /> {/key} diff --git a/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte b/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte index a112749d61..fbc6866125 100644 --- a/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte +++ b/plugins/setting-resources/src/components/typeEditors/EnumTypeEditor.svelte @@ -85,6 +85,7 @@ label={setting.string.SelectAValue} kind={'no-border'} size={'small'} + allowDeselect {type} value={defaultValue ?? ''} onChange={(e) => { diff --git a/plugins/tracker-resources/src/components/CreateIssue.svelte b/plugins/tracker-resources/src/components/CreateIssue.svelte index fb824959fd..65f77b4a16 100644 --- a/plugins/tracker-resources/src/components/CreateIssue.svelte +++ b/plugins/tracker-resources/src/components/CreateIssue.svelte @@ -243,6 +243,7 @@ appliedTemplateId = templateId const tagElements = await client.findAll(tags.class.TagElement, { _id: { $in: labels } }) object.labels = tagElements.map(tagAsRef) + fillDefaults(hierarchy, object, tracker.class.Issue) } $: template && updateTemplate(template) diff --git a/plugins/view-resources/src/components/EnumEditor.svelte b/plugins/view-resources/src/components/EnumEditor.svelte index 0192b1ce89..e21f51f19f 100644 --- a/plugins/view-resources/src/components/EnumEditor.svelte +++ b/plugins/view-resources/src/components/EnumEditor.svelte @@ -25,6 +25,7 @@ export let onChange: (value: string) => void export let kind: ButtonKind = 'link' export let size: ButtonSize = 'large' + export let allowDeselect: boolean = false let items: DropdownTextItem[] = [] @@ -54,6 +55,7 @@ {size} {kind} width={'100%'} + {allowDeselect} autoSelect={false} on:selected={(e) => { onChange(e.detail)