apostrophe 4.28.1 → 4.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -4
- package/README.md +2 -2
- package/defaults.js +1 -0
- package/lib/safe-json-script.js +27 -0
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +1 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +1 -0
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +3 -5
- package/modules/@apostrophecms/area/ui/apos/components/AposBreadcrumbOperations.vue +13 -1
- package/modules/@apostrophecms/asset/lib/globalIcons.js +3 -0
- package/modules/@apostrophecms/attachment/index.js +43 -1
- package/modules/@apostrophecms/color-field/index.js +7 -1
- package/modules/@apostrophecms/doc/index.js +11 -1
- package/modules/@apostrophecms/doc-type/index.js +165 -32
- package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +1 -1
- package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +104 -59
- package/modules/@apostrophecms/file/index.js +109 -8
- package/modules/@apostrophecms/i18n/i18n/de.json +0 -2
- package/modules/@apostrophecms/i18n/i18n/en.json +40 -1
- package/modules/@apostrophecms/i18n/i18n/es.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/fr.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/it.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/pt-BR.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/sk.json +0 -1
- package/modules/@apostrophecms/i18n/ui/apos/apps/AposI18nBatchReporting.js +18 -1
- package/modules/@apostrophecms/i18n/ui/apos/apps/AposI18nLocalizeActions.js +50 -0
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +56 -13
- package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +8 -2
- package/modules/@apostrophecms/layout-column-widget/index.js +156 -163
- package/modules/@apostrophecms/layout-widget/index.js +7 -2
- package/modules/@apostrophecms/layout-widget/ui/apos/components/AposAreaLayoutEditor.vue +6 -11
- package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridColumn.vue +3 -5
- package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridLayout.vue +4 -4
- package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridManager.vue +0 -16
- package/modules/@apostrophecms/layout-widget/ui/apos/lib/grid-state.mjs +7 -27
- package/modules/@apostrophecms/layout-widget/views/column.html +7 -9
- package/modules/@apostrophecms/login/index.js +39 -40
- package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +17 -2
- package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +3 -2
- package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +1 -0
- package/modules/@apostrophecms/page/index.js +2 -0
- package/modules/@apostrophecms/piece-type/index.js +3 -1
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +1 -0
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerDisplay.vue +5 -0
- package/modules/@apostrophecms/recently-edited/index.js +831 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposCellTitle.vue +54 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedCombo.vue +454 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedFilterTag.vue +75 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedFilters.vue +287 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedIcon.vue +16 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedManager.vue +346 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedBatch.js +193 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedData.js +276 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedFetch.js +199 -0
- package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedFilters.js +100 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +8 -4
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +1 -1
- package/modules/@apostrophecms/styles/index.js +10 -0
- package/modules/@apostrophecms/styles/lib/apiRoutes.js +6 -0
- package/modules/@apostrophecms/styles/lib/handlers.js +5 -0
- package/modules/@apostrophecms/styles/lib/methods.js +9 -3
- package/modules/@apostrophecms/styles/lib/presets.js +119 -0
- package/modules/@apostrophecms/styles/ui/apos/components/TheAposStyles.vue +3 -8
- package/modules/@apostrophecms/styles/ui/apos/composables/AposStyles.js +1 -3
- package/modules/@apostrophecms/styles/ui/apos/render-factory.js +29 -0
- package/modules/@apostrophecms/styles/ui/apos/universal/backgroundHelpers.mjs +140 -0
- package/modules/@apostrophecms/styles/ui/apos/universal/customRules.mjs +105 -0
- package/modules/@apostrophecms/styles/ui/apos/universal/render.mjs +195 -15
- package/modules/@apostrophecms/template/index.js +22 -6
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellContextMenu.vue +2 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +18 -4
- package/modules/@apostrophecms/ui/ui/apos/composables/useInfiniteScroll.js +91 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +1 -0
- package/modules/@apostrophecms/ui/ui/apos/stores/modal.js +5 -2
- package/modules/@apostrophecms/ui/ui/apos/utils/index.js +9 -0
- package/modules/@apostrophecms/url/index.js +38 -4
- package/modules/@apostrophecms/widget-type/index.js +22 -6
- package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +8 -4
- package/package.json +17 -17
- package/test/add-missing-schema-fields-project/node_modules/.package-lock.json +2 -2
- package/test/layout-widget-migration.js +719 -0
- package/test/login-requirements.js +1 -1
- package/test/pieces-public-api.js +80 -0
- package/test/pieces.js +25 -0
- package/test/recently-edited.js +2311 -0
- package/test/schemas.js +39 -3
- package/test/static-build.js +642 -0
- package/test/styles.js +2569 -0
- package/.claude/settings.local.json +0 -15
- package/modules/@apostrophecms/layout-widget/ui/apos/components/AposLayoutColControlDialog.vue +0 -171
|
@@ -174,7 +174,10 @@ module.exports = {
|
|
|
174
174
|
origin: null,
|
|
175
175
|
preview: true,
|
|
176
176
|
// Set to false to opt out of the automatic styling wrapping of widget output
|
|
177
|
-
stylesWrapper: true
|
|
177
|
+
stylesWrapper: true,
|
|
178
|
+
// If set to true, the widget editor will hide tabs when there is only one,
|
|
179
|
+
// even if groups are defined. Defaults to false for backwards compatibility.
|
|
180
|
+
hideSingleTab: false
|
|
178
181
|
},
|
|
179
182
|
init(self) {
|
|
180
183
|
self.isExplicitOrigin = self.options.origin !== null;
|
|
@@ -306,14 +309,20 @@ module.exports = {
|
|
|
306
309
|
label: 'apostrophe:styles',
|
|
307
310
|
fields: groupFields
|
|
308
311
|
};
|
|
309
|
-
// Create a default group if none exist
|
|
312
|
+
// Create a default group if none exist.
|
|
313
|
+
// Ignore utility group if it's the only one, since it's now the way
|
|
314
|
+
// to hide fields (see layout column widget).
|
|
315
|
+
const visibleFields = Object.keys(self.fields)
|
|
316
|
+
.filter(
|
|
317
|
+
fieldName => !self.fieldsGroups.utility?.fields?.includes(fieldName)
|
|
318
|
+
);
|
|
310
319
|
if (
|
|
311
|
-
!Object.keys(self.fieldsGroups).length &&
|
|
312
|
-
|
|
320
|
+
!Object.keys(self.fieldsGroups).filter(g => g !== 'utility').length &&
|
|
321
|
+
visibleFields.length
|
|
313
322
|
) {
|
|
314
323
|
self.fieldsGroups.basics = {
|
|
315
324
|
label: 'apostrophe:basics',
|
|
316
|
-
fields:
|
|
325
|
+
fields: visibleFields
|
|
317
326
|
};
|
|
318
327
|
}
|
|
319
328
|
self.fieldsGroups.styles = stylesGroup;
|
|
@@ -530,6 +539,12 @@ module.exports = {
|
|
|
530
539
|
// then feeding it our widgets as if they were docs.
|
|
531
540
|
|
|
532
541
|
if (!(widgets.length && widgets[0]._virtual)) {
|
|
542
|
+
// For non-virtual widgets whose loading was deferred,
|
|
543
|
+
// relationships were just populated above but the page-level
|
|
544
|
+
// `attachments` query builder already ran before widget
|
|
545
|
+
// loading occurred. Re-annotate so that attachment `_urls`
|
|
546
|
+
// reflect crop/focal-point data from relationship `_fields`.
|
|
547
|
+
self.apos.attachment.all(widgets, { annotate: true });
|
|
533
548
|
return;
|
|
534
549
|
}
|
|
535
550
|
|
|
@@ -772,7 +787,8 @@ module.exports = {
|
|
|
772
787
|
preview: self.options.preview,
|
|
773
788
|
isExplicitOrigin: self.isExplicitOrigin,
|
|
774
789
|
widgetOperations: self.getWidgetOperations(req),
|
|
775
|
-
widgetBreadcrumbOperations: self.getWidgetBreadcrumbOperations(req)
|
|
790
|
+
widgetBreadcrumbOperations: self.getWidgetBreadcrumbOperations(req),
|
|
791
|
+
hideSingleTab: self.options.hideSingleTab
|
|
776
792
|
});
|
|
777
793
|
return result;
|
|
778
794
|
}
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
:items="breadcrumbs"
|
|
57
57
|
/>
|
|
58
58
|
<AposWidgetModalTabs
|
|
59
|
-
v-if="
|
|
59
|
+
v-if="shouldShowTabs"
|
|
60
60
|
:key="tabKey"
|
|
61
61
|
:current="currentTab"
|
|
62
62
|
:tabs="tabs"
|
|
@@ -120,8 +120,7 @@ import AposModalTabsMixin from 'Modules/@apostrophecms/modal/mixins/AposModalTab
|
|
|
120
120
|
import { detectDocChange } from 'Modules/@apostrophecms/schema/lib/detectChange';
|
|
121
121
|
import newInstance from 'apostrophe/modules/@apostrophecms/schema/lib/newInstance.js';
|
|
122
122
|
import { debounceAsync } from 'Modules/@apostrophecms/ui/utils';
|
|
123
|
-
import { renderScopedStyles } from 'Modules/@apostrophecms/styles/
|
|
124
|
-
import checkIfConditions from 'apostrophe/lib/universal/check-if-conditions.mjs';
|
|
123
|
+
import { renderScopedStyles } from 'Modules/@apostrophecms/styles/render-factory.js';
|
|
125
124
|
import breakpointPreviewTransformer from 'postcss-viewport-to-container-toggle/standalone.js';
|
|
126
125
|
import { useModalStore } from 'Modules/@apostrophecms/ui/stores/modal';
|
|
127
126
|
|
|
@@ -227,6 +226,12 @@ export default {
|
|
|
227
226
|
moduleOptions() {
|
|
228
227
|
return window.apos.modules[apos.area.widgetManagers[this.type]];
|
|
229
228
|
},
|
|
229
|
+
shouldShowTabs() {
|
|
230
|
+
if (this.moduleOptions.hideSingleTab) {
|
|
231
|
+
return this.tabs.length > 1;
|
|
232
|
+
}
|
|
233
|
+
return this.tabs.length && this.tabs[0].name !== 'ungrouped';
|
|
234
|
+
},
|
|
230
235
|
typeLabel() {
|
|
231
236
|
return this.moduleOptions.label;
|
|
232
237
|
},
|
|
@@ -553,7 +558,6 @@ export default {
|
|
|
553
558
|
if (recomputeOnlyStyles) {
|
|
554
559
|
const styles = renderScopedStyles(this.schema, value.data, {
|
|
555
560
|
rootSelector: '__placeholder_root_selector__',
|
|
556
|
-
checkIfConditionsFn: checkIfConditions,
|
|
557
561
|
subset: this.moduleOptions.stylesFields
|
|
558
562
|
});
|
|
559
563
|
this.applyPreviewStyles(styles);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apostrophe",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.29.0",
|
|
4
4
|
"description": "The Apostrophe Content Management System.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"autoprefixer": "^10.4.1",
|
|
51
51
|
"bluebird": "^3.7.2",
|
|
52
52
|
"body-parser": "^1.18.2",
|
|
53
|
-
"cheerio": "^1.
|
|
53
|
+
"cheerio": "^1.1.0",
|
|
54
54
|
"chokidar": "^3.5.2",
|
|
55
55
|
"common-tags": "^1.8.0",
|
|
56
56
|
"concat-with-sourcemaps": "^1.1.0",
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
"cssnano": "^7.1.1",
|
|
62
62
|
"csv-parse": "^5.6.0",
|
|
63
63
|
"dayjs": "^1.9.8",
|
|
64
|
-
"dompurify": "^3.2
|
|
64
|
+
"dompurify": "^3.3.2",
|
|
65
65
|
"encodeurl": "^2.0.0",
|
|
66
|
-
"express": "^4.
|
|
66
|
+
"express": "^4.22.0",
|
|
67
67
|
"express-bearer-token": "^3.0.0",
|
|
68
68
|
"express-session": "^1.18.2",
|
|
69
69
|
"fs-extra": "^7.0.1",
|
|
@@ -77,15 +77,14 @@
|
|
|
77
77
|
"jsdom": "^24.1.0",
|
|
78
78
|
"klona": "^2.0.4",
|
|
79
79
|
"launder": "^1.4.0",
|
|
80
|
-
"lodash": "^4.
|
|
80
|
+
"lodash": "^4.18.1",
|
|
81
81
|
"mini-css-extract-plugin": "^1.6.0",
|
|
82
|
-
"minimatch": "^3.
|
|
82
|
+
"minimatch": "^3.1.4",
|
|
83
83
|
"mkdirp": "^0.5.5",
|
|
84
|
-
"multer": "^2.
|
|
84
|
+
"multer": "^2.1.1",
|
|
85
85
|
"node-fetch": "^2.6.1",
|
|
86
|
-
"nodemailer": "^
|
|
86
|
+
"nodemailer": "^8.0.5",
|
|
87
87
|
"nunjucks": "^3.2.1",
|
|
88
|
-
"oembetter": "^1.1.3",
|
|
89
88
|
"parseurl": "^1.3.3",
|
|
90
89
|
"passport": "^0.6.0",
|
|
91
90
|
"passport-local": "^1.0.0",
|
|
@@ -101,7 +100,7 @@
|
|
|
101
100
|
"regexp-quote": "0.0.0",
|
|
102
101
|
"resolve": "^1.19.0",
|
|
103
102
|
"resolve-from": "^5.0.0",
|
|
104
|
-
"sass": "^1.
|
|
103
|
+
"sass": "^1.85.0",
|
|
105
104
|
"sass-loader": "^16.0.0",
|
|
106
105
|
"server-destroy": "^1.0.1",
|
|
107
106
|
"sluggo": "^1.0.0",
|
|
@@ -110,30 +109,31 @@
|
|
|
110
109
|
"tiny-emitter": "^2.1.0",
|
|
111
110
|
"tough-cookie": "^4.0.0",
|
|
112
111
|
"underscore.string": "^3.3.4",
|
|
113
|
-
"uploadfs": "^1.26.1",
|
|
114
112
|
"void-elements": "^3.1.0",
|
|
115
113
|
"vue": "^3.5.20",
|
|
116
114
|
"vue-advanced-cropper": "^2.8.8",
|
|
117
115
|
"vue-loader": "^17.1.0",
|
|
118
116
|
"vue-style-loader": "^4.1.3",
|
|
119
|
-
"webpack": "^5.
|
|
117
|
+
"webpack": "^5.106.1",
|
|
120
118
|
"webpack-merge": "^5.7.3",
|
|
121
119
|
"xregexp": "^2.0.0",
|
|
122
120
|
"@apostrophecms/emulate-mongo-3-driver": "^1.0.6",
|
|
123
121
|
"express-cache-on-demand": "^1.0.4",
|
|
124
122
|
"broadband": "^1.1.0",
|
|
125
|
-
"
|
|
123
|
+
"boring": "^1.1.1",
|
|
124
|
+
"oembetter": "^1.1.4",
|
|
126
125
|
"postcss-viewport-to-container-toggle": "^2.3.0",
|
|
127
|
-
"
|
|
126
|
+
"uploadfs": "^1.26.1",
|
|
127
|
+
"sanitize-html": "^2.17.3"
|
|
128
128
|
},
|
|
129
129
|
"devDependencies": {
|
|
130
130
|
"eslint": "^9.39.1",
|
|
131
131
|
"form-data": "^4.0.4",
|
|
132
|
-
"mocha": "^11.7.
|
|
132
|
+
"mocha": "^11.7.5",
|
|
133
133
|
"nyc": "^17.1.0",
|
|
134
134
|
"stylelint": "^16.5.0",
|
|
135
|
-
"
|
|
136
|
-
"
|
|
135
|
+
"stylelint-config-apostrophe": "^4.4.0",
|
|
136
|
+
"eslint-config-apostrophe": "^6.0.2"
|
|
137
137
|
},
|
|
138
138
|
"browserslist": [
|
|
139
139
|
"ie >= 10"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"../..": {
|
|
8
|
-
"version": "4.
|
|
8
|
+
"version": "4.27.0",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@apostrophecms/emulate-mongo-3-driver": "workspace:^",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"tiny-emitter": "^2.1.0",
|
|
101
101
|
"tough-cookie": "^4.0.0",
|
|
102
102
|
"underscore.string": "^3.3.4",
|
|
103
|
-
"uploadfs": "
|
|
103
|
+
"uploadfs": "^1.25.1",
|
|
104
104
|
"void-elements": "^3.1.0",
|
|
105
105
|
"vue": "^3.5.20",
|
|
106
106
|
"vue-advanced-cropper": "^2.8.8",
|