@concretecms/bedrock 1.0.2 → 1.1.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.
Files changed (52) hide show
  1. package/.idea/codeStyles/Project.xml +33 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  3. package/assets/account/js/frontend/components/Avatar/Cropper.js +12 -4
  4. package/assets/bedrock/scss/_theme-grid.scss +4 -2
  5. package/assets/ckeditor/js/concrete/link.js +5 -4
  6. package/assets/ckeditor/js/concrete/styles.js +2 -2
  7. package/assets/cms/components/BoardInstanceRule.vue +16 -3
  8. package/assets/cms/components/BoardInstanceRuleList.vue +24 -7
  9. package/assets/cms/components/CompletedProcessList.vue +28 -9
  10. package/assets/cms/components/Icon.vue +16 -1
  11. package/assets/cms/components/Pagination.vue +45 -8
  12. package/assets/cms/components/customizer/ColorPageCustomizerWidget.vue +7 -0
  13. package/assets/cms/components/customizer/FontWeightPageCustomizerWidget.vue +7 -1
  14. package/assets/cms/components/customizer/ImagePageCustomizerWidget.vue +13 -3
  15. package/assets/cms/components/customizer/TextTransformPageCustomizerWidget.vue +7 -1
  16. package/assets/cms/components/customizer/ThemeCustomizer.vue +36 -15
  17. package/assets/cms/components/customizer/ThemeCustomizerPreview.vue +11 -1
  18. package/assets/cms/components/customizer/TypePageCustomizerWidget.vue +21 -6
  19. package/assets/cms/components/express/Selector.vue +21 -6
  20. package/assets/cms/components/file-manager/Chooser/ExternalFileProvider.vue +13 -2
  21. package/assets/cms/components/file-manager/Chooser/FileManager.vue +75 -72
  22. package/assets/cms/components/file-manager/Chooser/FileSets.vue +24 -9
  23. package/assets/cms/components/file-manager/Chooser/FileUpload.vue +3 -1
  24. package/assets/cms/components/file-manager/Chooser/Files.vue +57 -9
  25. package/assets/cms/components/file-manager/Chooser/FolderBookmark.vue +4 -0
  26. package/assets/cms/components/file-manager/Chooser/RecentUploads.vue +4 -0
  27. package/assets/cms/components/file-manager/Chooser/SavedSearch.vue +24 -9
  28. package/assets/cms/components/file-manager/Chooser/Search.vue +25 -9
  29. package/assets/cms/components/file-manager/Chooser.vue +82 -8
  30. package/assets/cms/components/file-manager/Uploader/UploadFromComputer.vue +3 -2
  31. package/assets/cms/components/file-manager/Uploader.vue +1 -0
  32. package/assets/cms/components/form/ConcreteFileDirectoryInput.vue +17 -4
  33. package/assets/cms/components/form/ConcreteFileInput.vue +8 -1
  34. package/assets/cms/components/gallery/GalleryEdit.vue +20 -5
  35. package/assets/cms/components/gallery/ImageDetail.vue +22 -5
  36. package/assets/cms/components/groups/Chooser.vue +17 -4
  37. package/assets/cms/components/page/Chooser/ChooserSearch.vue +15 -2
  38. package/assets/cms/components/page/PageList.vue +15 -3
  39. package/assets/cms/components/user/Chooser/Search.vue +15 -2
  40. package/assets/cms/components/user/Chooser/Users.vue +19 -5
  41. package/assets/cms/components/user/Chooser.vue +15 -2
  42. package/assets/cms/js/edit-mode/layouts.js +4 -4
  43. package/assets/cms/js/edit-mode/style-customizer/color.js +10 -3
  44. package/assets/cms/js/edit-mode/style-customizer/custom.js +1 -1
  45. package/assets/cms/js/edit-mode/style-customizer/typography.js +8 -1
  46. package/assets/cms/js/file-manager/file-manager.js +1 -8
  47. package/assets/cms/scss/_inline-toolbar.scss +10 -179
  48. package/assets/cms/scss/panels/_shared.scss +1 -1
  49. package/package.json +2 -2
  50. package/.idea/dataSources.local.xml +0 -4
  51. package/.idea/misc.xml +0 -6
  52. package/.idea/workspace.xml +0 -317
