diff --git a/models/attachment/src/index.ts b/models/attachment/src/index.ts
index a81b312ed0..274cc3dffa 100644
--- a/models/attachment/src/index.ts
+++ b/models/attachment/src/index.ts
@@ -64,11 +64,11 @@ export function createModel (builder: Builder): void {
presenter: attachment.component.AttachmentPresenter
})
- builder.mixin(attachment.class.Attachment, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(attachment.class.Attachment, core.class.Class, view.mixin.CollectionEditor, {
editor: attachment.component.Attachments
})
- builder.mixin(attachment.class.Photo, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(attachment.class.Photo, core.class.Class, view.mixin.CollectionEditor, {
editor: attachment.component.Photos
})
diff --git a/models/contact/src/index.ts b/models/contact/src/index.ts
index 12d1e7f8e7..d9f1c464b4 100644
--- a/models/contact/src/index.ts
+++ b/models/contact/src/index.ts
@@ -181,6 +181,14 @@ export function createModel (builder: Builder): void {
editor: contact.component.OrganizationEditor
})
+ builder.mixin(contact.class.Person, core.class.Class, view.mixin.AttributeEditor, {
+ editor: contact.component.PersonEditor
+ })
+
+ builder.mixin(contact.class.Employee, core.class.Class, view.mixin.AttributeEditor, {
+ editor: contact.component.PersonEditor
+ })
+
builder.mixin(contact.class.Channel, core.class.Class, view.mixin.AttributePresenter, {
presenter: contact.component.ChannelsPresenter
})
diff --git a/models/contact/src/plugin.ts b/models/contact/src/plugin.ts
index 90b5a09b97..bb175b2de9 100644
--- a/models/contact/src/plugin.ts
+++ b/models/contact/src/plugin.ts
@@ -35,6 +35,7 @@ export default mergeIds(contactId, contact, {
OrganizationPresenter: '' as AnyComponent,
Contacts: '' as AnyComponent,
EmployeeAccountPresenter: '' as AnyComponent,
+ PersonEditor: '' as AnyComponent,
OrganizationEditor: '' as AnyComponent
},
string: {
@@ -47,7 +48,6 @@ export default mergeIds(contactId, contact, {
Location: '' as IntlString,
Channel: '' as IntlString,
ChannelProvider: '' as IntlString,
- Person: '' as IntlString,
Employee: '' as IntlString,
Value: '' as IntlString,
Phone: '' as IntlString,
diff --git a/models/inventory/src/index.ts b/models/inventory/src/index.ts
index ce45442896..899927b8d0 100644
--- a/models/inventory/src/index.ts
+++ b/models/inventory/src/index.ts
@@ -86,7 +86,7 @@ export function createModel (builder: Builder): void {
presenter: inventory.component.VariantPresenter
})
- builder.mixin(inventory.class.Variant, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(inventory.class.Variant, core.class.Class, view.mixin.CollectionEditor, {
editor: inventory.component.Variants
})
diff --git a/models/lead/src/index.ts b/models/lead/src/index.ts
index 514fc41ba0..c1a87d4161 100644
--- a/models/lead/src/index.ts
+++ b/models/lead/src/index.ts
@@ -185,7 +185,7 @@ export function createModel (builder: Builder): void {
presenter: lead.component.LeadPresenter
})
- builder.mixin(lead.class.Lead, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(lead.class.Lead, core.class.Class, view.mixin.CollectionEditor, {
editor: lead.component.Leads
})
diff --git a/models/recruit/src/index.ts b/models/recruit/src/index.ts
index 02316989e0..fd0319af94 100644
--- a/models/recruit/src/index.ts
+++ b/models/recruit/src/index.ts
@@ -133,7 +133,7 @@ export function createModel (builder: Builder): void {
}
})
- builder.mixin(recruit.class.Applicant, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(recruit.class.Applicant, core.class.Class, view.mixin.CollectionEditor, {
editor: recruit.component.Applications
})
diff --git a/models/recruit/src/review.ts b/models/recruit/src/review.ts
index 06fea95bb0..c56ac6f4c2 100644
--- a/models/recruit/src/review.ts
+++ b/models/recruit/src/review.ts
@@ -43,7 +43,7 @@ export function createReviewModel (builder: Builder): void {
}
})
- builder.mixin(recruit.class.Review, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(recruit.class.Review, core.class.Class, view.mixin.CollectionEditor, {
editor: recruit.component.Reviews
})
@@ -135,7 +135,7 @@ function createTableViewlet (builder: Builder): void {
config: reviewTableConfig
})
- builder.mixin(recruit.class.Opinion, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(recruit.class.Opinion, core.class.Class, view.mixin.CollectionEditor, {
editor: recruit.component.Opinions
})
}
diff --git a/models/tags/src/index.ts b/models/tags/src/index.ts
index e1a5d6ae1f..5e5c8d0d76 100644
--- a/models/tags/src/index.ts
+++ b/models/tags/src/index.ts
@@ -84,7 +84,7 @@ export class TTagCategory extends TDoc implements TagCategory {
export function createModel (builder: Builder): void {
builder.createModel(TTagElement, TTagReference, TTagCategory)
- builder.mixin(tags.class.TagReference, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(tags.class.TagReference, core.class.Class, view.mixin.CollectionEditor, {
editor: tags.component.Tags
})
diff --git a/models/task/src/index.ts b/models/task/src/index.ts
index 35bbdd9c3f..06e415e555 100644
--- a/models/task/src/index.ts
+++ b/models/task/src/index.ts
@@ -39,7 +39,8 @@ import presentation from '@anticrm/model-presentation'
import view, { actionTemplates as viewTemplates, createAction, template } from '@anticrm/model-view'
import { IntlString } from '@anticrm/platform'
import { ViewAction } from '@anticrm/view'
-import type {
+import {
+ DOMAIN_STATE,
DoneState,
DoneStateTemplate,
Issue,
@@ -65,7 +66,6 @@ export { createKanbanTemplate, createSequence, taskOperation } from './migration
export { default } from './plugin'
export const DOMAIN_TASK = 'task' as Domain
-export const DOMAIN_STATE = 'state' as Domain
export const DOMAIN_KANBAN = 'kanban' as Domain
@Model(task.class.State, core.class.Doc, DOMAIN_STATE, [task.interface.DocWithRank])
@UX(task.string.TaskState, task.icon.TaskState, undefined, 'rank')
@@ -454,7 +454,7 @@ export function createModel (builder: Builder): void {
task.viewlet.Kanban
)
- builder.mixin(task.class.TodoItem, core.class.Class, view.mixin.AttributeEditor, {
+ builder.mixin(task.class.TodoItem, core.class.Class, view.mixin.CollectionEditor, {
editor: task.component.Todos
})
diff --git a/models/view/src/index.ts b/models/view/src/index.ts
index dac42cbabe..c0620be313 100644
--- a/models/view/src/index.ts
+++ b/models/view/src/index.ts
@@ -24,6 +24,7 @@ import type {
ActionCategory,
AttributeEditor,
AttributePresenter,
+ CollectionEditor,
HTMLPresenter,
IgnoreActions,
KeyBinding,
@@ -77,6 +78,11 @@ export class TAttributeEditor extends TClass implements AttributeEditor {
editor!: AnyComponent
}
+@Mixin(view.mixin.CollectionEditor, core.class.Class)
+export class TCollectionEditor extends TClass implements CollectionEditor {
+ editor!: AnyComponent
+}
+
@Mixin(view.mixin.AttributePresenter, core.class.Class)
export class TAttributePresenter extends TClass implements AttributePresenter {
presenter!: AnyComponent
@@ -210,6 +216,7 @@ export function createModel (builder: Builder): void {
builder.createModel(
TAttributeEditor,
TAttributePresenter,
+ TCollectionEditor,
TObjectEditor,
TViewletDescriptor,
TViewlet,
@@ -252,6 +259,10 @@ export function createModel (builder: Builder): void {
editor: view.component.NumberTypeEditor
})
+ builder.mixin(core.class.RefTo, core.class.Class, view.mixin.ObjectEditor, {
+ editor: view.component.RefEditor
+ })
+
builder.createDoc(
view.class.ActionCategory,
core.space.Model,
diff --git a/models/view/src/plugin.ts b/models/view/src/plugin.ts
index 340adcb963..36f5b859bb 100644
--- a/models/view/src/plugin.ts
+++ b/models/view/src/plugin.ts
@@ -77,7 +77,8 @@ export default mergeIds(viewId, view, {
StringTypeEditor: '' as AnyComponent,
BooleanTypeEditor: '' as AnyComponent,
NumberTypeEditor: '' as AnyComponent,
- DateTypeEditor: '' as AnyComponent
+ DateTypeEditor: '' as AnyComponent,
+ RefEditor: '' as AnyComponent
},
string: {
Table: '' as IntlString,
diff --git a/plugins/contact-resources/src/components/PersonEditor.svelte b/plugins/contact-resources/src/components/PersonEditor.svelte
new file mode 100644
index 0000000000..ba5ef76aa9
--- /dev/null
+++ b/plugins/contact-resources/src/components/PersonEditor.svelte
@@ -0,0 +1,30 @@
+
+
+
+
diff --git a/plugins/contact-resources/src/index.ts b/plugins/contact-resources/src/index.ts
index dc4f101c93..f942d786e9 100644
--- a/plugins/contact-resources/src/index.ts
+++ b/plugins/contact-resources/src/index.ts
@@ -37,6 +37,7 @@ import SocialEditor from './components/SocialEditor.svelte'
import contact from './plugin'
import EmployeeAccountPresenter from './components/EmployeeAccountPresenter.svelte'
import OrganizationEditor from './components/OrganizationEditor.svelte'
+import PersonEditor from './components/PersonEditor.svelte'
import OrganizationSelector from './components/OrganizationSelector.svelte'
export { Channels, ChannelsEditor, ContactPresenter, ChannelsView, OrganizationSelector, ChannelsDropdown }
@@ -58,6 +59,7 @@ async function queryContact (
export default async (): Promise => ({
component: {
+ PersonEditor,
OrganizationEditor,
ContactPresenter,
PersonPresenter,
diff --git a/plugins/contact-resources/src/plugin.ts b/plugins/contact-resources/src/plugin.ts
index 39e2611e76..520c102229 100644
--- a/plugins/contact-resources/src/plugin.ts
+++ b/plugins/contact-resources/src/plugin.ts
@@ -33,6 +33,7 @@ export default mergeIds(contactId, contact, {
CreateOrganizations: '' as IntlString,
Organizations: '' as IntlString,
Organization: '' as IntlString,
+ Person: '' as IntlString,
SelectFolder: '' as IntlString,
OrganizationsFolder: '' as IntlString,
PersonsFolder: '' as IntlString,
diff --git a/plugins/task-resources/src/components/TaskHeader.svelte b/plugins/task-resources/src/components/TaskHeader.svelte
index 31fb9982f1..879e2097ed 100644
--- a/plugins/task-resources/src/components/TaskHeader.svelte
+++ b/plugins/task-resources/src/components/TaskHeader.svelte
@@ -17,7 +17,6 @@
import contact from '@anticrm/contact'
import core, { Class, Doc, Mixin, Ref, RefTo } from '@anticrm/core'
import { AttributesBar, getClient, KeyedAttribute, UserBox } from '@anticrm/presentation'
- import { Label } from '@anticrm/ui'
import { Task } from '@anticrm/task'
import task from '../plugin'
import { DocAttributeBar } from '@anticrm/view-resources'
@@ -78,38 +77,10 @@
{:else}
-
-
+
{/if}