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
package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
:aria-controls="`insert-menu-${modelValue._id}`"
|
|
4
|
+
@keydown="handleUIKeydown"
|
|
5
|
+
>
|
|
3
6
|
<bubble-menu
|
|
4
7
|
v-if="editor"
|
|
5
8
|
class="bubble-menu"
|
|
@@ -9,7 +12,8 @@
|
|
|
9
12
|
zIndex: 2000,
|
|
10
13
|
animation: 'fade',
|
|
11
14
|
inertia: true,
|
|
12
|
-
placement: 'bottom'
|
|
15
|
+
placement: 'bottom',
|
|
16
|
+
hideOnClick: true
|
|
13
17
|
}"
|
|
14
18
|
:editor="editor"
|
|
15
19
|
>
|
|
@@ -713,7 +717,6 @@ function traverseNextNode(node) {
|
|
|
713
717
|
}
|
|
714
718
|
|
|
715
719
|
:deep(.apos-rich-text-toolbar) {
|
|
716
|
-
|
|
717
720
|
& > .apos-context-menu__pane {
|
|
718
721
|
padding: 8px;
|
|
719
722
|
border: 1px solid var(--a-primary-transparent-25);
|
|
@@ -721,24 +724,24 @@ function traverseNextNode(node) {
|
|
|
721
724
|
border-radius: var(--a-border-radius-large);
|
|
722
725
|
}
|
|
723
726
|
|
|
724
|
-
.apos-is-active .apos-button--rich-text
|
|
725
|
-
.apos-button--rich-text:hover
|
|
726
|
-
.apos-button--rich-text:active
|
|
727
|
-
.apos-button--rich-text:focus
|
|
727
|
+
.apos-is-active .apos-button--rich-text::after,
|
|
728
|
+
.apos-button--rich-text:hover::after,
|
|
729
|
+
.apos-button--rich-text:active::after,
|
|
730
|
+
.apos-button--rich-text:focus::after {
|
|
728
731
|
opacity: 1;
|
|
729
732
|
transform: scale(1.15) translateY(0);
|
|
730
733
|
}
|
|
731
734
|
|
|
732
|
-
.apos-is-active .apos-button--rich-text
|
|
735
|
+
.apos-is-active .apos-button--rich-text::after {
|
|
733
736
|
background-color: var(--a-primary-transparent-10);
|
|
734
737
|
}
|
|
735
738
|
|
|
736
|
-
.apos-is-active .apos-button--rich-text:hover
|
|
739
|
+
.apos-is-active .apos-button--rich-text:hover::after {
|
|
737
740
|
background-color: var(--a-primary-transparent-15);
|
|
738
741
|
}
|
|
739
742
|
|
|
740
743
|
.apos-button--rich-text .apos-button__icon {
|
|
741
|
-
transition: all
|
|
744
|
+
transition: all 300ms var(--a-transition-timing-bounce);
|
|
742
745
|
}
|
|
743
746
|
|
|
744
747
|
.apos-button--rich-text {
|
|
@@ -749,26 +752,33 @@ function traverseNextNode(node) {
|
|
|
749
752
|
border-radius: var(--a-border-radius);
|
|
750
753
|
background-color: transparent;
|
|
751
754
|
color: var(--a-base-1);
|
|
755
|
+
|
|
752
756
|
&.apos-button--icon-only {
|
|
753
757
|
width: 24px;
|
|
754
758
|
padding: 0;
|
|
755
759
|
}
|
|
760
|
+
|
|
756
761
|
&:hover {
|
|
757
762
|
background-color: transparent;
|
|
758
763
|
}
|
|
759
|
-
|
|
764
|
+
|
|
765
|
+
&:hover::after {
|
|
760
766
|
background-color: var(--a-base-9);
|
|
761
767
|
}
|
|
768
|
+
|
|
762
769
|
&:active {
|
|
763
770
|
background-color: transparent;
|
|
764
771
|
}
|
|
772
|
+
|
|
765
773
|
&:active .apos-button__icon {
|
|
766
774
|
transform: scale(0.8);
|
|
767
775
|
}
|
|
768
|
-
|
|
776
|
+
|
|
777
|
+
&:active::after, &:focus::after {
|
|
769
778
|
background-color: var(--a-primary-transparent-25);
|
|
770
779
|
}
|
|
771
|
-
|
|
780
|
+
|
|
781
|
+
&::after {
|
|
772
782
|
content: '';
|
|
773
783
|
z-index: $z-index-button-background;
|
|
774
784
|
position: absolute;
|
|
@@ -779,9 +789,9 @@ function traverseNextNode(node) {
|
|
|
779
789
|
height: 100%;
|
|
780
790
|
background-color: transparent;
|
|
781
791
|
transition:
|
|
782
|
-
opacity
|
|
783
|
-
transform
|
|
784
|
-
background-color
|
|
792
|
+
opacity 500ms var(--a-transition-timing-bounce),
|
|
793
|
+
transform 500ms var(--a-transition-timing-bounce),
|
|
794
|
+
background-color 500ms ease;
|
|
785
795
|
opacity: 0;
|
|
786
796
|
transform: scale(0.3) translateY(-4px);
|
|
787
797
|
}
|
|
@@ -811,43 +821,42 @@ function traverseNextNode(node) {
|
|
|
811
821
|
gap: 6px;
|
|
812
822
|
}
|
|
813
823
|
|
|
814
|
-
.apos-rich-text-editor__editor :deep(.ProseMirror) {
|
|
824
|
+
.apos-rich-text-editor__editor :deep(.ProseMirror) { /* stylelint-disable-line selector-class-pattern */
|
|
815
825
|
@include apos-transition();
|
|
816
826
|
}
|
|
817
827
|
|
|
818
|
-
.apos-rich-text-editor__editor :deep(.ProseMirror:focus) {
|
|
828
|
+
.apos-rich-text-editor__editor :deep(.ProseMirror:focus) { /* stylelint-disable-line selector-class-pattern */
|
|
819
829
|
outline: none;
|
|
820
830
|
}
|
|
821
831
|
|
|
822
|
-
.apos-rich-text-editor__editor :deep(.ProseMirror) {
|
|
832
|
+
.apos-rich-text-editor__editor :deep(.ProseMirror) { /* stylelint-disable-line selector-class-pattern */
|
|
823
833
|
padding: 10px 0;
|
|
824
834
|
}
|
|
825
835
|
|
|
826
|
-
.apos-rich-text-editor__editor :deep(.ProseMirror:focus p.apos-is-empty::after) {
|
|
836
|
+
.apos-rich-text-editor__editor :deep(.ProseMirror:focus p.apos-is-empty::after) { /* stylelint-disable-line selector-class-pattern, selector-no-qualifying-type */
|
|
827
837
|
display: block;
|
|
828
838
|
margin: 5px 0 10px;
|
|
839
|
+
padding-top: 5px;
|
|
840
|
+
border-top: 1px solid var(--a-primary-transparent-50);
|
|
829
841
|
color: var(--a-primary-transparent-50);
|
|
830
842
|
font-size: var(--a-type-smaller);
|
|
831
843
|
text-transform: uppercase;
|
|
832
844
|
letter-spacing: 0.5px;
|
|
833
845
|
font-weight: 600;
|
|
834
|
-
border-top: 1px solid var(--a-primary-transparent-50);
|
|
835
|
-
padding-top: 5px;
|
|
836
846
|
content: attr(data-placeholder);
|
|
837
847
|
pointer-events: none;
|
|
838
848
|
}
|
|
839
849
|
|
|
840
850
|
.apos-rich-text-editor__editor {
|
|
841
851
|
@include apos-transition();
|
|
852
|
+
|
|
842
853
|
position: relative;
|
|
843
854
|
border-radius: var(--a-border-radius);
|
|
844
855
|
background-color: transparent;
|
|
845
856
|
}
|
|
846
857
|
|
|
847
858
|
.apos-rich-text-editor__editor :deep([data-tippy-root]) {
|
|
848
|
-
transition:
|
|
849
|
-
/* stylelint-disable-next-line time-min-milliseconds */
|
|
850
|
-
transition-delay: 0.1s;
|
|
859
|
+
transition: transform 400ms var(--a-transition-timing-bounce) 100ms;
|
|
851
860
|
}
|
|
852
861
|
|
|
853
862
|
.apos-rich-text-editor__editor :deep(.tippy-box[data-animation='fade'][data-state='hidden']) {
|
|
@@ -859,13 +868,12 @@ function traverseNextNode(node) {
|
|
|
859
868
|
background-color: var(--a-primary-transparent-10);
|
|
860
869
|
min-height: 50px;
|
|
861
870
|
}
|
|
871
|
+
|
|
862
872
|
.apos-rich-text-editor__editor_after {
|
|
863
873
|
@include type-small;
|
|
874
|
+
|
|
864
875
|
position: absolute;
|
|
865
|
-
|
|
866
|
-
right: 0;
|
|
867
|
-
bottom: 0;
|
|
868
|
-
left: 0;
|
|
876
|
+
inset: 0;
|
|
869
877
|
display: block;
|
|
870
878
|
width: 200px;
|
|
871
879
|
height: 10px;
|
|
@@ -878,11 +886,13 @@ function traverseNextNode(node) {
|
|
|
878
886
|
text-transform: uppercase;
|
|
879
887
|
letter-spacing: 1px;
|
|
880
888
|
text-align: center;
|
|
889
|
+
|
|
881
890
|
&.apos-is-visually-empty {
|
|
882
891
|
opacity: 1;
|
|
883
892
|
visibility: visible;
|
|
884
893
|
}
|
|
885
894
|
}
|
|
895
|
+
|
|
886
896
|
:deep(.apos-rich-text-toolbar__inner > .apos-rich-text-editor__control) {
|
|
887
897
|
/* Addresses a Safari-only situation where it inherits the
|
|
888
898
|
`::-webkit-scrollbar-button` 2px margin. */
|
|
@@ -907,12 +917,12 @@ function traverseNextNode(node) {
|
|
|
907
917
|
|
|
908
918
|
// So editors can identify the cells that would take part
|
|
909
919
|
// in a merge operation
|
|
910
|
-
.apos-rich-text-editor__editor :deep(.selectedCell) {
|
|
920
|
+
.apos-rich-text-editor__editor :deep(.selectedCell) { /* stylelint-disable-line selector-class-pattern */
|
|
911
921
|
// Should be visible on any background, light mode or dark mode
|
|
912
922
|
backdrop-filter: invert(0.1);
|
|
913
923
|
}
|
|
914
924
|
|
|
915
|
-
.apos-rich-text-editor__editor :deep(figure.ProseMirror-selectednode) {
|
|
925
|
+
.apos-rich-text-editor__editor :deep(figure.ProseMirror-selectednode) { /* stylelint-disable-line selector-no-qualifying-type, selector-class-pattern */
|
|
916
926
|
opacity: 0.5;
|
|
917
927
|
}
|
|
918
928
|
|
|
@@ -939,6 +949,8 @@ function traverseNextNode(node) {
|
|
|
939
949
|
}
|
|
940
950
|
|
|
941
951
|
.apos-rich-text-insert-menu-item {
|
|
952
|
+
@include apos-transition();
|
|
953
|
+
|
|
942
954
|
all: unset;
|
|
943
955
|
display: flex;
|
|
944
956
|
flex-direction: row;
|
|
@@ -946,13 +958,15 @@ function traverseNextNode(node) {
|
|
|
946
958
|
gap: 12px;
|
|
947
959
|
padding: 14px 16px;
|
|
948
960
|
border-bottom: 1px solid var(--a-base-9);
|
|
949
|
-
|
|
961
|
+
|
|
950
962
|
&:last-of-type {
|
|
951
963
|
border-bottom: none;
|
|
952
964
|
}
|
|
965
|
+
|
|
953
966
|
&:hover {
|
|
954
967
|
background-color: var(--a-primary-transparent-10);
|
|
955
968
|
}
|
|
969
|
+
|
|
956
970
|
&:active, &:focus {
|
|
957
971
|
background-color: var(--a-primary);
|
|
958
972
|
color: var(--a-white);
|
|
@@ -963,25 +977,29 @@ function traverseNextNode(node) {
|
|
|
963
977
|
display: flex;
|
|
964
978
|
flex-direction: column;
|
|
965
979
|
gap: 5px;
|
|
980
|
+
|
|
966
981
|
h4, p {
|
|
967
982
|
margin: 0;
|
|
968
983
|
font-family: var(--a-family-default);
|
|
969
984
|
}
|
|
985
|
+
|
|
970
986
|
h4 {
|
|
971
987
|
font-weight: 500;
|
|
972
988
|
font-size: var(--a-type-large);
|
|
973
989
|
}
|
|
990
|
+
|
|
974
991
|
p {
|
|
975
992
|
font-size: var(--a-type-label);
|
|
976
993
|
}
|
|
977
994
|
}
|
|
995
|
+
|
|
978
996
|
.apos-rich-text-insert-menu-icon {
|
|
979
997
|
position: relative;
|
|
980
998
|
display: flex;
|
|
981
|
-
width: 40px;
|
|
982
|
-
height: 40px;
|
|
983
999
|
align-items: center;
|
|
984
1000
|
justify-content: center;
|
|
1001
|
+
width: 40px;
|
|
1002
|
+
height: 40px;
|
|
985
1003
|
border: 1px solid var(--a-base-8);
|
|
986
1004
|
color: var(--a-text-primary);
|
|
987
1005
|
background-color: var(--a-white);
|
|
@@ -990,30 +1008,30 @@ function traverseNextNode(node) {
|
|
|
990
1008
|
|
|
991
1009
|
.apos-rich-text-insert-menu-heading {
|
|
992
1010
|
padding: 12px 16px;
|
|
993
|
-
background-color: var(--a-base-9);
|
|
994
|
-
color: var(--a-base-2);
|
|
995
|
-
font-weight: 500;
|
|
996
1011
|
border-bottom: 1px solid var(--a-base-7);
|
|
1012
|
+
color: var(--a-base-2);
|
|
997
1013
|
font-size: var(--a-type-label);
|
|
1014
|
+
background-color: var(--a-base-9);
|
|
1015
|
+
font-weight: 500;
|
|
998
1016
|
letter-spacing: 0.25px;
|
|
999
1017
|
}
|
|
1000
1018
|
|
|
1001
|
-
:deep(.ProseMirror) {
|
|
1019
|
+
:deep(.ProseMirror) { /* stylelint-disable-line selector-class-pattern */
|
|
1002
1020
|
> * + * {
|
|
1003
1021
|
margin-top: 0.75em;
|
|
1004
1022
|
}
|
|
1005
1023
|
}
|
|
1006
1024
|
|
|
1007
|
-
:deep(.ProseMirror-gapcursor) {
|
|
1025
|
+
:deep(.ProseMirror-gapcursor) { /* stylelint-disable-line selector-class-pattern */
|
|
1008
1026
|
position: relative;
|
|
1009
1027
|
display: block;
|
|
1010
1028
|
height: 20px;
|
|
1011
1029
|
|
|
1012
|
-
|
|
1030
|
+
&::after {
|
|
1013
1031
|
width: 1px;
|
|
1014
1032
|
height: 20px;
|
|
1015
|
-
border-left: 1px solid #000;
|
|
1016
1033
|
border-top: 0 none;
|
|
1034
|
+
border-left: 1px solid #000;
|
|
1017
1035
|
}
|
|
1018
1036
|
}
|
|
1019
1037
|
</style>
|
|
@@ -152,7 +152,7 @@ export default {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
.apos-marks-control__button:deep(.apos-button--rich-text) {
|
|
155
|
-
&:active
|
|
155
|
+
&:active::after, &:focus::after {
|
|
156
156
|
background-color: var(--a-base-8);
|
|
157
157
|
}
|
|
158
158
|
|
|
@@ -210,6 +210,7 @@ export default {
|
|
|
210
210
|
|
|
211
211
|
&--is-active {
|
|
212
212
|
background-color: var(--a-base-10);
|
|
213
|
+
|
|
213
214
|
&:hover {
|
|
214
215
|
background-color: var(--a-base-9);
|
|
215
216
|
}
|
|
@@ -217,6 +218,7 @@ export default {
|
|
|
217
218
|
|
|
218
219
|
.apos-marks-control__button {
|
|
219
220
|
@include apos-button-reset();
|
|
221
|
+
|
|
220
222
|
display: block;
|
|
221
223
|
width: 100%;
|
|
222
224
|
padding: $spacing-base;
|
|
@@ -156,6 +156,7 @@ export default {
|
|
|
156
156
|
.apos-tiptap-control--select {
|
|
157
157
|
@include apos-button-reset();
|
|
158
158
|
@include apos-transition();
|
|
159
|
+
|
|
159
160
|
height: 100%;
|
|
160
161
|
padding: 0 $spacing-half;
|
|
161
162
|
font-size: var(--a-type-smaller);
|
|
@@ -172,7 +173,8 @@ export default {
|
|
|
172
173
|
padding: 0 $spacing-half;
|
|
173
174
|
color: var(--a-base-1);
|
|
174
175
|
border-radius: var(--a-border-radius);
|
|
175
|
-
transition: all
|
|
176
|
+
transition: all 500ms ease;
|
|
177
|
+
|
|
176
178
|
&:hover {
|
|
177
179
|
color: var(--a-text-primary);
|
|
178
180
|
background-color: var(--a-base-9);
|
|
@@ -146,6 +146,7 @@ export default {
|
|
|
146
146
|
.apos-tiptap-control--select {
|
|
147
147
|
@include apos-button-reset();
|
|
148
148
|
@include type-small;
|
|
149
|
+
|
|
149
150
|
height: 100%;
|
|
150
151
|
padding: 0 15px 0 10px;
|
|
151
152
|
|
|
@@ -153,6 +154,7 @@ export default {
|
|
|
153
154
|
background-color: var(--a-base-9);
|
|
154
155
|
outline: none;
|
|
155
156
|
}
|
|
157
|
+
|
|
156
158
|
&:hover {
|
|
157
159
|
background-color: var(--a-base-8);
|
|
158
160
|
}
|
|
@@ -93,16 +93,10 @@ export default (options) => {
|
|
|
93
93
|
.filter(c => allow[tag].includes(c));
|
|
94
94
|
|
|
95
95
|
// If we have valid classes, join and return them.
|
|
96
|
-
// If no valid classes for this parse, default to the
|
|
97
|
-
// the first setting for this tag (including null for tags defined without classes).
|
|
98
96
|
// else, remove classes.
|
|
99
|
-
const defaultOrNull =
|
|
100
|
-
options.nodes.find(s => s.tag === tag)?.class ||
|
|
101
|
-
options.marks.find(s => s.tag === tag)?.class ||
|
|
102
|
-
null;
|
|
103
97
|
return classes.length
|
|
104
98
|
? classes.join(' ')
|
|
105
|
-
:
|
|
99
|
+
: null;
|
|
106
100
|
}
|
|
107
101
|
}
|
|
108
102
|
}
|
|
@@ -22,6 +22,16 @@ export default (options) => {
|
|
|
22
22
|
rendered: false
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
+
},
|
|
26
|
+
addKeyboardShortcuts() {
|
|
27
|
+
const marks = Object.keys(this.editor.schema.marks);
|
|
28
|
+
return this.options.levels.reduce((items, level) => ({
|
|
29
|
+
...items,
|
|
30
|
+
...{
|
|
31
|
+
[`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level }),
|
|
32
|
+
Enter: () => marks.forEach(mark => this.editor.commands.unsetMark(mark))
|
|
33
|
+
}
|
|
34
|
+
}), {});
|
|
25
35
|
}
|
|
26
36
|
});
|
|
27
37
|
};
|
|
@@ -786,8 +786,12 @@ module.exports = (self) => {
|
|
|
786
786
|
}
|
|
787
787
|
const errors = [];
|
|
788
788
|
for (const datum of data) {
|
|
789
|
-
const
|
|
790
|
-
|
|
789
|
+
const _id = self.apos.launder.id(datum._id) || self.apos.util.generateId();
|
|
790
|
+
const [ found ] = destination[field.name]?.filter?.(item => item._id === _id) || [];
|
|
791
|
+
const result = {
|
|
792
|
+
...(found || {}),
|
|
793
|
+
_id
|
|
794
|
+
};
|
|
791
795
|
result.metaType = 'arrayItem';
|
|
792
796
|
result.scopedArrayName = field.scopedArrayName;
|
|
793
797
|
try {
|
|
@@ -876,6 +880,7 @@ module.exports = (self) => {
|
|
|
876
880
|
const schema = field.schema;
|
|
877
881
|
const errors = [];
|
|
878
882
|
const result = {
|
|
883
|
+
...(destination[field.name] || {}),
|
|
879
884
|
_id: self.apos.launder.id(data && data._id) || self.apos.util.generateId()
|
|
880
885
|
};
|
|
881
886
|
if (data == null || typeof data !== 'object' || Array.isArray(data)) {
|
|
@@ -1027,7 +1032,7 @@ module.exports = (self) => {
|
|
|
1027
1032
|
const result = results.find(doc => (doc._id === item._id));
|
|
1028
1033
|
if (result) {
|
|
1029
1034
|
if (field.schema) {
|
|
1030
|
-
result._fields = {};
|
|
1035
|
+
result._fields = { ...(destination[field.name]?.find?.(doc => doc._id === item._id)?._fields || {}) };
|
|
1031
1036
|
if (item && ((typeof item._fields === 'object'))) {
|
|
1032
1037
|
await self.convert(req, field.schema, item._fields || {}, result._fields);
|
|
1033
1038
|
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
@inactive="modal.active = false"
|
|
7
7
|
@show-modal="modal.showModal = true"
|
|
8
8
|
@esc="confirmAndCancel"
|
|
9
|
-
@no-modal="emitSafeClose"
|
|
10
9
|
>
|
|
11
10
|
<template #secondaryControls>
|
|
12
11
|
<AposButton
|
|
@@ -66,7 +65,7 @@
|
|
|
66
65
|
<div class="apos-modal-array-item__pane">
|
|
67
66
|
<div class="apos-array-item__body">
|
|
68
67
|
<AposSchema
|
|
69
|
-
v-
|
|
68
|
+
v-show="currentId"
|
|
70
69
|
ref="schema"
|
|
71
70
|
:schema="schema"
|
|
72
71
|
:trigger-validation="triggerValidation"
|
|
@@ -94,8 +93,7 @@ import AposArrayEditorLogic from '../logic/AposArrayEditor';
|
|
|
94
93
|
|
|
95
94
|
export default {
|
|
96
95
|
name: 'AposArrayEditor',
|
|
97
|
-
mixins: [ AposArrayEditorLogic ]
|
|
98
|
-
emits: [ 'safe-close' ]
|
|
96
|
+
mixins: [ AposArrayEditorLogic ]
|
|
99
97
|
};
|
|
100
98
|
</script>
|
|
101
99
|
|
|
@@ -116,10 +114,10 @@ export default {
|
|
|
116
114
|
}
|
|
117
115
|
|
|
118
116
|
.apos-array-item__body {
|
|
119
|
-
padding-top: 20px;
|
|
120
|
-
max-width: 90%;
|
|
121
117
|
margin-right: auto;
|
|
122
118
|
margin-left: auto;
|
|
119
|
+
padding-top: 20px;
|
|
120
|
+
max-width: 90%;
|
|
123
121
|
}
|
|
124
122
|
|
|
125
123
|
.apos-modal-array-min-error, .apos-modal-array-max-error {
|
|
@@ -71,12 +71,12 @@ export default {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
.apos-boolean__label {
|
|
74
|
-
min-width: 0;
|
|
75
74
|
position: relative;
|
|
76
75
|
display: flex;
|
|
77
|
-
justify-content: center;
|
|
78
76
|
align-items: center;
|
|
77
|
+
justify-content: center;
|
|
79
78
|
padding: math.div($boolean-padding, 2) $boolean-padding;
|
|
79
|
+
min-width: 0;
|
|
80
80
|
|
|
81
81
|
&:first-of-type {
|
|
82
82
|
border-top-right-radius: 0;
|
|
@@ -117,6 +117,7 @@ export default {
|
|
|
117
117
|
border-color: var(--a-base-4);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
+
|
|
120
121
|
.apos-boolean__input + & {
|
|
121
122
|
&:hover {
|
|
122
123
|
cursor: pointer;
|
|
@@ -144,6 +145,7 @@ export default {
|
|
|
144
145
|
top: 1px;
|
|
145
146
|
}
|
|
146
147
|
}
|
|
148
|
+
|
|
147
149
|
.apos-boolean__input:focus + .apos-boolean__label {
|
|
148
150
|
border-color: var(--a-base-2);
|
|
149
151
|
box-shadow: 0 0 5px var(--a-base-6);
|
|
@@ -156,6 +158,7 @@ export default {
|
|
|
156
158
|
color: var(--a-base-4);
|
|
157
159
|
background: var(--a-base-7);
|
|
158
160
|
border-color: var(--a-base-4);
|
|
161
|
+
|
|
159
162
|
&:hover {
|
|
160
163
|
cursor: not-allowed;
|
|
161
164
|
border-color: var(--a-base-4);
|
|
@@ -64,18 +64,20 @@ export default {
|
|
|
64
64
|
<style lang="scss" scoped>
|
|
65
65
|
.apos-input-wrapper {
|
|
66
66
|
@include type-base;
|
|
67
|
+
|
|
67
68
|
display: flex;
|
|
68
|
-
|
|
69
|
-
align-content: flex-start;
|
|
69
|
+
place-content: flex-start space-between;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.apos-range__value {
|
|
73
73
|
padding-top: 7px;
|
|
74
74
|
min-width: 100px;
|
|
75
|
+
|
|
75
76
|
&.apos-is-unset {
|
|
76
77
|
opacity: 0;
|
|
77
78
|
pointer-events: none;
|
|
78
79
|
}
|
|
80
|
+
|
|
79
81
|
.apos-range__clear {
|
|
80
82
|
margin-left: 5px;
|
|
81
83
|
}
|
|
@@ -94,8 +96,9 @@ export default {
|
|
|
94
96
|
|
|
95
97
|
.apos-range__scale {
|
|
96
98
|
@include type-small;
|
|
99
|
+
|
|
97
100
|
color: var(--a-base-4);
|
|
98
|
-
transition: color
|
|
101
|
+
transition: color 500ms ease;
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
// adapted from http://danielstern.ca/range.css/#/
|
|
@@ -105,9 +108,11 @@ export default {
|
|
|
105
108
|
background-color: transparent;
|
|
106
109
|
/* stylelint-disable-next-line property-no-vendor-prefix */
|
|
107
110
|
-webkit-appearance: none;
|
|
108
|
-
transition: all
|
|
111
|
+
transition: all 300ms ease;
|
|
112
|
+
|
|
109
113
|
&:focus {
|
|
110
114
|
outline: none;
|
|
115
|
+
|
|
111
116
|
& + .apos-range__scale {
|
|
112
117
|
color: var(--a-text-primary);
|
|
113
118
|
}
|
|
@@ -136,16 +141,17 @@ export default {
|
|
|
136
141
|
}
|
|
137
142
|
|
|
138
143
|
.apos-range__input::-webkit-slider-thumb {
|
|
139
|
-
margin-top: -6px;
|
|
140
144
|
width: 15px;
|
|
141
145
|
height: 15px;
|
|
146
|
+
margin-top: -6px;
|
|
142
147
|
border: 1px solid var(--a-primary-dark-15);
|
|
143
|
-
border-radius: 50%;
|
|
144
148
|
background: var(--a-primary);
|
|
149
|
+
border-radius: 50%;
|
|
145
150
|
cursor: pointer;
|
|
146
151
|
/* stylelint-disable-next-line property-no-vendor-prefix */
|
|
147
152
|
-webkit-appearance: none;
|
|
148
153
|
}
|
|
154
|
+
|
|
149
155
|
.apos-range__input[disabled]::-webkit-slider-thumb {
|
|
150
156
|
background: var(--a-primary-light-40);
|
|
151
157
|
}
|
|
@@ -203,11 +209,11 @@ export default {
|
|
|
203
209
|
.apos-range__input::-ms-thumb {
|
|
204
210
|
width: 15px;
|
|
205
211
|
height: 15px;
|
|
212
|
+
margin-top: 0;
|
|
206
213
|
border: 1px solid var(--a-primary-dark-15);
|
|
207
|
-
border-radius: 1px;
|
|
208
214
|
background: var(--a-primary);
|
|
215
|
+
border-radius: 1px;
|
|
209
216
|
cursor: pointer;
|
|
210
|
-
margin-top: 0;
|
|
211
217
|
}
|
|
212
218
|
|
|
213
219
|
.apos-range__input[disabled]::-ms-thumb {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<AposButton
|
|
46
46
|
v-if="field.browse !== false"
|
|
47
47
|
class="apos-input-relationship__button"
|
|
48
|
-
:disabled="field.readOnly
|
|
48
|
+
:disabled="field.readOnly"
|
|
49
49
|
:label="browseLabel"
|
|
50
50
|
:modifiers="buttonModifiers"
|
|
51
51
|
type="input"
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
:selected-items="next"
|
|
70
70
|
:icon="field.suggestionIcon"
|
|
71
71
|
:icon-size="field.suggestionIconSize"
|
|
72
|
-
:fields="
|
|
72
|
+
:fields="suggestionFields"
|
|
73
73
|
disabled-tooltip="apostrophe:publishBeforeUsingTooltip"
|
|
74
74
|
@select="updateSelected"
|
|
75
75
|
/>
|
|
@@ -114,6 +114,7 @@ export default {
|
|
|
114
114
|
padding: $spacing-half;
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
|
|
117
118
|
.apos-field--no-search {
|
|
118
119
|
.apos-input-relationship__button {
|
|
119
120
|
position: relative;
|
|
@@ -124,6 +125,7 @@ export default {
|
|
|
124
125
|
|
|
125
126
|
.apos-field__min-size {
|
|
126
127
|
@include type-help;
|
|
128
|
+
|
|
127
129
|
display: flex;
|
|
128
130
|
flex-grow: 1;
|
|
129
131
|
margin-bottom: $spacing-base;
|