documentationPartMixin.js 1.92 KiB
/**
* Mixin to provide common fields for all components specific to a singular documentation inside the coursebook
*/
export default {
props: {
/**
* The documentation in question
*/
documentation: {
type: Object,
required: true,
},
/**
* The query used by the coursebook. Used to update the store when data changes.
*/
affectedQuery: {
type: Object,
required: true,
},
/**
* Whether the documentation is currently in the compact mode (meaning coursebook row)
*/
compact: {
type: Boolean,
required: false,
default: false,
},
/**
* Activator attributes and event listeners to open documentation dialog in different places
*/
dialogActivator: {
type: Object,
required: false,
default: () => ({ attrs: {}, on: {} }),
},
/**
* Once loaded list of all extra marks to avoid excessive network and database queries
*/
extraMarks: {
type: Array,
required: true,
},
/**
* Once loaded list of absence reasons to avoid excessive network and database queries
*/
absenceReasons: {
type: Array,
required: true,
},
/**
* Once loaded list of subjects to avoid excessive network and database queries
*/
subjects: {
type: Array,
required: true,
},
},
computed: {
/**
* All necessary props bundled together to easily pass to child components
* @returns {{compact: Boolean, documentation: Object, dialogActivator: Object<{attrs: Object, on: Object}>}}
*/
documentationPartProps() {
return {
documentation: this.documentation,
compact: this.compact,
dialogActivator: this.dialogActivator,
affectedQuery: this.affectedQuery,
extraMarks: this.extraMarks,
absenceReasons: this.absenceReasons,
subjects: this.subjects,
};
},
},
};