apostrophe 4.6.0 → 4.7.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 (126) hide show
  1. package/.github/workflows/main.yml +1 -1
  2. package/CHANGELOG.md +47 -1
  3. package/lib/big-upload-client.js +100 -0
  4. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +5 -3
  5. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +6 -3
  6. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarUser.vue +4 -1
  7. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +24 -16
  8. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +1 -0
  9. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposSavingIndicator.vue +7 -5
  10. package/modules/@apostrophecms/area/index.js +5 -2
  11. package/modules/@apostrophecms/area/ui/apos/components/AposAreaContextualMenu.vue +27 -15
  12. package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +11 -7
  13. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenu.vue +25 -12
  14. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenuItem.vue +3 -1
  15. package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +80 -30
  16. package/modules/@apostrophecms/asset/index.js +8 -4
  17. package/modules/@apostrophecms/attachment/index.js +4 -2
  18. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKey.vue +28 -24
  19. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +17 -11
  20. package/modules/@apostrophecms/doc/index.js +22 -19
  21. package/modules/@apostrophecms/doc-type/index.js +6 -2
  22. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +9 -5
  23. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocLocalePicker.vue +10 -5
  24. package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +12 -0
  25. package/modules/@apostrophecms/http/index.js +19 -3
  26. package/modules/@apostrophecms/http/lib/big-upload-middleware.js +251 -0
  27. package/modules/@apostrophecms/i18n/i18n/de.json +1 -1
  28. package/modules/@apostrophecms/i18n/i18n/en.json +9 -1
  29. package/modules/@apostrophecms/i18n/i18n/es.json +1 -1
  30. package/modules/@apostrophecms/i18n/i18n/fr.json +1 -1
  31. package/modules/@apostrophecms/i18n/i18n/it.json +1 -1
  32. package/modules/@apostrophecms/i18n/i18n/pt-BR.json +1 -1
  33. package/modules/@apostrophecms/i18n/i18n/sk.json +1 -1
  34. package/modules/@apostrophecms/i18n/index.js +3 -0
  35. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +30 -16
  36. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +7 -5
  37. package/modules/@apostrophecms/image/ui/apos/components/AposImageCropper.vue +5 -1
  38. package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +10 -6
  39. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +40 -18
  40. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +35 -25
  41. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +11 -5
  42. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +15 -9
  43. package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +39 -31
  44. package/modules/@apostrophecms/job/index.js +1 -1
  45. package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +9 -7
  46. package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +17 -13
  47. package/modules/@apostrophecms/login/ui/apos/components/TheAposLoginHeader.vue +30 -20
  48. package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +5 -0
  49. package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +4 -1
  50. package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +8 -4
  51. package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +14 -8
  52. package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +32 -22
  53. package/modules/@apostrophecms/modal/ui/apos/components/AposModalTabs.vue +16 -14
  54. package/modules/@apostrophecms/modal/ui/apos/components/AposWidgetModalTabs.vue +16 -14
  55. package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +93 -91
  56. package/modules/@apostrophecms/page/index.js +482 -13
  57. package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +43 -23
  58. package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +248 -156
  59. package/modules/@apostrophecms/permission/ui/apos/components/AposPermissionGrid.vue +9 -5
  60. package/modules/@apostrophecms/piece-type/index.js +7 -7
  61. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +92 -36
  62. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +32 -24
  63. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapDivider.vue +4 -2
  64. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +2 -1
  65. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapMarks.vue +5 -3
  66. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapStyles.vue +5 -3
  67. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapTable.vue +5 -2
  68. package/modules/@apostrophecms/schema/index.js +26 -5
  69. package/modules/@apostrophecms/schema/lib/addFieldTypes.js +42 -9
  70. package/modules/@apostrophecms/schema/ui/apos/components/AposInputColor.vue +4 -2
  71. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRange.vue +8 -4
  72. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +6 -4
  73. package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +5 -3
  74. package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +19 -13
  75. package/modules/@apostrophecms/schema/ui/apos/components/AposSearchList.vue +6 -2
  76. package/modules/@apostrophecms/schema/ui/apos/components/AposSubform.vue +6 -4
  77. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputSlug.js +28 -25
  78. package/modules/@apostrophecms/schema/ui/apos/scss/AposInputArray.scss +13 -7
  79. package/modules/@apostrophecms/settings/ui/apos/components/AposSettingsManager.vue +11 -6
  80. package/modules/@apostrophecms/translation/ui/apos/components/AposTranslationIndicator.vue +5 -3
  81. package/modules/@apostrophecms/ui/ui/apos/components/AposAvatar.vue +14 -12
  82. package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +14 -11
  83. package/modules/@apostrophecms/ui/ui/apos/components/AposButtonSplit.vue +7 -3
  84. package/modules/@apostrophecms/ui/ui/apos/components/AposCellContextMenu.vue +4 -2
  85. package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +23 -17
  86. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +41 -18
  87. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuDialog.vue +7 -5
  88. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuItem.vue +10 -8
  89. package/modules/@apostrophecms/ui/ui/apos/components/AposEmptyState.vue +9 -5
  90. package/modules/@apostrophecms/ui/ui/apos/components/AposFile.vue +9 -6
  91. package/modules/@apostrophecms/ui/ui/apos/components/AposIndicator.vue +5 -0
  92. package/modules/@apostrophecms/ui/ui/apos/components/AposLoadingBlock.vue +3 -1
  93. package/modules/@apostrophecms/ui/ui/apos/components/AposLocale.vue +3 -1
  94. package/modules/@apostrophecms/ui/ui/apos/components/AposLocalePicker.vue +11 -9
  95. package/modules/@apostrophecms/ui/ui/apos/components/AposMinMaxCount.vue +5 -3
  96. package/modules/@apostrophecms/ui/ui/apos/components/AposPager.vue +4 -2
  97. package/modules/@apostrophecms/ui/ui/apos/components/AposPagerDots.vue +8 -6
  98. package/modules/@apostrophecms/ui/ui/apos/components/AposSlat.vue +25 -17
  99. package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +5 -9
  100. package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +10 -6
  101. package/modules/@apostrophecms/ui/ui/apos/components/AposTag.vue +9 -7
  102. package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +8 -4
  103. package/modules/@apostrophecms/ui/ui/apos/components/AposTagList.vue +4 -2
  104. package/modules/@apostrophecms/ui/ui/apos/components/AposTagListItem.vue +7 -5
  105. package/modules/@apostrophecms/ui/ui/apos/components/AposToggle.vue +16 -0
  106. package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +3 -1
  107. package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +11 -9
  108. package/modules/@apostrophecms/ui/ui/apos/mixins/AposArchiveMixin.js +2 -2
  109. package/modules/@apostrophecms/ui/ui/apos/mixins/AposPublishMixin.js +6 -6
  110. package/modules/@apostrophecms/ui/ui/apos/scss/global/_inputs.scss +30 -22
  111. package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +22 -18
  112. package/modules/@apostrophecms/ui/ui/apos/scss/global/_tooltips.scss +18 -15
  113. package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_input_mixins.scss +8 -6
  114. package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_mixins.scss +3 -1
  115. package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_theme_mixins.scss +34 -19
  116. package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_type_mixins.scss +3 -1
  117. package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_zindex.scss +1 -0
  118. package/modules/@apostrophecms/ui/ui/apos/utils/index.js +140 -51
  119. package/modules/@apostrophecms/widget-type/index.js +3 -2
  120. package/modules/@apostrophecms/widget-type/ui/apos/mixins/AposWidgetMixin.js +5 -1
  121. package/package.json +5 -6
  122. package/test/big-upload.js +111 -0
  123. package/test/change-doc-ids.js +60 -1
  124. package/test/pages.js +488 -0
  125. package/test/schemas.js +327 -0
  126. package/test/utils.js +266 -5
