apostrophe 3.63.3 → 4.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.
Files changed (184) hide show
  1. package/.eslintrc +13 -4
  2. package/CHANGELOG.md +37 -5
  3. package/defaults.js +2 -1
  4. package/modules/@apostrophecms/admin-bar/ui/apos/apps/AposAdminBar.js +7 -17
  5. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +14 -16
  6. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +1 -1
  7. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarMenu.vue +22 -15
  8. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarUser.vue +2 -2
  9. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +13 -8
  10. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue +18 -10
  11. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +4 -4
  12. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextUndoRedo.vue +14 -8
  13. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposSavingIndicator.vue +2 -1
  14. package/modules/@apostrophecms/area/ui/apos/apps/AposAreas.js +36 -54
  15. package/modules/@apostrophecms/area/ui/apos/components/AposAreaContextualMenu.vue +20 -25
  16. package/modules/@apostrophecms/area/ui/apos/components/AposAreaEditor.vue +5 -12
  17. package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +11 -3
  18. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenu.vue +6 -6
  19. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenuItem.vue +3 -2
  20. package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +31 -44
  21. package/modules/@apostrophecms/area/ui/apos/components/AposWidgetControls.vue +16 -16
  22. package/modules/@apostrophecms/asset/index.js +25 -12
  23. package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.config.js +3 -3
  24. package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js +7 -1
  25. package/modules/@apostrophecms/attachment/index.js +2 -1
  26. package/modules/@apostrophecms/attachment/public/img/missing-icon.svg +14 -0
  27. package/modules/@apostrophecms/busy/ui/apos/apps/AposBusy.js +8 -7
  28. package/modules/@apostrophecms/busy/ui/apos/components/TheAposBusy.vue +1 -1
  29. package/modules/@apostrophecms/command-menu/ui/apos/apps/AposCommandMenu.js +11 -29
  30. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKey.vue +1 -1
  31. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +6 -6
  32. package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +10 -7
  33. package/modules/@apostrophecms/doc-type/index.js +34 -13
  34. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocContextMenu.vue +3 -3
  35. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +20 -15
  36. package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +1 -1
  37. package/modules/@apostrophecms/i18n/i18n/en.json +13 -0
  38. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +209 -33
  39. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +3 -3
  40. package/modules/@apostrophecms/image/ui/apos/components/AposImageCropper.vue +5 -5
  41. package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +6 -6
  42. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +23 -16
  43. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +11 -11
  44. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +28 -21
  45. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +4 -3
  46. package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +5 -4
  47. package/modules/@apostrophecms/login/index.js +18 -1
  48. package/modules/@apostrophecms/login/ui/apos/apps/AposLogin.js +6 -7
  49. package/modules/@apostrophecms/login/ui/apos/components/AposForgotPasswordForm.vue +3 -3
  50. package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +10 -10
  51. package/modules/@apostrophecms/login/ui/apos/components/AposResetPasswordForm.vue +3 -3
  52. package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +2 -2
  53. package/modules/@apostrophecms/login/ui/apos/logic/AposLoginForm.js +1 -16
  54. package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +60 -87
  55. package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +15 -11
  56. package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +17 -11
  57. package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +7 -4
  58. package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +9 -9
  59. package/modules/@apostrophecms/modal/ui/apos/components/AposModalLip.vue +2 -2
  60. package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +8 -8
  61. package/modules/@apostrophecms/modal/ui/apos/components/AposModalTabs.vue +4 -3
  62. package/modules/@apostrophecms/modal/ui/apos/components/AposModalToolbar.vue +7 -7
  63. package/modules/@apostrophecms/modal/ui/apos/components/TheAposModals.vue +22 -4
  64. package/modules/@apostrophecms/modal/ui/apos/composables/AposFocus.js +95 -0
  65. package/modules/@apostrophecms/modal/ui/apos/mixins/AposDocsManagerMixin.js +2 -3
  66. package/modules/@apostrophecms/modal/ui/apos/mixins/AposEditorMixin.js +6 -0
  67. package/modules/@apostrophecms/notification/index.js +4 -4
  68. package/modules/@apostrophecms/notification/ui/apos/apps/AposNotification.js +6 -9
  69. package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +12 -8
  70. package/modules/@apostrophecms/notification/ui/apos/components/TheAposNotifications.vue +4 -2
  71. package/modules/@apostrophecms/oembed-field/ui/apos/components/AposInputOembed.vue +12 -10
  72. package/modules/@apostrophecms/page/index.js +1 -0
  73. package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +15 -11
  74. package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +1 -1
  75. package/modules/@apostrophecms/permission/ui/apos/components/AposInputRole.vue +3 -3
  76. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +25 -17
  77. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerDisplay.vue +24 -20
  78. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerSelectBox.vue +9 -5
  79. package/modules/@apostrophecms/piece-type/ui/apos/components/AposRelationshipEditor.vue +15 -11
  80. package/modules/@apostrophecms/rich-text-widget/index.js +1 -0
  81. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposImageControlDialog.vue +7 -6
  82. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +31 -30
  83. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapAnchor.vue +12 -10
  84. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapButton.vue +1 -1
  85. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapImage.vue +1 -1
  86. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +9 -8
  87. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapStyles.vue +3 -3
  88. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapTable.vue +3 -3
  89. package/modules/@apostrophecms/schema/index.js +69 -8
  90. package/modules/@apostrophecms/schema/lib/addFieldTypes.js +1 -1
  91. package/modules/@apostrophecms/schema/ui/apos/components/AposArrayEditor.vue +10 -8
  92. package/modules/@apostrophecms/schema/ui/apos/components/AposInputArea.vue +5 -3
  93. package/modules/@apostrophecms/schema/ui/apos/components/AposInputArray.vue +81 -277
  94. package/modules/@apostrophecms/schema/ui/apos/components/AposInputAttachment.vue +4 -2
  95. package/modules/@apostrophecms/schema/ui/apos/components/AposInputBoolean.vue +24 -14
  96. package/modules/@apostrophecms/schema/ui/apos/components/AposInputCheckboxes.vue +7 -6
  97. package/modules/@apostrophecms/schema/ui/apos/components/AposInputColor.vue +10 -7
  98. package/modules/@apostrophecms/schema/ui/apos/components/AposInputObject.vue +3 -3
  99. package/modules/@apostrophecms/schema/ui/apos/components/AposInputPassword.vue +6 -4
  100. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRadio.vue +5 -4
  101. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRange.vue +9 -6
  102. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +15 -12
  103. package/modules/@apostrophecms/schema/ui/apos/components/AposInputSelect.vue +1 -1
  104. package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +16 -12
  105. package/modules/@apostrophecms/schema/ui/apos/components/AposInputString.vue +19 -11
  106. package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +15 -12
  107. package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +75 -22
  108. package/modules/@apostrophecms/schema/ui/apos/components/AposSearchList.vue +1 -1
  109. package/modules/@apostrophecms/schema/ui/apos/components/AposSubform.vue +2 -2
  110. package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +0 -4
  111. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArea.js +3 -3
  112. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArray.js +15 -4
  113. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputAttachment.js +3 -3
  114. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputCheckboxes.js +7 -7
  115. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputColor.js +5 -8
  116. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputDateAndTime.js +1 -1
  117. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputObject.js +1 -1
  118. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRadio.js +1 -1
  119. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +12 -9
  120. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputSelect.js +3 -3
  121. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputString.js +7 -9
  122. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +4 -4
  123. package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +42 -13
  124. package/modules/@apostrophecms/schema/ui/apos/logic/AposSubform.js +1 -1
  125. package/modules/@apostrophecms/schema/ui/apos/mixins/AposInputMixin.js +9 -9
  126. package/modules/@apostrophecms/schema/ui/apos/scss/AposInputArray.scss +205 -0
  127. package/modules/@apostrophecms/settings/ui/apos/components/AposSettingsManager.vue +5 -5
  128. package/modules/@apostrophecms/settings/ui/apos/logic/AposSettingsManager.js +4 -4
  129. package/modules/@apostrophecms/submitted-draft/ui/apos/components/AposSubmittedDraftIcon.vue +5 -4
  130. package/modules/@apostrophecms/task/index.js +2 -0
  131. package/modules/@apostrophecms/translation/index.js +233 -0
  132. package/modules/@apostrophecms/translation/ui/apos/components/AposTranslationIndicator.vue +84 -0
  133. package/modules/@apostrophecms/ui/ui/apos/components/AposAvatar.vue +2 -1
  134. package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +4 -4
  135. package/modules/@apostrophecms/ui/ui/apos/components/AposButtonGroup.vue +6 -6
  136. package/modules/@apostrophecms/ui/ui/apos/components/AposButtonSplit.vue +120 -113
  137. package/modules/@apostrophecms/ui/ui/apos/components/AposCellButton.vue +2 -1
  138. package/modules/@apostrophecms/ui/ui/apos/components/AposCellLabels.vue +49 -5
  139. package/modules/@apostrophecms/ui/ui/apos/components/AposCheckbox.vue +19 -19
  140. package/modules/@apostrophecms/ui/ui/apos/components/AposCloudUploadIcon.vue +10 -5
  141. package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +15 -15
  142. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +214 -191
  143. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuDialog.vue +77 -65
  144. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuItem.vue +1 -1
  145. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuTip.vue +28 -50
  146. package/modules/@apostrophecms/ui/ui/apos/components/AposEmptyState.vue +3 -3
  147. package/modules/@apostrophecms/ui/ui/apos/components/AposFile.vue +5 -5
  148. package/modules/@apostrophecms/ui/ui/apos/components/AposFilterMenu.vue +4 -4
  149. package/modules/@apostrophecms/ui/ui/apos/components/AposIndicator.vue +1 -1
  150. package/modules/@apostrophecms/ui/ui/apos/components/AposLabel.vue +1 -1
  151. package/modules/@apostrophecms/ui/ui/apos/components/AposMinMaxCount.vue +5 -5
  152. package/modules/@apostrophecms/ui/ui/apos/components/AposPager.vue +14 -8
  153. package/modules/@apostrophecms/ui/ui/apos/components/AposPagerDots.vue +2 -1
  154. package/modules/@apostrophecms/ui/ui/apos/components/AposSlat.vue +13 -12
  155. package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +53 -59
  156. package/modules/@apostrophecms/ui/ui/apos/components/AposSpinner.vue +2 -2
  157. package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +2 -2
  158. package/modules/@apostrophecms/ui/ui/apos/components/AposTag.vue +3 -2
  159. package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +40 -35
  160. package/modules/@apostrophecms/ui/ui/apos/components/AposTagListItem.vue +2 -1
  161. package/modules/@apostrophecms/ui/ui/apos/components/AposToggle.vue +2 -2
  162. package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +9 -11
  163. package/modules/@apostrophecms/ui/ui/apos/components/AposTreeHeader.vue +5 -3
  164. package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +129 -129
  165. package/modules/@apostrophecms/ui/ui/apos/composables/AposTheme.js +11 -0
  166. package/modules/@apostrophecms/ui/ui/apos/lib/click-outside-element.js +4 -4
  167. package/modules/@apostrophecms/ui/ui/apos/lib/i18next.js +56 -50
  168. package/modules/@apostrophecms/ui/ui/apos/lib/tooltip.js +191 -0
  169. package/modules/@apostrophecms/ui/ui/apos/lib/vue.js +19 -10
  170. package/modules/@apostrophecms/ui/ui/apos/mixins/AposAdvisoryLockMixin.js +1 -1
  171. package/modules/@apostrophecms/ui/ui/apos/scss/global/_tables.scss +1 -1
  172. package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +1 -0
  173. package/modules/@apostrophecms/ui/ui/apos/scss/global/_tooltips.scss +6 -22
  174. package/modules/@apostrophecms/ui/ui/apos/scss/shared/_table-rows.scss +1 -1
  175. package/modules/@apostrophecms/widget-type/index.js +8 -2
  176. package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +26 -22
  177. package/modules/@apostrophecms/widget-type/ui/apos/mixins/AposWidgetMixin.js +4 -4
  178. package/package.json +31 -44
  179. package/test/attachments.js +5 -0
  180. package/test/schemas.js +138 -0
  181. package/test/translation.js +538 -0
  182. package/test-lib/util.js +21 -0
  183. package/modules/@apostrophecms/ui/ui/apos/lib/localized-v-tooltip.js +0 -63
  184. package/modules/@apostrophecms/ui/ui/apos/lib/tooltip-options.js +0 -13
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apostrophe",
3
- "version": "3.63.3",
3
+ "version": "4.1.0",
4
4
  "description": "The Apostrophe Content Management System.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -31,41 +31,28 @@
