diff --git a/models/controlled-documents/src/index.ts b/models/controlled-documents/src/index.ts index 0885da5aee..1b15efadc0 100644 --- a/models/controlled-documents/src/index.ts +++ b/models/controlled-documents/src/index.ts @@ -13,60 +13,60 @@ // limitations under the License. // -import documentsPlugin, { - documentsId, - type Document, - type DocumentSpace, - DocumentState -} from '@hcengineering/controlled-documents' import activity from '@hcengineering/activity' import contact from '@hcengineering/contact' +import documentsPlugin, { + documentsId, + DocumentState, + type Document, + type DocumentSpace +} from '@hcengineering/controlled-documents' import { type Builder } from '@hcengineering/model' import chunter from '@hcengineering/model-chunter' import core from '@hcengineering/model-core' +import { generateClassNotificationTypes } from '@hcengineering/model-notification' +import presentation from '@hcengineering/model-presentation' +import print from '@hcengineering/model-print' import request from '@hcengineering/model-request' import tracker from '@hcengineering/model-tracker' -import { generateClassNotificationTypes } from '@hcengineering/model-notification' import view, { classPresenter, createAction } from '@hcengineering/model-view' -import presentation from '@hcengineering/model-presentation' import workbench from '@hcengineering/model-workbench' import notification from '@hcengineering/notification' import setting from '@hcengineering/setting' import tags from '@hcengineering/tags' -import print from '@hcengineering/model-print' import textEditor from '@hcengineering/text-editor' -import documents from './plugin' +import { type Class, type Doc, type Ref } from '@hcengineering/core' +import { type Action } from '@hcengineering/view' import { definePermissions } from './permissions' +import documents from './plugin' +import { defineSpaceType } from './spaceType' import { + TChangeControl, + TControlledDocument, + TControlledDocumentSnapshot, + TDocument, + TDocumentApprovalRequest, + TDocumentCategory, + TDocumentComment, + TDocumentMeta, + TDocumentRequest, + TDocumentReviewRequest, + TDocumentSnapshot, TDocumentSpace, TDocumentSpaceType, TDocumentSpaceTypeDescriptor, - TExternalSpace, - TOrgSpace, - TDocumentMeta, - TProjectDocument, - TProjectMeta, - TProject, - TDocument, - TDocumentSnapshot, - TControlledDocumentSnapshot, - THierarchyDocument, TDocumentTemplate, TDocumentTraining, - TDocumentCategory, - TControlledDocument, - TChangeControl, - TDocumentRequest, - TDocumentReviewRequest, - TDocumentApprovalRequest, - TTypeDocumentState, + TExternalSpace, + THierarchyDocument, + TOrgSpace, + TProject, + TProjectDocument, + TProjectMeta, TTypeControlledDocumentState, - TDocumentComment + TTypeDocumentState } from './types' -import { defineSpaceType } from './spaceType' -import { type Class, type Doc, type Ref } from '@hcengineering/core' -import { type Action } from '@hcengineering/view' export { documentsId } from '@hcengineering/controlled-documents/src/index' export * from './types' @@ -105,6 +105,10 @@ export function createModel (builder: Builder): void { titleProvider: documents.function.ControlledDocumentTitleProvider }) + builder.mixin(documents.class.DocumentMeta, core.class.Class, view.mixin.ObjectTitle, { + titleProvider: documents.function.ControlledDocumentTitleProvider + }) + builder.mixin(documents.class.DocumentApprovalRequest, core.class.Class, view.mixin.ObjectPresenter, { presenter: documents.component.DocumentApprovalRequestPresenter }) diff --git a/models/recruit/src/index.ts b/models/recruit/src/index.ts index e3ff94ae82..a80c9bac20 100644 --- a/models/recruit/src/index.ts +++ b/models/recruit/src/index.ts @@ -594,6 +594,13 @@ export function createModel (builder: Builder): void { key: 'status', props: { kind: 'list', size: 'small', shouldShowName: false } }, + { + key: 'kind', + label: task.string.TaskType, + presenter: task.component.TaskTypeListPresenter, + props: { kind: 'list', size: 'small', justify: 'center' }, + displayProps: { key: 'applicant_kind' } + }, { key: '$lookup.attachedTo', presenter: contact.component.PersonPresenter, diff --git a/models/task/src/index.ts b/models/task/src/index.ts index 7f7e2e40f7..5ef7c5f540 100644 --- a/models/task/src/index.ts +++ b/models/task/src/index.ts @@ -513,11 +513,6 @@ export function createModel (builder: Builder): void { id: 'automations', label: setting.string.Automations, component: task.component.ProjectTypeAutomationsSectionEditor - }, - { - id: 'collections', - label: setting.string.Collections, - component: task.component.ProjectTypeCollectionsSectionEditor } ], subEditors: { diff --git a/models/task/src/plugin.ts b/models/task/src/plugin.ts index 3e6d880bdc..4e828ee4e4 100644 --- a/models/task/src/plugin.ts +++ b/models/task/src/plugin.ts @@ -55,6 +55,7 @@ export default mergeIds(taskId, task, { TypesView: '' as AnyComponent, StateIconPresenter: '' as AnyComponent, TaskTypePresenter: '' as AnyComponent, + TaskTypeListPresenter: '' as AnyComponent, ProjectTypePresenter: '' as AnyComponent, TaskTypeClassPresenter: '' as AnyComponent, ProjectTypeClassPresenter: '' as AnyComponent diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index 7a52ae250f..e8f1d4f6ab 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -741,7 +741,8 @@ function defineSpaceType (builder: Builder): void { description: tracker.string.Issue, icon: tracker.icon.Issue, name: tracker.string.Issue, - statusCategoriesFunc: tracker.function.GetIssueStatusCategories + statusCategoriesFunc: tracker.function.GetIssueStatusCategories, + openTasks: tracker.function.OpenIssuesOfTaskType }, tracker.descriptors.Issue ) diff --git a/models/tracker/src/viewlets.ts b/models/tracker/src/viewlets.ts index 993b34324c..e456a211c0 100644 --- a/models/tracker/src/viewlets.ts +++ b/models/tracker/src/viewlets.ts @@ -105,13 +105,13 @@ export function issueConfig ( props: { kind: 'list', size: 'small', justify: 'center' }, displayProps: { key: key + 'status' } }, - // { - // key: 'kind', - // label: task.string.TaskType, - // presenter: task.component.TaskTypePresenter, - // props: { kind: 'list', size: 'small', justify: 'center' }, - // displayProps: { key: key + 'kind' } - // }, + { + key: 'kind', + label: task.string.TaskType, + presenter: task.component.TaskTypeListPresenter, + props: { kind: 'list', size: 'small', justify: 'center' }, + displayProps: { key: key + 'kind' } + }, { key: '', label: tracker.string.Title, diff --git a/packages/text/src/markup/__tests__/dsl.test.ts b/packages/text/src/markup/__tests__/dsl.test.ts index 2458a48b36..69762fa291 100644 --- a/packages/text/src/markup/__tests__/dsl.test.ts +++ b/packages/text/src/markup/__tests__/dsl.test.ts @@ -21,7 +21,7 @@ describe('dsl', () => { ) ) expect(jsonToHTML(doc)).toEqual( - '

