apostrophe 4.28.0 → 4.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +33 -3
  2. package/README.md +142 -0
  3. package/defaults.js +1 -0
  4. package/lib/safe-json-script.js +27 -0
  5. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +1 -1
  6. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +1 -0
  7. package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +3 -5
  8. package/modules/@apostrophecms/area/ui/apos/components/AposBreadcrumbOperations.vue +13 -1
  9. package/modules/@apostrophecms/asset/lib/globalIcons.js +3 -0
  10. package/modules/@apostrophecms/attachment/index.js +43 -1
  11. package/modules/@apostrophecms/color-field/index.js +7 -1
  12. package/modules/@apostrophecms/doc/index.js +11 -1
  13. package/modules/@apostrophecms/doc-type/index.js +165 -32
  14. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +1 -1
  15. package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +104 -59
  16. package/modules/@apostrophecms/file/index.js +109 -9
  17. package/modules/@apostrophecms/i18n/i18n/de.json +0 -2
  18. package/modules/@apostrophecms/i18n/i18n/en.json +40 -1
  19. package/modules/@apostrophecms/i18n/i18n/es.json +0 -1
  20. package/modules/@apostrophecms/i18n/i18n/fr.json +0 -1
  21. package/modules/@apostrophecms/i18n/i18n/it.json +0 -1
  22. package/modules/@apostrophecms/i18n/i18n/pt-BR.json +0 -1
  23. package/modules/@apostrophecms/i18n/i18n/sk.json +0 -1
  24. package/modules/@apostrophecms/i18n/ui/apos/apps/AposI18nBatchReporting.js +18 -1
  25. package/modules/@apostrophecms/i18n/ui/apos/apps/AposI18nLocalizeActions.js +50 -0
  26. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +56 -13
  27. package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +8 -2
  28. package/modules/@apostrophecms/layout-column-widget/index.js +156 -163
  29. package/modules/@apostrophecms/layout-widget/index.js +7 -2
  30. package/modules/@apostrophecms/layout-widget/ui/apos/components/AposAreaLayoutEditor.vue +6 -11
  31. package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridColumn.vue +3 -5
  32. package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridLayout.vue +4 -4
  33. package/modules/@apostrophecms/layout-widget/ui/apos/components/AposGridManager.vue +0 -16
  34. package/modules/@apostrophecms/layout-widget/ui/apos/lib/grid-state.mjs +7 -27
  35. package/modules/@apostrophecms/layout-widget/views/column.html +7 -9
  36. package/modules/@apostrophecms/login/index.js +39 -40
  37. package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +17 -2
  38. package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +3 -2
  39. package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +1 -0
  40. package/modules/@apostrophecms/page/index.js +2 -0
  41. package/modules/@apostrophecms/piece-type/index.js +3 -1
  42. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +1 -0
  43. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerDisplay.vue +5 -0
  44. package/modules/@apostrophecms/recently-edited/index.js +831 -0
  45. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposCellTitle.vue +54 -0
  46. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedCombo.vue +454 -0
  47. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedFilterTag.vue +75 -0
  48. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedFilters.vue +287 -0
  49. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedIcon.vue +16 -0
  50. package/modules/@apostrophecms/recently-edited/ui/apos/components/AposRecentlyEditedManager.vue +346 -0
  51. package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedBatch.js +193 -0
  52. package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedData.js +276 -0
  53. package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedFetch.js +199 -0
  54. package/modules/@apostrophecms/recently-edited/ui/apos/composables/useRecentlyEditedFilters.js +100 -0
  55. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +8 -4
  56. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputWrapper.js +1 -1
  57. package/modules/@apostrophecms/styles/index.js +10 -0
  58. package/modules/@apostrophecms/styles/lib/apiRoutes.js +6 -0
  59. package/modules/@apostrophecms/styles/lib/handlers.js +5 -0
  60. package/modules/@apostrophecms/styles/lib/methods.js +9 -3
  61. package/modules/@apostrophecms/styles/lib/presets.js +119 -0
  62. package/modules/@apostrophecms/styles/ui/apos/components/TheAposStyles.vue +3 -8
  63. package/modules/@apostrophecms/styles/ui/apos/composables/AposStyles.js +1 -3
  64. package/modules/@apostrophecms/styles/ui/apos/render-factory.js +29 -0
  65. package/modules/@apostrophecms/styles/ui/apos/universal/backgroundHelpers.mjs +140 -0
  66. package/modules/@apostrophecms/styles/ui/apos/universal/customRules.mjs +105 -0
  67. package/modules/@apostrophecms/styles/ui/apos/universal/render.mjs +195 -15
  68. package/modules/@apostrophecms/template/index.js +22 -6
  69. package/modules/@apostrophecms/ui/ui/apos/components/AposCellContextMenu.vue +2 -0
  70. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +18 -4
  71. package/modules/@apostrophecms/ui/ui/apos/composables/useInfiniteScroll.js +91 -0
  72. package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +1 -0
  73. package/modules/@apostrophecms/ui/ui/apos/stores/modal.js +5 -2
  74. package/modules/@apostrophecms/ui/ui/apos/utils/index.js +9 -0
  75. package/modules/@apostrophecms/url/index.js +38 -4
  76. package/modules/@apostrophecms/widget-type/index.js +22 -6
  77. package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +8 -4
  78. package/package.json +19 -19
  79. package/test/files.js +129 -0
  80. package/test/layout-widget-migration.js +719 -0
  81. package/test/login-requirements.js +1 -1
  82. package/test/pieces-public-api.js +80 -0
  83. package/test/pieces.js +25 -0
  84. package/test/recently-edited.js +2311 -0
  85. package/test/schemas.js +39 -3
  86. package/test/static-build.js +642 -0
  87. package/test/styles.js +2569 -0
  88. package/modules/@apostrophecms/layout-widget/ui/apos/components/AposLayoutColControlDialog.vue +0 -171
