diff --git a/models/all/src/version.json b/models/all/src/version.json index b5f2c03606..8e3356c42e 100644 --- a/models/all/src/version.json +++ b/models/all/src/version.json @@ -1 +1 @@ -{ "major": 0, "minor": 6, "patch": 120 } +{ "major": 0, "minor": 6, "patch": 130 } diff --git a/models/presentation/src/index.ts b/models/presentation/src/index.ts index f5a0491fca..a71371e1bf 100644 --- a/models/presentation/src/index.ts +++ b/models/presentation/src/index.ts @@ -18,9 +18,14 @@ import { Builder, Model } from '@hcengineering/model' import core, { TDoc } from '@hcengineering/model-core' import { Asset, IntlString, Resource } from '@hcengineering/platform' // Import types to prevent .svelte components to being exposed to type typescript. -import { ObjectSearchCategory, ObjectSearchFactory } from '@hcengineering/presentation/src/types' +import { + ComponentPointExtension, + ObjectSearchCategory, + ObjectSearchFactory +} from '@hcengineering/presentation/src/types' import presentation from './plugin' import { PresentationMiddlewareCreator, PresentationMiddlewareFactory } from '@hcengineering/presentation' +import { AnyComponent, ComponentExtensionId } from '@hcengineering/ui' export { presentationId } from '@hcengineering/presentation/src/plugin' export { default } from './plugin' @@ -40,6 +45,14 @@ export class TPresentationMiddlewareFactory extends TDoc implements Presentation createPresentationMiddleware!: Resource } -export function createModel (builder: Builder): void { - builder.createModel(TObjectSearchCategory, TPresentationMiddlewareFactory) +@Model(presentation.class.ComponentPointExtension, core.class.Doc, DOMAIN_MODEL) +export class TComponentPointExtension extends TDoc implements ComponentPointExtension { + extension!: ComponentExtensionId + component!: AnyComponent + props!: Record + order!: number +} + +export function createModel (builder: Builder): void { + builder.createModel(TObjectSearchCategory, TPresentationMiddlewareFactory, TComponentPointExtension) } diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index b61b7b90ea..e091619f7d 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -73,7 +73,7 @@ import { TimeSpendReport, trackerId } from '@hcengineering/tracker' -import { KeyBinding, ViewAction, ViewOptionsModel } from '@hcengineering/view' +import { BuildModelKey, KeyBinding, ViewAction, ViewOptionsModel } from '@hcengineering/view' import tracker from './plugin' import { generateClassNotificationTypes } from '@hcengineering/model-notification' @@ -425,6 +425,121 @@ export function createModel (builder: Builder): void { TProjectIssueTargetOptions ) + function issueConfig ( + key: string = '', + compact: boolean = false, + milestone: boolean = true, + component: boolean = true + ): (BuildModelKey | string)[] { + return [ + { + key: '', + label: tracker.string.Priority, + presenter: tracker.component.PriorityEditor, + props: { type: 'priority', kind: 'list', size: 'small' }, + displayProps: { key: 'priority' } + }, + { + key: '', + label: tracker.string.Identifier, + presenter: tracker.component.IssuePresenter, + displayProps: { key: key + 'issue', fixed: 'left' } + }, + { + key: '', + label: tracker.string.Status, + presenter: tracker.component.StatusEditor, + props: { kind: 'list', size: 'small', justify: 'center' }, + displayProps: { key: key + 'status' } + }, + { + key: '', + label: tracker.string.Title, + presenter: tracker.component.TitlePresenter, + props: compact ? { shouldUseMargin: true, showParent: false } : {}, + displayProps: { key: key + 'title' } + }, + { + key: '', + label: tracker.string.SubIssues, + presenter: tracker.component.SubIssuesSelector, + props: {} + }, + { key: 'comments', displayProps: { key: key + 'comments', suffix: true } }, + { key: 'attachments', displayProps: { key: key + 'attachments', suffix: true } }, + { key: '', displayProps: { grow: true } }, + { + key: 'labels', + presenter: tags.component.LabelsPresenter, + displayProps: { compression: true }, + props: { kind: 'list', full: false } + }, + ...(milestone + ? [ + { + key: '', + label: tracker.string.Milestone, + presenter: tracker.component.MilestoneEditor, + props: { + kind: 'list', + size: 'small', + shouldShowPlaceholder: false + }, + displayProps: { + key: key + 'milestone', + excludeByKey: 'milestone', + compression: true + } + } + ] + : []), + ...(component + ? [ + { + key: '', + label: tracker.string.Component, + presenter: tracker.component.ComponentEditor, + props: { + kind: 'list', + size: 'small', + shouldShowPlaceholder: false + }, + displayProps: { + key: key + 'component', + excludeByKey: 'component', + compression: true + } + } + ] + : []), + { + key: '', + label: tracker.string.DueDate, + presenter: tracker.component.DueDatePresenter, + displayProps: { key: key + 'dueDate', compression: true }, + props: { kind: 'list' } + }, + { + key: '', + label: tracker.string.Estimation, + presenter: tracker.component.EstimationEditor, + props: { kind: 'list', size: 'small' }, + displayProps: { key: key + 'estimation', fixed: 'left', dividerBefore: true, optional: true } + }, + { + key: 'modifiedOn', + presenter: tracker.component.ModificationDatePresenter, + displayProps: { key: key + 'modified', fixed: 'left', dividerBefore: true } + }, + { + key: 'assignee', + presenter: tracker.component.AssigneeEditor, + displayProps: { key: 'assignee', fixed: 'right' }, + props: { kind: 'list', shouldShowName: false, avatarSize: 'x-small' } + } + ] + } + builder.createDoc( view.class.Viewlet, core.space.Model, @@ -453,107 +568,7 @@ export function createModel (builder: Builder): void { 'modifiedBy' ] }, - config: [ - { - key: '', - label: tracker.string.Priority, - presenter: tracker.component.PriorityEditor, - props: { type: 'priority', kind: 'list', size: 'small' }, - displayProps: { key: 'priority' } - }, - { - key: '', - label: tracker.string.Identifier, - presenter: tracker.component.IssuePresenter, - displayProps: { key: 'issue', fixed: 'left' } - }, - { - key: '', - label: tracker.string.Status, - presenter: tracker.component.StatusEditor, - props: { kind: 'list', size: 'small', justify: 'center' }, - displayProps: { - key: 'status' - } - }, - { - key: '', - label: tracker.string.Title, - presenter: tracker.component.TitlePresenter, - props: {}, - displayProps: { key: 'title' } - }, - { - key: '', - label: tracker.string.SubIssues, - presenter: tracker.component.SubIssuesSelector, - props: {} - }, - { key: 'comments', displayProps: { key: 'comments', suffix: true } }, - { key: 'attachments', displayProps: { key: 'attachments', suffix: true } }, - { key: '', displayProps: { grow: true } }, - { - key: 'labels', - presenter: tags.component.LabelsPresenter, - displayProps: { compression: true }, - props: { kind: 'list', full: false } - }, - { - key: '', - label: tracker.string.Milestone, - presenter: tracker.component.MilestoneEditor, - props: { - kind: 'list', - size: 'small', - shouldShowPlaceholder: false - }, - displayProps: { - key: 'milestone', - excludeByKey: 'milestone', - compression: true - } - }, - { - key: '', - label: tracker.string.Component, - presenter: tracker.component.ComponentEditor, - props: { - kind: 'list', - size: 'small', - shouldShowPlaceholder: false - }, - displayProps: { - key: 'component', - excludeByKey: 'component', - compression: true - } - }, - { - key: '', - label: tracker.string.DueDate, - presenter: tracker.component.DueDatePresenter, - displayProps: { key: 'dueDate', compression: true }, - props: { kind: 'list' } - }, - { - key: '', - label: tracker.string.Estimation, - presenter: tracker.component.EstimationEditor, - props: { kind: 'list', size: 'small' }, - displayProps: { key: 'estimation', fixed: 'left', dividerBefore: true, optional: true } - }, - { - key: 'modifiedOn', - presenter: tracker.component.ModificationDatePresenter, - displayProps: { key: 'modified', fixed: 'left', dividerBefore: true } - }, - { - key: 'assignee', - presenter: tracker.component.AssigneeEditor, - displayProps: { key: 'assignee', fixed: 'right' }, - props: { kind: 'list', shouldShowName: false, avatarSize: 'x-small' } - } - ] + config: issueConfig() }, tracker.viewlet.IssueList ) @@ -594,80 +609,93 @@ export function createModel (builder: Builder): void { 'modifiedBy' ] }, - config: [ - { - key: '', - label: tracker.string.Priority, - presenter: tracker.component.PriorityEditor, - props: { type: 'priority', kind: 'list', size: 'small' }, - displayProps: { key: 'subpriority' } - }, - { - key: '', - label: tracker.string.Issue, - presenter: tracker.component.IssuePresenter, - props: { type: 'issue' }, - displayProps: { key: 'subissue', fixed: 'left' } - }, - { - key: '', - label: tracker.string.Status, - presenter: tracker.component.StatusEditor, - props: { kind: 'list', size: 'small', justify: 'center' }, - displayProps: { key: 'substatus' } - }, - { - key: '', - label: tracker.string.Title, - presenter: tracker.component.TitlePresenter, - props: { shouldUseMargin: true, showParent: false } - }, - { key: '', label: tracker.string.SubIssues, presenter: tracker.component.SubIssuesSelector, props: {} }, - { key: '', displayProps: { grow: true } }, - { - key: '', - label: tracker.string.Milestone, - presenter: tracker.component.MilestoneEditor, - props: { - kind: 'list', - size: 'small', - shouldShowPlaceholder: false - }, - displayProps: { - excludeByKey: 'milestone', - compression: true - } - }, - { - key: '', - label: tracker.string.DueDate, - presenter: tracker.component.DueDatePresenter, - displayProps: { key: 'dueDate', compression: true }, - props: { kind: 'list', size: 'small' } - }, - { - key: '', - label: tracker.string.Estimation, - presenter: tracker.component.EstimationEditor, - displayProps: { optional: true }, - props: { kind: 'list', size: 'small' } - }, - { - key: 'modifiedOn', - presenter: tracker.component.ModificationDatePresenter, - displayProps: { key: 'submodified', fixed: 'right' } - }, - { - key: 'assignee', - presenter: tracker.component.AssigneeEditor, - displayProps: { key: 'assignee', fixed: 'right' }, - props: { kind: 'list', shouldShowName: false, avatarSize: 'x-small' } - } - ] + config: issueConfig('sub', true, true) }, tracker.viewlet.SubIssues ) + const milestoneIssueOptions: ViewOptionsModel = { + groupBy: ['status', 'assignee', 'priority', 'component', 'createdBy', 'modifiedBy'], + orderBy: [ + ['rank', SortingOrder.Ascending], + ['status', SortingOrder.Ascending], + ['priority', SortingOrder.Ascending], + ['modifiedOn', SortingOrder.Descending], + ['createdOn', SortingOrder.Descending], + ['dueDate', SortingOrder.Ascending] + ], + groupDepth: 1, + other: [showColorsViewOption] + } + + builder.createDoc( + view.class.Viewlet, + core.space.Model, + { + attachTo: tracker.class.Issue, + descriptor: view.viewlet.List, + viewOptions: milestoneIssueOptions, + variant: 'milestone', + configOptions: { + strict: true, + hiddenKeys: [ + 'priority', + 'number', + 'status', + 'title', + 'dueDate', + 'milestone', + 'estimation', + 'createdBy', + 'modifiedBy' + ] + }, + config: issueConfig('sub', true, false, true) + }, + tracker.viewlet.MilestoneIssuesList + ) + + const componentIssueOptions: ViewOptionsModel = { + groupBy: ['status', 'assignee', 'priority', 'milestone', 'createdBy', 'modifiedBy'], + orderBy: [ + ['rank', SortingOrder.Ascending], + ['status', SortingOrder.Ascending], + ['priority', SortingOrder.Ascending], + ['modifiedOn', SortingOrder.Descending], + ['createdOn', SortingOrder.Descending], + ['dueDate', SortingOrder.Ascending] + ], + groupDepth: 1, + other: [showColorsViewOption] + } + + builder.createDoc( + view.class.Viewlet, + core.space.Model, + { + attachTo: tracker.class.Issue, + descriptor: view.viewlet.List, + viewOptions: componentIssueOptions, + variant: 'component', + configOptions: { + strict: true, + hiddenKeys: [ + 'priority', + 'number', + 'status', + 'title', + 'dueDate', + 'component', + 'estimation', + 'createdBy', + 'modifiedBy' + ] + }, + config: issueConfig('sub', true, true, false) + }, + tracker.viewlet.ComponentIssuesList + ) + builder.createDoc( view.class.Viewlet, core.space.Model, diff --git a/packages/presentation/src/components/ComponentExtensions.svelte b/packages/presentation/src/components/ComponentExtensions.svelte new file mode 100644 index 0000000000..90986ae5d5 --- /dev/null +++ b/packages/presentation/src/components/ComponentExtensions.svelte @@ -0,0 +1,23 @@ + + +{#each extensions as extension} + +{/each} diff --git a/packages/presentation/src/index.ts b/packages/presentation/src/index.ts index 1f07fef21f..ed91b17807 100644 --- a/packages/presentation/src/index.ts +++ b/packages/presentation/src/index.ts @@ -42,6 +42,7 @@ export { default as NavLink } from './components/NavLink.svelte' export { default as IconForward } from './components/icons/Forward.svelte' export { default as Breadcrumbs } from './components/breadcrumbs/Breadcrumbs.svelte' export { default as BreadcrumbsElement } from './components/breadcrumbs/BreadcrumbsElement.svelte' +export { default as ComponentExtensions } from './components/ComponentExtensions.svelte' export { default } from './plugin' export * from './types' export * from './utils' diff --git a/packages/presentation/src/plugin.ts b/packages/presentation/src/plugin.ts index 521b637cb4..83d34f1c10 100644 --- a/packages/presentation/src/plugin.ts +++ b/packages/presentation/src/plugin.ts @@ -17,8 +17,8 @@ import { Class, Ref } from '@hcengineering/core' import type { Asset, IntlString, Metadata, Plugin } from '@hcengineering/platform' import { plugin } from '@hcengineering/platform' -import { ObjectSearchCategory } from './types' import { PresentationMiddlewareFactory } from './pipeline' +import { ComponentPointExtension, ObjectSearchCategory } from './types' /** * @public @@ -28,7 +28,8 @@ export const presentationId = 'presentation' as Plugin export default plugin(presentationId, { class: { ObjectSearchCategory: '' as Ref>, - PresentationMiddlewareFactory: '' as Ref> + PresentationMiddlewareFactory: '' as Ref>, + ComponentPointExtension: '' as Ref> }, string: { Create: '' as IntlString, diff --git a/packages/presentation/src/types.ts b/packages/presentation/src/types.ts index eba290d02d..850051c180 100644 --- a/packages/presentation/src/types.ts +++ b/packages/presentation/src/types.ts @@ -1,6 +1,6 @@ import { Client, Doc, RelatedDocument } from '@hcengineering/core' import { Asset, IntlString, Resource } from '@hcengineering/platform' -import { AnyComponent, AnySvelteComponent } from '@hcengineering/ui' +import { AnyComponent, AnySvelteComponent, ComponentExtensionId } from '@hcengineering/ui' export * from './components/breadcrumbs/types' @@ -47,3 +47,22 @@ export interface ObjectSearchCategory extends Doc { // Query for documents with pattern query: Resource } + +/** + * @public + * + * An component extension to various places of platform. + */ +export interface ComponentPointExtension extends Doc { + // Extension point we should extend. + extension: ComponentExtensionId + + // Component to be instantiated with at least following properties: + // size: 'tiny' | 'small' | 'medium' | 'large' + component: AnyComponent + + // Extra properties to be passed to the component + props?: Record + + order?: number // Positioning of elements, into groups. +} diff --git a/packages/ui/src/colors.ts b/packages/ui/src/colors.ts index efb9aced3d..260764989d 100644 --- a/packages/ui/src/colors.ts +++ b/packages/ui/src/colors.ts @@ -50,8 +50,8 @@ const defineAvatarColor = ( dark: boolean = false ): ColorDefinition => { const background = rgbToHex(hslToRgb(h / 360, s / 100, l / 100)) - const icon = rgbToHex(hslToRgb(h / 360, 0.5, 0.6)) - const title = rgbToHex(hslToRgb(h / 360, 0.9, 0.9)) + const icon: string | undefined = rgbToHex(hslToRgb(h / 360, 0.5, 0.6)) + const title: string | undefined = rgbToHex(hslToRgb(h / 360, 0.9, 0.9)) return { name, color: background, diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts index d52ec3993f..24eec5fce2 100644 --- a/packages/ui/src/types.ts +++ b/packages/ui/src/types.ts @@ -59,6 +59,13 @@ export type AnySvelteComponent = ComponentType export type Component = Resource export type AnyComponent = Resource +/** + * @public + * + * Component extension points. + */ +export type ComponentExtensionId = string & { __componentPointId: true } + /** * Allow to pass component with some predefined properties. * @public diff --git a/plugins/recruit-resources/src/components/review/CreateReview.svelte b/plugins/recruit-resources/src/components/review/CreateReview.svelte index 26c837a41e..6d059ccd48 100644 --- a/plugins/recruit-resources/src/components/review/CreateReview.svelte +++ b/plugins/recruit-resources/src/components/review/CreateReview.svelte @@ -64,13 +64,16 @@ modifiedOn: Date.now(), modifiedBy: '' as Ref, date: 0, - dueDate: undefined, + access: 'reader', + allDay: false, description, application, company, verdict: '', title, - participants: [currentUser.person] + participants: [currentUser.person], + eventId: '', + dueDate: 0 } const dispatch = createEventDispatcher() @@ -113,7 +116,10 @@ participants: doc.participants, company, application, - location + location, + access: 'reader', + allDay: false, + eventId: '' }) } diff --git a/plugins/recruit/src/index.ts b/plugins/recruit/src/index.ts index e8f7a55519..0432cce059 100644 --- a/plugins/recruit/src/index.ts +++ b/plugins/recruit/src/index.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import { Event } from '@hcengineering/calendar' +import { Calendar, Event } from '@hcengineering/calendar' import type { Channel, Organization, Person } from '@hcengineering/contact' import type { AttachedData, @@ -197,7 +197,7 @@ const recruit = plugin(recruitId, { }, space: { VacancyTemplates: '' as Ref, - Reviews: '' as Ref + Reviews: '' as Ref } }) diff --git a/plugins/tracker-assets/lang/en.json b/plugins/tracker-assets/lang/en.json index 0144c94451..8fa770182e 100644 --- a/plugins/tracker-assets/lang/en.json +++ b/plugins/tracker-assets/lang/en.json @@ -88,7 +88,7 @@ "SubIssues": "Sub-issues", "SubIssuesList": "Sub-issues ({subIssues})", "OpenSubIssues": "Open sub-issues", - "AddSubIssues": "{subIssues, plural, =1 {Add sub-issue} other {+ Add sub-issues}}", + "AddSubIssues": "Add sub-issue", "BlockedBy": "Blocked by", "RelatedTo": "Related to", "Comments": "Comments", diff --git a/plugins/tracker-assets/lang/ru.json b/plugins/tracker-assets/lang/ru.json index 2b96779290..3b3593ed59 100644 --- a/plugins/tracker-assets/lang/ru.json +++ b/plugins/tracker-assets/lang/ru.json @@ -88,7 +88,7 @@ "SubIssues": "Подзадачи", "SubIssuesList": "Подзадачи ({subIssues})", "OpenSubIssues": "Открыть подзадачи", - "AddSubIssues": "{subIssues, plural, =1 {Добавить подзадачу} other {+ Добавить подзадачи}}", + "AddSubIssues": "Добавить подзадачу", "BlockedBy": "Блокируется", "RelatedTo": "Связано", "Comments": "Комментарии", diff --git a/plugins/tracker-resources/src/components/components/EditComponent.svelte b/plugins/tracker-resources/src/components/components/EditComponent.svelte index 9456149ec6..d7acdc1960 100644 --- a/plugins/tracker-resources/src/components/components/EditComponent.svelte +++ b/plugins/tracker-resources/src/components/components/EditComponent.svelte @@ -2,9 +2,10 @@ import { AttachmentStyleBoxEditor } from '@hcengineering/attachment-resources' import { getClient } from '@hcengineering/presentation' import { Component } from '@hcengineering/tracker' - import { EditBox } from '@hcengineering/ui' + import { EditBox, Label } from '@hcengineering/ui' import { createEventDispatcher, onMount } from 'svelte' import tracker from '../../plugin' + import QueryIssuesList from '../issues/edit/QueryIssuesList.svelte' export let object: Component @@ -53,3 +54,20 @@ placeholder={tracker.string.IssueDescriptionPlaceholder} /> + +
+ + + + +
diff --git a/plugins/tracker-resources/src/components/issues/IssuesView.svelte b/plugins/tracker-resources/src/components/issues/IssuesView.svelte index 22cd1b55ae..bbb459464f 100644 --- a/plugins/tracker-resources/src/components/issues/IssuesView.svelte +++ b/plugins/tracker-resources/src/components/issues/IssuesView.svelte @@ -7,6 +7,7 @@ import { FilterBar, SpaceHeader, ViewletContentView, ViewletSettingButton } from '@hcengineering/view-resources' import tracker from '../../plugin' import CreateIssue from '../CreateIssue.svelte' + import { ComponentExtensions } from '@hcengineering/presentation' export let space: Ref | undefined = undefined export let query: DocumentQuery = {} @@ -51,7 +52,7 @@ bind:viewlet bind:search showLabelSelector={$$slots.label_selector} - viewletQuery={{ attachTo: tracker.class.Issue, variant: { $ne: 'subissue' } }} + viewletQuery={{ attachTo: tracker.class.Issue, variant: { $nin: ['subissue', 'component', 'milestone'] } }} {viewlets} {label} {space} @@ -61,6 +62,11 @@ + + {#if asideFloat && $$slots.aside}
diff --git a/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte b/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte new file mode 100644 index 0000000000..8a8573b392 --- /dev/null +++ b/plugins/tracker-resources/src/components/issues/edit/QueryIssuesList.svelte @@ -0,0 +1,205 @@ + + + +
+ {#if hasSubIssues} + {#if $$slots.header} + + {:else} + + {/if} + {/if} +
+ {#if hasSubIssues} + + {/if} + {#if hasSubIssues} + + {/if} +
+
+{#if hasSubIssues && viewOptions && viewlet} + {#if !isCollapsed} + +
+ +
+
+ {/if} +{/if} + + diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte index a53829bb55..0d144ea759 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssueList.svelte @@ -21,6 +21,7 @@ import { ViewOptions, Viewlet, ViewletPreference } from '@hcengineering/view' import { List, ListSelectionProvider, SelectDirection, selectionStore } from '@hcengineering/view-resources' import tracker from '../../../plugin' + import { createEventDispatcher } from 'svelte' export let query: DocumentQuery | undefined = undefined export let viewlet: Viewlet @@ -66,6 +67,8 @@ export let createItemDialog: AnySvelteComponent | AnyComponent | undefined = undefined export let createItemLabel: IntlString | undefined = undefined export let createItemDialogProps: Record | undefined = undefined + + const dispatch = createEventDispatcher() { docs = evt.detail listProvider.update(evt.detail) + dispatch('docs', docs) }} /> {/if} diff --git a/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte b/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte index bdffe62e05..f57d7f9dee 100644 --- a/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/SubIssues.svelte @@ -13,213 +13,58 @@ // limitations under the License. --> -
- {#if hasSubIssues} + 0} + {focusIndex} + {projects} + {shouldSaveDraft} + on:docs={(evt) => { + size = evt.detail.length + }} +> + + + - {/if} -
- {#if hasSubIssues} - - {/if} - {#if hasSubIssues} -
-
-{#if hasSubIssues && viewOptions && viewlet} - {#if !isCollapsed} - -
- -
-
- {/if} -{/if} - - + + diff --git a/plugins/tracker-resources/src/components/issues/related/RelatedIssues.svelte b/plugins/tracker-resources/src/components/issues/related/RelatedIssues.svelte index 8395ea38ab..b738b5a30d 100644 --- a/plugins/tracker-resources/src/components/issues/related/RelatedIssues.svelte +++ b/plugins/tracker-resources/src/components/issues/related/RelatedIssues.svelte @@ -39,7 +39,7 @@ const projectsQuery = createQuery() - $: projectsQuery.query(tracker.class.Project, {}, async (result) => { + $: projectsQuery.query(tracker.class.Project, { archived: false }, async (result) => { projects = new Map(result.map((it) => [it._id, it])) }) diff --git a/plugins/tracker-resources/src/components/issues/related/RelatedIssuesSection.svelte b/plugins/tracker-resources/src/components/issues/related/RelatedIssuesSection.svelte index 8dbe9633dd..18576c688e 100644 --- a/plugins/tracker-resources/src/components/issues/related/RelatedIssuesSection.svelte +++ b/plugins/tracker-resources/src/components/issues/related/RelatedIssuesSection.svelte @@ -1,86 +1,29 @@ {#if $configurationStore.has(trackerId)} -
-
-
- -
- - - {#if headerRemoval} -
- -
- {#if extraHeaders} - {#each extraHeaders as extra} - - {/each} - {/if} - {subIssues.length} -
+ + +
+
+
- {:else} - - {/if} -
- -
-
- {#if viewlet && viewOptions} - - {/if} -
+ + {/if} diff --git a/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte b/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte index 2a597b0c16..1f8d90e19b 100644 --- a/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte +++ b/plugins/tracker-resources/src/components/milestones/EditMilestone.svelte @@ -13,12 +13,13 @@ // limitations under the License. -->