Add svelte-check in setting. Fix errors. (#821)

Signed-off-by: Alexander Platov <sas_lord@mail.ru>
This commit is contained in:
Alexander Platov 2022-01-14 12:06:32 +03:00 committed by GitHub
parent e8c26c46a8
commit c568bbf711
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 80 additions and 120 deletions

View File

@ -86,7 +86,7 @@ export function createModel (builder: Builder): void {
setting.class.IntegrationType,
core.space.Model,
{
label: 'Gmail',
label: 'Gmail' as IntlString,
description: 'Use gmail integration' as IntlString,
icon: gmail.component.IconGmail,
createComponent: gmail.component.Connect,

View File

@ -34,7 +34,7 @@ export class TIntegration extends TDoc implements Integration {
@Model(setting.class.IntegrationType, core.class.Doc, DOMAIN_MODEL)
export class TIntegrationType extends TDoc implements IntegrationType {
label!: string | IntlString
label!: IntlString
description!: IntlString
icon!: AnyComponent
createComponent!: AnyComponent

View File

@ -71,7 +71,7 @@ export function createModel (builder: Builder): void {
setting.class.IntegrationType,
core.space.Model,
{
label: 'Telegram',
label: 'Telegram' as IntlString,
description: 'Use telegram integration' as IntlString,
icon: telegram.component.IconTelegram,
createComponent: telegram.component.Connect,

View File

@ -92,8 +92,6 @@
height: calc(100% - 32px - 1.25rem);
background: var(--theme-bg-color);
border-radius: 1.25rem;
box-shadow: 0px 44px 154px rgba(0, 0, 0, .75);
backdrop-filter: blur(15px);
.header {
flex-shrink: 0;
@ -170,7 +168,7 @@
left: 0;
width: 100%;
height: 100%;
background: var(--theme-menu-color);
opacity: .7;
background: #000;
opacity: .5;
}
</style>

View File

@ -7,6 +7,7 @@
"Delete": "Delete",
"Suggested": "Suggested",
"NotSelected": "Not selected",
"Deselect": "Deselect"
"Deselect": "Deselect",
"AddSocialLinks": "Add social links"
}
}

View File

@ -31,6 +31,7 @@ export default plugin(presentationId, {
Delete: '' as IntlString,
Suggested: '' as IntlString,
NotSelected: '' as IntlString,
Deselect: '' as IntlString
Deselect: '' as IntlString,
AddSocialLinks: '' as IntlString
}
})

View File

@ -20,7 +20,7 @@
import Label from './Label.svelte'
import Icon from './Icon.svelte'
export let label: IntlString | undefined
export let label: IntlString | undefined = undefined
export let icon: Asset | AnySvelteComponent | undefined = undefined
export let maxWidth: string | undefined
export let value: string | undefined

View File

@ -14,13 +14,13 @@
-->
<script lang="ts">
import type { IntlString, Asset } from '@anticrm/platform'
import type { Asset } from '@anticrm/platform'
import type { AnySvelteComponent } from '../types'
import Icon from './Icon.svelte'
export let label: IntlString
export let label: string
export let href: string = '#'
export let icon: Asset | AnySvelteComponent | undefined
export let icon: Asset | AnySvelteComponent | undefined = undefined
export let disabled: boolean = false
export let maxLenght: number = 26

View File

@ -12,7 +12,6 @@
"SelectFolder": "Select folder",
"OrganizationsFolder": "Organizations folder",
"PersonsFolder": "Persons folder",
"AddSocialLinks": "Add social links",
"MakePrivate": "Make private",
"MakePrivateDescription": "Only members can see it",
"Create": "Contact"

View File

@ -16,7 +16,7 @@
<script lang="ts">
import { createEventDispatcher } from 'svelte'
import { getClient, Card, Channels } from '@anticrm/presentation'
import presentation, { getClient, Card, Channels } from '@anticrm/presentation'
import { EditBox, showPopup, CircleButton, IconEdit, IconAdd, Label } from '@anticrm/ui'
import SocialEditor from './SocialEditor.svelte'
@ -57,7 +57,7 @@
<Company size={'large'} />
</div>
<div class="flex-col">
<div class="fs-title"><EditBox placeholder="Apple" maxWidth="11rem" bind:value={object.name} label={undefined} /></div>
<div class="fs-title"><EditBox placeholder="Apple" maxWidth="11rem" bind:value={object.name} /></div>
</div>
</div>
@ -72,7 +72,7 @@
object.channels = result
})}
/>
<span><Label label={contact.string.AddSocialLinks} /></span>
<span><Label label={presentation.string.AddSocialLinks} /></span>
{:else}
<Channels value={object.channels} size={'small'} />
<div class="ml-1">

View File

@ -18,7 +18,7 @@
import type { Data } from '@anticrm/core'
import { getResource } from '@anticrm/platform';
import { getClient, Card, Channels, EditableAvatar } from '@anticrm/presentation'
import presentation, { getClient, Card, Channels, EditableAvatar } from '@anticrm/presentation'
import attachment from '@anticrm/attachment'
import { EditBox, showPopup, CircleButton, IconEdit, IconAdd, Label } from '@anticrm/ui'
@ -80,9 +80,9 @@
<EditableAvatar avatar={object.avatar} size={'large'} on:done={onAvatarDone} />
</div>
<div class="flex-col">
<div class="fs-title"><EditBox placeholder="John" maxWidth="12rem" bind:value={firstName} label={undefined} /></div>
<div class="fs-title mb-1"><EditBox placeholder="Appleseed" maxWidth="12rem" bind:value={lastName} label={undefined} /></div>
<div class="small-text"><EditBox placeholder="Location" maxWidth="12rem" bind:value={object.city} label={undefined} /></div>
<div class="fs-title"><EditBox placeholder="John" maxWidth="12rem" bind:value={firstName} /></div>
<div class="fs-title mb-1"><EditBox placeholder="Appleseed" maxWidth="12rem" bind:value={lastName} /></div>
<div class="small-text"><EditBox placeholder="Location" maxWidth="12rem" bind:value={object.city} /></div>
</div>
</div>
@ -97,7 +97,7 @@
object.channels = result
})}
/>
<span><Label label={contact.string.AddSocialLinks} /></span>
<span><Label label={presentation.string.AddSocialLinks} /></span>
{:else}
<Channels value={object.channels} size={'small'} />
<div class="ml-1">