@@ -1,171 +0,0 @@
1
- <template>
2
- <div
3
- class="apos-popover apos-layout-col-control__dialog"
4
- >
5
- <h2 class="apos-layout-col-control__header">
6
- Column Settings
7
- </h2>
8
- <AposSchema
9
- :key="widget._id"
10
- v-model="docFields"
11
- :schema="schema"
12
- :trigger-validation="triggerValidation"
13
- :modifiers="formModifiers"
14
- :generation="generation"
15
- @update:model-value="evaluateConditions()"
16
- />
17
- <footer class="apos-layout-col-control__footer">
18
- <AposButton
19
- type="primary"
20
- label="apostrophe:save"
21
- :modifiers="['small']"
22
- :disabled="docFields.hasErrors"
23
- @click="save"
24
- />
25
- </footer>
26
- </div>
27
- </template>
28
-
29
- <script>
30
- import { klona } from 'klona';
31
- import AposEditorMixin from 'Modules/@apostrophecms/modal/mixins/AposEditorMixin';
32
-
33
- export default {
34
- name: 'AposLayoutColControlDialog',
35
- mixins: [ AposEditorMixin ],
36
- props: {
37
- widget: {
38
- type: Object,
39
- default: function() {
40
- return {};
41
- }
42
- },
43
- widgetSchema: {
44
- type: Array,
45
- default: () => []
46
- }
47
- },
48
- emits: [ 'update', 'close' ],
49
- data() {
50
- return {
51
- triggerValidation: false,
52
- formModifiers: [ 'micro' ],
53
- conditionalFields: {},
54
- generation: 0
55
- };
56
- },
57
- computed: {
58
- schema() {
59
- const schema = [];
60
- const desktop = this.widgetSchema.find(s => s.name === 'desktop');
61
- const tablet = this.widgetSchema.find(s => s.name === 'tablet');
62
- const mobile = this.widgetSchema.find(s => s.name === 'mobile');
63
-
64
- tablet?.schema.filter(f => f.name === 'show').forEach(f => schema.push({
65
- ...f,
66
- name: 'showTablet'
67
- }));
68
- mobile?.schema.filter(f => f.name === 'show').forEach(f => schema.push({
69
- ...f,
70
- name: 'showMobile'
71
- }));
72
- desktop?.schema.filter(f => [ 'justify', 'align' ].includes(f.name))
73
- .forEach(f => schema.push(f));
74
-
75
- return schema;
76
- }
77
- },
78
- watch: {
79
- widget(newVal) {
80
- this.populateFields(newVal);
81
- }
82
- },
83
- async mounted() {
84
- this.populateFields(this.widget);
85
- window.addEventListener('keydown', this.keyboardHandler);
86
- },
87
- beforeUnmount() {
88
- window.removeEventListener('keydown', this.keyboardHandler);
89
- },
90
- methods: {
91
- populateFields(widget) {
92
- this.docFields.data = {
93
- justify: widget.desktop?.justify,
94
- align: widget.desktop?.align,
95
- showTablet: widget.tablet?.show,
96
- showMobile: widget.mobile?.show
97
- };
98
- this.generation++;
99
- },
100
- close() {
101
- this.$emit('close');
102
- },
103
- save() {
104
- this.triggerValidation = true;
105
- this.$nextTick(() => {
106
- if (this.docFields.hasErrors) {
107
- return;
108
- }
109
- const doc = klona(this.widget);
110
- const {
111
- justify, align, showTablet, showMobile
112
- } = this.docFields.data;
113
- doc.desktop ??= {};
114
- doc.tablet ??= {};
115
- doc.mobile ??= {};
116
- doc.desktop.justify = justify;
117
- doc.desktop.align = align;
118
- doc.tablet.show = showTablet;
119
- doc.mobile.show = showMobile;
120
-
121
- this.$emit('update', doc);
122
- this.close();
123
- });
124
- },
125
- keyboardHandler(e) {
126
- if (e.key === 'Escape') {
127
- this.close();
128
- }
129
- }
130
- }
131
- };
132
- </script>
133
-
134
- <style lang="scss" scoped>
135
- .apos-layout-col-control__dialog {
136
- width: 340px;
137
- }
138
-
139
- .apos-is-active {
140
- background-color: var(--a-base-7);
141
- }
142
-
143
- .apos-layout-col-control__header {
144
- @include type-title;
145
-
146
- & {
147
- margin-top: 0;
148
- text-align: left;
149
- text-transform: none;
150
- }
151
- }
152
-
153
- .apos-layout-col-control__footer {
154
- display: flex;
155
- justify-content: flex-end;
156
- margin-top: 10px;
157
- }
158
-
159
- .apos-layout-col-control__footer .apos-button__wrapper {
160
- margin-left: 7.5px;
161
- }
162
-
163
- .apos-layout-col-control__remove {
164
- display: flex;
165
- justify-content: flex-end;
166
- }
167
-
168
- :deep(.apos-schema .apos-field.apos-field--micro) {
169
- margin-bottom: $spacing-base + $spacing-half;
170
- }
171
- </style>