popup experiment

Signed-off-by: Andrey Platov <andrey@hardcoreeng.com>
This commit is contained in:
Andrey Platov 2021-08-26 21:08:07 +02:00
parent 570530329b
commit 580ca436b3
No known key found for this signature in database
GPG Key ID: C8787EFEB4B64AF0
3 changed files with 78 additions and 26 deletions

View File

@ -0,0 +1,73 @@
<!--
// Copyright © 2020 Anticrm Platform Contributors.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
-->
<script lang="ts">
import { createEventDispatcher } from 'svelte'
import type { Ref, Space } from '@anticrm/core'
import { TextArea, EditBox, Dialog, Tabs, Section, Grid } from '@anticrm/ui'
import File from './icons/File.svelte'
import Address from './icons/Address.svelte'
import Attachment from './icons/Attachment.svelte'
import DialogHeader from './DialogHeader.svelte'
import { getClient } from '@anticrm/presentation'
import recruit from '../plugin'
export let space: Ref<Space>
const dispatch = createEventDispatcher()
let firstName: string = ''
let lastName: string = ''
let email: string = ''
let phone: string = ''
let city: string = ''
const client = getClient()
function createCandidate() {
client.createDoc(recruit.class.Candidate, space, {
firstName,
lastName,
email,
phone,
city,
})
}
</script>
<Dialog label={recruit.string.CreateCandidate}
okLabel={recruit.string.CreateCandidate}
okAction={createCandidate}
on:close={() => { dispatch('close') }}>
<DialogHeader />
<Section icon={File} label={'Personal Information'}>
<Grid>
<EditBox label={'First name *'} placeholder={'John'} bind:value={firstName} focus/>
<EditBox label={'Last name *'} placeholder={'Smith'} bind:value={lastName}/>
<EditBox label={'Email *'} placeholder={'john.smith@gmail.com'} bind:value={email}/>
<EditBox label={'Phone *'} placeholder={'+00 (000) 000 00'} bind:value={phone}/>
</Grid>
</Section>
<Section icon={Address} label={'Address'}>
<Grid>
<EditBox label={'Street'} placeholder={'Broderick st'} />
<EditBox label={'City *'} placeholder={'Los Angeles'} bind:value={city}/>
<EditBox label={'ZIP / Postal code'} placeholder={'26892'} />
<EditBox label={'Country'} placeholder={'United States'} />
</Grid>
</Section>
</Dialog>

View File

@ -49,25 +49,4 @@
}
</script>
<Dialog label={recruit.string.CreateCandidate}
okLabel={recruit.string.CreateCandidate}
okAction={createCandidate}
on:close={() => { dispatch('close') }}>
<DialogHeader />
<Section icon={File} label={'Personal Information'}>
<Grid>
<EditBox label={'First name *'} placeholder={'John'} bind:value={firstName} focus/>
<EditBox label={'Last name *'} placeholder={'Smith'} bind:value={lastName}/>
<EditBox label={'Email *'} placeholder={'john.smith@gmail.com'} bind:value={email}/>
<EditBox label={'Phone *'} placeholder={'+00 (000) 000 00'} bind:value={phone}/>
</Grid>
</Section>
<Section icon={Address} label={'Address'}>
<Grid>
<EditBox label={'Street'} placeholder={'Broderick st'} />
<EditBox label={'City *'} placeholder={'Los Angeles'} bind:value={city}/>
<EditBox label={'ZIP / Postal code'} placeholder={'26892'} />
<EditBox label={'Country'} placeholder={'United States'} />
</Grid>
</Section>
</Dialog>
<DialogHeader />

View File

@ -23,7 +23,7 @@
import Star from './icons/Star.svelte'
import { getClient, createQuery } from '@anticrm/presentation'
import { showModal } from '@anticrm/ui'
import { showPopup } from '@anticrm/ui'
import { classIcon } from '../utils'
import core from '@anticrm/core'
@ -37,8 +37,8 @@
$: query.query(core.class.Space, { _id: space }, result => { data = result[0] })
function showCreateDialog() {
showModal(createItemDialog as AnyComponent, { space })
function showCreateDialog(ev: Event) {
showPopup(createItemDialog as AnyComponent, { space }, ev.target as HTMLElement)
}
</script>
@ -46,7 +46,7 @@
{#if data}
<Header icon={classIcon(client, data._class)} label={data.name} description={data.description} />
{#if createItemDialog}
<Button label="Create" primary={true} size={'small'} on:click={showCreateDialog}/>
<Button label="Create" primary={true} size={'small'} on:click={(ev) => showCreateDialog(ev)}/>
{/if}
<ActionIcon label={'Favorite'} icon={Star} size={'small'}/>
<ActionIcon label={'Create'} icon={Add} size={'small'}/>