diff --git a/packages/experiments-realm/crm-app.gts b/packages/experiments-realm/crm-app.gts index 3419fb1ba1..600a7f110b 100644 --- a/packages/experiments-realm/crm-app.gts +++ b/packages/experiments-realm/crm-app.gts @@ -83,6 +83,29 @@ const sortByPriority: (direction: TaskSortOrder) => Sort = ( }, ]; +const TASK_SORT_OPTIONS: SortOption[] = [ + { + id: 'dueDateDesc', + displayName: 'Due Date', + sort: sortByDueDate('desc'), + }, + { + id: 'dueDateAsc', + displayName: 'Due Date', + sort: sortByDueDate('asc'), + }, + { + id: 'priorityDesc', + displayName: 'Priority', + sort: sortByPriority('desc'), + }, + { + id: 'priorityAsc', + displayName: 'Priority', + sort: sortByPriority('asc'), + }, +]; + const CONTACT_FILTERS: LayoutFilter[] = [ { displayName: 'All Contacts', @@ -151,34 +174,14 @@ const TASK_FILTERS: LayoutFilter[] = [ icon: ListDetails, cardTypeName: 'CRM Task', createNewButtonText: 'Create Task', - sortOptions: [ - { - id: 'dueDateDesc', - displayName: 'Due Date', - sort: sortByDueDate('desc'), - }, - { - id: 'dueDateAsc', - displayName: 'Due Date', - sort: sortByDueDate('asc'), - }, - { - id: 'priorityDesc', - displayName: 'Priority', - sort: sortByPriority('desc'), - }, - { - id: 'priorityAsc', - displayName: 'Priority', - sort: sortByPriority('asc'), - }, - ], + sortOptions: TASK_SORT_OPTIONS, }, ...taskStatusValues.map((status) => ({ displayName: status.label, icon: status.icon, cardTypeName: 'CRM Task', createNewButtonText: 'Create Task', + sortOptions: TASK_SORT_OPTIONS, })), ]; @@ -213,6 +216,30 @@ class CrmAppTemplate extends Component { @tracked private activeFilter: LayoutFilter = CONTACT_FILTERS[0]; @action private onFilterChange(filter: LayoutFilter) { this.activeFilter = filter; + if (this.activeTabId === 'Task') { + switch (this.activeFilter.displayName) { + case 'All Tasks': + case 'Overdue': + case 'Due this week': + case 'Unassigned': + this.activeFilter.selectedSort = { + id: 'dueDateAsc', + displayName: 'Due Date', + sort: sortByDueDate('asc'), + }; + break; + case 'Due Today': + case 'High Priority': + this.activeFilter.selectedSort = { + id: 'priorityDesc', + displayName: 'Priority', + sort: sortByPriority('desc'), + }; + break; + default: + break; + } + } } //tabs @tracked activeTabId: string | undefined = TABS[0].tabId; diff --git a/packages/host/tests/unit/qs-test.ts b/packages/host/tests/unit/qs-test.ts index 61e689b9ea..eb044f9d0a 100644 --- a/packages/host/tests/unit/qs-test.ts +++ b/packages/host/tests/unit/qs-test.ts @@ -22,6 +22,7 @@ module('Unit | qs | parse', function () { { eq: { 'author.firstName': 'Cardy', + series: null, }, }, { @@ -47,7 +48,9 @@ module('Unit | qs | parse', function () { }, ], }; - let queryString = qs.stringify(query); + let queryString = qs.stringify(query, { + strictNullHandling: true, + }); let parsedQuery: any = parseQuery(queryString); assert.deepEqual(parsedQuery, query); });