apostrophe 4.27.0 → 4.27.1-alpha.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.27.1-alpha.1
4
+
5
+ ### Patch Changes
6
+
7
+ ### Fixes
8
+
9
+ - Relationship field: fixes two conditions where slow internet speed could cause input to lose focus before a selection can be registered. Thanks to Gysho for the report and the fix.
10
+
3
11
  ## 4.27.0 (2026-02-18)
4
12
 
5
13
  ### Adds
@@ -28,7 +28,7 @@
28
28
  v-apos-tooltip="getTooltip(item)"
29
29
  aria-selected="false"
30
30
  :class="getClasses(item, index)"
31
- @click="select(item)"
31
+ @pointerdown.prevent="select(item)"
32
32
  >
33
33
  <div
34
34
  v-if="item?.attachment?._urls?.['one-sixth']"
@@ -37,6 +37,7 @@ export default {
37
37
  subfields,
38
38
  disabled: false,
39
39
  searching: false,
40
+ searchRequestId: 0,
40
41
  choosing: false,
41
42
  relationshipSchema: null
42
43
  };
@@ -176,6 +177,7 @@ export default {
176
177
  );
177
178
  },
178
179
  async search(qs) {
180
+ const requestId = ++this.searchRequestId;
179
181
  const action = apos.modules[this.field.withType].action;
180
182
  const isPage = apos.modules['@apostrophecms/page'].validPageTypes
181
183
  .includes(this.field.withType);
@@ -200,6 +202,10 @@ export default {
200
202
  qs
201
203
  });
202
204
 
205
+ if (requestId !== this.searchRequestId) {
206
+ return;
207
+ }
208
+
203
209
  const removeSelectedItem = item => !this.next.map(i => i._id).includes(item._id);
204
210
  const formatItems = item => ({
205
211
  ...item,
@@ -216,10 +222,6 @@ export default {
216
222
  this.searching = false;
217
223
  },
218
224
  async input () {
219
- if (this.searching) {
220
- return;
221
- }
222
-
223
225
  const trimmed = this.searchTerm.trim();
224
226
  const qs = trimmed.length
225
227
  ? {
@@ -69,6 +69,9 @@ export default {
69
69
  emits: [ 'select' ],
70
70
  methods: {
71
71
  select(item) {
72
+ if (item.disabled) {
73
+ return;
74
+ }
72
75
  const selectedItems = this.selectedItems;
73
76
  if (!selectedItems.some(selectedItem => selectedItem._id === item._id)) {
74
77
  // Never modify a prop
@@ -21,7 +21,7 @@
21
21
  v-for="checked in selectedItems"
22
22
  :key="objectValues ? checked.value : checked"
23
23
  class="apos-combo__selected"
24
- @click.stop="selectOption(getSelectedOption(checked))"
24
+ @pointerdown.stop.prevent="selectOption(getSelectedOption(checked))"
25
25
  >
26
26
  {{ getSelectedOption(checked)?.label }}
27
27
  <AposIndicator
@@ -74,7 +74,7 @@
74
74
  class="apos-combo__list-item"
75
75
  role="menuitemcheckbox"
76
76
  :class="{focused: focusedItemIndex === i}"
77
- @click.stop="selectOption(choice)"
77
+ @pointerdown.stop.prevent="selectOption(choice)"
78
78
  @mouseover="focusedItemIndex = i"
79
79
  >
80
80
  <AposIndicator
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apostrophe",
3
- "version": "4.27.0",
3
+ "version": "4.27.1-alpha.1",
4
4
  "description": "The Apostrophe Content Management System.",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -121,9 +121,9 @@
121
121
  "xregexp": "^2.0.0",
122
122
  "@apostrophecms/emulate-mongo-3-driver": "^1.0.6",
123
123
  "broadband": "^1.1.0",
124
- "boring": "^1.1.1",
125
124
  "express-cache-on-demand": "^1.0.4",
126
125
  "postcss-viewport-to-container-toggle": "^2.2.0",
126
+ "boring": "^1.1.1",
127
127
  "sanitize-html": "^2.17.0"
128
128
  },
129
129
  "devDependencies": {
@@ -132,8 +132,8 @@
132
132
  "mocha": "^11.7.1",
133
133
  "nyc": "^17.1.0",
134
134
  "stylelint": "^16.5.0",
135
- "eslint-config-apostrophe": "^6.0.2",
136
- "stylelint-config-apostrophe": "^4.4.0"
135
+ "stylelint-config-apostrophe": "^4.4.0",
136
+ "eslint-config-apostrophe": "^6.0.2"
137
137
  },
138
138
  "browserslist": [
139
139
  "ie >= 10"