From b5a74cdbc98f17527beb31a0982313bb64811ee9 Mon Sep 17 00:00:00 2001 From: Alexander Platov Date: Tue, 21 Mar 2023 04:49:29 +0300 Subject: [PATCH] TSK-856. Fixed layout in Issues (#2781) Signed-off-by: Alexander Platov --- models/tracker/src/index.ts | 4 +++- packages/presentation/src/components/NavLink.svelte | 13 ++++++++++--- .../src/components/LabelsPresenter.svelte | 8 +++++--- .../components/components/ComponentEditor.svelte | 8 +++++++- .../components/issues/ParentNamesPresenter.svelte | 11 +++++++---- .../src/components/issues/TitlePresenter.svelte | 12 +++++++----- .../src/components/sprints/SprintEditor.svelte | 10 ++++++++-- .../view-resources/src/components/DocNavLink.svelte | 3 ++- .../src/components/list/ListItem.svelte | 11 ++++++++++- 9 files changed, 59 insertions(+), 21 deletions(-) diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index 35f9bff4bb..8d084bbbc5 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -570,7 +570,7 @@ export function createModel (builder: Builder): void { { key: '$lookup.labels', presenter: tags.component.LabelsPresenter, - props: { kind: 'list', full: false, lookupField: 'labels' } + props: { kind: 'list', full: false, lookupField: 'labels', listProps: { optional: true, compression: true } } }, { key: '', presenter: tracker.component.DueDatePresenter, props: { kind: 'list' } }, { @@ -583,6 +583,7 @@ export function createModel (builder: Builder): void { shouldShowPlaceholder: false, listProps: { excludeByKey: 'component', + compression: true, optional: true } } @@ -597,6 +598,7 @@ export function createModel (builder: Builder): void { shouldShowPlaceholder: false, listProps: { excludeByKey: 'sprint', + compression: true, optional: true } } diff --git a/packages/presentation/src/components/NavLink.svelte b/packages/presentation/src/components/NavLink.svelte index 5e75766579..31958c7b06 100644 --- a/packages/presentation/src/components/NavLink.svelte +++ b/packages/presentation/src/components/NavLink.svelte @@ -20,6 +20,7 @@ export let onClick: ((event: MouseEvent) => void) | undefined = undefined export let noUnderline = false export let inline = false + export let shrink: number = 0 function clickHandler (e: MouseEvent) { if (disableClick) return @@ -40,11 +41,17 @@ {#if disableClick || href === undefined} - + {:else} - + {/if} @@ -54,7 +61,7 @@ a { display: flex; align-items: center; - flex-shrink: 0; + min-width: 0; color: var(--accent-color); // overflow: hidden; white-space: nowrap; diff --git a/plugins/tags-resources/src/components/LabelsPresenter.svelte b/plugins/tags-resources/src/components/LabelsPresenter.svelte index b0aebd509b..e9aac1acfd 100644 --- a/plugins/tags-resources/src/components/LabelsPresenter.svelte +++ b/plugins/tags-resources/src/components/LabelsPresenter.svelte @@ -14,6 +14,7 @@ export let kind: 'short' | 'full' = 'short' export let isEditable: boolean = false export let action: (evt: MouseEvent) => Promise | void = async () => {} + export let compression: boolean = false export let lookupField: string | undefined @@ -50,7 +51,8 @@ class="labels-container" style:justify-content={kind === 'short' ? 'space-between' : 'flex-start'} class:w-full={kind === 'full'} - style:flex-wrap={kind === 'short' ? 'nowrap' : 'wrap'} + style:flex-wrap={kind === 'short' || compression ? 'nowrap' : 'wrap'} + style:flex-shrink={compression ? 1 : 0} use:resizeObserver={(element) => { allWidth = element.clientWidth }} @@ -60,7 +62,7 @@ }} > {#each items as value, i} -
+
{/each} @@ -71,7 +73,7 @@ overflow: hidden; display: flex; align-items: center; - flex-shrink: 0; + // flex-shrink: 0; min-width: 0; border-radius: 0.25rem; } diff --git a/plugins/tracker-resources/src/components/components/ComponentEditor.svelte b/plugins/tracker-resources/src/components/components/ComponentEditor.svelte index e510cff9a7..78106b7ea9 100644 --- a/plugins/tracker-resources/src/components/components/ComponentEditor.svelte +++ b/plugins/tracker-resources/src/components/components/ComponentEditor.svelte @@ -35,6 +35,7 @@ export let onlyIcon: boolean = false export let groupBy: string | undefined = undefined export let enlargedText = false + export let compression: boolean = false const client = getClient() @@ -50,13 +51,14 @@ {#if (value.component && value.component !== $activeComponent && groupBy !== 'component') || shouldShowPlaceholder}
diff --git a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte index 88ff1977d5..e6f16e55ce 100644 --- a/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte +++ b/plugins/tracker-resources/src/components/issues/ParentNamesPresenter.svelte @@ -32,7 +32,11 @@ {#each value.parents as parentInfo} - handleIssueEditorOpened(parentInfo)}> + handleIssueEditorOpened(parentInfo)} + > {parentInfo.parentTitle} {/each} @@ -43,13 +47,12 @@ diff --git a/plugins/view-resources/src/components/DocNavLink.svelte b/plugins/view-resources/src/components/DocNavLink.svelte index 7be468fbe9..58eb5657a7 100644 --- a/plugins/view-resources/src/components/DocNavLink.svelte +++ b/plugins/view-resources/src/components/DocNavLink.svelte @@ -26,6 +26,7 @@ export let inline = false export let component: AnyComponent = view.component.EditDoc export let props: Record = {} + export let shrink: number = 0 const client = getClient() const hierarchy = client.getHierarchy() @@ -44,4 +45,4 @@ $: getHref(object) - + diff --git a/plugins/view-resources/src/components/list/ListItem.svelte b/plugins/view-resources/src/components/list/ListItem.svelte index 0f5de1b4bd..c711bd20e0 100644 --- a/plugins/view-resources/src/components/list/ListItem.svelte +++ b/plugins/view-resources/src/components/list/ListItem.svelte @@ -77,6 +77,14 @@ } return { object, ...clearAttributeProps, ...props } } + + let noCompressed: number + $: if (model) { + noCompressed = -1 + model.forEach((m, i) => { + if (m.props?.listProps?.compression) noCompressed = i + }) + }
- {#each model as attributeModel} + {#each model as attributeModel, i} {@const listProps = attributeModel.props?.listProps} {#if attributeModel.props?.type === 'grow'} @@ -135,6 +143,7 @@ value={getObjectValue(attributeModel.key, docObject) ?? ''} onChange={getOnChange(docObject, attributeModel)} kind={'list'} + compression={listProps?.compression && i !== noCompressed} {...joinProps(attributeModel, docObject, props)} /> {/if}