@things-factory/operato-board 6.1.80 → 6.1.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/apptools/{favorite-tool.js → favorite-tool.ts} +21 -25
- package/client/board-list/{board-importer.js → board-importer.ts} +14 -10
- package/client/{bootstrap.js → bootstrap.ts} +4 -3
- package/client/graphql/{board.js → board.ts} +1 -1
- package/client/graphql/{favorite-board.js → favorite-board.ts} +1 -1
- package/client/graphql/{group.js → group.ts} +2 -2
- package/client/graphql/{play-group.js → play-group.ts} +3 -3
- package/client/themes/grist-theme.css +2 -0
- package/client/viewparts/{board-info.js → board-info.ts} +121 -127
- package/client/viewparts/{group-info.js → group-info.ts} +116 -121
- package/client/viewparts/{menu-tools.js → menu-tools.ts} +69 -78
- package/client/viewparts/play-group-info.ts +249 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +33 -32
- package/{things-factory.config.js → things-factory.config.ts} +0 -4
- package/client/viewparts/play-group-info.js +0 -254
- /package/client/actions/{permissions.js → permissions.ts} +0 -0
- /package/client/graphql/{index.js → index.ts} +0 -0
- /package/client/{index.js → index.ts} +0 -0
- /package/client/reducers/{permissions.js → permissions.ts} +0 -0
- /package/client/{route.js → route.ts} +0 -0
|
@@ -2,43 +2,41 @@ import '@material/mwc-icon'
|
|
|
2
2
|
|
|
3
3
|
import gql from 'graphql-tag'
|
|
4
4
|
import { css, html, LitElement } from 'lit'
|
|
5
|
+
import { customElement, property, state } from 'lit/decorators.js'
|
|
5
6
|
import { connect } from 'pwa-helpers/connect-mixin.js'
|
|
6
7
|
|
|
7
8
|
import { store } from '@operato/shell'
|
|
8
9
|
import { client } from '@operato/graphql'
|
|
9
10
|
import { UPDATE_FAVORITES } from '@things-factory/fav-base'
|
|
10
11
|
|
|
12
|
+
@customElement('favorite-tool')
|
|
11
13
|
export class FavoriteTool extends connect(store)(LitElement) {
|
|
12
|
-
static
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
favored: Boolean,
|
|
18
|
-
acceptedPages: Array
|
|
14
|
+
static styles = css`
|
|
15
|
+
:host {
|
|
16
|
+
display: inline-block;
|
|
17
|
+
vertical-align: middle;
|
|
18
|
+
line-height: 0;
|
|
19
19
|
}
|
|
20
|
-
}
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
21
|
+
[favorable] {
|
|
22
|
+
opacity: 0.5;
|
|
23
|
+
}
|
|
24
|
+
`
|
|
25
|
+
|
|
26
|
+
@property({ type: Array }) favorites: any[] = []
|
|
27
|
+
@property({ type: Object }) user: any
|
|
28
|
+
@property({ type: String }) resourceId?: string
|
|
29
|
+
@property({ type: Boolean }) favored?: boolean
|
|
30
|
+
@property({ type: Array }) acceptedPages: any[] = []
|
|
31
|
+
|
|
32
|
+
page: any
|
|
35
33
|
|
|
36
34
|
render() {
|
|
37
35
|
var renderable = (this.acceptedPages || []).indexOf(this.page) !== -1
|
|
38
36
|
|
|
39
37
|
return renderable
|
|
40
38
|
? html`
|
|
41
|
-
<mwc-icon @click=${this.
|
|
39
|
+
<mwc-icon @click=${this.onClick.bind(this)} ?favorable=${!this.favored}
|
|
42
40
|
>${this.favored ? 'star' : 'star_border'}</mwc-icon
|
|
43
41
|
>
|
|
44
42
|
`
|
|
@@ -60,7 +58,7 @@ export class FavoriteTool extends connect(store)(LitElement) {
|
|
|
60
58
|
this.resourceId = state.route.resourceId
|
|
61
59
|
}
|
|
62
60
|
|
|
63
|
-
|
|
61
|
+
onClick(event) {
|
|
64
62
|
if (!this.resourceId) {
|
|
65
63
|
return
|
|
66
64
|
}
|
|
@@ -123,5 +121,3 @@ export class FavoriteTool extends connect(store)(LitElement) {
|
|
|
123
121
|
this.refreshFavorites()
|
|
124
122
|
}
|
|
125
123
|
}
|
|
126
|
-
|
|
127
|
-
customElements.define('favorite-tool', FavoriteTool)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import '@operato/board/ox-board-viewer.js'
|
|
2
2
|
|
|
3
|
+
import { BoardViewer } from '@operato/board/ox-board-viewer.js'
|
|
4
|
+
|
|
3
5
|
function setHighlightStyle(dropArea) {
|
|
4
6
|
var style = document.createElement('style')
|
|
5
7
|
|
|
@@ -18,7 +20,7 @@ export default class BoardImporter {
|
|
|
18
20
|
reader.readAsText(file)
|
|
19
21
|
reader.onloadend = () => {
|
|
20
22
|
try {
|
|
21
|
-
let model = JSON.parse(reader.result)
|
|
23
|
+
let model = JSON.parse(reader.result as any)
|
|
22
24
|
importer(file.name.replace(/\.[^/.]+$/, ''), model)
|
|
23
25
|
} catch (e) {
|
|
24
26
|
console.error('board import failed', e)
|
|
@@ -31,20 +33,22 @@ export default class BoardImporter {
|
|
|
31
33
|
reader.readAsText(file)
|
|
32
34
|
reader.onloadend = () => {
|
|
33
35
|
try {
|
|
34
|
-
let previewModel = JSON.parse(reader.result)
|
|
36
|
+
let previewModel = JSON.parse(reader.result as any)
|
|
35
37
|
|
|
36
|
-
var preview = document.createElement('ox-board-viewer')
|
|
38
|
+
var preview = document.createElement('ox-board-viewer') as BoardViewer
|
|
37
39
|
|
|
38
40
|
preview.style.width = '100%'
|
|
39
41
|
preview.style.height = '80%'
|
|
40
42
|
preview.style.margin = '0'
|
|
41
43
|
preview.style.padding = '0'
|
|
42
|
-
|
|
44
|
+
|
|
45
|
+
// TODO how to hand over model to previewer
|
|
46
|
+
// preview.model = previewModel
|
|
43
47
|
// preview.provider = provider;
|
|
44
48
|
|
|
45
49
|
var buttons = document.createElement('div')
|
|
46
50
|
|
|
47
|
-
buttons.
|
|
51
|
+
buttons.className = 'buttons'
|
|
48
52
|
buttons.innerHTML = `
|
|
49
53
|
<paper-button dialog-dismiss>Cancel</paper-button>
|
|
50
54
|
<paper-button dialog-confirm autofocus>Accept</paper-button>
|
|
@@ -54,11 +58,11 @@ export default class BoardImporter {
|
|
|
54
58
|
|
|
55
59
|
dialog.style.width = '100%'
|
|
56
60
|
dialog.style.height = '100%'
|
|
57
|
-
dialog.setAttribute('with-backdrop', true)
|
|
58
|
-
dialog.setAttribute('auto-fit-on-attach', true)
|
|
59
|
-
dialog.setAttribute('always-on-top', true)
|
|
61
|
+
dialog.setAttribute('with-backdrop', 'true')
|
|
62
|
+
dialog.setAttribute('auto-fit-on-attach', 'true')
|
|
63
|
+
dialog.setAttribute('always-on-top', 'true')
|
|
60
64
|
dialog.addEventListener('iron-overlay-closed', () => {
|
|
61
|
-
dialog.parentNode
|
|
65
|
+
dialog.parentNode!.removeChild(dialog)
|
|
62
66
|
})
|
|
63
67
|
|
|
64
68
|
dialog.appendChild(preview)
|
|
@@ -66,7 +70,7 @@ export default class BoardImporter {
|
|
|
66
70
|
document.body.appendChild(dialog)
|
|
67
71
|
|
|
68
72
|
requestAnimationFrame(() => {
|
|
69
|
-
dialog.open()
|
|
73
|
+
;(dialog as any).open()
|
|
70
74
|
})
|
|
71
75
|
} catch (e) {
|
|
72
76
|
console.error('board preview failed', e)
|
|
@@ -16,14 +16,15 @@ import {
|
|
|
16
16
|
VIEWPART_LEVEL,
|
|
17
17
|
VIEWPART_POSITION
|
|
18
18
|
} from '@operato/layout'
|
|
19
|
+
|
|
19
20
|
import { APPEND_APP_TOOL } from '@things-factory/apptool-base'
|
|
20
21
|
import { setupAppToolPart } from '@things-factory/apptool-ui'
|
|
21
|
-
import { auth } from '@things-factory/auth-base'
|
|
22
|
+
import { auth } from '@things-factory/auth-base/dist-client'
|
|
22
23
|
import { setAuthManagementMenus } from '@things-factory/auth-ui'
|
|
23
24
|
import { setupContextUIPart } from '@things-factory/context-ui'
|
|
24
25
|
import { ADD_MORENDA } from '@things-factory/more-base'
|
|
25
26
|
import { ADD_SETTING } from '@things-factory/setting-base'
|
|
26
|
-
import { navigate, store, UPDATE_BASE_URL } from '@
|
|
27
|
+
import { navigate, store, UPDATE_BASE_URL } from '@operato/shell'
|
|
27
28
|
|
|
28
29
|
import permissions from './reducers/permissions'
|
|
29
30
|
|
|
@@ -133,7 +134,7 @@ export default async function bootstrap() {
|
|
|
133
134
|
})
|
|
134
135
|
|
|
135
136
|
store.subscribe(async () => {
|
|
136
|
-
var state = store.getState()
|
|
137
|
+
var state = store.getState() as any
|
|
137
138
|
|
|
138
139
|
if (state.layout.width == width) {
|
|
139
140
|
return
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import gql from 'graphql-tag'
|
|
2
2
|
|
|
3
|
-
import { client } from '@
|
|
3
|
+
import { client } from '@operato/graphql'
|
|
4
4
|
|
|
5
5
|
export async function fetchGroup(id) {
|
|
6
6
|
const response = await client.query({
|
|
@@ -56,7 +56,7 @@ export async function updateGroup(group) {
|
|
|
56
56
|
export async function deleteGroup(id) {
|
|
57
57
|
const response = await client.mutate({
|
|
58
58
|
mutation: gql`
|
|
59
|
-
mutation($id: String!) {
|
|
59
|
+
mutation ($id: String!) {
|
|
60
60
|
deleteGroup(id: $id)
|
|
61
61
|
}
|
|
62
62
|
`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import gql from 'graphql-tag'
|
|
2
2
|
|
|
3
|
-
import { client } from '@
|
|
3
|
+
import { client } from '@operato/graphql'
|
|
4
4
|
|
|
5
5
|
export async function fetchPlayGroupList() {
|
|
6
6
|
const response = await client.query({
|
|
@@ -117,7 +117,7 @@ export async function updatePlayGroup(group) {
|
|
|
117
117
|
export async function deletePlayGroup(id) {
|
|
118
118
|
const response = await client.mutate({
|
|
119
119
|
mutation: gql`
|
|
120
|
-
mutation($id: String!) {
|
|
120
|
+
mutation ($id: String!) {
|
|
121
121
|
deletePlayGroup(id: $id)
|
|
122
122
|
}
|
|
123
123
|
`,
|
|
@@ -162,7 +162,7 @@ export async function joinPlayGroup(boardId, group) {
|
|
|
162
162
|
export async function leavePlayGroup(boardId, groupId) {
|
|
163
163
|
const response = await client.mutate({
|
|
164
164
|
mutation: gql`
|
|
165
|
-
mutation($id: String!, $boardIds: [String]!) {
|
|
165
|
+
mutation ($id: String!, $boardIds: [String]!) {
|
|
166
166
|
leavePlayGroup(id: $id, boardIds: $boardIds) {
|
|
167
167
|
id
|
|
168
168
|
name
|
|
@@ -34,6 +34,8 @@ body {
|
|
|
34
34
|
--grid-header-color: rgba(var(--secondary-color-rgb), 0.8);
|
|
35
35
|
--grid-header-font: bold var(--fontsize-small) var(--theme-font);
|
|
36
36
|
|
|
37
|
+
--grid-gutter-padding:var(--padding-default) 0;
|
|
38
|
+
|
|
37
39
|
--grid-record-background-color: var(--theme-white-color);
|
|
38
40
|
--grid-record-odd-background-color: rgba(255, 255, 255, 0.4);
|
|
39
41
|
--grid-record-padding: 0 0 0 var(--padding-default);
|
|
@@ -2,149 +2,145 @@ import '@material/mwc-icon'
|
|
|
2
2
|
|
|
3
3
|
import gql from 'graphql-tag'
|
|
4
4
|
import { css, html, LitElement } from 'lit'
|
|
5
|
+
import { customElement, property, state } from 'lit/decorators.js'
|
|
5
6
|
|
|
6
|
-
import { i18next } from '@
|
|
7
|
-
import { client
|
|
7
|
+
import { i18next } from '@operato/i18n'
|
|
8
|
+
import { client } from '@operato/graphql'
|
|
9
|
+
import { navigate } from '@operato/shell'
|
|
8
10
|
|
|
11
|
+
@customElement('board-info')
|
|
9
12
|
export class BoardInfo extends LitElement {
|
|
10
|
-
static
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
static styles = [
|
|
14
|
+
css`
|
|
15
|
+
:host {
|
|
16
|
+
display: block;
|
|
17
|
+
background-color: var(--main-section-background-color);
|
|
18
|
+
height: 100%;
|
|
19
|
+
min-width: 350px;
|
|
20
|
+
overflow: auto;
|
|
21
|
+
position: relative;
|
|
22
|
+
|
|
23
|
+
--form-grid-gap: 2px 0;
|
|
24
|
+
--input-field-padding: var(--padding-default);
|
|
25
|
+
--legend-padding: var(--padding-default) 0 var(--padding-narrow) 0;
|
|
26
|
+
--mdc-button-horizontal-padding: var(--padding-default);
|
|
19
27
|
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
css`
|
|
26
|
-
:host {
|
|
27
|
-
display: block;
|
|
28
|
-
background-color: var(--main-section-background-color);
|
|
29
|
-
height: 100%;
|
|
30
|
-
min-width: 350px;
|
|
31
|
-
overflow: auto;
|
|
32
|
-
position: relative;
|
|
33
|
-
|
|
34
|
-
--form-grid-gap: 2px 0;
|
|
35
|
-
--input-field-padding: var(--padding-default);
|
|
36
|
-
--legend-padding: var(--padding-default) 0 var(--padding-narrow) 0;
|
|
37
|
-
--mdc-button-horizontal-padding: var(--padding-default);
|
|
38
|
-
}
|
|
29
|
+
img {
|
|
30
|
+
display: block;
|
|
39
31
|
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
margin: auto;
|
|
33
|
+
max-width: 100%;
|
|
34
|
+
max-height: 100%;
|
|
35
|
+
border-bottom: 2px solid rgba(0, 0, 0, 0.1);
|
|
36
|
+
}
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
form {
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: repeat(12, 1fr);
|
|
41
|
+
grid-gap: var(--form-grid-gap);
|
|
42
|
+
grid-auto-rows: minmax(24px, auto);
|
|
43
|
+
padding: var(--padding-wide);
|
|
44
|
+
align-items: center;
|
|
45
|
+
}
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
padding: var(--padding-wide);
|
|
55
|
-
align-items: center;
|
|
56
|
-
}
|
|
47
|
+
[buttons] {
|
|
48
|
+
grid-column: span 12;
|
|
49
|
+
padding: var(--padding-default) 0;
|
|
50
|
+
text-align: right;
|
|
51
|
+
}
|
|
57
52
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
[buttons] * {
|
|
54
|
+
margin: 0 0 0 var(--margin-narrow);
|
|
55
|
+
}
|
|
56
|
+
[danger] {
|
|
57
|
+
float: left;
|
|
58
|
+
margin: 0 var(--margin-narrow) 0 0;
|
|
59
|
+
--mdc-theme-primary: var(--status-danger-color);
|
|
60
|
+
}
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
[danger] {
|
|
68
|
-
float: left;
|
|
69
|
-
margin: 0 var(--margin-narrow) 0 0;
|
|
70
|
-
--mdc-theme-primary: var(--status-danger-color);
|
|
71
|
-
}
|
|
62
|
+
fieldset {
|
|
63
|
+
display: contents;
|
|
64
|
+
}
|
|
72
65
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
legend {
|
|
67
|
+
grid-column: span 12;
|
|
68
|
+
padding: var(--legend-padding);
|
|
69
|
+
font: var(--legend-font);
|
|
70
|
+
color: var(--legend-text-color);
|
|
71
|
+
text-transform: capitalize;
|
|
72
|
+
}
|
|
76
73
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
74
|
+
label {
|
|
75
|
+
grid-column: span 12;
|
|
76
|
+
text-transform: capitalize;
|
|
77
|
+
color: var(--label-color);
|
|
78
|
+
font: var(--label-font);
|
|
79
|
+
}
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
span {
|
|
82
|
+
grid-column: span 12;
|
|
83
|
+
border-bottom: var(--border-dark-color);
|
|
84
|
+
margin-bottom: var(--margin-default);
|
|
85
|
+
padding-bottom: var(--padding-narrow);
|
|
86
|
+
font: var(--input-field-font);
|
|
87
|
+
}
|
|
88
|
+
span mwc-icon {
|
|
89
|
+
vertical-align: middle;
|
|
90
|
+
font-size: var(--fontsize-large);
|
|
91
|
+
color: var(--primary-color);
|
|
92
|
+
}
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
input,
|
|
95
|
+
table,
|
|
96
|
+
select,
|
|
97
|
+
textarea,
|
|
98
|
+
[custom-input] {
|
|
99
|
+
grid-column: span 12;
|
|
100
|
+
|
|
101
|
+
border: var(--input-field-border);
|
|
102
|
+
border-radius: var(--input-field-border-radius);
|
|
103
|
+
margin-bottom: var(--margin-default);
|
|
104
|
+
padding: var(--input-field-padding);
|
|
105
|
+
font: var(--input-field-font);
|
|
106
|
+
}
|
|
104
107
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
border: var(--input-field-border);
|
|
113
|
-
border-radius: var(--input-field-border-radius);
|
|
114
|
-
margin-bottom: var(--margin-default);
|
|
115
|
-
padding: var(--input-field-padding);
|
|
116
|
-
font: var(--input-field-font);
|
|
117
|
-
}
|
|
108
|
+
input[type='checkbox'],
|
|
109
|
+
input[type='radio'] {
|
|
110
|
+
place-self: center;
|
|
111
|
+
margin: 0;
|
|
112
|
+
grid-column: 1;
|
|
113
|
+
}
|
|
118
114
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
grid-column: 1;
|
|
124
|
-
}
|
|
115
|
+
input[type='checkbox'] + label,
|
|
116
|
+
input[type='radio'] + label {
|
|
117
|
+
text-align: left;
|
|
118
|
+
grid-column: span 11 / auto;
|
|
125
119
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
grid-column: span 11 / auto;
|
|
120
|
+
font: var(--form-sublabel-font);
|
|
121
|
+
color: var(--form-sublabel-color);
|
|
122
|
+
}
|
|
130
123
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
124
|
+
input:focus {
|
|
125
|
+
outline: none;
|
|
126
|
+
border: 1px solid var(--focus-background-color);
|
|
127
|
+
}
|
|
134
128
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
@media screen and (max-width: 460px) {
|
|
130
|
+
:host {
|
|
131
|
+
width: 100vw;
|
|
138
132
|
}
|
|
133
|
+
}
|
|
134
|
+
`
|
|
135
|
+
]
|
|
139
136
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
137
|
+
@property({ type: String }) boardId?: string
|
|
138
|
+
@property({ type: String }) groupId?: string
|
|
139
|
+
@property({ type: Boolean, attribute: 'enable-modeller' }) enableModeller?: boolean
|
|
140
|
+
|
|
141
|
+
@state() board: any
|
|
142
|
+
@state() boardGroupList: any[] = []
|
|
143
|
+
@state() playGroupList: any[] = []
|
|
148
144
|
|
|
149
145
|
render() {
|
|
150
146
|
var board = this.board || { name: '', description: '', playGroups: [] }
|
|
@@ -187,7 +183,7 @@ export class BoardInfo extends LitElement {
|
|
|
187
183
|
<label>${i18next.t('label.group')}</label>
|
|
188
184
|
<select
|
|
189
185
|
@change=${e => (this.board.groupId = e.target.value)}
|
|
190
|
-
.value=${this.groupId}
|
|
186
|
+
.value=${this.groupId || ''}
|
|
191
187
|
?disabled=${!this.enableModeller}
|
|
192
188
|
>
|
|
193
189
|
<option value="" ?selected=${'' == this.groupId}></option>
|
|
@@ -212,7 +208,7 @@ export class BoardInfo extends LitElement {
|
|
|
212
208
|
dense
|
|
213
209
|
raised
|
|
214
210
|
danger
|
|
215
|
-
label=${i18next.t('button.delete')}
|
|
211
|
+
label=${String(i18next.t('button.delete'))}
|
|
216
212
|
?disabled=${!this.enableModeller}
|
|
217
213
|
@click=${this.deleteBoard.bind(this)}
|
|
218
214
|
icon="delete_outline"
|
|
@@ -220,7 +216,7 @@ export class BoardInfo extends LitElement {
|
|
|
220
216
|
<mwc-button
|
|
221
217
|
dense
|
|
222
218
|
raised
|
|
223
|
-
label=${i18next.t('button.save')}
|
|
219
|
+
label=${String(i18next.t('button.save'))}
|
|
224
220
|
?disabled=${!this.enableModeller}
|
|
225
221
|
@click=${this.updateBoard.bind(this)}
|
|
226
222
|
icon="done"
|
|
@@ -366,5 +362,3 @@ export class BoardInfo extends LitElement {
|
|
|
366
362
|
history.back()
|
|
367
363
|
}
|
|
368
364
|
}
|
|
369
|
-
|
|
370
|
-
customElements.define('board-info', BoardInfo)
|