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.
Files changed (150) hide show
  1. package/.eslintrc +13 -4
  2. package/CHANGELOG.md +35 -0
  3. package/defaults.js +1 -0
  4. package/modules/@apostrophecms/admin-bar/ui/apos/apps/AposAdminBar.js +7 -17
  5. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBar.vue +14 -16
  6. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarLocale.vue +1 -1
  7. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarMenu.vue +22 -15
  8. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposAdminBarUser.vue +2 -2
  9. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextBar.vue +13 -8
  10. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextModeAndSettings.vue +18 -10
  11. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextTitle.vue +4 -4
  12. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposContextUndoRedo.vue +14 -8
  13. package/modules/@apostrophecms/admin-bar/ui/apos/components/TheAposSavingIndicator.vue +2 -1
  14. package/modules/@apostrophecms/area/ui/apos/apps/AposAreas.js +36 -54
  15. package/modules/@apostrophecms/area/ui/apos/components/AposAreaContextualMenu.vue +20 -25
  16. package/modules/@apostrophecms/area/ui/apos/components/AposAreaEditor.vue +5 -12
  17. package/modules/@apostrophecms/area/ui/apos/components/AposAreaExpandedMenu.vue +11 -3
  18. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenu.vue +6 -6
  19. package/modules/@apostrophecms/area/ui/apos/components/AposAreaMenuItem.vue +3 -2
  20. package/modules/@apostrophecms/area/ui/apos/components/AposAreaWidget.vue +31 -44
  21. package/modules/@apostrophecms/area/ui/apos/components/AposWidgetControls.vue +6 -6
  22. package/modules/@apostrophecms/asset/index.js +25 -12
  23. package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.config.js +3 -3
  24. package/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js +7 -1
  25. package/modules/@apostrophecms/busy/ui/apos/apps/AposBusy.js +8 -7
  26. package/modules/@apostrophecms/busy/ui/apos/components/TheAposBusy.vue +1 -1
  27. package/modules/@apostrophecms/command-menu/ui/apos/apps/AposCommandMenu.js +11 -29
  28. package/modules/@apostrophecms/command-menu/ui/apos/components/AposCommandMenuShortcut.vue +6 -6
  29. package/modules/@apostrophecms/command-menu/ui/apos/components/TheAposCommandMenu.vue +10 -7
  30. package/modules/@apostrophecms/doc-type/ui/apos/components/AposDocEditor.vue +20 -15
  31. package/modules/@apostrophecms/doc-type/ui/apos/logic/AposDocContextMenu.js +1 -1
  32. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +36 -27
  33. package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +3 -3
  34. package/modules/@apostrophecms/image/ui/apos/components/AposImageCropper.vue +5 -5
  35. package/modules/@apostrophecms/image/ui/apos/components/AposImageRelationshipEditor.vue +6 -6
  36. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManager.vue +23 -16
  37. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerDisplay.vue +11 -11
  38. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerEditor.vue +28 -21
  39. package/modules/@apostrophecms/image/ui/apos/components/AposMediaManagerSelections.vue +1 -1
  40. package/modules/@apostrophecms/image/ui/apos/components/AposMediaUploader.vue +5 -4
  41. package/modules/@apostrophecms/login/ui/apos/apps/AposLogin.js +6 -7
  42. package/modules/@apostrophecms/login/ui/apos/components/AposForgotPasswordForm.vue +3 -3
  43. package/modules/@apostrophecms/login/ui/apos/components/AposLoginForm.vue +10 -10
  44. package/modules/@apostrophecms/login/ui/apos/components/AposResetPasswordForm.vue +1 -1
  45. package/modules/@apostrophecms/login/ui/apos/components/TheAposLogin.vue +2 -2
  46. package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +60 -87
  47. package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +15 -11
  48. package/modules/@apostrophecms/modal/ui/apos/components/AposModal.vue +8 -2
  49. package/modules/@apostrophecms/modal/ui/apos/components/AposModalBreadcrumbs.vue +7 -4
  50. package/modules/@apostrophecms/modal/ui/apos/components/AposModalConfirm.vue +5 -5
  51. package/modules/@apostrophecms/modal/ui/apos/components/AposModalShareDraft.vue +8 -8
  52. package/modules/@apostrophecms/modal/ui/apos/components/AposModalToolbar.vue +7 -7
  53. package/modules/@apostrophecms/modal/ui/apos/components/TheAposModals.vue +22 -4
  54. package/modules/@apostrophecms/modal/ui/apos/composables/AposFocus.js +95 -0
  55. package/modules/@apostrophecms/modal/ui/apos/mixins/AposDocsManagerMixin.js +2 -3
  56. package/modules/@apostrophecms/modal/ui/apos/mixins/AposEditorMixin.js +6 -0
  57. package/modules/@apostrophecms/multisite-i18n/i18n/aposMultisite/en.json +48 -0
  58. package/modules/@apostrophecms/multisite-i18n/index.js +7 -0
  59. package/modules/@apostrophecms/notification/index.js +4 -4
  60. package/modules/@apostrophecms/notification/ui/apos/apps/AposNotification.js +6 -9
  61. package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +12 -8
  62. package/modules/@apostrophecms/oembed/index.js +10 -3
  63. package/modules/@apostrophecms/oembed-field/ui/apos/components/AposInputOembed.vue +4 -4
  64. package/modules/@apostrophecms/page/ui/apos/components/AposPagesManager.vue +15 -11
  65. package/modules/@apostrophecms/page/ui/apos/logic/AposPagesManager.js +1 -1
  66. package/modules/@apostrophecms/permission/ui/apos/components/AposInputRole.vue +3 -3
  67. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManager.vue +25 -17
  68. package/modules/@apostrophecms/piece-type/ui/apos/components/AposDocsManagerDisplay.vue +24 -20
  69. package/modules/@apostrophecms/piece-type/ui/apos/components/AposRelationshipEditor.vue +15 -11
  70. package/modules/@apostrophecms/polymorphic-type/index.js +0 -19
  71. package/modules/@apostrophecms/rich-text-widget/index.js +1 -0
  72. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposImageControlDialog.vue +7 -6
  73. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposRichTextWidgetEditor.vue +31 -30
  74. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapAnchor.vue +12 -10
  75. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapLink.vue +9 -8
  76. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapStyles.vue +3 -3
  77. package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapTable.vue +3 -3
  78. package/modules/@apostrophecms/schema/index.js +30 -1
  79. package/modules/@apostrophecms/schema/ui/apos/components/AposArrayEditor.vue +10 -8
  80. package/modules/@apostrophecms/schema/ui/apos/components/AposInputArea.vue +5 -3
  81. package/modules/@apostrophecms/schema/ui/apos/components/AposInputArray.vue +81 -277
  82. package/modules/@apostrophecms/schema/ui/apos/components/AposInputAttachment.vue +4 -2
  83. package/modules/@apostrophecms/schema/ui/apos/components/AposInputBoolean.vue +24 -14
  84. package/modules/@apostrophecms/schema/ui/apos/components/AposInputCheckboxes.vue +7 -6
  85. package/modules/@apostrophecms/schema/ui/apos/components/AposInputColor.vue +10 -7
  86. package/modules/@apostrophecms/schema/ui/apos/components/AposInputObject.vue +3 -3
  87. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRadio.vue +5 -4
  88. package/modules/@apostrophecms/schema/ui/apos/components/AposInputRelationship.vue +15 -12
  89. package/modules/@apostrophecms/schema/ui/apos/components/AposInputSelect.vue +1 -1
  90. package/modules/@apostrophecms/schema/ui/apos/components/AposInputSlug.vue +16 -12
  91. package/modules/@apostrophecms/schema/ui/apos/components/AposInputString.vue +19 -11
  92. package/modules/@apostrophecms/schema/ui/apos/components/AposInputWrapper.vue +1 -1
  93. package/modules/@apostrophecms/schema/ui/apos/components/AposSchema.vue +65 -21
  94. package/modules/@apostrophecms/schema/ui/apos/components/AposSubform.vue +2 -2
  95. package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +0 -4
  96. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArea.js +3 -3
  97. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputArray.js +15 -4
  98. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputAttachment.js +3 -3
  99. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputCheckboxes.js +7 -7
  100. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputColor.js +5 -8
  101. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputDateAndTime.js +1 -1
  102. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputObject.js +1 -1
  103. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRadio.js +1 -1
  104. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputRelationship.js +12 -9
  105. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputSelect.js +2 -2
  106. package/modules/@apostrophecms/schema/ui/apos/logic/AposInputString.js +6 -8
  107. package/modules/@apostrophecms/schema/ui/apos/logic/AposSchema.js +39 -13
  108. package/modules/@apostrophecms/schema/ui/apos/logic/AposSubform.js +1 -1
  109. package/modules/@apostrophecms/schema/ui/apos/mixins/AposInputMixin.js +9 -9
  110. package/modules/@apostrophecms/schema/ui/apos/scss/AposInputArray.scss +205 -0
  111. package/modules/@apostrophecms/settings/ui/apos/components/AposSettingsManager.vue +4 -4
  112. package/modules/@apostrophecms/settings/ui/apos/logic/AposSettingsManager.js +4 -4
  113. package/modules/@apostrophecms/submitted-draft/ui/apos/components/AposSubmittedDraftIcon.vue +5 -4
  114. package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +4 -4
  115. package/modules/@apostrophecms/ui/ui/apos/components/AposButtonGroup.vue +6 -6
  116. package/modules/@apostrophecms/ui/ui/apos/components/AposButtonSplit.vue +120 -113
  117. package/modules/@apostrophecms/ui/ui/apos/components/AposCheckbox.vue +19 -19
  118. package/modules/@apostrophecms/ui/ui/apos/components/AposCombo.vue +15 -15
  119. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenu.vue +216 -191
  120. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuDialog.vue +77 -65
  121. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuItem.vue +1 -1
  122. package/modules/@apostrophecms/ui/ui/apos/components/AposContextMenuTip.vue +28 -50
  123. package/modules/@apostrophecms/ui/ui/apos/components/AposFile.vue +5 -5
  124. package/modules/@apostrophecms/ui/ui/apos/components/AposFilterMenu.vue +4 -4
  125. package/modules/@apostrophecms/ui/ui/apos/components/AposMinMaxCount.vue +5 -5
  126. package/modules/@apostrophecms/ui/ui/apos/components/AposPager.vue +14 -8
  127. package/modules/@apostrophecms/ui/ui/apos/components/AposSlat.vue +2 -2
  128. package/modules/@apostrophecms/ui/ui/apos/components/AposSlatList.vue +53 -59
  129. package/modules/@apostrophecms/ui/ui/apos/components/AposSubformPreview.vue +2 -2
  130. package/modules/@apostrophecms/ui/ui/apos/components/AposTagApply.vue +40 -35
  131. package/modules/@apostrophecms/ui/ui/apos/components/AposToggle.vue +2 -2
  132. package/modules/@apostrophecms/ui/ui/apos/components/AposTree.vue +9 -11
  133. package/modules/@apostrophecms/ui/ui/apos/components/AposTreeHeader.vue +5 -3
  134. package/modules/@apostrophecms/ui/ui/apos/components/AposTreeRows.vue +129 -129
  135. package/modules/@apostrophecms/ui/ui/apos/composables/AposTheme.js +11 -0
  136. package/modules/@apostrophecms/ui/ui/apos/lib/click-outside-element.js +4 -4
  137. package/modules/@apostrophecms/ui/ui/apos/lib/i18next.js +56 -50
  138. package/modules/@apostrophecms/ui/ui/apos/lib/tooltip.js +191 -0
  139. package/modules/@apostrophecms/ui/ui/apos/lib/vue.js +19 -10
  140. package/modules/@apostrophecms/ui/ui/apos/mixins/AposAdvisoryLockMixin.js +1 -1
  141. package/modules/@apostrophecms/ui/ui/apos/scss/global/_tables.scss +1 -1
  142. package/modules/@apostrophecms/ui/ui/apos/scss/global/_tooltips.scss +6 -22
  143. package/modules/@apostrophecms/ui/ui/apos/scss/shared/_table-rows.scss +1 -1
  144. package/modules/@apostrophecms/widget-type/index.js +8 -2
  145. package/modules/@apostrophecms/widget-type/ui/apos/components/AposWidgetEditor.vue +26 -22
  146. package/modules/@apostrophecms/widget-type/ui/apos/mixins/AposWidgetMixin.js +4 -4
  147. package/package.json +31 -44
  148. package/test/schemas.js +10 -4
  149. package/modules/@apostrophecms/ui/ui/apos/lib/localized-v-tooltip.js +0 -63
  150. package/modules/@apostrophecms/ui/ui/apos/lib/tooltip-options.js +0 -13
