From fdeba8ea651d0b689eb89b3f81d2641e836c5c53 Mon Sep 17 00:00:00 2001 From: Sergei Ogorelkov Date: Wed, 14 Dec 2022 10:46:51 +0600 Subject: [PATCH] Add object factory for the "TagElement" component (#2435) --- models/tags/src/index.ts | 4 ++++ plugins/tags-resources/src/index.ts | 8 +++++++- plugins/tags-resources/src/plugin.ts | 3 ++- .../src/components/list/SortableList.svelte | 2 +- plugins/view/src/index.ts | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/models/tags/src/index.ts b/models/tags/src/index.ts index 555ace1050..2209c7f27e 100644 --- a/models/tags/src/index.ts +++ b/models/tags/src/index.ts @@ -97,6 +97,10 @@ export class TTagCategory extends TDoc implements TagCategory { export function createModel (builder: Builder): void { builder.createModel(TTagElement, TTagReference, TTagCategory) + builder.mixin(tags.class.TagElement, core.class.Class, view.mixin.ObjectFactory, { + create: tags.function.CreateTagElement + }) + builder.mixin(tags.class.TagReference, core.class.Class, view.mixin.CollectionEditor, { editor: tags.component.Tags, inlineEditor: tags.component.TagsAttributeEditor diff --git a/plugins/tags-resources/src/index.ts b/plugins/tags-resources/src/index.ts index 15c57f4e6b..025385a825 100644 --- a/plugins/tags-resources/src/index.ts +++ b/plugins/tags-resources/src/index.ts @@ -30,6 +30,7 @@ import TagsFilter from './components/TagsFilter.svelte' import TagsAttributeEditor from './components/TagsAttributeEditor.svelte' import TagsEditorPopup from './components/TagsEditorPopup.svelte' import LabelsPresenter from './components/LabelsPresenter.svelte' +import CreateTagElement from './components/CreateTagElement.svelte' import { ObjQueryType } from '@hcengineering/core' import { getRefs } from './utils' import { Filter } from '@hcengineering/view' @@ -44,6 +45,10 @@ export async function tagsNinResult (filter: Filter, onUpdate: () => void): Prom return { $nin: result } } +export async function createTagElement (props: Record = {}): Promise { + showPopup(CreateTagElement, props, 'top') +} + export default async (): Promise => ({ component: { Tags, @@ -69,6 +74,7 @@ export default async (): Promise => ({ }, function: { FilterTagsInResult: tagsInResult, - FilterTagsNinResult: tagsNinResult + FilterTagsNinResult: tagsNinResult, + CreateTagElement: createTagElement } }) diff --git a/plugins/tags-resources/src/plugin.ts b/plugins/tags-resources/src/plugin.ts index 572dd0b8b0..1408854f14 100644 --- a/plugins/tags-resources/src/plugin.ts +++ b/plugins/tags-resources/src/plugin.ts @@ -55,6 +55,7 @@ export default mergeIds(tagsId, tags, { }, function: { FilterTagsInResult: '' as Resource<(filter: Filter, onUpdate: () => void) => Promise>>, - FilterTagsNinResult: '' as Resource<(filter: Filter, onUpdate: () => void) => Promise>> + FilterTagsNinResult: '' as Resource<(filter: Filter, onUpdate: () => void) => Promise>>, + CreateTagElement: '' as Resource<(props?: Record) => Promise> } }) diff --git a/plugins/view-resources/src/components/list/SortableList.svelte b/plugins/view-resources/src/components/list/SortableList.svelte index 6a8fe2556d..744027d780 100644 --- a/plugins/view-resources/src/components/list/SortableList.svelte +++ b/plugins/view-resources/src/components/list/SortableList.svelte @@ -122,7 +122,7 @@ async function create () { if (objectFactory?.create) { const createFn = await getResource(objectFactory.create) - await createFn() + await createFn(query) return } diff --git a/plugins/view/src/index.ts b/plugins/view/src/index.ts index 3823690e6e..ee86c6d2c4 100644 --- a/plugins/view/src/index.ts +++ b/plugins/view/src/index.ts @@ -377,7 +377,7 @@ export interface BuildModelOptions { */ export interface ObjectFactory extends Class { component?: AnyComponent - create?: Resource<() => Promise> + create?: Resource<(props?: Record) => Promise> } /**