This file describes API changes in /client/component/mod_perform,
information provided here is intended especially for developers.

=== 19.1.0 ===
* Added accessibility fixes on dropdown button's aria-expanded in ActivityActions.vue, PerformAdminCustomElement.vue, ActivitySection.vue, RowActions.vue, Actions.vue, ManageActivity.vue
  * Template changes

=== 19.0 ===
* In ViewOnlyUserActivity.vue switched fetching data to GraphQL query subject_instance_for_participant_view_only which omits the
  'static_instances' property because it is not needed and caused permission issues due to included user objects. Accordingly, this
  property is not passed on to ActivityContent.vue anymore. Instead, an empty array is passed on for this property.
* The deprecated components ElementActions.vue, ExportRowAction.vue, SubjectInstanceActions.vue, and SubjectUserActions.vue have
  been removed.
* Replaced the filter bar used on Activities.vue & ActivitiesFilter.vue  with the new filterBarArea component.
    The 'Your progress' filter has been changed from a select list to a multi select checkbox and it's value has been changed to an array.
    The hasOverdue and hasCompleted toggle filters have also been removed as they are now supported in the multiselect filter instead.
    * Template, JS and SCSS changes
* Included a new multi select filter 'activityProgress' to ActivitiesFilter.vue, activeFilterCount value in Activities.vue has now been replaced with hasActiveFilters
    * Template and JS changes
* Updated ManageActivity.vue page to include a new tab for visibility and closure settings and renamed instance creation tab
    * Template & JS changes
* Updated Schedule.vue component to handle calling closure mutation directly when due date is being turned off and currently used for close on due date condition
    * JS changes
* Replaced ActivateActivityModal.vue component prop 'activity' with 'activityId' & 'activityName' allowing for the more specific controls query to provide the necessary data,
  provided props for this component have been replaced in both ManageActivity.vue & ActivityActions.vue
    * JS changes
* Updated the UI of ManageActivity.vue, the title, state and type and activate button are now grouped and the description has also been included above the tabs.
  A new query has also been included for specifically providing the basic activity information.
    * Template, JS & SCSS changes
* GeneralInfoTab.vue & ActivityStatusBanner.vue components are now deprecated
* Updated ManageActivity.vue page to replace the existing manage performance activities AssignmentsTab.vue component with manage_activity/tabs/AssignmentsTab.vue,
  each setting now has it's own standalone component. The new setting components are settings/SyncParticipation.vue, settings/Assignment.vue & settings/ParticipantSelectionRole.vue
    * Template, JS & SCSS changes
* manage_activity/assignment/AssignmentsTab.vue, manage_activity/assignment/ParticipantSelection.vue & ManageRelationshipParticipation.vue components are now deprecated
* Updated the section saving UI for participant activities, the submit button now reflects the action based on the activity configuration and the close button was removed
    * Template, JS & SCSS changes
* Updated ActivityContent.vue UI to include the side panel on single section activities
    * Template & JS changes
* Updated AdminActivityFilters and ActivitiesCount to use core SortBar (template and SCSS changes)
* Updated ActivitySection.vue adding a new 'merge all sections' option to action menu on first section. The component now accepts 'firstSection' & 'settings' props
    * Template & JS changes
* Updated ActivitySectionTab.vue & ActivitySection.vue removing support for 'autosave' functionality and UI, this aligns the single and multi section admin UI's
* Updated LayoutOneColumnSidePanelActivities.vue to support a new slot for adding actions below the side section content
    * Template change
* Updated ActivityContent.vue adding support for activity manual close functionality
    * Template, JS & SCSS changes
* Updated ActivityContent.vue, submitting the final section no longer redirects back to the activities landing page
    * JS changes
* Updated LayoutOneColumnSidePanelActivities.vue, adjusting the breakpoints to accommodate the side navigation layout
    * SCSS changes
* Updated ProgressTrackerButton.vue, adding support for showing which sections have required questions
    * Template, JS & SCSS changes
* ActivityMultipleSectionToggle.vue is now deprecated
* Updated ActivityContentTab.vue removing the multiple section toggle and instead handling it with the add and remove section actions
    * Template & JS changes
* Updated ParticipantsPopover.vue to use an h4 instead of a h1
* Updated JobAssignmentInformation.vue component prop 'assignment' with 'assignment.job_assignment' to include the 'assignment.former_manager' flag field

=== 18.0 ===
* Added ProgressTrackerNav to Sections.vue and moved content into new component SectionsContent.vue
    * Template, JS & SCSS changes
* Added a fixed height of 80vh to SectionsModal.vue
    * SCSS changes
* Updated ParticipantSelection.vue layout, it is now wrapped in a standardised UI block
    * Template & SCSS changes
* Updated ManageRelationshipParticipation.vue it is now wrapped in a standardised UI block
    * the global settings are now also represented by the UI when the overwrite setting is not enabled
        * Template changes
