@conduction/nextcloud-vue 2.142.0 → 2.144.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue.js +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js +7 -2
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnActionDialog/CnActionDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +27 -0
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +1 -1
- package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
- package/dist/esm/components/CnAiCompanion/CnAiChatPanel.vue2.js.map +1 -1
- package/dist/esm/components/CnAiCompanion/CnAiChatPanel.vue3.js +2 -1
- package/dist/esm/components/CnAiCompanion/CnAiChatPanel.vue3.js.map +1 -1
- package/dist/esm/components/CnAiCompanion/CnAiInput.vue2.js +9 -0
- package/dist/esm/components/CnAiCompanion/CnAiInput.vue2.js.map +1 -1
- package/dist/esm/components/CnAiCompanion/CnAiInput.vue3.js +21 -22
- package/dist/esm/components/CnAiCompanion/CnAiInput.vue3.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue.js +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +29 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js +28 -13
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
- package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue.js +1 -1
- package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js +2 -1
- package/dist/esm/components/CnAuditTrailWidget/CnAuditTrailWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue.js +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +2 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnEventsCard/CnEventsCard.vue.js +1 -1
- package/dist/esm/components/CnEventsCard/CnEventsCard.vue2.js +9 -0
- package/dist/esm/components/CnEventsCard/CnEventsCard.vue2.js.map +1 -1
- package/dist/esm/components/CnEventsCard/CnEventsCard.vue3.js +24 -13
- package/dist/esm/components/CnEventsCard/CnEventsCard.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +29 -3
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +4 -2
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/filesBrowser.js +17 -4
- package/dist/esm/components/CnFilesBrowser/filesBrowser.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/filesBrowserColumns.js +21 -1
- package/dist/esm/components/CnFilesBrowser/filesBrowserColumns.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +18 -2
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue.js +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js +3 -0
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js +19 -14
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js +30 -0
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue3.js +158 -102
- package/dist/esm/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js +6 -1
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js.map +1 -1
- package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +12 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js +2 -2
- package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue.js +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js +12 -0
- package/dist/esm/components/CnRetentionWidget/CnRetentionWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue.js +1 -1
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue.js +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js +110 -2
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js +146 -80
- package/dist/esm/components/CnTasksWidget/CnTasksWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue.js +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue2.js +4 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue2.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js +18 -8
- package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js +45 -0
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue3.js +67 -34
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js +3 -22
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/eventStatus.js +67 -0
- package/dist/esm/integrations/builtin/calendar/eventStatus.js.map +1 -0
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue2.js +39 -0
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue3.js +81 -32
- package/dist/esm/integrations/builtin/deck/CnDeckCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js +5 -6
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/deckCardParts.js +59 -0
- package/dist/esm/integrations/builtin/deck/deckCardParts.js.map +1 -0
- package/dist/esm/l10n/en.json.js +6 -0
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +7 -1
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +1264 -597
- package/dist/esm/utils/fetchFilterCounts.js +5 -2
- package/dist/esm/utils/fetchFilterCounts.js.map +1 -1
- package/dist/esm/utils/nextcloudDirectory.js +19 -6
- package/dist/esm/utils/nextcloudDirectory.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +1619 -849
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +1264 -597
- package/l10n/en.json +6 -0
- package/l10n/nl.json +7 -1
- package/package.json +1 -1
- package/src/components/CnActionDialog/CnActionDialog.vue +28 -3
- package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +28 -1
- package/src/components/CnAiCompanion/CnAiChatPanel.vue +12 -0
- package/src/components/CnAiCompanion/CnAiInput.vue +32 -1
- package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +34 -4
- package/src/components/CnAuditTrailWidget/CnAuditTrailWidget.vue +1 -0
- package/src/components/CnChecklistRunWidget/CnChecklistRunWidget.vue +8 -0
- package/src/components/CnChoiceCards/CnChoiceCards.vue +1 -0
- package/src/components/CnConversationThread/CnConversationThread.vue +5 -2
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +1 -0
- package/src/components/CnEventsCard/CnEventsCard.vue +27 -5
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +43 -4
- package/src/components/CnFilesBrowser/filesBrowser.js +17 -4
- package/src/components/CnFilesBrowser/filesBrowserColumns.js +20 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +18 -2
- package/src/components/CnNotesCard/CnNotesCard.vue +8 -0
- package/src/components/CnObjectPartiesWidget/CnObjectPartiesWidget.vue +114 -46
- package/src/components/CnPageHeader/CnHeaderTrail.vue +6 -1
- package/src/components/CnRecordListWidget/CnRecordListWidget.vue +21 -1
- package/src/components/CnRetentionWidget/CnRetentionWidget.vue +26 -1
- package/src/components/CnSavedViewAlertWidget/CnSavedViewAlertWidget.vue +6 -0
- package/src/components/CnTasksWidget/CnTasksWidget.vue +170 -13
- package/src/components/CnTimelineWidget/CnTimelineManage.vue +10 -1
- package/src/css/dialog.css +25 -1
- package/src/css/kpi-card.css +3 -0
- package/src/css/look-board-detail.css +348 -0
- package/src/css/look-board-index.css +56 -1
- package/src/css/look-board.css +98 -1
- package/src/integrations/builtin/calendar/CnCalendarCard.vue +76 -11
- package/src/integrations/builtin/calendar/CnCalendarTab.vue +3 -22
- package/src/integrations/builtin/calendar/__tests__/CnCalendarCardBoardRows.spec.js +52 -0
- package/src/integrations/builtin/calendar/eventStatus.js +63 -0
- package/src/integrations/builtin/deck/CnDeckCard.vue +66 -0
- package/src/integrations/builtin/deck/CnDeckTab.vue +5 -6
- package/src/integrations/builtin/deck/__tests__/CnDeckCardBoardRows.spec.js +49 -0
- package/src/integrations/builtin/deck/deckCardParts.js +56 -0
- package/src/utils/fetchFilterCounts.js +5 -2
- package/src/utils/nextcloudDirectory.js +19 -6
|
@@ -2,7 +2,7 @@ import script from './CnTasksWidget.vue2.js';
|
|
|
2
2
|
import { render } from './CnTasksWidget.vue3.js';
|
|
3
3
|
|
|
4
4
|
script.render = render;
|
|
5
|
-
script.__scopeId = "data-v-
|
|
5
|
+
script.__scopeId = "data-v-7dc074ce";
|
|
6
6
|
const __sfc_main = script;
|
|
7
7
|
|
|
8
8
|
export { __sfc_main as default };
|
|
@@ -3,10 +3,13 @@ import axios__default from '@nextcloud/axios';
|
|
|
3
3
|
import { s as showError, x as showSuccess } from '../../node_modules/@nextcloud/dialogs/dist/chunks/index.js';
|
|
4
4
|
import { translate } from '@nextcloud/l10n';
|
|
5
5
|
import { generateUrl } from '@nextcloud/router';
|
|
6
|
-
import { NcActions, NcActionButton, NcAvatar, NcButton, NcLoadingIcon, NcTextField } from '@nextcloud/vue';
|
|
6
|
+
import { NcActions, NcActionButton, NcActionCheckbox, NcAvatar, NcButton, NcLoadingIcon, NcTextField } from '@nextcloud/vue';
|
|
7
7
|
import { ref, inject } from 'vue';
|
|
8
8
|
import CheckCircle from 'vue-material-design-icons/CheckCircle.vue';
|
|
9
|
+
import ChevronDown from 'vue-material-design-icons/ChevronDown.vue';
|
|
10
|
+
import ChevronUp from 'vue-material-design-icons/ChevronUp.vue';
|
|
9
11
|
import CircleOutline from 'vue-material-design-icons/CircleOutline.vue';
|
|
12
|
+
import FilterOutline from 'vue-material-design-icons/FilterOutline.vue';
|
|
10
13
|
import __sfc_main from '../CnStatusBadge/CnStatusBadge.vue.js';
|
|
11
14
|
import __sfc_main$1 from '../CnTaskFormDialog/CnTaskFormDialog.vue.js';
|
|
12
15
|
import __sfc_main$2 from './CnTaskWorkCard.vue.js';
|
|
@@ -86,12 +89,16 @@ var script = {
|
|
|
86
89
|
|
|
87
90
|
components: {
|
|
88
91
|
CheckCircle,
|
|
92
|
+
ChevronDown,
|
|
93
|
+
ChevronUp,
|
|
89
94
|
CircleOutline,
|
|
90
95
|
CnStatusBadge: __sfc_main,
|
|
91
96
|
CnTaskFormDialog: __sfc_main$1,
|
|
92
97
|
CnTaskWorkCard: __sfc_main$2,
|
|
98
|
+
FilterOutline,
|
|
93
99
|
NcActions,
|
|
94
100
|
NcActionButton,
|
|
101
|
+
NcActionCheckbox,
|
|
95
102
|
NcAvatar,
|
|
96
103
|
NcButton,
|
|
97
104
|
NcLoadingIcon,
|
|
@@ -246,6 +253,10 @@ var script = {
|
|
|
246
253
|
data() {
|
|
247
254
|
return {
|
|
248
255
|
pollTimer: null,
|
|
256
|
+
/** The table's head sort, `{ key, dir }`; no key keeps open tasks first. */
|
|
257
|
+
headSort: { key: '', dir: 'asc' },
|
|
258
|
+
/** The table's head filters, `{ column: values[] }`. */
|
|
259
|
+
headFilters: {},
|
|
249
260
|
/** Uuids of the tasks a checkbox is completing, until the next read. */
|
|
250
261
|
completing: [],
|
|
251
262
|
/** Whether the table's create form is open. */
|
|
@@ -405,7 +416,26 @@ var script = {
|
|
|
405
416
|
* @spec openspec/changes/record-task-table/specs/record-task-table/spec.md#requirement-a-records-tasks-show-as-a-table-with-their-summary-and-new-task-in-the-header
|
|
406
417
|
*/
|
|
407
418
|
tableRows() {
|
|
408
|
-
|
|
419
|
+
const kept = this.rows.filter((task) => Object.entries(this.headFilters).every(([key, values]) => values.length === 0 || values.includes(this.headValue(task, key))));
|
|
420
|
+
if (this.headSort.key) {
|
|
421
|
+
const dir = this.headSort.dir === 'desc' ? -1 : 1;
|
|
422
|
+
return [...kept].sort((a, b) => {
|
|
423
|
+
const x = this.headSortValue(a, this.headSort.key);
|
|
424
|
+
const y = this.headSortValue(b, this.headSort.key);
|
|
425
|
+
return (x < y ? -1 : (x > y ? 1 : 0)) * dir
|
|
426
|
+
})
|
|
427
|
+
}
|
|
428
|
+
return [...kept.filter((task) => task.isTerminal !== true), ...kept.filter((task) => task.isTerminal === true)]
|
|
429
|
+
},
|
|
430
|
+
|
|
431
|
+
/** @return {Array<{key: string, label: string}>} The table's data columns. */
|
|
432
|
+
headColumns() {
|
|
433
|
+
return [
|
|
434
|
+
{ key: 'title', label: this.tr('Task') },
|
|
435
|
+
{ key: 'handler', label: this.tr('Handler') },
|
|
436
|
+
{ key: 'due', label: this.tr('Task deadline') },
|
|
437
|
+
{ key: 'state', label: this.tr('Status') },
|
|
438
|
+
]
|
|
409
439
|
},
|
|
410
440
|
|
|
411
441
|
/**
|
|
@@ -786,6 +816,84 @@ var script = {
|
|
|
786
816
|
* @param {object} task The task row.
|
|
787
817
|
* @return {string} The name.
|
|
788
818
|
*/
|
|
819
|
+
/**
|
|
820
|
+
* A row's value in a column, as a head filter keeps it.
|
|
821
|
+
*
|
|
822
|
+
* @param {object} task The task row.
|
|
823
|
+
* @param {string} key The column.
|
|
824
|
+
* @return {string}
|
|
825
|
+
*/
|
|
826
|
+
headValue(task, key) {
|
|
827
|
+
if (key === 'title') {
|
|
828
|
+
return this.titleOf(task)
|
|
829
|
+
}
|
|
830
|
+
if (key === 'handler') {
|
|
831
|
+
return String(task.assignee || '')
|
|
832
|
+
}
|
|
833
|
+
if (key === 'due') {
|
|
834
|
+
return this.content.dueFormat === 'date' ? this.dueDate(task) : this.dueLabel(task)
|
|
835
|
+
}
|
|
836
|
+
return String(task.state || '')
|
|
837
|
+
},
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* A row's value in a column, as its head sorts it: the deadline by date.
|
|
841
|
+
*
|
|
842
|
+
* @param {object} task The task row.
|
|
843
|
+
* @param {string} key The column.
|
|
844
|
+
* @return {string|number}
|
|
845
|
+
*/
|
|
846
|
+
headSortValue(task, key) {
|
|
847
|
+
if (key === 'due') {
|
|
848
|
+
const time = Date.parse(task.dueAt || task.dueDate || '');
|
|
849
|
+
return Number.isNaN(time) ? Number.POSITIVE_INFINITY : time
|
|
850
|
+
}
|
|
851
|
+
if (key === 'handler') {
|
|
852
|
+
return this.handlerName(task).toLowerCase()
|
|
853
|
+
}
|
|
854
|
+
if (key === 'state') {
|
|
855
|
+
return this.stateLabel(task).toLowerCase()
|
|
856
|
+
}
|
|
857
|
+
return this.titleOf(task).toLowerCase()
|
|
858
|
+
},
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* The values a column's head filter offers, one per value the rows hold.
|
|
862
|
+
*
|
|
863
|
+
* @param {string} key The column.
|
|
864
|
+
* @return {Array<{value: string, label: string}>}
|
|
865
|
+
*/
|
|
866
|
+
headOptions(key) {
|
|
867
|
+
const seen = new Map();
|
|
868
|
+
for (const task of this.rows) {
|
|
869
|
+
const value = this.headValue(task, key);
|
|
870
|
+
if (value !== '' && !seen.has(value)) {
|
|
871
|
+
seen.set(value, key === 'handler' ? this.handlerName(task) : (key === 'state' ? this.stateLabel(task) : value));
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
return [...seen].map(([value, label]) => ({ value, label }))
|
|
875
|
+
},
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* Sort by a column: ascending first, then descending.
|
|
879
|
+
*
|
|
880
|
+
* @param {string} key The column.
|
|
881
|
+
*/
|
|
882
|
+
sortBy(key) {
|
|
883
|
+
this.headSort = this.headSort.key === key && this.headSort.dir === 'asc' ? { key, dir: 'desc' } : { key, dir: 'asc' };
|
|
884
|
+
},
|
|
885
|
+
|
|
886
|
+
/**
|
|
887
|
+
* Keep or drop one value of a column's head filter.
|
|
888
|
+
*
|
|
889
|
+
* @param {string} key The column.
|
|
890
|
+
* @param {string} value The value.
|
|
891
|
+
*/
|
|
892
|
+
toggleHeadFilter(key, value) {
|
|
893
|
+
const current = this.headFilters[key] || [];
|
|
894
|
+
this.headFilters = { ...this.headFilters, [key]: current.includes(value) ? current.filter((v) => v !== value) : [...current, value] };
|
|
895
|
+
},
|
|
896
|
+
|
|
789
897
|
handlerName(task) {
|
|
790
898
|
return userDisplayName(task.assignee) || String(task.assignee || '')
|
|
791
899
|
},
|