31
31
  "author": "Apostrophe Technologies, Inc.",
32
32
  "license": "MIT",
33
33
  "dependencies": {
34
- "@apostrophecms/vue-color": "^2.8.2",
34
+ "@apostrophecms/vue-material-design-icons": "^1.0.0",
35
+ "@ckpack/vue-color": "^1.4.1",
36
+ "@floating-ui/dom": "^1.5.3",
35
37
  "@opentelemetry/api": "^1.0.4",
36
38
  "@opentelemetry/semantic-conventions": "^1.0.1",
37
- "@tiptap/core": "^2.0.0-beta.220",
38
- "@tiptap/extension-blockquote": "^2.0.0-beta.220",
39
- "@tiptap/extension-bold": "^2.0.0-beta.220",
40
- "@tiptap/extension-bullet-list": "^2.0.0-beta.220",
41
- "@tiptap/extension-code": "^2.0.0-beta.220",
42
- "@tiptap/extension-code-block": "^2.0.0-beta.220",
43
- "@tiptap/extension-dropcursor": "^2.0.0-beta.220",
44
- "@tiptap/extension-floating-menu": "^2.0.0-beta.220",
45
- "@tiptap/extension-gapcursor": "^2.0.0-beta.220",
46
- "@tiptap/extension-hard-break": "^2.0.0-beta.220",
47
- "@tiptap/extension-heading": "^2.0.0-beta.220",
48
- "@tiptap/extension-highlight": "^2.0.0-beta.220",
49
- "@tiptap/extension-history": "^2.0.0-beta.220",
50
- "@tiptap/extension-horizontal-rule": "^2.0.0-beta.220",
51
- "@tiptap/extension-italic": "^2.0.0-beta.220",
52
- "@tiptap/extension-link": "^2.0.0-beta.220",
53
- "@tiptap/extension-list-item": "^2.0.0-beta.220",
54
- "@tiptap/extension-ordered-list": "^2.0.0-beta.220",
55
- "@tiptap/extension-paragraph": "^2.0.0-beta.220",
56
- "@tiptap/extension-placeholder": "^2.0.0-beta.220",
57
- "@tiptap/extension-strike": "^2.0.0-beta.220",
58
- "@tiptap/extension-subscript": "^2.0.0-beta.220",
59
- "@tiptap/extension-superscript": "^2.0.0-beta.220",
60
- "@tiptap/extension-table": "^2.0.0-beta.220",
61
- "@tiptap/extension-table-cell": "^2.0.0-beta.220",
62
- "@tiptap/extension-table-header": "^2.0.0-beta.220",
63
- "@tiptap/extension-table-row": "^2.0.0-beta.220",
64
- "@tiptap/extension-text": "^2.0.0-beta.220",
65
- "@tiptap/extension-text-align": "^2.0.0-beta.220",
66
- "@tiptap/extension-text-style": "^2.0.0-beta.220",
67
- "@tiptap/extension-underline": "^2.0.0-beta.220",
68
- "@tiptap/vue-2": "^2.0.0-beta.220",
39
+ "@tiptap/extension-floating-menu": "^2.0.3",
40
+ "@tiptap/extension-highlight": "^2.0.3",
41
+ "@tiptap/extension-link": "^2.0.3",
42
+ "@tiptap/extension-placeholder": "^2.0.3",
43
+ "@tiptap/extension-subscript": "^2.0.3",
44
+ "@tiptap/extension-superscript": "^2.0.3",
45
+ "@tiptap/extension-table": "^2.0.3",
46
+ "@tiptap/extension-table-cell": "^2.0.3",
47
+ "@tiptap/extension-table-header": "^2.0.3",
48
+ "@tiptap/extension-table-row": "^2.0.3",
49
+ "@tiptap/extension-text-align": "^2.0.3",
50
+ "@tiptap/extension-text-style": "^2.0.3",
51
+ "@tiptap/extension-underline": "^2.0.3",
52
+ "@tiptap/starter-kit": "^2.0.3",
53
+ "@tiptap/vue-3": "^2.0.3",
54
+ "@vue/compat": "^3.3.8",
55
+ "@vue/compiler-sfc": "^3.3.8",
69
56
  "autoprefixer": "^10.4.1",
70
57
  "bluebird": "^3.7.2",
71
58
  "body-parser": "^1.18.2",
@@ -91,7 +78,7 @@
91
78
  "form-data": "^4.0.0",
92
79
  "fs-extra": "^7.0.1",
93
80
  "glob": "^5.0.15",
94
- "he": "^0.5.0",
81
+ "he": "^1.2.0",
95
82
  "html-to-text": "^9.0.5",
96
83
  "i18next": "^20.3.2",
97
84
  "i18next-http-middleware": "^3.1.5",
@@ -127,18 +114,17 @@
127
114
  "sass-loader": "^10.1.1",
128
115
  "server-destroy": "^1.0.1",
129
116
  "sluggo": "^1.0.0",
117
+ "sortablejs": "^1.15.0",
118
+ "sortablejs-vue3": "^1.2.11",
119
+ "tiny-emitter": "^2.1.0",
130
120
  "tinycolor2": "^1.4.2",
131
121
  "tough-cookie": "^4.0.0",
132
122
  "underscore.string": "^3.3.4",
133
123
  "uploadfs": "^1.22.3",
134
- "v-tooltip": "^2.0.3",
135
- "vue": "2.7.15",
136
- "vue-advanced-cropper": "^1.10.1",
137
- "vue-loader": "^15.10.0",
138
- "vue-material-design-icons": "~4.12.1",
139
- "vue-style-loader": "^4.1.2",
140
- "vue-template-compiler": "^2.6.14",
141
- "vuedraggable": "^2.24.3",
124
+ "vue": "^3.3.8",
125
+ "vue-advanced-cropper": "^2.8.8",
126
+ "vue-loader": "^17.1.0",
127
+ "vue-style-loader": "^4.1.3",
142
128
  "webpack": "^5.72.0",
143
129
  "webpack-merge": "^5.7.3",
144
130
  "xregexp": "^2.0.0"
@@ -157,7 +143,8 @@
157
143
  "stylelint": "^14.6.1",
158
144
  "stylelint-declaration-strict-value": "^1.8.0",
159
145
  "stylelint-order": "^5.0.0",
160
- "vue-eslint-parser": "^7.1.1"
146
+ "vue-eslint-parser": "^7.1.1",
147
+ "vue-template-compiler": "^2.7.14"
161
148
  },
