mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-26 02:10:07 +00:00
UBERF-4477: Fixed positioning of AddSavedView
popup (#4148)
Signed-off-by: Petr Vyazovetskiy <develop.pit@gmail.com>
This commit is contained in:
parent
1122db7a49
commit
9c43e2dd5c
@ -11,7 +11,8 @@
|
|||||||
navigate,
|
navigate,
|
||||||
showPopup,
|
showPopup,
|
||||||
SelectPopup,
|
SelectPopup,
|
||||||
getEventPopupPositionElement
|
getEventPopupPositionElement,
|
||||||
|
getPopupPositionElement
|
||||||
} from '@hcengineering/ui'
|
} from '@hcengineering/ui'
|
||||||
import view, { Filter, FilteredView, ViewOptions, Viewlet } from '@hcengineering/view'
|
import view, { Filter, FilteredView, ViewOptions, Viewlet } from '@hcengineering/view'
|
||||||
import {
|
import {
|
||||||
@ -42,10 +43,14 @@
|
|||||||
const filteredViewsQuery = createQuery()
|
const filteredViewsQuery = createQuery()
|
||||||
let availableFilteredViews: FilteredView[] = []
|
let availableFilteredViews: FilteredView[] = []
|
||||||
let myFilteredViews: FilteredView[] = []
|
let myFilteredViews: FilteredView[] = []
|
||||||
$: filteredViewsQuery.query(view.class.FilteredView, { attachedTo: currentApplication?.alias }, (result) => {
|
$: filteredViewsQuery.query<FilteredView>(
|
||||||
myFilteredViews = result.filter((p) => p.users.includes(me))
|
view.class.FilteredView,
|
||||||
availableFilteredViews = result.filter((p) => p.sharable && !p.users.includes(me))
|
{ attachedTo: currentApplication?.alias },
|
||||||
})
|
(result) => {
|
||||||
|
myFilteredViews = result.filter((p) => p.users.includes(me))
|
||||||
|
availableFilteredViews = result.filter((p) => p.sharable && !p.users.includes(me))
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
async function removeAction (filteredView: FilteredView): Promise<Action[]> {
|
async function removeAction (filteredView: FilteredView): Promise<Action[]> {
|
||||||
return [
|
return [
|
||||||
@ -111,7 +116,7 @@
|
|||||||
fragment: fv.location.fragment ?? undefined
|
fragment: fv.location.fragment ?? undefined
|
||||||
})
|
})
|
||||||
if (fv.viewletId !== undefined && fv.viewletId !== null) {
|
if (fv.viewletId !== undefined && fv.viewletId !== null) {
|
||||||
const viewlet = await client.findOne(view.class.Viewlet, { _id: fv.viewletId })
|
const viewlet = await client.findOne<Viewlet>(view.class.Viewlet, { _id: fv.viewletId })
|
||||||
setActiveViewletId(fv.viewletId, fv.location)
|
setActiveViewletId(fv.viewletId, fv.location)
|
||||||
if (viewlet !== undefined && fv.viewOptions !== undefined) {
|
if (viewlet !== undefined && fv.viewOptions !== undefined) {
|
||||||
setViewOptions(viewlet, copy(fv.viewOptions))
|
setViewOptions(viewlet, copy(fv.viewOptions))
|
||||||
@ -120,7 +125,7 @@
|
|||||||
setFilters(JSON.parse(fv.filters))
|
setFilters(JSON.parse(fv.filters))
|
||||||
}
|
}
|
||||||
|
|
||||||
const clearSelection = () => {
|
const clearSelection = (): void => {
|
||||||
selectedFilterStore.set(undefined)
|
selectedFilterStore.set(undefined)
|
||||||
selectedId = undefined
|
selectedId = undefined
|
||||||
dispatch('select', false)
|
dispatch('select', false)
|
||||||
@ -148,7 +153,7 @@
|
|||||||
loc: Location,
|
loc: Location,
|
||||||
filteredViews: FilteredView[] | undefined,
|
filteredViews: FilteredView[] | undefined,
|
||||||
viewOptionStore: Map<string, ViewOptions>
|
viewOptionStore: Map<string, ViewOptions>
|
||||||
) {
|
): void {
|
||||||
const filters = JSON.stringify(fs)
|
const filters = JSON.stringify(fs)
|
||||||
if (loc && Array.isArray(fs) && fs.length > 0 && Array.isArray(filteredViews)) {
|
if (loc && Array.isArray(fs) && fs.length > 0 && Array.isArray(filteredViews)) {
|
||||||
if ($selectedFilterStore !== undefined) {
|
if ($selectedFilterStore !== undefined) {
|
||||||
@ -179,7 +184,7 @@
|
|||||||
async function getActions (availableFilteredViews: FilteredView[]): Promise<Action[]> {
|
async function getActions (availableFilteredViews: FilteredView[]): Promise<Action[]> {
|
||||||
if (availableFilteredViews.length > 0) {
|
if (availableFilteredViews.length > 0) {
|
||||||
const filteredViewsIdMap = toIdMap(availableFilteredViews)
|
const filteredViewsIdMap = toIdMap(availableFilteredViews)
|
||||||
const pushMeToFV = async (id: Ref<FilteredView>) => {
|
const pushMeToFV = async (id: Ref<FilteredView>): Promise<void> => {
|
||||||
if (id === undefined) return
|
if (id === undefined) return
|
||||||
const filteredView = filteredViewsIdMap.get(id)
|
const filteredView = filteredViewsIdMap.get(id)
|
||||||
if (filteredView) await client.update(filteredView, { $push: { users: me } })
|
if (filteredView) await client.update(filteredView, { $push: { users: me } })
|
||||||
@ -192,7 +197,15 @@
|
|||||||
label: view.string.AddSavedView,
|
label: view.string.AddSavedView,
|
||||||
icon: IconAdd,
|
icon: IconAdd,
|
||||||
action: async (_, e): Promise<void> => {
|
action: async (_, e): Promise<void> => {
|
||||||
showPopup(SelectPopup, { value, searchable: true }, eventToHTMLElement(e as MouseEvent), pushMeToFV)
|
showPopup(
|
||||||
|
SelectPopup,
|
||||||
|
{ value, searchable: true },
|
||||||
|
getPopupPositionElement(eventToHTMLElement(e as MouseEvent), {
|
||||||
|
v: 'top',
|
||||||
|
h: 'right'
|
||||||
|
}),
|
||||||
|
pushMeToFV
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [add]
|
return [add]
|
||||||
|
Loading…
Reference in New Issue
Block a user