From 7e03e8f59dd0d31227bf68b5ccf333029622dd7e Mon Sep 17 00:00:00 2001 From: Alexander Platov Date: Thu, 17 Nov 2022 07:29:58 +0300 Subject: [PATCH] Fix popups (#2384) Signed-off-by: Alexander Platov --- .../presentation/src/components/Card.svelte | 11 +++++++++-- .../src/components/ObjectPopup.svelte | 10 ++++++---- .../src/components/SpacesMultiPopup.svelte | 6 ++---- .../src/components/UsersPopup.svelte | 7 +------ .../src/components/StyledTextBox.svelte | 14 +++++++++++++- packages/ui/src/components/ColorPopup.svelte | 9 ++++++++- .../src/components/DropdownLabelsPopup.svelte | 9 ++++++++- .../components/DropdownLabelsPopupIntl.svelte | 3 ++- packages/ui/src/components/DropdownPopup.svelte | 4 ++-- .../src/components/DropdownRecordPopup.svelte | 3 ++- .../ui/src/components/ExpandCollapse.svelte | 3 ++- packages/ui/src/components/ListView.svelte | 15 ++++++++++----- packages/ui/src/components/Menu.svelte | 17 ++++++++++------- packages/ui/src/components/PopupInstance.svelte | 8 ++++---- packages/ui/src/components/Scroller.svelte | 5 +++-- packages/ui/src/components/SelectPopup.svelte | 4 +--- packages/ui/src/popups.ts | 3 ++- .../src/components/AttachmentStyledBox.svelte | 2 +- .../src/components/CreateContact.svelte | 8 +------- .../src/components/TagsCategoryPopup.svelte | 4 ++-- .../src/components/TagsFilter.svelte | 4 ++-- .../src/components/TagsPopup.svelte | 14 ++++++++++++-- .../src/components/CreateFilterPopup.svelte | 4 ++-- .../src/components/state/DoneStatesPopup.svelte | 4 ++-- .../src/components/state/StatesPopup.svelte | 4 ++-- .../src/components/CreateIssue.svelte | 8 +++----- .../src/components/RelationsPopup.svelte | 7 +------ .../src/components/ActionsPopup.svelte | 9 +++++++-- .../src/components/BooleanEditorPopup.svelte | 4 ++-- .../src/components/EditBoxPopup.svelte | 4 ++-- .../view-resources/src/components/Menu.svelte | 6 +----- .../src/components/ObjectBoxPopup.svelte | 7 +------ .../src/components/ValueSelector.svelte | 6 ++++-- .../components/filter/FilterTypePopup.svelte | 4 ++-- .../src/components/filter/ObjectFilter.svelte | 4 ++-- .../components/filter/TimestampFilter.svelte | 5 ++--- .../src/components/filter/ValueFilter.svelte | 4 ++-- .../src/components/Applications.svelte | 2 +- 38 files changed, 139 insertions(+), 106 deletions(-) diff --git a/packages/presentation/src/components/Card.svelte b/packages/presentation/src/components/Card.svelte index 4c4d25275e..67e2e2577e 100644 --- a/packages/presentation/src/components/Card.svelte +++ b/packages/presentation/src/components/Card.svelte @@ -18,7 +18,7 @@ import { Button, IconClose, Label, MiniToggle } from '@hcengineering/ui' import { createEventDispatcher } from 'svelte' import presentation from '..' - import { deviceOptionsStore as deviceInfo } from '@hcengineering/ui' + import { deviceOptionsStore as deviceInfo, resizeObserver } from '@hcengineering/ui' export let label: IntlString export let labelProps: any | undefined = undefined @@ -33,7 +33,14 @@ let okProcessing = false -
{}}> + {}} + use:resizeObserver={() => { + dispatch('changeContent') + }} +>
{#if $$slots.header} diff --git a/packages/presentation/src/components/ObjectPopup.svelte b/packages/presentation/src/components/ObjectPopup.svelte index 8dcd386596..c560a1509e 100644 --- a/packages/presentation/src/components/ObjectPopup.svelte +++ b/packages/presentation/src/components/ObjectPopup.svelte @@ -26,9 +26,10 @@ IconCheck, ListView, showPopup, - tooltip + tooltip, + resizeObserver } from '@hcengineering/ui' - import { afterUpdate, createEventDispatcher } from 'svelte' + import { createEventDispatcher } from 'svelte' import presentation from '..' import { ObjectCreate } from '../types' import { createQuery, getClient } from '../utils' @@ -158,8 +159,6 @@ return obj } - afterUpdate(() => dispatch('changeContent')) - let selectedDiv: HTMLElement | undefined let scrollDiv: HTMLElement | undefined let cHeight = 0 @@ -198,6 +197,9 @@ class:plainContainer={!shadows} class:width-40={width === 'large'} on:keydown={onKeydown} + use:resizeObserver={() => { + dispatch('changeContent') + }} >
diff --git a/packages/presentation/src/components/SpacesMultiPopup.svelte b/packages/presentation/src/components/SpacesMultiPopup.svelte index 9e44f6a269..7344f4c3c0 100644 --- a/packages/presentation/src/components/SpacesMultiPopup.svelte +++ b/packages/presentation/src/components/SpacesMultiPopup.svelte @@ -16,10 +16,8 @@ import type { IntlString } from '@hcengineering/platform' import { translate } from '@hcengineering/platform' import { createEventDispatcher, onMount } from 'svelte' - import core, { Class, getCurrentAccount, Ref, Space } from '@hcengineering/core' - import { tooltip, CheckBox } from '@hcengineering/ui' - + import { tooltip, CheckBox, resizeObserver } from '@hcengineering/ui' import { createQuery } from '../utils' import presentation from '..' import SpaceInfo from './SpaceInfo.svelte' @@ -91,7 +89,7 @@ }) -
+
dispatch('changeContent')}>
diff --git a/packages/presentation/src/components/UsersPopup.svelte b/packages/presentation/src/components/UsersPopup.svelte index cc422211b0..3289e36a20 100644 --- a/packages/presentation/src/components/UsersPopup.svelte +++ b/packages/presentation/src/components/UsersPopup.svelte @@ -13,7 +13,6 @@ // limitations under the License. --> dispatch('changeContent')} + on:changeContent >
diff --git a/packages/text-editor/src/components/StyledTextBox.svelte b/packages/text-editor/src/components/StyledTextBox.svelte index 0bae0af7ed..45afc38d49 100644 --- a/packages/text-editor/src/components/StyledTextBox.svelte +++ b/packages/text-editor/src/components/StyledTextBox.svelte @@ -1,7 +1,16 @@ -
+
{ + dispatch('changeContent') + }} +> {#if searchable}
{}} on:change /> diff --git a/packages/ui/src/components/DropdownLabelsPopup.svelte b/packages/ui/src/components/DropdownLabelsPopup.svelte index 4c7f24f5c0..faa45dba7b 100644 --- a/packages/ui/src/components/DropdownLabelsPopup.svelte +++ b/packages/ui/src/components/DropdownLabelsPopup.svelte @@ -20,6 +20,7 @@ import plugin from '../plugin' import CheckBox from './CheckBox.svelte' import ListView from './ListView.svelte' + import { resizeObserver } from '..' export let placeholder: IntlString = plugin.string.SearchDots export let items: DropdownTextItem[] @@ -72,7 +73,13 @@ } -
+
{ + dispatch('changeContent') + }} +>
-
+
dispatch('changeContent')}>
{#each items as item, i} diff --git a/packages/ui/src/components/DropdownPopup.svelte b/packages/ui/src/components/DropdownPopup.svelte index b63709f587..609e4e2589 100644 --- a/packages/ui/src/components/DropdownPopup.svelte +++ b/packages/ui/src/components/DropdownPopup.svelte @@ -16,11 +16,11 @@ import type { Asset, IntlString } from '@hcengineering/platform' import { translate } from '@hcengineering/platform' import { createEventDispatcher, onMount } from 'svelte' - import type { AnySvelteComponent, ListItem } from '../types' import plugin from '../plugin' import Icon from './Icon.svelte' import ListView from './ListView.svelte' + import { resizeObserver } from '..' export let icon: Asset | AnySvelteComponent export let placeholder: IntlString = plugin.string.SearchDots @@ -77,7 +77,7 @@ } -
+
dispatch('changeContent')} on:keydown={onKeydown}>
export let selected: any | undefined = undefined @@ -58,7 +59,7 @@ } -
+
dispatch('changeContent')} on:keydown={onKeydown}>
diff --git a/packages/ui/src/components/ExpandCollapse.svelte b/packages/ui/src/components/ExpandCollapse.svelte index 79fb57f788..b4bf282986 100644 --- a/packages/ui/src/components/ExpandCollapse.svelte +++ b/packages/ui/src/components/ExpandCollapse.svelte @@ -32,7 +32,7 @@
-
+
@@ -41,5 +41,6 @@ .root { overflow: hidden; min-height: 0; + flex-shrink: 0; } diff --git a/packages/ui/src/components/ListView.svelte b/packages/ui/src/components/ListView.svelte index be44bc78e3..27e48e8d4d 100644 --- a/packages/ui/src/components/ListView.svelte +++ b/packages/ui/src/components/ListView.svelte @@ -13,7 +13,8 @@ // limitations under the License. --> {#if count} -
+
{ + dispatch('changeContent') + }} + > {#each Array(count) as _, row}
.list-container { - border-radius: 0.25rem; + // border-radius: 0.25rem; user-select: none; .selection { diff --git a/packages/ui/src/components/Menu.svelte b/packages/ui/src/components/Menu.svelte index 387f98e458..63ece50530 100644 --- a/packages/ui/src/components/Menu.svelte +++ b/packages/ui/src/components/Menu.svelte @@ -13,7 +13,7 @@ // limitations under the License. --> @@ -121,6 +120,7 @@ style:max-width={options.props.maxWidth} style:max-height={options.props.maxHeight} style:min-width={options.props.minWidth} + style:min-height={options.props.minHeight} style:transform={options.props.transform} >
-
+
{ divHeight = element.clientHeight }} - class="scroll relative" + class="scroll relative flex-shrink" class:overflowXauto={horizontal} class:overflowXhidden={!horizontal} on:scroll={() => { @@ -375,6 +375,7 @@ position: relative; display: flex; flex-direction: column; + flex-shrink: 1; height: 100%; min-width: 0; min-height: 0; diff --git a/packages/ui/src/components/SelectPopup.svelte b/packages/ui/src/components/SelectPopup.svelte index caac89d82b..6ccb797baf 100644 --- a/packages/ui/src/components/SelectPopup.svelte +++ b/packages/ui/src/components/SelectPopup.svelte @@ -14,7 +14,7 @@ --> diff --git a/packages/ui/src/popups.ts b/packages/ui/src/popups.ts index 54db6b4feb..709e99a8ec 100644 --- a/packages/ui/src/popups.ts +++ b/packages/ui/src/popups.ts @@ -156,7 +156,7 @@ export function fitPopupPositionedElement ( newProps.maxWidth = newProps.width = '' if (alignment?.kind === 'submenu') { const dirH = - docWidth - rect.right - rectPopup.width - 12 > 0 ? 'right' : rect.left > docWidth - rect.left ? 'left' : 'right' + docWidth - rect.right - rectPopup.width - 12 > 0 ? 'right' : rect.left > docWidth - rect.left ? 'left' : 'inside' const dirV = docHeight - rect.top - rectPopup.height - 20 > 0 ? 'bottom' @@ -164,6 +164,7 @@ export function fitPopupPositionedElement ( ? 'top' : 'bottom' if (dirH === 'right') newProps.left = `${rect.right - 4}px` + else if (dirH === 'inside') newProps.right = '1rem' else newProps.right = `${docWidth - rect.left - 4}px` if (dirV === 'bottom') newProps.top = `${rect.top - 4}px` else newProps.bottom = `${docHeight - rect.bottom - 4}px` diff --git a/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte b/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte index 6c64e435a2..fca4baf402 100644 --- a/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte +++ b/plugins/attachment-resources/src/components/AttachmentStyledBox.svelte @@ -201,7 +201,7 @@ {showButtons} {buttonSize} {maxHeight} - on:changeContent + on:changeSize /> {#if attachments.size}
diff --git a/plugins/contact-resources/src/components/CreateContact.svelte b/plugins/contact-resources/src/components/CreateContact.svelte index 33c9aaad34..64779868e4 100644 --- a/plugins/contact-resources/src/components/CreateContact.svelte +++ b/plugins/contact-resources/src/components/CreateContact.svelte @@ -1,12 +1,10 @@ - dispatch('changeContent')} /> + diff --git a/plugins/tags-resources/src/components/TagsCategoryPopup.svelte b/plugins/tags-resources/src/components/TagsCategoryPopup.svelte index 511d69c462..3bd298a2cc 100644 --- a/plugins/tags-resources/src/components/TagsCategoryPopup.svelte +++ b/plugins/tags-resources/src/components/TagsCategoryPopup.svelte @@ -18,7 +18,7 @@ import { translate } from '@hcengineering/platform' import presentation, { createQuery } from '@hcengineering/presentation' import { TagCategory, TagElement } from '@hcengineering/tags' - import { Button, CheckBox, getPlatformColor, Icon, IconClose, Label } from '@hcengineering/ui' + import { Button, CheckBox, getPlatformColor, Icon, IconClose, Label, resizeObserver } from '@hcengineering/ui' import { createEventDispatcher, onMount } from 'svelte' import tags from '../plugin' @@ -96,7 +96,7 @@ ) -
+
dispatch('changeContent')}>
diff --git a/plugins/tags-resources/src/components/TagsFilter.svelte b/plugins/tags-resources/src/components/TagsFilter.svelte index 93e266c93d..c0f0a7ff59 100644 --- a/plugins/tags-resources/src/components/TagsFilter.svelte +++ b/plugins/tags-resources/src/components/TagsFilter.svelte @@ -16,7 +16,7 @@ import { Class, Doc, FindResult, Ref } from '@hcengineering/core' import { translate } from '@hcengineering/platform' import presentation, { getClient } from '@hcengineering/presentation' - import { Button, CheckBox, getPlatformColor, Loading } from '@hcengineering/ui' + import { Button, CheckBox, getPlatformColor, Loading, resizeObserver } from '@hcengineering/ui' import { Filter } from '@hcengineering/view' import view from '@hcengineering/view-resources/src/plugin' import { createEventDispatcher, onMount } from 'svelte' @@ -102,7 +102,7 @@ getValues(search) -
+
dispatch('changeContent')}>
-
+
dispatch('changeContent')}>
diff --git a/plugins/task-resources/src/components/CreateFilterPopup.svelte b/plugins/task-resources/src/components/CreateFilterPopup.svelte index da38899f89..99e77f412e 100644 --- a/plugins/task-resources/src/components/CreateFilterPopup.svelte +++ b/plugins/task-resources/src/components/CreateFilterPopup.svelte @@ -14,7 +14,7 @@ --> -
+
dispatch('changeContent')}>
-
+
dispatch('changeContent')}>
{#each states as state} diff --git a/plugins/task-resources/src/components/state/StatesPopup.svelte b/plugins/task-resources/src/components/state/StatesPopup.svelte index 688c50f476..ffbc931cf6 100644 --- a/plugins/task-resources/src/components/state/StatesPopup.svelte +++ b/plugins/task-resources/src/components/state/StatesPopup.svelte @@ -17,7 +17,7 @@ import { Ref, SortingOrder } from '@hcengineering/core' import { createQuery } from '@hcengineering/presentation' import task, { SpaceWithStates, State } from '@hcengineering/task' - import { getPlatformColor } from '@hcengineering/ui' + import { getPlatformColor, resizeObserver } from '@hcengineering/ui' import { createEventDispatcher } from 'svelte' export let space: Ref @@ -38,7 +38,7 @@ ) -
+
dispatch('changeContent')}>
{#each states as state} diff --git a/plugins/tracker-resources/src/components/CreateIssue.svelte b/plugins/tracker-resources/src/components/CreateIssue.svelte index d6467121e6..3786ce787c 100644 --- a/plugins/tracker-resources/src/components/CreateIssue.svelte +++ b/plugins/tracker-resources/src/components/CreateIssue.svelte @@ -62,7 +62,7 @@ } from '@hcengineering/ui' import view from '@hcengineering/view' import { ObjectBox } from '@hcengineering/view-resources' - import { createEventDispatcher, afterUpdate } from 'svelte' + import { createEventDispatcher } from 'svelte' import { activeProject, activeSprint, updateIssueRelation } from '../issues' import tracker from '../plugin' import AssigneeEditor from './issues/AssigneeEditor.svelte' @@ -638,8 +638,6 @@ ) } } - - afterUpdate(() => dispatch('changeContent')) dispatch('close')} createMore={false} onCancel={showConfirmationDialog} + on:changeContent >
@@ -707,7 +706,7 @@ maxHeight={'20vh'} bind:content={object.description} placeholder={tracker.string.IssueDescriptionPlaceholder} - on:changeContent + on:changeSize={() => dispatch('changeContent')} /> {/key}
diff --git a/plugins/tracker-resources/src/components/RelationsPopup.svelte b/plugins/tracker-resources/src/components/RelationsPopup.svelte index a114395e4d..cbc98a1515 100644 --- a/plugins/tracker-resources/src/components/RelationsPopup.svelte +++ b/plugins/tracker-resources/src/components/RelationsPopup.svelte @@ -5,14 +5,11 @@ import { createQuery, getClient, ObjectSearchPopup, ObjectSearchResult } from '@hcengineering/presentation' import { Issue } from '@hcengineering/tracker' import { Action, closePopup, Menu, showPopup } from '@hcengineering/ui' - import { afterUpdate, createEventDispatcher } from 'svelte' import { updateIssueRelation } from '../issues' import tracker from '../plugin' export let value: Issue - const dispatch = createEventDispatcher() - const client = getClient() const query = createQuery() $: relations = { @@ -126,10 +123,8 @@ }, ...(hasRelation ? removeRelationAction : []) ] - - afterUpdate(() => dispatch('changeContent')) {#if actions} - dispatch('changeContent')} /> + {/if} diff --git a/plugins/view-resources/src/components/ActionsPopup.svelte b/plugins/view-resources/src/components/ActionsPopup.svelte index a504c749f5..e5905b4b79 100644 --- a/plugins/view-resources/src/components/ActionsPopup.svelte +++ b/plugins/view-resources/src/components/ActionsPopup.svelte @@ -23,7 +23,7 @@ import view from '../plugin' import { focusStore, selectionStore } from '../selection' import ActionContext from './ActionContext.svelte' - import { ListView } from '@hcengineering/ui' + import { ListView, resizeObserver } from '@hcengineering/ui' import ObjectPresenter from './ObjectPresenter.svelte' import { tick } from 'svelte' @@ -179,7 +179,12 @@ }} /> -
+
dispatch('changeContent')} +>
{#if $selectionStore.length > 0}
diff --git a/plugins/view-resources/src/components/BooleanEditorPopup.svelte b/plugins/view-resources/src/components/BooleanEditorPopup.svelte index 7dda20bca9..b5d27f550e 100644 --- a/plugins/view-resources/src/components/BooleanEditorPopup.svelte +++ b/plugins/view-resources/src/components/BooleanEditorPopup.svelte @@ -15,7 +15,7 @@ --> -
+
dispatch('changeContent')}>