162
149
  "browserslist": [
163
150
  "ie >= 10"
@@ -442,5 +442,10 @@ describe('Attachment', function() {
442
442
 
443
443
  assert(height === 400);
444
444
  });
445
+
446
+ it('should generate an appropriate missing attachment url', function() {
447
+ const url = apos.attachment.url(null);
448
+ assert.strictEqual(url, '/apos-frontend/default/modules/@apostrophecms/attachment/img/missing-icon.svg');
449
+ });
445
450
  });
446
451
  });
package/test/schemas.js CHANGED
@@ -288,6 +288,44 @@ describe('Schemas', function() {
288
288
  }
289
289
  };
290
290
  }
291
+ },
292
+ article: {
293
+ extend: '@apostrophecms/piece-type',
294
+ options: {
295
+ alias: 'article'
296
+ },
297
+ fields(self) {
298
+ return {
299
+ add: {
300
+ title: {
301
+ label: '',
302
+ type: 'string',
303
+ required: true
304
+ },
305
+ area: {
306
+ label: 'Area',
307
+ type: 'area',
308
+ options: {
309
+ widgets: {
310
+ '@apostrophecms/rich-text': {}
311
+ }
312
+ }
313
+ },
314
+ array: {
315
+ label: 'Array',
316
+ type: 'array',
317
+ fields: {
318
+ add: {
319
+ arrayTitle: {
320
+ label: 'Array Title',
321
+ type: 'string'
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ };
328
+ }
291
329
  }
292
330
  }
293
331
  });
@@ -2263,6 +2301,106 @@ describe('Schemas', function() {
2263
2301
  assert(output.goodValue === '2022-05-09T22:36:00.000Z');
2264
2302
  });
2265
2303
 
2304
+ it('should compare two document properly with the method getChanges', async function() {
2305
+ const req = apos.task.getReq();
2306
+ const instance = apos.article.newInstance();
2307
+ const article1 = {
2308
+ ...instance,
2309
+ title: 'article 1',
2310
+ area: {
2311
+ _id: 'clrth36680007mnmd3jj7cta0',
2312
+ items: [
2313
+ {
2314
+ _id: 'clt79l48g001h2061j5ihxjkv',
2315
+ metaType: 'widget',
2316
+ type: '@apostrophecms/rich-text',
2317
+ aposPlaceholder: false,
2318
+ content: '<p>Some text here.</p>',
2319
+ permalinkIds: [],
2320
+ imageIds: []
2321
+ }
2322
+ ],
2323
+ metaType: 'area'
2324
+ },
2325
+ array: [
2326
+ {
2327
+ _id: 'clt79llm800242061v4dx9kv5',
2328
+ metaType: 'arrayItem',
2329
+ scopedArrayName: 'doc.article.array',
2330
+ arrayTitle: 'array title 1'
2331
+ },
2332
+ {
2333
+ _id: 'clt79llm800242061v4d47364',
2334
+ metaType: 'arrayItem',
2335
+ scopedArrayName: 'doc.article.array',
2336
+ arrayTitle: 'array title 2'
2337
+ }
2338
+ ]
2339
+ };
2340
+ const article2 = {
2341
+ ...article1,
2342
+ title: 'article 2'
2343
+ };
2344
+ const article3 = {
2345
+ ...instance,
2346
+ title: 'article 3',
2347
+
2348
+ area: {
2349
+ _id: 'clrth36680007mnmd3jj7cta0',
2350
+ items: [
2351
+ {
2352
+ _id: 'clt79l48g001h2061j5ihxjkv',
2353
+ metaType: 'widget',
2354
+ type: '@apostrophecms/rich-text',
2355
+ aposPlaceholder: false,
2356
+ content: '<p>Some text here changed.</p>',
2357
+ permalinkIds: [],
2358
+ imageIds: []
2359
+ }
2360
+ ],
2361
+ metaType: 'area'
2362
+ },
2363
+ array: [
2364
+ {
2365
+ _id: 'clt79llm800242061v4dx9kv5',
2366
+ metaType: 'arrayItem',
2367
+ scopedArrayName: 'doc.article.array',
2368
+ arrayTitle: 'array title 1 changed'
2369
+ },
2370
+ {
2371
+ _id: 'clt79llm800242061v4d47364',
2372
+ metaType: 'arrayItem',
2373
+ scopedArrayName: 'doc.article.array',
2374
+ arrayTitle: 'array title 2'
2375
+ }
2376
+ ]
2377
+ };
2378
+
2379
+ await apos.article.insert(req, article1);
2380
+ await apos.article.insert(req, article2);
2381
+ await apos.article.insert(req, article3);
2382
+
2383
+ const art1 = await apos.doc.db.findOne({ title: 'article 1' });
2384
+ const art2 = await apos.doc.db.findOne({ title: 'article 2' });
2385
+ const art3 = await apos.doc.db.findOne({ title: 'article 3' });
2386
+
2387
+ const changes11 = apos.schema.getChanges(req, apos.article.schema, art1, art1);
2388
+ const changes12 = apos.schema.getChanges(req, apos.article.schema, art1, art2);
2389
+ const changes23 = apos.schema.getChanges(req, apos.article.schema, art2, art3);
2390
+ const actual = {
2391
+ changes11,
2392
+ changes12,
2393
+ changes23
2394
+ };
2395
+ const expected = {
2396
+ changes11: [],
2397
+ changes12: [ 'title', 'slug' ],
2398
+ changes23: [ 'title', 'slug', 'area', 'array' ]
2399
+ };
2400
+
2401
+ assert.deepEqual(actual, expected);
2402
+ });
2403
+
2266
2404
  describe('field editPermission|viewPermission', function() {
2267
2405
  const schema = [
2268
2406
  {