View File

@ -17,7 +17,7 @@
import { createEventDispatcher, onMount } from 'svelte'
import { getCurrentAccount, Ref, Space } from '@anticrm/core'
import { CircleButton, EditBox, showPopup, IconAdd, Label, IconActivity } from '@anticrm/ui'
import { getClient, createQuery, Channels } from '@anticrm/presentation'
import presentation, { getClient, createQuery, Channels } from '@anticrm/presentation'
import setting from '@anticrm/setting'
import { IntegrationType } from '@anticrm/setting'
import contact from '../plugin'
@ -60,7 +60,7 @@
</div>
<div class="flex-grow flex-col">
<div class="name">
<EditBox placeholder="John" maxWidth="20rem" bind:value={object.name} on:change={nameChange} label={undefined} />
<EditBox placeholder="John" maxWidth="20rem" bind:value={object.name} on:change={nameChange} />
</div>
<div class="flex-between channels">
<div class="flex-row-center">
@ -74,7 +74,7 @@
saveChannels(result)
})}
/>
<span><Label label={contact.string.AddSocialLinks} /></span>
<span><Label label={presentation.string.AddSocialLinks} /></span>
{:else}
<Channels value={object.channels} size={'small'} {integrations} on:click />
<div class="ml-1">

View File

@ -17,7 +17,7 @@
import { createEventDispatcher, onMount, afterUpdate } from 'svelte'
import { getCurrentAccount, Ref, Space } from '@anticrm/core'
import { CircleButton, EditBox, showPopup, IconAdd, Label, IconActivity } from '@anticrm/ui'
import { getClient, createQuery, Channels, EditableAvatar, AttributeEditor } from '@anticrm/presentation'
import presentation, { getClient, createQuery, Channels, EditableAvatar, AttributeEditor } from '@anticrm/presentation'
import { getResource } from '@anticrm/platform'
import attachment from '@anticrm/attachment'
import setting from '@anticrm/setting'
@ -83,10 +83,10 @@
<div class="flex-grow flex-col">
<div class="flex-grow flex-col">
<div class="name">
<EditBox placeholder="John" maxWidth="20rem" bind:value={firstName} on:change={firstNameChange} label={undefined} />
<EditBox placeholder="John" maxWidth="20rem" bind:value={firstName} on:change={firstNameChange} />
</div>
<div class="name">
<EditBox placeholder="Appleseed" maxWidth="20rem" bind:value={lastName} on:change={lastNameChange} label={undefined} />
<EditBox placeholder="Appleseed" maxWidth="20rem" bind:value={lastName} on:change={lastNameChange} />
</div>
<div class="location">
<AttributeEditor maxWidth="20rem" _class={contact.class.Person} {object} key="city" />
@ -107,7 +107,7 @@
saveChannels(result)
})}
/>
<span><Label label={contact.string.AddSocialLinks} /></span>
<span><Label label={presentation.string.AddSocialLinks} /></span>
{:else}
<Channels value={object.channels} size={'small'} {integrations} on:click />
<div class="ml-1">

