mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-20 07:10:02 +00:00
Add strings in @anticrm/presentation. DoneState centered (#668)
Signed-off-by: Alexander Platov <sas_lord@mail.ru>
This commit is contained in:
parent
c904fc7a6c
commit
b16f453812
12
packages/presentation/lang/en.json
Normal file
12
packages/presentation/lang/en.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"string": {
|
||||||
|
"Create": "Create",
|
||||||
|
"Cancel": "Cancel",
|
||||||
|
"Ok": "Ok",
|
||||||
|
"Download": "Download",
|
||||||
|
"Delete": "Delete",
|
||||||
|
"Suggested": "Suggested",
|
||||||
|
"NotSelected": "Not selected",
|
||||||
|
"Deselect": "Deselect"
|
||||||
|
}
|
||||||
|
}
|
@ -24,6 +24,7 @@
|
|||||||
// import ScrollBox from './ScrollBox.svelte'
|
// import ScrollBox from './ScrollBox.svelte'
|
||||||
import { Button, Label } from '@anticrm/ui'
|
import { Button, Label } from '@anticrm/ui'
|
||||||
import SpaceSelect from './SpaceSelect.svelte'
|
import SpaceSelect from './SpaceSelect.svelte'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let spaceClass: Ref<Class<Space>>
|
export let spaceClass: Ref<Class<Space>>
|
||||||
export let space: Ref<Space>
|
export let space: Ref<Space>
|
||||||
@ -52,8 +53,8 @@
|
|||||||
<SpaceSelect _class={spaceClass} label={spaceLabel} placeholder={spacePlaceholder} bind:value={space} />
|
<SpaceSelect _class={spaceClass} label={spaceLabel} placeholder={spacePlaceholder} bind:value={space} />
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<Button disabled={!canSave} label={'Create'} size={'small'} transparent primary on:click={() => { okAction(); dispatch('close') }} />
|
<Button disabled={!canSave} label={presentation.string.Create} size={'small'} transparent primary on:click={() => { okAction(); dispatch('close') }} />
|
||||||
<Button label={'Cancel'} size={'small'} transparent on:click={() => { dispatch('close') }} />
|
<Button label={presentation.string.Cancel} size={'small'} transparent on:click={() => { dispatch('close') }} />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
import type { IntlString } from '@anticrm/platform'
|
import type { IntlString } from '@anticrm/platform'
|
||||||
import { createEventDispatcher } from 'svelte'
|
import { createEventDispatcher } from 'svelte'
|
||||||
import { Label, Button } from '@anticrm/ui'
|
import { Label, Button } from '@anticrm/ui'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let label: IntlString
|
export let label: IntlString
|
||||||
export let message: IntlString
|
export let message: IntlString
|
||||||
@ -28,8 +29,8 @@
|
|||||||
<div class="overflow-label fs-title mb-4"><Label {label} /></div>
|
<div class="overflow-label fs-title mb-4"><Label {label} /></div>
|
||||||
<div class="message"><Label label={message} /></div>
|
<div class="message"><Label label={message} /></div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<Button label={'Ok'} size={'small'} transparent primary on:click={() => dispatch('close', true)} />
|
<Button label={presentation.string.Ok} size={'small'} transparent primary on:click={() => dispatch('close', true)} />
|
||||||
<Button label={'Cancel'} size={'small'} transparent on:click={() => dispatch('close', false)} />
|
<Button label={presentation.string.Cancel} size={'small'} transparent on:click={() => dispatch('close', false)} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
import { getFileUrl } from '../utils'
|
import { getFileUrl } from '../utils'
|
||||||
import { createEventDispatcher } from 'svelte'
|
import { createEventDispatcher } from 'svelte'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let file: string
|
export let file: string
|
||||||
export let name: string
|
export let name: string
|
||||||
@ -48,12 +49,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<iframe class="flex-grow content" src={getFileUrl(file)}/>
|
<iframe class="flex-grow content" src={getFileUrl(file)} title=""/>
|
||||||
|
|
||||||
<div class="flex-between footer">
|
<div class="flex-between footer">
|
||||||
<div class="flex-row-reverse">
|
<div class="flex-row-reverse">
|
||||||
<Button label={'Download'} primary />
|
<Button label={presentation.string.Download} primary />
|
||||||
<Button label={'Delete'} />
|
<Button label={presentation.string.Delete} />
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-row-center">
|
<div class="flex-row-center">
|
||||||
<CircleButton icon={ExpandDown} />
|
<CircleButton icon={ExpandDown} />
|
||||||
@ -64,7 +65,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
||||||
.pdfviewer-container {
|
.pdfviewer-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -96,11 +96,11 @@
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
.description {
|
// .description {
|
||||||
font-size: .75rem;
|
// font-size: .75rem;
|
||||||
color: #1F212B;
|
// color: #1F212B;
|
||||||
opacity: .6;
|
// opacity: .6;
|
||||||
}
|
// }
|
||||||
.tool {
|
.tool {
|
||||||
margin-left: 0.75rem;
|
margin-left: 0.75rem;
|
||||||
opacity: .4;
|
opacity: .4;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
import { createEventDispatcher } from 'svelte'
|
import { createEventDispatcher } from 'svelte'
|
||||||
import { Button, Label } from '@anticrm/ui'
|
import { Button, Label } from '@anticrm/ui'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let label: IntlString
|
export let label: IntlString
|
||||||
export let okAction: () => void
|
export let okAction: () => void
|
||||||
@ -39,8 +40,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content"><slot /></div>
|
<div class="content"><slot /></div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<Button disabled={!canSave} label={'Create'} size={'small'} transparent primary on:click={() => { okAction(); dispatch('close') }} />
|
<Button disabled={!canSave} label={presentation.string.Create} size={'small'} transparent primary on:click={() => { okAction(); dispatch('close') }} />
|
||||||
<Button label={'Cancel'} size={'small'} transparent on:click={() => { dispatch('close') }} />
|
<Button label={presentation.string.Cancel} size={'small'} transparent on:click={() => { dispatch('close') }} />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
-->
|
-->
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { IntlString } from '@anticrm/platform'
|
|
||||||
import { afterUpdate, createEventDispatcher } from 'svelte'
|
import { afterUpdate, createEventDispatcher } from 'svelte'
|
||||||
|
|
||||||
import { Label, EditWithIcon, IconSearch } from '@anticrm/ui'
|
import { Label, EditWithIcon, IconSearch } from '@anticrm/ui'
|
||||||
@ -21,6 +20,7 @@
|
|||||||
|
|
||||||
import type { Ref, Class, Space } from '@anticrm/core'
|
import type { Ref, Class, Space } from '@anticrm/core'
|
||||||
import { createQuery } from '../utils'
|
import { createQuery } from '../utils'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let _class: Ref<Class<Space>>
|
export let _class: Ref<Class<Space>>
|
||||||
|
|
||||||
@ -36,7 +36,7 @@
|
|||||||
<div class="popup">
|
<div class="popup">
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<EditWithIcon icon={IconSearch} bind:value={search} placeholder={'Search...'} />
|
<EditWithIcon icon={IconSearch} bind:value={search} placeholder={'Search...'} />
|
||||||
<div class="label"><Label label={'SUGGESTED'} /></div>
|
<div class="label"><Label label={presentation.string.Suggested} /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-grow scroll">
|
<div class="flex-grow scroll">
|
||||||
<div class="flex-col h-full box">
|
<div class="flex-col h-full box">
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
import type { Ref, Class } from '@anticrm/core'
|
import type { Ref, Class } from '@anticrm/core'
|
||||||
import contact, { Contact, formatName } from '@anticrm/contact'
|
import contact, { Contact, formatName } from '@anticrm/contact'
|
||||||
import { createEventDispatcher } from 'svelte'
|
import { createEventDispatcher } from 'svelte'
|
||||||
|
import presentation from '..'
|
||||||
|
|
||||||
export let _class: Ref<Class<Contact>>
|
export let _class: Ref<Class<Contact>>
|
||||||
export let title: IntlString
|
export let title: IntlString
|
||||||
@ -96,7 +97,7 @@
|
|||||||
<div class="selectUser">
|
<div class="selectUser">
|
||||||
<div class="title"><Label label={title} /></div>
|
<div class="title"><Label label={title} /></div>
|
||||||
<div class:caption-color={selected} class:content-dark-color={!selected}>
|
<div class:caption-color={selected} class:content-dark-color={!selected}>
|
||||||
{#if selected}{getName(selected)}{:else}<Label label={'Not selected'} />{/if}
|
{#if selected}{getName(selected)}{:else}<Label label={presentation.string.NotSelected} />{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
import type { Ref, Class } from '@anticrm/core'
|
import type { Ref, Class } from '@anticrm/core'
|
||||||
import type { Person } from '@anticrm/contact'
|
import type { Person } from '@anticrm/contact'
|
||||||
import { createQuery } from '../utils'
|
import { createQuery } from '../utils'
|
||||||
|
import presentation from '..'
|
||||||
import { ActionIcon } from '@anticrm/ui'
|
import { ActionIcon } from '@anticrm/ui'
|
||||||
import BlueCheck from './icons/BlueCheck.svelte'
|
import BlueCheck from './icons/BlueCheck.svelte'
|
||||||
|
|
||||||
@ -56,7 +57,7 @@
|
|||||||
<UserInfo size={'medium'} value={person} />
|
<UserInfo size={'medium'} value={person} />
|
||||||
</div>
|
</div>
|
||||||
{#if allowDeselect && person._id === selected}
|
{#if allowDeselect && person._id === selected}
|
||||||
<ActionIcon direction={'top'} label={titleDeselect ?? 'Deselect'} icon={BlueCheck} action={() => { dispatch('close', null) }} size={'small'}/>
|
<ActionIcon direction={'top'} label={titleDeselect ?? presentation.string.Deselect} icon={BlueCheck} action={() => { dispatch('close', null) }} size={'small'}/>
|
||||||
{/if}
|
{/if}
|
||||||
</button>
|
</button>
|
||||||
{/each}
|
{/each}
|
||||||
|
@ -15,21 +15,17 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
||||||
import type { Ref } from '@anticrm/core'
|
import type { Ref } from '@anticrm/core'
|
||||||
import type { Person } from '@anticrm/contact'
|
import type { Person } from '@anticrm/contact'
|
||||||
|
|
||||||
export let objectId: Ref<Person>
|
export let objectId: Ref<Person>
|
||||||
export let title: string
|
export let title: string
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<span class="person">{title}</span>
|
<span class="person">{title}</span>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
||||||
.person {
|
.person {
|
||||||
border: 1px solid red;
|
border: 1px solid red;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
import { addStringsLoader } from '@anticrm/platform'
|
||||||
|
import { presentationId } from './plugin'
|
||||||
|
|
||||||
export * from './utils'
|
export * from './utils'
|
||||||
|
|
||||||
export { default as UserBox } from './components/UserBox.svelte'
|
export { default as UserBox } from './components/UserBox.svelte'
|
||||||
@ -29,3 +32,9 @@ export { default as PDFViewer } from './components/PDFViewer.svelte'
|
|||||||
export { default as MessageBox } from './components/MessageBox.svelte'
|
export { default as MessageBox } from './components/MessageBox.svelte'
|
||||||
export { default as SpaceCreateCard } from './components/SpaceCreateCard.svelte'
|
export { default as SpaceCreateCard } from './components/SpaceCreateCard.svelte'
|
||||||
export { default as SpaceSelect } from './components/SpaceSelect.svelte'
|
export { default as SpaceSelect } from './components/SpaceSelect.svelte'
|
||||||
|
|
||||||
|
addStringsLoader(presentationId, async (lang: string) => {
|
||||||
|
return await import(`../lang/${lang}.json`)
|
||||||
|
})
|
||||||
|
|
||||||
|
export { default } from './plugin'
|
||||||
|
36
packages/presentation/src/plugin.ts
Normal file
36
packages/presentation/src/plugin.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// Copyright © 2020, 2021 Anticrm Platform Contributors.
|
||||||
|
// Copyright © 2021 Hardcore Engineering Inc.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
|
||||||
|
import type { IntlString, Plugin } from '@anticrm/platform'
|
||||||
|
import { plugin } from '@anticrm/platform'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
export const presentationId = 'presentation' as Plugin
|
||||||
|
|
||||||
|
export default plugin(presentationId, {
|
||||||
|
string: {
|
||||||
|
Create: '' as IntlString,
|
||||||
|
Cancel: '' as IntlString,
|
||||||
|
Ok: '' as IntlString,
|
||||||
|
Download: '' as IntlString,
|
||||||
|
Delete: '' as IntlString,
|
||||||
|
Suggested: '' as IntlString,
|
||||||
|
NotSelected: '' as IntlString,
|
||||||
|
Deselect: '' as IntlString
|
||||||
|
}
|
||||||
|
})
|
@ -25,14 +25,15 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if value }
|
{#if value }
|
||||||
<div class="overflow-label state-container" style="background-color: {color};">
|
<div class="flex-center">
|
||||||
|
<div class="state-container" style="background-color: {color};" />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.state-container {
|
.state-container {
|
||||||
width: 0.5rem;
|
width: .5rem;
|
||||||
height: 0.5rem;
|
height: .5rem;
|
||||||
border-radius: 0.5rem;
|
border-radius: .5rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
Reference in New Issue
Block a user