apostrophe 3.63.1 → 4.0.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 +35 -0
- package/defaults.js +1 -0
- 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 +6 -6
- 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/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/AposCommandMenuShortcut.vue +6 -6
- package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +10 -7
- 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/ui/apos/components/AposI18nLocalize.vue +36 -27
- 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 +1 -1
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +5 -4
- 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 +1 -1
- package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +2 -2
- 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 +8 -2
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +7 -4
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +5 -5
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +8 -8
- 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/multisite-i18n/i18n/aposMultisite/en.json +48 -0
- package/modules/@apostrophecms/multisite-i18n/index.js +7 -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/oembed/index.js +10 -3
- package/modules/@apostrophecms/oembed-field/ui/apos/components/AposInputOembed.vue +4 -4
- 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/AposRelationshipEditor.vue +15 -11
- package/modules/@apostrophecms/polymorphic-type/index.js +0 -19
- 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/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 +30 -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/AposInputRadio.vue +5 -4
- 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 +1 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +65 -21
- 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 +2 -2
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputString.js +6 -8
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +39 -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 +4 -4
- 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/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/AposCheckbox.vue +19 -19
- package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +15 -15
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +216 -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/AposFile.vue +5 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposFilterMenu.vue +4 -4
- 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/AposSlat.vue +2 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +53 -59
- package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +2 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +40 -35
- 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/_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/schemas.js +10 -4
- 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
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="apos-image-cropper"
|
|
4
|
-
@click="onImageClick"
|
|
5
4
|
:style="{
|
|
6
5
|
height: cropperHeight
|
|
7
6
|
}"
|
|
7
|
+
@click="onImageClick"
|
|
8
8
|
>
|
|
9
9
|
<span
|
|
10
|
-
class="apos-image-focal-point"
|
|
11
10
|
ref="focalPoint"
|
|
12
11
|
v-apos-tooltip="'apostrophe:focalPoint'"
|
|
12
|
+
class="apos-image-focal-point"
|
|
13
13
|
@mousedown="onFocalPointMouseDown"
|
|
14
14
|
/>
|
|
15
15
|
<cropper
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
? attachment._urls.uncropped.original
|
|
19
19
|
: attachment._urls.original"
|
|
20
20
|
:debounce="0"
|
|
21
|
-
@ready="onCropperReady"
|
|
22
|
-
@change="onCropperChange"
|
|
23
21
|
:default-size="defaultSize"
|
|
24
22
|
:default-position="defaultPosition"
|
|
25
23
|
:stencil-props="stencilProps"
|
|
26
24
|
:min-width="minSize[0]"
|
|
27
25
|
:min-height="minSize[1]"
|
|
26
|
+
@ready="onCropperReady"
|
|
27
|
+
@change="onCropperChange"
|
|
28
28
|
/>
|
|
29
29
|
</div>
|
|
30
30
|
</template>
|
|
@@ -127,7 +127,7 @@ export default {
|
|
|
127
127
|
left: this.docFields.data.left
|
|
128
128
|
};
|
|
129
129
|
},
|
|
130
|
-
|
|
130
|
+
beforeUnmount() {
|
|
131
131
|
this.$refs.focalPoint.removeEventListener('mousedown', this.onFocalPointMouseDown);
|
|
132
132
|
window.removeEventListener('resize', this.onScreenResizeDebounced);
|
|
133
133
|
},
|
|
@@ -65,12 +65,12 @@
|
|
|
65
65
|
</label>
|
|
66
66
|
<input
|
|
67
67
|
:value="docFields.data.width"
|
|
68
|
-
@input="inputWidth"
|
|
69
|
-
@blur="blurInput"
|
|
70
68
|
class="apos-input apos-input--text"
|
|
71
69
|
type="number"
|
|
72
70
|
:min="minWidth"
|
|
73
71
|
:max="maxWidth"
|
|
72
|
+
@input="inputWidth"
|
|
73
|
+
@blur="blurInput"
|
|
74
74
|
>
|
|
75
75
|
</div>
|
|
76
76
|
<div class="apos-field">
|
|
@@ -79,12 +79,12 @@
|
|
|
79
79
|
</label>
|
|
80
80
|
<input
|
|
81
81
|
:value="docFields.data.height"
|
|
82
|
-
@input="inputHeight"
|
|
83
|
-
@blur="blurInput"
|
|
84
82
|
class="apos-input apos-input--text"
|
|
85
83
|
type="number"
|
|
86
84
|
:min="minHeight"
|
|
87
85
|
:max="maxHeight"
|
|
86
|
+
@input="inputHeight"
|
|
87
|
+
@blur="blurInput"
|
|
88
88
|
>
|
|
89
89
|
</div>
|
|
90
90
|
</div>
|
|
@@ -122,7 +122,7 @@ export default {
|
|
|
122
122
|
type: Array,
|
|
123
123
|
default: () => ([])
|
|
124
124
|
},
|
|
125
|
-
|
|
125
|
+
modelValue: {
|
|
126
126
|
type: Object,
|
|
127
127
|
default: null
|
|
128
128
|
},
|
|
@@ -141,7 +141,7 @@ export default {
|
|
|
141
141
|
const minSize = this.getMinSize();
|
|
142
142
|
|
|
143
143
|
return {
|
|
144
|
-
original: this.
|
|
144
|
+
original: this.modelValue,
|
|
145
145
|
docFields: {
|
|
146
146
|
data: this.setDataValues()
|
|
147
147
|
},
|
|
@@ -6,20 +6,25 @@
|
|
|
6
6
|
|
|
7
7
|
<template>
|
|
8
8
|
<AposModal
|
|
9
|
-
:modal="modal"
|
|
9
|
+
:modal="modal"
|
|
10
|
+
:modal-title="modalTitle"
|
|
10
11
|
class="apos-media-manager"
|
|
11
|
-
@inactive="modal.active = false"
|
|
12
|
-
@
|
|
12
|
+
@inactive="modal.active = false"
|
|
13
|
+
@show-modal="modal.showModal = true"
|
|
14
|
+
@esc="confirmAndCancel"
|
|
15
|
+
@no-modal="$emit('safe-close')"
|
|
13
16
|
>
|
|
14
17
|
<template v-if="relationshipField" #secondaryControls>
|
|
15
18
|
<AposButton
|
|
16
|
-
type="default"
|
|
19
|
+
type="default"
|
|
20
|
+
label="apostrophe:cancel"
|
|
17
21
|
@click="confirmAndCancel"
|
|
18
22
|
/>
|
|
19
23
|
</template>
|
|
20
24
|
<template v-else #secondaryControls>
|
|
21
25
|
<AposButton
|
|
22
|
-
type="default"
|
|
26
|
+
type="default"
|
|
27
|
+
label="apostrophe:exit"
|
|
23
28
|
@click="confirmAndCancel"
|
|
24
29
|
/>
|
|
25
30
|
</template>
|
|
@@ -68,22 +73,22 @@
|
|
|
68
73
|
<template #bodyMain>
|
|
69
74
|
<AposMediaManagerDisplay
|
|
70
75
|
ref="display"
|
|
76
|
+
v-model:checked="checked"
|
|
71
77
|
:accept="accept"
|
|
72
78
|
:items="items"
|
|
73
79
|
:module-options="moduleOptions"
|
|
80
|
+
:max-reached="maxReached()"
|
|
81
|
+
:options="{
|
|
82
|
+
disableUnchecked: maxReached(),
|
|
83
|
+
hideCheckboxes: !relationshipField
|
|
84
|
+
}"
|
|
74
85
|
@edit="updateEditing"
|
|
75
|
-
v-model="checked"
|
|
76
86
|
@select="select"
|
|
77
87
|
@select-series="selectSeries"
|
|
78
88
|
@select-another="selectAnother"
|
|
79
89
|
@upload-started="uploading = true"
|
|
80
90
|
@upload-complete="completeUploading"
|
|
81
91
|
@create-placeholder="createPlaceholder"
|
|
82
|
-
:max-reached="maxReached()"
|
|
83
|
-
:options="{
|
|
84
|
-
disableUnchecked: maxReached(),
|
|
85
|
-
hideCheckboxes: !relationshipField
|
|
86
|
-
}"
|
|
87
92
|
/>
|
|
88
93
|
</template>
|
|
89
94
|
</AposModalBody>
|
|
@@ -100,13 +105,15 @@
|
|
|
100
105
|
:selected="selected"
|
|
101
106
|
:is-modified="isModified"
|
|
102
107
|
:module-labels="moduleLabels"
|
|
103
|
-
@back="updateEditing(null)"
|
|
108
|
+
@back="updateEditing(null)"
|
|
109
|
+
@saved="updateMedia"
|
|
104
110
|
@modified="editorModified"
|
|
105
111
|
/>
|
|
106
112
|
<AposMediaManagerSelections
|
|
107
|
-
:items="selected"
|
|
108
|
-
@clear="clearSelected" @edit="updateEditing"
|
|
109
113
|
v-show="!editing"
|
|
114
|
+
:items="selected"
|
|
115
|
+
@clear="clearSelected"
|
|
116
|
+
@edit="updateEditing"
|
|
110
117
|
/>
|
|
111
118
|
</div>
|
|
112
119
|
</AposModalRail>
|
|
@@ -233,7 +240,7 @@ export default {
|
|
|
233
240
|
apos.bus.$on('content-changed', this.onContentChanged);
|
|
234
241
|
apos.bus.$on('command-menu-manager-close', this.confirmAndCancel);
|
|
235
242
|
},
|
|
236
|
-
|
|
243
|
+
unmounted() {
|
|
237
244
|
apos.bus.$off('content-changed', this.onContentChanged);
|
|
238
245
|
apos.bus.$off('command-menu-manager-close', this.confirmAndCancel);
|
|
239
246
|
},
|
|
@@ -451,7 +458,7 @@ export default {
|
|
|
451
458
|
</script>
|
|
452
459
|
|
|
453
460
|
<style lang="scss" scoped>
|
|
454
|
-
.apos-media-manager
|
|
461
|
+
.apos-media-manager :deep(.apos-media-manager-toolbar) {
|
|
455
462
|
z-index: $z-index-manager-toolbar;
|
|
456
463
|
position: relative;
|
|
457
464
|
}
|
|
@@ -11,14 +11,16 @@
|
|
|
11
11
|
@create-placeholder="$emit('create-placeholder', $event)"
|
|
12
12
|
/>
|
|
13
13
|
<div
|
|
14
|
-
|
|
14
|
+
v-for="item in items"
|
|
15
15
|
:key="idFor(item)"
|
|
16
|
+
class="apos-media-manager-display__cell"
|
|
16
17
|
:class="{'apos-is-selected': checked.includes(item._id)}"
|
|
17
18
|
:style="getCellStyles(item)"
|
|
18
19
|
>
|
|
19
20
|
<div class="apos-media-manager-display__checkbox">
|
|
20
21
|
<AposCheckbox
|
|
21
22
|
v-show="item._id !== 'placeholder' && !options.hideCheckboxes"
|
|
23
|
+
v-model="checkedProxy"
|
|
22
24
|
tabindex="-1"
|
|
23
25
|
:field="{
|
|
24
26
|
name: item._id,
|
|
@@ -28,10 +30,10 @@
|
|
|
28
30
|
disabled: options.disableUnchecked && !checked.includes(item._id)
|
|
29
31
|
}"
|
|
30
32
|
:choice="{ value: item._id }"
|
|
31
|
-
v-model="checkedProxy"
|
|
32
33
|
/>
|
|
33
34
|
</div>
|
|
34
35
|
<button
|
|
36
|
+
:id="`btn-${item._id}`"
|
|
35
37
|
:disabled="
|
|
36
38
|
item._id === 'placeholder' ||
|
|
37
39
|
(options.disableUnchecked && !checked.includes(item._id))
|
|
@@ -40,7 +42,6 @@
|
|
|
40
42
|
@click.exact="$emit('select', item._id)"
|
|
41
43
|
@click.shift="$emit('select-series', item._id)"
|
|
42
44
|
@click.meta="$emit('select-another', item._id)"
|
|
43
|
-
ref="btns"
|
|
44
45
|
>
|
|
45
46
|
<div
|
|
46
47
|
v-if="item.dimensions"
|
|
@@ -66,7 +67,6 @@
|
|
|
66
67
|
<button
|
|
67
68
|
disabled="true"
|
|
68
69
|
class="apos-media-manager-display__select"
|
|
69
|
-
ref="btns"
|
|
70
70
|
/>
|
|
71
71
|
</div>
|
|
72
72
|
</div>
|
|
@@ -78,10 +78,6 @@ import cuid from 'cuid';
|
|
|
78
78
|
|
|
79
79
|
export default {
|
|
80
80
|
// Custom model to handle the v-model connection on the parent.
|
|
81
|
-
model: {
|
|
82
|
-
prop: 'checked',
|
|
83
|
-
event: 'change'
|
|
84
|
-
},
|
|
85
81
|
props: {
|
|
86
82
|
maxReached: {
|
|
87
83
|
type: Boolean,
|
|
@@ -118,10 +114,10 @@ export default {
|
|
|
118
114
|
}
|
|
119
115
|
},
|
|
120
116
|
emits: [
|
|
117
|
+
'update:checked',
|
|
121
118
|
'select',
|
|
122
119
|
'select-series',
|
|
123
120
|
'select-another',
|
|
124
|
-
'change',
|
|
125
121
|
'upload-started',
|
|
126
122
|
'upload-complete',
|
|
127
123
|
'create-placeholder'
|
|
@@ -133,7 +129,7 @@ export default {
|
|
|
133
129
|
return this.checked;
|
|
134
130
|
},
|
|
135
131
|
set(val) {
|
|
136
|
-
this.$emit('
|
|
132
|
+
this.$emit('update:checked', val);
|
|
137
133
|
}
|
|
138
134
|
}
|
|
139
135
|
},
|
|
@@ -141,7 +137,11 @@ export default {
|
|
|
141
137
|
getPlaceholderStyles(item) {
|
|
142
138
|
// Account for whether the refs have been set by the v-for or if on the
|
|
143
139
|
// placeholder.
|
|
144
|
-
const btn = Array.isArray(this.$refs.btns) ? this.$refs.btns[0] : this.$refs.btns;
|
|
140
|
+
/* const btn = Array.isArray(this.$refs.btns) ? this.$refs.btns[0] : this.$refs.btns; */
|
|
141
|
+
const btn = this.items.length && this.$el.querySelector(`#btn-${this.items[0]._id}`);
|
|
142
|
+
if (!btn) {
|
|
143
|
+
return {};
|
|
144
|
+
}
|
|
145
145
|
const {
|
|
146
146
|
width: parentWidth,
|
|
147
147
|
height: parentHeight
|
|
@@ -5,24 +5,25 @@
|
|
|
5
5
|
'apos-is-replacing': showReplace
|
|
6
6
|
}"
|
|
7
7
|
>
|
|
8
|
-
<div class="apos-media-editor__inner"
|
|
8
|
+
<div v-if="activeMedia" class="apos-media-editor__inner">
|
|
9
9
|
<div class="apos-media-editor__thumb-wrapper">
|
|
10
10
|
<img
|
|
11
11
|
v-if="activeMedia.attachment && activeMedia.attachment._urls"
|
|
12
12
|
class="apos-media-editor__thumb"
|
|
13
|
-
:src="activeMedia.attachment._urls[restoreOnly ? 'one-sixth' : 'one-third']"
|
|
13
|
+
:src="activeMedia.attachment._urls[restoreOnly ? 'one-sixth' : 'one-third']"
|
|
14
|
+
:alt="activeMedia.description"
|
|
14
15
|
>
|
|
15
16
|
</div>
|
|
16
17
|
<ul class="apos-media-editor__details">
|
|
17
|
-
<li class="apos-media-editor__detail"
|
|
18
|
+
<li v-if="createdDate" class="apos-media-editor__detail">
|
|
18
19
|
{{ $t('apostrophe:mediaCreatedDate', { createdDate }) }}
|
|
19
20
|
</li>
|
|
20
|
-
<li class="apos-media-editor__detail"
|
|
21
|
+
<li v-if="fileSize" class="apos-media-editor__detail">
|
|
21
22
|
{{ $t('apostrophe:mediaFileSize', { fileSize }) }}
|
|
22
23
|
</li>
|
|
23
24
|
<li
|
|
24
|
-
class="apos-media-editor__detail"
|
|
25
25
|
v-if="activeMedia.attachment && activeMedia.attachment.width"
|
|
26
|
+
class="apos-media-editor__detail"
|
|
26
27
|
>
|
|
27
28
|
{{
|
|
28
29
|
$t('apostrophe:mediaDimensions', {
|
|
@@ -35,21 +36,24 @@
|
|
|
35
36
|
<ul class="apos-media-editor__links">
|
|
36
37
|
<li class="apos-media-editor__link" aria-hidden="true">
|
|
37
38
|
<AposButton
|
|
38
|
-
type="quiet"
|
|
39
|
-
|
|
39
|
+
type="quiet"
|
|
40
|
+
label="apostrophe:replace"
|
|
40
41
|
:disabled="isArchived"
|
|
42
|
+
@click="showReplace = true"
|
|
41
43
|
/>
|
|
42
44
|
</li>
|
|
43
|
-
<li
|
|
45
|
+
<li v-if="activeMedia.attachment && activeMedia.attachment._urls" class="apos-media-editor__link">
|
|
44
46
|
<AposButton
|
|
45
|
-
type="quiet"
|
|
46
|
-
|
|
47
|
+
type="quiet"
|
|
48
|
+
label="apostrophe:view"
|
|
47
49
|
:disabled="isArchived"
|
|
50
|
+
@click="viewMedia"
|
|
48
51
|
/>
|
|
49
52
|
</li>
|
|
50
|
-
<li
|
|
53
|
+
<li v-if="activeMedia.attachment && activeMedia.attachment._urls" class="apos-media-editor__link">
|
|
51
54
|
<AposButton
|
|
52
|
-
type="quiet"
|
|
55
|
+
type="quiet"
|
|
56
|
+
label="apostrophe:download"
|
|
53
57
|
:href="!isArchived ? activeMedia.attachment._urls.original : false"
|
|
54
58
|
:disabled="isArchived"
|
|
55
59
|
download
|
|
@@ -58,16 +62,16 @@
|
|
|
58
62
|
</ul>
|
|
59
63
|
<AposSchema
|
|
60
64
|
v-if="docFields.data.title !== undefined"
|
|
61
|
-
|
|
65
|
+
ref="schema"
|
|
62
66
|
v-model="docFields"
|
|
67
|
+
:schema="schema"
|
|
63
68
|
:modifiers="['small', 'inverted']"
|
|
64
69
|
:trigger-validation="triggerValidation"
|
|
65
70
|
:doc-id="docFields.data._id"
|
|
66
71
|
:following-values="followingValues()"
|
|
72
|
+
:server-errors="serverErrors"
|
|
67
73
|
@validate="triggerValidate"
|
|
68
74
|
@reset="$emit('modified', false)"
|
|
69
|
-
ref="schema"
|
|
70
|
-
:server-errors="serverErrors"
|
|
71
75
|
/>
|
|
72
76
|
</div>
|
|
73
77
|
<AposModalLip :refresh="lipKey">
|
|
@@ -84,13 +88,15 @@
|
|
|
84
88
|
modifiers: [ 'small', 'no-motion' ]
|
|
85
89
|
}"
|
|
86
90
|
:menu="moreMenu"
|
|
87
|
-
@item-clicked="moreMenuHandler"
|
|
88
91
|
menu-placement="top-end"
|
|
92
|
+
@item-clicked="moreMenuHandler"
|
|
89
93
|
/>
|
|
90
94
|
<AposButton
|
|
91
|
-
|
|
95
|
+
class="apos-media-editor__save"
|
|
92
96
|
:disabled="docFields.hasErrors"
|
|
93
|
-
:label="restoreOnly ? 'apostrophe:restore' : 'apostrophe:save'"
|
|
97
|
+
:label="restoreOnly ? 'apostrophe:restore' : 'apostrophe:save'"
|
|
98
|
+
type="primary"
|
|
99
|
+
@click="save"
|
|
94
100
|
/>
|
|
95
101
|
</div>
|
|
96
102
|
</AposModalLip>
|
|
@@ -216,6 +222,7 @@ export default {
|
|
|
216
222
|
},
|
|
217
223
|
watch: {
|
|
218
224
|
'docFields.data': {
|
|
225
|
+
deep: true,
|
|
219
226
|
handler(newData, oldData) {
|
|
220
227
|
this.$nextTick(() => {
|
|
221
228
|
// If either old or new state are an empty object, it's not "modified."
|
|
@@ -401,7 +408,7 @@ export default {
|
|
|
401
408
|
max-height: 100%;
|
|
402
409
|
}
|
|
403
410
|
|
|
404
|
-
.apos-media-editor
|
|
411
|
+
.apos-media-editor :deep(.apos-field) {
|
|
405
412
|
margin-bottom: $spacing-double;
|
|
406
413
|
}
|
|
407
414
|
|
|
@@ -421,7 +428,7 @@ export default {
|
|
|
421
428
|
display: flex;
|
|
422
429
|
margin-bottom: $spacing-triple;
|
|
423
430
|
|
|
424
|
-
|
|
431
|
+
:deep(.apos-button--quiet) {
|
|
425
432
|
display: inline;
|
|
426
433
|
}
|
|
427
434
|
}
|
|
@@ -433,7 +440,7 @@ export default {
|
|
|
433
440
|
}
|
|
434
441
|
}
|
|
435
442
|
|
|
436
|
-
|
|
443
|
+
:deep([data-apos-field='attachment']) {
|
|
437
444
|
.apos-media-editor:not(.apos-is-replacing) & {
|
|
438
445
|
position: absolute;
|
|
439
446
|
left: -999rem;
|
|
@@ -28,13 +28,14 @@
|
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
30
|
<input
|
|
31
|
-
type="file" class="apos-sr-only"
|
|
32
31
|
ref="upload"
|
|
33
|
-
|
|
32
|
+
type="file"
|
|
33
|
+
class="apos-sr-only"
|
|
34
34
|
:accept="accept"
|
|
35
35
|
multiple="true"
|
|
36
36
|
:disabled="disabled"
|
|
37
37
|
tabindex="-1"
|
|
38
|
+
@input="uploadMedia"
|
|
38
39
|
>
|
|
39
40
|
</label>
|
|
40
41
|
</template>
|
|
@@ -49,7 +50,7 @@ export default {
|
|
|
49
50
|
},
|
|
50
51
|
disabled: {
|
|
51
52
|
type: Boolean,
|
|
52
|
-
|
|
53
|
+
default: false
|
|
53
54
|
},
|
|
54
55
|
accept: {
|
|
55
56
|
type: String,
|
|
@@ -82,7 +83,7 @@ export default {
|
|
|
82
83
|
mounted() {
|
|
83
84
|
apos.bus.$on('command-menu-manager-create-new', this.create);
|
|
84
85
|
},
|
|
85
|
-
|
|
86
|
+
unmounted() {
|
|
86
87
|
apos.bus.$off('command-menu-manager-create-new', this.create);
|
|
87
88
|
},
|
|
88
89
|
methods: {
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import createApp from 'Modules/@apostrophecms/ui/lib/vue';
|
|
2
2
|
|
|
3
3
|
export default function() {
|
|
4
|
+
const component = apos.vueComponents.TheAposLogin;
|
|
4
5
|
const el = document.querySelector('#apos-login');
|
|
5
6
|
if (el) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return h('TheAposLogin');
|
|
10
|
-
}
|
|
11
|
-
});
|
|
7
|
+
const app = createApp(component);
|
|
8
|
+
|
|
9
|
+
app.mount(el);
|
|
12
10
|
}
|
|
11
|
+
|
|
13
12
|
apos.bus.$on('admin-menu-click', async (item) => {
|
|
14
13
|
if (item !== '@apostrophecms/login-logout') {
|
|
15
14
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
class="apos-login-form"
|
|
4
3
|
v-if="passwordResetEnabled"
|
|
4
|
+
class="apos-login-form"
|
|
5
5
|
>
|
|
6
6
|
<TheAposLoginHeader
|
|
7
7
|
:env="context.env"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
/>
|
|
24
24
|
<form v-else @submit.prevent="submit">
|
|
25
25
|
<AposSchema
|
|
26
|
-
:schema="schema"
|
|
27
26
|
v-model="doc"
|
|
27
|
+
:schema="schema"
|
|
28
28
|
/>
|
|
29
29
|
<AposButton
|
|
30
30
|
data-apos-test="pwdResetRequestSubmit"
|
|
@@ -61,7 +61,7 @@ export default {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
.apos-login-form__submit
|
|
64
|
+
.apos-login-form__submit :deep(.apos-button) {
|
|
65
65
|
height: 47px;
|
|
66
66
|
}
|
|
67
67
|
</style>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
+
v-if="phase === 'beforeSubmit' || phase === 'uponSubmit'"
|
|
3
4
|
key="1"
|
|
4
5
|
class="apos-login-form"
|
|
5
|
-
v-if="phase === 'beforeSubmit' || phase === 'uponSubmit'"
|
|
6
6
|
>
|
|
7
7
|
<TheAposLoginHeader
|
|
8
8
|
:env="context.env"
|
|
@@ -11,30 +11,30 @@
|
|
|
11
11
|
/>
|
|
12
12
|
|
|
13
13
|
<div class="apos-login-form__body">
|
|
14
|
-
<form
|
|
14
|
+
<form data-apos-test="loginForm" @submit.prevent="submit">
|
|
15
15
|
<AposSchema
|
|
16
|
-
:schema="schema"
|
|
17
16
|
v-model="doc"
|
|
17
|
+
:schema="schema"
|
|
18
18
|
/>
|
|
19
19
|
<a
|
|
20
|
-
href="#"
|
|
21
20
|
v-if="passwordResetEnabled"
|
|
21
|
+
href="#"
|
|
22
22
|
class="apos-login-form__link"
|
|
23
23
|
@click.prevent="$emit('set-stage', 'forgotPassword')"
|
|
24
24
|
>{{ $t('apostrophe:loginResetPassword') }}</a>
|
|
25
25
|
<Component
|
|
26
|
+
v-bind="getRequirementProps(requirement.name)"
|
|
27
|
+
:is="requirement.component"
|
|
26
28
|
v-for="requirement in beforeSubmitRequirements"
|
|
27
29
|
:key="requirement.name"
|
|
28
|
-
:is="requirement.component"
|
|
29
|
-
v-bind="getRequirementProps(requirement.name)"
|
|
30
30
|
@done="requirementDone(requirement, $event)"
|
|
31
31
|
@block="requirementBlock(requirement)"
|
|
32
32
|
/>
|
|
33
33
|
<template v-if="phase === 'uponSubmit'">
|
|
34
34
|
<Component
|
|
35
|
+
:is="requirement.component"
|
|
35
36
|
v-for="requirement in uponSubmitRequirements"
|
|
36
37
|
:key="requirement.name"
|
|
37
|
-
:is="requirement.component"
|
|
38
38
|
v-bind="getRequirementProps(requirement.name)"
|
|
39
39
|
@done="requirementDone(requirement, $event)"
|
|
40
40
|
@block="requirementBlock(requirement)"
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
</div>
|
|
57
57
|
<div
|
|
58
|
+
v-else-if="activeSoloRequirement"
|
|
58
59
|
key="2"
|
|
59
60
|
class="apos-login-form"
|
|
60
|
-
v-else-if="activeSoloRequirement"
|
|
61
61
|
>
|
|
62
62
|
<TheAposLoginHeader
|
|
63
63
|
:env="context.env"
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
/>
|
|
68
68
|
<div class="apos-login-form__body">
|
|
69
69
|
<Component
|
|
70
|
-
v-if="!fetchingRequirementProps"
|
|
71
70
|
v-bind="getRequirementProps(activeSoloRequirement.name)"
|
|
72
71
|
:is="activeSoloRequirement.component"
|
|
72
|
+
v-if="!fetchingRequirementProps"
|
|
73
73
|
:success="activeSoloRequirement.success"
|
|
74
74
|
:error="activeSoloRequirement.error"
|
|
75
75
|
@done="requirementDone(activeSoloRequirement, $event)"
|
|
@@ -115,7 +115,7 @@ export default {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
.apos-login-form__submit
|
|
118
|
+
.apos-login-form__submit :deep(.apos-button) {
|
|
119
119
|
height: 47px;
|
|
120
120
|
}
|
|
121
121
|
</style>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<transition name="fade-stage">
|
|
3
3
|
<div
|
|
4
|
+
v-show="loaded"
|
|
4
5
|
class="apos-login apos-theme-dark"
|
|
5
6
|
data-apos-test="loginForm"
|
|
6
|
-
v-show="loaded"
|
|
7
7
|
:class="themeClass"
|
|
8
8
|
>
|
|
9
9
|
<transition name="fade-outer">
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</transition>
|
|
47
47
|
</div>
|
|
48
48
|
<transition name="fade-outer">
|
|
49
|
-
<div class="apos-login__footer"
|
|
49
|
+
<div v-show="loaded" class="apos-login__footer">
|
|
50
50
|
<AposLogo class="apos-login__logo" />
|
|
51
51
|
<label class="apos-login__project-version">
|
|
52
52
|
Version {{ context.version }}
|