@windward/core 0.0.8 → 0.0.9

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 (175) hide show
  1. package/components/Content/Blocks/ClickableIcons.vue +128 -40
  2. package/components/Content/Blocks/Image.vue +2 -2
  3. package/components/Content/Blocks/ScenarioChoice.vue +262 -0
  4. package/components/Content/Blocks/Tab.vue +2 -7
  5. package/components/Settings/AccordionSettings.vue +97 -74
  6. package/components/Settings/ClickableIconsSettings.vue +101 -86
  7. package/components/Settings/ScenarioChoiceSettings.vue +329 -0
  8. package/components/Settings/TabSettings.vue +75 -61
  9. package/components/Settings/TextEditorSettings.vue +1 -3
  10. package/components/utils/FillInBlank/FillInBlankInput.vue +4 -1
  11. package/components/utils/TinyMCEWrapper.vue +1 -1
  12. package/helpers/FillInBlankHelper.ts +0 -2
  13. package/i18n/en-US/components/content/blocks/index.ts +2 -2
  14. package/i18n/en-US/components/content/blocks/scenario_choice.ts +5 -0
  15. package/i18n/en-US/components/settings/accordion.ts +5 -0
  16. package/i18n/en-US/components/settings/clickable_icon.ts +8 -0
  17. package/i18n/en-US/components/settings/index.ts +6 -0
  18. package/i18n/en-US/components/settings/scenario_choice.ts +19 -0
  19. package/i18n/en-US/components/settings/tab.ts +7 -0
  20. package/i18n/en-US/components/utils/FillInBlank/FillInBlankInput.ts +1 -1
  21. package/i18n/en-US/shared/content_blocks.ts +1 -0
  22. package/i18n/en-US/shared/settings.ts +2 -0
  23. package/i18n/es-ES/components/content/blocks/feedback.ts +2 -0
  24. package/i18n/es-ES/components/content/blocks/index.ts +2 -2
  25. package/i18n/es-ES/components/content/blocks/scenario_choice.ts +6 -0
  26. package/i18n/es-ES/components/navigation/index.ts +2 -0
  27. package/i18n/es-ES/components/settings/accordion.ts +5 -0
  28. package/i18n/es-ES/components/settings/clickable_icon.ts +8 -0
  29. package/i18n/es-ES/components/settings/index.ts +6 -0
  30. package/i18n/es-ES/components/settings/scenario_choice.ts +19 -0
  31. package/i18n/es-ES/components/{content/blocks → settings}/tab.ts +3 -0
  32. package/i18n/es-ES/components/utils/FillInBlank/FillInBlankInput.ts +13 -0
  33. package/i18n/es-ES/components/utils/FillInBlank/FillInTheBlanksManager.ts +11 -0
  34. package/i18n/es-ES/components/utils/FillInBlank/index.ts +6 -0
  35. package/i18n/es-ES/components/utils/index.ts +2 -0
  36. package/i18n/es-ES/components/utils/tiny_mce_wrapper.ts +1 -0
  37. package/i18n/es-ES/shared/content_blocks.ts +1 -0
  38. package/i18n/es-ES/shared/menu.ts +1 -0
  39. package/i18n/es-ES/shared/settings.ts +2 -0
  40. package/i18n/index.ts +11 -0
  41. package/i18n/sv-SE/components/content/blocks/feedback.ts +2 -0
  42. package/i18n/sv-SE/components/content/blocks/index.ts +2 -2
  43. package/i18n/sv-SE/components/content/blocks/scenario_choice.ts +5 -0
  44. package/i18n/sv-SE/components/navigation/index.ts +2 -0
  45. package/i18n/sv-SE/components/settings/accordion.ts +5 -0
  46. package/i18n/sv-SE/components/settings/clickable_icon.ts +8 -0
  47. package/i18n/sv-SE/components/settings/index.ts +6 -0
  48. package/i18n/sv-SE/components/settings/scenario_choice.ts +19 -0
  49. package/i18n/sv-SE/components/{content/blocks → settings}/tab.ts +3 -0
  50. package/i18n/sv-SE/components/utils/FillInBlank/FillInBlankInput.ts +13 -0
  51. package/i18n/sv-SE/components/utils/FillInBlank/FillInTheBlanksManager.ts +11 -0
  52. package/i18n/sv-SE/components/utils/FillInBlank/index.ts +6 -0
  53. package/i18n/sv-SE/components/utils/index.ts +2 -0
  54. package/i18n/sv-SE/components/utils/tiny_mce_wrapper.ts +1 -0
  55. package/i18n/sv-SE/shared/content_blocks.ts +1 -0
  56. package/i18n/sv-SE/shared/menu.ts +1 -0
  57. package/i18n/sv-SE/shared/settings.ts +2 -0
  58. package/package.json +2 -1
  59. package/plugin.js +24 -5
  60. package/test/Components/Content/Blocks/ScenarioChoice.spec.js +21 -0
  61. package/test/Components/Settings/ClickableIconsSettings.spec.js +1 -1
  62. package/test/Components/Settings/ScenarioChoiceSettings.spec.js +20 -0
  63. package/test/Feature/LocaleKeys.spec.js +9 -0
  64. package/test/__mocks__/componentsMock.js +24 -0
  65. package/test/locales.js +95 -0
  66. package/.idea/codeStyles/Project.xml +0 -58
  67. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  68. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  69. package/.idea/modules.xml +0 -8
  70. package/.idea/php-docker-settings.xml +0 -24
  71. package/.idea/php.xml +0 -19
  72. package/.idea/vcs.xml +0 -6
  73. package/.idea/watcherTasks.xml +0 -4
  74. package/.idea/windward-ui-plugin-core.iml +0 -8
  75. package/coverage/clover.xml +0 -223
  76. package/coverage/coverage-final.json +0 -16
  77. package/coverage/lcov-report/base.css +0 -224
  78. package/coverage/lcov-report/block-navigation.js +0 -87
  79. package/coverage/lcov-report/components/Content/Blocks/Accordion.vue.html +0 -430
  80. package/coverage/lcov-report/components/Content/Blocks/Image.vue.html +0 -394
  81. package/coverage/lcov-report/components/Content/Blocks/Math.vue.html +0 -262
  82. package/coverage/lcov-report/components/Content/Blocks/RichText.vue.html +0 -295
  83. package/coverage/lcov-report/components/Content/Blocks/Tab.vue.html +0 -415
  84. package/coverage/lcov-report/components/Content/Blocks/Table.vue.html +0 -667
  85. package/coverage/lcov-report/components/Content/Blocks/Video.vue.html +0 -2275
  86. package/coverage/lcov-report/components/Content/Blocks/index.html +0 -206
  87. package/coverage/lcov-report/components/utils/ContentViewer.vue.html +0 -199
  88. package/coverage/lcov-report/components/utils/MathExpressionEditor.vue.html +0 -919
  89. package/coverage/lcov-report/components/utils/MathLiveWrapper.vue.html +0 -343
  90. package/coverage/lcov-report/components/utils/TinyMCEWrapper.vue.html +0 -271
  91. package/coverage/lcov-report/components/utils/index.html +0 -161
  92. package/coverage/lcov-report/config/index.html +0 -116
  93. package/coverage/lcov-report/config/tinymce.config.js.html +0 -493
  94. package/coverage/lcov-report/favicon.png +0 -0
  95. package/coverage/lcov-report/helpers/MathHelper.ts.html +0 -793
  96. package/coverage/lcov-report/helpers/index.html +0 -116
  97. package/coverage/lcov-report/helpers/tinymce/index.html +0 -116
  98. package/coverage/lcov-report/helpers/tinymce/plugin.ts.html +0 -334
  99. package/coverage/lcov-report/index.html +0 -191
  100. package/coverage/lcov-report/prettify.css +0 -1
  101. package/coverage/lcov-report/prettify.js +0 -2
  102. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  103. package/coverage/lcov-report/sorter.js +0 -196
  104. package/coverage/lcov-report/test/index.html +0 -116
  105. package/coverage/lcov-report/test/mocks.js.html +0 -457
  106. package/coverage/lcov.info +0 -403
  107. package/i18n/en-US/components/content/blocks/tab.ts +0 -4
  108. package/lib/helpers/GlossaryHelper.d.ts +0 -9
  109. package/lib/helpers/GlossaryHelper.js +0 -118
  110. package/lib/helpers/GlossaryTerm.d.ts +0 -10
  111. package/lib/helpers/GlossaryTerm.js +0 -22
  112. package/lib/helpers/MathHelper.d.ts +0 -99
  113. package/lib/helpers/MathHelper.js +0 -194
  114. package/lib/helpers/tinymce/plugin.d.ts +0 -2
  115. package/lib/helpers/tinymce/plugin.js +0 -86
  116. package/lib/i18n/en-US/components/content/blocks/image.d.ts +0 -6
  117. package/lib/i18n/en-US/components/content/blocks/image.js +0 -7
  118. package/lib/i18n/en-US/components/content/blocks/index.d.ts +0 -75
  119. package/lib/i18n/en-US/components/content/blocks/index.js +0 -14
  120. package/lib/i18n/en-US/components/content/blocks/tab.d.ts +0 -5
  121. package/lib/i18n/en-US/components/content/blocks/tab.js +0 -6
  122. package/lib/i18n/en-US/components/content/blocks/table.d.ts +0 -5
  123. package/lib/i18n/en-US/components/content/blocks/table.js +0 -6
  124. package/lib/i18n/en-US/components/content/blocks/user_upload.d.ts +0 -13
  125. package/lib/i18n/en-US/components/content/blocks/user_upload.js +0 -14
  126. package/lib/i18n/en-US/components/content/blocks/video.d.ts +0 -48
  127. package/lib/i18n/en-US/components/content/blocks/video.js +0 -49
  128. package/lib/i18n/en-US/components/content/index.d.ts +0 -77
  129. package/lib/i18n/en-US/components/content/index.js +0 -6
  130. package/lib/i18n/en-US/components/index.d.ts +0 -140
  131. package/lib/i18n/en-US/components/index.js +0 -12
  132. package/lib/i18n/en-US/components/navigation/image.d.ts +0 -5
  133. package/lib/i18n/en-US/components/navigation/image.js +0 -6
  134. package/lib/i18n/en-US/components/navigation/index.d.ts +0 -10
  135. package/lib/i18n/en-US/components/navigation/index.js +0 -8
  136. package/lib/i18n/en-US/components/navigation/user_upload.d.ts +0 -4
  137. package/lib/i18n/en-US/components/navigation/user_upload.js +0 -5
  138. package/lib/i18n/en-US/components/settings/clickable_icon.d.ts +0 -6
  139. package/lib/i18n/en-US/components/settings/clickable_icon.js +0 -7
  140. package/lib/i18n/en-US/components/settings/image.d.ts +0 -2
  141. package/lib/i18n/en-US/components/settings/image.js +0 -3
  142. package/lib/i18n/en-US/components/settings/index.d.ts +0 -39
  143. package/lib/i18n/en-US/components/settings/index.js +0 -14
  144. package/lib/i18n/en-US/components/settings/text_editor.d.ts +0 -8
  145. package/lib/i18n/en-US/components/settings/text_editor.js +0 -9
  146. package/lib/i18n/en-US/components/settings/user_upload.d.ts +0 -12
  147. package/lib/i18n/en-US/components/settings/user_upload.js +0 -13
  148. package/lib/i18n/en-US/components/settings/video.d.ts +0 -13
  149. package/lib/i18n/en-US/components/settings/video.js +0 -14
  150. package/lib/i18n/en-US/components/utils/index.d.ts +0 -15
  151. package/lib/i18n/en-US/components/utils/index.js +0 -6
  152. package/lib/i18n/en-US/components/utils/tiny_mce_wrapper.d.ts +0 -13
  153. package/lib/i18n/en-US/components/utils/tiny_mce_wrapper.js +0 -14
  154. package/lib/i18n/en-US/index.d.ts +0 -197
  155. package/lib/i18n/en-US/index.js +0 -16
  156. package/lib/i18n/en-US/modules/index.d.ts +0 -2
  157. package/lib/i18n/en-US/modules/index.js +0 -6
  158. package/lib/i18n/en-US/pages/glossary.d.ts +0 -8
  159. package/lib/i18n/en-US/pages/glossary.js +0 -9
  160. package/lib/i18n/en-US/pages/index.d.ts +0 -13
  161. package/lib/i18n/en-US/pages/index.js +0 -8
  162. package/lib/i18n/en-US/pages/user_upload.d.ts +0 -4
  163. package/lib/i18n/en-US/pages/user_upload.js +0 -5
  164. package/lib/i18n/en-US/shared/content_blocks.d.ts +0 -20
  165. package/lib/i18n/en-US/shared/content_blocks.js +0 -21
  166. package/lib/i18n/en-US/shared/index.d.ts +0 -39
  167. package/lib/i18n/en-US/shared/index.js +0 -10
  168. package/lib/i18n/en-US/shared/menu.d.ts +0 -4
  169. package/lib/i18n/en-US/shared/menu.js +0 -5
  170. package/lib/i18n/en-US/shared/settings.d.ts +0 -15
  171. package/lib/i18n/en-US/shared/settings.js +0 -16
  172. package/lib/i18n/en-US.d.ts +0 -197
  173. package/lib/i18n/en-US.js +0 -15
  174. package/lib/models/UserFileAsset.d.ts +0 -5
  175. package/lib/models/UserFileAsset.js +0 -37
