@concretecms/bedrock 1.0.0 → 1.1.0
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/assets/account/js/frontend/components/Avatar/Cropper.js +12 -4
- package/assets/calendar/js/backend/duration.js +1 -1
- package/assets/ckeditor/js/concrete/link.js +5 -4
- package/assets/ckeditor/js/concrete/styles.js +2 -2
- package/assets/cms/components/BoardInstanceRule.vue +16 -3
- package/assets/cms/components/BoardInstanceRuleList.vue +24 -7
- package/assets/cms/components/CompletedProcessList.vue +28 -9
- package/assets/cms/components/Icon.vue +16 -1
- package/assets/cms/components/Pagination.vue +45 -8
- package/assets/cms/components/customizer/ColorPageCustomizerWidget.vue +7 -0
- package/assets/cms/components/customizer/FontWeightPageCustomizerWidget.vue +7 -1
- package/assets/cms/components/customizer/ImagePageCustomizerWidget.vue +13 -3
- package/assets/cms/components/customizer/TextTransformPageCustomizerWidget.vue +7 -1
- package/assets/cms/components/customizer/ThemeCustomizer.vue +36 -15
- package/assets/cms/components/customizer/ThemeCustomizerPreview.vue +11 -1
- package/assets/cms/components/customizer/TypePageCustomizerWidget.vue +21 -6
- package/assets/cms/components/express/Selector.vue +21 -6
- package/assets/cms/components/file-manager/Chooser/ExternalFileProvider.vue +13 -2
- package/assets/cms/components/file-manager/Chooser/FileSets.vue +13 -2
- package/assets/cms/components/file-manager/Chooser/Files.vue +19 -5
- package/assets/cms/components/file-manager/Chooser/SavedSearch.vue +13 -2
- package/assets/cms/components/file-manager/Chooser/Search.vue +13 -2
- package/assets/cms/components/file-manager/Chooser.vue +64 -8
- package/assets/cms/components/form/ConcreteFileDirectoryInput.vue +17 -4
- package/assets/cms/components/gallery/GalleryEdit.vue +20 -5
- package/assets/cms/components/gallery/ImageDetail.vue +22 -5
- package/assets/cms/components/groups/Chooser.vue +17 -4
- package/assets/cms/components/page/Chooser/ChooserSearch.vue +15 -2
- package/assets/cms/components/page/PageList.vue +15 -3
- package/assets/cms/components/user/Chooser/Search.vue +15 -2
- package/assets/cms/components/user/Chooser/Users.vue +19 -5
- package/assets/cms/components/user/Chooser.vue +15 -2
- package/assets/cms/js/edit-mode/style-customizer/color.js +10 -3
- package/assets/cms/js/edit-mode/style-customizer/custom.js +1 -1
- package/assets/cms/js/edit-mode/style-customizer/inline-toolbar.js +27 -27
- package/assets/cms/js/edit-mode/style-customizer/typography.js +8 -1
- package/assets/cms/scss/_inline-toolbar.scss +9 -180
- package/assets/cms/scss/panels/_shared.scss +1 -1
- package/assets/desktop/js/frontend/draft-list.js +0 -17
- package/package.json +2 -2
- package/.idea/bedrock.iml +0 -8
- package/.idea/codeStyles/Project.xml +0 -15
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/dataSources.local.xml +0 -4
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.idea/workspace.xml +0 -313
|
@@ -11,7 +11,15 @@ export default {
|
|
|
11
11
|
width: Number,
|
|
12
12
|
height: Number,
|
|
13
13
|
uploadurl: String,
|
|
14
|
-
src: String
|
|
14
|
+
src: String,
|
|
15
|
+
cancelConfirmText: {
|
|
16
|
+
type: String,
|
|
17
|
+
default: 'Are you sure you want to quit?'
|
|
18
|
+
},
|
|
19
|
+
canceledText: {
|
|
20
|
+
type: String,
|
|
21
|
+
default: 'Upload canceled.'
|
|
22
|
+
}
|
|
15
23
|
},
|
|
16
24
|
|
|
17
25
|
// Our internal state
|
|
@@ -92,7 +100,7 @@ export default {
|
|
|
92
100
|
})
|
|
93
101
|
|
|
94
102
|
this.on('error', function (event, data) {
|
|
95
|
-
component.setError(data.message)
|
|
103
|
+
component.setError(typeof data === 'string' ? data : data.message)
|
|
96
104
|
component.currentimage = component.src
|
|
97
105
|
})
|
|
98
106
|
|
|
@@ -177,8 +185,8 @@ export default {
|
|
|
177
185
|
* Handle x mark click
|
|
178
186
|
*/
|
|
179
187
|
handleCancel() {
|
|
180
|
-
if (window.confirm(
|
|
181
|
-
this.done.call(this.dropzone,
|
|
188
|
+
if (window.confirm(this.cancelConfirmText)) {
|
|
189
|
+
this.done.call(this.dropzone, this.canceledText)
|
|
182
190
|
this.img = null
|
|
183
191
|
this.saving = false
|
|
184
192
|
this.dropzone.destroy()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-new, no-unused-vars, camelcase, no-useless-call, eqeqeq */
|
|
2
|
+
/* global ccmi18n_editor */
|
|
2
3
|
(function() {
|
|
3
4
|
CKEDITOR.plugins.add('concretelink', {
|
|
4
5
|
requires: 'link',
|
|
@@ -39,8 +40,8 @@
|
|
|
39
40
|
infoTab.add({
|
|
40
41
|
type: 'button',
|
|
41
42
|
id: 'sitemapBrowse',
|
|
42
|
-
label:
|
|
43
|
-
title:
|
|
43
|
+
label: ccmi18n_editor.sitemap,
|
|
44
|
+
title: ccmi18n_editor.sitemap,
|
|
44
45
|
onClick: function() {
|
|
45
46
|
jQuery.fn.dialog.open({
|
|
46
47
|
width: '90%',
|
|
@@ -82,13 +83,13 @@
|
|
|
82
83
|
id: 'lightboxFeatures',
|
|
83
84
|
children: [{
|
|
84
85
|
type: 'fieldset',
|
|
85
|
-
label:
|
|
86
|
+
label: ccmi18n_editor.lightboxFeatures,
|
|
86
87
|
children: [{
|
|
87
88
|
type: 'hbox',
|
|
88
89
|
children: [{
|
|
89
90
|
type: 'checkbox',
|
|
90
91
|
id: 'imageLightbox',
|
|
91
|
-
label:
|
|
92
|
+
label: ccmi18n_editor.imageLink,
|
|
92
93
|
setup: function(data) {
|
|
93
94
|
var link = getSelectedLink()
|
|
94
95
|
if (link !== null && typeof data.target !== 'undefined') {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-new, no-unused-vars, camelcase, new-cap, eqeqeq */
|
|
2
|
-
|
|
2
|
+
/* global ccmi18n_editor */
|
|
3
3
|
(function() {
|
|
4
4
|
CKEDITOR.plugins.add('concretestyles', {
|
|
5
5
|
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
var buttons = {
|
|
103
103
|
name: 'snippets',
|
|
104
104
|
icon: 'snippet.png',
|
|
105
|
-
title:
|
|
105
|
+
title: ccmi18n_editor.snippets,
|
|
106
106
|
items: []
|
|
107
107
|
}
|
|
108
108
|
if (editor.config.snippets) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
{{startDate}}
|
|
6
6
|
</span>
|
|
7
7
|
<span v-else class="text-muted">
|
|
8
|
-
|
|
8
|
+
{{ i18n.noStartDate }}
|
|
9
9
|
</span>
|
|
10
10
|
<span v-if="hasStartDate && hasEndDate">
|
|
11
11
|
–
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</td>
|
|
15
15
|
<td>{{rule.slot}}</td>
|
|
16
16
|
<td>
|
|
17
|
-
<div>{{rule.name}} (<a data-dialog="preview" href="javascript:void(0)" @click="showPreview">preview</a>)</div>
|
|
17
|
+
<div>{{rule.name}} (<a data-dialog="preview" href="javascript:void(0)" @click="showPreview">{{ i18n.preview }}</a>)</div>
|
|
18
18
|
<div class="fw-light font-italic">{{rule.actionDescription}}</div>
|
|
19
19
|
</td>
|
|
20
20
|
<td class="align-middle">
|
|
@@ -48,6 +48,10 @@ export default {
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
data: () => ({
|
|
51
|
+
i18n: {
|
|
52
|
+
noStartDate: 'No Start Date',
|
|
53
|
+
preview: 'Preview'
|
|
54
|
+
},
|
|
51
55
|
previewLoaded: false
|
|
52
56
|
}),
|
|
53
57
|
methods: {
|
|
@@ -61,7 +65,7 @@ export default {
|
|
|
61
65
|
$.fn.dialog.open({
|
|
62
66
|
width: '90%',
|
|
63
67
|
height: '70%',
|
|
64
|
-
title:
|
|
68
|
+
title: this.i18n.preview,
|
|
65
69
|
element: '#preview-container-' + my.rule.id
|
|
66
70
|
})
|
|
67
71
|
}
|
|
@@ -88,6 +92,15 @@ export default {
|
|
|
88
92
|
return momentDate.format('MMMM D, YYYY h:mm a')
|
|
89
93
|
}
|
|
90
94
|
}
|
|
95
|
+
},
|
|
96
|
+
mounted() {
|
|
97
|
+
if (window.ccmi18n_boards) {
|
|
98
|
+
for (const key in this.i18n) {
|
|
99
|
+
if (window.ccmi18n_boards[key]) {
|
|
100
|
+
this.i18n[key] = window.ccmi18n_boards[key]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
91
104
|
}
|
|
92
105
|
}
|
|
93
106
|
</script>
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
<table class="table">
|
|
4
4
|
<thead>
|
|
5
5
|
<tr>
|
|
6
|
-
<th style="width: 30%;">
|
|
7
|
-
<th style="width: 10%;">
|
|
8
|
-
<th style="width: 60%;">
|
|
6
|
+
<th style="width: 30%;">{{ i18n.dateAndTime }}</th>
|
|
7
|
+
<th style="width: 10%;">{{ i18n.slot }}</th>
|
|
8
|
+
<th style="width: 60%;">{{ i18n.name }}</th>
|
|
9
9
|
<th></th>
|
|
10
10
|
</tr>
|
|
11
11
|
</thead>
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
</table>
|
|
18
18
|
|
|
19
19
|
<div v-if="draftRules.length" class="mt-4">
|
|
20
|
-
<h5>
|
|
20
|
+
<h5>{{ i18n.unpublishedRules }}</h5>
|
|
21
21
|
|
|
22
22
|
<table class="table">
|
|
23
23
|
<thead>
|
|
24
24
|
<tr>
|
|
25
|
-
<th style="width: 30%;">
|
|
26
|
-
<th style="width: 10%;">
|
|
27
|
-
<th style="width: 60%;">
|
|
25
|
+
<th style="width: 30%;">{{ i18n.dateAndTime }}</th>
|
|
26
|
+
<th style="width: 10%;">{{ i18n.slot }}</th>
|
|
27
|
+
<th style="width: 60%;">{{ i18n.name }}</th>
|
|
28
28
|
<th></th>
|
|
29
29
|
</tr>
|
|
30
30
|
</thead>
|
|
@@ -49,6 +49,14 @@ export default {
|
|
|
49
49
|
props: {
|
|
50
50
|
rules: Array
|
|
51
51
|
},
|
|
52
|
+
data: () => ({
|
|
53
|
+
i18n: {
|
|
54
|
+
dateAndTime: 'Date & Time',
|
|
55
|
+
slot: 'Slot',
|
|
56
|
+
name: 'Name',
|
|
57
|
+
unpublishedRules: 'Unpublished Rules'
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
52
60
|
computed: {
|
|
53
61
|
publishedRules: function() {
|
|
54
62
|
var publishedRules = []
|
|
@@ -91,6 +99,15 @@ export default {
|
|
|
91
99
|
})
|
|
92
100
|
}
|
|
93
101
|
}
|
|
102
|
+
},
|
|
103
|
+
mounted() {
|
|
104
|
+
if (window.ccmi18n_boards) {
|
|
105
|
+
for (const key in this.i18n) {
|
|
106
|
+
if (window.ccmi18n_boards[key]) {
|
|
107
|
+
this.i18n[key] = window.ccmi18n_boards[key]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
94
111
|
}
|
|
95
112
|
}
|
|
96
113
|
</script>
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
<div class="p-2">
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-md-4">
|
|
6
|
-
<h5>
|
|
6
|
+
<h5>{{ i18n.name }}</h5>
|
|
7
7
|
</div>
|
|
8
8
|
<div class="col-md-3">
|
|
9
|
-
<h5>
|
|
9
|
+
<h5>{{ i18n.dateStarted }}</h5>
|
|
10
10
|
</div>
|
|
11
11
|
<div class="col-md-5">
|
|
12
|
-
<h5>
|
|
12
|
+
<h5>{{ i18n.dateCompleted }}</h5>
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
</div>
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
{{detail}}
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
|
-
<span v-else class="text-muted">
|
|
51
|
+
<span v-else class="text-muted">{{ i18n.loading }}</span>
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
@@ -59,15 +59,15 @@
|
|
|
59
59
|
<div class="modal-content">
|
|
60
60
|
<form method="post" @submit.prevent="deleteProcessSubmit(process.id)">
|
|
61
61
|
<div class="modal-header">
|
|
62
|
-
<h5 class="modal-title">
|
|
63
|
-
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="
|
|
62
|
+
<h5 class="modal-title">{{ i18n.deleteProcess }}</h5>
|
|
63
|
+
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" :aria-label="i18n.close"></button>
|
|
64
64
|
</div>
|
|
65
65
|
<div class="modal-body">
|
|
66
|
-
|
|
66
|
+
{{ i18n.confirmDeletion }}
|
|
67
67
|
</div>
|
|
68
68
|
<div class="modal-footer">
|
|
69
|
-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
|
|
70
|
-
<button type="submit" class="btn btn-danger">
|
|
69
|
+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ i18n.close }}</button>
|
|
70
|
+
<button type="submit" class="btn btn-danger">{{ i18n.delete }}</button>
|
|
71
71
|
</div>
|
|
72
72
|
</form>
|
|
73
73
|
</div>
|
|
@@ -102,6 +102,16 @@ export default {
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
data: () => ({
|
|
105
|
+
i18n: {
|
|
106
|
+
name: 'Name',
|
|
107
|
+
dateStarted: 'Date Started',
|
|
108
|
+
dateCompleted: 'Date Completed',
|
|
109
|
+
loading: 'Loading...',
|
|
110
|
+
deleteProcess: 'Delete Process',
|
|
111
|
+
confirmDeletion: 'Delete this process log entry? The record of the process along with any logs will be removed.',
|
|
112
|
+
close: 'Close',
|
|
113
|
+
delete: 'Delete'
|
|
114
|
+
},
|
|
105
115
|
openProcesses: []
|
|
106
116
|
}),
|
|
107
117
|
methods: {
|
|
@@ -150,6 +160,15 @@ export default {
|
|
|
150
160
|
}
|
|
151
161
|
})
|
|
152
162
|
}
|
|
163
|
+
},
|
|
164
|
+
mounted() {
|
|
165
|
+
if (window.ccmi18n_processes) {
|
|
166
|
+
for (const key in this.i18n) {
|
|
167
|
+
if (window.ccmi18n_processes[key]) {
|
|
168
|
+
this.i18n[key] = window.ccmi18n_processes[key]
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
153
172
|
}
|
|
154
173
|
}
|
|
155
174
|
</script>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<svg v-else-if='$options.methods.isSvg(props.type)' viewport='0 0 20 20' width='20px' height='20px'>
|
|
11
11
|
<use :xlink:href='`${props.spritePath}#icon-${props.icon}`' :style='`fill: ${props.color}`'></use>
|
|
12
12
|
</svg>
|
|
13
|
-
<span v-else>
|
|
13
|
+
<span v-else>{{ i18n.invalidIconType }}</span>
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script>
|
|
@@ -22,6 +22,11 @@ export { icons, types }
|
|
|
22
22
|
|
|
23
23
|
// Export our component definition
|
|
24
24
|
export default {
|
|
25
|
+
data: () => ({
|
|
26
|
+
i18n: {
|
|
27
|
+
invalidIconType: 'Invalid icon type.'
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
25
30
|
props: {
|
|
26
31
|
spritePath: {
|
|
27
32
|
type: String,
|
|
@@ -53,6 +58,16 @@ export default {
|
|
|
53
58
|
*/
|
|
54
59
|
isFontAwesome: type => [types.fas, types.far, types.fab].indexOf(type) >= 0,
|
|
55
60
|
isSvg: type => type === types.svg
|
|
61
|
+
},
|
|
62
|
+
mounted() {
|
|
63
|
+
if (window.ccmi18n) {
|
|
64
|
+
for (const key in this.i18n) {
|
|
65
|
+
if (window.ccmi18n[key]) {
|
|
66
|
+
this.i18n[key] = window.ccmi18n[key]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
56
70
|
}
|
|
71
|
+
|
|
57
72
|
}
|
|
58
73
|
</script>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<nav :aria-label="ariaLabel">
|
|
4
4
|
<ul class="pagination">
|
|
5
5
|
<li :class="{'page-item': true, 'disabled': prevDisabled}">
|
|
6
|
-
<a class="page-link" href="#" :aria-label="
|
|
7
|
-
<span aria-hidden="true">{{
|
|
6
|
+
<a class="page-link" href="#" :aria-label="finalLabelPrevPage" @click.prevent="onClick('prev', $event)">
|
|
7
|
+
<span aria-hidden="true">{{finalPrevText}}</span>
|
|
8
8
|
</a>
|
|
9
9
|
</li>
|
|
10
10
|
<li v-for="page in pageList" :key="page.number" :class="{'page-item': true, 'active': page.number === currentPage}"><a class="page-link" href="#" @click.prevent="onClick(page.number)">{{page.text || page.number}}</a></li>
|
|
11
11
|
<li :class="{'page-item': true, 'disabled': nextDisabled}">
|
|
12
|
-
<a class="page-link" href="#" :aria-label="
|
|
13
|
-
<span aria-hidden="true">{{
|
|
12
|
+
<a class="page-link" href="#" :aria-label="finalLabelNextPage" @click.prevent="onClick('next', $event)">
|
|
13
|
+
<span aria-hidden="true">{{finalNextText}}</span>
|
|
14
14
|
</a>
|
|
15
15
|
</li>
|
|
16
16
|
</ul>
|
|
@@ -55,11 +55,11 @@ export default {
|
|
|
55
55
|
},
|
|
56
56
|
nextText: {
|
|
57
57
|
type: String,
|
|
58
|
-
|
|
58
|
+
required: false
|
|
59
59
|
},
|
|
60
60
|
labelNextPage: {
|
|
61
61
|
type: String,
|
|
62
|
-
|
|
62
|
+
required: false
|
|
63
63
|
},
|
|
64
64
|
prevCursor: {
|
|
65
65
|
type: [Number, String, null],
|
|
@@ -70,11 +70,11 @@ export default {
|
|
|
70
70
|
},
|
|
71
71
|
labelPrevPage: {
|
|
72
72
|
type: String,
|
|
73
|
-
|
|
73
|
+
required: false
|
|
74
74
|
},
|
|
75
75
|
prevText: {
|
|
76
76
|
type: String,
|
|
77
|
-
|
|
77
|
+
required: false
|
|
78
78
|
},
|
|
79
79
|
perPage: {
|
|
80
80
|
type: [Number, String],
|
|
@@ -102,6 +102,10 @@ export default {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
return {
|
|
105
|
+
i18n: {
|
|
106
|
+
next: 'Next',
|
|
107
|
+
previous: 'Previous'
|
|
108
|
+
},
|
|
105
109
|
targetNumberOfLinks: 7,
|
|
106
110
|
currentPage,
|
|
107
111
|
localNumberOfPages: 1
|
|
@@ -181,6 +185,30 @@ export default {
|
|
|
181
185
|
}
|
|
182
186
|
|
|
183
187
|
return pages
|
|
188
|
+
},
|
|
189
|
+
finalNextText () {
|
|
190
|
+
if (typeof this.nextText === 'string') {
|
|
191
|
+
return this.nextText
|
|
192
|
+
}
|
|
193
|
+
return `${this.i18n.next} →`
|
|
194
|
+
},
|
|
195
|
+
finalLabelNextPage () {
|
|
196
|
+
if (typeof this.labelNextPage === 'string') {
|
|
197
|
+
return this.labelNextPage
|
|
198
|
+
}
|
|
199
|
+
return this.i18n.next
|
|
200
|
+
},
|
|
201
|
+
finalPrevText () {
|
|
202
|
+
if (typeof this.prevText === 'string') {
|
|
203
|
+
return this.prevText
|
|
204
|
+
}
|
|
205
|
+
return `← ${this.i18n.previous}`
|
|
206
|
+
},
|
|
207
|
+
finalLabelPrevPage () {
|
|
208
|
+
if (typeof this.labelPrevPage === 'string') {
|
|
209
|
+
return this.labelPrevPage
|
|
210
|
+
}
|
|
211
|
+
return this.i18n.previous
|
|
184
212
|
}
|
|
185
213
|
},
|
|
186
214
|
watch: {
|
|
@@ -228,6 +256,15 @@ export default {
|
|
|
228
256
|
// Emit event triggered by user interaction
|
|
229
257
|
this.$emit('change', this.currentPage)
|
|
230
258
|
}
|
|
259
|
+
},
|
|
260
|
+
mounted() {
|
|
261
|
+
if (window.ccmi18n) {
|
|
262
|
+
for (const key in this.i18n) {
|
|
263
|
+
if (window.ccmi18n[key]) {
|
|
264
|
+
this.i18n[key] = window.ccmi18n[key]
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
231
268
|
}
|
|
232
269
|
}
|
|
233
270
|
</script>
|
|
@@ -14,6 +14,7 @@ export default {
|
|
|
14
14
|
},
|
|
15
15
|
mounted() {
|
|
16
16
|
var my = this
|
|
17
|
+
const i18n = window.ccmi18n_styleCustomizer || null
|
|
17
18
|
$('#color-picker-' + this.styleValue.style.variable).spectrum({
|
|
18
19
|
showAlpha: true,
|
|
19
20
|
preferredFormat: 'rgb',
|
|
@@ -21,6 +22,12 @@ export default {
|
|
|
21
22
|
color: this.color,
|
|
22
23
|
showInitial: true,
|
|
23
24
|
showInput: true,
|
|
25
|
+
cancelText: i18n && i18n.cancel ? i18n.cancel : 'Cancel',
|
|
26
|
+
chooseText: i18n && i18n.choose ? i18n.choose : 'Choose',
|
|
27
|
+
clearText: i18n && i18n.clearColorSelection ? i18n.clearColorSelection : 'Clear Color Selection',
|
|
28
|
+
noColorSelectedText: i18n && i18n.noColorSelected ? i18n.noColorSelected : 'No Color Selected',
|
|
29
|
+
togglePaletteMoreText: i18n && i18n.togglePaletteMore ? i18n.togglePaletteMore : 'More',
|
|
30
|
+
togglePaletteLessText: i18n && i18n.togglePaletteLess ? i18n.togglePaletteLess : 'Less',
|
|
24
31
|
change: function (r) {
|
|
25
32
|
var color = r.toRgb()
|
|
26
33
|
my.$emit('update', {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<select @change="componentUpdated" class="form-select form-select-sm" v-model="fontWeight"
|
|
3
3
|
:style="{'font-weight': fontWeight}">
|
|
4
|
-
<option v-for="fontWeightValue in fontWeightValues" :value="fontWeightValue">{{ fontWeightValue }}</option>
|
|
4
|
+
<option v-for="fontWeightValue in fontWeightValues" :value="fontWeightValue">{{ getWeightValueDisplayName(fontWeightValue) }}</option>
|
|
5
5
|
</select>
|
|
6
6
|
</template>
|
|
7
7
|
|
|
@@ -22,6 +22,12 @@ export default {
|
|
|
22
22
|
fontWeight: this.fontWeight
|
|
23
23
|
}
|
|
24
24
|
})
|
|
25
|
+
},
|
|
26
|
+
getWeightValueDisplayName: function (id) {
|
|
27
|
+
if (window.ccmi18n_styleCustomizer && window.ccmi18n_styleCustomizer.fontWeights && window.ccmi18n_styleCustomizer.fontWeights[id]) {
|
|
28
|
+
return window.ccmi18n_styleCustomizer.fontWeights[id]
|
|
29
|
+
}
|
|
30
|
+
return id
|
|
25
31
|
}
|
|
26
32
|
},
|
|
27
33
|
computed: {
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
<i :class="{'fas': true, 'fa-image': true, 'text-black-50': !imageURL && !imageFileID, 'text-primary': imageFileID > 0}"></i>
|
|
5
5
|
</template>
|
|
6
6
|
<template v-slot:content>
|
|
7
|
-
<concrete-file-input :file-id="imageFileID" @change="value => imageFileID = value" choose-text="
|
|
7
|
+
<concrete-file-input :file-id="imageFileID" @change="value => imageFileID = value" :choose-text="i18n.chooseImageText"
|
|
8
8
|
input-name="imageFileID"></concrete-file-input>
|
|
9
9
|
<div class="mt-2" v-if="imageURL">
|
|
10
|
-
<small class="text-muted">
|
|
10
|
+
<small class="text-muted">{{ i18n.currentlyUsingText.replace(/%s/g, imageURL) }}</small>
|
|
11
11
|
</div>
|
|
12
12
|
</template>
|
|
13
13
|
</flyout-menu>
|
|
@@ -29,6 +29,10 @@ export default {
|
|
|
29
29
|
},
|
|
30
30
|
data() {
|
|
31
31
|
return {
|
|
32
|
+
i18n: {
|
|
33
|
+
chooseImageText: 'Choose Image',
|
|
34
|
+
currentlyUsingText: 'Currently using %s'
|
|
35
|
+
},
|
|
32
36
|
imageURL: this.styleValue.value.imageURL, // this is the default one passed in,
|
|
33
37
|
imageFileID: this.styleValue.value.imageFileID
|
|
34
38
|
}
|
|
@@ -45,7 +49,13 @@ export default {
|
|
|
45
49
|
}
|
|
46
50
|
},
|
|
47
51
|
mounted() {
|
|
48
|
-
|
|
52
|
+
if (window.ccmi18n_styleCustomizer) {
|
|
53
|
+
for (const key in this.i18n) {
|
|
54
|
+
if (window.ccmi18n_styleCustomizer[key]) {
|
|
55
|
+
this.i18n[key] = window.ccmi18n_styleCustomizer[key]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
49
59
|
},
|
|
50
60
|
props: {
|
|
51
61
|
styleValue: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<select @change="componentUpdated" class="form-select form-select-sm" v-model="textTransform"
|
|
3
3
|
:style="{'text-transform': textTransform}">
|
|
4
|
-
<option v-for="transformValue in transformValues" :value="transformValue">{{ transformValue }}</option>
|
|
4
|
+
<option v-for="transformValue in transformValues" :value="transformValue">{{ getTransformValueDisplayName(transformValue) }}</option>
|
|
5
5
|
</select>
|
|
6
6
|
</template>
|
|
7
7
|
|
|
@@ -22,6 +22,12 @@ export default {
|
|
|
22
22
|
textTransform: this.textTransform
|
|
23
23
|
}
|
|
24
24
|
})
|
|
25
|
+
},
|
|
26
|
+
getTransformValueDisplayName: function (id) {
|
|
27
|
+
if (window.ccmi18n_styleCustomizer && window.ccmi18n_styleCustomizer.textTransforms && window.ccmi18n_styleCustomizer.textTransforms[id]) {
|
|
28
|
+
return window.ccmi18n_styleCustomizer.textTransforms[id]
|
|
29
|
+
}
|
|
30
|
+
return id
|
|
25
31
|
}
|
|
26
32
|
},
|
|
27
33
|
computed: {
|