* AssignmentsTab.vue has had an additional heading added and spacing adjusted between elements
    * Template & SCSS changes
* Updated AssignmentScheduleDueDate.vue & AssignmentScheduleJobAssignment.vue to use a standardised component for their UI to help with consistency
    * Template & SCSS changes
* Updated the margin on WorkflowSettings.vue component to be consistent with the "Content" settings
    * SCSS changes
* Added separate loading states for the two toggles in the WorkflowSettings.vue component
    * Template & JS changes
* Updated UserActivitiesPriority.vue to filter out closed subject instances
    * JS changes
* Added userActivitiesUrl as a required prop in ActivityContentPrint.vue to allow for a back button on the print view
    * Template, JS and SCSS changes
* Included a 'closed' lozenge  on ActivitiesTableItem.vue to clearly show when overall activity status is closed
    * Template, JS and SCSS changes
* Updated the overdue conditions on ActivitiesTableItem.vue to only show overdue when the overall activity is not closed and when that users instance is still respondable
    * Template and JS
* Updated ActivityContent.vue to scroll the next section into view after submitting a section
    * Template, JS changes
* Updated ActivityContentPrint.vue section item content to retain the exact colours when printing
    * SCSS changes

=== 17.0 ===
* Replaced the SidePanelNav component in ActivityContent.vue with ProgressTrackerNav
    * Template changes
* Added states, description and availability_string data to the sections in ActivityContent.vue and added a heading to the side panel
    * Template, JS and SCSS changes
* Updated LayoutOneColumnSidePanelActivities to align with design for new ProgressTrackerNav on multisection activities
    * Template, JS and SCSS changes
* Replaced the reporting element response action components with the standardised component RowActions.vue
    * The following components are now deprecated
        * ElementActions.vue, ExportRowAction.vue, SubjectInstanceActions.vue, SubjectUserActions.vue
* Updated ExportActionCard.vue to support additional download formats selectable from a dropdown
    * Template, JS and SCSS changes
* Moved mod_perform/src/js/redirect.js to tui/src/js/dom/form.js, any existing reference will need their paths updated
  In components replace 'mod_perform/redirect' with 'tui/dom/form
    * JS changes
* Updated Activities.vue moving the print button from the expanded table view into the table content
    * Template and JS changes
* Moved the expandable row content from Activities.vue into a modal and move the logic into it's own component SectionsModal.vue
    * Template, JS and SCSS changes
* Updated the UI of the Activities.vue datatable and moved it content into its own component ActivitiesTableItem.vue
    * Template, JS and SCSS changes

=== 16.0 ===
* Extended the performance activity manage participant view Actions.vue to allow deletion of subject and participant instances
    * Template, JS changes
* Updated ActivityActions.vue to display warnings returned by GraphQL query mod_perform_activity_deletion_validation
  for the deletion confirmation modal.
* Updated the manage activity assignments tab, splitting the assignments based on type (Audience, Org, Pos)
    * Template, JS & SCSS changes
* Extended the manage activity assignments tab to support individuals and refactored AssignmentsTab.vue to reduce duplicated code between different group types
    * Template, JS changes
* Updated ActivitiesPriorityCard
    * SCSS changes
    * Deprecated function truncateString
* Updated UserActivities.vue & Activities.vue to retain the current filter states in the URL
    * Template, JS changes
* The manual participant selector role section (originally in the GeneralInfoTab.vue) has been put in its own component
  (ParticipantSelection.vue) and moved to the assignments tab (AssignmentsTab.vue).
* Moved the performance activity schedule settings & it's supporting methods from AssignmentsTab.vue to a new component called InstanceCreationTab.vue
    * Template & JS changes
* Amended content spacing on the manage performance activities tabs
    * Template & SCSS changes
* Added success notification toasts for all toggle mutations on NotificationsTab.vue
    * JS changes
* Moved the actions buttons in Actions.vue into a dropdown
    * Template changes
* Added information notification on ActivitySection.vue when trying to view section elements without responding participants
    * Template & JS changes
* Removed AssignmentScheduleAdditionalSettings.vue replacing it with AssignmentScheduleJobAssignment.vue which provides a new UI
  for Job assignment-based instances. This new component has been included in Schedule.vue
    * Template, JS & SCSS changes
* Reworked AssignmentScheduleDueDate.vue to update the UI and to be more self contained. The component now controls it's own enable/disable state
  and error validations which were previously in Schedule.vue and AssignmentScheduleToggles.vue
* Updated AssignmentScheduleFrequencySettings.vue with a new UI to support different trigger types when setting the frequency schedule
    * Template, JS & SCSS changes
* Updated the UI of ManualParticipantsSelectionBanner.vue and change the spacing in UserActivities.vue
    * Template & SCSS changes