@@ -1,77 +1,95 @@
1
1
  <template>
2
2
  <div>
3
- <v-container class="pa-0">
4
- <v-btn
5
- color="primary"
6
- outlined
7
- @click="onAddElement"
8
- class="fullWidth"
9
- ><v-icon>mdi-plus</v-icon>{{ $t('shared.forms.add') }}</v-btn
10
- >
11
- <v-expansion-panels flat>
12
- <v-expansion-panel
13
- v-for="(item, itemIndex) in block.metadata.config.items"
14
- :key="itemIndex"
15
- class="elevation-0"
3
+ <v-form ref="form" v-model="valid" v-if="!loading">
4
+ <v-container class="pa-0">
5
+ <v-divider class="my-4 primary"></v-divider>
6
+ <p>
7
+ {{
8
+ $t('windward.core.components.settings.accordion.items')
9
+ }}
10
+ </p>
11
+ <SortableExpansionPanel
12
+ v-model="block.metadata.config.items"
13
+ @click:close="onRemoveElement($event)"
14
+ @change="onDragged"
16
15
  >
17
- <v-expansion-panel-header class="elevation-0">{{
18
- 'item ' + (itemIndex + 1)
19
- }}</v-expansion-panel-header>
20
- <v-expansion-panel-content
21
- class="elevation-0"
22
- :key="expansionPanelKey"
23
- >
24
- <v-text-field
25
- v-model="
26
- block.metadata.config.items[itemIndex].header
27
- "
28
- :label="'Item Title'"
29
- ></v-text-field>
30
- <v-btn
31
- @click="
32
- onToggleExpand(
33
- block.metadata.config.items[itemIndex]
34
- )
35
- "
36
- >
37
- <v-icon
38
- v-if="
39
- !block.metadata.config.items[itemIndex]
40
- .expand
16
+ <template #header="{ item }">{{
17
+ item.header
18
+ ? item.header
19
+ : $t(
20
+ 'plugin.games.components.settings.bucket_game.form.enter_text'
21
+ )
22
+ }}</template>
23
+ <template #body="{ index }">
24
+ <v-container :key="expansionPanelKey">
25
+ <v-text-field
26
+ outlined
27
+ :autofocus="true"
28
+ v-model="
29
+ block.metadata.config.items[index].header
41
30
  "