View File

@ -30,7 +30,6 @@ export default mergeIds(contactId, contact, {
SelectFolder: '' as IntlString,
OrganizationsFolder: '' as IntlString,
PersonsFolder: '' as IntlString,
AddSocialLinks: '' as IntlString,
Name: '' as IntlString,
MakePrivate: '' as IntlString,
MakePrivateDescription: '' as IntlString,

View File

@ -16,6 +16,7 @@
"CreateApplication": "Create Application",
"SelectVacancy": "Select vacancy",
"Candidate": "Candidate",
"CreateCandidate": "Create Candidate",
"AssignRecruiter": "Assigned recruiter",
"UnAssignRecruiter": "Unassigned recruiter",
"Recruiters": "Recruiters",
@ -23,7 +24,13 @@
"Applications": "Applications",
"ThisVacancyIsPrivate": "This vacancy is private",
"Description": "Description",
"Company": "Company"
"Company": "Company",
"Save": "Save",
"Edit": "Edit",
"Delete": "Delete",
"WorkLocationPreferences": "Work location preferences",
"Onsite": "Onsite",
"Remote": "Remote"
},
"status": {
"CandidateRequired": "Please select candidate",

View File

@ -18,6 +18,7 @@
import type { IntlString } from '@anticrm/platform'
import { createEventDispatcher } from 'svelte'
import { Label, Button, Grid, IconClose } from '@anticrm/ui'
import recruit from '../plugin'
import Avatar from '../../img/avatar.png'
@ -40,12 +41,12 @@
<div class="abs-lb-content actions">
<Grid columnGap={.5}>
<Button label={'Edit'} />
<Button label={'Delete'} />
<Button label={recruit.string.Edit} />
<Button label={recruit.string.Delete} />
</Grid>
</div>
<div class="abs-rb-content">
<Button label={'Save'} />
<Button label={recruit.string.Save} />
</div>
</div>

View File

@ -102,22 +102,16 @@
margin-right: .5rem;
opacity: .6;
}
.label, .description {
.label {
flex-grow: 1;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
max-width: 35rem;
}
.label {
font-weight: 500;
font-size: 1rem;
color: var(--theme-caption-color);
}
.description {
font-size: .75rem;
color: var(--theme-content-trans-color);
}
}
}
</style>

View File