* Deprecated these in constants.js; replaced by the SCHEDULE_REPEATING_TRIGGER constants
    * SCHEDULE_REPEATING_TYPE_AFTER_CREATION
    * SCHEDULE_REPEATING_TYPE_AFTER_CREATION_WHEN_COMPLETE
    * SCHEDULE_REPEATING_TYPE_AFTER_COMPLETION
* Reworked Schedule.vue:
    * The returned repeating_type value from the graphql is no longer used; instead the code works with the new repeating_trigger_type
      and repeating_trigger_interval values.

=== 15.0 ===
* Heavily reworked the structure of Activities.vue page
    * Table heading language strings have been modified
    * The datatable structure and content has been changed.
    * Existing filters have been modified and additional ones have been added
    * Show more pagination has been replaced with the paging component
    * SCSS changes to existing classes
    * Users roles have been separated out into their own tabs and activities with multiple roles are now treated independently based on the tab they appear in.

=== 14.0 ===
* Updated the template structure of ActivityContentPrint.vue to add new icons, add new pieces of information, and improve element spacing and font sizes
    * Template, SCSS & lang string changes
* Updated Activities.vue page for filtering and pagination.
    * Template
* HtmlResponseDisplay.vue now supports rendering Weka HTML responses
* Updated Activities.vue page for filtering and pagination.
    * Template
* HtmlResponseDisplay.vue now supports rendering Weka HTML responses
* Added new property validation-mode to PerformAdminCustomElementEdit.vue.
* Added DeletionValidationModal to following pages
    * ActivityActions.vue
    * ActivitySection.vue
    * SectionContent.vue
* For participant view, the sub-plugin elements now handle switching components for different states instead of this
  being controlled by ActivityContent.vue & ActivityContentPrint.vue
* Added a new component ElementParticipantResponseHeader.vue for display participant element titles removing previously duplicated implementations
* Removed ElementParticipantForm.vue, this is now controlled by the sub-plugins and has been replaced with ElementParticipantFormContent.vue
* HtmlResponseDisplay.vue data prop is now an Array instead of a string
* ResponseDisplay.vue responseLines prop has been renamed to 'data' for consistency
* QuestionElementPreviewModal.vue has switched to using the admin preview components instead of the participant form components
* The SectionContent.vue filters available elements that can be added at the top level by the element plugin's element_usage.can_be_top_level_element property.

=== 13.2 ===
* Reworked several components to centralise common functionality improving consistency and reducing duplication
    * Added a new wrapper component for all custom elements
        * PerformAdminCustomElement.vue
    * Added a new wrapper component for edit forms of custom elements
        * PerformAdminCustomElementEdit.vue
    * Removed the following
        * ElementAdminDisplay.vue
        * ElementAdminForm.vue
        * admin_form/ActionButtons.vue
        * admin_form/AdminFormMixin.js
    * Replaced the following
        * ElementAdminReadOnlyDisplay.vue with PerformAdminCustomElementSummary.vue
    * Updated the template structure of ActivityContent.vue and ActivityContentPrint.vue to drive view only responses off new generic
      view only response components (ResponseDisplay.vue and HtmlResponseDisplay.vue), removed unused css classes. Also refactored
      the existing layout approach and standardised the page margins with other Tui pages.
        * Template & SCSS changes
    * Updated the template structure of ActivityContentPrint.vue to add new icons, add new pieces of information, and improve element spacing and font sizes
        * Template, SCSS changes & lang string changes
* Deprecated the method createNotificationIfNotExists() from NotificationsTab.vue as notifications now always exist.
  See server/mod/perform/upgrade.txt for more detail.
* Updated manageActivity.vue page to be using a core layout
    * Template & SCSS changes
* Updated UserActivitiesSelectParticipants.vue page to be using a core layout
    * Template & SCSS changes
* Updated template structure of GeneralInfoTab.vue component to be more consistent with theme
    * Template, SCSS & lang string changes
* Updated template structure of WorkflowSettings.vue component to address alignment issues
    * Template, SCSS changes
* Updated SCSS of NotificationsTab.vue to address alignment issues
    * SCSS changes
* Update template structure of ActivityContentPrint.vue including updating class names to be more consistent with conventions
    * Template, SCSS changes
* Updated Sections.vue to remove css referenced in another component; ".tui-performUserActivityList__expandedRow-dateSummary" referenced in Activities.vue
    * SCSS changes
* Updated Activities.vue to fix print button position and size
    * Template and SCSS changes
* Moved editing of activity content elements (formerly on a sheet modal) to a separate page
    * Removed components/manage_activity/content/EditSectionContentModal.vue
    * Added pages/SectionContent.vue
* Updated Activities.vue page to be using a core layout, and added support for filtering and pagination.
    * Template & SCSS changes
* Updated Activities.vue page to support filtering and pagination of activities.
* Moved the activity_types apollo query from CreateActivityForm.vue into Activities.vue
* Updated CreateActivityForm.vue to use Uniform form library
    * Template changes
* HtmlResponseDisplay.vue now supports rendering Weka HTML responses