42
- >mdi-arrow-expand-all</v-icon
43
- >
44
- <v-icon
45
- v-if="
46
- block.metadata.config.items[itemIndex]
47
- .expand
31
+ :label="
32
+ $t(
33
+ 'windward.core.shared.settings.title.title'
34
+ )
35
+ "
36
+ ></v-text-field>
37
+ <v-btn
38
+ @click="
39
+ onToggleExpand(
40
+ block.metadata.config.items[index]
41
+ )
48
42
  "
49
43
  >
50
- mdi-arrow-collapse-all
51
- </v-icon>
52
- </v-btn>
53
- <TextEditor
54
- :api_key="api_key"
55
- v-show="
56
- !block.metadata.config.items[itemIndex].expand
57
- "
58
- v-model="
59
- block.metadata.config.items[itemIndex].content
60
- "
61
- ></TextEditor>
62
- <br />
63
- <v-btn
64
- class="mt-2 fullWidth"
65
- color="primary"
66
- outlined
67
- @click="onRemoveElement(itemIndex)"
68
- ><v-icon>mdi-delete-outline</v-icon
69
- >{{ $t('shared.forms.delete') }}</v-btn
70
- >
71
- </v-expansion-panel-content>
72
- </v-expansion-panel>
73
- </v-expansion-panels>
74
- </v-container>
44
+ <v-icon
45
+ v-if="
46
+ !block.metadata.config.items[index]
47
+ .expand
48
+ "
49
+ >mdi-arrow-expand-all</v-icon
50
+ >
51
+ <v-icon
52
+ v-if="
53
+ block.metadata.config.items[index]
54
+ .expand
55
+ "
56
+ >
57
+ mdi-arrow-collapse-all
58
+ </v-icon>
59
+ </v-btn>
60
+ <TextEditor
61
+ v-show="
62
+ !block.metadata.config.items[index].expand
63
+ "
64
+ v-model="
65
+ block.metadata.config.items[index].content
66
+ "
67
+ ></TextEditor>
68
+ </v-container>
69
+ </template>
70
+ </SortableExpansionPanel>
71
+ </v-container>
72
+ <v-container class="pa-0">
73
+ <v-row justify="center" class="my-4">
74
+ <v-btn color="primary" @click="onAddElement"
75
+ ><v-icon>mdi-plus</v-icon
76
+ >{{
77
+ $t(
78
+ 'windward.core.components.settings.accordion.add'
79
+ )
80
+ }}</v-btn
81
+ >
82
+ </v-row>
83
+ </v-container>
84
+ </v-form>
85
+ <div v-if="loading" class="text-center">
86
+ <v-progress-circular
87
+ :size="70"
88
+ :width="7"
89
+ color="primary"
90
+ indeterminate
91
+ ></v-progress-circular>
92
+ </div>
75
93
  </div>
