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.
- package/.eslintrc +13 -4
- package/CHANGELOG.md +37 -5
- package/defaults.js +2 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/apps/AposAdminBar.js +7 -17
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +14 -16
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +1 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarMenu.vue +22 -15
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarUser.vue +2 -2
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +13 -8
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue +18 -10
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +4 -4
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextUndoRedo.vue +14 -8
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposSavingIndicator.vue +2 -1
- package/modules/@apostrophecms/area/ui/apos/apps/AposAreas.js +36 -54
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaContextualMenu.vue +20 -25
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaEditor.vue +5 -12
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +11 -3
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenu.vue +6 -6
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenuItem.vue +3 -2
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +31 -44
- package/modules/@apostrophecms/area/ui/apos/components/AposWidgetControls.vue +16 -16
- package/modules/@apostrophecms/asset/index.js +25 -12
- package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.config.js +3 -3
- package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js +7 -1
- package/modules/@apostrophecms/attachment/index.js +2 -1
- package/modules/@apostrophecms/attachment/public/img/missing-icon.svg +14 -0
- package/modules/@apostrophecms/busy/ui/apos/apps/AposBusy.js +8 -7
- package/modules/@apostrophecms/busy/ui/apos/components/TheAposBusy.vue +1 -1
- package/modules/@apostrophecms/command-menu/ui/apos/apps/AposCommandMenu.js +11 -29
- package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKey.vue +1 -1
- package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +6 -6
- package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +10 -7
- package/modules/@apostrophecms/doc-type/index.js +34 -13
- package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocContextMenu.vue +3 -3
- package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +20 -15
- package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +1 -1
- package/modules/@apostrophecms/i18n/i18n/en.json +13 -0
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +209 -33
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +3 -3
- package/modules/@apostrophecms/image/ui/apos/components/AposImageCropper.vue +5 -5
- package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +6 -6
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +23 -16
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +11 -11
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +28 -21
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +4 -3
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +5 -4
- package/modules/@apostrophecms/login/index.js +18 -1
- package/modules/@apostrophecms/login/ui/apos/apps/AposLogin.js +6 -7
- package/modules/@apostrophecms/login/ui/apos/components/AposForgotPasswordForm.vue +3 -3
- package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +10 -10
- package/modules/@apostrophecms/login/ui/apos/components/AposResetPasswordForm.vue +3 -3
- package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +2 -2
- package/modules/@apostrophecms/login/ui/apos/logic/AposLoginForm.js +1 -16
- package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +60 -87
- package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +15 -11
- package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +17 -11
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +7 -4
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +9 -9
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalLip.vue +2 -2
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +8 -8
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalTabs.vue +4 -3
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalToolbar.vue +7 -7
- package/modules/@apostrophecms/modal/ui/apos/components/TheAposModals.vue +22 -4
- package/modules/@apostrophecms/modal/ui/apos/composables/AposFocus.js +95 -0
- package/modules/@apostrophecms/modal/ui/apos/mixins/AposDocsManagerMixin.js +2 -3
- package/modules/@apostrophecms/modal/ui/apos/mixins/AposEditorMixin.js +6 -0
- package/modules/@apostrophecms/notification/index.js +4 -4
- package/modules/@apostrophecms/notification/ui/apos/apps/AposNotification.js +6 -9
- package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +12 -8
- package/modules/@apostrophecms/notification/ui/apos/components/TheAposNotifications.vue +4 -2
- package/modules/@apostrophecms/oembed-field/ui/apos/components/AposInputOembed.vue +12 -10
- package/modules/@apostrophecms/page/index.js +1 -0
- package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +15 -11
- package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +1 -1
- package/modules/@apostrophecms/permission/ui/apos/components/AposInputRole.vue +3 -3
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +25 -17
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerDisplay.vue +24 -20
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerSelectBox.vue +9 -5
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposRelationshipEditor.vue +15 -11
- package/modules/@apostrophecms/rich-text-widget/index.js +1 -0
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposImageControlDialog.vue +7 -6
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +31 -30
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapAnchor.vue +12 -10
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapButton.vue +1 -1
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapImage.vue +1 -1
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +9 -8
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapStyles.vue +3 -3
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapTable.vue +3 -3
- package/modules/@apostrophecms/schema/index.js +69 -8
- package/modules/@apostrophecms/schema/lib/addFieldTypes.js +1 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposArrayEditor.vue +10 -8
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputArea.vue +5 -3
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputArray.vue +81 -277
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputAttachment.vue +4 -2
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputBoolean.vue +24 -14
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputCheckboxes.vue +7 -6
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputColor.vue +10 -7
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputObject.vue +3 -3
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputPassword.vue +6 -4
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRadio.vue +5 -4
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRange.vue +9 -6
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +15 -12
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputSelect.vue +1 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +16 -12
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputString.vue +19 -11
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +15 -12
- package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +75 -22
- package/modules/@apostrophecms/schema/ui/apos/components/AposSearchList.vue +1 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposSubform.vue +2 -2
- package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +0 -4
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArea.js +3 -3
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArray.js +15 -4
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputAttachment.js +3 -3
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputCheckboxes.js +7 -7
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputColor.js +5 -8
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputDateAndTime.js +1 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputObject.js +1 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRadio.js +1 -1
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +12 -9
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputSelect.js +3 -3
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputString.js +7 -9
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +4 -4
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +42 -13
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSubform.js +1 -1
- package/modules/@apostrophecms/schema/ui/apos/mixins/AposInputMixin.js +9 -9
- package/modules/@apostrophecms/schema/ui/apos/scss/AposInputArray.scss +205 -0
- package/modules/@apostrophecms/settings/ui/apos/components/AposSettingsManager.vue +5 -5
- package/modules/@apostrophecms/settings/ui/apos/logic/AposSettingsManager.js +4 -4
- package/modules/@apostrophecms/submitted-draft/ui/apos/components/AposSubmittedDraftIcon.vue +5 -4
- package/modules/@apostrophecms/task/index.js +2 -0
- package/modules/@apostrophecms/translation/index.js +233 -0
- package/modules/@apostrophecms/translation/ui/apos/components/AposTranslationIndicator.vue +84 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposAvatar.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +4 -4
- package/modules/@apostrophecms/ui/ui/apos/components/AposButtonGroup.vue +6 -6
- package/modules/@apostrophecms/ui/ui/apos/components/AposButtonSplit.vue +120 -113
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellButton.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellLabels.vue +49 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposCheckbox.vue +19 -19
- package/modules/@apostrophecms/ui/ui/apos/components/AposCloudUploadIcon.vue +10 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +15 -15
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +214 -191
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuDialog.vue +77 -65
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuItem.vue +1 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuTip.vue +28 -50
- package/modules/@apostrophecms/ui/ui/apos/components/AposEmptyState.vue +3 -3
- package/modules/@apostrophecms/ui/ui/apos/components/AposFile.vue +5 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposFilterMenu.vue +4 -4
- package/modules/@apostrophecms/ui/ui/apos/components/AposIndicator.vue +1 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposLabel.vue +1 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposMinMaxCount.vue +5 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposPager.vue +14 -8
- package/modules/@apostrophecms/ui/ui/apos/components/AposPagerDots.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposSlat.vue +13 -12
- package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +53 -59
- package/modules/@apostrophecms/ui/ui/apos/components/AposSpinner.vue +2 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +2 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTag.vue +3 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +40 -35
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagListItem.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposToggle.vue +2 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +9 -11
- package/modules/@apostrophecms/ui/ui/apos/components/AposTreeHeader.vue +5 -3
- package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +129 -129
- package/modules/@apostrophecms/ui/ui/apos/composables/AposTheme.js +11 -0
- package/modules/@apostrophecms/ui/ui/apos/lib/click-outside-element.js +4 -4
- package/modules/@apostrophecms/ui/ui/apos/lib/i18next.js +56 -50
- package/modules/@apostrophecms/ui/ui/apos/lib/tooltip.js +191 -0
- package/modules/@apostrophecms/ui/ui/apos/lib/vue.js +19 -10
- package/modules/@apostrophecms/ui/ui/apos/mixins/AposAdvisoryLockMixin.js +1 -1
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_tables.scss +1 -1
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +1 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_tooltips.scss +6 -22
- package/modules/@apostrophecms/ui/ui/apos/scss/shared/_table-rows.scss +1 -1
- package/modules/@apostrophecms/widget-type/index.js +8 -2
- package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +26 -22
- package/modules/@apostrophecms/widget-type/ui/apos/mixins/AposWidgetMixin.js +4 -4
- package/package.json +31 -44
- package/test/attachments.js +5 -0
- package/test/schemas.js +138 -0
- package/test/translation.js +538 -0
- package/test-lib/util.js +21 -0
- package/modules/@apostrophecms/ui/ui/apos/lib/localized-v-tooltip.js +0 -63
- package/modules/@apostrophecms/ui/ui/apos/lib/tooltip-options.js +0 -13
package/.eslintrc
CHANGED
|
@@ -34,8 +34,7 @@
|
|
|
34
34
|
"vue/max-attributes-per-line": [
|
|
35
35
|
"warn",
|
|
36
36
|
{
|
|
37
|
-
"singleline": 2
|
|
38
|
-
"multiline": 2
|
|
37
|
+
"singleline": 2
|
|
39
38
|
}
|
|
40
39
|
],
|
|
41
40
|
"vue/singleline-html-element-content-newline": [
|
|
@@ -51,10 +50,20 @@
|
|
|
51
50
|
"textarea"
|
|
52
51
|
]
|
|
53
52
|
}
|
|
54
|
-
]
|
|
55
|
-
"vue/attributes-order": 0
|
|
53
|
+
]
|
|
56
54
|
},
|
|
57
55
|
"overrides": [
|
|
56
|
+
{
|
|
57
|
+
"files": "*.vue",
|
|
58
|
+
"globals": {
|
|
59
|
+
"defineProps": "readable",
|
|
60
|
+
"defineEmits": "readable",
|
|
61
|
+
"defineExpose": "readable",
|
|
62
|
+
"defineOptions": "readable",
|
|
63
|
+
"defineModel": "readable",
|
|
64
|
+
"defineSlots": "readable"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
58
67
|
{
|
|
59
68
|
"files": [
|
|
60
69
|
"**/ui/**/*.js"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,49 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 4.1.0 (2024-03-20)
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
* Don't crash if a document of a type no longer corresponding to any module is present
|
|
8
|
+
together with the advanced permission module.
|
|
9
|
+
* AposLoginForm.js now pulls its schema from the user module rather than hardcoding it. Includes the
|
|
10
|
+
addition of `enterUsername` and `enterPassword` i18n fields for front end customization and localization.
|
|
11
|
+
* Simulated Express requests returned by `apos.task.getReq` now include a `req.headers` property, for
|
|
12
|
+
greater accuracy and to prevent unexpected bugs in other code.
|
|
13
|
+
* Fix the missing attachment icon. The responsibility for checking whether an attachment
|
|
14
|
+
actually exists before calling `attachment.url` still lies with the developer.
|
|
15
|
+
|
|
16
|
+
### Adds
|
|
17
|
+
|
|
18
|
+
* Add new `getChanges` method to the schema module to get an array of document changed field names instead of just a boolean like does the `isEqual` method.
|
|
19
|
+
* Add highlight class in UI when comparing documents.
|
|
20
|
+
|
|
21
|
+
## 4.0.0 (2024-03-12)
|
|
4
22
|
|
|
5
23
|
### Adds
|
|
6
24
|
|
|
7
|
-
* Add translation keys used by the multisite assembly module.
|
|
8
|
-
|
|
9
|
-
|
|
25
|
+
* Add translation keys used by the multisite assembly module.
|
|
26
|
+
* Add side by side comparison support in AposSchema component.
|
|
27
|
+
* Add `beforeLocalize` and `afterLocalize` events.
|
|
28
|
+
* Add custom manager indicators support via `apos.schema.addManagerIndicator({ component, props, if })`. The component registered this way will be automatically rendered in the manager modal.
|
|
29
|
+
* Add the possibility to make widget modals wider, which can be useful for widgets that contain areas taking significant space. See [documentation](https://v3.docs.apostrophecms.org/reference/modules/widget-type.html#options).
|
|
30
|
+
* Temporarily add `translation` module to support document translations via the `@apostrophecms-pro/automatic-translation` module.
|
|
31
|
+
**The `translation` core module may be removed or refactored to reduce overhead in the core,** so its presence should
|
|
32
|
+
not be relied upon.
|
|
33
|
+
|
|
34
|
+
### Changes
|
|
35
|
+
|
|
36
|
+
* Migrate to Vue 3. This entails changes to some admin UI code, as detailed in our public announcement.
|
|
37
|
+
There are no other backwards incompatible changes in apostrophe version 4.0.0.
|
|
38
|
+
Certain other modules containing custom admin UI have also been updated in a new major version to be compatible,
|
|
39
|
+
as noted in our announcement and on the migration page of our website.
|
|
10
40
|
|
|
11
41
|
### Fixes
|
|
12
42
|
|
|
43
|
+
* Adds `textStyle` to Tiptap types so that spans are rendered on RT initialization
|
|
13
44
|
* `field.help` and `field.htmlHelp` are now correctly translated when displayed in a tooltip.
|
|
14
|
-
|
|
45
|
+
* Bump the `he` package to most recent version.
|
|
46
|
+
* Notification REST APIs should not directly return the result of MongoDB operations.
|
|
15
47
|
|
|
16
48
|
## 3.63.2 (2024-03-01)
|
|
17
49
|
|
package/defaults.js
CHANGED
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import createApp from 'Modules/@apostrophecms/ui/lib/vue';
|
|
2
2
|
|
|
3
3
|
export default function() {
|
|
4
|
+
const component = apos.vueComponents.TheAposAdminBar;
|
|
4
5
|
// Careful, login page is in user scene but has no admin bar
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
computed: {
|
|
9
|
-
apos () {
|
|
10
|
-
return window.apos;
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
render: function (h) {
|
|
14
|
-
return h('TheAposAdminBar', {
|
|
15
|
-
props: {
|
|
16
|
-
items: apos.adminBar.items
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
6
|
+
const el = document.querySelector('#apos-admin-bar');
|
|
7
|
+
if (!apos.adminBar || !el) {
|
|
8
|
+
return;
|
|
21
9
|
}
|
|
10
|
+
const app = createApp(component, { items: apos.adminBar.items || [] });
|
|
11
|
+
app.mount(el);
|
|
22
12
|
};
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
class="apos-admin-bar-wrapper"
|
|
5
5
|
:class="themeClass"
|
|
6
6
|
>
|
|
7
|
-
<div class="apos-admin-bar-spacer"
|
|
8
|
-
<nav class="apos-admin-bar"
|
|
7
|
+
<div ref="spacer" class="apos-admin-bar-spacer" />
|
|
8
|
+
<nav ref="adminBar" class="apos-admin-bar">
|
|
9
9
|
<div class="apos-admin-bar__row">
|
|
10
10
|
<AposLogoPadless class="apos-admin-bar__logo" />
|
|
11
11
|
<TheAposAdminBarMenu :items="menuItems" />
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
</div>
|
|
19
19
|
<TheAposContextBar @visibility-changed="setSpacer" />
|
|
20
20
|
<component
|
|
21
|
-
v-for="bar in bars"
|
|
22
21
|
v-bind="bar.props || {}"
|
|
23
|
-
:key="bar.id"
|
|
24
22
|
:is="bar.componentName"
|
|
23
|
+
v-for="bar in bars"
|
|
24
|
+
:key="bar.id"
|
|
25
25
|
/>
|
|
26
26
|
</nav>
|
|
27
27
|
</div>
|
|
@@ -36,9 +36,7 @@ export default {
|
|
|
36
36
|
props: {
|
|
37
37
|
items: {
|
|
38
38
|
type: Array,
|
|
39
|
-
|
|
40
|
-
return [];
|
|
41
|
-
}
|
|
39
|
+
required: true
|
|
42
40
|
}
|
|
43
41
|
},
|
|
44
42
|
computed: {
|
|
@@ -55,7 +53,7 @@ export default {
|
|
|
55
53
|
return this.moduleOptions.bars;
|
|
56
54
|
}
|
|
57
55
|
},
|
|
58
|
-
|
|
56
|
+
mounted() {
|
|
59
57
|
this.setSpacer();
|
|
60
58
|
},
|
|
61
59
|
methods: {
|
|
@@ -86,7 +84,7 @@ export default {
|
|
|
86
84
|
background: var(--a-background-primary);
|
|
87
85
|
}
|
|
88
86
|
|
|
89
|
-
|
|
87
|
+
:deep(.apos-admin-bar__row) {
|
|
90
88
|
display: flex;
|
|
91
89
|
align-items: center;
|
|
92
90
|
height: 35px;
|
|
@@ -100,7 +98,7 @@ export default {
|
|
|
100
98
|
margin-right: 10px;
|
|
101
99
|
}
|
|
102
100
|
|
|
103
|
-
|
|
101
|
+
:deep(.apos-admin-bar__control-set) {
|
|
104
102
|
@include type-base;
|
|
105
103
|
display: flex;
|
|
106
104
|
width: 100%;
|
|
@@ -111,27 +109,27 @@ export default {
|
|
|
111
109
|
margin-left: auto;
|
|
112
110
|
}
|
|
113
111
|
|
|
114
|
-
|
|
112
|
+
:deep(.apos-context-menu__pane) {
|
|
115
113
|
min-width: 150px;
|
|
116
114
|
}
|
|
117
|
-
|
|
115
|
+
:deep(.flip-enter) { // to the ground
|
|
118
116
|
transform: translateY(-20%);
|
|
119
117
|
opacity: 0;
|
|
120
118
|
}
|
|
121
|
-
|
|
119
|
+
:deep(.flip-leave) { // in the frame
|
|
122
120
|
transform: translateY(0);
|
|
123
121
|
opacity: 1;
|
|
124
122
|
}
|
|
125
|
-
|
|
123
|
+
:deep(.flip-enter-to) { // from the ground
|
|
126
124
|
transform: translateY(0);
|
|
127
125
|
opacity: 1;
|
|
128
126
|
}
|
|
129
|
-
|
|
127
|
+
:deep(.flip-leave-to) { // to the sky
|
|
130
128
|
transform: translateY(20%);
|
|
131
129
|
opacity: 0;
|
|
132
130
|
}
|
|
133
131
|
|
|
134
|
-
|
|
132
|
+
:deep(.flip-enter-active), :deep(.flip-leave-active) {
|
|
135
133
|
transition: all 150ms;
|
|
136
134
|
&.apos-admin-bar__control-set__group {
|
|
137
135
|
position: absolute;
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ul class="apos-admin-bar__items">
|
|
3
|
-
<li class="apos-admin-bar__item"
|
|
3
|
+
<li v-if="pageTree" class="apos-admin-bar__item">
|
|
4
4
|
<AposButton
|
|
5
|
-
type="subtle"
|
|
5
|
+
type="subtle"
|
|
6
|
+
label="apostrophe:pages"
|
|
6
7
|
class="apos-admin-bar__btn"
|
|
7
8
|
:modifiers="['no-motion']"
|
|
8
9
|
@click="emitEvent('@apostrophecms/page:manager')"
|
|
9
10
|
/>
|
|
10
11
|
</li>
|
|
11
12
|
<li
|
|
12
|
-
v-for="item in menuItems"
|
|
13
|
+
v-for="item in menuItems"
|
|
14
|
+
:key="item.name"
|
|
13
15
|
class="apos-admin-bar__item"
|
|
14
16
|
>
|
|
15
17
|
<AposContextMenu
|
|
16
|
-
v-if="item.items"
|
|
17
|
-
|
|
18
|
+
v-if="item.items"
|
|
19
|
+
class="apos-admin-bar__sub"
|
|
20
|
+
:menu="item.items"
|
|
21
|
+
:button="{
|
|
18
22
|
label: item.label,
|
|
19
23
|
modifiers: ['no-motion'],
|
|
20
24
|
class: 'apos-admin-bar__btn',
|
|
@@ -23,16 +27,16 @@
|
|
|
23
27
|
@item-clicked="emitEvent"
|
|
24
28
|
/>
|
|
25
29
|
<Component
|
|
26
|
-
v-else
|
|
27
30
|
:is="item.options && item.options.component || 'AposButton'"
|
|
31
|
+
v-else
|
|
28
32
|
type="subtle"
|
|
29
|
-
@click="emitEvent(item.action)"
|
|
30
33
|
:label="item.label"
|
|
31
34
|
:modifiers="['no-motion']"
|
|
32
35
|
class="apos-admin-bar__btn"
|
|
36
|
+
@click="emitEvent(item.action)"
|
|
33
37
|
/>
|
|
34
38
|
</li>
|
|
35
|
-
<li
|
|
39
|
+
<li v-if="createMenu.length > 0" class="apos-admin-bar__item">
|
|
36
40
|
<AposContextMenu
|
|
37
41
|
class="apos-admin-bar__create"
|
|
38
42
|
:menu="createMenu"
|
|
@@ -52,16 +56,19 @@
|
|
|
52
56
|
>
|
|
53
57
|
<template v-for="item in trayItems">
|
|
54
58
|
<Component
|
|
55
|
-
v-if="item.options.component"
|
|
56
59
|
:is="item.options.component"
|
|
60
|
+
v-if="item.options.component"
|
|
57
61
|
:key="`${item.name}.component`"
|
|
58
62
|
/>
|
|
59
63
|
<AposButton
|
|
60
64
|
v-else
|
|
61
65
|
:key="`${item.name}.fallback`"
|
|
62
|
-
type="subtle"
|
|
63
|
-
:
|
|
64
|
-
:
|
|
66
|
+
type="subtle"
|
|
67
|
+
:modifiers="['small', 'no-motion']"
|
|
68
|
+
:tooltip="trayItemTooltip(item)"
|
|
69
|
+
class="apos-admin-bar__context-button"
|
|
70
|
+
:icon="item.options.icon"
|
|
71
|
+
:icon-only="true"
|
|
65
72
|
:label="item.label"
|
|
66
73
|
:state="trayItemState[item.name] ? [ 'active' ] : []"
|
|
67
74
|
@click="emitEvent(item.action)"
|
|
@@ -177,15 +184,15 @@ export default {
|
|
|
177
184
|
align-items: center;
|
|
178
185
|
}
|
|
179
186
|
|
|
180
|
-
.apos-admin-bar__sub
|
|
187
|
+
.apos-admin-bar__sub :deep(.apos-context-menu__btn) {
|
|
181
188
|
border-radius: 0;
|
|
182
189
|
}
|
|
183
190
|
|
|
184
|
-
.apos-admin-bar__sub
|
|
191
|
+
.apos-admin-bar__sub :deep(.apos-context-menu__popup) {
|
|
185
192
|
top: calc(100% + 5px);
|
|
186
193
|
}
|
|
187
194
|
|
|
188
|
-
|
|
195
|
+
:deep(.apos-admin-bar__create) {
|
|
189
196
|
margin-left: 10px;
|
|
190
197
|
|
|
191
198
|
.apos-context-menu__btn {
|
|
@@ -54,12 +54,12 @@ export default {
|
|
|
54
54
|
display: inline-flex;
|
|
55
55
|
align-items: center;
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
:deep(.apos-button) {
|
|
58
58
|
@include type-base;
|
|
59
59
|
color: var(--a-text-primary);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
:deep(.apos-context-menu__popup) {
|
|
63
63
|
right: 0;
|
|
64
64
|
transform: translatex(10px);
|
|
65
65
|
}
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
:v-if="editMode"
|
|
6
6
|
:can-undo="canUndo"
|
|
7
7
|
:can-redo="canRedo"
|
|
8
|
-
@undo="undo"
|
|
9
|
-
@redo="redo"
|
|
10
8
|
:retrying="retrying"
|
|
11
9
|
:editing="editing"
|
|
12
10
|
:saving="saving"
|
|
13
11
|
:saved="saved"
|
|
12
|
+
@undo="undo"
|
|
13
|
+
@redo="redo"
|
|
14
14
|
/>
|
|
15
15
|
<TheAposContextTitle
|
|
16
16
|
v-if="!hasCustomUi"
|
|
@@ -531,12 +531,17 @@ export default {
|
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
const { action } = window.apos.modules[this.context.type];
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
534
|
+
let doc;
|
|
535
|
+
try {
|
|
536
|
+
doc = await apos.http.get(`${action}/${this.context.aposDocId}`, {
|
|
537
|
+
qs: {
|
|
538
|
+
aposMode: this.draftMode,
|
|
539
|
+
project: { _url: 1 }
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
} catch (err) {
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
540
545
|
|
|
541
546
|
if (this.urlDiffers(doc._url)) {
|
|
542
547
|
// Slug changed, change browser URL to reflect the actual url of the doc
|
package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue
CHANGED
|
@@ -11,12 +11,14 @@
|
|
|
11
11
|
further illustrate this concept.
|
|
12
12
|
-->
|
|
13
13
|
<div
|
|
14
|
-
v-if="!editMode"
|
|
14
|
+
v-if="!editMode"
|
|
15
|
+
:key="'switchToEditMode'"
|
|
15
16
|
class="apos-admin-bar__control-set__group"
|
|
16
17
|
>
|
|
17
18
|
<AposButton
|
|
18
19
|
class="apos-admin-bar__context-button"
|
|
19
|
-
label="apostrophe:edit"
|
|
20
|
+
label="apostrophe:edit"
|
|
21
|
+
type="subtle"
|
|
20
22
|
:modifiers="['small', 'no-motion']"
|
|
21
23
|
:tooltip="{
|
|
22
24
|
content: 'apostrophe:toggleEditMode',
|
|
@@ -38,20 +40,23 @@
|
|
|
38
40
|
<AposButton
|
|
39
41
|
v-if="canSwitchToPreviewMode && !isAutopublished"
|
|
40
42
|
class="apos-admin-bar__context-button"
|
|
41
|
-
label="apostrophe:preview"
|
|
43
|
+
label="apostrophe:preview"
|
|
44
|
+
:tooltip="{
|
|
42
45
|
content: 'apostrophe:previewTooltip',
|
|
43
46
|
placement: 'bottom'
|
|
44
47
|
}"
|
|
45
|
-
type="subtle"
|
|
48
|
+
type="subtle"
|
|
49
|
+
:modifiers="['small', 'no-motion']"
|
|
46
50
|
@click="switchEditMode(false)"
|
|
47
51
|
/>
|
|
48
52
|
<AposButton
|
|
49
53
|
v-if="editMode && !isAutopublished"
|
|
50
|
-
type="primary"
|
|
54
|
+
type="primary"
|
|
55
|
+
:label="publishLabel"
|
|
51
56
|
:disabled="!readyToPublish"
|
|
52
57
|
class="apos-admin-bar__btn apos-admin-bar__context-button"
|
|
53
|
-
@click="onPublish"
|
|
54
58
|
:modifiers="['no-motion']"
|
|
59
|
+
@click="onPublish"
|
|
55
60
|
/>
|
|
56
61
|
</div>
|
|
57
62
|
</transition-group>
|
|
@@ -66,7 +71,10 @@ export default {
|
|
|
66
71
|
return null;
|
|
67
72
|
}
|
|
68
73
|
},
|
|
69
|
-
hasCustomUi:
|
|
74
|
+
hasCustomUi: {
|
|
75
|
+
type: Boolean,
|
|
76
|
+
required: true
|
|
77
|
+
},
|
|
70
78
|
context: {
|
|
71
79
|
type: Object,
|
|
72
80
|
required: true
|
|
@@ -135,7 +143,7 @@ export default {
|
|
|
135
143
|
return !this.editMode;
|
|
136
144
|
},
|
|
137
145
|
canSwitchToPreviewMode() {
|
|
138
|
-
return this.editMode && !this.
|
|
146
|
+
return this.editMode && !this.hasCustomUi;
|
|
139
147
|
}
|
|
140
148
|
},
|
|
141
149
|
mounted() {
|
|
@@ -143,7 +151,7 @@ export default {
|
|
|
143
151
|
apos.bus.$on('command-menu-admin-bar-toggle-edit-preview', this.toggleEditPreviewMode);
|
|
144
152
|
apos.bus.$on('command-menu-admin-bar-publish-draft', this.onPublish);
|
|
145
153
|
},
|
|
146
|
-
|
|
154
|
+
unmounted() {
|
|
147
155
|
apos.bus.$off('command-menu-admin-bar-toggle-edit-preview', this.toggleEditPreviewMode);
|
|
148
156
|
apos.bus.$off('command-menu-admin-bar-publish-draft', this.onPublish);
|
|
149
157
|
},
|
|
@@ -179,7 +187,7 @@ export default {
|
|
|
179
187
|
<style lang="scss" scoped>
|
|
180
188
|
.apos-admin-bar__control-set--mode-and-settings {
|
|
181
189
|
justify-content: flex-end;
|
|
182
|
-
|
|
190
|
+
&:deep(.apos-button) {
|
|
183
191
|
margin-left: 4px;
|
|
184
192
|
}
|
|
185
193
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
>
|
|
7
7
|
<span
|
|
8
8
|
v-show="true"
|
|
9
|
-
class="apos-admin-bar__title"
|
|
10
9
|
:key="'title'"
|
|
10
|
+
class="apos-admin-bar__title"
|
|
11
11
|
>
|
|
12
12
|
<AposIndicator
|
|
13
13
|
icon="information-outline-icon"
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
:button="draftButton"
|
|
32
32
|
:menu="draftMenu"
|
|
33
33
|
:disabled="hasCustomUi || isUnpublished"
|
|
34
|
-
@item-clicked="switchDraftMode"
|
|
35
34
|
menu-offset="13, 10"
|
|
36
35
|
menu-placement="bottom-end"
|
|
36
|
+
@item-clicked="switchDraftMode"
|
|
37
37
|
/>
|
|
38
38
|
<AposLabel
|
|
39
39
|
v-else
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
/>
|
|
44
44
|
</div>
|
|
45
45
|
<AposLabel
|
|
46
|
-
class="apos-admin-bar__title-context-label"
|
|
47
46
|
v-for="{id, label, tooltip = '', modifiers = []} in moduleOptions.contextLabels"
|
|
48
47
|
:key="id"
|
|
48
|
+
class="apos-admin-bar__title-context-label"
|
|
49
49
|
:label="label"
|
|
50
50
|
:tooltip="tooltip"
|
|
51
51
|
:modifiers="modifiers"
|
|
@@ -130,7 +130,7 @@ export default {
|
|
|
130
130
|
mounted() {
|
|
131
131
|
apos.bus.$on('command-menu-admin-bar-toggle-publish-draft', this.togglePublishDraftMode);
|
|
132
132
|
},
|
|
133
|
-
|
|
133
|
+
unmounted() {
|
|
134
134
|
apos.bus.$off('command-menu-admin-bar-toggle-publish-draft', this.togglePublishDraftMode);
|
|
135
135
|
},
|
|
136
136
|
methods: {
|
|
@@ -11,9 +11,12 @@
|
|
|
11
11
|
>
|
|
12
12
|
<AposButton
|
|
13
13
|
:disabled="!canUndo"
|
|
14
|
-
type="subtle"
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
type="subtle"
|
|
15
|
+
:modifiers="['small', 'no-motion']"
|
|
16
|
+
label="apostrophe:undo"
|
|
17
|
+
class="apos-admin-bar__context-button"
|
|
18
|
+
icon="undo-icon"
|
|
19
|
+
:icon-only="true"
|
|
17
20
|
@click="undo"
|
|
18
21
|
/>
|
|
19
22
|
</div>
|
|
@@ -23,9 +26,12 @@
|
|
|
23
26
|
>
|
|
24
27
|
<AposButton
|
|
25
28
|
:disabled="!canRedo"
|
|
26
|
-
type="subtle"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
type="subtle"
|
|
30
|
+
:modifiers="['small', 'no-motion']"
|
|
31
|
+
label="apostrophe:redo"
|
|
32
|
+
class="apos-admin-bar__context-button"
|
|
33
|
+
icon="redo-icon"
|
|
34
|
+
:icon-only="true"
|
|
29
35
|
@click="redo"
|
|
30
36
|
/>
|
|
31
37
|
</div>
|
|
@@ -74,7 +80,7 @@ export default {
|
|
|
74
80
|
apos.bus.$on('command-menu-admin-bar-undo', this.undo);
|
|
75
81
|
apos.bus.$on('command-menu-admin-bar-redo', this.redo);
|
|
76
82
|
},
|
|
77
|
-
|
|
83
|
+
unmounted() {
|
|
78
84
|
apos.bus.$off('command-menu-admin-bar-undo', this.undo);
|
|
79
85
|
apos.bus.$off('command-menu-admin-bar-redo', this.redo);
|
|
80
86
|
},
|
|
@@ -93,7 +99,7 @@ export default {
|
|
|
93
99
|
};
|
|
94
100
|
</script>
|
|
95
101
|
<style lang="scss" scoped>
|
|
96
|
-
|
|
102
|
+
:deep(.apos-admin-bar__context-button.apos-button__wrapper) {
|
|
97
103
|
display: flex;
|
|
98
104
|
}
|
|
99
105
|
</style>
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
<span class="apos-admin-bar__status__inner">
|
|
7
7
|
<component
|
|
8
8
|
:is="savingIndicator.componentName"
|
|
9
|
+
v-if="savingIndicator?.componentName"
|
|
9
10
|
v-bind="savingIndicator.options"
|
|
10
11
|
class="apos-admin-bar__status__icon"
|
|
11
12
|
/>
|
|
12
|
-
<div class="apos-admin-bar__status__label"
|
|
13
|
+
<div ref="statusLabel" class="apos-admin-bar__status__label">
|
|
13
14
|
{{ $t(savingLabel) }}
|
|
14
15
|
</div>
|
|
15
16
|
</span>
|