apostrophe 4.3.3 → 4.4.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/.stylelintrc +1 -93
- package/CHANGELOG.md +51 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +7 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +6 -3
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarUser.vue +2 -1
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue +1 -0
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +3 -2
- package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposSavingIndicator.vue +6 -2
- package/modules/@apostrophecms/any-page-type/index.js +2 -2
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaContextualMenu.vue +13 -7
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaEditor.vue +4 -4
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +17 -11
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenu.vue +13 -7
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenuItem.vue +3 -0
- package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +36 -20
- package/modules/@apostrophecms/area/ui/apos/components/AposWidgetControls.vue +18 -11
- package/modules/@apostrophecms/busy/ui/apos/components/TheAposBusy.vue +6 -8
- package/modules/@apostrophecms/command-menu/index.js +12 -7
- package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuKey.vue +9 -7
- package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +28 -15
- package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +44 -42
- package/modules/@apostrophecms/doc-type/index.js +2 -1
- package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +4 -3
- package/modules/@apostrophecms/file-tag/index.js +1 -1
- package/modules/@apostrophecms/global/index.js +29 -0
- package/modules/@apostrophecms/i18n/i18n/de.json +20 -0
- package/modules/@apostrophecms/i18n/i18n/en.json +1 -0
- package/modules/@apostrophecms/i18n/i18n/es.json +1 -0
- package/modules/@apostrophecms/i18n/i18n/fr.json +1 -0
- package/modules/@apostrophecms/i18n/i18n/it.json +1 -0
- package/modules/@apostrophecms/i18n/i18n/pt-BR.json +1 -0
- package/modules/@apostrophecms/i18n/i18n/sk.json +1 -0
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +25 -17
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +5 -4
- package/modules/@apostrophecms/image/index.js +2 -1
- package/modules/@apostrophecms/image/ui/apos/components/AposImageCropper.vue +1 -1
- package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +9 -8
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +13 -10
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +11 -7
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +12 -2
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +8 -5
- package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +17 -8
- package/modules/@apostrophecms/image-tag/index.js +1 -1
- package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +1 -0
- package/modules/@apostrophecms/login/ui/apos/components/AposResetPasswordForm.vue +1 -0
- package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +16 -14
- package/modules/@apostrophecms/login/ui/apos/components/TheAposLoginHeader.vue +9 -4
- package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +11 -59
- package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +1 -0
- package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +59 -55
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalBody.vue +1 -0
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +5 -0
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +6 -10
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +14 -16
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalTabs.vue +68 -5
- package/modules/@apostrophecms/modal/ui/apos/components/AposWidgetModalTabs.vue +15 -9
- package/modules/@apostrophecms/modal/ui/apos/components/TheAposModals.vue +48 -122
- package/modules/@apostrophecms/modal/ui/apos/composables/AposFocus.js +9 -6
- package/modules/@apostrophecms/modal/ui/apos/mixins/AposDocsManagerMixin.js +38 -36
- package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +15 -9
- package/modules/@apostrophecms/notification/ui/apos/components/TheAposNotifications.vue +2 -2
- package/modules/@apostrophecms/page/index.js +9 -6
- package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +3 -4
- package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +5 -10
- package/modules/@apostrophecms/page/views/notFound.html +5 -5
- package/modules/@apostrophecms/permission/ui/apos/components/AposPermissionGrid.vue +6 -2
- package/modules/@apostrophecms/piece-page-type/index.js +1 -0
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +8 -12
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerSelectBox.vue +2 -2
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposRelationshipEditor.vue +1 -2
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +59 -41
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapDivider.vue +1 -0
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapMarks.vue +3 -1
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapStyles.vue +3 -1
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapTable.vue +2 -0
- package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/Classes.js +1 -7
- package/modules/@apostrophecms/rich-text-widget/ui/apos/tiptap-extensions/Heading.js +10 -0
- package/modules/@apostrophecms/schema/lib/addFieldTypes.js +8 -3
- package/modules/@apostrophecms/schema/ui/apos/components/AposArrayEditor.vue +4 -6
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputArea.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputBoolean.vue +5 -2
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputColor.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputDateAndTime.vue +1 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputObject.vue +2 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRadio.vue +1 -0
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRange.vue +14 -8
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +4 -2
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +7 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputString.vue +3 -1
- package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +35 -5
- package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +6 -3
- package/modules/@apostrophecms/schema/ui/apos/components/AposSearchList.vue +50 -15
- package/modules/@apostrophecms/schema/ui/apos/components/AposSubform.vue +5 -10
- package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +17 -17
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +3 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputString.js +9 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +7 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +8 -3
- package/modules/@apostrophecms/schema/ui/apos/logic/AposSearchList.js +3 -0
- package/modules/@apostrophecms/schema/ui/apos/mixins/AposInputMixin.js +5 -0
- package/modules/@apostrophecms/schema/ui/apos/scss/AposInputArray.scss +42 -9
- package/modules/@apostrophecms/search/index.js +1 -0
- package/modules/@apostrophecms/settings/index.js +33 -0
- package/modules/@apostrophecms/settings/ui/apos/components/AposSettingsManager.vue +6 -7
- package/modules/@apostrophecms/settings/ui/apos/logic/AposSettingsManager.js +0 -1
- package/modules/@apostrophecms/submitted-draft/index.js +26 -0
- package/modules/@apostrophecms/submitted-draft/ui/apos/components/AposSubmittedDraftIcon.vue +4 -4
- package/modules/@apostrophecms/template/views/templateError.html +4 -4
- package/modules/@apostrophecms/translation/ui/apos/components/AposTranslationIndicator.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposAvatar.vue +3 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +62 -15
- package/modules/@apostrophecms/ui/ui/apos/components/AposButtonGroup.vue +8 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposButtonSplit.vue +9 -3
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellContextMenu.vue +2 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposCellLabels.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposCloudUploadIcon.vue +5 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +7 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +8 -5
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuDialog.vue +5 -3
- package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuItem.vue +22 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposEmptyState.vue +3 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposFile.vue +5 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposFilterMenu.vue +2 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposLabel.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposMinMaxCount.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposPager.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposPagerDots.vue +3 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposSlat.vue +15 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +3 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposSpinner.vue +33 -7
- package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +3 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTag.vue +5 -3
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +5 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagList.vue +5 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposTagListItem.vue +9 -1
- package/modules/@apostrophecms/ui/ui/apos/components/AposToggle.vue +13 -13
- package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +1 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +17 -7
- package/modules/@apostrophecms/ui/ui/apos/lib/vue.js +4 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_admin.scss +1 -1
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_inputs.scss +28 -5
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_scrollbars.scss +16 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_tables.scss +8 -3
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +9 -8
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_tooltips.scss +13 -7
- package/modules/@apostrophecms/ui/ui/apos/scss/global/import-all.scss +1 -1
- package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_input_mixins.scss +5 -3
- package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_mixins.scss +1 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_responsive.scss +4 -3
- package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_theme_mixins.scss +6 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/shared/_table-rows.scss +6 -3
- package/modules/@apostrophecms/ui/ui/apos/stores/modal.js +180 -0
- package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +2 -2
- package/package.json +4 -4
- package/test/modules/@apostrophecms/search/views/index.html +1 -0
- package/test/pages.js +227 -0
- package/test/schemas.js +184 -0
- package/test/search.js +49 -13
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
:uid="uid"
|
|
7
7
|
:display-options="displayOptions"
|
|
8
8
|
:meta="fieldMeta"
|
|
9
|
+
@replace-field-value="replaceFieldValue"
|
|
9
10
|
>
|
|
10
11
|
<template #body>
|
|
11
12
|
<div :class="wrapperClasses">
|
|
@@ -52,12 +53,15 @@ export default {
|
|
|
52
53
|
<style lang="scss" scoped>
|
|
53
54
|
.apos-input-wrapper--with-prefix {
|
|
54
55
|
@include apos-input();
|
|
56
|
+
|
|
55
57
|
display: flex;
|
|
56
58
|
align-items: center;
|
|
57
59
|
color: var(--a-base-4);
|
|
60
|
+
|
|
58
61
|
.apos-input {
|
|
59
|
-
border: none;
|
|
60
62
|
padding-left: 0;
|
|
63
|
+
border: none;
|
|
64
|
+
|
|
61
65
|
&:hover,
|
|
62
66
|
&:focus {
|
|
63
67
|
border: none;
|
|
@@ -65,10 +69,12 @@ export default {
|
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
71
|
}
|
|
72
|
+
|
|
68
73
|
.apos-input__slug-locale-prefix {
|
|
69
74
|
display: inline-block;
|
|
70
75
|
padding-left: 20px;
|
|
71
76
|
}
|
|
77
|
+
|
|
72
78
|
.apos-field--inverted .apos-input-wrapper--with-prefix {
|
|
73
79
|
background-color: var(--a-background-primary);
|
|
74
80
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
:uid="uid"
|
|
7
7
|
:display-options="displayOptions"
|
|
8
8
|
:meta="fieldMeta"
|
|
9
|
+
@replace-field-value="replaceFieldValue"
|
|
9
10
|
>
|
|
10
11
|
<template #body>
|
|
11
12
|
<div class="apos-input-wrapper">
|
|
@@ -13,7 +14,7 @@
|
|
|
13
14
|
v-if="field.textarea && field.type === 'string'"
|
|
14
15
|
:id="uid"
|
|
15
16
|
v-model="next"
|
|
16
|
-
rows="
|
|
17
|
+
:rows="rows"
|
|
17
18
|
:class="classes"
|
|
18
19
|
:placeholder="$t(field.placeholder)"
|
|
19
20
|
:disabled="field.readOnly"
|
|
@@ -63,6 +64,7 @@ export default {
|
|
|
63
64
|
height: 46px;
|
|
64
65
|
padding-right: 40px;
|
|
65
66
|
}
|
|
67
|
+
|
|
66
68
|
.apos-input--date {
|
|
67
69
|
&::-webkit-clear-button {
|
|
68
70
|
position: relative;
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
:is="labelEl"
|
|
13
13
|
v-if="field.label"
|
|
14
14
|
class="apos-field__label"
|
|
15
|
-
:class="{
|
|
15
|
+
:class="{
|
|
16
|
+
'apos-sr-only': field.hideLabel,
|
|
17
|
+
'apos-field__label--meta-left': field.meta && field.meta.position === 'left',
|
|
18
|
+
}"
|
|
16
19
|
:for="uid"
|
|
17
20
|
:data-apos-test-name="field.name"
|
|
18
21
|
:data-apos-test-label="field.label"
|
|
@@ -69,6 +72,7 @@
|
|
|
69
72
|
:data-apos-test-component="name"
|
|
70
73
|
:data-apos-test-namespace="namespace"
|
|
71
74
|
data-apos-test="field-meta"
|
|
75
|
+
@replace-field-value="replaceFieldValue"
|
|
72
76
|
/>
|
|
73
77
|
</span>
|
|
74
78
|
</component>
|
|
@@ -115,6 +119,7 @@ export default {
|
|
|
115
119
|
.apos-field {
|
|
116
120
|
border-width: 0;
|
|
117
121
|
padding: 0;
|
|
122
|
+
|
|
118
123
|
[disable]:hover, [disabled] ~ .apos-choice-label-text:hover {
|
|
119
124
|
cursor: not-allowed;
|
|
120
125
|
}
|
|
@@ -126,14 +131,28 @@ export default {
|
|
|
126
131
|
|
|
127
132
|
.apos-field__label {
|
|
128
133
|
@include type-label;
|
|
134
|
+
|
|
129
135
|
display: flex;
|
|
136
|
+
flex-wrap: nowrap;
|
|
130
137
|
align-items: center;
|
|
131
138
|
justify-content: space-between;
|
|
132
|
-
flex-wrap: nowrap;
|
|
133
|
-
gap: $spacing-double;
|
|
134
139
|
margin: 0 0 $spacing-base;
|
|
135
140
|
padding: 0;
|
|
136
141
|
color: var(--a-text-primary);
|
|
142
|
+
gap: $spacing-double;
|
|
143
|
+
|
|
144
|
+
&.apos-field__label--meta-left {
|
|
145
|
+
justify-content: flex-start;
|
|
146
|
+
gap: $spacing-base;
|
|
147
|
+
|
|
148
|
+
.apos-field__label-meta {
|
|
149
|
+
order: 1;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.apos-field_label-info {
|
|
153
|
+
order: 2;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
137
156
|
|
|
138
157
|
&-info {
|
|
139
158
|
display: block;
|
|
@@ -148,8 +167,9 @@ export default {
|
|
|
148
167
|
}
|
|
149
168
|
|
|
150
169
|
.apos-field__help {
|
|
151
|
-
margin: 0 0 $spacing-base;
|
|
152
170
|
@include type-base;
|
|
171
|
+
|
|
172
|
+
margin: 0 0 $spacing-base;
|
|
153
173
|
line-height: var(--a-line-tall);
|
|
154
174
|
color: var(--a-base-3);
|
|
155
175
|
}
|
|
@@ -160,12 +180,13 @@ export default {
|
|
|
160
180
|
|
|
161
181
|
.apos-field__changed {
|
|
162
182
|
position: relative;
|
|
163
|
-
margin-left: $spacing-half;
|
|
164
183
|
top: -2px;
|
|
184
|
+
margin-left: $spacing-half;
|
|
165
185
|
}
|
|
166
186
|
|
|
167
187
|
.apos-field__error {
|
|
168
188
|
@include type-help;
|
|
189
|
+
|
|
169
190
|
margin: $spacing-base 0;
|
|
170
191
|
color: var(--a-danger);
|
|
171
192
|
}
|
|
@@ -186,30 +207,39 @@ export default {
|
|
|
186
207
|
.apos-field--inline {
|
|
187
208
|
display: flex;
|
|
188
209
|
align-items: center;
|
|
210
|
+
|
|
189
211
|
.apos-field__label {
|
|
190
212
|
margin-bottom: 0;
|
|
191
213
|
}
|
|
214
|
+
|
|
192
215
|
.apos-field__info,
|
|
193
216
|
.apos-input-wrapper {
|
|
194
217
|
width: 48%;
|
|
195
218
|
}
|
|
219
|
+
|
|
196
220
|
.apos-field__info {
|
|
197
221
|
margin-right: 4%;
|
|
198
222
|
}
|
|
223
|
+
|
|
199
224
|
&.apos-field--range {
|
|
200
225
|
display: block;
|
|
226
|
+
|
|
201
227
|
.apos-range__input {
|
|
202
228
|
margin: 5px 0 0;
|
|
203
229
|
}
|
|
230
|
+
|
|
204
231
|
.apos-range__scale {
|
|
205
232
|
margin-top: 0;
|
|
206
233
|
}
|
|
234
|
+
|
|
207
235
|
.apos-range__value {
|
|
208
236
|
padding-top: 9px;
|
|
209
237
|
}
|
|
238
|
+
|
|
210
239
|
.apos-field__info {
|
|
211
240
|
margin: 0 0 5px;
|
|
212
241
|
}
|
|
242
|
+
|
|
213
243
|
.apos-field__info,
|
|
214
244
|
.apos-input-wrapper {
|
|
215
245
|
width: 100%;
|
|
@@ -107,11 +107,13 @@ export default {
|
|
|
107
107
|
|
|
108
108
|
.apos-schema :deep(.apos-field) {
|
|
109
109
|
margin-bottom: $spacing-quadruple;
|
|
110
|
+
|
|
110
111
|
&.apos-field--small,
|
|
111
112
|
&.apos-field--micro,
|
|
112
113
|
&.apos-field--margin-micro {
|
|
113
114
|
margin-bottom: $spacing-double;
|
|
114
115
|
}
|
|
116
|
+
|
|
115
117
|
&.apos-field--margin-none {
|
|
116
118
|
margin-bottom: 0;
|
|
117
119
|
}
|
|
@@ -129,15 +131,16 @@ export default {
|
|
|
129
131
|
}
|
|
130
132
|
|
|
131
133
|
& > .apos-field__wrapper {
|
|
132
|
-
flex-grow: 1;
|
|
133
134
|
flex-basis: 50%;
|
|
134
|
-
|
|
135
|
+
flex-grow: 1;
|
|
135
136
|
padding-right: 20px;
|
|
137
|
+
border-right: 1px solid var(--a-base-9);
|
|
136
138
|
}
|
|
139
|
+
|
|
137
140
|
& > .apos-field__wrapper + .apos-field__wrapper {
|
|
138
|
-
border-right: none;
|
|
139
141
|
padding-right: 0;
|
|
140
142
|
padding-left: 20px;
|
|
143
|
+
border-right: none;
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
& .apos-field__label {
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
:class="getClasses(item)"
|
|
8
8
|
@click="select(item, $event)"
|
|
9
9
|
>
|
|
10
|
-
<
|
|
10
|
+
<div
|
|
11
11
|
v-if="item?.attachment?._urls?.['one-sixth']"
|
|
12
|
-
:src="item.attachment._urls['one-sixth']"
|
|
13
12
|
class="apos-search-image"
|
|
14
13
|
>
|
|
14
|
+
<img :src="item.attachment._urls['one-sixth']">
|
|
15
|
+
</div>
|
|
15
16
|
<AposIndicator
|
|
16
17
|
v-else-if="getIcon(item).icon"
|
|
17
18
|
:icon="getIcon(item).icon"
|
|
@@ -53,18 +54,18 @@ export default {
|
|
|
53
54
|
z-index: calc(#{$z-index-widget-focused-controls} + 1);
|
|
54
55
|
position: absolute;
|
|
55
56
|
overflow: auto;
|
|
57
|
+
box-sizing: border-box;
|
|
56
58
|
width: 100%;
|
|
59
|
+
margin: 0;
|
|
60
|
+
padding: 0;
|
|
61
|
+
border: 1px solid var(--a-base-8);
|
|
62
|
+
background: var(--a-background-primary);
|
|
57
63
|
list-style: none;
|
|
58
64
|
box-shadow: var(--a-box-shadow);
|
|
59
|
-
box-sizing: border-box;
|
|
60
65
|
min-width: 320px;
|
|
61
66
|
max-height: 300px;
|
|
62
|
-
margin: 0;
|
|
63
|
-
padding: 0;
|
|
64
67
|
border-bottom-left-radius: var(--a-border-radius);
|
|
65
68
|
border-bottom-right-radius: var(--a-border-radius);
|
|
66
|
-
border: 1px solid var(--a-base-8);
|
|
67
|
-
background: var(--a-background-primary);
|
|
68
69
|
|
|
69
70
|
&:empty {
|
|
70
71
|
display: none;
|
|
@@ -76,9 +77,11 @@ export default {
|
|
|
76
77
|
border: none;
|
|
77
78
|
background-color: var(--a-background-primary);
|
|
78
79
|
cursor: auto;
|
|
80
|
+
|
|
79
81
|
.apos-search__item__title {
|
|
80
82
|
color: $input-color-disabled;
|
|
81
83
|
}
|
|
84
|
+
|
|
82
85
|
.apos-search__item__field {
|
|
83
86
|
color: $input-color-disabled;
|
|
84
87
|
}
|
|
@@ -87,9 +90,11 @@ export default {
|
|
|
87
90
|
@mixin suggestion {
|
|
88
91
|
padding-top: 14px;
|
|
89
92
|
background-color: var(--a-background-inverted);
|
|
93
|
+
|
|
90
94
|
.apos-search__item__title {
|
|
91
95
|
color: var(--a-text-inverted);
|
|
92
96
|
}
|
|
97
|
+
|
|
93
98
|
.apos-search__item__field {
|
|
94
99
|
color: var(--a-base-8);
|
|
95
100
|
}
|
|
@@ -99,9 +104,11 @@ export default {
|
|
|
99
104
|
flex-direction: column;
|
|
100
105
|
gap: 4px;
|
|
101
106
|
border-top: 1px solid var(--a-base-5);
|
|
107
|
+
|
|
102
108
|
.apos-search__item__title {
|
|
103
109
|
color: var(--a-base-2);
|
|
104
110
|
}
|
|
111
|
+
|
|
105
112
|
.apos-search__item__field {
|
|
106
113
|
color: var(--a-text-primary);
|
|
107
114
|
}
|
|
@@ -109,14 +116,15 @@ export default {
|
|
|
109
116
|
|
|
110
117
|
.apos-search__item {
|
|
111
118
|
display: flex;
|
|
112
|
-
|
|
119
|
+
box-sizing: border-box;
|
|
113
120
|
align-items: center;
|
|
114
|
-
|
|
121
|
+
justify-content: flex-start;
|
|
115
122
|
margin: 0;
|
|
116
123
|
padding: 10px 20px;
|
|
117
124
|
border-top: 1px solid var(--a-base-5);
|
|
118
|
-
|
|
119
|
-
|
|
125
|
+
transition: background-color 300ms ease;
|
|
126
|
+
gap: 10px;
|
|
127
|
+
|
|
120
128
|
& * {
|
|
121
129
|
pointer-events: none;
|
|
122
130
|
}
|
|
@@ -124,12 +132,15 @@ export default {
|
|
|
124
132
|
&:hover.apos-search__item {
|
|
125
133
|
background-color: var(--a-base-10);
|
|
126
134
|
cursor: pointer;
|
|
135
|
+
|
|
127
136
|
&.apos-search__item--disabled {
|
|
128
137
|
@include disabled;
|
|
129
138
|
}
|
|
139
|
+
|
|
130
140
|
&.apos-search__item--suggestion {
|
|
131
141
|
@include suggestion;
|
|
132
142
|
}
|
|
143
|
+
|
|
133
144
|
&.apos-search__item--hint {
|
|
134
145
|
@include hint;
|
|
135
146
|
}
|
|
@@ -137,11 +148,13 @@ export default {
|
|
|
137
148
|
|
|
138
149
|
&__title {
|
|
139
150
|
@include type-base;
|
|
151
|
+
|
|
140
152
|
color: var(--a-text-primary);
|
|
141
153
|
}
|
|
142
154
|
|
|
143
155
|
&__field {
|
|
144
156
|
@include type-base;
|
|
157
|
+
|
|
145
158
|
color: var(--a-base-2);
|
|
146
159
|
}
|
|
147
160
|
|
|
@@ -158,11 +171,33 @@ export default {
|
|
|
158
171
|
}
|
|
159
172
|
|
|
160
173
|
.apos-search-image {
|
|
161
|
-
|
|
174
|
+
display: flex;
|
|
175
|
+
flex-basis: 32px;
|
|
162
176
|
flex-grow: 0;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
177
|
+
|
|
178
|
+
& img {
|
|
179
|
+
max-width: 32px;
|
|
180
|
+
max-height: 32px;
|
|
181
|
+
object-fit: cover;
|
|
182
|
+
margin: 0 auto;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
&--attachment {
|
|
187
|
+
.apos-search-image {
|
|
188
|
+
flex-basis: 50px;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.apos-search-image img {
|
|
192
|
+
max-width: 50px;
|
|
193
|
+
max-height: 50px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.apos-search__item__title {
|
|
197
|
+
white-space: nowrap;
|
|
198
|
+
text-overflow: ellipsis;
|
|
199
|
+
overflow: hidden;
|
|
200
|
+
}
|
|
166
201
|
}
|
|
167
202
|
}
|
|
168
203
|
</style>
|
|
@@ -86,12 +86,9 @@ export default {
|
|
|
86
86
|
&__preview-trigger {
|
|
87
87
|
z-index: $z-index-default;
|
|
88
88
|
position: absolute;
|
|
89
|
-
|
|
90
|
-
top: 0;
|
|
91
|
-
right: 0;
|
|
92
|
-
bottom: 0;
|
|
93
|
-
left: 0;
|
|
89
|
+
inset: 0;
|
|
94
90
|
display: block;
|
|
91
|
+
box-sizing: border-box;
|
|
95
92
|
width: 100%;
|
|
96
93
|
height: 100%;
|
|
97
94
|
margin: 0;
|
|
@@ -115,9 +112,9 @@ export default {
|
|
|
115
112
|
@include type-base;
|
|
116
113
|
|
|
117
114
|
display: block;
|
|
115
|
+
padding-bottom: $spacing-double;
|
|
118
116
|
color: var(--a-base-3);
|
|
119
117
|
line-height: 1;
|
|
120
|
-
padding-bottom: $spacing-double;
|
|
121
118
|
}
|
|
122
119
|
|
|
123
120
|
&__controls {
|
|
@@ -152,11 +149,9 @@ export default {
|
|
|
152
149
|
}
|
|
153
150
|
|
|
154
151
|
.slide-fade-enter-active {
|
|
155
|
-
transition: all
|
|
156
|
-
}
|
|
157
|
-
.slide-fade-leave-active {
|
|
158
|
-
// nothing on expand: false
|
|
152
|
+
transition: all 300ms ease-in;
|
|
159
153
|
}
|
|
154
|
+
|
|
160
155
|
.slide-fade-enter, .slide-fade-leave-to {
|
|
161
156
|
transform: translateY(-5px);
|
|
162
157
|
opacity: 0;
|
|
@@ -37,7 +37,7 @@ export default {
|
|
|
37
37
|
default: null
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
|
-
emits: [ 'modal-result'
|
|
40
|
+
emits: [ 'modal-result' ],
|
|
41
41
|
data() {
|
|
42
42
|
// Automatically add `_id` to default items
|
|
43
43
|
const items = this.items.map(item => ({
|
|
@@ -47,7 +47,7 @@ export default {
|
|
|
47
47
|
|
|
48
48
|
return {
|
|
49
49
|
currentId: null,
|
|
50
|
-
currentDoc:
|
|
50
|
+
currentDoc: { data: {} },
|
|
51
51
|
modal: {
|
|
52
52
|
active: false,
|
|
53
53
|
type: 'overlay',
|
|
@@ -142,7 +142,7 @@ export default {
|
|
|
142
142
|
this.modal.active = true;
|
|
143
143
|
await this.evaluateExternalConditions();
|
|
144
144
|
if (this.next.length) {
|
|
145
|
-
|
|
145
|
+
this.setCurrentDoc(this.next.at(0)._id);
|
|
146
146
|
}
|
|
147
147
|
if (this.serverError && this.serverError.data && this.serverError.data.errors) {
|
|
148
148
|
const first = this.serverError.data.errors[0];
|
|
@@ -155,19 +155,22 @@ export default {
|
|
|
155
155
|
this.titleFieldChoices = await this.getTitleFieldChoices();
|
|
156
156
|
},
|
|
157
157
|
methods: {
|
|
158
|
+
setCurrentDoc(_id) {
|
|
159
|
+
this.currentId = _id;
|
|
160
|
+
this.currentDoc = {
|
|
161
|
+
hasErrors: false,
|
|
162
|
+
data: this.next.find(item => item._id === _id)
|
|
163
|
+
};
|
|
164
|
+
this.evaluateConditions();
|
|
165
|
+
this.triggerValidation = false;
|
|
166
|
+
},
|
|
158
167
|
async select(_id) {
|
|
159
168
|
if (this.currentId === _id) {
|
|
160
169
|
return;
|
|
161
170
|
}
|
|
162
171
|
if (await this.validate(true, false)) {
|
|
163
172
|
this.currentDocToCurrentItem();
|
|
164
|
-
this.
|
|
165
|
-
this.currentDoc = {
|
|
166
|
-
hasErrors: false,
|
|
167
|
-
data: this.next.find(item => item._id === _id)
|
|
168
|
-
};
|
|
169
|
-
this.evaluateConditions();
|
|
170
|
-
this.triggerValidation = false;
|
|
173
|
+
this.setCurrentDoc(_id);
|
|
171
174
|
}
|
|
172
175
|
},
|
|
173
176
|
update(items) {
|
|
@@ -176,9 +179,9 @@ export default {
|
|
|
176
179
|
// drags fail
|
|
177
180
|
this.next = items.map(item => this.next.find(_item => item._id === _item._id));
|
|
178
181
|
if (this.currentId) {
|
|
179
|
-
if (!this.next.
|
|
180
|
-
this.currentId = null;
|
|
181
|
-
this.currentDoc =
|
|
182
|
+
if (!this.next.some(item => item._id === this.currentId)) {
|
|
183
|
+
this.currentId = this.next.at(0)?._id || null;
|
|
184
|
+
this.currentDoc = { data: this.next.at(0) || {} };
|
|
182
185
|
}
|
|
183
186
|
}
|
|
184
187
|
this.updateMinMax();
|
|
@@ -254,7 +257,7 @@ export default {
|
|
|
254
257
|
return false;
|
|
255
258
|
},
|
|
256
259
|
async validate(validateItem, validateLength) {
|
|
257
|
-
if (validateItem) {
|
|
260
|
+
if (validateItem && this.next.length > 0 && this.currentId) {
|
|
258
261
|
this.triggerValidation = true;
|
|
259
262
|
}
|
|
260
263
|
await this.$nextTick();
|
|
@@ -355,9 +358,6 @@ export default {
|
|
|
355
358
|
}
|
|
356
359
|
}
|
|
357
360
|
return choices;
|
|
358
|
-
},
|
|
359
|
-
emitSafeClose() {
|
|
360
|
-
this.$emit('safe-close');
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
363
|
};
|
|
@@ -17,9 +17,12 @@ export default {
|
|
|
17
17
|
.map(doc => [ doc._id, doc._fields ])
|
|
18
18
|
);
|
|
19
19
|
|
|
20
|
+
const suggestionFields = this.field.suggestionFields || apos.modules[this.field.withType]?.relationshipSuggestionFields;
|
|
21
|
+
|
|
20
22
|
return {
|
|
21
23
|
searchTerm: '',
|
|
22
24
|
searchList: [],
|
|
25
|
+
suggestionFields,
|
|
23
26
|
next,
|
|
24
27
|
subfields,
|
|
25
28
|
disabled: false,
|
|
@@ -4,6 +4,12 @@ export default {
|
|
|
4
4
|
name: 'AposInputString',
|
|
5
5
|
mixins: [ AposInputMixin ],
|
|
6
6
|
emits: [ 'return' ],
|
|
7
|
+
props: {
|
|
8
|
+
rows: {
|
|
9
|
+
type: Number,
|
|
10
|
+
default: 5
|
|
11
|
+
}
|
|
12
|
+
},
|
|
7
13
|
data () {
|
|
8
14
|
return {
|
|
9
15
|
step: undefined,
|
|
@@ -19,6 +25,9 @@ export default {
|
|
|
19
25
|
if (this.field.type === 'float' || this.field.type === 'integer') {
|
|
20
26
|
return 'number';
|
|
21
27
|
}
|
|
28
|
+
if (this.field.type === 'string' && this.field.textarea) {
|
|
29
|
+
return 'textarea';
|
|
30
|
+
}
|
|
22
31
|
if (this.field.type === 'string' || this.field.type === 'slug') {
|
|
23
32
|
return 'text';
|
|
24
33
|
}
|
|
@@ -9,6 +9,7 @@ export default {
|
|
|
9
9
|
})
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
|
+
emits: [ 'replace-field-value' ],
|
|
12
13
|
props: {
|
|
13
14
|
field: {
|
|
14
15
|
type: Object,
|
|
@@ -149,5 +150,11 @@ export default {
|
|
|
149
150
|
this.wrapEl = 'fieldset';
|
|
150
151
|
this.labelEl = 'legend';
|
|
151
152
|
}
|
|
153
|
+
},
|
|
154
|
+
methods: {
|
|
155
|
+
// Notify about a value, suggested by meta components or their children.
|
|
156
|
+
replaceFieldValue(value) {
|
|
157
|
+
this.$emit('replace-field-value', value);
|
|
158
|
+
}
|
|
152
159
|
}
|
|
153
160
|
};
|
|
@@ -6,7 +6,12 @@ export default {
|
|
|
6
6
|
props: {
|
|
7
7
|
modelValue: {
|
|
8
8
|
type: Object,
|
|
9
|
-
required: true
|
|
9
|
+
required: true,
|
|
10
|
+
default() {
|
|
11
|
+
return {
|
|
12
|
+
data: {}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
10
15
|
},
|
|
11
16
|
meta: {
|
|
12
17
|
type: Object,
|
|
@@ -120,7 +125,7 @@ export default {
|
|
|
120
125
|
required
|
|
121
126
|
},
|
|
122
127
|
value: {
|
|
123
|
-
data: this.modelValue[item.name]
|
|
128
|
+
data: this.modelValue.data[item.name]
|
|
124
129
|
},
|
|
125
130
|
serverError: this.serverErrors && this.serverErrors[item.name],
|
|
126
131
|
modifiers: [
|
|
@@ -181,7 +186,7 @@ export default {
|
|
|
181
186
|
this.populateDocData();
|
|
182
187
|
}
|
|
183
188
|
},
|
|
184
|
-
generation(
|
|
189
|
+
generation() {
|
|
185
190
|
// repopulate the schema.
|
|
186
191
|
this.populateDocData();
|
|
187
192
|
},
|
|
@@ -69,6 +69,9 @@ export default {
|
|
|
69
69
|
item.classes && Array.isArray(item.classes) && item.classes.forEach(suffix => {
|
|
70
70
|
classes[`apos-search__item--${suffix}`] = true;
|
|
71
71
|
});
|
|
72
|
+
if (item.attachment) {
|
|
73
|
+
classes['apos-search__item--attachment'] = true;
|
|
74
|
+
}
|
|
72
75
|
|
|
73
76
|
return classes;
|
|
74
77
|
},
|
|
@@ -145,6 +145,11 @@ export default {
|
|
|
145
145
|
ranValidation: this.conditionMet === false ? this.modelValue.ranValidation : true
|
|
146
146
|
});
|
|
147
147
|
},
|
|
148
|
+
// Allows replacing the current component value externally, e.g. via
|
|
149
|
+
// local component or global bus events.
|
|
150
|
+
replaceFieldValue(value) {
|
|
151
|
+
this.next = value;
|
|
152
|
+
},
|
|
148
153
|
watchValue () {
|
|
149
154
|
this.error = this.modelValue.error;
|
|
150
155
|
this.next = this.modelValue.data;
|