Merge pull request #339 from hcengineering/boolean-presenter

Boolean presenter
This commit is contained in:
Andrey Platov 2021-11-22 12:16:13 +01:00 committed by GitHub
commit 9741eec01a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 1044 additions and 997 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -97,6 +97,10 @@ export function createModel (builder: Builder): void {
presenter: view.component.StringPresenter presenter: view.component.StringPresenter
}) })
builder.mixin(core.class.TypeBoolean, core.class.Class, view.mixin.AttributePresenter, {
presenter: view.component.BooleanPresenter
})
builder.mixin(core.class.TypeBoolean, core.class.Class, view.mixin.AttributeEditor, { builder.mixin(core.class.TypeBoolean, core.class.Class, view.mixin.AttributeEditor, {
editor: view.component.BooleanEditor editor: view.component.BooleanEditor
}) })

View File

@ -29,6 +29,7 @@ export default mergeIds(viewId, view, {
component: { component: {
StringEditor: '' as AnyComponent, StringEditor: '' as AnyComponent,
StringPresenter: '' as AnyComponent, StringPresenter: '' as AnyComponent,
BooleanPresenter: '' as AnyComponent,
BooleanEditor: '' as AnyComponent, BooleanEditor: '' as AnyComponent,
StatePresenter: '' as AnyComponent, StatePresenter: '' as AnyComponent,
TimestampPresenter: '' as AnyComponent, TimestampPresenter: '' as AnyComponent,

View File

@ -1,5 +1,6 @@
<!-- <!--
// Copyright © 2020, 2021 Anticrm Platform Contributors. // Copyright © 2020, 2021 Anticrm Platform Contributors.
// Copyright © 2021 Hardcore Engineering Inc.
// //
// Licensed under the Eclipse Public License, Version 2.0 (the "License"); // 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 // you may not use this file except in compliance with the License. You may
@ -14,24 +15,21 @@
--> -->
<script lang="ts"> <script lang="ts">
import { IntlString } from '@anticrm/platform'
import { Label } from '@anticrm/ui' import { Label } from '@anticrm/ui'
export let value: boolean | undefined export let value: any
function getLabel(value: boolean | undefined) { function getLabel(value: boolean | undefined): IntlString {
if (value === true) return 'Yes' if (value === true) return 'Yes' as IntlString
if (value === false) return 'No' if (value === false) return 'No' as IntlString
return 'N/A' return 'N/A' as IntlString
} }
</script> </script>
<div class="flex-row-center yesno-container {value}" on:click={() => { <div class="flex-row-center yesno-container" class:yes={value === true} class:no={value === false} class:unknown={value === undefined}>
if (value === true) value = false
else if (value === false) value = undefined
else value = true
}}>
<svg class="svg-small" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"> <svg class="svg-small" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<circle cx="8" cy="8" r="6" class:yes={value === true} class:no={value === false} /> <circle class:yes={value === true} class:no={value === false} cx="8" cy="8" r="6"/>
{#if value === true} {#if value === true}
<polygon fill="#fff" points="7.4,10.9 4.9,8.4 5.7,7.6 7.3,9.1 10.2,5.6 11.1,6.4 "/> <polygon fill="#fff" points="7.4,10.9 4.9,8.4 5.7,7.6 7.3,9.1 10.2,5.6 11.1,6.4 "/>
{:else if value === false} {:else if value === false}

View File

@ -18,6 +18,7 @@ import type { Doc } from '@anticrm/core'
import StringEditor from './components/StringEditor.svelte' import StringEditor from './components/StringEditor.svelte'
import StringPresenter from './components/StringPresenter.svelte' import StringPresenter from './components/StringPresenter.svelte'
import BooleanEditor from './components/BooleanEditor.svelte' import BooleanEditor from './components/BooleanEditor.svelte'
import BooleanPresenter from './components/BooleanPresenter.svelte'
import StatePresenter from './components/StatePresenter.svelte' import StatePresenter from './components/StatePresenter.svelte'
import TimestampPresenter from './components/TimestampPresenter.svelte' import TimestampPresenter from './components/TimestampPresenter.svelte'
import TableView from './components/TableView.svelte' import TableView from './components/TableView.svelte'
@ -50,6 +51,7 @@ export default async () => ({
component: { component: {
StringEditor, StringEditor,
StringPresenter, StringPresenter,
BooleanPresenter,
BooleanEditor, BooleanEditor,
StatePresenter, StatePresenter,
TableView, TableView,

File diff suppressed because it is too large Load Diff