@@ -13,7 +13,7 @@
13
13
  <template #additional>
14
14
  <AposMinMaxCount
15
15
  :field="field"
16
- :value="next"
16
+ :model-value="next"
17
17
  />
18
18
  </template>
19
19
  <template #body>
@@ -23,8 +23,8 @@
23
23
  class="apos-input-array-inline-empty"
24
24
  >
25
25
  <component
26
- v-if="field.whenEmpty.icon"
27
26
  :is="field.whenEmpty.icon"
27
+ v-if="field.whenEmpty.icon"
28
28
  :size="50"
29
29
  />
30
30
  <label
@@ -35,8 +35,8 @@
35
35
  </label>
36
36
  </div>
37
37
  <component
38
- v-if="items.length"
39
38
  :is="field.style === 'table' ? 'table' : 'div'"
39
+ v-if="items.length"
40
40
  :class="field.style === 'table' ? 'apos-input-array-inline-table' : 'apos-input-array-inline-standard'"
41
41
  >
42
42
  <thead
@@ -53,78 +53,81 @@
53
53
  <th />
54
54
  </thead>
55
55
  <draggable
56
+ :id="listId"
57
+ item-key="_id"
56
58
  class="apos-input-array-inline"
57
- :tag="field.style === 'table' ? 'tbody' : 'div'"
58
59
  role="list"
