@talxis/base-controls 1.2512.4 → 1.2601.1
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/Filtering/DatasetColumnFiltering.js +14 -11
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js.map +1 -1
- package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.d.ts +14 -2
- package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js +41 -7
- package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js.map +1 -1
- package/dist/components/DatasetControl/Header/Header.js +9 -2
- package/dist/components/DatasetControl/Header/Header.js.map +1 -1
- package/dist/components/DatasetControl/interfaces.d.ts +3 -1
- package/dist/components/Grid/cells/cell/Cell.js +17 -6
- package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
- package/dist/components/Grid/grid/Grid.js +26 -13
- package/dist/components/Grid/grid/Grid.js.map +1 -1
- package/dist/components/Grid/grid/GridModel.d.ts +0 -1
- package/dist/components/Grid/grid/GridModel.js +1 -7
- package/dist/components/Grid/grid/GridModel.js.map +1 -1
- package/dist/components/Grid/grid/styles.d.ts +3 -0
- package/dist/components/Grid/grid/styles.js +3 -0
- package/dist/components/Grid/grid/styles.js.map +1 -1
- package/dist/components/Grid/interfaces.d.ts +1 -8
- package/dist/components/Grid/overlays/loading/LoadingOverlay.js +11 -3
- package/dist/components/Grid/overlays/loading/LoadingOverlay.js.map +1 -1
- package/dist/components/Grid/overlays/loading/styles.d.ts +10 -0
- package/dist/components/Grid/overlays/loading/styles.js +17 -0
- package/dist/components/Grid/overlays/loading/styles.js.map +1 -0
- package/dist/index.d.ts +5 -10
- package/package.json +2 -2
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { ThemeProvider, PrimaryButton, DefaultButton } from '@fluentui/react';
|
|
3
3
|
import { datasetColumnFilteringTranslations } from './translations.js';
|
|
4
|
-
import React, { useState,
|
|
4
|
+
import React, { useState, useMemo, useCallback, useEffect } from 'react';
|
|
5
5
|
import { DatasetColumnFilteringModel } from './DatasetColumnFilteringModel.js';
|
|
6
6
|
import { useRerender } from '@talxis/react-components';
|
|
7
7
|
import { getDatasetColumnFilteringStyles } from './styles.js';
|
|
8
8
|
import { useDebouncedCallback } from 'use-debounce';
|
|
9
|
-
import {
|
|
9
|
+
import { useEventEmitter } from '../../../hooks/useEventEmitter.js';
|
|
10
10
|
import { useControl } from '../../../hooks/useControl.js';
|
|
11
11
|
import { OptionSet } from '../../OptionSet/OptionSet.js';
|
|
12
12
|
import { NestedControlRenderer } from '../../NestedControlRenderer/NestedControlRenderer.js';
|
|
@@ -25,6 +25,16 @@ const DatasetColumnFiltering = (props) => {
|
|
|
25
25
|
const condition = columnFilter.getConditions()[0];
|
|
26
26
|
const rerender = useRerender();
|
|
27
27
|
const [shouldRemountValueControl, setShouldRemountValueControl] = useState(false);
|
|
28
|
+
const model = useMemo(() => {
|
|
29
|
+
return new DatasetColumnFilteringModel({
|
|
30
|
+
condition: condition,
|
|
31
|
+
labels: labels,
|
|
32
|
+
filtering: filtering
|
|
33
|
+
});
|
|
34
|
+
}, []);
|
|
35
|
+
useEventEmitter(model, 'onSave', (result) => onSave(result));
|
|
36
|
+
useEventEmitter(model, 'onConditionValueChanged', rerender);
|
|
37
|
+
useEventEmitter(condition, 'onOperatorChanged', () => onOperatorChanged());
|
|
28
38
|
const onOperatorChanged = useCallback(() => {
|
|
29
39
|
setShouldRemountValueControl(true);
|
|
30
40
|
}, []);
|
|
@@ -36,9 +46,7 @@ const DatasetColumnFiltering = (props) => {
|
|
|
36
46
|
return value == null;
|
|
37
47
|
});
|
|
38
48
|
};
|
|
39
|
-
const onSave = () => {
|
|
40
|
-
condition.setIsValueRequired(true);
|
|
41
|
-
const result = filtering.getFilterExpression(Type.And.Value);
|
|
49
|
+
const onSave = (result) => {
|
|
42
50
|
if (!result) {
|
|
43
51
|
rerender();
|
|
44
52
|
}
|
|
@@ -53,11 +61,6 @@ const DatasetColumnFiltering = (props) => {
|
|
|
53
61
|
const debouncedSetConditionControlValue = useDebouncedCallback((value, index) => {
|
|
54
62
|
model.setConditionValue(value, index);
|
|
55
63
|
});
|
|
56
|
-
const model = useMemo(() => {
|
|
57
|
-
condition.addEventListener('onOperatorChanged', onOperatorChanged);
|
|
58
|
-
condition.addEventListener('onValueChanged', rerender);
|
|
59
|
-
return new DatasetColumnFilteringModel(condition, labels);
|
|
60
|
-
}, []);
|
|
61
64
|
const conditionValue = model.getConditionValue();
|
|
62
65
|
const validationResult = condition.getValidationResult();
|
|
63
66
|
const styles = useMemo(() => getDatasetColumnFilteringStyles(), []);
|
|
@@ -152,7 +155,7 @@ const DatasetColumnFiltering = (props) => {
|
|
|
152
155
|
return jsxs("div", { ...props.container, children: [props.onRenderApplyButton({
|
|
153
156
|
text: 'Apply',
|
|
154
157
|
disabled: condition.isValueLoading(),
|
|
155
|
-
onClick:
|
|
158
|
+
onClick: () => model.save(),
|
|
156
159
|
}, (props) => jsx(PrimaryButton, { ...props })), props.onRenderClearButton({
|
|
157
160
|
text: 'Clear',
|
|
158
161
|
disabled: isClearButtonDisabled(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetColumnFiltering.js","sources":["../../../../src/components/DatasetControl/Filtering/DatasetColumnFiltering.tsx"],"sourcesContent":["import { DefaultButton, DirectionalHint, PrimaryButton, ThemeProvider } from \"@fluentui/react\";\nimport { useControl } from \"../../../hooks\"\nimport { OptionSet } from \"../../OptionSet\";\nimport { IDatasetColumnFiltering } from \"./interfaces\";\nimport { datasetColumnFilteringTranslations } from \"./translations\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { DatasetColumnFilteringModel } from \"./DatasetColumnFilteringModel\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { NestedControlRenderer } from \"../../NestedControlRenderer\";\nimport React from \"react\";\nimport { getDatasetColumnFilteringStyles } from \"./styles\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { Type as FilterType } from \"@talxis/client-libraries\";\n\nexport const DatasetColumnFiltering = (props: IDatasetColumnFiltering) => {\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const { labels, theme, onNotifyOutputChanged } = useControl('DatasetFiltering', props, datasetColumnFilteringTranslations);\n const context = props.context;\n const filtering = props.parameters.Filtering;\n const columnFilter = props.parameters.Filtering.getColumnFilter(props.parameters.ColumnName.raw!);\n //automatically create a condition if it's not present\n if (columnFilter.getConditions().length === 0) {\n columnFilter.addCondition();\n }\n //this is the first condition, we assume that the control is used for a single condition\n const condition = columnFilter.getConditions()[0];\n const rerender = useRerender();\n const [shouldRemountValueControl, setShouldRemountValueControl] = useState(false);\n\n const onOperatorChanged = useCallback(() => {\n setShouldRemountValueControl(true);\n }, []);\n\n const isClearButtonDisabled = () => {\n if (condition.isValueLoading()) {\n return true;\n }\n return model.getConditionValue().every(value => {\n return value == null;\n });\n }\n const onSave = () => {\n condition.setIsValueRequired(true);\n const result = filtering.getFilterExpression(FilterType.And.Value);\n if (!result) {\n rerender();\n }\n else {\n onNotifyOutputChanged(result)\n }\n }\n\n const onClear = () => {\n condition.setValue(null);\n setShouldRemountValueControl(true);\n }\n\n const debouncedSetConditionControlValue = useDebouncedCallback((value, index) => {\n model.setConditionValue(value, index);\n })\n\n const model = useMemo(() => {\n condition.addEventListener('onOperatorChanged', onOperatorChanged);\n condition.addEventListener('onValueChanged', rerender);\n return new DatasetColumnFilteringModel(condition, labels)\n }, []);\n\n const conditionValue = model.getConditionValue();\n const validationResult = condition.getValidationResult();\n const styles = useMemo(() => getDatasetColumnFilteringStyles(), []);\n\n const componentProps = onOverrideComponentProps({\n onRender: (props, defaultRender) => defaultRender(props),\n })\n\n useEffect(() => {\n if (shouldRemountValueControl) {\n setShouldRemountValueControl(false);\n }\n }, [shouldRemountValueControl])\n\n return componentProps.onRender({\n container: {\n theme: theme,\n className: styles.datasetColumnFilteringRoot\n },\n valueControlsContainer: {\n className: styles.valueControlsContainer\n },\n onRenderConditionOperatorControl: (props, defaultRender) => defaultRender(props),\n onRenderConditionValueControl: (props, defaultRender) => defaultRender(props),\n onRenderButtons: (props, defaultRender) => defaultRender(props),\n\n }, (props) => {\n return <ThemeProvider {...props.container}>\n {props.onRenderConditionOperatorControl({\n context: context,\n //@ts-ignore - typings\n onNotifyOutputChanged: (outputs) => condition.setOperator(outputs.value),\n parameters: {\n value: {\n raw: condition.getOperator(),\n //@ts-ignore - typings\n attributes: {\n Options: model.getOperatorOptionSet()\n }\n }\n },\n }, (props) => <OptionSet {...props} />)}\n <div {...props.valueControlsContainer}>\n {!shouldRemountValueControl &&\n <>\n {\n conditionValue.map((value, index) => {\n return <React.Fragment key={index}>\n {props.onRenderConditionValueControl({\n context: context,\n onOverrideComponentProps: (props) => {\n return {\n ...props,\n onOverrideIsLoading: () => condition.isValueLoading()\n }\n },\n parameters: {\n ControlName: model.getControlName()!,\n LoadingType: 'shimmer',\n Bindings: {\n value: {\n isStatic: false,\n value: value,\n type: condition.getDataType() ?? 'SingleLine.Text',\n error: validationResult[index].error,\n errorMessage: validationResult[index].errorMessage,\n metadata: {\n onOverrideMetadata: () => {\n return {\n ...condition.getMetadata()\n }\n }\n },\n onNotifyOutputChanged: (value) => debouncedSetConditionControlValue(value, index)\n },\n AutoFocus: {\n isStatic: true,\n value: index === 0 && conditionValue.length === 1,\n type: 'TwoOptions'\n },\n ShowErrorMessage: {\n isStatic: true,\n value: true,\n type: 'TwoOptions'\n },\n ...condition.getBindings()\n }\n }\n }, (props) => {\n if (!model.getControlName()) {\n return <></>\n }\n return <NestedControlRenderer {...props} />\n })}\n </React.Fragment>\n })\n }\n </>\n }\n </div>\n {props.onRenderButtons({\n container: {\n className: styles.buttons\n },\n onRenderApplyButton: (props, defaultRender) => defaultRender(props),\n onRenderClearButton: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n return <div {...props.container}>\n {props.onRenderApplyButton({\n text: 'Apply',\n disabled: condition.isValueLoading(),\n onClick: onSave,\n }, (props) => <PrimaryButton {...props} />)}\n {props.onRenderClearButton({\n text: 'Clear',\n disabled: isClearButtonDisabled(),\n onClick: onClear\n }, (props) => <DefaultButton\n {...props} />)}\n </div>\n })}\n </ThemeProvider>\n })\n}"],"names":["FilterType","_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatasetColumnFiltering.js","sources":["../../../../src/components/DatasetControl/Filtering/DatasetColumnFiltering.tsx"],"sourcesContent":["import { DefaultButton, DirectionalHint, PrimaryButton, ThemeProvider } from \"@fluentui/react\";\nimport { useControl, useEventEmitter } from \"../../../hooks\"\nimport { OptionSet } from \"../../OptionSet\";\nimport { IDatasetColumnFiltering } from \"./interfaces\";\nimport { datasetColumnFilteringTranslations } from \"./translations\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { DatasetColumnFilteringModel, IDatasetColumnFilteringModelEvents } from \"./DatasetColumnFilteringModel\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { NestedControlRenderer } from \"../../NestedControlRenderer\";\nimport React from \"react\";\nimport { getDatasetColumnFilteringStyles } from \"./styles\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { IConditionEvents } from \"@talxis/client-libraries\";\n\nexport const DatasetColumnFiltering = (props: IDatasetColumnFiltering) => {\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n const { labels, theme, onNotifyOutputChanged } = useControl('DatasetFiltering', props, datasetColumnFilteringTranslations);\n const context = props.context;\n const filtering = props.parameters.Filtering;\n const columnFilter = props.parameters.Filtering.getColumnFilter(props.parameters.ColumnName.raw!);\n //automatically create a condition if it's not present\n if (columnFilter.getConditions().length === 0) {\n columnFilter.addCondition();\n }\n //this is the first condition, we assume that the control is used for a single condition\n const condition = columnFilter.getConditions()[0];\n const rerender = useRerender();\n const [shouldRemountValueControl, setShouldRemountValueControl] = useState(false);\n const model = useMemo(() => {\n return new DatasetColumnFilteringModel({\n condition: condition,\n labels: labels,\n filtering: filtering\n })\n }, []);\n useEventEmitter<IDatasetColumnFilteringModelEvents>(model, 'onSave', (result) => onSave(result));\n useEventEmitter<IDatasetColumnFilteringModelEvents>(model, 'onConditionValueChanged', rerender);\n useEventEmitter<IConditionEvents>(condition, 'onOperatorChanged', () => onOperatorChanged());\n\n const onOperatorChanged = useCallback(() => {\n setShouldRemountValueControl(true);\n }, []);\n\n const isClearButtonDisabled = () => {\n if (condition.isValueLoading()) {\n return true;\n }\n return model.getConditionValue().every(value => {\n return value == null;\n });\n }\n const onSave = (result: false | ComponentFramework.PropertyHelper.DataSetApi.FilterExpression) => {\n if (!result) {\n rerender();\n }\n else {\n onNotifyOutputChanged(result)\n }\n }\n\n const onClear = () => {\n condition.setValue(null);\n setShouldRemountValueControl(true);\n }\n\n const debouncedSetConditionControlValue = useDebouncedCallback((value, index) => {\n model.setConditionValue(value, index);\n });\n\n const conditionValue = model.getConditionValue();\n const validationResult = condition.getValidationResult();\n const styles = useMemo(() => getDatasetColumnFilteringStyles(), []);\n\n const componentProps = onOverrideComponentProps({\n onRender: (props, defaultRender) => defaultRender(props),\n })\n\n useEffect(() => {\n if (shouldRemountValueControl) {\n setShouldRemountValueControl(false);\n }\n }, [shouldRemountValueControl])\n\n return componentProps.onRender({\n container: {\n theme: theme,\n className: styles.datasetColumnFilteringRoot\n },\n valueControlsContainer: {\n className: styles.valueControlsContainer\n },\n onRenderConditionOperatorControl: (props, defaultRender) => defaultRender(props),\n onRenderConditionValueControl: (props, defaultRender) => defaultRender(props),\n onRenderButtons: (props, defaultRender) => defaultRender(props),\n\n }, (props) => {\n return <ThemeProvider {...props.container}>\n {props.onRenderConditionOperatorControl({\n context: context,\n //@ts-ignore - typings\n onNotifyOutputChanged: (outputs) => condition.setOperator(outputs.value),\n parameters: {\n value: {\n raw: condition.getOperator(),\n //@ts-ignore - typings\n attributes: {\n Options: model.getOperatorOptionSet()\n }\n }\n },\n }, (props) => <OptionSet {...props} />)}\n <div {...props.valueControlsContainer}>\n {!shouldRemountValueControl &&\n <>\n {\n conditionValue.map((value, index) => {\n return <React.Fragment key={index}>\n {props.onRenderConditionValueControl({\n context: context,\n onOverrideComponentProps: (props) => {\n return {\n ...props,\n onOverrideIsLoading: () => condition.isValueLoading()\n }\n },\n parameters: {\n ControlName: model.getControlName()!,\n LoadingType: 'shimmer',\n Bindings: {\n value: {\n isStatic: false,\n value: value,\n type: condition.getDataType() ?? 'SingleLine.Text',\n error: validationResult[index].error,\n errorMessage: validationResult[index].errorMessage,\n metadata: {\n onOverrideMetadata: () => {\n return {\n ...condition.getMetadata()\n }\n }\n },\n onNotifyOutputChanged: (value) => debouncedSetConditionControlValue(value, index)\n },\n AutoFocus: {\n isStatic: true,\n value: index === 0 && conditionValue.length === 1,\n type: 'TwoOptions'\n },\n ShowErrorMessage: {\n isStatic: true,\n value: true,\n type: 'TwoOptions'\n },\n ...condition.getBindings()\n }\n }\n }, (props) => {\n if (!model.getControlName()) {\n return <></>\n }\n return <NestedControlRenderer {...props} />\n })}\n </React.Fragment>\n })\n }\n </>\n }\n </div>\n {props.onRenderButtons({\n container: {\n className: styles.buttons\n },\n onRenderApplyButton: (props, defaultRender) => defaultRender(props),\n onRenderClearButton: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n return <div {...props.container}>\n {props.onRenderApplyButton({\n text: 'Apply',\n disabled: condition.isValueLoading(),\n onClick: () => model.save(),\n }, (props) => <PrimaryButton {...props} />)}\n {props.onRenderClearButton({\n text: 'Clear',\n disabled: isClearButtonDisabled(),\n onClick: onClear\n }, (props) => <DefaultButton\n {...props} />)}\n </div>\n })}\n </ThemeProvider>\n })\n}"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
/// <reference types="@types/powerapps-component-framework" />
|
|
2
|
+
import { EventEmitter, Filtering } from "@talxis/client-libraries";
|
|
2
3
|
import { ITranslation } from "../../../hooks";
|
|
3
4
|
import { datasetColumnFilteringTranslations } from "./translations";
|
|
4
5
|
import { Condition } from '@talxis/client-libraries';
|
|
5
6
|
type Labels = Required<ITranslation<typeof datasetColumnFilteringTranslations>>;
|
|
6
|
-
export
|
|
7
|
+
export interface IDatasetColumnFilteringModelEvents {
|
|
8
|
+
onSave: (result: false | ComponentFramework.PropertyHelper.DataSetApi.FilterExpression) => void;
|
|
9
|
+
onConditionValueChanged: () => void;
|
|
10
|
+
}
|
|
11
|
+
interface IDatasetColumnFilteringModelOptions {
|
|
12
|
+
condition: Condition;
|
|
13
|
+
labels: Labels;
|
|
14
|
+
filtering: Filtering;
|
|
15
|
+
}
|
|
16
|
+
export declare class DatasetColumnFilteringModel extends EventEmitter<IDatasetColumnFilteringModelEvents> {
|
|
7
17
|
private _condition;
|
|
8
18
|
private _labels;
|
|
9
|
-
|
|
19
|
+
private _filtering;
|
|
20
|
+
constructor(options: IDatasetColumnFilteringModelOptions);
|
|
10
21
|
getOperatorOptionSet(): ComponentFramework.PropertyHelper.OptionMetadata[];
|
|
11
22
|
setConditionValue(value: any, index: number): void;
|
|
12
23
|
getConditionValue(): any[];
|
|
13
24
|
getControlName(): "Decimal" | "TextField" | "OptionSet" | "MultiSelectOptionSet" | "DateTime" | "Duration" | "Lookup" | "TwoOptions" | null;
|
|
25
|
+
save(): void;
|
|
14
26
|
}
|
|
15
27
|
export {};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { Operators } from '@talxis/client-libraries';
|
|
1
|
+
import { EventEmitter, Operators, Type } from '@talxis/client-libraries';
|
|
2
2
|
import { BaseControls } from '../../../utils/BaseControls.js';
|
|
3
3
|
|
|
4
|
-
class DatasetColumnFilteringModel {
|
|
5
|
-
constructor(
|
|
6
|
-
|
|
7
|
-
this.
|
|
4
|
+
class DatasetColumnFilteringModel extends EventEmitter {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
super();
|
|
7
|
+
this._condition = options.condition;
|
|
8
|
+
this._labels = options.labels;
|
|
9
|
+
this._filtering = options.filtering;
|
|
8
10
|
}
|
|
9
11
|
getOperatorOptionSet() {
|
|
10
12
|
const operators = this._condition.getColumn().metadata?.SupportedFilterConditionOperators ?? [];
|
|
@@ -32,13 +34,24 @@ class DatasetColumnFilteringModel {
|
|
|
32
34
|
}
|
|
33
35
|
this._condition.setValue(values);
|
|
34
36
|
}
|
|
37
|
+
this.dispatchEvent('onConditionValueChanged');
|
|
35
38
|
}
|
|
36
39
|
getConditionValue() {
|
|
37
40
|
const operator = this._condition.getOperator();
|
|
41
|
+
let value = this._condition.getControlValue();
|
|
42
|
+
switch (operator) {
|
|
43
|
+
case Operators.Like.Value:
|
|
44
|
+
case Operators.NotLike.Value: {
|
|
45
|
+
if (typeof value === 'string' && value.startsWith('*')) {
|
|
46
|
+
value = value.substring(1);
|
|
47
|
+
this._condition.setValue(value);
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
38
52
|
if (operator !== Operators.Between.Value && operator !== Operators.NotBetween.Value) {
|
|
39
|
-
return [
|
|
53
|
+
return [value];
|
|
40
54
|
}
|
|
41
|
-
const value = this._condition.getControlValue();
|
|
42
55
|
if (Array.isArray(value)) {
|
|
43
56
|
return value;
|
|
44
57
|
}
|
|
@@ -53,6 +66,27 @@ class DatasetColumnFilteringModel {
|
|
|
53
66
|
return BaseControls.GetControlNameForDataType(dataType);
|
|
54
67
|
}
|
|
55
68
|
}
|
|
69
|
+
save() {
|
|
70
|
+
const operator = this._condition.getOperator();
|
|
71
|
+
switch (operator) {
|
|
72
|
+
case Operators.Like.Value:
|
|
73
|
+
case Operators.NotLike.Value: {
|
|
74
|
+
this._condition.setValue(`*${this._condition.getControlValue() ?? ''}`);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
this._condition.setIsValueRequired(true);
|
|
79
|
+
const result = this._filtering.getFilterExpression(Type.And.Value);
|
|
80
|
+
if (!result) {
|
|
81
|
+
switch (operator) {
|
|
82
|
+
case Operators.Like.Value:
|
|
83
|
+
case Operators.NotLike.Value: {
|
|
84
|
+
this._condition.setValue(this._condition.getControlValue()?.substring(1));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
this.dispatchEvent('onSave', result);
|
|
89
|
+
}
|
|
56
90
|
}
|
|
57
91
|
|
|
58
92
|
export { DatasetColumnFilteringModel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetColumnFilteringModel.js","sources":["../../../../src/components/DatasetControl/Filtering/DatasetColumnFilteringModel.ts"],"sourcesContent":["import { Operators } from \"@talxis/client-libraries\";\nimport { ITranslation } from \"../../../hooks\";\nimport { datasetColumnFilteringTranslations } from \"./translations\";\nimport { BaseControls } from \"../../../utils\";\nimport { Condition } from '@talxis/client-libraries';\n\ntype Labels = Required<ITranslation<typeof datasetColumnFilteringTranslations>>;\n\nexport class DatasetColumnFilteringModel {\n private _condition: Condition;\n private _labels: Labels;\n\n constructor(
|
|
1
|
+
{"version":3,"file":"DatasetColumnFilteringModel.js","sources":["../../../../src/components/DatasetControl/Filtering/DatasetColumnFilteringModel.ts"],"sourcesContent":["import { EventEmitter, Filtering, Operators, Type } from \"@talxis/client-libraries\";\nimport { ITranslation } from \"../../../hooks\";\nimport { datasetColumnFilteringTranslations } from \"./translations\";\nimport { BaseControls } from \"../../../utils\";\nimport { Condition } from '@talxis/client-libraries';\n\ntype Labels = Required<ITranslation<typeof datasetColumnFilteringTranslations>>;\n\nexport interface IDatasetColumnFilteringModelEvents {\n onSave: (result: false | ComponentFramework.PropertyHelper.DataSetApi.FilterExpression) => void;\n onConditionValueChanged: () => void;\n}\n\ninterface IDatasetColumnFilteringModelOptions {\n condition: Condition;\n labels: Labels;\n filtering: Filtering;\n}\n\nexport class DatasetColumnFilteringModel extends EventEmitter<IDatasetColumnFilteringModelEvents> {\n private _condition: Condition;\n private _labels: Labels;\n private _filtering: Filtering;\n\n constructor(options: IDatasetColumnFilteringModelOptions) {\n super();\n this._condition = options.condition;\n this._labels = options.labels;\n this._filtering = options.filtering;\n }\n\n public getOperatorOptionSet(): ComponentFramework.PropertyHelper.OptionMetadata[] {\n const operators = this._condition.getColumn().metadata?.SupportedFilterConditionOperators ?? []\n return operators.map(operator => {\n return {\n Value: operator,\n //@ts-ignore - typings\n Label: this._labels[`operator-${operator}`](),\n Color: ''\n }\n })\n }\n\n public setConditionValue(value: any, index: number) {\n const operator = this._condition.getOperator();\n if (operator !== Operators.Between.Value && operator !== Operators.NotBetween.Value) {\n this._condition.setValue(value);\n }\n else {\n const values = [this._condition.getControlValue()?.[0] ?? null, this._condition.getControlValue()?.[1] ?? null];\n if (index === 0) {\n values[0] = value;\n }\n else {\n values[1] = value;\n }\n this._condition.setValue(values);\n }\n this.dispatchEvent('onConditionValueChanged');\n }\n\n public getConditionValue(): any[] {\n const operator = this._condition.getOperator();\n let value = this._condition.getControlValue();\n switch (operator) {\n case Operators.Like.Value:\n case Operators.NotLike.Value: {\n if(typeof value === 'string' && value.startsWith('*')) {\n value = value.substring(1);\n this._condition.setValue(value);\n }\n break;\n }\n }\n if (operator !== Operators.Between.Value && operator !== Operators.NotBetween.Value) {\n return [value];\n }\n if (Array.isArray(value)) {\n return value;\n }\n return [null, null];\n }\n\n public getControlName() {\n const dataType = this._condition.getDataType();\n if (!dataType) {\n return null;\n }\n else {\n return BaseControls.GetControlNameForDataType(dataType);\n }\n }\n public save() {\n const operator = this._condition.getOperator();\n switch (operator) {\n case Operators.Like.Value:\n case Operators.NotLike.Value: {\n this._condition.setValue(`*${this._condition.getControlValue() ?? ''}`);\n break;\n }\n }\n this._condition.setIsValueRequired(true);\n const result = this._filtering.getFilterExpression(Type.And.Value);\n if (!result) {\n switch (operator) {\n case Operators.Like.Value:\n case Operators.NotLike.Value: {\n this._condition.setValue(this._condition.getControlValue()?.substring(1))\n }\n }\n }\n this.dispatchEvent('onSave', result);\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -44,16 +44,23 @@ const Header = (props) => {
|
|
|
44
44
|
ribbonQuickFindContainerProps: {
|
|
45
45
|
className: styles.ribbonQuickFindContainer
|
|
46
46
|
},
|
|
47
|
+
isRibbonVisible: datasetControl.isRibbonVisible(),
|
|
48
|
+
isQuickFindVisible: datasetControl.isQuickFindVisible(),
|
|
47
49
|
onRenderQuickFind: (props, defaultRender) => defaultRender(props),
|
|
48
50
|
onRenderRibbon: (props, defaultRender) => defaultRender(props)
|
|
49
51
|
}, (props) => {
|
|
50
|
-
return jsxs("div", { ...props.ribbonQuickFindContainerProps, children: [
|
|
52
|
+
return jsxs("div", { ...props.ribbonQuickFindContainerProps, children: [props.isRibbonVisible &&
|
|
51
53
|
jsx(Ribbon, { context: {
|
|
52
54
|
...datasetControl.getPcfContext(),
|
|
53
55
|
mode: {
|
|
54
56
|
...datasetControl.getPcfContext().mode,
|
|
55
57
|
isControlDisabled: dataset.loading
|
|
56
58
|
}
|
|
59
|
+
}, onOverrideComponentProps: (ribbonProps) => {
|
|
60
|
+
return {
|
|
61
|
+
...ribbonProps,
|
|
62
|
+
onRender: props.onRenderRibbon
|
|
63
|
+
};
|
|
57
64
|
}, parameters: {
|
|
58
65
|
Commands: {
|
|
59
66
|
raw: datasetControl.retrieveRecordCommands(),
|
|
@@ -61,7 +68,7 @@ const Header = (props) => {
|
|
|
61
68
|
Loading: {
|
|
62
69
|
raw: !datasetControl.areCommandsLoaded()
|
|
63
70
|
}
|
|
64
|
-
} }),
|
|
71
|
+
} }), props.isQuickFindVisible &&
|
|
65
72
|
jsx(QuickFind, { onRenderQuickFind: props.onRenderQuickFind })] });
|
|
66
73
|
}), dataset.error &&
|
|
67
74
|
props.onRenderErrorMessageBar({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../src/components/DatasetControl/Header/Header.tsx"],"sourcesContent":["import { MessageBar, MessageBarType } from \"@fluentui/react\";\nimport { IComponentProps } from \"../interfaces\";\nimport { useModel } from \"../useModel\";\nimport { useMemo } from \"react\";\nimport { getHeaderStyles } from \"./styles\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { QuickFind } from \"../QuickFind/QuickFind\";\nimport { Ribbon } from \"../../Ribbon/Ribbon\";\nimport { useEventEmitter } from \"../../../hooks/useEventEmitter\";\nimport { IDataProviderEventListeners } from \"@talxis/client-libraries\";\nimport { IDatasetControlEvents } from \"../../../utils/dataset-control\";\n\nexport const Header = (props: { onRenderHeader: IComponentProps['onRenderHeader'] }) => {\n const model = useModel();\n const datasetControl = model.getDatasetControl();\n const dataset = datasetControl.getDataset();\n const rerender = useRerender();\n const styles = useMemo(() => getHeaderStyles(), []);\n useEventEmitter<IDataProviderEventListeners>(dataset, 'onLoading', rerender);\n useEventEmitter<IDatasetControlEvents>(datasetControl, 'onRecordCommandsLoaded', rerender);\n\n const isHeaderVisible = () => {\n switch (true) {\n case datasetControl.isQuickFindVisible():\n case dataset.error:\n case datasetControl.isRibbonVisible():\n {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n return props.onRenderHeader({\n headerContainerProps: {\n className: styles.header\n },\n onRenderErrorMessageBar: (props, defaultRender) => defaultRender(props),\n onRenderRibbonQuickFindWrapper: (props, defaultRender) => defaultRender(props),\n onRenderUnsavedChangesMessageBar: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n if (!isHeaderVisible()) {\n return <></>\n }\n return <div {...props.headerContainerProps}>\n {props.onRenderRibbonQuickFindWrapper({\n ribbonQuickFindContainerProps: {\n className: styles.ribbonQuickFindContainer\n },\n onRenderQuickFind: (props, defaultRender) => defaultRender(props),\n onRenderRibbon: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n return <div {...props.ribbonQuickFindContainerProps}>\n {
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../src/components/DatasetControl/Header/Header.tsx"],"sourcesContent":["import { MessageBar, MessageBarType } from \"@fluentui/react\";\nimport { IComponentProps } from \"../interfaces\";\nimport { useModel } from \"../useModel\";\nimport { useMemo } from \"react\";\nimport { getHeaderStyles } from \"./styles\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { QuickFind } from \"../QuickFind/QuickFind\";\nimport { Ribbon } from \"../../Ribbon/Ribbon\";\nimport { useEventEmitter } from \"../../../hooks/useEventEmitter\";\nimport { IDataProviderEventListeners } from \"@talxis/client-libraries\";\nimport { IDatasetControlEvents } from \"../../../utils/dataset-control\";\n\nexport const Header = (props: { onRenderHeader: IComponentProps['onRenderHeader'] }) => {\n const model = useModel();\n const datasetControl = model.getDatasetControl();\n const dataset = datasetControl.getDataset();\n const rerender = useRerender();\n const styles = useMemo(() => getHeaderStyles(), []);\n useEventEmitter<IDataProviderEventListeners>(dataset, 'onLoading', rerender);\n useEventEmitter<IDatasetControlEvents>(datasetControl, 'onRecordCommandsLoaded', rerender);\n\n const isHeaderVisible = () => {\n switch (true) {\n case datasetControl.isQuickFindVisible():\n case dataset.error:\n case datasetControl.isRibbonVisible():\n {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n return props.onRenderHeader({\n headerContainerProps: {\n className: styles.header\n },\n onRenderErrorMessageBar: (props, defaultRender) => defaultRender(props),\n onRenderRibbonQuickFindWrapper: (props, defaultRender) => defaultRender(props),\n onRenderUnsavedChangesMessageBar: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n if (!isHeaderVisible()) {\n return <></>\n }\n return <div {...props.headerContainerProps}>\n {props.onRenderRibbonQuickFindWrapper({\n ribbonQuickFindContainerProps: {\n className: styles.ribbonQuickFindContainer\n },\n isRibbonVisible: datasetControl.isRibbonVisible(),\n isQuickFindVisible: datasetControl.isQuickFindVisible(),\n onRenderQuickFind: (props, defaultRender) => defaultRender(props),\n onRenderRibbon: (props, defaultRender) => defaultRender(props)\n }, (props) => {\n return <div {...props.ribbonQuickFindContainerProps}>\n {props.isRibbonVisible &&\n <Ribbon\n context={{\n ...datasetControl.getPcfContext(),\n mode: {\n ...datasetControl.getPcfContext().mode,\n isControlDisabled: dataset.loading\n }\n }}\n onOverrideComponentProps={(ribbonProps) => {\n return {\n ...ribbonProps,\n onRender: props.onRenderRibbon\n }\n }}\n parameters={{\n Commands: {\n raw: datasetControl.retrieveRecordCommands(),\n },\n Loading: {\n raw: !datasetControl.areCommandsLoaded()\n }\n }}\n />\n }\n {props.isQuickFindVisible &&\n <QuickFind\n onRenderQuickFind={props.onRenderQuickFind} />\n }\n </div>\n })}\n {dataset.error &&\n props.onRenderErrorMessageBar({\n messageBarProps: {\n messageBarType: MessageBarType.error\n },\n onRenderMessageBar: (props, defaultRender) => defaultRender(props)\n\n }, (props) => {\n return <MessageBar {...props.messageBarProps}>\n {dataset.errorMessage}\n </MessageBar>\n })\n }\n </div>\n })\n}"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { IRibbonComponentProps } from "../Ribbon/interfaces";
|
|
|
11
11
|
import { IDatasetControl } from "../../utils/dataset-control";
|
|
12
12
|
export interface IDatasetControlProps extends Omit<IControl<IDatasetControlParameters, IGridOutputs, Partial<ITranslation<typeof datasetControlTranslations & typeof gridTranslations>>, IDatasetControlComponentProps>, 'parameters' | 'context' | 'state'> {
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Used to provide the Dataset control instance.
|
|
15
15
|
*/
|
|
16
16
|
onGetDatasetControlInstance: () => IDatasetControl;
|
|
17
17
|
/**
|
|
@@ -58,6 +58,8 @@ export interface IHeaderProps {
|
|
|
58
58
|
}
|
|
59
59
|
export interface IRibbonQuickFindWrapperProps {
|
|
60
60
|
ribbonQuickFindContainerProps: React.HTMLAttributes<HTMLDivElement>;
|
|
61
|
+
isRibbonVisible: boolean;
|
|
62
|
+
isQuickFindVisible: boolean;
|
|
61
63
|
onRenderQuickFind: (props: IQuickFindProps, defaultRender: (props: IQuickFindProps) => React.ReactElement) => React.ReactElement;
|
|
62
64
|
onRenderRibbon: IRibbonComponentProps['onRender'];
|
|
63
65
|
}
|
|
@@ -126,13 +126,24 @@ const InternalCell = (props) => {
|
|
|
126
126
|
const formatting = props.value.customFormatting;
|
|
127
127
|
const grid = useGridInstance();
|
|
128
128
|
const agGrid = useAgGridInstance();
|
|
129
|
-
const
|
|
129
|
+
const errorRef = useRef(props.value.error);
|
|
130
130
|
const notifications = props.value.notifications;
|
|
131
|
-
const
|
|
131
|
+
const errorMessageRef = useRef(props.value.errorMessage);
|
|
132
132
|
const theme = useTheme();
|
|
133
133
|
const applicationTheme = useControlTheme(grid.getPcfContext().fluentDesignLanguage);
|
|
134
134
|
const rerender = useRerender();
|
|
135
135
|
const styles = useMemo(() => getInnerCellStyles(props.isCellEditor, theme, props.value.columnAlignment, node.expanded), [props.isCellEditor, theme, props.value.columnAlignment, node.expanded]);
|
|
136
|
+
useEventEmitter(record, 'onAfterSaved', (result) => {
|
|
137
|
+
if (!result.success) {
|
|
138
|
+
const errors = result.errors ?? [];
|
|
139
|
+
const fieldError = errors.find(error => error.fieldName === column.name);
|
|
140
|
+
if (fieldError) {
|
|
141
|
+
errorRef.current = true;
|
|
142
|
+
errorMessageRef.current = fieldError.message;
|
|
143
|
+
rerender();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
136
147
|
const shouldShowNotEditableNotification = () => {
|
|
137
148
|
if (column.isEditable && !record.getColumnInfo(column.name).security.editable && record.getSummarizationType() === 'none') {
|
|
138
149
|
return true;
|
|
@@ -143,7 +154,7 @@ const InternalCell = (props) => {
|
|
|
143
154
|
if (props.isCellEditor) {
|
|
144
155
|
return false;
|
|
145
156
|
}
|
|
146
|
-
if (
|
|
157
|
+
if (errorRef.current === true) {
|
|
147
158
|
return true;
|
|
148
159
|
}
|
|
149
160
|
if (shouldShowNotEditableNotification()) {
|
|
@@ -197,12 +208,12 @@ const InternalCell = (props) => {
|
|
|
197
208
|
}
|
|
198
209
|
});
|
|
199
210
|
}
|
|
200
|
-
if (
|
|
211
|
+
if (errorRef.current) {
|
|
201
212
|
result.push({
|
|
202
213
|
key: 'error',
|
|
203
214
|
iconOnly: true,
|
|
204
215
|
disabled: true,
|
|
205
|
-
text:
|
|
216
|
+
text: errorMessageRef.current,
|
|
206
217
|
tooltipHostProps: tooltipProps,
|
|
207
218
|
iconProps: {
|
|
208
219
|
iconName: 'Error',
|
|
@@ -224,7 +235,7 @@ const InternalCell = (props) => {
|
|
|
224
235
|
return false;
|
|
225
236
|
};
|
|
226
237
|
const shouldRenderNotifications = getShouldRenderNotifications();
|
|
227
|
-
return jsx("div", { className: styles.innerCellRoot, "data-is-loading": isLoading(), "data-is-valid": !
|
|
238
|
+
return jsx("div", { className: styles.innerCellRoot, "data-is-loading": isLoading(), "data-is-valid": !errorRef.current, children: renderContent() });
|
|
228
239
|
};
|
|
229
240
|
|
|
230
241
|
export { Cell, InternalCell };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.js","sources":["../../../../../src/components/Grid/cells/cell/Cell.tsx"],"sourcesContent":["import { ICellRendererParams } from \"@ag-grid-community/core\";\nimport { ThemeProvider, useTheme, Shimmer, ICommandBarItemProps, ITooltipHostProps, IconButton, mergeStyleSets } from \"@fluentui/react\";\nimport { IRecord, Constants, DataProvider, IRecordEvents } from \"@talxis/client-libraries\";\nimport { useThemeGenerator, getClassNames, useRerender } from \"@talxis/react-components\";\nimport { useMemo, useEffect, useRef, useCallback } from \"react\";\nimport { useControlTheme } from \"../../../../utils\";\nimport { ICellValues } from \"../../grid/ag-grid/AgGridModel\";\nimport { IGridColumn } from \"../../grid/GridModel\";\nimport { useGridInstance } from \"../../grid/useGridInstance\";\nimport { CellContent } from \"./content/CellContent\";\nimport { Notifications } from \"./notifications/Notifications\";\nimport { getCellStyles, getInnerCellStyles } from \"./styles\";\nimport { useAgGridInstance } from \"../../grid/ag-grid/useAgGridInstance\";\nimport ReactDOM from \"react-dom\";\nimport { GridContext } from \"../../grid/GridContext\";\nimport { AgGridContext } from \"../../grid/ag-grid/AgGridContext\";\nimport { useEventEmitter } from \"../../../../hooks/useEventEmitter\";\n\nexport interface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n isCellEditor: boolean;\n record: IRecord;\n value: ICellValues;\n}\n\nexport const Cell = (props: ICellProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const memoizedContainerRef = useRef<HTMLDivElement | null>();\n const { record, node, baseColumn } = props;\n const column = baseColumn;\n const grid = useGridInstance();\n const agGrid = useAgGridInstance();\n const lastLoadingRefValue = useRef<boolean>(props.value.loading);\n const rerender = useRerender();\n\n const skipCellRendering = (() => {\n const dataProvider = record.getDataProvider();\n const summarizationType = dataProvider.getSummarizationType();\n switch (true) {\n case column.type === 'action': {\n return false;\n }\n case props.value.loading: {\n return false;\n }\n case summarizationType === 'grouping': {\n if (lastLoadingRefValue.current && !props.value.loading) {\n return false;\n }\n const _column = dataProvider.getColumnsMap()[column.name]!;\n if (_column.aggregation?.aggregationFunction && !_column.grouping?.isGrouped) {\n return false;\n }\n if (grid.getGroupType() === 'nested') {\n return dataProvider.grouping.getGroupBys()[0].columnName !== column.name\n }\n return !column.grouping?.isGrouped;\n }\n case summarizationType === 'aggregation': {\n return !dataProvider.getColumnsMap()[column.name]?.aggregation?.aggregationFunction;\n }\n case summarizationType === 'none': {\n return !!column.grouping?.isGrouped\n }\n default: {\n return false;\n }\n }\n })();\n lastLoadingRefValue.current = props.value.loading;\n\n const onCellClick = useCallback((e: MouseEvent) => {\n if (record.getDataProvider().getSummarizationType() === 'grouping' && !grid.isSelectionModifierKeyPressed()) {\n e.stopPropagation();\n }\n else if (node.isSelected()) {\n e.stopPropagation();\n }\n }, []);\n\n const onFieldValueChanged = useCallback(async (columnName: string) => {\n if (columnName !== column.name) {\n return;\n }\n props.api.refreshCells({\n rowNodes: [node]\n })\n setTimeout(() => {\n rerender();\n }, 0);\n }, []);\n\n\n const getTopLevelCellWrapperStyles = () => {\n return mergeStyleSets({\n cellRoot: {\n width: '100%',\n height: (() => {\n if (skipCellRendering && column.autoHeight) {\n return `${grid.getDefaultRowHeight()}px !important`;\n }\n return '100% !important';\n })()\n }\n })\n }\n useEventEmitter<IRecordEvents>(record, 'onFieldValueChanged', onFieldValueChanged);\n\n useEffect(() => {\n memoizedContainerRef.current = containerRef.current;\n containerRef.current?.addEventListener('click', onCellClick);\n return () => {\n containerRef.current?.removeEventListener('click', onCellClick);\n ReactDOM.unmountComponentAtNode(memoizedContainerRef.current!);\n }\n }, []);\n\n\n useEffect(() => {\n if (skipCellRendering) {\n ReactDOM.render(<></>, containerRef.current)\n }\n else {\n ReactDOM.render(\n <GridContext.Provider value={grid}>\n <AgGridContext.Provider value={agGrid}>\n <CellContentWrapper {...props} />\n </AgGridContext.Provider>\n </GridContext.Provider>,\n containerRef.current\n );\n }\n });\n return <div className={getTopLevelCellWrapperStyles().cellRoot} ref={containerRef} />\n}\n\nconst CellContentWrapper = (props: ICellProps) => {\n const { value: cellData, record } = props;\n const { customFormatting } = cellData;\n const cellTheme = useThemeGenerator(customFormatting.primaryColor, customFormatting.backgroundColor, customFormatting.textColor, customFormatting.themeOverride);\n const styles = useMemo(() => getCellStyles(cellTheme), [cellTheme])\n const cellRef = useRef<HTMLDivElement>(null);\n const rerender = useRerender();\n useEventEmitter<IRecordEvents>(record, 'onBeforeSaved', rerender);\n\n return <ThemeProvider\n ref={cellRef}\n theme={cellTheme}\n className={getClassNames([styles.cellRoot, customFormatting.className])}>\n <InternalCell {...props} />\n </ThemeProvider>\n}\n\n\nexport const InternalCell = (props: ICellProps) => {\n const column = props.baseColumn;\n const record = props.record;\n const node = props.node;\n const formatting = props.value.customFormatting;\n const grid = useGridInstance();\n const agGrid = useAgGridInstance();\n const error = props.value.error;\n const notifications = props.value.notifications;\n const errorMessage = props.value.errorMessage;\n const theme = useTheme();\n const applicationTheme = useControlTheme(grid.getPcfContext().fluentDesignLanguage);\n const rerender = useRerender();\n const styles = useMemo(() => getInnerCellStyles(\n props.isCellEditor,\n theme,\n props.value.columnAlignment,\n node.expanded\n ), [props.isCellEditor, theme, props.value.columnAlignment, node.expanded]);\n\n const shouldShowNotEditableNotification = () => {\n if (column.isEditable && !record.getColumnInfo(column.name).security.editable && record.getSummarizationType() === 'none') {\n return true;\n }\n return false;\n }\n\n const getShouldRenderNotifications = (): boolean => {\n if (props.isCellEditor) {\n return false;\n }\n if (error === true) {\n return true;\n }\n if (shouldShowNotEditableNotification()) {\n return true;\n }\n if (notifications && notifications.length > 0) {\n return true;\n }\n return false;\n }\n\n const renderContent = (): JSX.Element => {\n if (isLoading()) {\n return (\n <Shimmer styles={{\n shimmerWrapper: styles.shimmerWrapper,\n root: styles.shimmerRoot\n }} />\n );\n }\n return (\n <>\n {grid.isColumnExpandable(record, column) &&\n <IconButton\n iconProps={{ iconName: 'ChevronRight' }}\n styles={{\n root: styles.groupToggleButtonRoot,\n icon: styles.groupToggleButtonIcon\n }}\n onClick={() => {\n agGrid.toggleGroup(node);\n rerender();\n }} />\n }\n {(column.type !== 'action' || column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) &&\n <CellContent {...props} />\n }\n {shouldRenderNotifications &&\n renderNotifications()\n }\n </>\n )\n }\n\n const getFarNotifications = (): ICommandBarItemProps[] => {\n const result: ICommandBarItemProps[] = [];\n const tooltipProps: ITooltipHostProps = {\n tooltipProps: {\n theme: applicationTheme\n },\n calloutProps: {\n theme: applicationTheme,\n }\n }\n if (shouldShowNotEditableNotification()) {\n result.push({\n key: 'noteditable',\n text: grid.getLabels()['value-not-editable'](),\n iconOnly: true,\n disabled: true,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Uneditable',\n styles: {\n root: styles.uneditableIconRoot\n }\n }\n })\n }\n if (error) {\n result.push({\n key: 'error',\n iconOnly: true,\n disabled: true,\n text: errorMessage,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Error',\n styles: {\n root: styles.errorIconRoot\n }\n }\n })\n }\n return result;\n }\n\n const renderNotifications = (): JSX.Element => {\n return <Notifications\n formatting={formatting}\n isActionColumn={column.type === 'action'}\n columnAlignment={props.value.columnAlignment}\n notifications={notifications}\n farItems={getFarNotifications()} />\n }\n\n const isLoading = () => {\n if (props.value.loading) {\n return true;\n }\n return false;\n }\n const shouldRenderNotifications = getShouldRenderNotifications();\n\n return <div\n className={styles.innerCellRoot}\n data-is-loading={isLoading()}\n data-is-valid={!error}>\n {renderContent()}\n </div>\n}"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cell.js","sources":["../../../../../src/components/Grid/cells/cell/Cell.tsx"],"sourcesContent":["import { ICellRendererParams } from \"@ag-grid-community/core\";\nimport { ThemeProvider, useTheme, Shimmer, ICommandBarItemProps, ITooltipHostProps, IconButton, mergeStyleSets } from \"@fluentui/react\";\nimport { IRecord, Constants, DataProvider, IRecordEvents, IRecordSaveOperationResult } from \"@talxis/client-libraries\";\nimport { useThemeGenerator, getClassNames, useRerender } from \"@talxis/react-components\";\nimport { useMemo, useEffect, useRef, useCallback } from \"react\";\nimport { useControlTheme } from \"../../../../utils\";\nimport { ICellValues } from \"../../grid/ag-grid/AgGridModel\";\nimport { IGridColumn } from \"../../grid/GridModel\";\nimport { useGridInstance } from \"../../grid/useGridInstance\";\nimport { CellContent } from \"./content/CellContent\";\nimport { Notifications } from \"./notifications/Notifications\";\nimport { getCellStyles, getInnerCellStyles } from \"./styles\";\nimport { useAgGridInstance } from \"../../grid/ag-grid/useAgGridInstance\";\nimport ReactDOM from \"react-dom\";\nimport { GridContext } from \"../../grid/GridContext\";\nimport { AgGridContext } from \"../../grid/ag-grid/AgGridContext\";\nimport { useEventEmitter } from \"../../../../hooks/useEventEmitter\";\n\nexport interface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n isCellEditor: boolean;\n record: IRecord;\n value: ICellValues;\n}\n\nexport const Cell = (props: ICellProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const memoizedContainerRef = useRef<HTMLDivElement | null>();\n const { record, node, baseColumn } = props;\n const column = baseColumn;\n const grid = useGridInstance();\n const agGrid = useAgGridInstance();\n const lastLoadingRefValue = useRef<boolean>(props.value.loading);\n const rerender = useRerender();\n\n const skipCellRendering = (() => {\n const dataProvider = record.getDataProvider();\n const summarizationType = dataProvider.getSummarizationType();\n switch (true) {\n case column.type === 'action': {\n return false;\n }\n case props.value.loading: {\n return false;\n }\n case summarizationType === 'grouping': {\n if (lastLoadingRefValue.current && !props.value.loading) {\n return false;\n }\n const _column = dataProvider.getColumnsMap()[column.name]!;\n if (_column.aggregation?.aggregationFunction && !_column.grouping?.isGrouped) {\n return false;\n }\n if (grid.getGroupType() === 'nested') {\n return dataProvider.grouping.getGroupBys()[0].columnName !== column.name\n }\n return !column.grouping?.isGrouped;\n }\n case summarizationType === 'aggregation': {\n return !dataProvider.getColumnsMap()[column.name]?.aggregation?.aggregationFunction;\n }\n case summarizationType === 'none': {\n return !!column.grouping?.isGrouped\n }\n default: {\n return false;\n }\n }\n })();\n lastLoadingRefValue.current = props.value.loading;\n\n const onCellClick = useCallback((e: MouseEvent) => {\n if (record.getDataProvider().getSummarizationType() === 'grouping' && !grid.isSelectionModifierKeyPressed()) {\n e.stopPropagation();\n }\n else if (node.isSelected()) {\n e.stopPropagation();\n }\n }, []);\n\n const onFieldValueChanged = useCallback(async (columnName: string) => {\n if (columnName !== column.name) {\n return;\n }\n props.api.refreshCells({\n rowNodes: [node]\n })\n setTimeout(() => {\n rerender();\n }, 0);\n }, []);\n\n\n const getTopLevelCellWrapperStyles = () => {\n return mergeStyleSets({\n cellRoot: {\n width: '100%',\n height: (() => {\n if (skipCellRendering && column.autoHeight) {\n return `${grid.getDefaultRowHeight()}px !important`;\n }\n return '100% !important';\n })()\n }\n })\n }\n useEventEmitter<IRecordEvents>(record, 'onFieldValueChanged', onFieldValueChanged);\n\n useEffect(() => {\n memoizedContainerRef.current = containerRef.current;\n containerRef.current?.addEventListener('click', onCellClick);\n return () => {\n containerRef.current?.removeEventListener('click', onCellClick);\n ReactDOM.unmountComponentAtNode(memoizedContainerRef.current!);\n }\n }, []);\n\n\n useEffect(() => {\n if (skipCellRendering) {\n ReactDOM.render(<></>, containerRef.current)\n }\n else {\n ReactDOM.render(\n <GridContext.Provider value={grid}>\n <AgGridContext.Provider value={agGrid}>\n <CellContentWrapper {...props} />\n </AgGridContext.Provider>\n </GridContext.Provider>,\n containerRef.current\n );\n }\n });\n return <div className={getTopLevelCellWrapperStyles().cellRoot} ref={containerRef} />\n}\n\nconst CellContentWrapper = (props: ICellProps) => {\n const { value: cellData, record } = props;\n const { customFormatting } = cellData;\n const cellTheme = useThemeGenerator(customFormatting.primaryColor, customFormatting.backgroundColor, customFormatting.textColor, customFormatting.themeOverride);\n const styles = useMemo(() => getCellStyles(cellTheme), [cellTheme])\n const cellRef = useRef<HTMLDivElement>(null);\n const rerender = useRerender();\n useEventEmitter<IRecordEvents>(record, 'onBeforeSaved', rerender);\n\n return <ThemeProvider\n ref={cellRef}\n theme={cellTheme}\n className={getClassNames([styles.cellRoot, customFormatting.className])}>\n <InternalCell {...props} />\n </ThemeProvider>\n}\n\n\nexport const InternalCell = (props: ICellProps) => {\n const column = props.baseColumn;\n const record = props.record;\n const node = props.node;\n const formatting = props.value.customFormatting;\n const grid = useGridInstance();\n const agGrid = useAgGridInstance();\n const errorRef = useRef<boolean>(props.value.error);\n const notifications = props.value.notifications;\n const errorMessageRef = useRef<string | undefined>(props.value.errorMessage);\n const theme = useTheme();\n const applicationTheme = useControlTheme(grid.getPcfContext().fluentDesignLanguage);\n const rerender = useRerender();\n const styles = useMemo(() => getInnerCellStyles(\n props.isCellEditor,\n theme,\n props.value.columnAlignment,\n node.expanded\n ), [props.isCellEditor, theme, props.value.columnAlignment, node.expanded]);\n\n useEventEmitter<IRecordEvents>(record, 'onAfterSaved', (result: IRecordSaveOperationResult) => {\n if(!result.success) {\n const errors = result.errors ?? [];\n const fieldError = errors.find(error => error.fieldName === column.name);\n if(fieldError) {\n errorRef.current = true;\n errorMessageRef.current = fieldError.message;\n rerender();\n }\n }\n });\n\n const shouldShowNotEditableNotification = () => {\n if (column.isEditable && !record.getColumnInfo(column.name).security.editable && record.getSummarizationType() === 'none') {\n return true;\n }\n return false;\n }\n\n const getShouldRenderNotifications = (): boolean => {\n if (props.isCellEditor) {\n return false;\n }\n if (errorRef.current === true) {\n return true;\n }\n if (shouldShowNotEditableNotification()) {\n return true;\n }\n if (notifications && notifications.length > 0) {\n return true;\n }\n return false;\n }\n\n const renderContent = (): JSX.Element => {\n if (isLoading()) {\n return (\n <Shimmer styles={{\n shimmerWrapper: styles.shimmerWrapper,\n root: styles.shimmerRoot\n }} />\n );\n }\n return (\n <>\n {grid.isColumnExpandable(record, column) &&\n <IconButton\n iconProps={{ iconName: 'ChevronRight' }}\n styles={{\n root: styles.groupToggleButtonRoot,\n icon: styles.groupToggleButtonIcon\n }}\n onClick={() => {\n agGrid.toggleGroup(node);\n rerender();\n }} />\n }\n {(column.type !== 'action' || column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) &&\n <CellContent {...props} />\n }\n {shouldRenderNotifications &&\n renderNotifications()\n }\n </>\n )\n }\n\n const getFarNotifications = (): ICommandBarItemProps[] => {\n const result: ICommandBarItemProps[] = [];\n const tooltipProps: ITooltipHostProps = {\n tooltipProps: {\n theme: applicationTheme\n },\n calloutProps: {\n theme: applicationTheme,\n }\n }\n if (shouldShowNotEditableNotification()) {\n result.push({\n key: 'noteditable',\n text: grid.getLabels()['value-not-editable'](),\n iconOnly: true,\n disabled: true,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Uneditable',\n styles: {\n root: styles.uneditableIconRoot\n }\n }\n })\n }\n if (errorRef.current) {\n result.push({\n key: 'error',\n iconOnly: true,\n disabled: true,\n text: errorMessageRef.current,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Error',\n styles: {\n root: styles.errorIconRoot\n }\n }\n })\n }\n return result;\n }\n\n const renderNotifications = (): JSX.Element => {\n return <Notifications\n formatting={formatting}\n isActionColumn={column.type === 'action'}\n columnAlignment={props.value.columnAlignment}\n notifications={notifications}\n farItems={getFarNotifications()} />\n }\n\n const isLoading = () => {\n if (props.value.loading) {\n return true;\n }\n return false;\n }\n const shouldRenderNotifications = getShouldRenderNotifications();\n\n return <div\n className={styles.innerCellRoot}\n data-is-loading={isLoading()}\n data-is-valid={!errorRef.current}>\n {renderContent()}\n </div>\n}"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ const Grid = (props) => {
|
|
|
36
36
|
grid: grid,
|
|
37
37
|
getContainer: () => containerRef.current
|
|
38
38
|
}), []);
|
|
39
|
+
const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);
|
|
39
40
|
const onGridReady = (event) => {
|
|
40
41
|
agGrid.init(event.api);
|
|
41
42
|
gridReadyRef.current = true;
|
|
@@ -45,19 +46,31 @@ const Grid = (props) => {
|
|
|
45
46
|
grid.destroy();
|
|
46
47
|
};
|
|
47
48
|
}, []);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
49
|
+
const componentProps = onOverrideComponentProps({
|
|
50
|
+
getRowId: (params) => `${params.data.getRecordId()}`,
|
|
51
|
+
rowModelType: 'serverSide',
|
|
52
|
+
//needs to be set here, crashes if set via API
|
|
53
|
+
rowHeight: grid.getDefaultRowHeight(),
|
|
54
|
+
rowSelection: agGrid.getSelectionType(),
|
|
55
|
+
loadingOverlayComponent: LoadingOverlay,
|
|
56
|
+
noRowsOverlayComponent: EmptyRecords,
|
|
57
|
+
enableGroupEdit: true,
|
|
58
|
+
reactiveCustomComponents: true,
|
|
59
|
+
initialState: props.state?.AgGridState,
|
|
60
|
+
gridOptions: {
|
|
61
|
+
getRowStyle: (params) => {
|
|
62
|
+
const record = params.data;
|
|
63
|
+
if (!record) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
backgroundColor: grid.getDefaultCellTheme(record).semanticColors.bodyBackground,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
onGridReady: onGridReady,
|
|
72
|
+
});
|
|
73
|
+
return jsx(GridContext.Provider, { value: grid, children: jsx(AgGridContext.Provider, { value: agGrid, children: jsx(ThemeProvider, { className: getClassNames([className, styles.gridRoot, 'ag-theme-balham']), ref: containerRef, children: jsx(AgGridReact, { ...componentProps }) }) }) });
|
|
61
74
|
};
|
|
62
75
|
|
|
63
76
|
export { Grid };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sources":["../../../../src/components/Grid/grid/Grid.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { GetRowIdParams, GridReadyEvent, GridState } from \"@ag-grid-community/core\";\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { AgGridModel } from \"./ag-grid/AgGridModel\";\nimport { AgGridReact } from \"@ag-grid-community/react\";\nimport { LoadingOverlay } from \"../overlays/loading/LoadingOverlay\";\nimport { EmptyRecords } from \"../overlays/empty-records/EmptyRecordsOverlay\";\nimport { getClassNames, ITheme, useStateValues } from \"@talxis/react-components\";\nimport { IGrid } from \"../interfaces\";\nimport { GridModel } from \"./GridModel\";\nimport { useControl } from \"../../../hooks\";\nimport { gridTranslations } from \"../translations\";\nimport { GridContext } from \"./GridContext\";\nimport { ThemeProvider } from \"@fluentui/react\";\nimport { getGridStyles } from \"./styles\";\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nimport { AgGridContext } from \"./ag-grid/AgGridContext\";\n\nconst getGridInstance = (onGetProps: () => IGrid, labels: any, theme: ITheme): GridModel => {\n return new GridModel({\n labels: labels,\n onGetProps: () => onGetProps(),\n theme: theme\n })\n}\n\nexport const Grid = (props: IGrid) => {\n const { labels, theme, className } = useControl('Grid', props, gridTranslations);\n const propsRef = useRef<IGrid>(props);\n propsRef.current = props;\n const grid = useMemo(() => {\n return getGridInstance(() => propsRef.current, labels, theme)\n }, []);\n\n const styles = useMemo(() => getGridStyles(theme), [theme]);\n const containerRef = useRef<HTMLDivElement>(null);\n const gridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGridModel({\n grid: grid,\n getContainer: () => containerRef.current!\n }), []);\n\n\n const onGridReady = (event: GridReadyEvent<IRecord, any>) => {\n agGrid.init(event.api);\n gridReadyRef.current = true;\n }\n\n useEffect(() => {\n return () => {\n grid.destroy();\n }\n }, []);\n\n
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../src/components/Grid/grid/Grid.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { GetRowIdParams, GridReadyEvent, GridState } from \"@ag-grid-community/core\";\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { AgGridModel } from \"./ag-grid/AgGridModel\";\nimport { AgGridReact } from \"@ag-grid-community/react\";\nimport { LoadingOverlay } from \"../overlays/loading/LoadingOverlay\";\nimport { EmptyRecords } from \"../overlays/empty-records/EmptyRecordsOverlay\";\nimport { getClassNames, ITheme, useStateValues } from \"@talxis/react-components\";\nimport { IGrid } from \"../interfaces\";\nimport { GridModel } from \"./GridModel\";\nimport { useControl } from \"../../../hooks\";\nimport { gridTranslations } from \"../translations\";\nimport { GridContext } from \"./GridContext\";\nimport { ThemeProvider } from \"@fluentui/react\";\nimport { getGridStyles } from \"./styles\";\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nimport { AgGridContext } from \"./ag-grid/AgGridContext\";\n\nconst getGridInstance = (onGetProps: () => IGrid, labels: any, theme: ITheme): GridModel => {\n return new GridModel({\n labels: labels,\n onGetProps: () => onGetProps(),\n theme: theme\n })\n}\n\nexport const Grid = (props: IGrid) => {\n const { labels, theme, className } = useControl('Grid', props, gridTranslations);\n const propsRef = useRef<IGrid>(props);\n propsRef.current = props;\n const grid = useMemo(() => {\n return getGridInstance(() => propsRef.current, labels, theme)\n }, []);\n\n const styles = useMemo(() => getGridStyles(theme), [theme]);\n const containerRef = useRef<HTMLDivElement>(null);\n const gridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGridModel({\n grid: grid,\n getContainer: () => containerRef.current!\n }), []);\n\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((props) => props);\n\n\n const onGridReady = (event: GridReadyEvent<IRecord, any>) => {\n agGrid.init(event.api);\n gridReadyRef.current = true;\n }\n\n useEffect(() => {\n return () => {\n grid.destroy();\n }\n }, []);\n\n const componentProps = onOverrideComponentProps({\n getRowId: (params: GetRowIdParams<IRecord>) => `${params.data.getRecordId()}`,\n rowModelType: 'serverSide' as const,\n //needs to be set here, crashes if set via API\n rowHeight: grid.getDefaultRowHeight(),\n rowSelection: agGrid.getSelectionType(),\n loadingOverlayComponent: LoadingOverlay,\n noRowsOverlayComponent: EmptyRecords,\n enableGroupEdit: true,\n reactiveCustomComponents: true,\n initialState: props.state?.AgGridState,\n gridOptions: {\n getRowStyle: (params) => {\n const record = params.data;\n if (!record) {\n return undefined\n }\n return {\n backgroundColor: grid.getDefaultCellTheme(record).semanticColors.bodyBackground,\n }\n },\n },\n onGridReady: onGridReady,\n })\n\n return <GridContext.Provider value={grid}>\n <AgGridContext.Provider value={agGrid}>\n <ThemeProvider\n className={getClassNames([className, styles.gridRoot, 'ag-theme-balham'])}\n ref={containerRef}\n >\n <AgGridReact\n {...componentProps}\n />\n </ThemeProvider>\n </AgGridContext.Provider>\n </GridContext.Provider>\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -102,7 +102,6 @@ export declare class GridModel {
|
|
|
102
102
|
private _canColumnBeAggregated;
|
|
103
103
|
private _registerEventListeners;
|
|
104
104
|
private _showNestedProviderPagingLimitNotification;
|
|
105
|
-
private _autoSaveRecord;
|
|
106
105
|
private _refreshTotalRowOnAutoSave;
|
|
107
106
|
private _setGroupingInterceptor;
|
|
108
107
|
private get _dataset();
|
|
@@ -47,7 +47,7 @@ class GridModel {
|
|
|
47
47
|
return this.getParameters().EnableNavigation?.raw !== false;
|
|
48
48
|
}
|
|
49
49
|
isAutoSaveEnabled() {
|
|
50
|
-
return this.
|
|
50
|
+
return this._dataset.getDataProvider().getProperty('autoSave') === true;
|
|
51
51
|
}
|
|
52
52
|
isGroupedColumnsPinnedEnabled() {
|
|
53
53
|
return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;
|
|
@@ -697,7 +697,6 @@ class GridModel {
|
|
|
697
697
|
return true;
|
|
698
698
|
}
|
|
699
699
|
_registerEventListeners() {
|
|
700
|
-
this._dataset.addEventListener('onRecordColumnValueChanged', (record) => this._autoSaveRecord(record));
|
|
701
700
|
this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());
|
|
702
701
|
this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());
|
|
703
702
|
this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());
|
|
@@ -713,11 +712,6 @@ class GridModel {
|
|
|
713
712
|
});
|
|
714
713
|
}
|
|
715
714
|
}
|
|
716
|
-
_autoSaveRecord(record) {
|
|
717
|
-
if (this.isAutoSaveEnabled() && record.isDirty()) {
|
|
718
|
-
record.save();
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
715
|
_refreshTotalRowOnAutoSave() {
|
|
722
716
|
if (this.isAutoSaveEnabled()) {
|
|
723
717
|
this._totalRow.refresh();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridModel.js","sources":["../../../../src/components/Grid/grid/GridModel.ts"],"sourcesContent":["import { AggregationFunction, DataProvider, DataType, DataTypes, FieldValue, Filtering, Formatting, Grouping, IColumn, ICustomColumnControl, ICustomColumnFormatting, IDataProvider, IDataset, IGroupByMetadata, IInternalDataProvider, IRecord, Sanitizer, Sorting, TotalRow } from \"@talxis/client-libraries\";\nimport { merge } from \"merge-anything\";\nimport { ITheme, Theming } from \"@talxis/react-components\";\nimport { getTheme } from \"@fluentui/react\";\nimport { gridTranslations } from \"../translations\";\nimport { ITranslation } from \"../../../hooks\";\nimport { IBinding } from \"../../NestedControlRenderer/interfaces\";\nimport { BaseControls, IFluentDesignState } from \"../../../utils\";\nimport { IGrid, IGridParameters } from \"../interfaces\";\nimport { CHECKBOX_COLUMN_KEY } from \"../constants\";\nimport { Type as FilterType } from \"@talxis/client-libraries\";\nimport hotkeys from 'hotkeys-js';\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\ninterface IGridDependencies {\n labels: Required<ITranslation<typeof gridTranslations>>;\n onGetProps: () => IGrid;\n theme?: ITheme;\n}\n\ninterface IPCFContext extends Omit<ComponentFramework.Context<any, any>, 'fluentDesignLanguage'> {\n fluentDesignLanguage?: IFluentDesignState\n}\n\nexport interface IGridColumn extends IColumn {\n isRequired: boolean;\n isEditable: boolean;\n isFilterable: boolean;\n isSorted: boolean;\n isFiltered: boolean;\n canBeAggregated: boolean;\n canBeGrouped: boolean;\n isSortedDescending: boolean;\n isResizable: boolean;\n alignment: IColumn['alignment'],\n}\n\nexport class GridModel {\n public readonly oddRowCellTheme: ITheme;\n public readonly evenRowCellTheme: ITheme;\n private _getProps: () => IGrid;\n private _labels: Required<ITranslation<typeof gridTranslations>>;\n private _theme: ITheme;\n private _sorting: Sorting;\n private _totalRow: TotalRow\n private _grouping: Grouping;\n private _filtering: Filtering;\n private _nestedProviderPagingLimitNotificationId: string | null = null;\n private _cachedGridColumnsMap: Map<string, IGridColumn> = new Map();\n\n constructor({ onGetProps, labels, theme }: IGridDependencies) {\n this._getProps = onGetProps;\n this._labels = labels;\n this._theme = theme ?? getTheme();\n this.oddRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.neutralLighterAlt, this._theme.semanticColors.bodyText);\n this.evenRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.white, this._theme.semanticColors.bodyText);\n const provider = this.getDataset().getDataProvider();\n this._sorting = new Sorting(provider);\n this._totalRow = new TotalRow(provider);\n this._filtering = new Filtering(provider, FieldValue);\n this._grouping = new Grouping(provider);\n this._registerEventListeners();\n hotkeys('*', (event, handler) => {\n })\n }\n\n public getDataset(): IDataset {\n return this._getProps().parameters.Grid;\n }\n\n public getPcfContext(): IPCFContext {\n return this._getProps().context;\n }\n\n public getState() {\n return this._getProps().state;\n }\n\n public getParameters(): IGridParameters {\n return this._getProps().parameters;\n }\n public getLabels(): Required<ITranslation<typeof gridTranslations>> {\n return this._labels;\n }\n public isZebraEnabled(): boolean {\n return this._getProps().parameters.EnableZebra?.raw !== false;\n }\n public isNavigationEnabled(): boolean {\n return this.getParameters().EnableNavigation?.raw !== false;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw === true;\n }\n public isGroupedColumnsPinnedEnabled(): boolean {\n return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;\n }\n public getInlineRibbonButtonIds(): string | null {\n return this.getParameters().InlineRibbonButtonIds?.raw ?? null;\n }\n public isEditingEnabled(): boolean {\n return this.getParameters().EnableEditing?.raw === true;\n }\n public getGroupType(): 'nested' | 'flat' {\n return this.getDataset().getDataProvider().getProperty('groupingType');\n }\n public optionSetColorsEnabled(): boolean {\n return this.getParameters().EnableOptionSetColors?.raw === true;\n }\n public getDefaultExpandedGroupLevel(): number {\n return this.getParameters().DefaultExpandedGroupLevel?.raw ?? -1;\n }\n public getLicenseKey(): string | null {\n return this.getParameters().LicenseKey?.raw ?? null;\n }\n public getDefaultRowHeight(): number {\n const height = this.getParameters().RowHeight?.raw;\n if (height) {\n return height;\n }\n return DEFAULT_ROW_HEIGHT;\n }\n\n public getSelectionType(): 'none' | 'single' | 'multiple' {\n switch (this.getParameters().SelectableRows?.raw) {\n case undefined:\n case null: {\n return 'multiple'\n }\n }\n return this.getParameters().SelectableRows!.raw;\n }\n public getControl(column: IColumn, record: IRecord, editing: boolean): Required<ICustomColumnControl> {\n editing = record.getSummarizationType() === 'aggregation' ? false : editing;\n //file and image currently do not support editor, always force cell renderers\n switch (column.dataType) {\n case 'File':\n case 'Image': {\n return {\n name: 'GridCellRenderer',\n appliesTo: 'both',\n bindings: {}\n }\n }\n }\n const defaultControl: Required<ICustomColumnControl> = {\n name: (() => {\n if (record.getSummarizationType() === 'aggregation') {\n return 'GridCellRenderer';\n }\n if (column.name === DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME) {\n return BaseControls.GridInlineRibbon;\n }\n if (editing) {\n return BaseControls.GetControlNameForDataType(column.dataType as DataType)\n }\n return 'GridCellRenderer';\n })(),\n appliesTo: 'both',\n bindings: {}\n };\n const customControls = record.getColumnInfo(column.name).ui.getCustomControls([defaultControl]);\n const appliesToValue = editing ? 'editor' : 'renderer';\n const customControl = customControls.find(\n control => control.appliesTo === 'both' || control.appliesTo === appliesToValue\n );\n if (customControl) {\n return merge(defaultControl, customControl) as Required<ICustomColumnControl>;\n }\n\n return defaultControl;\n }\n\n public getBindings(record: IRecord, column: IColumn, control: ICustomColumnControl) {\n const columnInfo = record.getColumnInfo(column.name);\n const bindings: { [name: string]: IBinding } = {\n 'value': {\n isStatic: false,\n type: column.dataType as any,\n value: this.getControlValue(record, column),\n formattedValue: this.getRecordFormattedValue(record, column).value,\n error: columnInfo.error,\n errorMessage: columnInfo.errorMessage,\n onNotifyOutputChanged: () => { },\n metadata: {\n onOverrideMetadata: () => column.metadata\n }\n },\n 'IsCellCustomizer': {\n isStatic: true,\n type: DataTypes.TwoOptions,\n value: true\n }\n }\n if (control.bindings) {\n Object.entries(control.bindings).map(([name, binding]) => {\n bindings[name] = {\n isStatic: true,\n type: binding.type!,\n value: binding.value\n }\n })\n }\n return bindings;\n }\n\n public getFieldBindingParameters(record: IRecord, column: IColumn, editing: boolean) {\n //make sure we have IColumn, not IGridColumn\n column = record.getDataProvider().getColumnsMap()[column.name]!;\n const summarizationType = record.getDataProvider().getSummarizationType();\n const value = this.getRecordValue(record, column);\n const formattedValue = this.getRecordFormattedValue(record, column);\n const aggregationColumn = record.getDataProvider().getColumnsMap()[column.aggregation?.alias!];\n const parameters: any = {\n Dataset: {\n raw: this.getDataset(),\n type: DataTypes.Object\n },\n Record: {\n raw: record,\n type: DataTypes.Object\n },\n Column: {\n raw: column,\n type: DataTypes.Object\n }\n }\n parameters.AggregatedValue = {\n raw: value.aggregatedValue,\n formatted: formattedValue.aggregatedValue,\n type: aggregationColumn?.dataType ?? DataTypes.Decimal\n }\n parameters.EnableNavigation = {\n raw: (() => {\n if (!this.isNavigationEnabled()) {\n return false;\n }\n if (summarizationType === 'aggregation') {\n return false;\n }\n else if (summarizationType === 'grouping') {\n switch (column.dataType) {\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding:\n case DataTypes.LookupOwner:\n case DataTypes.LookupSimple:\n case DataTypes.File:\n case DataTypes.Image:\n case DataTypes.SingleLineEmail:\n case DataTypes.SingleLineUrl:\n case DataTypes.SingleLinePhone: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n else {\n return true;\n }\n })(),\n type: DataTypes.TwoOptions\n }\n parameters.ColumnAlignment = {\n raw: column.alignment,\n type: DataTypes.SingleLineText\n }\n parameters.IsPrimaryColumn = {\n raw: column.isPrimary,\n type: DataTypes.TwoOptions\n }\n parameters.ShowErrorMessage = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.CellType = {\n raw: editing ? 'editor' : 'renderer',\n type: DataTypes.SingleLineText\n }\n parameters.AutoFocus = {\n raw: editing,\n type: DataTypes.TwoOptions\n }\n parameters.AggregationFunction = {\n raw: summarizationType === 'aggregation' ? aggregationColumn?.aggregation?.aggregationFunction : null,\n type: DataTypes.SingleLineText\n }\n parameters.PrefixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.SuffixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.IsInlineNewEnabled = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableTypeSuffix = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableOptionSetColors = {\n raw: this.optionSetColorsEnabled(),\n type: DataTypes.TwoOptions\n }\n parameters.CommandButtonIds = {\n raw: this.getInlineRibbonButtonIds(),\n type: DataTypes.SingleLineText\n }\n parameters.ShouldUnmountWhenOutputChanges = {\n raw: (() => {\n //by default, leave cell editor opened for these types since\n // they can output partial changes as values\n switch (column.dataType) {\n case 'DateAndTime.DateAndTime':\n case 'MultiSelectPicklist': {\n return false;\n }\n default: {\n return true;\n }\n }\n })(),\n type: DataTypes.TwoOptions\n }\n return parameters;\n }\n\n public isColumnExpandable(record: IRecord, column: IColumn): boolean {\n const groupBy = record.getDataProvider().grouping.getGroupBys()[0];\n return groupBy?.columnName === column.name\n }\n\n public getFieldFormatting(record: IRecord, columnName: string): Required<ICustomColumnFormatting> {\n const defaultTheme = this.getDefaultCellTheme(record);\n const defaultBackgroundColor = defaultTheme.semanticColors.bodyBackground;;\n\n // Handle checkbox column specifically\n if (columnName === CHECKBOX_COLUMN_KEY || !record) {\n return {\n primaryColor: this._theme.palette.themePrimary,\n backgroundColor: defaultBackgroundColor,\n textColor: Theming.GetTextColorForBackground(defaultBackgroundColor),\n className: '',\n themeOverride: {}\n };\n }\n\n const customFormatting = record.getColumnInfo(columnName).ui.getCustomFormatting(defaultTheme) ?? {};\n\n // Prepare the result with defaults\n const result: Required<ICustomColumnFormatting> = {\n backgroundColor: customFormatting.backgroundColor ?? defaultBackgroundColor,\n primaryColor: customFormatting.primaryColor ?? this._theme.palette.themePrimary,\n textColor: customFormatting.textColor ?? '',\n className: customFormatting.className ?? '',\n themeOverride: customFormatting.themeOverride ?? {}\n };\n\n // Apply background-specific adjustments\n if (result.backgroundColor !== defaultBackgroundColor) {\n result.themeOverride = merge({}, {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }, result.themeOverride);\n\n if (!customFormatting.primaryColor) {\n result.primaryColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n }\n\n // Ensure text color is set\n if (!result.textColor) {\n result.textColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n\n return result;\n }\n\n public getDefaultCellTheme(record: IRecord): ITheme {\n const isEven = record.getIndex() % 2 === 0;\n const summarizationType = record.getDataProvider().getSummarizationType();\n if (summarizationType !== 'none') {\n return this.oddRowCellTheme;\n }\n //child of a group record\n else if (record.getDataProvider().getParentDataProvider()) {\n return this.evenRowCellTheme;\n }\n else if (isEven || !this.isZebraEnabled()) {\n return this.evenRowCellTheme;\n }\n else {\n return this.oddRowCellTheme;\n }\n }\n\n public getGridColumns(): IGridColumn[] {\n this._cachedGridColumnsMap.clear();\n const gridColumns: IGridColumn[] = this.getDataset().columns.map(column => {\n const gridColumn = this.getGridColumnByName(column.name, true);\n this._cachedGridColumnsMap.set(gridColumn.name, gridColumn);\n return gridColumn;\n });\n return gridColumns;\n }\n\n public getColumnByName(columnName: string): IColumn {\n return this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n }\n\n public getGridColumnByName(columnName: string, force?: boolean): IGridColumn {\n if (!force) {\n const column = this._cachedGridColumnsMap.get(columnName);\n if (!column) {\n throw new Error(`Column with name ${columnName} not found in grid columns cache.`);\n }\n return column;\n }\n else {\n const column = this.getDataset().getColumnsMap()[columnName];\n const sorted = this.getDataset().sorting?.find(sort => sort.name === column.name);\n return {\n ...column,\n alignment: column.alignment!,\n isFiltered: this._filtering.getColumnFilter(column.name).isAppliedToDataset(),\n isEditable: this._isColumnEditable(column),\n isRequired: this._isColumnRequired(column),\n canBeGrouped: this._isColumnGroupable(column),\n isFilterable: this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n canBeAggregated: this._canColumnBeAggregated(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false\n }\n }\n }\n\n public getRecordValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, false);\n }\n public getRecordFormattedValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, true);\n }\n //returns record value in a form that is compatible with PCF typings\n public getControlValue(record: IRecord, column: IColumn | string): any {\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n //can be the aggregated value\n let value = this.getRecordValue(record, column).value;\n switch (column.dataType) {\n //getValue always returns string for TwoOptions\n case 'TwoOptions': {\n if (typeof value === 'string') {\n value = value == '1' ? true : false\n }\n break;\n }\n //getValue always returns string for OptionSet\n case 'OptionSet': {\n value = value ? parseInt(value) : null;\n break;\n }\n case 'MultiSelectPicklist': {\n value = value ? value.split(',').map((x: string) => parseInt(x)) : null;\n break;\n }\n case 'Lookup.Simple':\n case 'Lookup.Customer':\n case 'Lookup.Owner':\n case 'Lookup.Regarding': {\n //our implementation returns array, Power Apps returns object\n if (value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: ComponentFramework.EntityReference) => Sanitizer.Lookup.getLookupValue(x))\n break;\n }\n }\n return value;\n }\n\n public isRecordSelectionDisabled(record: IRecord): boolean {\n const dataProvider = record.getDataProvider();\n const level = dataProvider.getNestingLevel();\n const groupBys = this.getDataset().grouping.getGroupBys();\n if (this.getGroupType() === 'nested' && level < groupBys.length - 1) {\n return true;\n }\n if (dataProvider.getSummarizationType() === 'grouping' && this.getSelectionType() === 'single') {\n return true;\n }\n return false;\n }\n\n public isColumnEditable(columnName: string, record?: IRecord): boolean {\n let isEditable = true;\n const mainDatasetColumn = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n let column = mainDatasetColumn;\n if (record) {\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n }\n switch (true) {\n case !this.isEditingEnabled():\n case record?.isSaving():\n case column.oneClickEdit: {\n isEditable = false;\n break;\n }\n }\n switch (column.name) {\n case DataProvider.CONST.CHECKBOX_COLUMN_KEY:\n case DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME: {\n isEditable = false;\n break;\n }\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataTypes.File:\n case DataTypes.Image: {\n isEditable = false;\n break;\n }\n }\n //if the column is not editable, return false\n if (!isEditable) {\n return false\n }\n else {\n //columns is editable and we are not asking for record\n if (!record) {\n return true;\n }\n //column is editable, but we need to check if the record is editable\n else return this._isRecordFieldEditable(record, column);\n }\n }\n\n public addAggregation(columnName: string, aggregationFunction: AggregationFunction) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.addAggregation(columnName, aggregationFunction)\n })\n })\n }\n public removeAggregation(alias: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.removeAggregation(alias);\n })\n })\n }\n public toggleColumnGroup(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n if (column.grouping?.isGrouped) {\n this._grouping.ungroupColumn(column.grouping.alias!);\n }\n else {\n this._grouping.groupColumn(column.name);\n }\n this._dataset.refresh();\n })\n }\n\n public getColumnFilter(columnName: string) {\n return this._filtering.getColumnFilter(columnName);\n }\n\n public removeColumnFilter(columnName: string, saveToDataset?: boolean) {\n this._filtering.removeColumnFilter(columnName);\n if (!saveToDataset) {\n return;\n }\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const filterExpression = this._filtering.getFilterExpression(FilterType.And.Value);\n if (!filterExpression) {\n throw new Error('Unexpected error when clearing column filter.');\n }\n this._dataset.filtering.setFilter(filterExpression);\n this._dataset.refresh();\n })\n }\n\n public sortColumn(columnName: string, descending?: boolean) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).setSortValue(descending ? 1 : 0, hotkeys.getPressedKeyString().includes('⇧'));\n this._dataset.refresh();\n })\n }\n\n public clearColumnSorting(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).clear();\n this._dataset.refresh();\n })\n }\n public getTotalRow() {\n return this._totalRow;\n }\n public getFiltering() {\n return this._filtering;\n }\n public isSelectionModifierKeyPressed(): boolean {\n const pressedKeys = hotkeys.getPressedKeyString().join(',');\n switch (true) {\n case pressedKeys.includes('⇧'):\n case pressedKeys.includes('ctrl'):\n case pressedKeys.includes('⌘'): {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n public getColumnSortingLabel(columnName: string, descending?: boolean): string {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.WholeDuration:\n case DataTypes.Currency: {\n if (!descending) {\n return this._labels['filtersortmenu-sortnumber-a-z']()\n }\n return this._labels['filtersortmenu-sortnumber-z-a']()\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n if (!descending) {\n return this._labels['filtersortmenu-sortdate-a-z']()\n }\n return this._labels['filtersortmenu-sortdate-z-a']()\n }\n case DataTypes.TwoOptions: {\n const options = column.metadata?.OptionSet ?? [];\n if (!descending) {\n return `${options[0].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[1].Label}`\n }\n return `${options[1].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[0].Label}`\n }\n default: {\n if (!descending) {\n return this._labels['filtersortmenu-sorttext-a-z']()\n }\n return this._labels['filtersortmenu-sorttext-z-a']()\n }\n }\n\n }\n\n public destroy() {\n if (this._nestedProviderPagingLimitNotificationId) {\n window.Xrm.App.clearGlobalNotification(this._nestedProviderPagingLimitNotificationId);\n }\n hotkeys.unbind();\n }\n\n private _getInternalDataProvider(): IInternalDataProvider {\n return this.getDataset().getDataProvider() as IInternalDataProvider;\n }\n\n private _setAggregationDecorator(fn: () => void) {\n fn();\n if (this._dataset.grouping.getGroupBys().length > 0) {\n this._dataset.refresh();\n }\n else {\n this._totalRow?.refresh();\n }\n }\n\n private _getRecordValue(record: IRecord, column: IColumn | string, formatted: boolean): { value: any; aggregatedValue: any } {\n if (!record) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n if (!column) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const method = formatted ? 'getFormattedValue' : 'getValue';\n const groupBy = record.getDataProvider().grouping.getGroupBy(column.grouping?.alias!);\n const aggregation = record.getDataProvider().aggregation.getAggregation(column.aggregation?.alias!);\n\n let value = record[method](columnName);\n let aggregatedValue = null;\n\n if (groupBy) {\n value = record[method](groupBy.alias);\n }\n if (aggregation) {\n aggregatedValue = record[method](aggregation.alias);\n }\n return {\n value: value,\n aggregatedValue: aggregatedValue\n }\n }\n\n private _isRecordFieldEditable(record: IRecord, column: IColumn): boolean {\n const columnInfo = record.getColumnInfo(column.name);\n //if editable not defined, return true since column is editable in this case\n return columnInfo?.security.editable ?? true;\n }\n\n private _isColumnRequired(column: IColumn): boolean {\n if (!this.getParameters().EnableEditing?.raw) {\n return false;\n }\n switch (column.metadata?.RequiredLevel) {\n case 1:\n case 2: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n private _isColumnSortable(column: IColumn): boolean {\n //sorting enabled by default\n if (this.getParameters().EnableSorting?.raw === false) {\n return false;\n }\n return !column.disableSorting;\n }\n private _isColumnFilterable(column: IColumn): boolean {\n //filtering enabled by default\n if (this.getParameters().EnableFiltering?.raw === false) {\n return false;\n }\n if (!column.metadata?.SupportedFilterConditionOperators || column.metadata.SupportedFilterConditionOperators.length === 0) {\n return false;\n }\n return true;\n }\n\n private _isColumnGroupable(column: IColumn): boolean {\n //grouping disabled by default\n if (this.getParameters().EnableGrouping?.raw !== true) {\n return false;\n }\n return !!column.metadata?.CanBeGrouped;\n }\n\n private _isColumnEditable(column: IColumn): boolean {\n //editing disabled by default\n if (this.getParameters().EnableEditing?.raw !== true) {\n return false;\n }\n return !!column.metadata?.IsValidForUpdate;\n }\n\n private _canColumnBeAggregated(column: IColumn): boolean {\n //aggregations disabled by default\n if (this.getParameters().EnableAggregation?.raw !== true) {\n return false;\n }\n if (!column.metadata?.SupportedAggregations || column.metadata.SupportedAggregations.length === 0) {\n return false;\n }\n return true;\n }\n\n private _registerEventListeners() {\n this._dataset.addEventListener('onRecordColumnValueChanged', (record) => this._autoSaveRecord(record));\n this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());\n this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());\n this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());\n this._setGroupingInterceptor();\n }\n\n //TODO: use control notification instead\n private async _showNestedProviderPagingLimitNotification() {\n if (!this._nestedProviderPagingLimitNotificationId) {\n this._nestedProviderPagingLimitNotificationId = await window.Xrm.App.addGlobalNotification({\n level: 4,\n message: this.getLabels()['maximumGroupChildrenLimitReached']({ maxGroupChildren: Formatting.Get().formatInteger(5000) }),\n type: 2\n });\n }\n }\n private _autoSaveRecord(record: IRecord) {\n if (this.isAutoSaveEnabled() && record.isDirty()) {\n record.save();\n }\n }\n\n private _refreshTotalRowOnAutoSave() {\n if (this.isAutoSaveEnabled()) {\n this._totalRow.refresh()\n }\n }\n\n //this method makes sure that the grouping is only applied to the first grouping column\n //this allows for nested grouping to work correctly\n private _setGroupingInterceptor() {\n if (this.getGroupType() === 'flat') {\n return;\n }\n let originalSortedGrouping: IGroupByMetadata[] = [];\n let originalAggregation: IGroupByMetadata[] = [];\n this._dataset.addEventListener('onBeforeNewDataLoaded', () => {\n originalSortedGrouping = this._dataset.grouping.getGroupBys().sort((a, b) => {\n const colA = this._dataset.getDataProvider().getColumnsMap()[a.columnName]!;\n const colB = this._dataset.getDataProvider().getColumnsMap()[b.columnName]!;\n return colA.order! - colB.order!;\n });\n originalAggregation = this._dataset.aggregation.getAggregations();\n if (originalSortedGrouping.length > 1) {\n this._dataset.grouping.clear();\n const groupBy = originalSortedGrouping[0];\n this._dataset.grouping.addGroupBy(groupBy);\n //clear all grouping aggregations except the first one\n for (let i = 1; i < originalSortedGrouping.length; i++) {\n const column = this._dataset.getDataProvider().getColumnsMap()[originalSortedGrouping[i].columnName];\n this._dataset.aggregation.removeAggregation(column?.aggregation?.alias!);\n }\n }\n })\n this._dataset.addEventListener('onNewDataLoaded', () => {\n originalSortedGrouping.map((group) => {\n this._dataset.grouping.addGroupBy(group);\n })\n originalAggregation.map((aggr: any) => {\n this._dataset.aggregation.addAggregation(aggr);\n })\n })\n }\n\n private get _dataset() {\n return this.getDataset();\n }\n}"],"names":["FilterType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GridModel.js","sources":["../../../../src/components/Grid/grid/GridModel.ts"],"sourcesContent":["import { AggregationFunction, DataProvider, DataType, DataTypes, FieldValue, Filtering, Formatting, Grouping, IColumn, ICustomColumnControl, ICustomColumnFormatting, IDataProvider, IDataset, IGroupByMetadata, IInternalDataProvider, IRecord, Sanitizer, Sorting, TotalRow } from \"@talxis/client-libraries\";\nimport { merge } from \"merge-anything\";\nimport { ITheme, Theming } from \"@talxis/react-components\";\nimport { getTheme } from \"@fluentui/react\";\nimport { gridTranslations } from \"../translations\";\nimport { ITranslation } from \"../../../hooks\";\nimport { IBinding } from \"../../NestedControlRenderer/interfaces\";\nimport { BaseControls, IFluentDesignState } from \"../../../utils\";\nimport { IGrid, IGridParameters } from \"../interfaces\";\nimport { CHECKBOX_COLUMN_KEY } from \"../constants\";\nimport { Type as FilterType } from \"@talxis/client-libraries\";\nimport hotkeys from 'hotkeys-js';\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\ninterface IGridDependencies {\n labels: Required<ITranslation<typeof gridTranslations>>;\n onGetProps: () => IGrid;\n theme?: ITheme;\n}\n\ninterface IPCFContext extends Omit<ComponentFramework.Context<any, any>, 'fluentDesignLanguage'> {\n fluentDesignLanguage?: IFluentDesignState\n}\n\nexport interface IGridColumn extends IColumn {\n isRequired: boolean;\n isEditable: boolean;\n isFilterable: boolean;\n isSorted: boolean;\n isFiltered: boolean;\n canBeAggregated: boolean;\n canBeGrouped: boolean;\n isSortedDescending: boolean;\n isResizable: boolean;\n alignment: IColumn['alignment'],\n}\n\nexport class GridModel {\n public readonly oddRowCellTheme: ITheme;\n public readonly evenRowCellTheme: ITheme;\n private _getProps: () => IGrid;\n private _labels: Required<ITranslation<typeof gridTranslations>>;\n private _theme: ITheme;\n private _sorting: Sorting;\n private _totalRow: TotalRow\n private _grouping: Grouping;\n private _filtering: Filtering;\n private _nestedProviderPagingLimitNotificationId: string | null = null;\n private _cachedGridColumnsMap: Map<string, IGridColumn> = new Map();\n\n constructor({ onGetProps, labels, theme }: IGridDependencies) {\n this._getProps = onGetProps;\n this._labels = labels;\n this._theme = theme ?? getTheme();\n this.oddRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.neutralLighterAlt, this._theme.semanticColors.bodyText);\n this.evenRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.white, this._theme.semanticColors.bodyText);\n const provider = this.getDataset().getDataProvider();\n this._sorting = new Sorting(provider);\n this._totalRow = new TotalRow(provider);\n this._filtering = new Filtering(provider, FieldValue);\n this._grouping = new Grouping(provider);\n this._registerEventListeners();\n hotkeys('*', (event, handler) => {\n })\n }\n\n public getDataset(): IDataset {\n return this._getProps().parameters.Grid;\n }\n\n public getPcfContext(): IPCFContext {\n return this._getProps().context;\n }\n\n public getState() {\n return this._getProps().state;\n }\n\n public getParameters(): IGridParameters {\n return this._getProps().parameters;\n }\n public getLabels(): Required<ITranslation<typeof gridTranslations>> {\n return this._labels;\n }\n public isZebraEnabled(): boolean {\n return this._getProps().parameters.EnableZebra?.raw !== false;\n }\n public isNavigationEnabled(): boolean {\n return this.getParameters().EnableNavigation?.raw !== false;\n }\n public isAutoSaveEnabled(): boolean {\n return this._dataset.getDataProvider().getProperty('autoSave') === true\n }\n public isGroupedColumnsPinnedEnabled(): boolean {\n return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;\n }\n public getInlineRibbonButtonIds(): string | null {\n return this.getParameters().InlineRibbonButtonIds?.raw ?? null;\n }\n public isEditingEnabled(): boolean {\n return this.getParameters().EnableEditing?.raw === true;\n }\n public getGroupType(): 'nested' | 'flat' {\n return this.getDataset().getDataProvider().getProperty('groupingType');\n }\n public optionSetColorsEnabled(): boolean {\n return this.getParameters().EnableOptionSetColors?.raw === true;\n }\n public getDefaultExpandedGroupLevel(): number {\n return this.getParameters().DefaultExpandedGroupLevel?.raw ?? -1;\n }\n public getLicenseKey(): string | null {\n return this.getParameters().LicenseKey?.raw ?? null;\n }\n public getDefaultRowHeight(): number {\n const height = this.getParameters().RowHeight?.raw;\n if (height) {\n return height;\n }\n return DEFAULT_ROW_HEIGHT;\n }\n\n public getSelectionType(): 'none' | 'single' | 'multiple' {\n switch (this.getParameters().SelectableRows?.raw) {\n case undefined:\n case null: {\n return 'multiple'\n }\n }\n return this.getParameters().SelectableRows!.raw;\n }\n public getControl(column: IColumn, record: IRecord, editing: boolean): Required<ICustomColumnControl> {\n editing = record.getSummarizationType() === 'aggregation' ? false : editing;\n //file and image currently do not support editor, always force cell renderers\n switch (column.dataType) {\n case 'File':\n case 'Image': {\n return {\n name: 'GridCellRenderer',\n appliesTo: 'both',\n bindings: {}\n }\n }\n }\n const defaultControl: Required<ICustomColumnControl> = {\n name: (() => {\n if (record.getSummarizationType() === 'aggregation') {\n return 'GridCellRenderer';\n }\n if (column.name === DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME) {\n return BaseControls.GridInlineRibbon;\n }\n if (editing) {\n return BaseControls.GetControlNameForDataType(column.dataType as DataType)\n }\n return 'GridCellRenderer';\n })(),\n appliesTo: 'both',\n bindings: {}\n };\n const customControls = record.getColumnInfo(column.name).ui.getCustomControls([defaultControl]);\n const appliesToValue = editing ? 'editor' : 'renderer';\n const customControl = customControls.find(\n control => control.appliesTo === 'both' || control.appliesTo === appliesToValue\n );\n if (customControl) {\n return merge(defaultControl, customControl) as Required<ICustomColumnControl>;\n }\n\n return defaultControl;\n }\n\n public getBindings(record: IRecord, column: IColumn, control: ICustomColumnControl) {\n const columnInfo = record.getColumnInfo(column.name);\n const bindings: { [name: string]: IBinding } = {\n 'value': {\n isStatic: false,\n type: column.dataType as any,\n value: this.getControlValue(record, column),\n formattedValue: this.getRecordFormattedValue(record, column).value,\n error: columnInfo.error,\n errorMessage: columnInfo.errorMessage,\n onNotifyOutputChanged: () => { },\n metadata: {\n onOverrideMetadata: () => column.metadata\n }\n },\n 'IsCellCustomizer': {\n isStatic: true,\n type: DataTypes.TwoOptions,\n value: true\n }\n }\n if (control.bindings) {\n Object.entries(control.bindings).map(([name, binding]) => {\n bindings[name] = {\n isStatic: true,\n type: binding.type!,\n value: binding.value\n }\n })\n }\n return bindings;\n }\n\n public getFieldBindingParameters(record: IRecord, column: IColumn, editing: boolean) {\n //make sure we have IColumn, not IGridColumn\n column = record.getDataProvider().getColumnsMap()[column.name]!;\n const summarizationType = record.getDataProvider().getSummarizationType();\n const value = this.getRecordValue(record, column);\n const formattedValue = this.getRecordFormattedValue(record, column);\n const aggregationColumn = record.getDataProvider().getColumnsMap()[column.aggregation?.alias!];\n const parameters: any = {\n Dataset: {\n raw: this.getDataset(),\n type: DataTypes.Object\n },\n Record: {\n raw: record,\n type: DataTypes.Object\n },\n Column: {\n raw: column,\n type: DataTypes.Object\n }\n }\n parameters.AggregatedValue = {\n raw: value.aggregatedValue,\n formatted: formattedValue.aggregatedValue,\n type: aggregationColumn?.dataType ?? DataTypes.Decimal\n }\n parameters.EnableNavigation = {\n raw: (() => {\n if (!this.isNavigationEnabled()) {\n return false;\n }\n if (summarizationType === 'aggregation') {\n return false;\n }\n else if (summarizationType === 'grouping') {\n switch (column.dataType) {\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding:\n case DataTypes.LookupOwner:\n case DataTypes.LookupSimple:\n case DataTypes.File:\n case DataTypes.Image:\n case DataTypes.SingleLineEmail:\n case DataTypes.SingleLineUrl:\n case DataTypes.SingleLinePhone: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n else {\n return true;\n }\n })(),\n type: DataTypes.TwoOptions\n }\n parameters.ColumnAlignment = {\n raw: column.alignment,\n type: DataTypes.SingleLineText\n }\n parameters.IsPrimaryColumn = {\n raw: column.isPrimary,\n type: DataTypes.TwoOptions\n }\n parameters.ShowErrorMessage = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.CellType = {\n raw: editing ? 'editor' : 'renderer',\n type: DataTypes.SingleLineText\n }\n parameters.AutoFocus = {\n raw: editing,\n type: DataTypes.TwoOptions\n }\n parameters.AggregationFunction = {\n raw: summarizationType === 'aggregation' ? aggregationColumn?.aggregation?.aggregationFunction : null,\n type: DataTypes.SingleLineText\n }\n parameters.PrefixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.SuffixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.IsInlineNewEnabled = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableTypeSuffix = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableOptionSetColors = {\n raw: this.optionSetColorsEnabled(),\n type: DataTypes.TwoOptions\n }\n parameters.CommandButtonIds = {\n raw: this.getInlineRibbonButtonIds(),\n type: DataTypes.SingleLineText\n }\n parameters.ShouldUnmountWhenOutputChanges = {\n raw: (() => {\n //by default, leave cell editor opened for these types since\n // they can output partial changes as values\n switch (column.dataType) {\n case 'DateAndTime.DateAndTime':\n case 'MultiSelectPicklist': {\n return false;\n }\n default: {\n return true;\n }\n }\n })(),\n type: DataTypes.TwoOptions\n }\n return parameters;\n }\n\n public isColumnExpandable(record: IRecord, column: IColumn): boolean {\n const groupBy = record.getDataProvider().grouping.getGroupBys()[0];\n return groupBy?.columnName === column.name\n }\n\n public getFieldFormatting(record: IRecord, columnName: string): Required<ICustomColumnFormatting> {\n const defaultTheme = this.getDefaultCellTheme(record);\n const defaultBackgroundColor = defaultTheme.semanticColors.bodyBackground;;\n\n // Handle checkbox column specifically\n if (columnName === CHECKBOX_COLUMN_KEY || !record) {\n return {\n primaryColor: this._theme.palette.themePrimary,\n backgroundColor: defaultBackgroundColor,\n textColor: Theming.GetTextColorForBackground(defaultBackgroundColor),\n className: '',\n themeOverride: {}\n };\n }\n\n const customFormatting = record.getColumnInfo(columnName).ui.getCustomFormatting(defaultTheme) ?? {};\n\n // Prepare the result with defaults\n const result: Required<ICustomColumnFormatting> = {\n backgroundColor: customFormatting.backgroundColor ?? defaultBackgroundColor,\n primaryColor: customFormatting.primaryColor ?? this._theme.palette.themePrimary,\n textColor: customFormatting.textColor ?? '',\n className: customFormatting.className ?? '',\n themeOverride: customFormatting.themeOverride ?? {}\n };\n\n // Apply background-specific adjustments\n if (result.backgroundColor !== defaultBackgroundColor) {\n result.themeOverride = merge({}, {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }, result.themeOverride);\n\n if (!customFormatting.primaryColor) {\n result.primaryColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n }\n\n // Ensure text color is set\n if (!result.textColor) {\n result.textColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n\n return result;\n }\n\n public getDefaultCellTheme(record: IRecord): ITheme {\n const isEven = record.getIndex() % 2 === 0;\n const summarizationType = record.getDataProvider().getSummarizationType();\n if (summarizationType !== 'none') {\n return this.oddRowCellTheme;\n }\n //child of a group record\n else if (record.getDataProvider().getParentDataProvider()) {\n return this.evenRowCellTheme;\n }\n else if (isEven || !this.isZebraEnabled()) {\n return this.evenRowCellTheme;\n }\n else {\n return this.oddRowCellTheme;\n }\n }\n\n public getGridColumns(): IGridColumn[] {\n this._cachedGridColumnsMap.clear();\n const gridColumns: IGridColumn[] = this.getDataset().columns.map(column => {\n const gridColumn = this.getGridColumnByName(column.name, true);\n this._cachedGridColumnsMap.set(gridColumn.name, gridColumn);\n return gridColumn;\n });\n return gridColumns;\n }\n\n public getColumnByName(columnName: string): IColumn {\n return this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n }\n\n public getGridColumnByName(columnName: string, force?: boolean): IGridColumn {\n if (!force) {\n const column = this._cachedGridColumnsMap.get(columnName);\n if (!column) {\n throw new Error(`Column with name ${columnName} not found in grid columns cache.`);\n }\n return column;\n }\n else {\n const column = this.getDataset().getColumnsMap()[columnName];\n const sorted = this.getDataset().sorting?.find(sort => sort.name === column.name);\n return {\n ...column,\n alignment: column.alignment!,\n isFiltered: this._filtering.getColumnFilter(column.name).isAppliedToDataset(),\n isEditable: this._isColumnEditable(column),\n isRequired: this._isColumnRequired(column),\n canBeGrouped: this._isColumnGroupable(column),\n isFilterable: this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n canBeAggregated: this._canColumnBeAggregated(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false\n }\n }\n }\n\n public getRecordValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, false);\n }\n public getRecordFormattedValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, true);\n }\n //returns record value in a form that is compatible with PCF typings\n public getControlValue(record: IRecord, column: IColumn | string): any {\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n //can be the aggregated value\n let value = this.getRecordValue(record, column).value;\n switch (column.dataType) {\n //getValue always returns string for TwoOptions\n case 'TwoOptions': {\n if (typeof value === 'string') {\n value = value == '1' ? true : false\n }\n break;\n }\n //getValue always returns string for OptionSet\n case 'OptionSet': {\n value = value ? parseInt(value) : null;\n break;\n }\n case 'MultiSelectPicklist': {\n value = value ? value.split(',').map((x: string) => parseInt(x)) : null;\n break;\n }\n case 'Lookup.Simple':\n case 'Lookup.Customer':\n case 'Lookup.Owner':\n case 'Lookup.Regarding': {\n //our implementation returns array, Power Apps returns object\n if (value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: ComponentFramework.EntityReference) => Sanitizer.Lookup.getLookupValue(x))\n break;\n }\n }\n return value;\n }\n\n public isRecordSelectionDisabled(record: IRecord): boolean {\n const dataProvider = record.getDataProvider();\n const level = dataProvider.getNestingLevel();\n const groupBys = this.getDataset().grouping.getGroupBys();\n if (this.getGroupType() === 'nested' && level < groupBys.length - 1) {\n return true;\n }\n if (dataProvider.getSummarizationType() === 'grouping' && this.getSelectionType() === 'single') {\n return true;\n }\n return false;\n }\n\n public isColumnEditable(columnName: string, record?: IRecord): boolean {\n let isEditable = true;\n const mainDatasetColumn = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n let column = mainDatasetColumn;\n if (record) {\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n }\n switch (true) {\n case !this.isEditingEnabled():\n case record?.isSaving():\n case column.oneClickEdit: {\n isEditable = false;\n break;\n }\n }\n switch (column.name) {\n case DataProvider.CONST.CHECKBOX_COLUMN_KEY:\n case DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME: {\n isEditable = false;\n break;\n }\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataTypes.File:\n case DataTypes.Image: {\n isEditable = false;\n break;\n }\n }\n //if the column is not editable, return false\n if (!isEditable) {\n return false\n }\n else {\n //columns is editable and we are not asking for record\n if (!record) {\n return true;\n }\n //column is editable, but we need to check if the record is editable\n else return this._isRecordFieldEditable(record, column);\n }\n }\n\n public addAggregation(columnName: string, aggregationFunction: AggregationFunction) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.addAggregation(columnName, aggregationFunction)\n })\n })\n }\n public removeAggregation(alias: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.removeAggregation(alias);\n })\n })\n }\n public toggleColumnGroup(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n if (column.grouping?.isGrouped) {\n this._grouping.ungroupColumn(column.grouping.alias!);\n }\n else {\n this._grouping.groupColumn(column.name);\n }\n this._dataset.refresh();\n })\n }\n\n public getColumnFilter(columnName: string) {\n return this._filtering.getColumnFilter(columnName);\n }\n\n public removeColumnFilter(columnName: string, saveToDataset?: boolean) {\n this._filtering.removeColumnFilter(columnName);\n if (!saveToDataset) {\n return;\n }\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const filterExpression = this._filtering.getFilterExpression(FilterType.And.Value);\n if (!filterExpression) {\n throw new Error('Unexpected error when clearing column filter.');\n }\n this._dataset.filtering.setFilter(filterExpression);\n this._dataset.refresh();\n })\n }\n\n public sortColumn(columnName: string, descending?: boolean) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).setSortValue(descending ? 1 : 0, hotkeys.getPressedKeyString().includes('⇧'));\n this._dataset.refresh();\n })\n }\n\n public clearColumnSorting(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).clear();\n this._dataset.refresh();\n })\n }\n public getTotalRow() {\n return this._totalRow;\n }\n public getFiltering() {\n return this._filtering;\n }\n public isSelectionModifierKeyPressed(): boolean {\n const pressedKeys = hotkeys.getPressedKeyString().join(',');\n switch (true) {\n case pressedKeys.includes('⇧'):\n case pressedKeys.includes('ctrl'):\n case pressedKeys.includes('⌘'): {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n public getColumnSortingLabel(columnName: string, descending?: boolean): string {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.WholeDuration:\n case DataTypes.Currency: {\n if (!descending) {\n return this._labels['filtersortmenu-sortnumber-a-z']()\n }\n return this._labels['filtersortmenu-sortnumber-z-a']()\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n if (!descending) {\n return this._labels['filtersortmenu-sortdate-a-z']()\n }\n return this._labels['filtersortmenu-sortdate-z-a']()\n }\n case DataTypes.TwoOptions: {\n const options = column.metadata?.OptionSet ?? [];\n if (!descending) {\n return `${options[0].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[1].Label}`\n }\n return `${options[1].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[0].Label}`\n }\n default: {\n if (!descending) {\n return this._labels['filtersortmenu-sorttext-a-z']()\n }\n return this._labels['filtersortmenu-sorttext-z-a']()\n }\n }\n\n }\n\n public destroy() {\n if (this._nestedProviderPagingLimitNotificationId) {\n window.Xrm.App.clearGlobalNotification(this._nestedProviderPagingLimitNotificationId);\n }\n hotkeys.unbind();\n }\n\n private _getInternalDataProvider(): IInternalDataProvider {\n return this.getDataset().getDataProvider() as IInternalDataProvider;\n }\n\n private _setAggregationDecorator(fn: () => void) {\n fn();\n if (this._dataset.grouping.getGroupBys().length > 0) {\n this._dataset.refresh();\n }\n else {\n this._totalRow?.refresh();\n }\n }\n\n private _getRecordValue(record: IRecord, column: IColumn | string, formatted: boolean): { value: any; aggregatedValue: any } {\n if (!record) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n if (!column) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const method = formatted ? 'getFormattedValue' : 'getValue';\n const groupBy = record.getDataProvider().grouping.getGroupBy(column.grouping?.alias!);\n const aggregation = record.getDataProvider().aggregation.getAggregation(column.aggregation?.alias!);\n\n let value = record[method](columnName);\n let aggregatedValue = null;\n\n if (groupBy) {\n value = record[method](groupBy.alias);\n }\n if (aggregation) {\n aggregatedValue = record[method](aggregation.alias);\n }\n return {\n value: value,\n aggregatedValue: aggregatedValue\n }\n }\n\n private _isRecordFieldEditable(record: IRecord, column: IColumn): boolean {\n const columnInfo = record.getColumnInfo(column.name);\n //if editable not defined, return true since column is editable in this case\n return columnInfo?.security.editable ?? true;\n }\n\n private _isColumnRequired(column: IColumn): boolean {\n if (!this.getParameters().EnableEditing?.raw) {\n return false;\n }\n switch (column.metadata?.RequiredLevel) {\n case 1:\n case 2: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n private _isColumnSortable(column: IColumn): boolean {\n //sorting enabled by default\n if (this.getParameters().EnableSorting?.raw === false) {\n return false;\n }\n return !column.disableSorting;\n }\n private _isColumnFilterable(column: IColumn): boolean {\n //filtering enabled by default\n if (this.getParameters().EnableFiltering?.raw === false) {\n return false;\n }\n if (!column.metadata?.SupportedFilterConditionOperators || column.metadata.SupportedFilterConditionOperators.length === 0) {\n return false;\n }\n return true;\n }\n\n private _isColumnGroupable(column: IColumn): boolean {\n //grouping disabled by default\n if (this.getParameters().EnableGrouping?.raw !== true) {\n return false;\n }\n return !!column.metadata?.CanBeGrouped;\n }\n\n private _isColumnEditable(column: IColumn): boolean {\n //editing disabled by default\n if (this.getParameters().EnableEditing?.raw !== true) {\n return false;\n }\n return !!column.metadata?.IsValidForUpdate;\n }\n\n private _canColumnBeAggregated(column: IColumn): boolean {\n //aggregations disabled by default\n if (this.getParameters().EnableAggregation?.raw !== true) {\n return false;\n }\n if (!column.metadata?.SupportedAggregations || column.metadata.SupportedAggregations.length === 0) {\n return false;\n }\n return true;\n }\n\n private _registerEventListeners() {\n this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());\n this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());\n this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());\n this._setGroupingInterceptor();\n }\n\n //TODO: use control notification instead\n private async _showNestedProviderPagingLimitNotification() {\n if (!this._nestedProviderPagingLimitNotificationId) {\n this._nestedProviderPagingLimitNotificationId = await window.Xrm.App.addGlobalNotification({\n level: 4,\n message: this.getLabels()['maximumGroupChildrenLimitReached']({ maxGroupChildren: Formatting.Get().formatInteger(5000) }),\n type: 2\n });\n }\n }\n private _refreshTotalRowOnAutoSave() {\n if (this.isAutoSaveEnabled()) {\n this._totalRow.refresh()\n }\n }\n\n //this method makes sure that the grouping is only applied to the first grouping column\n //this allows for nested grouping to work correctly\n private _setGroupingInterceptor() {\n if (this.getGroupType() === 'flat') {\n return;\n }\n let originalSortedGrouping: IGroupByMetadata[] = [];\n let originalAggregation: IGroupByMetadata[] = [];\n this._dataset.addEventListener('onBeforeNewDataLoaded', () => {\n originalSortedGrouping = this._dataset.grouping.getGroupBys().sort((a, b) => {\n const colA = this._dataset.getDataProvider().getColumnsMap()[a.columnName]!;\n const colB = this._dataset.getDataProvider().getColumnsMap()[b.columnName]!;\n return colA.order! - colB.order!;\n });\n originalAggregation = this._dataset.aggregation.getAggregations();\n if (originalSortedGrouping.length > 1) {\n this._dataset.grouping.clear();\n const groupBy = originalSortedGrouping[0];\n this._dataset.grouping.addGroupBy(groupBy);\n //clear all grouping aggregations except the first one\n for (let i = 1; i < originalSortedGrouping.length; i++) {\n const column = this._dataset.getDataProvider().getColumnsMap()[originalSortedGrouping[i].columnName];\n this._dataset.aggregation.removeAggregation(column?.aggregation?.alias!);\n }\n }\n })\n this._dataset.addEventListener('onNewDataLoaded', () => {\n originalSortedGrouping.map((group) => {\n this._dataset.grouping.addGroupBy(group);\n })\n originalAggregation.map((aggr: any) => {\n this._dataset.aggregation.addAggregation(aggr);\n })\n })\n }\n\n private get _dataset() {\n return this.getDataset();\n }\n}"],"names":["FilterType"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../src/components/Grid/grid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\nimport { IColumn } from \"@talxis/client-libraries\";\n\nexport const getGridStyles = (theme: ITheme) => {\n return mergeStyleSets({\n gridRoot: {\n height: '100%',\n minHeight: 180,\n display: 'flex',\n flexDirection: 'column',\n '--ag-borders': 'none !important',\n '.ag-root-wrapper': {\n maxHeight: '100%',\n '--ag-selected-row-background-color': theme.palette.themePrimary,\n '--ag-range-selection-border-color': theme.palette.themePrimary,\n '--ag-row-hover-color': theme.palette.black,\n '--ag-row-border-color': theme.semanticColors.menuDivider,\n '--ag-cell-horizontal-padding': 0,\n '--ag-input-focus-border-color': theme.semanticColors.inputFocusBorderAlt,\n borderBottom: `1px solid ${theme.semanticColors.menuDivider}`,\n '.ag-row::before': {\n zIndex: 1\n },\n '.ag-row-hover::before': {\n opacity: 0.1\n },\n '.ag-row-selected::before': {\n opacity: 0.2\n }\n },\n '.ag-body': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`\n },\n '.ag-header-viewport': {\n backgroundColor: `${theme.semanticColors.bodyBackground}`\n },\n '.ag-center-cols-container': {\n minWidth: '100%',\n },\n '.ag-layout-auto-height .ag-center-cols-clipper, .ag-layout-auto-height .ag-center-cols-container, .ag-layout-print .ag-center-cols-clipper, .ag-layout-print .ag-center-cols-container': {\n minHeight: '42px !important'\n },\n '.ag-header-cell': {\n paddingLeft: 0,\n paddingRight: 0,\n backgroundColor: `${theme.semanticColors.bodyBackground} !important`\n },\n '.ag-cell': {\n border: 'none !important',\n borderRadius: 0,\n overflow: 'hidden'\n },\n '.ag-cell-wrapper:has([data-is-loading=\"true\"])': {\n height: '100%'\n },\n '.ms-Checkbox.is-disabled .ms-Checkbox-checkbox': {\n borderColor: `${theme.semanticColors.disabledBorder} !important`\n },\n '.ag-pinned-left-cols-container .ag-cell-last-left-pinned:not([col-id=\"__checkbox__virtual\"])': {\n borderRight: `1px solid ${theme.semanticColors.menuDivider} !important`\n },\n '.ag-cell-highlight': {\n '::after': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n backgroundColor: `color-mix(in srgb, ${theme.palette.themePrimary}, transparent 70%)`,\n 'view-transition-name': 'cell-highlight',\n }\n },\n '.ag-cell-focus': {\n zIndex: 2,\n '::after': {\n content: \"''\",\n position: 'absolute',\n inset: '-1px',\n border: `3px solid ${theme.semanticColors.inputFocusBorderAlt}`,\n borderRadius: theme.effects.roundedCorner2,\n pointerEvents: 'none'\n }\n },\n '.ag-cell-focus:has([data-is-valid=\"false\"])': {\n '::after': {\n borderColor: `${theme.semanticColors.errorIcon} !important`\n }\n },\n '.ag-floating-bottom .ag-row-pinned': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`,\n borderBottom: 'none',\n }\n }\n })\n};\n\nexport const getJustifyContent = (columnAlignment: Required<IColumn['alignment']>) => {\n switch (columnAlignment) {\n case 'left': {\n return 'flex-start'\n }\n case 'center': {\n return 'center'\n }\n case 'right': {\n return 'flex-end'\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../src/components/Grid/grid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\nimport { IColumn } from \"@talxis/client-libraries\";\n\nexport const getGridStyles = (theme: ITheme) => {\n return mergeStyleSets({\n gridRoot: {\n height: '100%',\n minHeight: 180,\n display: 'flex',\n flexDirection: 'column',\n '--ag-borders': 'none !important',\n '.ag-root-wrapper': {\n maxHeight: '100%',\n '--ag-selected-row-background-color': theme.palette.themePrimary,\n '--ag-range-selection-border-color': theme.palette.themePrimary,\n '--ag-row-hover-color': theme.palette.black,\n '--ag-row-border-color': theme.semanticColors.menuDivider,\n '--ag-cell-horizontal-padding': 0,\n '--ag-input-focus-border-color': theme.semanticColors.inputFocusBorderAlt,\n borderBottom: `1px solid ${theme.semanticColors.menuDivider}`,\n '.ag-row::before': {\n zIndex: 1\n },\n '.ag-row-hover::before': {\n opacity: 0.1\n },\n '.ag-row-selected::before': {\n opacity: 0.2\n }\n },\n '.ag-body': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`\n },\n '.ag-header-viewport': {\n backgroundColor: `${theme.semanticColors.bodyBackground}`\n },\n '.ag-center-cols-container': {\n minWidth: '100%',\n },\n '.ag-layout-auto-height .ag-center-cols-clipper, .ag-layout-auto-height .ag-center-cols-container, .ag-layout-print .ag-center-cols-clipper, .ag-layout-print .ag-center-cols-container': {\n minHeight: '42px !important'\n },\n '.ag-header-cell': {\n paddingLeft: 0,\n paddingRight: 0,\n backgroundColor: `${theme.semanticColors.bodyBackground} !important`\n },\n '.ag-cell': {\n border: 'none !important',\n borderRadius: 0,\n overflow: 'hidden'\n },\n '.ag-cell-wrapper:has([data-is-loading=\"true\"])': {\n height: '100%'\n },\n '.ms-Checkbox.is-disabled .ms-Checkbox-checkbox': {\n borderColor: `${theme.semanticColors.disabledBorder} !important`\n },\n '.ag-pinned-left-cols-container .ag-cell-last-left-pinned:not([col-id=\"__checkbox__virtual\"])': {\n borderRight: `1px solid ${theme.semanticColors.menuDivider} !important`\n },\n '.ag-cell-highlight': {\n '::after': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n backgroundColor: `color-mix(in srgb, ${theme.palette.themePrimary}, transparent 70%)`,\n 'view-transition-name': 'cell-highlight',\n }\n },\n '.ag-overlay-loading-wrapper': {\n backdropFilter: 'blur(1px)'\n },\n '.ag-cell-focus': {\n zIndex: 2,\n '::after': {\n content: \"''\",\n position: 'absolute',\n inset: '-1px',\n border: `3px solid ${theme.semanticColors.inputFocusBorderAlt}`,\n borderRadius: theme.effects.roundedCorner2,\n pointerEvents: 'none'\n }\n },\n '.ag-cell-focus:has([data-is-valid=\"false\"])': {\n '::after': {\n borderColor: `${theme.semanticColors.errorIcon} !important`\n }\n },\n '.ag-floating-bottom .ag-row-pinned': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`,\n borderBottom: 'none',\n }\n }\n })\n};\n\nexport const getJustifyContent = (columnAlignment: Required<IColumn['alignment']>) => {\n switch (columnAlignment) {\n case 'left': {\n return 'flex-start'\n }\n case 'center': {\n return 'center'\n }\n case 'right': {\n return 'flex-end'\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,7 @@ import { IParameters, IStringProperty, ITwoOptionsProperty, IWholeNumberProperty
|
|
|
5
5
|
import { IControl, IOutputs } from "../../interfaces/context";
|
|
6
6
|
import { gridTranslations } from "./translations";
|
|
7
7
|
import { IDataset } from "@talxis/client-libraries";
|
|
8
|
-
export interface
|
|
9
|
-
agGrid: AgGridReactProps;
|
|
10
|
-
registerRowGroupingModule: boolean;
|
|
11
|
-
container: any;
|
|
12
|
-
pagingProps: any;
|
|
13
|
-
licenseKey?: string;
|
|
14
|
-
}
|
|
15
|
-
export interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, IGridComponentProps> {
|
|
8
|
+
export interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, AgGridReactProps> {
|
|
16
9
|
}
|
|
17
10
|
export interface IGridParameters extends IParameters {
|
|
18
11
|
Grid: IDataset;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { SpinnerSize } from '@fluentui/react';
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { SpinnerSize, Text } from '@fluentui/react';
|
|
3
3
|
import { Spinner } from '@talxis/react-components';
|
|
4
|
+
import { useGridInstance } from '../../grid/useGridInstance.js';
|
|
5
|
+
import { useMemo } from 'react';
|
|
6
|
+
import { getLoadingOverlayStyles } from './styles.js';
|
|
4
7
|
|
|
5
8
|
const LoadingOverlay = () => {
|
|
6
|
-
|
|
9
|
+
const grid = useGridInstance();
|
|
10
|
+
const provider = grid.getDataset().getDataProvider();
|
|
11
|
+
const loadingMessage = provider.getLoadingMessage();
|
|
12
|
+
const styles = useMemo(() => getLoadingOverlayStyles(), []);
|
|
13
|
+
return jsxs("div", { className: styles.root, children: [jsx(Spinner, { size: SpinnerSize.large }), loadingMessage &&
|
|
14
|
+
jsx(Text, { variant: 'large', className: styles.message, children: loadingMessage })] });
|
|
7
15
|
};
|
|
8
16
|
|
|
9
17
|
export { LoadingOverlay };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingOverlay.js","sources":["../../../../../src/components/Grid/overlays/loading/LoadingOverlay.tsx"],"sourcesContent":["import { SpinnerSize } from '@fluentui/react';\nimport { Spinner } from '@talxis/react-components';\n\nexport const LoadingOverlay = () => {\n return <Spinner size={SpinnerSize.large} />\n}"],"names":["_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"LoadingOverlay.js","sources":["../../../../../src/components/Grid/overlays/loading/LoadingOverlay.tsx"],"sourcesContent":["import { SpinnerSize, Text } from '@fluentui/react';\nimport { Spinner } from '@talxis/react-components';\nimport { useGridInstance } from '../../grid/useGridInstance';\nimport { useMemo } from 'react';\nimport { getLoadingOverlayStyles } from './styles';\n\nexport const LoadingOverlay = () => {\n const grid = useGridInstance();\n const provider = grid.getDataset().getDataProvider();\n const loadingMessage = provider.getLoadingMessage();\n const styles = useMemo(() => getLoadingOverlayStyles(), []);\n\n return <div className={styles.root}>\n <Spinner size={SpinnerSize.large} />\n {loadingMessage && \n <Text variant='large' className={styles.message}>{loadingMessage}</Text>\n }\n </div>\n}"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMO,MAAM,cAAc,GAAG,MAAK;AAC/B,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,EAAE,CAAC;AACrD,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AACpD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC;AAE5D,IAAA,OAAOA,cAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAC9B,QAAA,EAAA,CAAAC,GAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAA,CAAI,EACnC,cAAc;AACX,gBAAAA,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAAG,cAAc,EAAA,CAAQ,IAE1E,CAAA;AACV;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { mergeStyleSets } from '@fluentui/react';
|
|
2
|
+
|
|
3
|
+
const getLoadingOverlayStyles = () => {
|
|
4
|
+
return mergeStyleSets({
|
|
5
|
+
root: {
|
|
6
|
+
display: 'flex',
|
|
7
|
+
flexDirection: 'column',
|
|
8
|
+
gap: 10
|
|
9
|
+
},
|
|
10
|
+
message: {
|
|
11
|
+
fontWeight: 600
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { getLoadingOverlayStyles };
|
|
17
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../src/components/Grid/overlays/loading/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getLoadingOverlayStyles = () => {\n return mergeStyleSets({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 10\n },\n message: {\n fontWeight: 600\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,uBAAuB,GAAG,MAAK;AACxC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,GAAG,EAAE,EAAE;AACV,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,UAAU,EAAE,GAAG;AAClB,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -341,14 +341,7 @@ declare const gridTranslations: {
|
|
|
341
341
|
};
|
|
342
342
|
};
|
|
343
343
|
|
|
344
|
-
interface
|
|
345
|
-
agGrid: AgGridReactProps;
|
|
346
|
-
registerRowGroupingModule: boolean;
|
|
347
|
-
container: any;
|
|
348
|
-
pagingProps: any;
|
|
349
|
-
licenseKey?: string;
|
|
350
|
-
}
|
|
351
|
-
interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, IGridComponentProps> {
|
|
344
|
+
interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, AgGridReactProps> {
|
|
352
345
|
}
|
|
353
346
|
interface IGridParameters extends IParameters {
|
|
354
347
|
Grid: IDataset;
|
|
@@ -485,7 +478,7 @@ interface IDatasetControl extends EventEmitter<IDatasetControlEvents> {
|
|
|
485
478
|
|
|
486
479
|
interface IDatasetControlProps extends Omit<IControl<IDatasetControlParameters, IGridOutputs, Partial<ITranslation<typeof datasetControlTranslations & typeof gridTranslations>>, IDatasetControlComponentProps>, 'parameters' | 'context' | 'state'> {
|
|
487
480
|
/**
|
|
488
|
-
*
|
|
481
|
+
* Used to provide the Dataset control instance.
|
|
489
482
|
*/
|
|
490
483
|
onGetDatasetControlInstance: () => IDatasetControl;
|
|
491
484
|
/**
|
|
@@ -532,6 +525,8 @@ interface IHeaderProps {
|
|
|
532
525
|
}
|
|
533
526
|
interface IRibbonQuickFindWrapperProps {
|
|
534
527
|
ribbonQuickFindContainerProps: React$1.HTMLAttributes<HTMLDivElement>;
|
|
528
|
+
isRibbonVisible: boolean;
|
|
529
|
+
isQuickFindVisible: boolean;
|
|
535
530
|
onRenderQuickFind: (props: IQuickFindProps, defaultRender: (props: IQuickFindProps) => React$1.ReactElement) => React$1.ReactElement;
|
|
536
531
|
onRenderRibbon: IRibbonComponentProps['onRender'];
|
|
537
532
|
}
|
|
@@ -1489,4 +1484,4 @@ declare const useMouseOver: (ref: React.RefObject<HTMLElement>) => boolean;
|
|
|
1489
1484
|
|
|
1490
1485
|
declare const useEventEmitter: <T extends { [K in keyof T]: (...args: any[]) => any; }>(emitter: IEventEmitter<T>, event: keyof T | (keyof T)[], callback: T[keyof T]) => void;
|
|
1491
1486
|
|
|
1492
|
-
export { BaseControl, BaseControls, ControlTheme, DatasetAdapter, DatasetControl, DateTime, Decimal, Duration, Grid, GridCellRenderer, GridInlineRibbon, IBinding, IColorfulOptionSetValueRendererProps, IColorfulOptionValueRendererProps, IComponentProps$1 as IComponentProps, IContext, IControl, IControlController, IControlStates, IDatasetControlComponentProps, IDatasetControlParameters, IDatasetControlProps, IDateTime, IDateTimeOutputs, IDateTimeParameters, IDateTimeProperty, IDecimal, IDecimalNumberProperty, IDecimalOutputs, IDecimalParameters, IDefaultTranslations, IDuration, IDurationOutputs, IDurationParameters, IEntity, IFileProperty, IFileRendererProps, IFluentDesignState, IFooterProps, IGrid, IGridCellRenderer, IGridCellRendererComponentProps, IGridCellRendererParameters,
|
|
1487
|
+
export { BaseControl, BaseControls, ControlTheme, DatasetAdapter, DatasetControl, DateTime, Decimal, Duration, Grid, GridCellRenderer, GridInlineRibbon, IBinding, IColorfulOptionSetValueRendererProps, IColorfulOptionValueRendererProps, IComponentProps$1 as IComponentProps, IContext, IControl, IControlController, IControlStates, IDatasetControlComponentProps, IDatasetControlParameters, IDatasetControlProps, IDateTime, IDateTimeOutputs, IDateTimeParameters, IDateTimeProperty, IDecimal, IDecimalNumberProperty, IDecimalOutputs, IDecimalParameters, IDefaultTranslations, IDuration, IDurationOutputs, IDurationParameters, IEntity, IFileProperty, IFileRendererProps, IFluentDesignState, IFooterProps, IGrid, IGridCellRenderer, IGridCellRendererComponentProps, IGridCellRendererParameters, IGridInlineRibbon, IGridOutputs, IGridParameters, IHeaderProps, ILayout, ILookup, ILookupOutputs, ILookupParameters, ILookupProperty, IMetadata, IMultiSelectOptionSet, IMultiSelectOptionSetOutputs, IMultiSelectOptionSetParameters, IMultiSelectOptionSetProperty, INestedControlRenderer, INestedControlRendererComponentProps, INestedControlRendererParameters, IOptionSet, IOptionSetOutputs, IOptionSetParameters, IOptionSetProperty, IOutputs, IPaginationProps, IParameters, IProperty, IQuickFindProps, IRibbonParameters, IRibbonQuickFindWrapperProps, IStringProperty, ITextField, ITextFieldOutputs, ITextFieldParameters, ITranslation, ITranslations, ITwoOptions, ITwoOptionsOutputs, ITwoOptionsParameters, ITwoOptionsProperty, IValueRendererProps, IWholeNumberProperty, Lookup, MultiSelectOptionSet, NestedControlRenderer, OptionSet, TextField, ThemeWrapper, TwoOptions, VirtualDatasetAdapter, useControl, useControlLabels, useControlSizing, useControlTheme, useControlThemeGenerator, useDateTime, useEventEmitter, useFocusIn, useInputBasedControl, useLookup, useMouseOver };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@talxis/base-controls",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2601.1",
|
|
4
4
|
"description": "Set of React components that natively work with Power Apps Component Framework APIs.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
},
|
|
95
95
|
"peerDependencies": {
|
|
96
96
|
"@fluentui/react": "<=8.121.5",
|
|
97
|
+
"@talxis/client-libraries": "1.2601.1",
|
|
97
98
|
"@talxis/react-components": "1.2505.2",
|
|
98
|
-
"@talxis/client-libraries": "1.2512.3",
|
|
99
99
|
"react": "^16.8.6 || ^17.0.2",
|
|
100
100
|
"react-dom": "^16.8.6 || ^17.0.2"
|
|
101
101
|
}
|