@talxis/base-controls 1.2603.1 → 1.2604.2
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/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +4 -4
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +2 -2
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js +2 -2
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -1
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +2 -2
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js.map +1 -1
- package/dist/components/DatasetControl/Header/Header.js +1 -0
- package/dist/components/DatasetControl/Header/Header.js.map +1 -1
- package/dist/components/DatasetControl/interfaces.d.ts +1 -0
- package/dist/components/DatasetControl/useModel.js +3 -3
- package/dist/components/DatasetControl/useModel.js.map +1 -1
- package/dist/components/Grid/cells/cell/content/CellContent.js +8 -8
- package/dist/components/Grid/cells/cell/content/CellContent.js.map +1 -1
- package/dist/components/Grid/grid/GridModel.js +1 -1
- package/dist/components/Grid/grid/GridModel.js.map +1 -1
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js +5 -8
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js.map +1 -1
- package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js +3 -3
- package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js.map +1 -1
- package/dist/components/GridCellRenderer/properties/Property.js +3 -1
- package/dist/components/GridCellRenderer/properties/Property.js.map +1 -1
- package/dist/components/GridCellRenderer/useModel.js +3 -3
- package/dist/components/GridCellRenderer/useModel.js.map +1 -1
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js +2 -2
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js.map +1 -1
- package/dist/components/NestedControlRenderer/NestedControlRenderer.js +2 -2
- package/dist/components/NestedControlRenderer/NestedControlRenderer.js.map +1 -1
- package/dist/components/TaskGrid/TaskGrid.d.ts +12 -0
- package/dist/components/TaskGrid/TaskGrid.js +75 -0
- package/dist/components/TaskGrid/TaskGrid.js.map +1 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.d.ts +81 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.js +335 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.js.map +1 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.d.ts +21 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js +55 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js.map +1 -0
- package/dist/components/TaskGrid/components/components.d.ts +8 -0
- package/dist/components/TaskGrid/components/components.js +11 -0
- package/dist/components/TaskGrid/components/components.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/Grid.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/Grid.js +42 -0
- package/dist/components/TaskGrid/components/grid/Grid.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js +34 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.d.ts +17 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.js +24 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js +81 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.d.ts +25 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.js +32 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js +22 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.d.ts +23 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js +30 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.d.ts +74 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js +308 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.d.ts +30 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js +80 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.d.ts +7 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.js +70 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.d.ts +35 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js +41 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/index.d.ts +3 -0
- package/dist/components/TaskGrid/components/grid/index.js +4 -0
- package/dist/components/TaskGrid/components/grid/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.d.ts +17 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js +92 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.js +3 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.d.ts +10 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.js +120 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.d.ts +54 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.js +60 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/Header.d.ts +8 -0
- package/dist/components/TaskGrid/components/header/Header.js +148 -0
- package/dist/components/TaskGrid/components/header/Header.js.map +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.js +9 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.js +2 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.js +23 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js +99 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.js +51 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.d.ts +11 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.js +18 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.js +27 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.d.ts +8 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.js +15 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.d.ts +9 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.js +9 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.js +24 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.js +2 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.js +12 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/styles.d.ts +15 -0
- package/dist/components/TaskGrid/components/header/styles.js +22 -0
- package/dist/components/TaskGrid/components/header/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.js +104 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js +66 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.js +24 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.js +54 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js +95 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.js +25 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/index.js +2 -0
- package/dist/components/TaskGrid/components/index.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.d.ts +4 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.js +32 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/skeleton/index.js +2 -0
- package/dist/components/TaskGrid/components/skeleton/index.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/styles.d.ts +92 -0
- package/dist/components/TaskGrid/components/skeleton/styles.js +100 -0
- package/dist/components/TaskGrid/components/skeleton/styles.js.map +1 -0
- package/dist/components/TaskGrid/context.d.ts +22 -0
- package/dist/components/TaskGrid/context.js +53 -0
- package/dist/components/TaskGrid/context.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.d.ts +50 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js +45 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.d.ts +33 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js +227 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.d.ts +2 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js +3 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/index.d.ts +3 -0
- package/dist/components/TaskGrid/data-providers/index.js +6 -0
- package/dist/components/TaskGrid/data-providers/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.d.ts +125 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js +192 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.d.ts +21 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js +97 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.d.ts +2 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js +3 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.d.ts +213 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js +313 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.d.ts +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.js +2 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.d.ts +55 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js +304 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.d.ts +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.js +2 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.d.ts +5 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js +16 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js.map +1 -0
- package/dist/components/TaskGrid/index.d.ts +3 -0
- package/dist/components/TaskGrid/index.js +3 -0
- package/dist/components/TaskGrid/index.js.map +1 -0
- package/dist/components/TaskGrid/interfaces.d.ts +161 -0
- package/dist/components/TaskGrid/labels.d.ts +92 -0
- package/dist/components/TaskGrid/labels.js +94 -0
- package/dist/components/TaskGrid/labels.js.map +1 -0
- package/dist/components/TaskGrid/styles.d.ts +65 -0
- package/dist/components/TaskGrid/styles.js +72 -0
- package/dist/components/TaskGrid/styles.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/useIsMounted.js +3 -3
- package/dist/hooks/useIsMounted.js.map +1 -1
- package/dist/hooks/useShouldRemount.js +2 -2
- package/dist/hooks/useShouldRemount.js.map +1 -1
- package/dist/index.d.ts +643 -34
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +11 -3
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/dist/utils/dataset-control/DatasetControl.js +4 -1
- package/dist/utils/dataset-control/DatasetControl.js.map +1 -1
- package/dist/utils/error-handling/ErrorHelper.d.ts +7 -0
- package/dist/utils/error-handling/ErrorHelper.js +40 -0
- package/dist/utils/error-handling/ErrorHelper.js.map +1 -0
- package/dist/utils/error-handling/index.d.ts +1 -0
- package/dist/utils/error-handling/index.js +2 -0
- package/dist/utils/error-handling/index.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +9 -6
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { DatasetConstants } from '@talxis/client-libraries';
|
|
2
|
+
import { GridDragHandler } from '../grid-drag-handler/GridDragHandler.js';
|
|
3
|
+
import { AddTaskButton } from '../cell-renderers/add-task-button/AddTaskButton.js';
|
|
4
|
+
import { TreeExpandCollapseHeader } from '../cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js';
|
|
5
|
+
import { PercentComplete } from '../cell-renderers/percent-complete/PercentComplete.js';
|
|
6
|
+
import { GroupCell } from '../group-cell/GroupCell.js';
|
|
7
|
+
|
|
8
|
+
const ADD_TASK_COLUMN_NAME = 'addTask';
|
|
9
|
+
class GridCustomizer {
|
|
10
|
+
constructor(parameters) {
|
|
11
|
+
//undefined means we should target top level
|
|
12
|
+
this._onRecordTreeUpdated = (affectedIds) => {
|
|
13
|
+
for (const id of affectedIds) {
|
|
14
|
+
if (!id) {
|
|
15
|
+
this._gridApi.refreshServerSide();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const node = this._gridApi.getRowNode(id);
|
|
19
|
+
this._gridApi.refreshServerSide({
|
|
20
|
+
route: this._getPathToParent(node)
|
|
21
|
+
});
|
|
22
|
+
this._gridApi.refreshServerSide({
|
|
23
|
+
route: [...this._getPathToParent(node), id]
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
this._gridApi.refreshCells({
|
|
28
|
+
columns: [this._nativeColumns.subject],
|
|
29
|
+
force: true
|
|
30
|
+
});
|
|
31
|
+
this._taskDataProvider.requestRender();
|
|
32
|
+
};
|
|
33
|
+
this._onAfterTasksCreated = (records, parentId) => {
|
|
34
|
+
if (!records || records.length === 0)
|
|
35
|
+
return;
|
|
36
|
+
if (parentId) {
|
|
37
|
+
const parentNode = this._gridApi.getRowNode(parentId);
|
|
38
|
+
if (parentNode && !parentNode.expanded) {
|
|
39
|
+
parentNode.setExpanded(true);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!parentId) {
|
|
43
|
+
this._gridApi.ensureIndexVisible(0);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
this._onAfterTaskDataUpdated = (newData) => {
|
|
47
|
+
const recordIdsSet = new Set(newData.map(item => item[this._taskDataProvider.getMetadata().PrimaryIdAttribute]));
|
|
48
|
+
const nodes = this._gridApi.getRenderedNodes().filter(node => recordIdsSet.has(node.id));
|
|
49
|
+
this._gridApi.refreshCells({
|
|
50
|
+
rowNodes: nodes,
|
|
51
|
+
force: true
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
this._datasetControl = parameters.datasetControl;
|
|
55
|
+
this._taskDataProvider = this._datasetControl.getDataProvider();
|
|
56
|
+
this._gridApi = parameters.gridApi;
|
|
57
|
+
this._localizationService = this._datasetControl.getLocalizationService();
|
|
58
|
+
this._nativeColumns = this._datasetControl.getNativeColumns();
|
|
59
|
+
this._strategy = parameters.strategy;
|
|
60
|
+
this._pcfContext = this._datasetControl.getPcfContext();
|
|
61
|
+
this._gridDragHandler = new GridDragHandler({
|
|
62
|
+
gridApi: this._gridApi,
|
|
63
|
+
datasetControl: this._datasetControl
|
|
64
|
+
});
|
|
65
|
+
this._patchGridApi();
|
|
66
|
+
this._registerEventListeners();
|
|
67
|
+
this._gridApi.setGridOption('rowClassRules', this._getRowClassRules());
|
|
68
|
+
this._strategy?.onInitialize?.(this);
|
|
69
|
+
}
|
|
70
|
+
getDatasetControl() {
|
|
71
|
+
return this._datasetControl;
|
|
72
|
+
}
|
|
73
|
+
getGridApi() {
|
|
74
|
+
return this._gridApi;
|
|
75
|
+
}
|
|
76
|
+
getTaskDataProvider() {
|
|
77
|
+
return this._taskDataProvider;
|
|
78
|
+
}
|
|
79
|
+
//makes sure we do not try to register an expression for a column that does not exist
|
|
80
|
+
registerExpressionDecorator(columnName, registrator) {
|
|
81
|
+
if (columnName && this._taskDataProvider.getColumnsMap()[columnName]) {
|
|
82
|
+
registrator();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
_patchGridApi() {
|
|
86
|
+
const originalSetGridOption = this._gridApi.setGridOption.bind(this._gridApi);
|
|
87
|
+
this._gridApi.setGridOption = (key, value) => {
|
|
88
|
+
switch (key) {
|
|
89
|
+
case 'columnDefs': {
|
|
90
|
+
const columnDefs = this._getColumnDefinitions(value);
|
|
91
|
+
originalSetGridOption(key, columnDefs);
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'isServerSideGroupOpenByDefault': {
|
|
95
|
+
originalSetGridOption(key, (params) => this._isServerSideGroupOpenByDefault(params));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
default: {
|
|
99
|
+
originalSetGridOption(key, value);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
_isServerSideGroupOpenByDefault(params) {
|
|
105
|
+
if (!params.data) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const matchingRecords = this._taskDataProvider.getRecordTree().getMatchingRecords();
|
|
109
|
+
return !matchingRecords[params.data.getRecordId()];
|
|
110
|
+
}
|
|
111
|
+
_injectAddTaskColumn(columnDefs) {
|
|
112
|
+
if (!columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {
|
|
113
|
+
columnDefs.push({
|
|
114
|
+
colId: ADD_TASK_COLUMN_NAME,
|
|
115
|
+
headerName: '',
|
|
116
|
+
pinned: 'left',
|
|
117
|
+
width: 50,
|
|
118
|
+
resizable: false,
|
|
119
|
+
lockPinned: true,
|
|
120
|
+
lockPosition: true,
|
|
121
|
+
suppressMovable: true,
|
|
122
|
+
suppressSizeToFit: true,
|
|
123
|
+
cellRenderer: AddTaskButton,
|
|
124
|
+
headerComponent: TreeExpandCollapseHeader
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
_getColumnDefinitions(columnDefs) {
|
|
129
|
+
this._injectAddTaskColumn(columnDefs);
|
|
130
|
+
for (const colDef of columnDefs) {
|
|
131
|
+
colDef.onCellDoubleClicked = () => { };
|
|
132
|
+
const columnName = colDef.colId;
|
|
133
|
+
switch (columnName) {
|
|
134
|
+
case this._nativeColumns.subject: {
|
|
135
|
+
colDef.cellRenderer = GroupCell;
|
|
136
|
+
colDef.pinned = 'left';
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case DatasetConstants.CHECKBOX_COLUMN_KEY: {
|
|
140
|
+
colDef.lockPosition = true;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case this._nativeColumns.percentComplete: {
|
|
144
|
+
colDef.cellRenderer = PercentComplete;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
columnDefs.sort((a, b) => this._getColumnPriority(a) - this._getColumnPriority(b));
|
|
150
|
+
columnDefs = this._strategy?.onGetColumnDefinitions?.(columnDefs) ?? columnDefs;
|
|
151
|
+
for (const colDef of columnDefs) {
|
|
152
|
+
colDef.cellRenderer = this._strategy?.onGetCellRenderer?.(colDef) ?? colDef.cellRenderer;
|
|
153
|
+
colDef.cellEditor = this._strategy?.onGetCellEditor?.(colDef) ?? colDef.cellEditor;
|
|
154
|
+
}
|
|
155
|
+
return columnDefs;
|
|
156
|
+
}
|
|
157
|
+
_getColumnPriority(col) {
|
|
158
|
+
if (col.colId === DatasetConstants.CHECKBOX_COLUMN_KEY)
|
|
159
|
+
return 0;
|
|
160
|
+
if (col.colId === ADD_TASK_COLUMN_NAME)
|
|
161
|
+
return 1;
|
|
162
|
+
if (col.field === this._nativeColumns.subject)
|
|
163
|
+
return 2;
|
|
164
|
+
return 3;
|
|
165
|
+
}
|
|
166
|
+
_getRowClassRules() {
|
|
167
|
+
const rules = {
|
|
168
|
+
'talxis_task-grid_row--drag-over-middle': (params) => {
|
|
169
|
+
return !!params.data?.isActive() && this._getNodeDragOverSection(params.node) === 'middle';
|
|
170
|
+
},
|
|
171
|
+
'talxis_task-grid_row--drag-over-top': (params) => {
|
|
172
|
+
return this._getNodeDragOverSection(params.node) === 'top';
|
|
173
|
+
},
|
|
174
|
+
'talxis_task-grid_row--drag-over-bottom': (params) => {
|
|
175
|
+
return this._getNodeDragOverSection(params.node) === 'bottom';
|
|
176
|
+
},
|
|
177
|
+
'talxis_task-grid_row--inactive': (params) => {
|
|
178
|
+
return !params.data?.isActive();
|
|
179
|
+
},
|
|
180
|
+
'talxis_task-grid_row--unmatched-parent': (params) => {
|
|
181
|
+
if (params.data) {
|
|
182
|
+
const matchingRecordsMap = this._taskDataProvider.getRecordTree().getMatchingRecords();
|
|
183
|
+
return !matchingRecordsMap[params.data.getRecordId()];
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
return this._strategy?.onGetRowClassRules?.(rules) ?? rules;
|
|
191
|
+
}
|
|
192
|
+
_getPathToParent(node) {
|
|
193
|
+
const path = [];
|
|
194
|
+
let parent = node?.parent;
|
|
195
|
+
while (parent) {
|
|
196
|
+
path.push(parent.id);
|
|
197
|
+
parent = parent.parent;
|
|
198
|
+
}
|
|
199
|
+
return path.filter(id => id).reverse();
|
|
200
|
+
}
|
|
201
|
+
_getNodeDragOverSection(node) {
|
|
202
|
+
const pendingDragOperation = this._gridDragHandler.getPendingDragOperation();
|
|
203
|
+
if (!pendingDragOperation) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const isCurrentNode = pendingDragOperation.overNode === node;
|
|
208
|
+
const isDraggedNode = pendingDragOperation.draggedNode === pendingDragOperation.overNode;
|
|
209
|
+
if (isCurrentNode && !isDraggedNode) {
|
|
210
|
+
return pendingDragOperation.dragOverSection;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async _onDragEnd(dragOperation) {
|
|
218
|
+
if (this._isDragOperationAllowed(dragOperation)) {
|
|
219
|
+
this._moveTask(dragOperation);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
_isDragOperationAllowed(dragOperation) {
|
|
223
|
+
const { draggedNode, overNode } = dragOperation;
|
|
224
|
+
// Check if either node is null/undefined
|
|
225
|
+
if (!draggedNode || !overNode) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
if (draggedNode === overNode) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
if (!overNode.data?.isActive() && dragOperation.dragOverSection === 'middle') {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
let parent = overNode.parent;
|
|
235
|
+
while (parent) {
|
|
236
|
+
if (parent === draggedNode) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
parent = parent.parent;
|
|
240
|
+
}
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
_getPositionFromDragOverSection(dragOverSection) {
|
|
244
|
+
switch (dragOverSection) {
|
|
245
|
+
case 'top': {
|
|
246
|
+
return 'above';
|
|
247
|
+
}
|
|
248
|
+
case 'bottom': {
|
|
249
|
+
return 'below';
|
|
250
|
+
}
|
|
251
|
+
case 'middle': {
|
|
252
|
+
return 'child';
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async _moveTask(dragOperation) {
|
|
257
|
+
const { draggedNode, overNode, dragOverSection } = dragOperation;
|
|
258
|
+
const position = this._getPositionFromDragOverSection(dragOverSection);
|
|
259
|
+
this._taskDataProvider.moveTask(draggedNode.id, overNode.id, position);
|
|
260
|
+
}
|
|
261
|
+
_moveInto(movingFromRecordId, movingToRecordId, position) {
|
|
262
|
+
const draggedRecordNode = this._taskDataProvider.getRecordTree().getNode(movingFromRecordId);
|
|
263
|
+
const draggedRecord = this._taskDataProvider.getRecordsMap()[movingFromRecordId];
|
|
264
|
+
const draggedNode = this._gridApi.getRowNode(movingFromRecordId);
|
|
265
|
+
const overNode = this._gridApi.getRowNode(movingToRecordId);
|
|
266
|
+
let addIndex = draggedRecordNode.index;
|
|
267
|
+
//first remove from old location
|
|
268
|
+
this._gridApi.applyServerSideTransaction({
|
|
269
|
+
route: this._getPathToParent(draggedNode),
|
|
270
|
+
remove: [draggedRecord],
|
|
271
|
+
});
|
|
272
|
+
//update the store where dragged parent node is (so the arrow can disappear if needed)
|
|
273
|
+
this._gridApi.applyServerSideTransaction({
|
|
274
|
+
route: this._getPathToParent(draggedNode.parent),
|
|
275
|
+
update: [draggedNode.data],
|
|
276
|
+
});
|
|
277
|
+
//update the store where over node is (so the arrow can appear if needed)
|
|
278
|
+
this._gridApi.applyServerSideTransaction({
|
|
279
|
+
route: this._getPathToParent(overNode),
|
|
280
|
+
update: [overNode.data],
|
|
281
|
+
});
|
|
282
|
+
//then add to new location
|
|
283
|
+
this._gridApi.applyServerSideTransaction({
|
|
284
|
+
// i need to set route to parent of over node
|
|
285
|
+
route: [...this._getPathToParent(overNode), ...(position === 'child' ? [overNode.id] : [])],
|
|
286
|
+
add: [draggedRecord],
|
|
287
|
+
addIndex: addIndex !== null ? addIndex : undefined,
|
|
288
|
+
});
|
|
289
|
+
if (position === 'child') {
|
|
290
|
+
overNode.setExpanded(true);
|
|
291
|
+
}
|
|
292
|
+
this._gridApi.refreshCells({
|
|
293
|
+
columns: [this._nativeColumns.subject],
|
|
294
|
+
force: true
|
|
295
|
+
});
|
|
296
|
+
this._taskDataProvider.clearSelectedRecordIds();
|
|
297
|
+
}
|
|
298
|
+
_registerEventListeners() {
|
|
299
|
+
this._taskDataProvider.taskEvents.addEventListener('onAfterTaskMoved', (movingFromTaskId, movingToTaskId, position) => this._moveInto(movingFromTaskId, movingToTaskId, position));
|
|
300
|
+
this._taskDataProvider.taskEvents.addEventListener('onAfterTasksCreated', (records, parentId) => this._onAfterTasksCreated(records, parentId));
|
|
301
|
+
this._taskDataProvider.taskEvents.addEventListener('onRecordTreeUpdated', (updatedParentIds) => this._onRecordTreeUpdated(updatedParentIds));
|
|
302
|
+
this._taskDataProvider.taskEvents.addEventListener('onTaskDataUpdated', (newData) => this._onAfterTaskDataUpdated(newData));
|
|
303
|
+
this._gridDragHandler.addEventListener('onDragEnd', (dragOperation) => this._onDragEnd(dragOperation));
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export { ADD_TASK_COLUMN_NAME, GridCustomizer };
|
|
308
|
+
//# sourceMappingURL=GridCustomizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridCustomizer.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.ts"],"sourcesContent":["import { ColDef as ColDefBase, GridApi as GridApiBase, IRowNode, IsServerSideGroupOpenByDefaultParams, RowClassRules as RowClassRulesBase } from \"@ag-grid-community/core\";\nimport { ITaskDataProvider } from \"../../../data-providers/task-data-provider\";\nimport { DatasetConstants, IRawRecord, IRecord } from \"@talxis/client-libraries\";\nimport { GridDragHandler, IDragOperation } from \"../grid-drag-handler\";\nimport { GroupCell } from \"../group-cell\";\nimport { TreeExpandCollapseHeader } from \"../cell-headers/tree-expand-collapse-header\";\nimport { AddTaskButton } from \"../cell-renderers/add-task-button\";\nimport { ILocalizationService, ITaskGridLabels } from \"../../../labels\";\nimport { PercentComplete } from \"../cell-renderers/percent-complete\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\nexport const ADD_TASK_COLUMN_NAME = 'addTask';\n\nexport type ColDef = ColDefBase<IRecord>;\nexport type GridApi = GridApiBase<IRecord>;\nexport type RowClassRules = RowClassRulesBase<IRecord>;\n\n\n/** Strategy interface for deep customization of the AG Grid instance inside TaskGrid. */\nexport interface IGridCustomizerStrategy {\n /** Called once after the grid is ready. Use to call `customizer.registerExpressionDecorator` or perform other one-time setup. */\n onInitialize: (customizer: IGridCustomizer) => void;\n /** Receives the computed column definitions and may return a modified array. */\n onGetColumnDefinitions?: (columnDefs: ColDef[]) => ColDef[];\n /** Receives the default row class rules map and may return an extended or overridden version. */\n onGetRowClassRules?: (rules: RowClassRules) => RowClassRules;\n /** Return a custom cell renderer component for the given column definition, or `undefined` to use the default. */\n onGetCellRenderer?: (colDef: ColDef) => any;\n /** Return a custom cell editor component for the given column definition, or `undefined` to use the default. */\n onGetCellEditor?: (colDef: ColDef) => any;\n /** Receives the raw AG Grid `GridApi` instance, useful if the strategy needs to retain a reference. */\n onRetrieveGridApi?: (gridApi: GridApi) => void;\n}\n\n/** Provides access to the AG Grid instance and the TaskGrid control to code running inside `IGridCustomizerStrategy`. */\nexport interface IGridCustomizer {\n /** Returns the underlying AG Grid `GridApi`. */\n getGridApi(): GridApi;\n /** Returns the `ITaskDataProvider` that backs the grid data layer. */\n getTaskDataProvider(): ITaskDataProvider;\n /** Returns the `ITaskGridDatasetControl` runtime control interface. */\n getDatasetControl(): ITaskGridDatasetControl;\n /**\n * Registers a column-expression decorator only when the given column exists in the current columns map.\n * Prevents errors when registering decorators for columns that may not be present in all views.\n */\n registerExpressionDecorator(columnName: string, registrator: () => void): void;\n}\n\nexport interface IGridCustomizerParameters {\n gridApi: GridApi;\n datasetControl: ITaskGridDatasetControl;\n strategy?: IGridCustomizerStrategy;\n}\n\nexport class GridCustomizer implements IGridCustomizer {\n private _taskDataProvider: ITaskDataProvider;\n private _gridApi: GridApi;\n private _gridDragHandler: GridDragHandler;\n private _localizationService: ILocalizationService<ITaskGridLabels>;\n private _nativeColumns: INativeColumns;\n private _pcfContext: ComponentFramework.Context<any>;\n private _datasetControl: ITaskGridDatasetControl;\n private _strategy?: IGridCustomizerStrategy;\n\n constructor(parameters: IGridCustomizerParameters) {\n this._datasetControl = parameters.datasetControl;\n this._taskDataProvider = this._datasetControl.getDataProvider();\n this._gridApi = parameters.gridApi;\n this._localizationService = this._datasetControl.getLocalizationService();\n this._nativeColumns = this._datasetControl.getNativeColumns();\n this._strategy = parameters.strategy;\n this._pcfContext = this._datasetControl.getPcfContext();\n\n this._gridDragHandler = new GridDragHandler({\n gridApi: this._gridApi,\n datasetControl: this._datasetControl\n });\n this._patchGridApi();\n this._registerEventListeners();\n this._gridApi.setGridOption('rowClassRules', this._getRowClassRules());\n this._strategy?.onInitialize?.(this);\n }\n\n public getDatasetControl(): ITaskGridDatasetControl {\n return this._datasetControl;\n }\n\n public getGridApi(): GridApi {\n return this._gridApi;\n }\n\n public getTaskDataProvider(): ITaskDataProvider {\n return this._taskDataProvider;\n }\n\n //makes sure we do not try to register an expression for a column that does not exist\n public registerExpressionDecorator(columnName: string, registrator: () => void) {\n if (columnName && this._taskDataProvider.getColumnsMap()[columnName]) {\n registrator();\n }\n }\n\n private _patchGridApi() {\n const originalSetGridOption = this._gridApi.setGridOption.bind(this._gridApi);\n this._gridApi.setGridOption = (key: any, value: any): void => {\n switch (key) {\n case 'columnDefs': {\n const columnDefs = this._getColumnDefinitions(value);\n originalSetGridOption(key, columnDefs);\n break;\n }\n case 'isServerSideGroupOpenByDefault': {\n originalSetGridOption(key, (params: IsServerSideGroupOpenByDefaultParams) => this._isServerSideGroupOpenByDefault(params));\n break;\n }\n default: {\n originalSetGridOption(key, value);\n }\n }\n }\n }\n\n private _isServerSideGroupOpenByDefault(params: IsServerSideGroupOpenByDefaultParams) {\n if (!params.data) {\n return false;\n }\n const matchingRecords = this._taskDataProvider.getRecordTree().getMatchingRecords();\n return !matchingRecords[params.data.getRecordId()];\n }\n\n private _injectAddTaskColumn(columnDefs: ColDef[]) {\n if (!columnDefs.find(colDef => colDef.colId === ADD_TASK_COLUMN_NAME)) {\n columnDefs.push({\n colId: ADD_TASK_COLUMN_NAME,\n headerName: '',\n pinned: 'left',\n width: 50,\n resizable: false,\n lockPinned: true,\n lockPosition: true,\n suppressMovable: true,\n suppressSizeToFit: true,\n cellRenderer: AddTaskButton,\n headerComponent: TreeExpandCollapseHeader\n })\n }\n }\n\n private _getColumnDefinitions(columnDefs: ColDef[]) {\n this._injectAddTaskColumn(columnDefs);\n for (const colDef of columnDefs) {\n colDef.onCellDoubleClicked = () => { }\n const columnName = colDef.colId as string;\n switch (columnName) {\n case this._nativeColumns.subject: {\n colDef.cellRenderer = GroupCell;\n colDef.pinned = 'left';\n break;\n }\n case DatasetConstants.CHECKBOX_COLUMN_KEY: {\n colDef.lockPosition = true;\n break;\n }\n case this._nativeColumns.percentComplete: {\n colDef.cellRenderer = PercentComplete;\n break\n }\n }\n }\n\n columnDefs.sort((a, b) => this._getColumnPriority(a) - this._getColumnPriority(b));\n columnDefs = this._strategy?.onGetColumnDefinitions?.(columnDefs) ?? columnDefs;\n for (const colDef of columnDefs) {\n colDef.cellRenderer = this._strategy?.onGetCellRenderer?.(colDef) ?? colDef.cellRenderer;\n colDef.cellEditor = this._strategy?.onGetCellEditor?.(colDef) ?? colDef.cellEditor;\n }\n return columnDefs;\n\n }\n\n private _getColumnPriority(col: ColDef): number {\n if (col.colId === DatasetConstants.CHECKBOX_COLUMN_KEY) return 0;\n if (col.colId === ADD_TASK_COLUMN_NAME) return 1;\n if (col.field === this._nativeColumns.subject) return 2;\n return 3;\n }\n\n private _getRowClassRules(): RowClassRules {\n const rules: RowClassRules = {\n 'talxis_task-grid_row--drag-over-middle': (params) => {\n return !!params.data?.isActive() && this._getNodeDragOverSection(params.node) === 'middle'\n },\n 'talxis_task-grid_row--drag-over-top': (params) => {\n return this._getNodeDragOverSection(params.node) === 'top'\n },\n 'talxis_task-grid_row--drag-over-bottom': (params) => {\n return this._getNodeDragOverSection(params.node) === 'bottom'\n },\n 'talxis_task-grid_row--inactive': (params) => {\n return !params.data?.isActive()\n },\n 'talxis_task-grid_row--unmatched-parent': (params) => {\n if (params.data) {\n const matchingRecordsMap = this._taskDataProvider.getRecordTree().getMatchingRecords();\n return !matchingRecordsMap[params.data!.getRecordId()]\n }\n else {\n return false;\n }\n }\n }\n return this._strategy?.onGetRowClassRules?.(rules) ?? rules;\n }\n\n private _getPathToParent(node: IRowNode<IRecord> | null): string[] {\n const path: string[] = [];\n let parent = node?.parent;\n while (parent) {\n path.push(parent.id!);\n parent = parent.parent;\n }\n return path.filter(id => id).reverse();\n }\n\n //undefined means we should target top level\n private _onRecordTreeUpdated = (affectedIds: (string | undefined)[]) => {\n for (const id of affectedIds) {\n if (!id) {\n this._gridApi.refreshServerSide();\n }\n else {\n const node = this._gridApi.getRowNode(id)!;\n this._gridApi.refreshServerSide({\n route: this._getPathToParent(node)\n });\n this._gridApi.refreshServerSide({\n route: [...this._getPathToParent(node), id]\n })\n }\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.requestRender();\n }\n\n private _getNodeDragOverSection(node: IRowNode<IRecord>): IDragOperation['dragOverSection'] | null {\n const pendingDragOperation = this._gridDragHandler.getPendingDragOperation();\n if (!pendingDragOperation) {\n return null;\n }\n else {\n const isCurrentNode = pendingDragOperation.overNode === node;\n const isDraggedNode = pendingDragOperation.draggedNode === pendingDragOperation.overNode;\n if (isCurrentNode && !isDraggedNode) {\n return pendingDragOperation.dragOverSection;\n }\n else {\n return null;\n }\n }\n }\n\n private async _onDragEnd(dragOperation: IDragOperation) {\n if (this._isDragOperationAllowed(dragOperation)) {\n this._moveTask(dragOperation);\n }\n }\n\n private _isDragOperationAllowed(dragOperation: IDragOperation): boolean {\n const { draggedNode, overNode } = dragOperation;\n // Check if either node is null/undefined\n if (!draggedNode || !overNode) {\n return false;\n }\n if (draggedNode === overNode) {\n return false;\n }\n if (!overNode.data?.isActive() && dragOperation.dragOverSection === 'middle') {\n return false;\n }\n\n let parent = overNode.parent;\n while (parent) {\n if (parent === draggedNode) {\n return false;\n }\n parent = parent.parent;\n }\n return true;\n }\n\n private _getPositionFromDragOverSection(dragOverSection: IDragOperation['dragOverSection']): 'above' | 'below' | 'child' {\n switch (dragOverSection) {\n case 'top': {\n return 'above';\n }\n case 'bottom': {\n return 'below';\n }\n case 'middle': {\n return 'child';\n }\n }\n }\n\n private async _moveTask(dragOperation: IDragOperation) {\n const { draggedNode, overNode, dragOverSection } = dragOperation;\n const position = this._getPositionFromDragOverSection(dragOverSection);\n this._taskDataProvider.moveTask(draggedNode.id!, overNode.id!, position);\n }\n\n private _moveInto(movingFromRecordId: string, movingToRecordId: string, position: 'child' | 'above' | 'below') {\n const draggedRecordNode = this._taskDataProvider.getRecordTree().getNode(movingFromRecordId);\n const draggedRecord = this._taskDataProvider.getRecordsMap()[movingFromRecordId];\n const draggedNode = this._gridApi.getRowNode(movingFromRecordId)!;\n const overNode = this._gridApi.getRowNode(movingToRecordId)!;\n\n let addIndex: number | null = draggedRecordNode.index;\n\n //first remove from old location\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode),\n remove: [draggedRecord],\n });\n\n //update the store where dragged parent node is (so the arrow can disappear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(draggedNode.parent),\n update: [draggedNode.data],\n });\n\n //update the store where over node is (so the arrow can appear if needed)\n this._gridApi.applyServerSideTransaction({\n route: this._getPathToParent(overNode),\n update: [overNode.data],\n });\n //then add to new location\n this._gridApi.applyServerSideTransaction({\n // i need to set route to parent of over node\n route: [...this._getPathToParent(overNode), ...(position === 'child' ? [overNode.id!] : [])],\n add: [draggedRecord],\n addIndex: addIndex !== null ? addIndex : undefined,\n });\n\n if (position === 'child') {\n overNode.setExpanded(true);\n }\n this._gridApi.refreshCells({\n columns: [this._nativeColumns.subject],\n force: true\n });\n this._taskDataProvider.clearSelectedRecordIds();\n }\n\n\n private _onAfterTasksCreated = (records: IRawRecord[] | null, parentId?: string) => {\n if (!records || records.length === 0) return;\n if (parentId) {\n const parentNode = this._gridApi.getRowNode(parentId);\n if (parentNode && !parentNode.expanded) {\n parentNode.setExpanded(true);\n }\n }\n if (!parentId) {\n this._gridApi.ensureIndexVisible(0);\n }\n }\n\n private _onAfterTaskDataUpdated = (newData: IRawRecord[]) => {\n const recordIdsSet = new Set(newData.map(item => item[this._taskDataProvider.getMetadata().PrimaryIdAttribute]));\n const nodes = this._gridApi.getRenderedNodes().filter(node => recordIdsSet.has(node.id!));\n this._gridApi.refreshCells({\n rowNodes: nodes,\n force: true\n })\n }\n\n private _registerEventListeners() {\n this._taskDataProvider.taskEvents.addEventListener('onAfterTaskMoved', (movingFromTaskId, movingToTaskId, position) => this._moveInto(movingFromTaskId, movingToTaskId, position));\n this._taskDataProvider.taskEvents.addEventListener('onAfterTasksCreated', (records, parentId) => this._onAfterTasksCreated(records, parentId));\n this._taskDataProvider.taskEvents.addEventListener('onRecordTreeUpdated', (updatedParentIds) => this._onRecordTreeUpdated(updatedParentIds));\n this._taskDataProvider.taskEvents.addEventListener('onTaskDataUpdated', (newData) => this._onAfterTaskDataUpdated(newData));\n this._gridDragHandler.addEventListener('onDragEnd', (dragOperation) => this._onDragEnd(dragOperation));\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './GridCustomizer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GridApi, IRowNode } from "@ag-grid-community/core";
|
|
2
|
+
import { EventEmitter, IRecord } from "@talxis/client-libraries";
|
|
3
|
+
import { ITaskGridDatasetControl } from "../../../interfaces";
|
|
4
|
+
interface IGridDragHandlerParameters {
|
|
5
|
+
datasetControl: ITaskGridDatasetControl;
|
|
6
|
+
gridApi: GridApi<IRecord>;
|
|
7
|
+
}
|
|
8
|
+
export interface IDragOperation {
|
|
9
|
+
overNode: IRowNode<IRecord>;
|
|
10
|
+
draggedNode: IRowNode<IRecord>;
|
|
11
|
+
dragOverSection: 'top' | 'middle' | 'bottom';
|
|
12
|
+
}
|
|
13
|
+
interface IGridDragHandlerEvents {
|
|
14
|
+
onDragEnd: (dragOperation: IDragOperation) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare class GridDragHandler extends EventEmitter<IGridDragHandlerEvents> {
|
|
17
|
+
private _gridApi;
|
|
18
|
+
private _dataProvider;
|
|
19
|
+
private _dragOperation;
|
|
20
|
+
private _nativeColumns;
|
|
21
|
+
private _datasetControl;
|
|
22
|
+
constructor(parameters: IGridDragHandlerParameters);
|
|
23
|
+
getPendingDragOperation(): IDragOperation | null;
|
|
24
|
+
private _determineDragOverSection;
|
|
25
|
+
private _onRowDragEnd;
|
|
26
|
+
private _onRowDragMove;
|
|
27
|
+
private _refreshRowClasses;
|
|
28
|
+
private _toggleRowDragging;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { EventEmitter } from '@talxis/client-libraries';
|
|
2
|
+
|
|
3
|
+
class GridDragHandler extends EventEmitter {
|
|
4
|
+
constructor(parameters) {
|
|
5
|
+
super();
|
|
6
|
+
this._dragOperation = null;
|
|
7
|
+
this._gridApi = parameters.gridApi;
|
|
8
|
+
this._dataProvider = parameters.datasetControl.getDataProvider();
|
|
9
|
+
this._datasetControl = parameters.datasetControl;
|
|
10
|
+
this._nativeColumns = parameters.datasetControl.getNativeColumns();
|
|
11
|
+
this._gridApi.setGridOption('rowDragEntireRow', true);
|
|
12
|
+
this._gridApi.setGridOption('onRowDragMove', (e) => this._onRowDragMove(e));
|
|
13
|
+
this._gridApi.setGridOption('onRowDragEnd', (e) => this._onRowDragEnd(e));
|
|
14
|
+
this._dataProvider.addEventListener('onBeforeNewDataLoaded', () => this._toggleRowDragging());
|
|
15
|
+
}
|
|
16
|
+
getPendingDragOperation() {
|
|
17
|
+
return this._dragOperation;
|
|
18
|
+
}
|
|
19
|
+
_determineDragOverSection(y, overNode) {
|
|
20
|
+
const { rowHeight, rowTop } = overNode;
|
|
21
|
+
const rowY = y - rowTop;
|
|
22
|
+
const thirdHeight = rowHeight / 3;
|
|
23
|
+
if (rowY <= thirdHeight) {
|
|
24
|
+
return 'top';
|
|
25
|
+
}
|
|
26
|
+
else if (rowY <= 2 * thirdHeight) {
|
|
27
|
+
return 'middle';
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return 'bottom';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
_onRowDragEnd(e) {
|
|
34
|
+
this.dispatchEvent('onDragEnd', this._dragOperation);
|
|
35
|
+
this._dragOperation = null;
|
|
36
|
+
this._refreshRowClasses(e.overNode);
|
|
37
|
+
}
|
|
38
|
+
_onRowDragMove(e) {
|
|
39
|
+
const { overNode, node, y } = e;
|
|
40
|
+
const dragOverSection = this._determineDragOverSection(y, overNode);
|
|
41
|
+
setTimeout(() => {
|
|
42
|
+
const currentOverNode = this._dragOperation?.overNode;
|
|
43
|
+
if (currentOverNode === overNode && dragOverSection === 'middle' && !overNode?.expanded && this._dataProvider.getRecordTree().hasChildren(overNode.data.getRecordId())) {
|
|
44
|
+
overNode?.setExpanded(true);
|
|
45
|
+
}
|
|
46
|
+
}, 1000);
|
|
47
|
+
if (this._dragOperation && this._dragOperation.overNode !== overNode) {
|
|
48
|
+
// Refresh previous over node to remove drag classes
|
|
49
|
+
this._refreshRowClasses(this._dragOperation.overNode);
|
|
50
|
+
}
|
|
51
|
+
this._dragOperation = {
|
|
52
|
+
overNode: overNode,
|
|
53
|
+
draggedNode: node,
|
|
54
|
+
dragOverSection: dragOverSection
|
|
55
|
+
};
|
|
56
|
+
this._refreshRowClasses(overNode);
|
|
57
|
+
}
|
|
58
|
+
_refreshRowClasses(node) {
|
|
59
|
+
if (!node) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
//@ts-ignore - typings - getGroupKeys missing in type
|
|
63
|
+
const keys = [...node.getGroupKeys()].slice(0, -1);
|
|
64
|
+
this._gridApi.applyServerSideTransactionAsync({
|
|
65
|
+
route: keys,
|
|
66
|
+
update: [node.data]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
_toggleRowDragging() {
|
|
70
|
+
const sorting = this._dataProvider.getSorting();
|
|
71
|
+
const isFlatListEnabled = this._dataProvider.isFlatListEnabled();
|
|
72
|
+
const isSortedByNonStackRank = sorting.length > 0 && sorting[0].name !== this._nativeColumns.stackRank;
|
|
73
|
+
const isRowDraggingEnabled = this._datasetControl.isRowDraggingEnabled();
|
|
74
|
+
const canDrag = isRowDraggingEnabled && !isFlatListEnabled && !isSortedByNonStackRank;
|
|
75
|
+
this._gridApi.setGridOption('rowDragEntireRow', canDrag);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { GridDragHandler };
|
|
80
|
+
//# sourceMappingURL=GridDragHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridDragHandler.js","sources":["../../../../../../src/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.ts"],"sourcesContent":["import { GridApi, IRowNode, RowDragEvent } from \"@ag-grid-community/core\";\nimport { EventEmitter, IRecord } from \"@talxis/client-libraries\";\nimport { ITaskDataProvider } from \"../../../data-providers/task-data-provider\";\nimport { INativeColumns, ITaskGridDatasetControl } from \"../../../interfaces\";\n\ninterface IGridDragHandlerParameters {\n datasetControl: ITaskGridDatasetControl;\n gridApi: GridApi<IRecord>;\n}\n\nexport interface IDragOperation {\n overNode: IRowNode<IRecord>;\n draggedNode: IRowNode<IRecord>;\n dragOverSection: 'top' | 'middle' | 'bottom';\n}\n\ninterface IGridDragHandlerEvents {\n onDragEnd: (dragOperation: IDragOperation) => void;\n}\n\nexport class GridDragHandler extends EventEmitter<IGridDragHandlerEvents> {\n private _gridApi: GridApi<IRecord>;\n private _dataProvider: ITaskDataProvider;\n private _dragOperation: IDragOperation | null = null;\n private _nativeColumns: INativeColumns;\n private _datasetControl: ITaskGridDatasetControl;\n \n constructor(parameters: IGridDragHandlerParameters) {\n super();\n this._gridApi = parameters.gridApi;\n this._dataProvider = parameters.datasetControl.getDataProvider();\n this._datasetControl = parameters.datasetControl;\n this._nativeColumns = parameters.datasetControl.getNativeColumns();\n this._gridApi.setGridOption('rowDragEntireRow', true);\n this._gridApi.setGridOption('onRowDragMove', (e) => this._onRowDragMove(e));\n this._gridApi.setGridOption('onRowDragEnd', (e) => this._onRowDragEnd(e));\n this._dataProvider.addEventListener('onBeforeNewDataLoaded', () => this._toggleRowDragging())\n }\n\n public getPendingDragOperation(): IDragOperation | null {\n return this._dragOperation;\n }\n\n private _determineDragOverSection(y: number, overNode?: IRowNode<IRecord>): IDragOperation['dragOverSection'] {\n const { rowHeight, rowTop } = overNode!;\n const rowY = y - rowTop!;\n const thirdHeight = rowHeight! / 3;\n\n if (rowY <= thirdHeight) {\n return 'top';\n } else if (rowY <= 2 * thirdHeight) {\n return 'middle'\n } else {\n return 'bottom';\n }\n }\n\n private _onRowDragEnd(e: RowDragEvent<IRecord, any>) {\n this.dispatchEvent('onDragEnd', this._dragOperation!);\n this._dragOperation = null;\n this._refreshRowClasses(e.overNode);\n }\n\n\n private _onRowDragMove(e: RowDragEvent<IRecord, any>) {\n const { overNode, node, y } = e;\n const dragOverSection = this._determineDragOverSection(y, overNode);\n setTimeout(() => {\n const currentOverNode = this._dragOperation?.overNode;\n if (currentOverNode === overNode && dragOverSection === 'middle' && !overNode?.expanded && this._dataProvider.getRecordTree().hasChildren(overNode!.data!.getRecordId())) {\n overNode?.setExpanded(true);\n }\n }, 1000);\n if (this._dragOperation && this._dragOperation.overNode !== overNode) {\n // Refresh previous over node to remove drag classes\n this._refreshRowClasses(this._dragOperation.overNode);\n }\n this._dragOperation = {\n overNode: overNode!,\n draggedNode: node,\n dragOverSection: dragOverSection\n };\n this._refreshRowClasses(overNode);\n }\n\n private _refreshRowClasses(node?: IRowNode<IRecord>) {\n if (!node) {\n return;\n }\n //@ts-ignore - typings - getGroupKeys missing in type\n const keys = [...node.getGroupKeys()].slice(0, -1);\n this._gridApi.applyServerSideTransactionAsync({\n route: keys,\n update: [node.data]\n })\n }\n\n private _toggleRowDragging() {\n const sorting = this._dataProvider.getSorting();\n const isFlatListEnabled = this._dataProvider.isFlatListEnabled();\n const isSortedByNonStackRank = sorting.length > 0 && sorting[0].name !== this._nativeColumns.stackRank;\n const isRowDraggingEnabled = this._datasetControl.isRowDraggingEnabled();\n\n const canDrag = isRowDraggingEnabled && !isFlatListEnabled && !isSortedByNonStackRank;\n this._gridApi.setGridOption('rowDragEntireRow', canDrag);\n }\n}"],"names":[],"mappings":";;AAoBM,MAAO,eAAgB,SAAQ,YAAoC,CAAA;AAOrE,IAAA,WAAA,CAAY,UAAsC,EAAA;AAC9C,QAAA,KAAK,EAAE,CAAC;QALJ,IAAc,CAAA,cAAA,GAA0B,IAAI,CAAC;AAMjD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;KAChG;IAEM,uBAAuB,GAAA;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAEO,yBAAyB,CAAC,CAAS,EAAE,QAA4B,EAAA;AACrE,QAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,QAAS,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,MAAO,CAAC;AACzB,QAAA,MAAM,WAAW,GAAG,SAAU,GAAG,CAAC,CAAC;QAEnC,IAAI,IAAI,IAAI,WAAW,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,IAAI,IAAI,CAAC,GAAG,WAAW,EAAE;AAChC,YAAA,OAAO,QAAQ,CAAA;AAClB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,CAA6B,EAAA;QAC/C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,cAAe,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KACvC;AAGO,IAAA,cAAc,CAAC,CAA6B,EAAA;QAChD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpE,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;AACtD,YAAA,IAAI,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,QAAS,CAAC,IAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AACtK,gBAAA,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAA;SACJ,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,QAAQ,EAAE;;YAElE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzD,SAAA;QACD,IAAI,CAAC,cAAc,GAAG;AAClB,YAAA,QAAQ,EAAE,QAAS;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,eAAe,EAAE,eAAe;SACnC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACrC;AAEO,IAAA,kBAAkB,CAAC,IAAwB,EAAA;QAC/C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;;AAED,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AAC1C,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,SAAA,CAAC,CAAA;KACL;IAEO,kBAAkB,GAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QACjE,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACvG,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;QAEzE,MAAM,OAAO,GAAG,oBAAoB,IAAI,CAAC,iBAAiB,IAAI,CAAC,sBAAsB,CAAC;QACtF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC5D;AACJ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './GridDragHandler';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ICellProps } from '../../../../Grid/cells/cell/Cell';
|
|
2
|
+
import { IRecord } from "@talxis/client-libraries";
|
|
3
|
+
interface IProps extends ICellProps {
|
|
4
|
+
data: IRecord;
|
|
5
|
+
}
|
|
6
|
+
export declare const GroupCell: (props: IProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
import { Cell } from '../../../../Grid/cells/cell/Cell.js';
|
|
5
|
+
import { getTheme, IconButton } from '@fluentui/react';
|
|
6
|
+
import { useRerender } from '@talxis/react-components';
|
|
7
|
+
import { getGroupCellStyles } from './styles.js';
|
|
8
|
+
import { useTaskDataProvider } from '../../../context.js';
|
|
9
|
+
|
|
10
|
+
const GroupCell = (props) => {
|
|
11
|
+
const provider = useTaskDataProvider();
|
|
12
|
+
const record = props.data;
|
|
13
|
+
const node = props.node;
|
|
14
|
+
const expanded = node.expanded;
|
|
15
|
+
const hasChildren = provider.getRecordTree().hasChildren(record.getRecordId());
|
|
16
|
+
const rerender = useRerender();
|
|
17
|
+
const styles = React.useMemo(() => getGroupCellStyles(getTheme(), expanded), [expanded]);
|
|
18
|
+
const buttonRef = useRef(null);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
node.addEventListener('expandedChanged', rerender);
|
|
21
|
+
return () => node.removeEventListener('expandedChanged', rerender);
|
|
22
|
+
}, []);
|
|
23
|
+
const toggleExpand = React.useCallback((e) => {
|
|
24
|
+
e.stopPropagation();
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
node.setExpanded(!node.expanded);
|
|
27
|
+
}, []);
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
buttonRef.current?.addEventListener('click', toggleExpand);
|
|
30
|
+
return () => buttonRef.current?.removeEventListener('click', toggleExpand);
|
|
31
|
+
}, [hasChildren]);
|
|
32
|
+
const getGroupOffset = () => {
|
|
33
|
+
if (provider.isFlatListEnabled()) {
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const offset = 32;
|
|
38
|
+
const hasChildren = provider.getRecordTree().hasChildren(record?.getRecordId());
|
|
39
|
+
switch (true) {
|
|
40
|
+
case node.level === 0 && provider.getRecordTree().isFlat(): {
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
case !hasChildren: {
|
|
44
|
+
return node.level * offset + offset;
|
|
45
|
+
}
|
|
46
|
+
default: {
|
|
47
|
+
return node.level * offset;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const shouldShowChevron = () => {
|
|
53
|
+
switch (true) {
|
|
54
|
+
case provider.isFlatListEnabled():
|
|
55
|
+
case !hasChildren: {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
default: {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return jsxs("div", { style: { paddingLeft: getGroupOffset() }, className: styles.root, children: [shouldShowChevron() &&
|
|
64
|
+
jsx(IconButton, { elementRef: buttonRef, iconProps: {
|
|
65
|
+
iconName: 'ChevronRight'
|
|
66
|
+
}, className: styles.chevronButton }), jsx(Cell, { ...props })] });
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { GroupCell };
|
|
70
|
+
//# sourceMappingURL=GroupCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupCell.js","sources":["../../../../../../src/components/TaskGrid/components/grid/group-cell/GroupCell.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Cell, ICellProps } from '../../../../Grid/cells/cell/Cell'\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { getTheme, IconButton } from \"@fluentui/react\";\nimport { useRerender } from '@talxis/react-components';\nimport { getGroupCellStyles } from \"./styles\";\nimport { useRef } from \"react\";\nimport { useTaskDataProvider } from \"../../../context\";\n\ninterface IProps extends ICellProps {\n data: IRecord;\n}\n\nexport const GroupCell = (props: IProps) => {\n const provider = useTaskDataProvider();\n const record = props.data;\n const node = props.node;\n const expanded = node.expanded;\n const hasChildren = provider.getRecordTree().hasChildren(record.getRecordId());\n const rerender = useRerender()\n const styles = React.useMemo(() => getGroupCellStyles(getTheme(), expanded), [expanded]);\n const buttonRef = useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n node.addEventListener('expandedChanged', rerender);\n return () => node.removeEventListener('expandedChanged', rerender)\n }, []);\n\n const toggleExpand = React.useCallback((e) => {\n e.stopPropagation();\n e.preventDefault();\n node.setExpanded(!node.expanded)\n }, []);\n\n React.useEffect(() => {\n buttonRef.current?.addEventListener('click', toggleExpand);\n return () => buttonRef.current?.removeEventListener('click', toggleExpand);\n }, [hasChildren]);\n\n const getGroupOffset = () => {\n if (provider.isFlatListEnabled()) {\n return 0;\n }\n else {\n const offset = 32;\n const hasChildren = provider.getRecordTree().hasChildren(record?.getRecordId());\n switch (true) {\n case node.level === 0 && provider.getRecordTree().isFlat(): {\n return 0;\n }\n case !hasChildren: {\n return node.level * offset + offset;\n }\n default: {\n return node.level * offset\n }\n }\n }\n }\n\n const shouldShowChevron = (): boolean => {\n switch (true) {\n case provider.isFlatListEnabled():\n case !hasChildren: {\n return false;\n }\n default: {\n return true;\n }\n }\n }\n\n return <div style={{ paddingLeft: getGroupOffset() }} className={styles.root}>\n {shouldShowChevron() &&\n <IconButton\n elementRef={buttonRef}\n iconProps={{\n iconName: 'ChevronRight'\n }}\n className={styles.chevronButton}\n />\n }\n <Cell {...props} />\n </div>\n}"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './GroupCell';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|