Hello, @World

Check out this link.

' + '

Hello, @World

Check out this link.

' ) }) }) diff --git a/packages/text/src/nodes/reference.ts b/packages/text/src/nodes/reference.ts index 6e75cfcffc..c333371095 100644 --- a/packages/text/src/nodes/reference.ts +++ b/packages/text/src/nodes/reference.ts @@ -15,10 +15,18 @@ import { Node, mergeAttributes } from '@tiptap/core' import { getDataAttribute } from './utils' +import { Class, Doc, Ref } from '@hcengineering/core' + +export interface ReferenceNodeProps { + id: Ref + objectclass: Ref> + label: string +} export interface ReferenceOptions { - renderLabel: (props: { options: ReferenceOptions, node: any }) => string - suggestion: { char: string } + renderLabel: (props: { options: ReferenceOptions, props: ReferenceNodeProps }) => string + suggestion: { char?: string } + HTMLAttributes: Record } /** @@ -28,23 +36,26 @@ export const ReferenceNode = Node.create({ name: 'reference', group: 'inline', inline: true, + selectable: true, + atom: true, + draggable: true, addAttributes () { return { id: getDataAttribute('id'), objectclass: getDataAttribute('objectclass'), - label: getDataAttribute('label'), - class: { default: null } + label: getDataAttribute('label') } }, addOptions () { return { - renderLabel ({ options, node }) { + renderLabel ({ options, props }) { // eslint-disable-next-line - return `${options.suggestion.char}${node.attrs.label ?? node.attrs.id}` + return `${options.suggestion.char}${props.label ?? props.id}` }, - suggestion: { char: '@' } + suggestion: { char: '@' }, + HTMLAttributes: {} } }, @@ -72,21 +83,25 @@ export const ReferenceNode = Node.create({ }, renderHTML ({ node, HTMLAttributes }) { - const options = this.options return [ 'span', mergeAttributes( { - 'data-type': this.name + 'data-type': this.name, + class: 'antiMention' }, + this.options.HTMLAttributes, HTMLAttributes ), - this.options.renderLabel({ options, node }) + this.options.renderLabel({ + options: this.options, + props: node.attrs as ReferenceNodeProps + }) ] }, renderText ({ node }) { const options = this.options - return options.renderLabel({ options, node }) + return options.renderLabel({ options, props: node.attrs as ReferenceNodeProps }) } }) diff --git a/packages/ui/src/components/DropdownLabelsIntl.svelte b/packages/ui/src/components/DropdownLabelsIntl.svelte index 878ad60936..a77a974f0b 100644 --- a/packages/ui/src/components/DropdownLabelsIntl.svelte +++ b/packages/ui/src/components/DropdownLabelsIntl.svelte @@ -39,6 +39,8 @@ export let labelDirection: TooltipAlignment | undefined = undefined export let shouldUpdateUndefined: boolean = true export let minW0 = true + export let focusIndex: number = -1 + export let dataId: string | undefined = undefined let container: HTMLElement let opened: boolean = false @@ -78,6 +80,8 @@