Skip to content

Commit

Permalink
[SDBELGA-785] Improve: Support sorting of the Calendar field (#1984)
Browse files Browse the repository at this point in the history
* [SDBELGA-785] Improve: Support sorting of the Calendar field

* fix e2e
  • Loading branch information
MarkLark86 authored May 13, 2024
1 parent 4c52b17 commit c3c4197
Show file tree
Hide file tree
Showing 12 changed files with 1,027 additions and 3,976 deletions.
1 change: 1 addition & 0 deletions client/components/ContentProfiles/FieldTab/FieldEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ export class FieldEditor extends React.Component<IProps, IState> {
item: this.props.item,
onChange: this.onChange,
errors: this.state.errors,
showErrors: true,
},
fieldProps
)}
Expand Down
38 changes: 0 additions & 38 deletions client/components/fields/editor/Calendars.tsx

This file was deleted.

8 changes: 6 additions & 2 deletions client/components/fields/editor/base/treeSelect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface IEditorFieldTreeSelectProps<T = any> extends IEditorFieldProps
allowMultiple?: boolean;
valueAsString?: boolean;
smallPadding?: boolean;
sortable?: boolean;
}

export class EditorFieldTreeSelect<T> extends React.PureComponent<IEditorFieldTreeSelectProps<T>> {
Expand Down Expand Up @@ -45,7 +46,9 @@ export class EditorFieldTreeSelect<T> extends React.PureComponent<IEditorFieldTr
let viewValues;
const options = this.props.getOptions();

if (!Array.isArray(values)) {
if (values == null) {
values = [];
} else if (!Array.isArray(values)) {
values = [values];
}

Expand Down Expand Up @@ -75,14 +78,15 @@ export class EditorFieldTreeSelect<T> extends React.PureComponent<IEditorFieldTr
onChange={this.onChange}
allowMultiple={this.props.allowMultiple}
invalid={error?.length > 0 || this.props.invalid}
error={error}
error={this.props.showErrors ? error : undefined}
readOnly={this.props.disabled}
disabled={this.props.disabled}
required={this.props.required}
label={this.props.label}
tabindex={0}
info={this.props.info}
zIndex={1051}
sortable={this.props.sortable}
/>
</Row>
);
Expand Down
2 changes: 0 additions & 2 deletions client/components/fields/editor/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import {EditorFieldFullText} from './FullText';
import {EditorFieldLanguage} from './Language';
import {EditorFieldIncludeKilled} from './IncludeKilled';
import {EditorFieldLockState} from './LockState';
import {EditorFieldCalendars} from './Calendars';
import {EditorFieldAgendas} from './Agendas';
import {EditorFieldNoCalendarAssigned} from './NoCalendarAssigned';
import {EditorFieldExcludeRescheduledAndCancelled} from './ExcludeRescheduledAndCancelled';
Expand Down Expand Up @@ -101,7 +100,6 @@ export const FIELD_TO_EDITOR_COMPONENT = {
language: EditorFieldLanguage,
include_killed: EditorFieldIncludeKilled,
lock_state: EditorFieldLockState,
calendars: EditorFieldCalendars,
agendas: EditorFieldAgendas,
no_calendar_assigned: EditorFieldNoCalendarAssigned,
exclude_rescheduled_and_cancelled: EditorFieldExcludeRescheduledAndCancelled,
Expand Down
33 changes: 33 additions & 0 deletions client/components/fields/resources/events.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import {registerEditorField} from './registerEditorFields';

import {ICalendar} from '../../../interfaces';
import {superdeskApi} from '../../../superdeskApi';

import {getVocabularyItemNameFromString} from '../../../utils/vocabularies';
import {enabledCalendars} from '../../../selectors/events';

import {EditorFieldMultilingualText} from '../editor/base/multilingualText';
import {EditorFieldDateTime} from '../editor/base/dateTime';
import {EditorFieldEventLinks} from '../editor/EventLinks';
import {EditorFieldEventRelatedItems} from '../editor/EventRelatedArticles/EditorFieldEventRelatedItems';
import {EditorFieldTreeSelect, IEditorFieldTreeSelectProps} from '../editor/base/treeSelect';

registerEditorField(
'definition_long',
Expand Down Expand Up @@ -107,3 +112,31 @@ registerEditorField(
null,
false,
);

registerEditorField<IEditorFieldTreeSelectProps, {calendars: Array<ICalendar>}>(
'calendars',
EditorFieldTreeSelect,
(props) => ({
field: 'calendars',
label: superdeskApi.localization.gettext('Calendars'),
required: props.required ?? props.schema?.required,
allowMultiple: true,
sortable: true,
getOptions: () => props.calendars.map((calendar) => ({value: calendar})),
getId: (item: ICalendar) => item.qcode,
getLabel: (item: ICalendar) => (
getVocabularyItemNameFromString(
item.qcode,
props.calendars,
'qcode',
'name',
props.language,
)
),

}),
(state) => ({
calendars: enabledCalendars(state),
}),
false
);
Loading

0 comments on commit c3c4197

Please sign in to comment.