@@ -237,20 +237,22 @@ export default {
237
237
  @include apos-button-reset();
238
238
  @include type-base;
239
239
 
240
- position: relative;
241
- display: flex;
242
- box-sizing: border-box;
243
- align-items: center;
244
- justify-content: space-between;
245
- width: 100%;
246
- height: 60px;
247
- padding: 25px 10px;
248
- border-bottom: 1px solid var(--a-base-7);
249
- color: var(--a-text-primary);
250
- text-align: left;
251
- transition: all 200ms ease;
252
- background-color: var(--a-base-9);
253
- cursor: pointer;
240
+ & {
241
+ position: relative;
242
+ display: flex;
243
+ box-sizing: border-box;
244
+ align-items: center;
245
+ justify-content: space-between;
246
+ width: 100%;
247
+ height: 60px;
248
+ padding: 25px 10px;
249
+ border-bottom: 1px solid var(--a-base-7);
250
+ color: var(--a-text-primary);
251
+ text-align: left;
252
+ transition: all 200ms ease;
253
+ background-color: var(--a-base-9);
254
+ cursor: pointer;
255
+ }
254
256
 
255
257
  @include media-up(lap) {
256
258
  padding: 25px 10px 25px 20px;
@@ -7,10 +7,7 @@
7
7
  :icon-size="notification.icon ? 16 : 12"
8
8
  />
9
9
  </span>
10
- <span
11
- ref="label"
12
- class="apos-notification__label"
13
- >
10
+ <span ref="label" class="apos-notification__label">
14
11
  {{ localize(notification.message) }}
15
12
  <!-- OK to use index as key because buttons are constant for the lifetime of the notification -->
16
13
  <button
@@ -24,10 +21,7 @@
24
21
  {{ localize(button.label) }}
25
22
  </button>
26
23
  </span>
27
- <div
28
- v-if="job && job.total"
29
- class="apos-notification__progress"
30
- >
24
+ <div v-if="job && job.total" class="apos-notification__progress">
31
25
  <div class="apos-notification__progress-bar">
32
26
  <div
33
27
  class="apos-notification__progress-now"
@@ -69,7 +63,7 @@ export default {
69
63
  }
70
64
  },
71
65
  emits: [ 'close' ],
72
- data () {
66
+ data() {
73
67
  return {
74
68
  job: this.notification.job && this.notification.job._id ? {
75
69
  route: `${apos.modules['@apostrophecms/job'].action}/${this.notification.job._id}`,
@@ -107,7 +101,7 @@ export default {
107
101
 
108
102
  return classes.join(' ');
109
103
  },
110
- iconComponent () {
104
+ iconComponent() {
111
105
  if (this.notification.icon) {
112
106
  return this.notification.icon;
113
107
  } else {
@@ -175,7 +169,7 @@ export default {
175
169
  }
176
170
  return result;
177
171
  },
178
- async pollJob () {
172
+ async pollJob() {
179
173
  if (!this.job?.total) {
180
174
  return;
181
175
  }
@@ -210,9 +204,10 @@ export default {
210
204
  </script>
211
205
 
212
206
  <style lang="scss" scoped>
213
- .apos-notification {
214
- @include apos-transition();
207
+ .apos-notification {
208
+ @include apos-transition();
215
209
 
210
+ & {
216
211
  position: relative;
217
212
  display: inline-flex;
218
213
  overflow: hidden;
@@ -225,52 +220,54 @@ export default {
225
220
  max-width: 500px;
226
221
  border-radius: 200px;
227
222
  box-shadow: var(--a-box-shadow);
228
-
229
- & + .apos-notification {
230
- margin-top: 8px;
231
- }
232
-
233
- &:hover {
234
- transform: translateY(-1px);
235
- }
236
- }
237
-
238
- .apos-notification--hidden {
239
- display: none;
240
- }
241
-
242
- .apos-notification--long {
243
- border-radius: 10px;
244
- }
245
-
246
- .apos-notification__indicator {
247
- position: relative;
248
- display: inline-flex;
249
- margin-right: 10px;
250
- padding: 5px;
251
- color: var(--a-base-1);
252
- border-radius: 50%;
253
- background-color: var(--a-base-1);
254
- }
255
-
256
- .apos-notification--warning .apos-notification__indicator {
257
- background-color: var(--a-warning-fade);
258
- color: var(--a-warning);
259
223
  }
260
224
 
261
- .apos-notification--success .apos-notification__indicator {
262
- background-color: var(--a-success-fade);
263
- color: var(--a-success);
225
+ &+.apos-notification {
226
+ margin-top: 8px;
264
227
  }
265
228
 
266
- .apos-notification--danger .apos-notification__indicator {
267
- background-color: var(--a-danger-fade);
268
- color: var(--a-danger);
229
+ &:hover {
230
+ transform: translateY(-1px);
269
231
  }
270
-
271
- .apos-notification__button {
272
- @include apos-transition(all);
273
-
232
+ }
233
+
234
+ .apos-notification--hidden {
235
+ display: none;
236
+ }
237
+
238
+ .apos-notification--long {
239
+ border-radius: 10px;
240
+ }
241
+
242
+ .apos-notification__indicator {
243
+ position: relative;
244
+ display: inline-flex;
245
+ margin-right: 10px;
246
+ padding: 5px;
247
+ color: var(--a-base-1);
248
+ border-radius: 50%;
249
+ background-color: var(--a-base-1);
250
+ }
251
+
252
+ .apos-notification--warning .apos-notification__indicator {
253
+ background-color: var(--a-warning-fade);
254
+ color: var(--a-warning);
255
+ }
256
+
257
+ .apos-notification--success .apos-notification__indicator {
258
+ background-color: var(--a-success-fade);
259
+ color: var(--a-success);
260
+ }
261
+
262
+ .apos-notification--danger .apos-notification__indicator {
263
+ background-color: var(--a-danger-fade);
264
+ color: var(--a-danger);
265
+ }
266
+
267
+ .apos-notification__button {
268
+ @include apos-transition(all);
269
+
270
+ & {
274
271
  position: absolute;
275
272
  right: 2px;
276
273
  display: flex;
@@ -281,55 +278,60 @@ export default {
281
278
  border: none;
282
279
  color: var(--a-text-inverted);
283
280
  background-color: transparent;
284
-
285
- &:hover {
286
- cursor: pointer;
287
- }
288
281
  }
289
282
 
290
- .apos-notification__close-icon {
291
- height: 12px;
283
+ &:hover {
284
+ cursor: pointer;
292
285
  }
286
+ }
293
287
 
294
- .apos-notification__label,
295
- .apos-notification__progress-value {
296
- @include type-base;
288
+ .apos-notification__close-icon {
289
+ height: 12px;
290
+ }
297
291
 
292
+ .apos-notification__label,
293
+ .apos-notification__progress-value {
294
+ @include type-base;
295
+
296
+ & {
298
297
  color: var(--a-text-inverted);
299
- line-height: var(--a-line-tallest);
298
+ line-height: var(--a-line-tallest);
300
299
  }
300
+ }
301
301
 
302
- .apos-notification__label :deep(button) {
303
- @include apos-button-reset();
302
+ .apos-notification__label :deep(button) {
303
+ @include apos-button-reset();
304
304
 
305
+ & {
305
306
  text-decoration: underline;
306
307
  text-decoration-color: var(--a-success);
307
308
  text-underline-offset: 3px;
308
309
  padding: 0 3px;
309
310
  }
310
-
311
- .apos-notification__progress {
312
- display: flex;
313
- flex-shrink: 0;
314
- align-items: center;
315
- }
316
-
317
- .apos-notification__progress-bar {
318
- width: 70px;
319
- height: 4px;
320
- margin-left: 20px;
321
- border-width: 0;
322
- background-color: var(--a-progress-bg);
323
- }
324
-
325
- .apos-notification__progress-now {
326
- height: 100%;
327
- background-color: var(--a-brand-green);
328
- background-image: linear-gradient(46deg, var(--a-brand-gold) 0%, var(--a-brand-red) 26%, var(--a-brand-magenta) 47%, var(--a-brand-blue) 76%, var(--a-brand-green) 100%);
329
- transition: width 500ms ease-out;
330
- }
331
-
332
- .apos-notification__progress-value {
333
- margin-left: 20px;
334
- }
311
+ }
312
+
313
+ .apos-notification__progress {
314
+ display: flex;
315
+ flex-shrink: 0;
316
+ align-items: center;
317
+ }
318
+
319
+ .apos-notification__progress-bar {
320
+ width: 70px;
321
+ height: 4px;
322
+ margin-left: 20px;
323
+ border-width: 0;
324
+ background-color: var(--a-progress-bg);
325
+ }
326
+
327
+ .apos-notification__progress-now {
328
+ height: 100%;
329
+ background-color: var(--a-brand-green);
330
+ background-image: linear-gradient(46deg, var(--a-brand-gold) 0%, var(--a-brand-red) 26%, var(--a-brand-magenta) 47%, var(--a-brand-blue) 76%, var(--a-brand-green) 100%);
331
+ transition: width 500ms ease-out;
332
+ }
333
+
334
+ .apos-notification__progress-value {
335
+ margin-left: 20px;
336
+ }
335
337
  </style>