apostrophe 4.28.0 → 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 +33 -3
- package/README.md +142 -0
- 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 -9
- 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 +19 -19
- package/test/files.js +129 -0
- 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/modules/@apostrophecms/layout-widget/ui/apos/components/AposLayoutColControlDialog.vue +0 -171
package/test/schemas.js
CHANGED
|
@@ -38,6 +38,11 @@ describe('Schemas', function() {
|
|
|
38
38
|
name: 'slug',
|
|
39
39
|
label: 'Slug',
|
|
40
40
|
type: 'slug'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'color',
|
|
44
|
+
label: 'Color',
|
|
45
|
+
type: 'color'
|
|
41
46
|
}
|
|
42
47
|
];
|
|
43
48
|
|
|
@@ -1371,26 +1376,57 @@ describe('Schemas', function() {
|
|
|
1371
1376
|
const schema = apos.schema.compose({
|
|
1372
1377
|
addFields: simpleFields
|
|
1373
1378
|
});
|
|
1374
|
-
assert(schema.length ===
|
|
1379
|
+
assert(schema.length === 5);
|
|
1375
1380
|
const input = {
|
|
1376
1381
|
name: 'Bob Smith',
|
|
1377
1382
|
address: '5017 Awesome Street\nPhiladelphia, PA 19147',
|
|
1378
1383
|
irrelevant: 'Irrelevant',
|
|
1379
|
-
slug: 'This Is Cool'
|
|
1384
|
+
slug: 'This Is Cool',
|
|
1385
|
+
color: '#ddeeff'
|
|
1380
1386
|
};
|
|
1381
1387
|
const req = apos.task.getReq();
|
|
1382
1388
|
const result = {};
|
|
1383
1389
|
await apos.schema.convert(req, schema, input, result);
|
|
1384
1390
|
// no irrelevant or missing fields
|
|
1385
|
-
assert(_.keys(result).length ===
|
|
1391
|
+
assert(_.keys(result).length === 5);
|
|
1386
1392
|
// expected fields came through
|
|
1387
1393
|
assert(result.name === input.name);
|
|
1388
1394
|
assert(result.address === input.address);
|
|
1395
|
+
assert.strictEqual(result.color, '#ddeeff');
|
|
1389
1396
|
// default
|
|
1390
1397
|
assert(result.variety === undefined);
|
|
1391
1398
|
assert(result.slug === 'this-is-cool');
|
|
1392
1399
|
});
|
|
1393
1400
|
|
|
1401
|
+
it('should allow well-behaved CSS variable names', async function() {
|
|
1402
|
+
const schema = apos.schema.compose({
|
|
1403
|
+
addFields: simpleFields
|
|
1404
|
+
});
|
|
1405
|
+
const input = {
|
|
1406
|
+
color: '--somevar'
|
|
1407
|
+
};
|
|
1408
|
+
const req = apos.task.getReq();
|
|
1409
|
+
const result = {};
|
|
1410
|
+
await apos.schema.convert(req, schema, input, result);
|
|
1411
|
+
// expected fields came through
|
|
1412
|
+
assert.strictEqual(result.color, '--somevar');
|
|
1413
|
+
});
|
|
1414
|
+
|
|
1415
|
+
it('should NOT allow malicious CSS variable names', async function() {
|
|
1416
|
+
const schema = apos.schema.compose({
|
|
1417
|
+
addFields: simpleFields
|
|
1418
|
+
});
|
|
1419
|
+
const malicious = '--</style><script>alert("mwahahah")';
|
|
1420
|
+
const input = {
|
|
1421
|
+
color: malicious
|
|
1422
|
+
};
|
|
1423
|
+
const req = apos.task.getReq();
|
|
1424
|
+
const result = {};
|
|
1425
|
+
await apos.schema.convert(req, schema, input, result);
|
|
1426
|
+
// Should be blocked
|
|
1427
|
+
assert.notStrictEqual(result.color, malicious);
|
|
1428
|
+
});
|
|
1429
|
+
|
|
1394
1430
|
it('should update a password if provided', async function() {
|
|
1395
1431
|
const schema = apos.schema.compose({
|
|
1396
1432
|
addFields: [
|