@@ -10,13 +10,13 @@
10
10
  @click="$emit('delete')"
11
11
  type="outline"
12
12
  >
13
- Remove from Gallery
13
+ {{ i18n.removeFromGallery }}
14
14
  </IconButton>
15
- <!-- <button type="button" class="btn btn-secondary" @click="$emit('delete')">Remove from Gallery</button> -->
15
+ <!-- <button type="button" class="btn btn-secondary" @click="$emit('delete')">{{ i18n.removeFromGallery }}</button> -->
16
16
  </div>
17
17
  <div class="image-details">
18
18
  <section>
19
- <strong>Custom Attributes</strong>
19
+ <strong>{{ i18n.customAttributes }}</strong>
20
20
 
21
21
  <p class="image-title">{{this.$props.image.title}}</p>
22
22
  <p class="image-description">{{this.$props.image.description}}</p>
@@ -32,14 +32,14 @@
32
32
  type="outline"
33
33
  v-if="$props.image.detailUrl"
34
34
  >
35
- Edit Attributes
35
+ {{ i18n.editAttributes }}
36
36
  </IconButton>
37
37
  </div>
38
38
  </section>
39
39
 
40
40
  <section v-if="!this.$props.image.displayChoices.length">
41
41
  <div class="mb-2">
42
- <strong>Display Options</strong>
42
+ <strong>{{ i18n.displayOptions }}</strong>
43
43
  </div>
44
44
  <div v-for="(choice, index) in this.$props.image.displayChoices" :key="index">
45
45
  <input v-if="choice.type === 'text'"
@@ -123,6 +123,23 @@ export default {
123
123
  IconButton,
124
124
  ...IconButton.components
125
125
  },