60
+ :options="dragOptions"
61
+ :tag="field.style === 'table' ? 'tbody' : 'div'"
59
62
  :list="items"
60
- v-bind="dragOptions"
61
- :id="listId"
63
+ @update="moveUpdate"
62
64
  >
63
- <AposSchema
64
- v-model="item.schemaInput"
65
- :meta="arrayMeta[item._id]?.aposMeta"
66
- v-for="(item, index) in items"
67
- class="apos-input-array-inline-item"
68
- :class="item.open && !alwaysExpand ? 'apos-input-array-inline-item--active' : null"
69
- :key="item._id"
70
- :schema="schema"
71
- :trigger-validation="triggerValidation"
72
- :generation="generation"
73
- :modifiers="['small', 'inverted']"
74
- :doc-id="docId"
75
- :following-values="getFollowingValues(item)"
76
- :conditional-fields="itemsConditionalFields[item._id]"
77
- :field-style="field.style"
78
- @input="setItemsConditionalFields(item._id)"
79
- @validate="emitValidate()"
80
- >
81
- <template #before>
82
- <component
83
- :is="field.style === 'table' ? 'td' : 'div'"
84
- class="apos-input-array-inline-item-controls"
85
- :style="(field.style === 'table' && field.columnStyle) || {}"
86
- >
87
- <AposIndicator
88
- v-if="field.draggable"
89
- icon="drag-icon"
90
- class="apos-drag-handle"
91
- />
92
- <AposButton
93
- v-if="field.style !== 'table' && item.open && !alwaysExpand"
94
- class="apos-input-array-inline-collapse"
95
- :icon-size="15"
96
- label="apostrophe:close"
97
- icon="unfold-less-horizontal-icon"
98
- type="subtle"
99
- :modifiers="['inline', 'no-motion']"
100
- :icon-only="true"
101
- @click="closeInlineItem(item._id)"
102
- />
103
- </component>
104
- <h3
105
- class="apos-input-array-inline-label"
106
- v-if="field.style !== 'table' && !item.open && !alwaysExpand"
107
- @click="openInlineItem(item._id)"
108
- >
109
- {{ getLabel(item._id, index) }}
110
- </h3>
111
- </template>
112
- <template #after>
113
- <component
114
- :is="field.style === 'table' ? 'td' : 'div'"
115
- class="apos-input-array-inline-item-controls--remove"
116
- >
117
- <AposButton
118
- label="apostrophe:removeItem"
119
- icon="close-icon"
120
- type="subtle"
121
- :modifiers="['inline','no-motion']"
122
- :icon-only="true"
123
- @click="remove(item._id)"
124
- />
125
- </component>
126
- </template>
127
- </AposSchema>
65
+ <template #item="{element: item, index}">
66
+ <AposSchema
67
+ :key="item._id"
68
+ v-model="item.schemaInput"
69
+ class="apos-input-array-inline-item"
70
+ :meta="arrayMeta[item._id]?.aposMeta"
71
+ :class="item.open && !alwaysExpand ? 'apos-input-array-inline-item--active' : null"
72
+ :schema="schema"
73
+ :trigger-validation="triggerValidation"
74
+ :generation="generation"
75
+ :modifiers="['small', 'inverted']"
76
+ :doc-id="docId"
77
+ :following-values="getFollowingValues(item)"
78
+ :conditional-fields="itemsConditionalFields[item._id]"
79
+ :field-style="field.style"
80
+ @update:model-value="setItemsConditionalFields(item._id)"
81
+ @validate="emitValidate()"
82
+ >
83
+ <template #before>
84
+ <component
85
+ :is="field.style === 'table' ? 'td' : 'div'"
86
+ class="apos-input-array-inline-item-controls"
87
+ :style="(field.style === 'table' && field.columnStyle) || {}"
88
+ >
89
+ <AposIndicator
90
+ v-if="field.draggable"
91
+ icon="drag-icon"
92
+ class="apos-drag-handle"
93
+ />
94
+ <AposButton
95
+ v-if="field.style !== 'table' && item.open && !alwaysExpand"
96
+ class="apos-input-array-inline-collapse"
97
+ :icon-size="15"
98
+ label="apostrophe:close"
99
+ icon="unfold-less-horizontal-icon"
100
+ type="subtle"
101
+ :modifiers="['inline', 'no-motion']"
102
+ :icon-only="true"
103
+ @click="closeInlineItem(item._id)"
104
+ />
105
+ </component>
106
+ <h3
107
+ v-if="field.style !== 'table' && !item.open && !alwaysExpand"
108
+ class="apos-input-array-inline-label"
109
+ @click="openInlineItem(item._id)"
110
+ >
111
+ {{ getLabel(item._id, index) }}
112
+ </h3>
113
+ </template>
114
+ <template #after>
115
+ <component
116
+ :is="field.style === 'table' ? 'td' : 'div'"
117
+ class="apos-input-array-inline-item-controls--remove"
118
+ >
119
+ <AposButton
120
+ label="apostrophe:removeItem"
121
+ icon="close-icon"
122
+ type="subtle"
123
+ :modifiers="['inline','no-motion']"
124
+ :icon-only="true"
125
+ @click="remove(item._id)"
126
+ />
127
+ </component>
128
+ </template>
129
+ </AposSchema>
130
+ </template>
128
131
  </draggable>