76
94
  </template>
77
95
  <script>
@@ -79,11 +97,13 @@ import _ from 'lodash'
79
97
  import Crypto from '~/helpers/Crypto'
80
98
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
81
99
  import TextEditor from '~/components/Text/TextEditor'
100
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
82
101
 
83
102
  export default {
84
103
  name: 'AccordionSettings',
85
104
  components: {
86
105
  TextEditor,
106
+ SortableExpansionPanel,
87
107
  },
88
108
  extends: BaseContentSettings,
89
109
  beforeMount() {
@@ -108,15 +128,17 @@ export default {
108
128
  this.block.metadata.config.items = []
109
129
  this.block.metadata.config.items.push(defaultObject)
110
130
  }
111
- this.block.body = 'accordion'
131
+ this.block.body = this.$t(
132
+ 'windward.core.components.settings.accordion.accordion'
133
+ )
112
134
  },
113
135
  data() {
114
136
  return {
115
- api_key: process.env.TINY_MCE_API_KEY,
116
137
  expansionPanelKey: '0',
138
+ valid: true,
139
+ loading: false,
117
140
  }
118
141
  },
119
- mounted() {},
120
142
  beforeDestroy() {
121
143
  if (this.debouncer) {
122
144
  clearTimeout(this.debouncer)
@@ -140,6 +162,10 @@ export default {
140
162
  this.expansionPanelKey = Crypto.id()
141
163
  return (item.expand = !item.expand)
142
164
  },
165
+ onDragged() {
166
+ // need to remount body after dragged to update the content body on the element
167
+ this.expansionPanelKey = Crypto.id()
168
+ },
143
169
  },
144
170
  }
145
171
  </script>
@@ -147,7 +173,4 @@ export default {
147
173
  .v-progress-circular {
148
174
  margin: 1rem;
149
175
  }
150
- .fullWidth {
151
- width: 100%;
152
- }
153
176
  </style>
@@ -4,6 +4,7 @@
4
4
  <v-col class="pa-0">
5
5
  <v-text-field
6
6
  v-model="block.metadata.config.title"
7
+ id="title"
7
8
  :label="
8
9
  $t(
9
10
  'windward.core.components.settings.clickable_icon.title'
@@ -12,49 +13,91 @@
12
13
  ></v-text-field>
13
14
  <v-text-field
14
15
  v-model="block.metadata.config.description"
16
+ id="description"
15
17
  :label="
16
18
  $t(
17
19
  'windward.core.components.settings.clickable_icon.description'
18
20
  )
19
21
  "
20
22
  ></v-text-field>
21
- <v-btn
22
- color="primary"
23
- outlined
24
- @click="onAddElement"
25
- class="btn-add"
23
+ <v-switch
24
+ v-model="block.metadata.config.display.show_title"
25
+ :label="
26
+ $t(
27
+ 'windward.core.components.settings.clickable_icon.display.show_title'
28
+ )
29
+ "
30
+ ></v-switch>
31
+ <v-switch
32
+ v-model="block.metadata.config.display.show_background"
33
+ :label="
34
+ $t(
35
+ 'windward.core.components.settings.clickable_icon.display.show_background'
36
+ )
37
+ "
38
+ ></v-switch>
39
+ <v-switch
40
+ v-model="block.metadata.config.display.round_icon"
41
+ :label="
42
+ $t(
43
+ 'windward.core.components.settings.clickable_icon.display.round_icon'
44
+ )
45
+ "
46
+ ></v-switch>
47
+ <v-switch
48
+ v-model="block.metadata.config.display.italic_icon"
49
+ :label="
50
+ $t(
51
+ 'windward.core.components.settings.clickable_icon.display.italic_icon'
52
+ )
53
+ "
54
+ ></v-switch>
55
+ <v-switch
56
+ v-model="block.metadata.config.display.autocolor"
57
+ :label="
58
+ $t(
59
+ 'windward.core.components.settings.clickable_icon.autocolor'
60
+ )
61
+ "
62
+ ></v-switch>
63
+ <v-btn color="primary" outlined block @click="onAddElement"
26
64
  ><v-icon>mdi-plus</v-icon
27
65
  >{{ $t('shared.forms.add') }}</v-btn
28
66
  >
29
67
  </v-col>
30
- <v-expansion-panels flat>
31
- <v-expansion-panel
32
- v-for="(item, itemIndex) in block.metadata.config.items"
33
- :key="itemIndex"
34
- class="elevation-0"
68
+ <v-col>
69
+ <SortableExpansionPanel
70
+ v-model="block.metadata.config.items"
71
+ @click:close="onRemoveElement"
35
72
  >
36
- <v-expansion-panel-header class="elevation-0 pa-0">{{
37
- 'item ' + (itemIndex + 1)
38
- }}</v-expansion-panel-header>
39
- <v-expansion-panel-content
40
- class="elevation-0"
41
- :key="expansionPanelKey"
42
- >
43
- <v-text-field
44
- v-model="
45
- block.metadata.config.items[itemIndex].icon
46
- "
73
+ <template #header="{ item }">
74
+ <v-icon v-if="item.icon && isIcon(item.icon)">{{
75
+ item.icon
76
+ }}</v-icon>
77
+ <span v-else-if="item.icon && !isIcon(item.icon)">{{
78
+ item.icon
79
+ }}</span>
80
+ <span v-else class="font-italic">
81
+ {{
82
+ $t(
83
+ 'windward.core.components.settings.clickable_icon.no_icon'
84
+ )
85
+ }}
86
+ </span>
87
+ </template>
88
+ <template #body="{ index }">
89
+ <TextIconPicker
90
+ v-model="block.metadata.config.items[index].icon"
47
91
  :label="
48
92
  $t(
49
93
  'windward.core.components.settings.clickable_icon.item_icon',
50
- [itemIndex + 1]
94
+ [index + 1]
51
95
  )
52
96
  "
53
- ></v-text-field>
97
+ ></TextIconPicker>
54
98
  <v-text-field
55
- v-model="
56
- block.metadata.config.items[itemIndex].title
57
- "
99
+ v-model="block.metadata.config.items[index].title"
100
+ :id="'item-' + index + '-title'"
58
101
  :label="
59
102
  $t(
60
103
  'windward.core.components.settings.clickable_icon.item_title'
@@ -63,9 +106,8 @@
63
106
  ></v-text-field>
64
107
 
65
108
  <ColorPicker
66
- v-model="
67
- block.metadata.config.items[itemIndex].color
68
- "
109
+ v-if="!block.metadata.config.display.autocolor"
110
+ v-model="block.metadata.config.items[index].color"
69
111
  :label="
70
112
  $t(
71
113
  'windward.core.components.settings.clickable_icon.item_color'
@@ -79,40 +121,36 @@
79
121
  )
80
122
  }}</span>
81
123
  <TextEditor
82
- :api_key="api_key"
83
- v-model="
84
- block.metadata.config.items[itemIndex].body
85
- "
124
+ v-model="block.metadata.config.items[index].body"
125
+ :height="200"
86
126
  ></TextEditor>
87
- <v-divider class="mt-3 mb-3" />
88
- <v-btn
89
- class="mt-2"
90
- color="primary"
91
- block
92
- outlined
93
- @click="onRemoveElement(itemIndex)"
94
- ><v-icon>mdi-delete-outline</v-icon
95
- >{{ $t('shared.forms.delete') }}</v-btn
96
- >
97
- </v-expansion-panel-content>
98
- </v-expansion-panel>
99
- </v-expansion-panels>
127
+ </template>
128
+ </SortableExpansionPanel>
129
+ </v-col>
100
130
  </v-container>
101
131
  </div>
102
132
  </template>
103
133
  <script>
104
134
  import _ from 'lodash'
105
- import Crypto from '~/helpers/Crypto'
106
135
  import BaseContentSettings from '~/components/Content/Tool/BaseContentSettings.js'
107
136
  import TextEditor from '~/components/Text/TextEditor'
137
+ import TextIconPicker from '~/components/TextIconPicker.vue'
108
138
  import ColorPicker from '~/components/ColorPicker.vue'
139
+ import SortableExpansionPanel from '~/components/SortableExpansionPanel.vue'
140
+
109
141
  export default {
110
142
  name: 'ClickableIconsSettings',
111
143
  components: {
144
+ SortableExpansionPanel,
112
145
  TextEditor,
146
+ TextIconPicker,
113
147
  ColorPicker,
114
148
  },
115
149
  extends: BaseContentSettings,
150
+
151
+ data() {
152
+ return {}
153
+ },
116
154
  beforeMount() {
117
155
  if (_.isEmpty(this.block)) {
118
156
  this.block = {}
@@ -129,66 +167,43 @@ export default {
129
167
  if (_.isEmpty(this.block.metadata.config.title)) {
130
168
  this.block.metadata.config.title = ''
131
169
  }
170
+ if (_.isEmpty(this.block.metadata.config.display)) {
171
+ this.block.metadata.config.display = {
172
+ show_title: false,
173
+ show_background: false,
174
+ round_icon: false,
175
+ italic_icon: false,
176
+ autocolor: true,
177
+ }
178
+ }
132
179
  if (_.isEmpty(this.block.metadata.config.items)) {
133
180
  this.block.metadata.config.items = []
134
181
  }
135
182
  },
136
- data() {
137
- return {
138
- valid: true,
139
- debounce: null,
140
- loading: false,
141
- api_key: process.env.TINY_MCE_API_KEY,
142
- title: '',
143
- description: '',
144
- items: [
145
- {
146
- icon: '',
147
- title: '',
148
- body: '',
149
- active: false,
150
- },
151
- ],
152
- expansionPanelKey: '0',
153
- }
154
- },
155
183
  mounted() {
156
184
  if (this.block.metadata.config.items.length <= 0) {
157
185
  this.onAddElement()
158
186
  }
159
187
  },
160
- beforeDestroy() {
161
- if (this.debouncer) {
162
- clearTimeout(this.debouncer)
163
- }
164
- },
165
-
166
188
  methods: {
167
- async onBeforeSave() {
168
- this.block.metadata.config.items = this.items
169
- },
170
189
  onAddElement() {
171
190
  const defaultObject = {
172
191
  icon: '',
173
192
  title: '',
174
- body: '',
175
- color: {},
193
+ body: '<p></p>',
194
+ color: {
195
+ class: '',
196
+ },
176
197
  active: false,
177
198
  }
178
199
  this.block.metadata.config.items.push(defaultObject)
179
200
  },
180
201
  onRemoveElement(index) {
181
202
  this.block.metadata.config.items.splice(index, 1)
182
- this.expansionPanelKey = Crypto.id()
203
+ },
204
+ isIcon(str) {
205
+ return str && _.isString(str) && str.indexOf('mdi-') === 0
183
206
  },
184
207
  },
185
208
  }
186
209
  </script>
187
- <style scoped>
188
- .v-progress-circular {
189
- margin: 1rem;
190
- }
191
- .btn-add {
192
- width: 100%;
193
- }
194
- </style>