@windward/core 0.2.1 → 0.2.2
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/components/Content/Blocks/Accordion.vue +13 -4
- package/components/Content/Blocks/Email.vue +61 -23
- package/components/Content/Blocks/Feedback.vue +2 -1
- package/components/Content/Blocks/Image.vue +7 -0
- package/components/Content/Blocks/OpenResponseCollate.vue +1 -1
- package/components/Content/Blocks/UserUpload.vue +2 -2
- package/components/Settings/AccordionSettings.vue +36 -11
- package/components/Settings/EmailSettings.vue +61 -19
- package/components/Settings/MathSettings.vue +6 -4
- package/components/Settings/ScenarioChoiceSettings.vue +54 -47
- package/components/Settings/TabSettings.vue +3 -1
- package/components/Settings/TextEditorSettings.vue +72 -30
- package/components/Settings/UserUploadSettings.vue +3 -3
- package/components/Settings/VideoSettings.vue +2 -2
- package/components/utils/MathExpressionEditor.vue +4 -5
- package/components/utils/TinyMCEWrapper.vue +33 -8
- package/components/utils/glossary/CourseGlossary.vue +45 -32
- package/config/tinymce.config.ts +2 -1
- package/helpers/tinymce/plugin.ts +18 -4
- package/i18n/en-US/components/content/blocks/email.ts +2 -0
- package/i18n/en-US/components/settings/accordion.ts +2 -1
- package/i18n/en-US/components/settings/email.ts +1 -0
- package/i18n/en-US/components/settings/text_editor.ts +4 -1
- package/i18n/es-ES/components/content/blocks/email.ts +2 -0
- package/i18n/es-ES/components/settings/accordion.ts +2 -1
- package/i18n/es-ES/components/settings/email.ts +1 -0
- package/i18n/es-ES/components/settings/text_editor.ts +4 -1
- package/i18n/sv-SE/components/content/blocks/email.ts +2 -0
- package/i18n/sv-SE/components/settings/accordion.ts +1 -0
- package/i18n/sv-SE/components/settings/email.ts +1 -0
- package/i18n/sv-SE/components/settings/text_editor.ts +4 -1
- package/package.json +1 -1
- package/test/Components/Settings/EmailSettings.spec.js +18 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<v-expansion-panels
|
|
4
|
-
v-model="
|
|
4
|
+
v-model="selectedPanels"
|
|
5
5
|
flat
|
|
6
6
|
accordion
|
|
7
7
|
focusable
|
|
@@ -77,8 +77,8 @@ export default {
|
|
|
77
77
|
this.block.metadata.config.items = []
|
|
78
78
|
this.block.metadata.config.items.push(defaultObject)
|
|
79
79
|
}
|
|
80
|
-
if (_.isEmpty(this.block.metadata.config.
|
|
81
|
-
this.block.metadata.config.
|
|
80
|
+
if (_.isEmpty(this.block.metadata.config.selectedPanels)) {
|
|
81
|
+
this.block.metadata.config.selectedPanels = 0
|
|
82
82
|
}
|
|
83
83
|
this.block.body = this.$t(
|
|
84
84
|
'windward.core.shared.content_blocks.title.accordion'
|
|
@@ -88,10 +88,19 @@ export default {
|
|
|
88
88
|
return {
|
|
89
89
|
expansionPanelKey: '0',
|
|
90
90
|
editingInContentItem: false,
|
|
91
|
+
selectedPanels: 0,
|
|
91
92
|
}
|
|
92
93
|
},
|
|
93
94
|
watch: {
|
|
94
95
|
value(newValue) {
|
|
96
|
+
if (
|
|
97
|
+
!this.render &&
|
|
98
|
+
this.selectedPanels !== newValue.metadata.config.selectedPanels
|
|
99
|
+
) {
|
|
100
|
+
// update editing content block
|
|
101
|
+
this.selectedPanels = newValue.metadata.config.selectedPanels
|
|
102
|
+
this.expansionPanelKey = Crypto.id()
|
|
103
|
+
}
|
|
95
104
|
const length = newValue.metadata.config.items.length
|
|
96
105
|
let counter = 0
|
|
97
106
|
newValue.metadata.config.items.forEach((element) => {
|
|
@@ -115,6 +124,7 @@ export default {
|
|
|
115
124
|
this.block.metadata.config.items.forEach((element) => {
|
|
116
125
|
element.expand = false
|
|
117
126
|
})
|
|
127
|
+
this.selectedPanels = 0
|
|
118
128
|
}
|
|
119
129
|
},
|
|
120
130
|
},
|
|
@@ -123,7 +133,6 @@ export default {
|
|
|
123
133
|
this.block.metadata.config.items.forEach((element) => {
|
|
124
134
|
element.expand = false
|
|
125
135
|
})
|
|
126
|
-
this.block.metadata.config.currentAccordion = null
|
|
127
136
|
},
|
|
128
137
|
},
|
|
129
138
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-container
|
|
2
|
+
<v-container>
|
|
3
3
|
<v-row
|
|
4
4
|
v-if="
|
|
5
5
|
block.metadata.config.title ||
|
|
@@ -16,16 +16,20 @@
|
|
|
16
16
|
</v-col>
|
|
17
17
|
</v-row>
|
|
18
18
|
<v-row>
|
|
19
|
-
<v-expansion-panels
|
|
19
|
+
<v-expansion-panels
|
|
20
|
+
v-model="selectedPanels"
|
|
21
|
+
:key="expansionPanelKey"
|
|
22
|
+
accordion
|
|
23
|
+
>
|
|
20
24
|
<v-container
|
|
21
25
|
class="pa-0 primary container-subject d-flex justify-center align-center"
|
|
22
26
|
>
|
|
23
|
-
<v-row class="d-flex
|
|
27
|
+
<v-row class="d-flex ma-5">
|
|
24
28
|
<v-col cols="6">
|
|
25
29
|
{{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
$t(
|
|
31
|
+
'windward.core.components.content.blocks.email.email'
|
|
32
|
+
)
|
|
29
33
|
}}
|
|
30
34
|
</v-col>
|
|
31
35
|
<v-col
|
|
@@ -75,10 +79,10 @@
|
|
|
75
79
|
>
|
|
76
80
|
</v-col>
|
|
77
81
|
<v-col
|
|
78
|
-
xl="
|
|
79
|
-
lg="
|
|
80
|
-
md="
|
|
81
|
-
sm="
|
|
82
|
+
xl="4"
|
|
83
|
+
lg="4"
|
|
84
|
+
md="5"
|
|
85
|
+
sm="5"
|
|
82
86
|
xs="10"
|
|
83
87
|
class="d-flex align-center"
|
|
84
88
|
>
|
|
@@ -88,12 +92,16 @@
|
|
|
88
92
|
</v-col>
|
|
89
93
|
<v-col
|
|
90
94
|
v-if="selectedPanels !== index"
|
|
91
|
-
xl="
|
|
92
|
-
lg="
|
|
95
|
+
xl="7"
|
|
96
|
+
lg="7"
|
|
97
|
+
md="6"
|
|
98
|
+
sm="5"
|
|
93
99
|
class="d-flex align-center container-body-preview"
|
|
94
100
|
>
|
|
95
101
|
<div class="div-preview">
|
|
96
|
-
{{
|
|
102
|
+
{{
|
|
103
|
+
item.body ? onRemoveTags(item.body) : ''
|
|
104
|
+
}}
|
|
97
105
|
</div>
|
|
98
106
|
</v-col>
|
|
99
107
|
</v-row>
|
|
@@ -127,18 +135,25 @@
|
|
|
127
135
|
)
|
|
128
136
|
}}: {{ item.cc }}
|
|
129
137
|
</div>
|
|
138
|
+
<div class="div-details-cc">
|
|
139
|
+
{{
|
|
140
|
+
$t(
|
|
141
|
+
'windward.core.components.content.blocks.email.subject'
|
|
142
|
+
)
|
|
143
|
+
}}: {{ item.subject }}
|
|
144
|
+
</div>
|
|
130
145
|
</v-col>
|
|
131
146
|
</v-row>
|
|
132
147
|
<v-row>
|
|
133
148
|
<v-col cols="1"></v-col>
|
|
134
149
|
<v-col class="pl-4">
|
|
135
150
|
<TextViewer
|
|
136
|
-
v-if="!item.
|
|
151
|
+
v-if="!item.tinymce_expand"
|
|
137
152
|
v-model="item.body"
|
|
138
153
|
text-viewer
|
|
139
154
|
></TextViewer>
|
|
140
155
|
<TextEditor
|
|
141
|
-
v-if="!render && item.
|
|
156
|
+
v-if="!render && item.tinymce_expand"
|
|
142
157
|
v-model="
|
|
143
158
|
block.metadata.config.emails[index]
|
|
144
159
|
.body
|
|
@@ -155,7 +170,7 @@
|
|
|
155
170
|
>
|
|
156
171
|
<v-row class="pt-4">
|
|
157
172
|
<v-col cols="10" class="pa-0">
|
|
158
|
-
<v-btn color="primary"
|
|
173
|
+
<v-btn color="primary" text>
|
|
159
174
|
<v-icon>mdi-reply</v-icon>
|
|
160
175
|
{{
|
|
161
176
|
$t(
|
|
@@ -163,7 +178,7 @@
|
|
|
163
178
|
)
|
|
164
179
|
}}</v-btn
|
|
165
180
|
>
|
|
166
|
-
<v-btn color="primary"
|
|
181
|
+
<v-btn color="primary" text>
|
|
167
182
|
<v-icon>mdi-reply-all</v-icon>
|
|
168
183
|
{{
|
|
169
184
|
$t(
|
|
@@ -171,7 +186,7 @@
|
|
|
171
186
|
)
|
|
172
187
|
}}</v-btn
|
|
173
188
|
>
|
|
174
|
-
<v-btn color="primary"
|
|
189
|
+
<v-btn color="primary" text>
|
|
175
190
|
<v-icon>mdi-share</v-icon>
|
|
176
191
|
{{
|
|
177
192
|
$t(
|
|
@@ -199,6 +214,7 @@
|
|
|
199
214
|
</template>
|
|
200
215
|
<script>
|
|
201
216
|
import _ from 'lodash'
|
|
217
|
+
import Crypto from '~/helpers/Crypto'
|
|
202
218
|
import TextEditor from '~/components/Text/TextEditor'
|
|
203
219
|
import TextViewer from '~/components/Text/TextViewer'
|
|
204
220
|
import BaseContentBlock from '~/components/Content/Blocks/BaseContentBlock'
|
|
@@ -231,6 +247,9 @@ export default {
|
|
|
231
247
|
if (_.isEmpty(this.block.metadata.config.activeEmail)) {
|
|
232
248
|
this.block.metadata.config.activeEmail = 0
|
|
233
249
|
}
|
|
250
|
+
if (_.isEmpty(this.block.metadata.config.selectedPanels)) {
|
|
251
|
+
this.block.metadata.config.selectedPanels = 0
|
|
252
|
+
}
|
|
234
253
|
this.block.body = this.$t(
|
|
235
254
|
'windward.core.components.content.blocks.email.title'
|
|
236
255
|
)
|
|
@@ -242,18 +261,34 @@ export default {
|
|
|
242
261
|
}
|
|
243
262
|
},
|
|
244
263
|
watch: {
|
|
245
|
-
render() {
|
|
246
|
-
if (
|
|
264
|
+
render(newValue) {
|
|
265
|
+
if (newValue) {
|
|
247
266
|
this.block.metadata.config.emails.forEach((element) => {
|
|
248
|
-
element.
|
|
267
|
+
element.tinymce_expand = false
|
|
249
268
|
})
|
|
250
269
|
this.selectedPanels =
|
|
251
270
|
this.block.metadata.config.emails.length - 1
|
|
271
|
+
} else {
|
|
272
|
+
// when in editing mode first panel opens initially
|
|
273
|
+
this.selectedPanels = 0
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
value(newValue) {
|
|
277
|
+
if (
|
|
278
|
+
!this.render &&
|
|
279
|
+
this.selectedPanels !== newValue.metadata.config.selectedPanels
|
|
280
|
+
) {
|
|
281
|
+
// update editing content block
|
|
282
|
+
this.selectedPanels = newValue.metadata.config.selectedPanels
|
|
283
|
+
this.expansionPanelKey = Crypto.id()
|
|
252
284
|
}
|
|
253
285
|
},
|
|
254
286
|
},
|
|
255
287
|
mounted() {
|
|
256
|
-
this.selectedPanels =
|
|
288
|
+
this.selectedPanels =
|
|
289
|
+
this.block.metadata.config.emails.length === 0
|
|
290
|
+
? this.block.metadata.config.emails.length
|
|
291
|
+
: this.block.metadata.config.emails.length - 1
|
|
257
292
|
},
|
|
258
293
|
methods: {
|
|
259
294
|
onRemoveTags(body) {
|
|
@@ -284,7 +319,7 @@ export default {
|
|
|
284
319
|
.v-expansion-panel {
|
|
285
320
|
border: 1px solid var(--v-primary-base);
|
|
286
321
|
}
|
|
287
|
-
@media only screen and (max-width:
|
|
322
|
+
@media only screen and (max-width: 800px) {
|
|
288
323
|
.container-body-preview {
|
|
289
324
|
display: none !important;
|
|
290
325
|
}
|
|
@@ -299,4 +334,7 @@ export default {
|
|
|
299
334
|
.container-header {
|
|
300
335
|
width: 100%;
|
|
301
336
|
}
|
|
337
|
+
.v-expansion-panels {
|
|
338
|
+
z-index: 0 !important;
|
|
339
|
+
}
|
|
302
340
|
</style>
|
|
@@ -128,6 +128,10 @@ export default {
|
|
|
128
128
|
},
|
|
129
129
|
imageClass() {
|
|
130
130
|
let imageClass = ''
|
|
131
|
+
// change cursor to pointer for images that open in larger modal
|
|
132
|
+
if (this.block.metadata.config.modal) {
|
|
133
|
+
imageClass += ' container-pointer'
|
|
134
|
+
}
|
|
131
135
|
// If NOT hide background, inclide the extra class
|
|
132
136
|
if (!_.get(this.block.metadata, 'config.hide_background', false)) {
|
|
133
137
|
imageClass += ' img-white'
|
|
@@ -174,6 +178,9 @@ export default {
|
|
|
174
178
|
text-align: center;
|
|
175
179
|
margin-top: -175px;
|
|
176
180
|
}
|
|
181
|
+
.container-pointer {
|
|
182
|
+
cursor: pointer;
|
|
183
|
+
}
|
|
177
184
|
::v-deep .v-skeleton-loader.v-skeleton-loader--is-loading {
|
|
178
185
|
.v-skeleton-loader__image {
|
|
179
186
|
height: 100%;
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
"
|
|
58
58
|
></FileDropZone>
|
|
59
59
|
|
|
60
|
-
<v-container class="
|
|
60
|
+
<v-container class="text-center">
|
|
61
61
|
<v-btn
|
|
62
62
|
:disabled="!canUpload || loading"
|
|
63
|
-
color="
|
|
63
|
+
color="primary"
|
|
64
64
|
class="text-center"
|
|
65
65
|
@click="handleUpload"
|
|
66
66
|
>
|
|
@@ -10,11 +10,9 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
<SortableExpansionPanel
|
|
12
12
|
v-model="block.metadata.config.items"
|
|
13
|
-
v-bind:currentPanel.sync="
|
|
14
|
-
block.metadata.config.currentAccordion
|
|
15
|
-
"
|
|
16
13
|
@click:close="onRemoveElement($event)"
|
|
17
14
|
@change="onDragged"
|
|
15
|
+
@update:currentPanel="onUpdatePanel"
|
|
18
16
|
>
|
|
19
17
|
<template #header="{ item }">{{
|
|
20
18
|
item.header
|
|
@@ -26,16 +24,17 @@
|
|
|
26
24
|
<template #body="{ index }">
|
|
27
25
|
<v-container :key="expansionPanelKey">
|
|
28
26
|
<v-text-field
|
|
29
|
-
outlined
|
|
30
|
-
:autofocus="true"
|
|
31
27
|
v-model="
|
|
32
28
|
block.metadata.config.items[index].header
|
|
33
29
|
"
|
|
30
|
+
:autofocus="true"
|
|
31
|
+
outlined
|
|
34
32
|
:label="
|
|
35
33
|
$t(
|
|
36
34
|
'windward.core.shared.settings.title.title'
|
|
37
35
|
)
|
|
38
36
|
"
|
|
37
|
+
@focus="onTextAreaFocus"
|
|
39
38
|
></v-text-field>
|
|
40
39
|
<v-btn
|
|
41
40
|
@click="
|
|
@@ -43,12 +42,14 @@
|
|
|
43
42
|
block.metadata.config.items[index]
|
|
44
43
|
)
|
|
45
44
|
"
|
|
45
|
+
text
|
|
46
46
|
>
|
|
47
47
|
<v-icon
|
|
48
48
|
v-if="
|
|
49
49
|
!block.metadata.config.items[index]
|
|
50
50
|
.expand
|
|
51
51
|
"
|
|
52
|
+
color="primary"
|
|
52
53
|
>mdi-arrow-expand-all</v-icon
|
|
53
54
|
>
|
|
54
55
|
<v-icon
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
block.metadata.config.items[index]
|
|
57
58
|
.expand
|
|
58
59
|
"
|
|
60
|
+
color="primary"
|
|
59
61
|
>
|
|
60
62
|
mdi-arrow-collapse-all
|
|
61
63
|
</v-icon>
|
|
@@ -67,6 +69,11 @@
|
|
|
67
69
|
v-model="
|
|
68
70
|
block.metadata.config.items[index].content
|
|
69
71
|
"
|
|
72
|
+
:label="
|
|
73
|
+
$t(
|
|
74
|
+
'windward.core.components.settings.accordion.label'
|
|
75
|
+
)
|
|
76
|
+
"
|
|
70
77
|
></TextEditor>
|
|
71
78
|
</v-container>
|
|
72
79
|
</template>
|
|
@@ -131,10 +138,9 @@ export default {
|
|
|
131
138
|
this.block.metadata.config.items = []
|
|
132
139
|
this.block.metadata.config.items.push(defaultObject)
|
|
133
140
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
this.block.body = this.$t('windward.core.shared.content_blocks.title.accordion')
|
|
141
|
+
this.block.body = this.$t(
|
|
142
|
+
'windward.core.shared.content_blocks.title.accordion'
|
|
143
|
+
)
|
|
138
144
|
},
|
|
139
145
|
data() {
|
|
140
146
|
return {
|
|
@@ -148,8 +154,20 @@ export default {
|
|
|
148
154
|
clearTimeout(this.debouncer)
|
|
149
155
|
}
|
|
150
156
|
},
|
|
151
|
-
|
|
157
|
+
mounted() {
|
|
158
|
+
this.block.metadata.config.selectedPanels = 0
|
|
159
|
+
},
|
|
152
160
|
methods: {
|
|
161
|
+
onUpdatePanel($event) {
|
|
162
|
+
if ($event !== this.block.metadata.config.selectedPanels) {
|
|
163
|
+
//catch click event to open selected panel to edit
|
|
164
|
+
this.block.metadata.config.selectedPanels = $event
|
|
165
|
+
} else {
|
|
166
|
+
// if user clicks same panel again expansion panel closes
|
|
167
|
+
// setting selected to null will close content blocks expansion panels
|
|
168
|
+
this.block.metadata.config.selectedPanels = null
|
|
169
|
+
}
|
|
170
|
+
},
|
|
153
171
|
onAddElement() {
|
|
154
172
|
const default_item = {
|
|
155
173
|
header: '',
|
|
@@ -157,7 +175,7 @@ export default {
|
|
|
157
175
|
content: '',
|
|
158
176
|
}
|
|
159
177
|
this.block.metadata.config.items.push(default_item)
|
|
160
|
-
this.block.metadata.config.
|
|
178
|
+
this.block.metadata.config.selectedPanels =
|
|
161
179
|
this.block.metadata.config.items.length - 1
|
|
162
180
|
},
|
|
163
181
|
onRemoveElement(index) {
|
|
@@ -171,6 +189,13 @@ export default {
|
|
|
171
189
|
onDragged() {
|
|
172
190
|
// need to remount body after dragged to update the content body on the element
|
|
173
191
|
this.expansionPanelKey = Crypto.id()
|
|
192
|
+
//close all panels on drag, leaving them open confuses the tracking as indexes changes around
|
|
193
|
+
this.block.metadata.config.selectedPanels = null
|
|
194
|
+
},
|
|
195
|
+
onTextAreaFocus($event) {
|
|
196
|
+
// prevent focus error that is happening on text field because of last pass
|
|
197
|
+
$event.preventDefault()
|
|
198
|
+
$event.stopPropagation()
|
|
174
199
|
},
|
|
175
200
|
},
|
|
176
201
|
}
|
|
@@ -18,20 +18,14 @@
|
|
|
18
18
|
:label="$t('windward.core.shared.settings.title.instructions')"
|
|
19
19
|
></v-textarea>
|
|
20
20
|
</v-container>
|
|
21
|
-
<v-container class="pa-0">
|
|
22
|
-
<v-text-field
|
|
23
|
-
v-model="block.metadata.config.subject"
|
|
24
|
-
outlined
|
|
25
|
-
:label="$t('windward.core.components.settings.email.subject')"
|
|
26
|
-
></v-text-field>
|
|
27
|
-
</v-container>
|
|
28
21
|
<v-divider class="my-4 primary"></v-divider>
|
|
29
22
|
<v-container class="pa-0">
|
|
30
|
-
<p>
|
|
23
|
+
<p>{{ $t('windward.core.components.settings.email.items') }}</p>
|
|
31
24
|
<SortableExpansionPanel
|
|
32
25
|
v-model="block.metadata.config.emails"
|
|
33
26
|
@click:close="onRemoveElement($event)"
|
|
34
27
|
@change="onDragged"
|
|
28
|
+
@update:currentPanel="onUpdatePanel"
|
|
35
29
|
>
|
|
36
30
|
<template #header="{ item }">{{
|
|
37
31
|
item.from
|
|
@@ -66,6 +60,17 @@
|
|
|
66
60
|
$t('windward.core.components.settings.email.cc')
|
|
67
61
|
"
|
|
68
62
|
></v-text-field>
|
|
63
|
+
<v-text-field
|
|
64
|
+
v-model="
|
|
65
|
+
block.metadata.config.emails[index].subject
|
|
66
|
+
"
|
|
67
|
+
outlined
|
|
68
|
+
:label="
|
|
69
|
+
$t(
|
|
70
|
+
'windward.core.components.settings.email.subject'
|
|
71
|
+
)
|
|
72
|
+
"
|
|
73
|
+
></v-text-field>
|
|
69
74
|
<v-btn
|
|
70
75
|
@click="
|
|
71
76
|
onToggleExpand(
|
|
@@ -73,24 +78,37 @@
|
|
|
73
78
|
index
|
|
74
79
|
)
|
|
75
80
|
"
|
|
81
|
+
text
|
|
76
82
|
>
|
|
77
83
|
<v-icon
|
|
78
84
|
v-if="
|
|
79
|
-
!block.metadata.config.emails[index]
|
|
85
|
+
!block.metadata.config.emails[index]
|
|
86
|
+
.tinymce_expand
|
|
80
87
|
"
|
|
88
|
+
color="primary"
|
|
81
89
|
>mdi-arrow-expand-all</v-icon
|
|
82
90
|
>
|
|
83
91
|
<v-icon
|
|
84
92
|
v-if="
|
|
85
|
-
block.metadata.config.emails[index]
|
|
93
|
+
block.metadata.config.emails[index]
|
|
94
|
+
.tinymce_expand
|
|
86
95
|
"
|
|
96
|
+
color="primary"
|
|
87
97
|
>
|
|
88
98
|
mdi-arrow-collapse-all
|
|
89
99
|
</v-icon>
|
|
90
100
|
</v-btn>
|
|
91
101
|
<TextEditor
|
|
92
|
-
v-show="
|
|
102
|
+
v-show="
|
|
103
|
+
!block.metadata.config.emails[index]
|
|
104
|
+
.tinymce_expand
|
|
105
|
+
"
|
|
93
106
|
v-model="block.metadata.config.emails[index].body"
|
|
107
|
+
:label="
|
|
108
|
+
$t(
|
|
109
|
+
'windward.core.components.settings.email.placeholder'
|
|
110
|
+
)
|
|
111
|
+
"
|
|
94
112
|
></TextEditor>
|
|
95
113
|
</v-container>
|
|
96
114
|
</template>
|
|
@@ -101,7 +119,7 @@
|
|
|
101
119
|
<v-btn color="primary" @click="onAddElement"
|
|
102
120
|
><v-icon>mdi-plus</v-icon
|
|
103
121
|
>{{
|
|
104
|
-
$t('windward.core.components.settings.
|
|
122
|
+
$t('windward.core.components.settings.email.add')
|
|
105
123
|
}}</v-btn
|
|
106
124
|
>
|
|
107
125
|
</v-row>
|
|
@@ -155,19 +173,23 @@ export default {
|
|
|
155
173
|
from: '',
|
|
156
174
|
to: '',
|
|
157
175
|
cc: '',
|
|
176
|
+
subject: '',
|
|
158
177
|
body: '',
|
|
159
|
-
|
|
178
|
+
tinymce_expand: false,
|
|
160
179
|
initials: '',
|
|
161
180
|
}
|
|
162
181
|
this.block.metadata.config.emails.push(defaultObject)
|
|
163
182
|
}
|
|
164
|
-
this.block.body = this.$t(
|
|
183
|
+
this.block.body = this.$t(
|
|
184
|
+
'windward.core.components.content.blocks.email.title'
|
|
185
|
+
)
|
|
165
186
|
},
|
|
166
187
|
data() {
|
|
167
188
|
return {
|
|
168
189
|
valid: true,
|
|
169
190
|
loading: false,
|
|
170
191
|
expansionPanelKey: 0,
|
|
192
|
+
editingPanel: 0,
|
|
171
193
|
}
|
|
172
194
|
},
|
|
173
195
|
beforeDestroy() {
|
|
@@ -175,14 +197,29 @@ export default {
|
|
|
175
197
|
clearTimeout(this.debouncer)
|
|
176
198
|
}
|
|
177
199
|
},
|
|
200
|
+
mounted() {
|
|
201
|
+
this.block.metadata.config.selectedPanels = 0
|
|
202
|
+
},
|
|
178
203
|
methods: {
|
|
179
204
|
onBeforeSave() {
|
|
180
205
|
this.block.metadata.config.emails.forEach((element) => {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
206
|
+
if (element.from) {
|
|
207
|
+
let matches = element.from.match(/\b(\w)/g)
|
|
208
|
+
element.initials = matches.join('')
|
|
209
|
+
}
|
|
210
|
+
element.tinymce_expand = false
|
|
184
211
|
})
|
|
185
212
|
},
|
|
213
|
+
onUpdatePanel($event) {
|
|
214
|
+
if ($event !== this.block.metadata.config.selectedPanels) {
|
|
215
|
+
//catch click event to open selected panel to edit
|
|
216
|
+
this.block.metadata.config.selectedPanels = $event
|
|
217
|
+
} else {
|
|
218
|
+
// if user clicks same panel again expansion panel closes
|
|
219
|
+
// setting selected to null will close content blocks expansion panels
|
|
220
|
+
this.block.metadata.config.selectedPanels = null
|
|
221
|
+
}
|
|
222
|
+
},
|
|
186
223
|
onRemoveElement(event) {
|
|
187
224
|
this.block.metadata.config.emails.splice(event, 1)
|
|
188
225
|
this.expansionPanelKey = Crypto.id()
|
|
@@ -192,19 +229,24 @@ export default {
|
|
|
192
229
|
from: '',
|
|
193
230
|
to: '',
|
|
194
231
|
cc: '',
|
|
232
|
+
subject: '',
|
|
195
233
|
body: '',
|
|
196
|
-
|
|
234
|
+
tinymce_expand: false,
|
|
197
235
|
initials: '',
|
|
198
236
|
}
|
|
199
237
|
this.block.metadata.config.emails.push(defaultObject)
|
|
238
|
+
this.block.metadata.config.selectedPanels =
|
|
239
|
+
this.block.metadata.config.emails.length - 1
|
|
200
240
|
},
|
|
201
241
|
onToggleExpand(item, index) {
|
|
202
242
|
this.expansionPanelKey = Crypto.id()
|
|
203
|
-
return (item.
|
|
243
|
+
return (item.tinymce_expand = !item.tinymce_expand)
|
|
204
244
|
},
|
|
205
245
|
onDragged() {
|
|
206
246
|
// need to remount body after dragged to update the content body on the element
|
|
207
247
|
this.expansionPanelKey = Crypto.id()
|
|
248
|
+
//close all panels on drag, leaving them open confuses the tracking as indexes changes around
|
|
249
|
+
this.block.metadata.config.selectedPanels = null
|
|
208
250
|
},
|
|
209
251
|
},
|
|
210
252
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<br />
|
|
4
|
-
<v-btn @click="onToggleExpand" class="mb-2">
|
|
5
|
-
<v-icon v-if="!block.metadata.config.expand"
|
|
4
|
+
<v-btn @click="onToggleExpand" text class="mb-2">
|
|
5
|
+
<v-icon v-if="!block.metadata.config.expand" color="primary"
|
|
6
6
|
>mdi-arrow-expand-all</v-icon
|
|
7
7
|
>
|
|
8
|
-
<v-icon v-if="block.metadata.config.expand">
|
|
8
|
+
<v-icon v-if="block.metadata.config.expand" color="primary">
|
|
9
9
|
mdi-arrow-collapse-all
|
|
10
10
|
</v-icon>
|
|
11
11
|
</v-btn>
|
|
@@ -36,7 +36,9 @@ export default {
|
|
|
36
36
|
this.block = {}
|
|
37
37
|
}
|
|
38
38
|
if (_.isEmpty(this.block.body)) {
|
|
39
|
-
this.block.body = this.$t(
|
|
39
|
+
this.block.body = this.$t(
|
|
40
|
+
'windward.core.shared.content_blocks.title.math'
|
|
41
|
+
)
|
|
40
42
|
}
|
|
41
43
|
if (_.isEmpty(this.block.metadata)) {
|
|
42
44
|
this.block.metadata = {}
|