Skip to content

Commit ca3a204

Browse files
committed
pkp/pkp-lib#9295 optimise FieldIssueSelection component
1 parent a841595 commit ca3a204

File tree

2 files changed

+16
-40
lines changed

2 files changed

+16
-40
lines changed

src/components/Form/fields/FieldIssueSelection.vue

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,11 @@ const showIssueDropdown = computed(() => {
184184
return option?.isPublished !== null;
185185
});
186186
187-
// TODO : need it ?
188-
// dynamic isRequired based on selection and props.isRequired
187+
// dynamic isRequired based on selection and `props.isRequired`
189188
const isIssueSelectionRequired = computed(() => {
190-
// Only require issue selection if:
191-
// 1. The field is marked as required (from PHP or JS)
192-
// 2. AND the selected assignment type actually requires an issue (isPublished !== null)
189+
// we are only going to require issue selection if:
190+
// 1. The field is marked as required (from PHP or JS)
191+
// 2. AND the selected assignment type actually requires an issue (isPublished !== null)
193192
const selectedOption = assignmentOptions.value.find(
194193
(opt) => opt.value === selectedAssignmentType.value,
195194
);
@@ -204,8 +203,6 @@ const shouldFetchPublishedIssues = computed(() => {
204203
return option?.isPublished;
205204
});
206205
207-
// TODO : need this ?
208-
// better validation logic
209206
const isValid = computed(() => {
210207
// If no assignment type selected, not valid
211208
if (!selectedAssignmentType.value) {
@@ -232,18 +229,13 @@ const publicationStatus = computed(() => {
232229
return option?.status || null;
233230
});
234231
235-
// TODO : need this ?
236232
// validation error messages
237233
const validationErrors = computed(() => {
238234
if (!isValid.value) {
239235
// If assignment type requires issue but none selected
240236
if (isIssueSelectionRequired.value && !selectedIssueId.value) {
241237
return [t('publication.assignToIssue.validation.issueRequired')];
242238
}
243-
// If no assignment type selected
244-
if (!selectedAssignmentType.value) {
245-
return [t('publication.assignToIssue.validation.assignmentRequired')];
246-
}
247239
}
248240
return [];
249241
});
@@ -258,16 +250,6 @@ watch(
258250
{immediate: true},
259251
);
260252
261-
// Watch for assignment type changes to update validation
262-
watch(
263-
selectedAssignmentType,
264-
() => {
265-
// Trigger validation update when assignment type changes
266-
// This ensures validationErrors computed property updates
267-
},
268-
{immediate: true},
269-
);
270-
271253
const describedByErrorId = computed(() => {
272254
return `${props.formId || 'form'}-${props.name}-error`;
273255
});
@@ -292,7 +274,7 @@ const onIssueChange = (fieldName, propName, newValue) => {
292274
const emitValue = () => {
293275
if (props.isPhpForm) {
294276
if (assignmentOptions.value.length > 0) {
295-
emit('change', 'issueId', 'value', selectedIssueId.value);
277+
emit('change', props.name, 'value', selectedIssueId.value);
296278
emit('change', 'status', 'value', publicationStatus.value);
297279
}
298280
} else {
@@ -388,7 +370,7 @@ watch(
388370
389371
emitValue(); // emit the value change
390372
},
391-
{immediate: false}, // not run immediately since we handle it in onMounted
373+
{immediate: false}, // not run immediately since it's been handled in onMounted
392374
);
393375
394376
// emit initial required state
@@ -436,12 +418,13 @@ onMounted(async () => {
436418
.pkpFormGroup--issueSelection {
437419
border: 1px solid #ddd;
438420
border-radius: 2px;
421+
padding-left: 0rem;
422+
padding-right: 0rem;
439423
440424
.pkpFormGroup__heading {
441-
border-bottom: 1px solid #ddd;
425+
border-bottom: 0.1rem solid #ddd;
442426
margin: -2rem 0rem 2rem 0rem;
443-
padding: 1.5rem 0rem 2rem 0rem;
444-
border-radius: 4px 4px 0 0;
427+
padding: 1.5rem 2rem 2rem 2rem;
445428
float: none;
446429
width: 100%;
447430
padding-inline-end: 2rem;
@@ -451,6 +434,8 @@ onMounted(async () => {
451434
float: none;
452435
width: 100%;
453436
padding-inline-start: 0;
437+
padding-left: 2rem !important;
438+
padding-right: 2rem !important;
454439
455440
> * + * {
456441
margin-top: 1.5rem;

src/pages/workflow/composables/useWorkflowVersionForm.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ export function useWorkflowVersionForm(
122122
return {
123123
data: null,
124124
validationError: {
125-
issueId: [t('publication.assignToIssue.validation.incomplete')],
125+
issueId: [
126+
t('publication.assignToIssue.validation.issueRequired'),
127+
],
126128
},
127129
};
128130
}
@@ -276,15 +278,7 @@ export function useWorkflowVersionForm(
276278
cancelButton: {label: t('common.cancel')},
277279
});
278280

279-
addGroup(
280-
'default',
281-
// FIXME: adding group breaking the page layout
282-
// {
283-
// pageId: 'default',
284-
// label: t('publication.scheduledForPublication.versionStage.label'),
285-
// description: t('publication.scheduledForPublication.versionStage.description'),
286-
// }
287-
);
281+
addGroup('default');
288282

289283
onMounted(() => {
290284
latestPublication = getLatestPublication(store.submission);
@@ -296,7 +290,6 @@ export function useWorkflowVersionForm(
296290
label: t('publication.sendToTextEditor.label'),
297291
options: buildPublicationOptions({withCreateOption: true}),
298292
size: 'large',
299-
// groupId: 'default', // FIXME: adding group breaking the page layout
300293
isRequired: modeState.isTextEditorMode,
301294
showWhen: !modeState.isTextEditorMode ? [] : undefined,
302295
});
@@ -308,7 +301,6 @@ export function useWorkflowVersionForm(
308301
description: t('publication.versionSource.create.description'),
309302
options: buildPublicationOptions(),
310303
size: 'large',
311-
// groupId: 'default', // FIXME: adding group breaking the page layout
312304
showWhen: !modeState.isCreateMode
313305
? ['sendToVersion', 'create']
314306
: undefined,
@@ -322,7 +314,6 @@ export function useWorkflowVersionForm(
322314
options: store.versionStageOptions,
323315
size: 'large',
324316
value: store.selectedPublication?.versionStage || null,
325-
// groupId: 'default', // FIXME: adding group breaking the page layout
326317
isRequired: modeState.isPublishMode,
327318
showWhen: modeState.isTextEditorMode
328319
? ['sendToVersion', getUnassignedVersions()]

0 commit comments

Comments
 (0)