126
+ data: () => ({
127
+ i18n: {
128
+ removeFromGallery: 'Remove from Gallery',
129
+ customAttributes: 'Custom Attributes',
130
+ editAttributes: 'Edit Attributes',
131
+ displayOptions: 'Display Options'
132
+ }
133
+ }),
134
+ mounted() {
135
+ if (window.ccmi18n_gallery) {
136
+ for (const key in this.i18n) {
137
+ if (window.ccmi18n_gallery[key]) {
138
+ this.i18n[key] = window.ccmi18n_gallery[key]
139
+ }
140
+ }
141
+ }
142
+ },
126
143
  props: {
127
144
  image: {
128
145
  type: Object,
@@ -3,7 +3,7 @@
3
3
  <div class="mb-3 ccm-header-search-form">
4
4
  <form method="get" @submit="performSearch">
5
5
  <div class="input-group">
6
- <input type="search" v-model="searchKeywords" placeholder="Search" class="form-control border-end-0" autocomplete="off">
6
+ <input type="search" v-model="searchKeywords" :placeholder="i18n.search" class="form-control border-end-0" autocomplete="off">
7
7
  <button type="submit" class="input-group-icon">
8
8
  <svg width="16" height="16">
9
9
  <use xlink:href="#icon-search"/>
@@ -18,8 +18,8 @@
18
18
  <table class="border-top ccm-search-results-table">
19
19
  <thead>
20
20
  <tr>
21
- <th>ID</th>
22
- <th class="w-100">Name</th>
21
+ <th>{{ i18n.id }}</th>
22
+ <th class="w-100">{{ i18n.name }}</th>
23
23
  </tr>
24
24
  </thead>
25
25
  <tbody>
@@ -31,7 +31,7 @@
31
31
  </table>
32
32
  </div>
33
33
  <div v-else>
34
- No results found.
34
+ {{ i18n.noResults }}
35
35
  </div>
36
36
  </div>
37
37
  <div v-show="searchSubmitted === 'searching'">
@@ -65,6 +65,12 @@ export default {
65
65
  },
66
66
  data() {
67
67
  return {
68
+ i18n: {
69
+ search: 'Search',
70
+ id: 'ID',
71
+ name: 'Name',
72
+ noResults: 'No results found.'
73
+ },
68
74
  searchKeywords: '',
69
75
  searchResults: [],
70
76
  searchSubmitted: false,
@@ -91,6 +97,13 @@ export default {
91
97
  }
92
98
  },
93
99
  mounted() {
100
+ if (window.ccmi18n_groups) {
101
+ for (const key in this.i18n) {
102
+ if (window.ccmi18n_groups[key]) {
103
+ this.i18n[key] = window.ccmi18n_groups[key]
104
+ }
105
+ }
106
+ }
94
107
  var my = this
95
108
  new ConcreteAjaxRequest({
96
109
  method: 'POST',
@@ -4,7 +4,7 @@
4
4
  <div class="col-md-4 ms-auto">
5
5
  <form @submit.prevent="search">
6
6
  <div class="ccm-header-search-form-input input-group">
7
- <input type="text" class="form-control border-end-0" placeholder="Search" autocomplete="false" v-model="searchText">
7
+ <input type="text" class="form-control border-end-0" :placeholder="i18n.search" autocomplete="false" v-model="searchText">
8
8
  <button type="submit" class="input-group-icon">
9
9
  <svg width="16" height="16">
10
10
  <use xlink:href="#icon-search"/>
@@ -18,7 +18,7 @@
18
18
  <span class="search-icon my-4">
19
19
  <Icon icon="search" type="fas" color="#f4f4f4"/>
20
20
  </span>
21
- <p><b>Let's get some info on what you're looking for.</b></p>
21
+ <p><b>{{ i18n.initialPageSearchChooserTip }}</b></p>
22
22
  </div>
23
23
  <div v-if="keywords">
24
24
  <PageList
@@ -37,6 +37,10 @@ import PageList from './../PageList'
37
37
  export default {
38
38
  components: { Icon, PageList },
39
39
  data: () => ({
40
+ i18n: {
41
+ search: 'Search',
42
+ initialPageSearchChooserTip: "Let's get some info on what you're looking for."
43
+ },
40
44
  searchText: '',
41
45
  keywords: '',
42
46
  routePath: '/ccm/system/page/chooser/search/'
@@ -52,6 +56,15 @@ export default {
52
56
  title: page.name
53
57
  })
54
58
  }
59
+ },
60
+ mounted() {
61
+ if (window.ccmi18n_sitemap) {
62
+ for (const key in this.i18n) {
63
+ if (window.ccmi18n_sitemap[key]) {
64
+ this.i18n[key] = window.ccmi18n_sitemap[key]
65
+ }
66
+ }
67
+ }
55
68
  }
56
69
  }
57
70
  </script>
@@ -8,9 +8,9 @@
8
8
  <thead>
9
9
  <tr>
10
10
  <th><span>Type</span></th>
11
- <th :class="orderBy === 'cv.cvName' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvName', 'asc', $event)">Name</a></th>
12
- <th :class="orderBy === 'cv.cvDatePublic' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvDatePublic', 'asc', $event)">Date</a></th>
13
- <th :class="orderBy === 'c.cDateModified' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('c.cDateModified', 'desc', $event)">Last Modified</a></th>
11
+ <th :class="orderBy === 'cv.cvName' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvName', 'asc', $event)">{{ i118n.name }}</a></th>
12
+ <th :class="orderBy === 'cv.cvDatePublic' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvDatePublic', 'asc', $event)">{{ i18n.date }}</a></th>
13
+ <th :class="orderBy === 'c.cDateModified' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('c.cDateModified', 'desc', $event)">{{ i18n.lastModified }}</a></th>
14
14
  <th><span>Author</span></th>
15
15
  </tr>
16
16
  </thead>
@@ -58,6 +58,11 @@ import Pagination from '../Pagination'
58
58
  export default {
59
59
  components: { Pagination },
60
60
  data: () => ({
61
+ i18n: {
62
+ name: 'Name',
63
+ date: 'Date',
64
+ lastModified: 'Last Modified'
65
+ },
61
66
  currentPage: -1,
62
67
  latestSearchID: null,
63
68
  mouseOver: 0,
@@ -190,6 +195,13 @@ export default {
190
195
  }
191
196
  },
192
197
  mounted () {
198
+ if (window.ccmi18n_sitemap) {
199
+ for (const key in this.i18n) {
200
+ if (window.ccmi18n_sitemap[key]) {
201
+ this.i18n[key] = window.ccmi18n_sitemap[key]
202
+ }
203
+ }
204
+ }
193
205
  this.fetchPages()
194
206
  }
195
207
  }
@@ -4,7 +4,7 @@
4
4
  <div class="col-md-6 ms-auto">
5
5
  <form @submit.prevent="search">
6
6
  <div class="ccm-header-search-form-input input-group">
7
- <input type="text" class="form-control border-end-0" placeholder="Search" autocomplete="false" v-model="searchText">
7
+ <input type="text" class="form-control border-end-0" :placeholder="i18n.search" autocomplete="false" v-model="searchText">
8
8
  <button type="submit" class="input-group-icon">
9
9
  <svg width="16" height="16">
10
10
  <use xlink:href="#icon-search"/>
@@ -18,7 +18,7 @@
18
18
  <span class="search-icon my-4">
19
19
  <Icon icon="search" type="fas" color="#f4f4f4"/>
20
20
  </span>
21
- <p><b>Let's get some info on what you're looking for.</b></p>
21
+ <p><b>{{ i18n.initialUserSearchChooserTip }}</b></p>
22
22
  </div>
23
23
  <div>
24
24
  <users v-if="keywords"
@@ -39,6 +39,10 @@ export default {
39
39
  Users
40
40
  },
41
41
  data: () => ({
42
+ i18n: {
43
+ search: 'Search',
44
+ initialUserSearchChooserTip: "Let's get some info on what you're looking for."
45
+ },
42
46
  keywords: '',
43
47
  searchText: '',
44
48
  selectedUsers: [],
@@ -59,6 +63,15 @@ export default {
59
63
  selectedUsers: function(value) {
60
64
  this.$emit('update:selectedUsers', value)
61
65
  }
66
+ },
67
+ mounted() {
68
+ if (window.ccmi18n_users) {
69
+ for (const key in this.i18n) {
70
+ if (window.ccmi18n_users[key]) {
71
+ this.i18n[key] = window.ccmi18n_users[key]
72
+ }
73
+ }
74
+ }
62
75
  }
63
76
  }
64
77
  </script>
@@ -6,11 +6,11 @@
6
6
  <thead>
7
7
  <tr>
8
8
  <th></th>
9
- <th @click="sortBy('name')" :class="getSortColumnClassName('name')"><a href="javascript:void(0)">Username</a></th>
10
- <th @click="sortBy('email')" :class="getSortColumnClassName('email')"><a href="javascript:void(0)">Email</a></th>
11
- <th @click="sortBy('dateAdded')" :class="getSortColumnClassName('dateAdded')"><a href="javascript:void(0)">Date</a></th>
12
- <th>Status</th>
13
- <th @click="sortBy('totalLogins')" :class="getSortColumnClassName('totalLogins')"><a href="javascript:void(0)"># Logins</a></th>
9
+ <th @click="sortBy('name')" :class="getSortColumnClassName('name')"><a href="javascript:void(0)">{{ i18n.username }}</a></th>
10
+ <th @click="sortBy('email')" :class="getSortColumnClassName('email')"><a href="javascript:void(0)">{{ i18n.email }}</a></th>
11
+ <th @click="sortBy('dateAdded')" :class="getSortColumnClassName('dateAdded')"><a href="javascript:void(0)">{{ i18n.date }}</a></th>
12
+ <th>{{ i18n.status }}</th>
13
+ <th @click="sortBy('totalLogins')" :class="getSortColumnClassName('totalLogins')"><a href="javascript:void(0)">{{ i18n.numLogins }}</a></th>
14
14
  </tr>
15
15
  </thead>
16
16
  <tbody>
@@ -36,6 +36,13 @@
36
36
  export default {
37
37
  data() {
38
38
  return {
39
+ i18n: {
40
+ username: 'Username',
41
+ email: 'Email',
42
+ date: 'Date',
43
+ status: 'Status',
44
+ numLogins: '# Logins'
45
+ },
39
46
  isLoading: true,
40
47
  userList: [],
41
48
  selectedUsers: [],
@@ -111,6 +118,13 @@ export default {
111
118
  }
112
119
  },
113
120
  mounted() {
121
+ if (window.ccmi18n_users) {
122
+ for (const key in this.i18n) {
123
+ if (window.ccmi18n_users[key]) {
124
+ this.i18n[key] = window.ccmi18n_users[key]
125
+ }
126
+ }
127
+ }
114
128
  this.getUsers()
115
129
  }
116
130
  }
@@ -2,8 +2,8 @@
2
2
  <div>
3
3
  <search :selectedUsers.sync="selectedUsers" :multiple-selection="multipleSelection"/>
4
4
  <div class="dialog-buttons">
5
- <button class="btn btn-secondary" data-dialog-action="cancel">Cancel</button>
6
- <button type="button" @click="chooseUsers" :disabled="selectedUsers.length === 0" class="btn btn-primary">Choose</button>
5
+ <button class="btn btn-secondary" data-dialog-action="cancel">{{ i18n.cancel }}</button>
6
+ <button type="button" @click="chooseUsers" :disabled="selectedUsers.length === 0" class="btn btn-primary">{{ i18n.choose }}</button>
7
7
  </div>
8
8
  </div>
9
9
  </template>
@@ -25,6 +25,10 @@ export default {
25
25
  },
26
26
  data() {
27
27
  return {
28
+ i18n: {
29
+ cancel: 'Cancel',
30
+ choose: 'Choose'
31
+ },
28
32
  selectedUsers: []
29
33
  }
30
34
  },
@@ -32,6 +36,15 @@ export default {
32
36
  chooseUsers() {
33
37
  window.ConcreteEvent.publish('UserSearchDialogSelectUser.core', { users: this.selectedUsers })
34
38
  }
39
+ },
40
+ mounted() {
41
+ if (window.ccmi18n_users) {
42
+ for (const key in this.i18n) {
43
+ if (window.ccmi18n_users[key]) {
44
+ this.i18n[key] = window.ccmi18n_users[key]
45
+ }
46
+ }
47
+ }
35
48
  }
36
49
  }
37
50
  </script>
@@ -173,8 +173,8 @@ ConcreteLayout.prototype._setupFormEvents = function () {
173
173
  ConcreteLayout.prototype.buildThemeGridGrid = function () {
174
174
  this.$element.html('')
175
175
 
176
- var row = this.options.rowstart
177
- row += '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
176
+ var row = '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
177
+ row += this.options.rowstart
178
178
 
179
179
  var columnSpans = this._getThemeGridColumnSpan(this.columns)
180
180
  $.each(columnSpans, function (i, spanInfo) {
@@ -213,8 +213,8 @@ ConcreteLayout.prototype._updateThemeGridView = function (presetLoad) {
213
213
 
214
214
  ConcreteLayout.prototype._buildThemeGridGridFromPresetColumns = function (arLayoutColumns) {
215
215
  this.$element.html('')
216
- var row = this.options.rowstart
217
- row += '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
216
+ var row = '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
217
+ row += this.options.rowstart
218
218
  $.each(arLayoutColumns, function (i, column) {
219
219
  var columnHTML = '<div id="ccm-edit-layout-column-' + i + '" class="ccm-theme-grid-column" ' +
220
220
  'data-offset="' + column.arLayoutColumnOffset + '" data-span="' + column.arLayoutColumnSpan + '"><div class="ccm-layout-column-highlight">' +
@@ -3,12 +3,16 @@
3
3
  function ConcreteStyleCustomizerColorPicker($element, options) {
4
4
  var my = this
5
5
  my.$element = $element
6
+ const defaulti18n = window.ccmi18n_styleCustomizer || null
6
7
  my.options = $.extend(true, {
7
8
  initialColor: '',
8
9
  i18n: {
9
- cancel: 'Cancel',
10
- choose: 'Choose',
11
- clear: 'Clean'
10
+ cancel: defaulti18n && defaulti18n.cancel ? defaulti18n.cancel : 'Cancel',
11
+ choose: defaulti18n && defaulti18n.choose ? defaulti18n.choose : 'Choose',
12
+ clear: defaulti18n && defaulti18n.clearColorSelection ? defaulti18n.clearColorSelection : 'Clear Color Selection',
13
+ noColorSelected: defaulti18n && defaulti18n.noColorSelected ? defaulti18n.noColorSelected : 'No Color Selected',
14
+ togglePaletteMore: defaulti18n && defaulti18n.togglePaletteMore ? defaulti18n.togglePaletteMore : 'More',
15
+ togglePaletteLess: defaulti18n && defaulti18n.togglePaletteLess ? defaulti18n.togglePaletteLess : 'Less'
12
16
  }
13
17
  }, options || {})
14
18
  $element.spectrum({
@@ -22,6 +26,9 @@ function ConcreteStyleCustomizerColorPicker($element, options) {
22
26
  cancelText: my.options.i18n.cancel,
23
27
  chooseText: my.options.i18n.choose,
24
28
  clearText: my.options.i18n.clear,
29
+ noColorSelectedText: my.options.i18n.noColorSelected,
30
+ togglePaletteMoreText: my.options.i18n.togglePaletteMore,
31
+ togglePaletteLessText: my.options.i18n.togglePaletteLess,
25
32
  change: function() {
26
33
  ConcreteEvent.publish('StyleCustomizerControlUpdate')
27
34
  }
@@ -16,7 +16,7 @@ function ConcreteStyleCustomizerCustomCss($element, options) {
16
16
  url: ''
17
17
  },
18
18
  i18n: {
19
- editTitle: 'Custom CSS'
19
+ editTitle: window.ccmi18n_styleCustomizer && window.ccmi18n_styleCustomizer.customCSS ? window.ccmi18n_styleCustomizer.customCSS : 'Custom CSS'
20
20
  }
21
21
  }, options || {})
22
22
  $element
@@ -46,12 +46,19 @@ function ConcreteTypographySelector($element, options) {
46
46
  })
47
47
 
48
48
  my.$colorpicker = my.$widget.find('input[data-style-customizer-field=color]')
49
+ const i18n = window.ccmi18n_styleCustomizer || null
49
50
  my.$colorpicker.spectrum({
50
51
  preferredFormat: 'rgb',
51
52
  showAlpha: true,
52
53
  className: 'ccm-widget-colorpicker',
53
54
  showInitial: true,
54
- showInput: true
55
+ showInput: true,
56
+ cancelText: i18n && i18n.cancel ? i18n.cancel : 'Cancel',
57
+ chooseText: i18n && i18n.choose ? i18n.choose : 'Choose',
58
+ clearText: i18n && i18n.clearColorSelection ? i18n.clearColorSelection : 'Clear Color Selection',
59
+ noColorSelectedText: i18n && i18n.noColorSelected ? i18n.noColorSelected : 'No Color Selected',
60
+ togglePaletteMoreText: i18n && i18n.togglePaletteMore ? i18n.togglePaletteMore : 'More',
61
+ togglePaletteLessText: i18n && i18n.togglePaletteLess ? i18n.togglePaletteLess : 'Less'
55
62
  })
56
63
 
57
64
  my.$fontMenu.on('change', function() {
@@ -17,14 +17,7 @@ class ConcreteFileManager {
17
17
  }
18
18
 
19
19
  if (options.filters.length > 0) {
20
- data['field[]'] = []
21
-
22
- for (i = 0; i < options.filters.length; i++) {
23
- var filter = $.extend(true, {}, options.filters[i]) // clone
24
- data['field[]'].push(filter.field)
25
- delete (filter.field)
26
- $.extend(data, filter) // add all remaining fields to the data
27
- }
20
+ data.filters = options.filters
28
21
  }
29
22
 
30
23
  $.fn.dialog.open({
@@ -1,181 +1,7 @@
1
- .ccm-inline-toolbar {
2
- border-radius: 3px;
3
- box-shadow: 0 0 6px rgba(200, 200, 200, 0.5);
4
- font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif !important;
5
- height: 31px;
6
- line-height: 0;
7
- list-style: none;
8
- margin: 0 !important;
9
- opacity: 0;
10
- padding: 0 !important;
11
- position: relative;
12
- z-index: $index-level-inline-toolbar;
13
-
14
- /* stylelint-disable selector-class-pattern */
15
- &.redactor_toolbar {
16
- background: transparent;
17
- }
18
-
19
- /* stylelint-enable selector-class-pattern */
20
-
21
- > li {
22
- background: #fff;
23
- border-bottom: 1px solid #c4c4c4;
24
- border-right: 1px solid #e1e1e1;
25
- border-top: 1px solid #c4c4c4;
26
- display: table-cell;
27
- font-size: $font-size-base !important;
28
- list-style: none;
29
- outline: none;
30
- padding: 3px 8px;
31
- vertical-align: middle;
32
-
33
- label {
34
- display: inline;
35
- font-size: $font-size-sm;
36
- margin: 0 0 8px;
37
- }
38
-
39
- &.ccm-inline-toolbar-inverse-cell {
40
- background-color: #555;
41
-
42
- a {
43
- color: #fff;
44
- }
45
- }
46
-
47
-
48
- }
49
-
50
- > li:first-child {
51
- border-bottom-left-radius: 3px;
52
- border-left: 1px solid #c4c4c4;
53
- border-top-left-radius: 3px;
54
- }
55
-
56
- > li:last-child {
57
- border-bottom-right-radius: 3px;
58
- border-right: 0;
59
- border-top-right-radius: 3px;
60
- }
61
-
62
- > li.ccm-inline-toolbar-icon-cell {
63
- @include gradient-y(#fff, #f1f1f1);
64
- padding: 0;
65
- position: relative;
66
- text-align: center;
67
- width: 30px;
68
- }
69
-
70
- > li.ccm-inline-toolbar-icon-cell > a {
71
- color: #333;
72
- cursor: pointer;
73
- display: block;
74
- height: 100%;
75
- opacity: 0.7;
76
- text-decoration: none;
77
-
78
- i {
79
- display: inline-block;
80
- font-size: $font-size-sm;
81
- line-height: 33px;
82
- }
83
- }
84
-
85
- > li.ccm-inline-toolbar-icon-cell.ccm-inline-toolbar-icon-selected {
86
- @include gradient-y(#e1e1e1, #cbcbcb);
87
- border-right: 1px solid #c5c5c5;
88
- }
89
-
90
- > li.ccm-inline-toolbar-icon-cell.ccm-inline-toolbar-icon-selected > a {
91
- opacity: 1;
92
- }
93
-
94
- > li.ccm-inline-toolbar-icon-cell > a:hover {
95
- opacity: 1;
96
- }
97
-
98
- > li.ccm-inline-toolbar-button {
99
- background: transparent;
100
-
101
- padding: 0;
102
-
103
- button {
104
- background: #f3f3f3;
105
- border: 0;
106
- border-radius: 0;
107
- color: #333;
108
- display: inline-block;
109
- font-size: $font-size-sm;
110
- height: 33px;
111
- padding: 0 20px;
112
- text-align: center;
113
- width: 100%;
114
- }
115
- }
116
-
117
- > li.ccm-inline-toolbar-select {
118
- select {
119
- background-position: right 5px top 5px;
120
- border: 0;
121
- height: 27px;
122
- padding: 2px 28px 2px 2px;
123
- }
124
- }
125
-
126
- > li.ccm-inline-toolbar-button-cancel button {
127
- @include gradient-y(#f3f3f3, #eaeaea);
128
- }
129
-
130
- > li.ccm-inline-toolbar-button-cancel button:hover {
131
- background-color: #fff;
132
- background-image: none;
133
- }
134
-
135
- > li.ccm-inline-toolbar-button-save {
136
- border: 1px solid #007cce !important;
137
- }
138
-
139
- > li.ccm-inline-toolbar-button-save button {
140
- @include gradient-y(#09f, #0094f6);
141
- background: #09f;
142
- color: #fff;
143
- }
144
-
145
- > li.ccm-inline-toolbar-button-save button:hover {
146
- background-color: #007cce;
147
- background-image: none;
148
- }
149
-
150
- li.ccm-inline-toolbar-icon-cell > div.ccm-dropdown-menu {
151
- display: none;
152
-
153
- &::before {
154
- border-color: transparent transparent #000;
155
- border-style: solid;
156
- border-width: 0 5px 5px;
157
- content: ' ';
158
- height: 0;
159
- left: 11px;
160
- position: absolute;
161
- top: -5px;
162
- width: 0;
163
- }
164
-
165
- &.active {
166
- box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, 0.43);
167
- display: block;
168
- margin-top: 1px;
169
- position: absolute;
170
- }
171
- }
172
- }
173
-
174
1
  #ccm-inline-toolbar-container {
175
2
  box-sizing: border-box;
176
3
  left: 0;
177
4
  opacity: 0;
178
- padding: 10px 20px 0;
179
5
  position: absolute;
180
6
  top: 0;
181
7
  transition: opacity 0.3s ease-in;
@@ -185,10 +11,15 @@
185
11
 
186
12
  #ccm-inline-toolbar-container.ccm-inline-toolbar-affixed {
187
13
  background-color: rgba(0, 0, 0, 0.4);
14
+ padding: 10px 0;
188
15
  position: fixed;
189
16
  top: 0 !important;
190
17
  }
191
18
 
19
+ /*
20
+ old customizer. delete.
21
+ */
22
+ /*
192
23
  .ccm-panel-left {
193
24
  .sp-container {
194
25
  background-color: rgba(0, 0, 0, 0.95);
@@ -309,6 +140,7 @@
309
140
  }
310
141
 
311
142
  }
143
+ */
312
144
 
313
145
  .ccm-ui {
314
146
  div.dropdown-menu.ccm-inline-design-dropdown-menu,
@@ -470,15 +302,13 @@
470
302
  }
471
303
 
472
304
  /* new styles for new the area and block style customizer toolbar */
473
- .ccm-style-customizer-toolbar {
474
- border-radius: 3px;
475
- box-shadow: 0 0 6px rgba(200, 200, 200, 0.5);
476
- font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif !important;
305
+ .ccm-inline-toolbar {
306
+ border-radius: 2px;
307
+ display: table;
477
308
  height: 31px;
478
309
  line-height: 0;
479
310
  list-style: none;
480
311
  margin: 0 !important;
481
- min-width: 600px;
482
312
  padding: 0 !important;
483
313
  position: relative;
484
314
  z-index: $index-level-inline-toolbar;
@@ -580,6 +410,7 @@
580
410
  display: table-cell;
581
411
  font-size: $font-size-base !important;
582
412
  list-style: none;
413
+ margin: 0;
583
414
  outline: none;
584
415
  padding: 3px 8px;
585
416
  vertical-align: middle;
@@ -14,12 +14,12 @@ html.ccm-panel-detail-open {
14
14
  div.ccm-panel {
15
15
  background-color: $panel-background-color;
16
16
  height: 100%;
17
- /* overflow: hidden; */ /* This causes problems with floating palettes inside the panels. So let's only apply this during transitions */
18
17
  position: fixed;
19
18
  top: 0;
20
19
  user-select: none;
21
20
  width: 320px;
22
21
  z-index: $index-level-panel; // has to come above the detail actions wrapper
22
+ /* overflow: hidden; */ /* This causes problems with floating palettes inside the panels. So let's only apply this during transitions */
23
23
  div.ccm-panel-close {
24
24
  position: absolute;
25
25
  right: 17px;