129
132
  </component>
130
133
  <AposButton
@@ -140,9 +143,9 @@
140
143
  <label class="apos-input-wrapper">
141
144
  <AposButton
142
145
  :label="editLabel"
143
- @click="edit"
144
146
  :disabled="field.readOnly"
145
147
  :tooltip="tooltip"
148
+ @click="edit"
146
149
  />
147
150
  </label>
148
151
  </div>
@@ -152,215 +155,16 @@
152
155
 
153
156
  <script>
154
157
  import AposInputArrayLogic from '../logic/AposInputArray';
158
+ import { Sortable } from 'sortablejs-vue3';
159
+
155
160
  export default {
156
161
  name: 'AposInputArray',
162
+ components: {
163
+ draggable: Sortable
164
+ },
157
165
  mixins: [ AposInputArrayLogic ]
158
166
  };
159
167
  </script>
160
- <style lang="scss" scoped>
161
- ::v-deep .apos-field--array.apos-field--error-duplicate {
162
- .apos-input {
163
- border-color: var(--a-base-8);
164
- }
165
- .apos-input:focus {
166
- box-shadow: 0 0 3px var(--a-base-8);
167
- }
168
- .apos-input-icon {
169
- color: var(--a-base-2);
170
- }
171
- .apos-input--error {
172
- border-color: var(--a-danger);
173
- }
174
- }
175
- ::v-deep .apos-input-relationship {
176
- .apos-slat__main {
177
- min-width: 130px;
178
- }
179
- }
180
- .apos-is-dragging {
181
- opacity: 0.5;
182
- background: var(--a-base-4);
183
- }
184
- .apos-input-array-inline-empty {
185
- display: flex;
186
- flex-direction: column;
187
- justify-content: center;
188
- align-items: center;
189
- margin-bottom: $spacing-base;
190
- padding: $spacing-triple 0;
191
- border: 1px solid var(--a-base-9);
192
- color: var(--a-base-8);
193
- }
194
- .apos-input-array-inline-empty-label {
195
- @include type-label;
196
- color: var(--a-base-3);
197
- }
198
-
199
- .apos-input-array-inline-table {
200
- @include type-label;
201
- position: relative;
202
- left: -35px;
203
- min-width: calc(100% + 35px);
204
- width: max-content;
205
- margin: 0 0 $spacing-base;
206
- border-collapse: collapse;
207
-
208
- th {
209
- padding-left: $spacing-base;
210
- padding-right: $spacing-base;
211
- height: 40px;
212
- border: 1px solid var(--a-base-9);
213
- text-align: left;
214
- background-color: var(--a-base-10);
215
- }
216
- .apos-table-cell--hidden {
217
- padding-left: 5px;
218
- border: none;
219
- cursor: pointer;
220
- background-color: transparent;
221
- }
222
-
223
- td, ::v-deep td {
224
- padding: $spacing-base;
225
- border: 1px solid var(--a-base-9);
226
- vertical-align: middle;
227
- text-align: center;
228
- transition: background-color 0.3s ease;
229
- background-color: var(--a-background-primary);
230
- }
231
- td.apos-input-array-inline-item-controls {
232
- width: 15px;
233
- min-width: 15px;
234
- border: none;
235
- background-color: transparent;
236
- }
237
- tr.apos-is-dragging, ::v-deep tr.apos-is-dragging {
238
- td, &:hover td {
239
- background: var(--a-base-4);
240
- }
241
- }
242
- tr:hover, ::v-deep tr:hover {
243
- td {
244
- background-color: var(--a-base-10);
245
- }
246
- td.apos-input-array-inline-item-controls {
247
- background-color: transparent;
248
- }
249
- }
250
-
251
- ::v-deep {
252
- .apos-field__info {
253
- padding-top: 0;
254
- }
255
- .apos-field__label {
256
- display: none;
257
- }
258
- .apos-input-wrapper {
259
- padding: 0 4px;
260
- }
261
- .apos-input--select {
262
- min-width: 130px;
263
- }
264
- .apos-input--relationship {
265
- width: 100%;
266
- min-width: 150px;
267
- }
268
- .apos-schema .apos-field.apos-field--small,
269
- .apos-schema .apos-field.apos-field--micro,
270
- .apos-schema .apos-field.apos-field--margin-micro {
271
- margin-bottom: 0;
272
- }
273
- .apos-search {
274
- z-index: calc(#{$z-index-widget-focused-controls} + 1);
275
- position: absolute;
276
- top: 35px;
277
- width: 100%;
278
- min-width: 350px;
279
- }
280
- .apos-slat-list .apos-slat,
281
- .apos-input-relationship__items {
282
- margin-top: 0;
283
- margin-bottom: 0;
284
- }
285
- .apos-input-relationship__input-wrapper :disabled {
286
- display: none;
287
- }
288
- .apos-field__error {
289
- position: absolute;
290
- bottom: 13px;
291
- left: $spacing-base;
292
- }
293
- .apos-field--relationship .apos-field__error {
294
- z-index: calc(#{$z-index-widget-focused-controls} + 1);
295
- }
296
- }
297
- }
298
-
299
- .apos-input-array-inline-standard {
300
- .apos-input-array-inline-collapse {
301
- position: absolute;
302
- top: $spacing-quadruple;
303
- left: $spacing-base;
304
- }
305
-
306
- ::v-deep .apos-schema {
307
- position: relative;
308
- display: grid;
309
- grid-template-columns: 35px auto 35px;
310
- gap: 5px;
311
- width: 100%;
312
- padding-bottom: $spacing-base;
313
- border-bottom: 1px solid var(--a-base-9);
314
- transition: background-color 0.3s ease;
315
- &:hover {
316
- background-color: var(--a-base-10);
317
- }
318
- .apos-field.apos-field--small,
319
- .apos-field.apos-field--micro,
320
- .apos-field.apos-field--margin-micro {
321
- margin-bottom: 0;
322
- }
323
-
324
- & > div {
325
- grid-column: 2;
326
- padding-top: $spacing-base;
327
- padding-bottom: $spacing-base;
328
- }
329
- &.apos-input-array-inline-item--active {
330
- background-color: var(--a-base-10);
331
- border-bottom: 1px solid var(--a-base-6);
332
- }
333
- &.apos-input-array-inline-item--active > div {
334
- display: block;
335
- }
336
- .apos-input-array-inline-label,
337
- .apos-input-array-inline-item-controls,
338
- .apos-input-array-inline-item-controls--remove {
339
- display: block;
340
- }
341
-
342
- .apos-input-array-inline-label {
343
- transition: background-color 0.3s ease;
344
- @include type-label;
345
- margin: 0;
346
- padding-top: $spacing-base;
347
- padding-bottom: $spacing-base;
348
- text-align: left;
349
- grid-column: 2;
350
- }
351
- .apos-input-array-inline-label:hover {
352
- cursor: pointer;
353
- }
354
168
 
355
- .apos-input-array-inline-item-controls {
356
- padding: $spacing-base;
357
- grid-column: 1;
358
- grid-row: 1;
359
- }
360
- .apos-input-array-inline-item-controls--remove {
361
- grid-column: 3;
362
- grid-row: 1;
363
- }
364
- }
365
- }
169
+ <style lang="scss" src="../scss/AposInputArray.scss" scoped>
366
170
  </style>
@@ -1,7 +1,9 @@
1
1
  <template>
2
2
  <AposInputWrapper
3
- :field="field" :error="effectiveError"
4
- :uid="uid" :modifiers="modifiers"
3
+ :field="field"
4
+ :error="effectiveError"
5
+ :uid="uid"
6
+ :modifiers="modifiers"
5
7
  :display-options="displayOptions"
6
8
  >
7
9
  <template #body>
@@ -1,38 +1,48 @@
1
1
  <template>
2
2
  <AposInputWrapper
3
- :modifiers="modifiers" :field="field"
4
- :error="effectiveError" :uid="uid"
3
+ :modifiers="modifiers"
4
+ :field="field"
5
+ :error="effectiveError"
6
+ :uid="uid"
5
7
  :display-options="displayOptions"
6
8
  >
7
9
  <template #body>
8
10
  <div :class="classList">
9
11
  <input
12
+ :id="`${uid}-true`"
13
+ ref="true"
10
14
  class="apos-sr-only apos-boolean__input apos-boolean__input--true"
11
- type="radio" :id="`${uid}-true`"
12
- :value="true" @change="setValue(true)"
13
- :checked="value.data === true"
15
+ type="radio"
16
+ :value="true"
17
+ :checked="modelValue.data === true"
14
18
  :disabled="field.readOnly"
15
- ref="true"
19
+ @change="setValue(true)"
16
20
  >
17
21
  <label :for="`${uid}-true`" class="apos-boolean__label apos-input">
18
22
  <circle-icon
19
- :size="12" class="apos-boolean__icon"
20
- title="" v-show="!field.toggle"
23
+ v-show="!field.toggle"
24
+ :size="12"
25
+ class="apos-boolean__icon"
26
+ title=""
21
27
  />
22
28
  {{ trueLabel || 'Yes' }}
23
29
  </label>
24
30
  <input
31
+ :id="`${uid}-false`"
32
+ ref="false"
25
33
  class="apos-sr-only apos-boolean__input apos-boolean__input--false"
26
- type="radio" :id="`${uid}-false`"
27
- :value="false" @change="setValue(false)"
28
- :checked="value.data === false"
34
+ type="radio"
35
+ :value="false"
36
+ :checked="modelValue.data === false"
29
37
  :disabled="field.readOnly"
30
- ref="false"
38
+ @change="setValue(false)"
31
39
  >
32
40
  <label :for="`${uid}-false`" class="apos-boolean__label apos-input">
33
41
  <circle-icon
34
- :size="12" class="apos-boolean__icon"
35
- title="" v-show="!field.toggle"
42
+ v-show="!field.toggle"
43
+ :size="12"
44
+ class="apos-boolean__icon"
45
+ title=""
36
46
  />
37
47
  {{ falseLabel || 'No' }}
38
48
  </label>
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <AposInputWrapper
3
- :field="field" :error="effectiveError"
3
+ :field="field"
4
+ :error="effectiveError"
4
5
  :uid="uid"
5
6
  :modifiers="modifiers"
6
7
  :display-options="displayOptions"
@@ -10,19 +11,19 @@
10
11
  v-if="field.style === 'combo' && choices.length"
11
12
  :choices="choices"
12
13
  :field="field"
13
- :value="value"
14
+ :model-value="modelValue"
14
15
  @select-items="selectItems"
15
16
  />
16
17
 
17
18
  <AposCheckbox
18
- v-else
19
- :for="getChoiceId(uid, choice.value)"
20
19
  v-for="choice in choices"
21
- :key="choice.value"
20
+ v-else
22
21
  :id="getChoiceId(uid, choice.value)"
22
+ :key="choice.value"
23
+ v-model="modelValue.data"
24
+ :for="getChoiceId(uid, choice.value)"
23
25
  :choice="choice"
24
26
  :field="field"
25
- v-model="value.data"
26
27
  />
27
28
  </template>
28
29
  </AposInputWrapper>
@@ -1,7 +1,9 @@
1
1
  <template>
2
2
  <AposInputWrapper
3
- :modifiers="modifiers" :field="field"
4
- :error="effectiveError" :uid="uid"
3
+ :modifiers="modifiers"
4
+ :field="field"
5
+ :error="effectiveError"
6
+ :uid="uid"
5
7
  :display-options="displayOptions"
6
8
  >
7
9
  <template #body>
@@ -9,17 +11,17 @@
9
11
  <div class="apos-color__ui">
10
12
  <AposContextMenu
11
13
  :button="buttonOptions"
12
- @open="open"
13
- @close="close"
14
14
  menu-placement="bottom-start"
15
15
  menu-offset="5, 20"
16
16
  :disabled="field.readOnly"
17
17
  :tooltip="tooltip"
18
+ @open="open"
19
+ @close="close"
18
20
  >
19
21
  <Picker
20
22
  v-bind="pickerOptions"
21
- :value="next"
22
- @input="update"
23
+ :model-value="next"
24
+ @update:model-value="update"
23
25
  />
24
26
  </AposContextMenu>
25
27
  </div>
@@ -27,7 +29,8 @@
27
29
  {{ valueLabel }}
28
30
  <AposButton
29
31
  v-if="next"
30
- type="quiet" label="apostrophe:clear"
32
+ type="quiet"
33
+ label="apostrophe:clear"
31
34
  class="apos-color__clear"
32
35
  :modifiers="['no-motion']"
33
36
  @click="clear"
@@ -12,16 +12,16 @@
12
12
  <div class="apos-input-object">
13
13
  <div class="apos-input-wrapper">
14
14
  <AposSchema
15
+ ref="schema"
15
16
  v-model="schemaInput"
16
17
  :meta="currentDocMeta"
17
- ref="schema"
18
18
  :schema="schema"
19
19
  :trigger-validation="triggerValidation"
20
20
  :generation="generation"
21
21
  :doc-id="docId"
22
22
  :conditional-fields="conditionalFields"
23
23
  :following-values="followingValuesWithParent"
24
- @input="evaluateConditions(values)"
24
+ @update:model-value="evaluateConditions(values)"
25
25
  @validate="emitValidate()"
26
26
  />
27
27
  </div>
@@ -45,7 +45,7 @@ export default {
45
45
  .apos-input-wrapper {
46
46
  margin: 20px 0 0 19px;
47
47
  }
48
- .apos-input-object ::v-deep .apos-schema .apos-field {
48
+ .apos-input-object :deep(.apos-schema .apos-field) {
49
49
  margin-bottom: 30px;
50
50
  }
51
51
  </style>
@@ -1,22 +1,23 @@
1
1
  <template>
2
2
  <AposInputWrapper
3
- :field="field" :error="effectiveError"
3
+ :field="field"
4
+ :error="effectiveError"
4
5
  :uid="uid"
5
6
  :display-options="displayOptions"
6
7
  :modifiers="modifiers"
7
8
  >
8
9
  <template #body>
9
10
  <label
10
- class="apos-choice-label"
11
11
  v-for="{label, value, tooltip} in choices"
12
12
  :key="value"
13
+ class="apos-choice-label"
13
14
  :for="getChoiceId(uid, value)"
14
15
  :class="{'apos-choice-label--disabled': field.readOnly}"
15
16
  >
16
17
  <input
18
+ :id="getChoiceId(uid, value)"
17
19
  type="radio"
18
20
  class="apos-sr-only apos-input--choice apos-input--radio"
19
- :id="getChoiceId(uid, value)"
20
21
  :value="JSON.stringify(value)"
21
22
  :name="field.name"
22
23
  :checked="next === value"
@@ -26,8 +27,8 @@
26
27
  >
27
28
  <span class="apos-input-indicator" aria-hidden="true">
28
29
  <component
29
- v-if="next === value"
30
30
  :is="`${next === value ? 'check-bold-icon' : 'span'}`"
31
+ v-if="next === value"
31
32
  :size="8"
32
33
  />
33
34
  </span>