@ -19,7 +19,7 @@
import type { Data, MixinData, Ref } from '@anticrm/core'
import { generateId } from '@anticrm/core'
import { getResource, setPlatformStatus, unknownError } from '@anticrm/platform'
import { EditableAvatar, Card, Channels, getClient, PDFViewer } from '@anticrm/presentation'
import presentation, { EditableAvatar, Card, Channels, getClient, PDFViewer } from '@anticrm/presentation'
import type { Candidate } from '@anticrm/recruit'
import { CircleButton, EditBox, IconAdd, IconFile as FileIcon, Label, Link, showPopup, Spinner } from '@anticrm/ui'
import { createEventDispatcher } from 'svelte'
@ -130,7 +130,7 @@
<!-- <DialogHeader {space} {object} {newValue} {resume} create={true} on:save={createCandidate}/> -->
<Card label={'Create Candidate'}
<Card label={recruit.string.CreateCandidate}
okAction={createCandidate}
canSave={firstName.length > 0 && lastName.length > 0}
space={contact.space.Contacts}
@ -152,7 +152,7 @@
<div class="flex-row-center channels">
{#if !object.channels || object.channels.length === 0}
<CircleButton icon={IconAdd} size={'small'} transparent on:click={(ev) => showPopup(contact.component.SocialEditor, { values: object.channels ?? [] }, ev.target, (result) => { object.channels = result })} />
<span><Label label={'Add social links'} /></span>
<span><Label label={presentation.string.AddSocialLinks} /></span>
{:else}
<Channels value={object.channels} size={'small'} />
<div class="ml-1">
@ -179,9 +179,9 @@
<div class="separator" />
<div class="flex-col locations">
<span><Label label={'Work location preferences'} /></span>
<div class="row"><Label label={'Onsite'} /><YesNo bind:value={object.onsite} /></div>
<div class="row"><Label label={'Remote'} /><YesNo bind:value={object.remote} /></div>
<span><Label label={recruit.string.WorkLocationPreferences} /></span>
<div class="row"><Label label={recruit.string.Onsite} /><YesNo bind:value={object.onsite} /></div>
<div class="row"><Label label={recruit.string.Remote} /><YesNo bind:value={object.remote} /></div>
</div>
</Card>

View File

@ -54,7 +54,9 @@
<div class="flex-row-center header">
<div class="flex-grow">
<div class="flex">
<Icon icon={clazz.icon} size={'medium'} />
<div class="svg-medium flex-no-shrink">
{#if clazz.icon}<Icon icon={clazz.icon} size={'medium'} />{/if}
</div>
<div class="flex-grow fs-title ml-2">
{object.name}
</div>
@ -113,10 +115,8 @@
display: flex;
flex-direction: column;
height: calc(100% - 32px - 1.25rem);
background: var(--theme-dialog-bg-spec);
background: var(--theme-bg-color);
border-radius: 1.25rem;
box-shadow: var(--theme-dialog-shadow);
backdrop-filter: blur(15px);
.header {
flex-shrink: 0;
@ -190,8 +190,8 @@
left: 0;
width: 100%;
height: 100%;
background: var(--theme-menu-color);
opacity: .6;
background-color: #000;
opacity: .5;
}
.title {

View File

@ -41,6 +41,7 @@ export default mergeIds(recruitId, recruit, {
Vacancy: '' as IntlString,
SelectVacancy: '' as IntlString,
Candidate: '' as IntlString,
CreateCandidate: '' as IntlString,
AssignRecruiter: '' as IntlString,
Recruiters: '' as IntlString,
UnAssignRecruiter: '' as IntlString,
@ -48,7 +49,13 @@ export default mergeIds(recruitId, recruit, {
Applications: '' as IntlString,
ThisVacancyIsPrivate: '' as IntlString,
Description: '' as IntlString,
Company: '' as IntlString
Company: '' as IntlString,
Save: '' as IntlString,
Edit: '' as IntlString,
Delete: '' as IntlString,
WorkLocationPreferences: '' as IntlString,
Onsite: '' as IntlString,
Remote: '' as IntlString
},
space: {
CandidatesPublic: '' as Ref<Space>

View File

@ -9,6 +9,10 @@
"Folders": "Folders",
"Templates": "Templates",
"Delete": "Delete"
"Delete": "Delete",
"Disconnect": "Disconnect",
"Add": "Add",
"LearnMore": "Learn more"
}
}

View File

@ -9,7 +9,8 @@
"build:docs": "api-extractor run --local",
"lint": "svelte-check && eslint",
"lint:fix": "eslint --fix src",
"format": "prettier --write --plugin-search-dir=. src && eslint --fix src"
"format": "prettier --write --plugin-search-dir=. src && eslint --fix src",
"svelte-check": "svelte-check"
},
"devDependencies": {
"svelte-loader": "^3.1.2",

View File

@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-->
<script lang="ts">
import { Button, Component, Label, Link } from '@anticrm/ui'
import { getResource } from '@anticrm/platform'
@ -56,10 +57,10 @@
<div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</div>
<div class="footer">
{#if integration}
<Button label={'Disconnect'} on:click={disconnect} />
<Button label={setting.string.Disconnect} on:click={disconnect} />
{:else}
<Button
label={'Add'}
label={setting.string.Add}
primary
on:click={(e) => {
showPopup(integrationType.createComponent, {}, e.target, close)

View File

@ -14,22 +14,8 @@
-->
<script lang="ts">
import { getCurrentAccount, Ref, Space } from '@anticrm/core';
import { createQuery } from '@anticrm/presentation'
import setting from '@anticrm/setting'
import type { Integration, IntegrationType } from '@anticrm/setting'
import PluginCard from './PluginCard.svelte'
import { Icon, Label } from '@anticrm/ui'
// const accountId = getCurrentAccount()._id
// const typeQuery = createQuery()
// const integrationQuery = createQuery()
// let integrations: Integration[] = []
// let integrationTypes: IntegrationType[] = []
// typeQuery.query(setting.class.IntegrationType, {}, (res) => (integrationTypes = res))
// integrationQuery.query(setting.class.Integration, { space: accountId as string as Ref<Space> }, (res) => (integrations = res))
</script>
<div class="flex-col h-full">

View File

@ -14,22 +14,8 @@
-->
<script lang="ts">
import { getCurrentAccount, Ref, Space } from '@anticrm/core';
import { createQuery } from '@anticrm/presentation'
import setting from '@anticrm/setting'
import type { Integration, IntegrationType } from '@anticrm/setting'
import PluginCard from './PluginCard.svelte'
import { Icon, Label } from '@anticrm/ui'
// const accountId = getCurrentAccount()._id
// const typeQuery = createQuery()
// const integrationQuery = createQuery()
// let integrations: Integration[] = []
// let integrationTypes: IntegrationType[] = []
// typeQuery.query(setting.class.IntegrationType, {}, (res) => (integrationTypes = res))
// integrationQuery.query(setting.class.Integration, { space: accountId as string as Ref<Space> }, (res) => (integrations = res))
</script>
<div class="flex-col h-full">

View File

@ -14,22 +14,8 @@
-->
<script lang="ts">
import { getCurrentAccount, Ref, Space } from '@anticrm/core';
import { createQuery } from '@anticrm/presentation'
import setting from '@anticrm/setting'
import type { Integration, IntegrationType } from '@anticrm/setting'
import PluginCard from './PluginCard.svelte'
import { Icon, Label } from '@anticrm/ui'
// const accountId = getCurrentAccount()._id
// const typeQuery = createQuery()
// const integrationQuery = createQuery()
// let integrations: Integration[] = []
// let integrationTypes: IntegrationType[] = []
// typeQuery.query(setting.class.IntegrationType, {}, (res) => (integrationTypes = res))
// integrationQuery.query(setting.class.Integration, { space: accountId as string as Ref<Space> }, (res) => (integrations = res))
</script>
<div class="flex-col h-full">

View File

@ -14,22 +14,8 @@
-->
<script lang="ts">
import { getCurrentAccount, Ref, Space } from '@anticrm/core';
import { createQuery } from '@anticrm/presentation'
import setting from '@anticrm/setting'
import type { Integration, IntegrationType } from '@anticrm/setting'
import PluginCard from './PluginCard.svelte'
import { Icon, Label } from '@anticrm/ui'
// const accountId = getCurrentAccount()._id
// const typeQuery = createQuery()
// const integrationQuery = createQuery()
// let integrations: Integration[] = []
// let integrationTypes: IntegrationType[] = []
// typeQuery.query(setting.class.IntegrationType, {}, (res) => (integrationTypes = res))
// integrationQuery.query(setting.class.Integration, { space: accountId as string as Ref<Space> }, (res) => (integrations = res))
</script>
<div class="flex-col h-full">

View File

@ -15,7 +15,7 @@
-->
<script lang="ts">
import type { Ref, Space, Doc, Class } from '@anticrm/core'
// import type { Ref, Space, Doc, Class } from '@anticrm/core'
import { getClient, MessageBox } from '@anticrm/presentation'
import { Label, Icon, showPopup } from '@anticrm/ui'
import type { KanbanTemplate, KanbanTemplateSpace, StateTemplate } from '@anticrm/task'
@ -26,9 +26,9 @@
import Folders from './Folders.svelte'
import Templates from './Templates.svelte'
export let objectId: Ref<Doc>
export let space: Ref<Space>
export let _class: Ref<Class<Doc>>
// export let objectId: Ref<Doc>
// export let space: Ref<Space>
// export let _class: Ref<Class<Doc>>
let folder: KanbanTemplateSpace | undefined
let template: KanbanTemplate | undefined

View File

@ -27,7 +27,7 @@ export type Handler = Resource<() => Promise<void>>
* @public
*/
export interface IntegrationType extends Doc {
label: string | IntlString
label: IntlString
description: IntlString
icon: AnyComponent
createComponent: AnyComponent
@ -72,7 +72,10 @@ export default plugin(settingId, {
Terms: '' as IntlString,
Folders: '' as IntlString,
Templates: '' as IntlString,
Delete: '' as IntlString
Delete: '' as IntlString,
Disconnect: '' as IntlString,
Add: '' as IntlString,
LearnMore: '' as IntlString
},
icon: {
Setting: '' as Asset,