@talxis/base-controls 1.2601.4 → 1.2601.5
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/DatasetControl.d.ts +1 -2
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.d.ts +5 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +70 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.d.ts +7 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js +14 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.d.ts +5 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.js +66 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.d.ts +1 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js +35 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.d.ts +9 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +58 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.d.ts +4 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js +32 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.d.ts +26 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js +32 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/styles.d.ts +50 -0
- package/dist/components/DatasetControl/EditColumns/styles.js +56 -0
- package/dist/components/DatasetControl/EditColumns/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.d.ts +4 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js +9 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -0
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +1 -1
- package/dist/components/DatasetControl/Header/Header.js +83 -45
- package/dist/components/DatasetControl/Header/Header.js.map +1 -1
- package/dist/components/DatasetControl/interfaces.d.ts +5 -1
- package/dist/components/DatasetControl/translations.d.ts +32 -0
- package/dist/components/DatasetControl/translations.js +8 -0
- package/dist/components/DatasetControl/translations.js.map +1 -1
- package/dist/components/DateTime/DateTime.d.ts +1 -2
- package/dist/components/DateTime/components/Calendar.d.ts +1 -2
- package/dist/components/Decimal/Decimal.d.ts +1 -2
- package/dist/components/Duration/Duration.d.ts +1 -2
- package/dist/components/Grid/cells/cell/Cell.d.ts +2 -3
- package/dist/components/Grid/cells/cell/content/CellContent.d.ts +1 -2
- package/dist/components/Grid/cells/cell/notifications/Notifications.d.ts +1 -2
- package/dist/components/Grid/cells/selection-cell/SelectionCell.d.ts +1 -2
- package/dist/components/Grid/cells/selection-cell/SelectionCell.js.map +1 -1
- package/dist/components/Grid/cells/selection-cell/record-save-error-callout/RecordSaveErrorCallout.d.ts +1 -2
- package/dist/components/Grid/column-headers/column-header/ColumnHeader.d.ts +1 -2
- package/dist/components/Grid/column-headers/column-header/ColumnHeaderContextualMenu.d.ts +1 -1
- package/dist/components/Grid/column-headers/column-header/FilterCallout.d.ts +1 -2
- package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.d.ts +1 -2
- package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.d.ts +1 -2
- package/dist/components/Grid/grid/Grid.d.ts +1 -2
- package/dist/components/Grid/loading/full-row/FullRowLoading.d.ts +1 -2
- package/dist/components/Grid/overlays/empty-records/EmptyRecordsOverlay.d.ts +1 -2
- package/dist/components/Grid/overlays/loading/LoadingOverlay.d.ts +1 -2
- package/dist/components/GridCellRenderer/GridCellRenderer.d.ts +1 -2
- package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.d.ts +1 -2
- package/dist/components/GridCellRenderer/ValueRenderer/styles.d.ts +174 -110
- package/dist/components/GridCellRenderer/ValueRenderer/styles.js +1 -0
- package/dist/components/GridCellRenderer/ValueRenderer/styles.js.map +1 -1
- package/dist/components/Lookup/Lookup.d.ts +1 -2
- package/dist/components/Lookup/components/RecordCreator.d.ts +1 -2
- package/dist/components/Lookup/components/TargetSelector.d.ts +1 -2
- package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.d.ts +1 -2
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.d.ts +1 -2
- package/dist/components/NestedControlRenderer/NestedControlRenderer.d.ts +1 -2
- package/dist/components/OptionSet/OptionSet.d.ts +1 -2
- package/dist/components/OptionSet/shared.d.ts +1 -2
- package/dist/components/Ribbon/styles.d.ts +1 -0
- package/dist/components/Ribbon/styles.js +1 -0
- package/dist/components/Ribbon/styles.js.map +1 -1
- package/dist/components/TextField/TextField.d.ts +1 -2
- package/dist/components/TwoOptions/TwoOptions.d.ts +1 -2
- package/dist/hooks/useShouldRemount.d.ts +1 -0
- package/dist/hooks/useShouldRemount.js +14 -0
- package/dist/hooks/useShouldRemount.js.map +1 -0
- package/dist/index.d.ts +80 -15
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.d.ts +1 -0
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +3 -0
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/dist/utils/dataset-control/DatasetControl.d.ts +17 -2
- package/dist/utils/dataset-control/DatasetControl.js +19 -0
- package/dist/utils/dataset-control/DatasetControl.js.map +1 -1
- package/dist/utils/dataset-control/EditColumns.d.ts +48 -0
- package/dist/utils/dataset-control/EditColumns.js +140 -0
- package/dist/utils/dataset-control/EditColumns.js.map +1 -0
- package/dist/utils/theme/components/ThemeWrapper.d.ts +1 -1
- package/package.json +9 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../src/components/GridCellRenderer/ValueRenderer/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\"\nimport { CSSProperties } from \"react\";\n\ninterface IDeps {\n theme: ITheme;\n isMultiline: boolean;\n makeBold: boolean;\n}\n\nexport const getValueRendererStyles = (deps: IDeps) => {\n const { isMultiline, theme } = deps;\n return mergeStyleSets({\n text: {\n fontSize: 'inherit',\n ...isMultiline ? getMultilineStyles() : {},\n },\n link: {\n
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../src/components/GridCellRenderer/ValueRenderer/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\"\nimport { CSSProperties } from \"react\";\n\ninterface IDeps {\n theme: ITheme;\n isMultiline: boolean;\n makeBold: boolean;\n}\n\nexport const getValueRendererStyles = (deps: IDeps) => {\n const { isMultiline, theme } = deps;\n return mergeStyleSets({\n text: {\n fontSize: 'inherit',\n ...isMultiline ? getMultilineStyles() : {},\n },\n link: {\n ...isMultiline ? getMultilineStyles() : {},\n },\n placeholder: {\n color: theme.semanticColors.disabledText\n }\n })\n}\n\nconst getMultilineStyles = (): CSSProperties => {\n return {\n whiteSpace: 'normal',\n display: '-webkit-box',\n //@ts-ignore\n '-webkit-box-orient': 'vertical',\n //@ts-ignore\n wordBreak: 'auto-phrase',\n '-webkit-line-clamp': '6',\n lineHeight: 'normal'\n }\n}"],"names":[],"mappings":";;AASa,MAAA,sBAAsB,GAAG,CAAC,IAAW,KAAI;AAClD,IAAA,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AACpC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,QAAQ,EAAE,SAAS;YACnB,GAAG,WAAW,GAAG,kBAAkB,EAAE,GAAG,EAAE;AAC7C,SAAA;AACD,QAAA,IAAI,EAAE;YACF,GAAG,WAAW,GAAG,kBAAkB,EAAE,GAAG,EAAE;AAC7C,SAAA;AACD,QAAA,WAAW,EAAE;AACT,YAAA,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY;AAC3C,SAAA;AACJ,KAAA,CAAC,CAAA;AACN,EAAC;AAED,MAAM,kBAAkB,GAAG,MAAoB;IAC3C,OAAO;AACH,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,OAAO,EAAE,aAAa;;AAEtB,QAAA,oBAAoB,EAAE,UAAU;;AAEhC,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,oBAAoB,EAAE,GAAG;AACzB,QAAA,UAAU,EAAE,QAAQ;KACvB,CAAA;AACL,CAAC;;;;"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { IEntity, ILookupTranslations } from "../interfaces";
|
|
3
2
|
import { StringProps } from '../../../types';
|
|
4
3
|
interface IRecordCreator {
|
|
@@ -6,5 +5,5 @@ interface IRecordCreator {
|
|
|
6
5
|
entities: IEntity[];
|
|
7
6
|
onCreateRecord: (entityName: string) => void;
|
|
8
7
|
}
|
|
9
|
-
export declare const RecordCreator: (props: IRecordCreator) => JSX.Element;
|
|
8
|
+
export declare const RecordCreator: (props: IRecordCreator) => import("react/jsx-runtime").JSX.Element;
|
|
10
9
|
export {};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { IEntity } from '../interfaces';
|
|
3
2
|
interface ITargetSelector {
|
|
4
3
|
labels: any;
|
|
5
4
|
entities: IEntity[];
|
|
6
5
|
onEntitySelected: (entityName: string | null) => void;
|
|
7
6
|
}
|
|
8
|
-
export declare const TargetSelector: (props: ITargetSelector) => JSX.Element;
|
|
7
|
+
export declare const TargetSelector: (props: ITargetSelector) => import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export {};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { IContext, IMultiSelectOptionSetProperty } from "../../../interfaces";
|
|
3
2
|
interface IColorfulOptionsProps {
|
|
4
3
|
value: IMultiSelectOptionSetProperty;
|
|
5
4
|
context: IContext;
|
|
6
5
|
}
|
|
7
|
-
export declare const ColorfulOptions: (props: IColorfulOptionsProps) => JSX.Element;
|
|
6
|
+
export declare const ColorfulOptions: (props: IColorfulOptionsProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
7
|
export {};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { IMultiSelectOptionSet } from './interfaces';
|
|
3
|
-
export declare const MultiSelectOptionSet: (props: IMultiSelectOptionSet) => JSX.Element;
|
|
2
|
+
export declare const MultiSelectOptionSet: (props: IMultiSelectOptionSet) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { INestedControlRenderer } from './interfaces';
|
|
3
|
-
export declare const NestedControlRenderer: (props: INestedControlRenderer) => JSX.Element;
|
|
2
|
+
export declare const NestedControlRenderer: (props: INestedControlRenderer) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="@types/powerapps-component-framework" />
|
|
2
|
-
/// <reference types="react" />
|
|
3
2
|
import { IComboBoxOption, ITheme } from "@fluentui/react";
|
|
4
|
-
export declare const onRenderColorfulOption: (options: ComponentFramework.PropertyHelper.OptionMetadata[], option: IComboBoxOption | undefined, theme: ITheme) => JSX.Element | null;
|
|
3
|
+
export declare const onRenderColorfulOption: (options: ComponentFramework.PropertyHelper.OptionMetadata[], option: IComboBoxOption | undefined, theme: ITheme) => import("react/jsx-runtime").JSX.Element | null;
|
|
5
4
|
export declare const getIsColorFeatureEnabled: (enableColors: boolean | undefined, options: ComponentFramework.PropertyHelper.OptionMetadata[]) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../src/components/Ribbon/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getRibbonStyles = () => {\n return mergeStyleSets({\n container: {\n flex: 1,\n },\n shimmerRoot: {\n width: '100%',\n },\n shimmerWrapper: {\n height: 44\n },\n commandBtnRoot: {\n 'img': {\n width: 18\n }\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,eAAe,GAAG,MAAK;AAChC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,SAAS,EAAE;AACP,YAAA,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/components/Ribbon/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getRibbonStyles = () => {\n return mergeStyleSets({\n container: {\n flex: 1,\n minWidth: 0,\n },\n shimmerRoot: {\n width: '100%',\n },\n shimmerWrapper: {\n height: 44\n },\n commandBtnRoot: {\n 'img': {\n width: 18\n }\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,eAAe,GAAG,MAAK;AAChC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,SAAS,EAAE;AACP,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA;AACD,QAAA,WAAW,EAAE;AACT,YAAA,KAAK,EAAE,MAAM;AAChB,SAAA;AACD,QAAA,cAAc,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACb,SAAA;AACD,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,KAAK,EAAE,EAAE;AACZ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useShouldRemount: () => [boolean, () => void];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useShouldRemount = () => {
|
|
4
|
+
const [shouldRemount, setShouldRemount] = React.useState(false);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (shouldRemount) {
|
|
7
|
+
setShouldRemount(false);
|
|
8
|
+
}
|
|
9
|
+
}, [shouldRemount]);
|
|
10
|
+
return [shouldRemount, () => setShouldRemount(true)];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { useShouldRemount };
|
|
14
|
+
//# sourceMappingURL=useShouldRemount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShouldRemount.js","sources":["../../src/hooks/useShouldRemount.ts"],"sourcesContent":["import React, { useEffect } from \"react\";\n\nexport const useShouldRemount = (): [boolean, () => void] => {\n const [shouldRemount, setShouldRemount] = React.useState(false);\n\n useEffect(() => {\n if(shouldRemount) {\n setShouldRemount(false);\n }\n }, [shouldRemount]);\n\n return [shouldRemount, () => setShouldRemount(true)];;\n}"],"names":[],"mappings":";;AAEO,MAAM,gBAAgB,GAAG,MAA4B;AACxD,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,SAAS,CAAC,MAAK;AACX,QAAA,IAAG,aAAa,EAAE;YACd,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AACL,KAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CAAC,aAAa,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="@types/powerapps-component-framework" />
|
|
2
2
|
/// <reference types="react" />
|
|
3
3
|
import { ITheme, ICommandBarProps, ITextFieldProps, ICalloutProps as ICalloutProps$1, IDatePickerProps, ITagPickerProps, IComboBoxProps } from '@talxis/react-components';
|
|
4
|
-
import { DeepPartial, DataType, IDataset,
|
|
4
|
+
import { DeepPartial, DataType, IDataset, IEventEmitter, IColumn, IAvailableRelatedColumn, IInterceptor, ICommand, AggregationFunction, IRecord, Dataset, IDataProvider, IRawRecord } from '@talxis/client-libraries';
|
|
5
5
|
import { ITheme as ITheme$1, ThemeProviderProps, IShimmerProps, IButtonProps, IMessageBarProps, ITextProps, ILabelProps, IIconProps, ILinkProps, IImageProps, ISpinnerProps, IMessageBar, IToggleProps } from '@fluentui/react';
|
|
6
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
7
|
import React$1 from 'react';
|
|
7
8
|
import { AgGridReactProps } from '@ag-grid-community/react';
|
|
8
9
|
|
|
@@ -109,7 +110,7 @@ interface IThemeWrapper extends ThemeProviderProps {
|
|
|
109
110
|
fluentDesignLanguage?: ComponentFramework.FluentDesignState;
|
|
110
111
|
children?: React$1.ReactNode;
|
|
111
112
|
}
|
|
112
|
-
declare const ThemeWrapper: (props: IThemeWrapper) => JSX.Element;
|
|
113
|
+
declare const ThemeWrapper: (props: IThemeWrapper) => react_jsx_runtime.JSX.Element;
|
|
113
114
|
|
|
114
115
|
type BaseControl = 'TextField' | 'OptionSet' | 'MultiSelectOptionSet' | 'DateTime' | 'Decimal' | 'Duration' | 'GridCellRenderer' | 'Lookup' | 'TwoOptions' | 'GridCellRenderer' | 'Grid' | 'DatasetControl' | 'NestedControl' | 'GridColumnHeader' | 'Ribbon' | 'GridInlineRibbon';
|
|
115
116
|
declare class BaseControls {
|
|
@@ -373,7 +374,7 @@ interface IGridParameters extends IParameters {
|
|
|
373
374
|
interface IGridOutputs extends IOutputs$1 {
|
|
374
375
|
}
|
|
375
376
|
|
|
376
|
-
declare const Grid: (props: IGrid) => JSX.Element;
|
|
377
|
+
declare const Grid: (props: IGrid) => react_jsx_runtime.JSX.Element;
|
|
377
378
|
|
|
378
379
|
declare const datasetControlTranslations: {
|
|
379
380
|
search: {
|
|
@@ -384,6 +385,38 @@ declare const datasetControlTranslations: {
|
|
|
384
385
|
1029: string;
|
|
385
386
|
1033: string;
|
|
386
387
|
};
|
|
388
|
+
'no-name': {
|
|
389
|
+
1029: string;
|
|
390
|
+
1033: string;
|
|
391
|
+
};
|
|
392
|
+
"column-source": {
|
|
393
|
+
1029: string;
|
|
394
|
+
1033: string;
|
|
395
|
+
};
|
|
396
|
+
"no-result-found": {
|
|
397
|
+
1029: string;
|
|
398
|
+
1033: string;
|
|
399
|
+
};
|
|
400
|
+
"add-column": {
|
|
401
|
+
1029: string;
|
|
402
|
+
1033: string;
|
|
403
|
+
};
|
|
404
|
+
cancel: {
|
|
405
|
+
1029: string;
|
|
406
|
+
1033: string;
|
|
407
|
+
};
|
|
408
|
+
'edit-columns': {
|
|
409
|
+
1029: string;
|
|
410
|
+
1033: string;
|
|
411
|
+
};
|
|
412
|
+
'edit-filters': {
|
|
413
|
+
1029: string;
|
|
414
|
+
1033: string;
|
|
415
|
+
};
|
|
416
|
+
save: {
|
|
417
|
+
1029: string;
|
|
418
|
+
1033: string;
|
|
419
|
+
};
|
|
387
420
|
generalError: {
|
|
388
421
|
1029: string;
|
|
389
422
|
1033: string;
|
|
@@ -464,14 +497,36 @@ interface IComponentProps$2 {
|
|
|
464
497
|
onRenderCommandBar: (props: ICommandBarProps, defaultRender: (props: ICommandBarProps) => React.ReactElement) => React.ReactElement;
|
|
465
498
|
}
|
|
466
499
|
|
|
500
|
+
interface IEditColumnsEvents {
|
|
501
|
+
onColumnAdded: (column: IColumn) => void;
|
|
502
|
+
onColumnsChanged: (newColumns: IColumn[]) => void;
|
|
503
|
+
onRelatedEntityColumnChanged: (relatedEntityColumn: IColumn | null) => void;
|
|
504
|
+
}
|
|
505
|
+
interface IEditColumns extends IEventEmitter<IEditColumnsEvents> {
|
|
506
|
+
save(): void;
|
|
507
|
+
getColumns(): (IColumn & {
|
|
508
|
+
id: string;
|
|
509
|
+
})[];
|
|
510
|
+
deleteColumn(name: string): void;
|
|
511
|
+
addColumn(column: IColumn): void;
|
|
512
|
+
getAvailableColumns(query?: string): Promise<IColumn[]>;
|
|
513
|
+
getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;
|
|
514
|
+
selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;
|
|
515
|
+
onColumnMoved(draggedColumnId: string, targetColumnId: string): void;
|
|
516
|
+
getMainEntityColumn(): IAvailableRelatedColumn;
|
|
517
|
+
}
|
|
518
|
+
|
|
467
519
|
interface IDatasetControlEvents {
|
|
468
520
|
onRecordCommandsLoaded: () => void;
|
|
521
|
+
onRemountRequested: () => void;
|
|
522
|
+
onEditColumnsRequested: () => void;
|
|
469
523
|
onInitialized: () => void;
|
|
470
524
|
}
|
|
471
525
|
interface IDatasetControlInterceptors {
|
|
472
526
|
onInitialize: () => Promise<void>;
|
|
473
527
|
}
|
|
474
|
-
interface IDatasetControl extends
|
|
528
|
+
interface IDatasetControl extends IEventEmitter<IDatasetControlEvents> {
|
|
529
|
+
editColumns: IEditColumns;
|
|
475
530
|
setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;
|
|
476
531
|
isPaginationVisible(): boolean;
|
|
477
532
|
isRecordCountVisible(): boolean;
|
|
@@ -486,7 +541,12 @@ interface IDatasetControl extends EventEmitter<IDatasetControlEvents> {
|
|
|
486
541
|
loadCommands(ids: string[]): Promise<void>;
|
|
487
542
|
retrieveRecordCommands(): ICommand[];
|
|
488
543
|
areCommandsLoaded(): boolean;
|
|
544
|
+
isEditColumnsVisible(): boolean;
|
|
545
|
+
isViewSwitcherVisible(): boolean;
|
|
546
|
+
isEditFiltersVisible(): boolean;
|
|
547
|
+
requestEditColumns(): void;
|
|
489
548
|
destroy(): void;
|
|
549
|
+
requestRemount(): void;
|
|
490
550
|
init(): Promise<void>;
|
|
491
551
|
getState(): ComponentFramework.Dictionary;
|
|
492
552
|
saveState(): void;
|
|
@@ -507,6 +567,7 @@ interface IDatasetControlProps extends Omit<IControl<IDatasetControlParameters,
|
|
|
507
567
|
}) => React$1.ReactElement<IControl<any, any, any, any>>;
|
|
508
568
|
}
|
|
509
569
|
interface IDatasetControlParameters extends IGridParameters {
|
|
570
|
+
EnableEditColumns?: Omit<ITwoOptionsProperty, 'attributes'>;
|
|
510
571
|
ClientApiWebresourceName?: IStringProperty;
|
|
511
572
|
ClientApiFunctionName?: IStringProperty;
|
|
512
573
|
}
|
|
@@ -543,6 +604,9 @@ interface IRibbonQuickFindWrapperProps {
|
|
|
543
604
|
ribbonQuickFindContainerProps: React$1.HTMLAttributes<HTMLDivElement>;
|
|
544
605
|
isRibbonVisible: boolean;
|
|
545
606
|
isQuickFindVisible: boolean;
|
|
607
|
+
isViewSwitcherVisible: boolean;
|
|
608
|
+
isEditColumnsVisible: boolean;
|
|
609
|
+
isEditFiltersVisible: boolean;
|
|
546
610
|
onRenderQuickFind: (props: IQuickFindProps, defaultRender: (props: IQuickFindProps) => React$1.ReactElement) => React$1.ReactElement;
|
|
547
611
|
onRenderRibbon: IRibbonComponentProps['onRender'];
|
|
548
612
|
}
|
|
@@ -578,7 +642,7 @@ interface IQuickFindProps {
|
|
|
578
642
|
onRenderCalloutContainer: (props: ICalloutContainer, defaultRender: (props: ICalloutContainer) => React$1.ReactElement) => React$1.ReactElement;
|
|
579
643
|
}
|
|
580
644
|
|
|
581
|
-
declare const DatasetControl: (props: IDatasetControlProps) => JSX.Element;
|
|
645
|
+
declare const DatasetControl: (props: IDatasetControlProps) => react_jsx_runtime.JSX.Element;
|
|
582
646
|
|
|
583
647
|
interface IParameters$1 {
|
|
584
648
|
[key: string]: IProperty | undefined;
|
|
@@ -643,7 +707,7 @@ interface IDateTimeOutputs extends IOutputs$1 {
|
|
|
643
707
|
value?: Date;
|
|
644
708
|
}
|
|
645
709
|
|
|
646
|
-
declare const DateTime: (componentProps: IDateTime) => JSX.Element;
|
|
710
|
+
declare const DateTime: (componentProps: IDateTime) => react_jsx_runtime.JSX.Element;
|
|
647
711
|
|
|
648
712
|
declare const useDateTime: (props: IDateTime, ref: React.RefObject<HTMLDivElement>) => [boolean, ITheme, ITranslation<Partial<ITranslations<{
|
|
649
713
|
time: {
|
|
@@ -685,7 +749,7 @@ interface IDecimalOutputs extends IOutputs$1 {
|
|
|
685
749
|
value?: number;
|
|
686
750
|
}
|
|
687
751
|
|
|
688
|
-
declare const Decimal: (props: IDecimal) => JSX.Element;
|
|
752
|
+
declare const Decimal: (props: IDecimal) => react_jsx_runtime.JSX.Element;
|
|
689
753
|
|
|
690
754
|
declare const gridGroupCellRendererTranslations: {
|
|
691
755
|
download: {
|
|
@@ -789,7 +853,7 @@ interface IFileRendererProps {
|
|
|
789
853
|
onRenderLink: (props: ILinkProps, defaultRender: (props: ILinkProps) => React.ReactElement) => React.ReactElement;
|
|
790
854
|
}
|
|
791
855
|
|
|
792
|
-
declare const GridCellRenderer: (props: IGridCellRenderer) => JSX.Element;
|
|
856
|
+
declare const GridCellRenderer: (props: IGridCellRenderer) => react_jsx_runtime.JSX.Element;
|
|
793
857
|
|
|
794
858
|
declare const lookupTranslations: {
|
|
795
859
|
search: {
|
|
@@ -891,7 +955,7 @@ interface ICell {
|
|
|
891
955
|
LabelId?: string;
|
|
892
956
|
}
|
|
893
957
|
|
|
894
|
-
declare const Lookup: (props: ILookup) => JSX.Element;
|
|
958
|
+
declare const Lookup: (props: ILookup) => react_jsx_runtime.JSX.Element;
|
|
895
959
|
|
|
896
960
|
declare const useLookup: (props: ILookup) => [ComponentFramework.LookupValue[], IEntity[], ITranslation<Partial<ITranslations<{
|
|
897
961
|
search: {
|
|
@@ -943,7 +1007,7 @@ interface IMultiSelectOptionSetOutputs extends IOutputs$1 {
|
|
|
943
1007
|
value?: number[];
|
|
944
1008
|
}
|
|
945
1009
|
|
|
946
|
-
declare const MultiSelectOptionSet: (props: IMultiSelectOptionSet) => JSX.Element;
|
|
1010
|
+
declare const MultiSelectOptionSet: (props: IMultiSelectOptionSet) => react_jsx_runtime.JSX.Element;
|
|
947
1011
|
|
|
948
1012
|
interface IOptions {
|
|
949
1013
|
onGetBindings: () => {
|
|
@@ -1165,7 +1229,7 @@ interface IControlStates {
|
|
|
1165
1229
|
isControlDisabled?: boolean;
|
|
1166
1230
|
}
|
|
1167
1231
|
|
|
1168
|
-
declare const NestedControlRenderer: (props: INestedControlRenderer) => JSX.Element;
|
|
1232
|
+
declare const NestedControlRenderer: (props: INestedControlRenderer) => react_jsx_runtime.JSX.Element;
|
|
1169
1233
|
|
|
1170
1234
|
interface IOptionSet extends IControl<IOptionSetParameters, IOptionSetOutputs, any, IComboBoxProps> {
|
|
1171
1235
|
}
|
|
@@ -1177,7 +1241,7 @@ interface IOptionSetOutputs extends IOutputs$1 {
|
|
|
1177
1241
|
value?: number;
|
|
1178
1242
|
}
|
|
1179
1243
|
|
|
1180
|
-
declare const OptionSet: (props: IOptionSet) => JSX.Element;
|
|
1244
|
+
declare const OptionSet: (props: IOptionSet) => react_jsx_runtime.JSX.Element;
|
|
1181
1245
|
|
|
1182
1246
|
interface ITextField extends IControl<ITextFieldParameters, ITextFieldOutputs, any, ITextFieldProps> {
|
|
1183
1247
|
}
|
|
@@ -1190,7 +1254,7 @@ interface ITextFieldOutputs extends IOutputs$1 {
|
|
|
1190
1254
|
value?: string;
|
|
1191
1255
|
}
|
|
1192
1256
|
|
|
1193
|
-
declare const TextField: (props: ITextField) => JSX.Element;
|
|
1257
|
+
declare const TextField: (props: ITextField) => react_jsx_runtime.JSX.Element;
|
|
1194
1258
|
|
|
1195
1259
|
interface ITwoOptions extends IControl<ITwoOptionsParameters, ITwoOptionsOutputs, any, IToggleProps> {
|
|
1196
1260
|
}
|
|
@@ -1202,7 +1266,7 @@ interface ITwoOptionsOutputs extends IOutputs$1 {
|
|
|
1202
1266
|
value?: boolean;
|
|
1203
1267
|
}
|
|
1204
1268
|
|
|
1205
|
-
declare const TwoOptions: (props: ITwoOptions) => JSX.Element;
|
|
1269
|
+
declare const TwoOptions: (props: ITwoOptions) => react_jsx_runtime.JSX.Element;
|
|
1206
1270
|
|
|
1207
1271
|
declare const getDefaultDurationTranslations: () => {
|
|
1208
1272
|
minute: {
|
|
@@ -1240,7 +1304,7 @@ interface IDurationOutputs extends IOutputs$1 {
|
|
|
1240
1304
|
value?: number;
|
|
1241
1305
|
}
|
|
1242
1306
|
|
|
1243
|
-
declare const Duration: (props: IDuration) => JSX.Element;
|
|
1307
|
+
declare const Duration: (props: IDuration) => react_jsx_runtime.JSX.Element;
|
|
1244
1308
|
|
|
1245
1309
|
interface IGridInlineRibbon extends IControl<IRibbonParameters, any, any, IGridInlineRibbonComponentProps> {
|
|
1246
1310
|
}
|
|
@@ -1355,6 +1419,7 @@ interface IInputs {
|
|
|
1355
1419
|
EnableOptionSetColors?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1356
1420
|
EnableAggregation?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1357
1421
|
EnableGrouping?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1422
|
+
EnableEditColumns?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1358
1423
|
EnableAutoSave?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1359
1424
|
EnableCommandBar?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
1360
1425
|
EnableZebra?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
@@ -23,6 +23,7 @@ interface IInputs {
|
|
|
23
23
|
EnableOptionSetColors?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
24
24
|
EnableAggregation?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
25
25
|
EnableGrouping?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
26
|
+
EnableEditColumns?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
26
27
|
EnableAutoSave?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
27
28
|
EnableCommandBar?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
28
29
|
EnableZebra?: ComponentFramework.PropertyTypes.EnumProperty<"true" | "false">;
|
|
@@ -126,6 +126,9 @@ class VirtualDatasetAdapter {
|
|
|
126
126
|
EnableQuickFind: {
|
|
127
127
|
raw: this._context.parameters.EnableQuickFind?.raw === 'true'
|
|
128
128
|
},
|
|
129
|
+
EnableEditColumns: {
|
|
130
|
+
raw: this._context.parameters.EnableEditColumns?.raw === 'true'
|
|
131
|
+
},
|
|
129
132
|
EnableAggregation: {
|
|
130
133
|
raw: this._context.parameters.EnableAggregation?.raw === 'true',
|
|
131
134
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualDatasetAdapter.js","sources":["../../../../src/utils/dataset/adapters/VirtualDatasetAdapter.ts"],"sourcesContent":["import { mergeStyles } from \"@fluentui/react\";\nimport { Dataset, FetchXmlDataProvider, IColumn, IDataProvider, IDataset, Interceptors, IRawRecord, MemoryDataProvider } from \"@talxis/client-libraries\";\nimport { IDatasetControlParameters, IDatasetControlProps } from \"../../../components\";\nimport { DatasetControl, IDatasetControl } from \"../../dataset-control\";\n\ninterface IOutputs {\n DatasetControl?: any;\n}\n\ninterface IInputs {\n Data: ComponentFramework.PropertyTypes.StringProperty | {\n raw: IRawRecord[]\n }\n EntityMetadata: ComponentFramework.PropertyTypes.StringProperty;\n DataProvider: ComponentFramework.PropertyTypes.EnumProperty<\"Memory\" | \"FetchXml\">;\n EnableQuickFind?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n Columns?: ComponentFramework.PropertyTypes.StringProperty;\n Height?: ComponentFramework.PropertyTypes.StringProperty;\n RowHeight?: ComponentFramework.PropertyTypes.WholeNumberProperty;\n EnableEditing?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnablePagination?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableFiltering?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableSorting?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableNavigation?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableOptionSetColors?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableAggregation?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableGrouping?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableAutoSave?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableCommandBar?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableZebra?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableGroupedColumnsPinning?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnablePageSizeSwitcher?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableRecordCount?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n HomePageGridClientApiRibbonButtonId?: ComponentFramework.PropertyTypes.StringProperty;\n InlineRibbonButtonIds?: ComponentFramework.PropertyTypes.StringProperty;\n DefaultExpandedGroupLevel?: ComponentFramework.PropertyTypes.WholeNumberProperty;\n SelectableRows?: ComponentFramework.PropertyTypes.EnumProperty<\"none\" | \"single\" | \"multiple\">;\n GroupingType?: ComponentFramework.PropertyTypes.EnumProperty<\"nested\" | \"flat\">;\n IsLocalHarnessDebugMode?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n ClientApiWebresourceName?: ComponentFramework.PropertyTypes.StringProperty;\n ClientApiFunctionName?: ComponentFramework.PropertyTypes.StringProperty;\n}\n\ninterface IVirtualDatasetAdapterOptions {\n /**\n * Runs a promise that is awaited when the dataset control is initialized, before loading the first data.\n */\n onInitialize?: (dataset: IDataset) => Promise<void>;\n /**\n * If provided, this function is called when the dataset is initialized and awaited before loading first data.\n */\n CustomDataProviderClass?: new (...args: any) => IDataProvider;\n}\n\n\n/**\n * Helper class that holds boilerplate code for handling a virtual dataset in PCF, like syncing data, columns, and metadata from parameters.\n *\n */\nexport class VirtualDatasetAdapter {\n private _context!: ComponentFramework.Context<IInputs, IOutputs>;\n private _dataset!: Dataset<IDataProvider>;\n private _container!: HTMLDivElement;\n private _options?: IVirtualDatasetAdapterOptions\n private _initialized: boolean = false;\n private _state: ComponentFramework.Dictionary = {};\n private _datasetControl!: IDatasetControl;\n\n constructor(options?: IVirtualDatasetAdapterOptions) {\n this._options = options;\n }\n\n public init(context: ComponentFramework.Context<IInputs, IOutputs>, container: HTMLDivElement, state: ComponentFramework.Dictionary) {\n this._container = container;\n this._context = context;\n this._state = state ?? {};\n if (!context.parameters.Data.raw) {\n this._createDummyDatasetControl();\n return this;\n }\n const dataProvider = this._getDataProviderInstance();\n this._dataset = new Dataset(dataProvider);\n //loads parameter columns\n this._dataset.setMetadata(this._getEntityMetadata());\n this._dataset.setDataSource(context.parameters.Data.raw);\n this._datasetControl = new DatasetControl({\n state: this._state,\n //@ts-ignore - typings\n controlId: this._context.utils._customControlProperties?.controlId,\n onGetPcfContext: () => this._context,\n onGetParameters: () => this._getDatasetControlParameters()\n });\n this._datasetControl.setInterceptor('onInitialize', async (parameters, defaultAction) => {\n //preloads dataset\n await defaultAction(parameters);\n //sets columns after preload\n this._dataset.setColumns(this._getColumns());\n await this._options?.onInitialize?.(this.getDataset());\n });\n if (this._context.parameters.Height?.raw === '100%') {\n this._container.classList.add(this._getFullTabStyles());\n }\n this._initialized = true;\n }\n\n /**\n * @param {?() => void} [onRenderEmptyData] - Only called when the data parameter is set to `null`. This should usually not happen since it's a required parameter, but Power Apps can pass null in certain scenarios (for example on a form with new record).\n */\n public updateView(context: ComponentFramework.Context<IInputs, IOutputs>, onRenderComponent: (datasetControlProps: Omit<IDatasetControlProps, 'onGetControlComponent'>) => void, onRenderEmptyData?: () => void) {\n this._context = context;\n if (!context.parameters.Data.raw) {\n return onRenderEmptyData?.()\n }\n //if not yet initialized, initialize, can happen if we start without data\n if (!this._initialized) {\n this.init(context, this._container, this._state);\n }\n return onRenderComponent({\n onGetDatasetControlInstance: () => this._datasetControl\n });\n }\n\n public getDataset(): Dataset<IDataProvider> {\n return this._dataset;\n }\n\n public getDatasetControl(): IDatasetControl {\n return this._datasetControl;\n }\n\n private _isEditingEnabled(): boolean {\n return this._context.parameters.EnableEditing?.raw === 'true';\n }\n\n private _isAutoSaveEnabled(): boolean {\n return this._context.parameters.EnableAutoSave?.raw === 'true';\n }\n\n private _isCommandBarEnabled(): boolean {\n return this._context.parameters.EnableCommandBar?.raw !== 'false'\n }\n\n private _createDummyDatasetControl() {\n this._datasetControl = new DatasetControl({\n state: this._state,\n //@ts-ignore - typings\n controlId: this._context.utils._customControlProperties?.controlId,\n onGetPcfContext: () => this._context,\n onGetParameters: () => {\n return {\n ...this._getDatasetControlParameters(),\n Grid: new Dataset(new MemoryDataProvider([], { PrimaryIdAttribute: 'id' }))\n }\n }\n });\n }\n\n private _getDatasetControlParameters(): IDatasetControlParameters {\n return {\n Grid: this.getDataset(),\n EnableEditing: {\n raw: this._isEditingEnabled()\n },\n EnableCommandBar: {\n raw: this._isCommandBarEnabled()\n },\n EnableAutoSave: {\n raw: this._isAutoSaveEnabled()\n },\n EnablePagination: {\n raw: this._context.parameters.EnablePagination?.raw !== 'false'\n },\n EnableFiltering: {\n raw: this._context.parameters.EnableFiltering?.raw !== 'false'\n },\n EnableSorting: {\n raw: this._context.parameters.EnableSorting?.raw !== 'false'\n },\n EnableNavigation: {\n raw: this._context.parameters.EnableNavigation?.raw !== 'false'\n },\n EnableOptionSetColors: {\n raw: this._context.parameters.EnableOptionSetColors?.raw === 'true'\n },\n SelectableRows: {\n raw: this._context.parameters.SelectableRows?.raw ?? 'single'\n },\n RowHeight: {\n raw: this._context.parameters.RowHeight?.raw ?? 42\n },\n //quick find is always handled by platform\n EnableQuickFind: {\n raw: this._context.parameters.EnableQuickFind?.raw === 'true'\n },\n EnableAggregation: {\n raw: this._context.parameters.EnableAggregation?.raw === 'true',\n },\n EnableGrouping: {\n raw: this._context.parameters.EnableGrouping?.raw === 'true'\n },\n Height: {\n raw: this._context.parameters.Height?.raw ?? null\n },\n InlineRibbonButtonIds: {\n raw: this._context.parameters.InlineRibbonButtonIds?.raw ?? null\n },\n EnableZebra: {\n raw: this._context.parameters.EnableZebra?.raw !== 'false'\n },\n DefaultExpandedGroupLevel: {\n raw: this._context.parameters.DefaultExpandedGroupLevel?.raw ?? null\n },\n EnableRecordCount: {\n raw: this._context.parameters.EnableRecordCount?.raw !== 'false'\n },\n EnableGroupedColumnsPinning: {\n raw: this._context.parameters.EnableGroupedColumnsPinning?.raw !== 'false'\n },\n EnablePageSizeSwitcher: {\n raw: this._context.parameters.EnablePageSizeSwitcher?.raw !== 'false'\n },\n GroupingType: {\n raw: this._context.parameters.GroupingType?.raw ?? 'nested'\n },\n IsLocalHarnessDebugMode: this._context.parameters.IsLocalHarnessDebugMode,\n ClientApiWebresourceName: {\n raw: this._context.parameters.ClientApiWebresourceName?.raw ?? null\n },\n ClientApiFunctionName: {\n raw: this._context.parameters.ClientApiFunctionName?.raw ?? null\n }\n }\n }\n\n private _getDataProviderInstance(): IDataProvider {\n if (this._options?.CustomDataProviderClass) {\n return new this._options.CustomDataProviderClass(this._context.parameters.Data.raw);\n }\n switch (this._context.parameters.DataProvider.raw) {\n case \"FetchXml\": {\n return new FetchXmlDataProvider(this._context.parameters.Data.raw as string)\n }\n case 'Memory': {\n return new MemoryDataProvider(this._context.parameters.Data.raw!, this._getEntityMetadata())\n }\n }\n }\n\n private _getColumns() {\n try {\n const parameterColumns = this._context.parameters.Columns?.raw;\n const columns: IColumn[] = Array.isArray(parameterColumns) ? parameterColumns : JSON.parse(parameterColumns ?? \"[]\");\n return this._getMergedColumns(columns);\n }\n catch (err) {\n console.error(err);\n return this._dataset.columns;\n }\n }\n\n private _getMergedColumns(parameterColumns: IColumn[]): IColumn[] {\n const columnsMap = new Map<string, IColumn>(this._dataset.columns.map((col: IColumn) => [col.name, col]));\n const stateColumnsMap = new Map<string, IColumn>(this._state?.DatasetControlState?.columns?.map((col: IColumn) => [col.name, col]) ?? []);\n //if we have state, return it\n if (stateColumnsMap.size > 0) {\n return [...stateColumnsMap.values()];\n }\n //no state, save to load from parameters\n else {\n parameterColumns.forEach(parameterCol => {\n const col = columnsMap.get(parameterCol.name);\n if (col) {\n columnsMap.set(col.name, {\n ...col,\n ...parameterCol\n });\n } else {\n columnsMap.set(parameterCol.name, parameterCol);\n }\n });\n }\n return [...columnsMap.values()];\n }\n\n private _getEntityMetadata() {\n const parameterMetadata = this._context.parameters.EntityMetadata.raw;\n if (parameterMetadata) {\n return JSON.parse(parameterMetadata);\n }\n return {};\n }\n\n private _getFullTabStyles() {\n return mergeStyles({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1\n });\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VirtualDatasetAdapter.js","sources":["../../../../src/utils/dataset/adapters/VirtualDatasetAdapter.ts"],"sourcesContent":["import { mergeStyles } from \"@fluentui/react\";\nimport { Dataset, FetchXmlDataProvider, IColumn, IDataProvider, IDataset, Interceptors, IRawRecord, MemoryDataProvider } from \"@talxis/client-libraries\";\nimport { IDatasetControlParameters, IDatasetControlProps } from \"../../../components\";\nimport { DatasetControl, IDatasetControl } from \"../../dataset-control\";\n\ninterface IOutputs {\n DatasetControl?: any;\n}\n\ninterface IInputs {\n Data: ComponentFramework.PropertyTypes.StringProperty | {\n raw: IRawRecord[]\n }\n EntityMetadata: ComponentFramework.PropertyTypes.StringProperty;\n DataProvider: ComponentFramework.PropertyTypes.EnumProperty<\"Memory\" | \"FetchXml\">;\n EnableQuickFind?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n Columns?: ComponentFramework.PropertyTypes.StringProperty;\n Height?: ComponentFramework.PropertyTypes.StringProperty;\n RowHeight?: ComponentFramework.PropertyTypes.WholeNumberProperty;\n EnableEditing?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnablePagination?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableFiltering?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableSorting?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableNavigation?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableOptionSetColors?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableAggregation?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableGrouping?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableEditColumns?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableAutoSave?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableCommandBar?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableZebra?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableGroupedColumnsPinning?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnablePageSizeSwitcher?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n EnableRecordCount?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n HomePageGridClientApiRibbonButtonId?: ComponentFramework.PropertyTypes.StringProperty;\n InlineRibbonButtonIds?: ComponentFramework.PropertyTypes.StringProperty;\n DefaultExpandedGroupLevel?: ComponentFramework.PropertyTypes.WholeNumberProperty;\n SelectableRows?: ComponentFramework.PropertyTypes.EnumProperty<\"none\" | \"single\" | \"multiple\">;\n GroupingType?: ComponentFramework.PropertyTypes.EnumProperty<\"nested\" | \"flat\">;\n IsLocalHarnessDebugMode?: ComponentFramework.PropertyTypes.EnumProperty<\"true\" | \"false\">;\n ClientApiWebresourceName?: ComponentFramework.PropertyTypes.StringProperty;\n ClientApiFunctionName?: ComponentFramework.PropertyTypes.StringProperty;\n}\n\ninterface IVirtualDatasetAdapterOptions {\n /**\n * Runs a promise that is awaited when the dataset control is initialized, before loading the first data.\n */\n onInitialize?: (dataset: IDataset) => Promise<void>;\n /**\n * If provided, this function is called when the dataset is initialized and awaited before loading first data.\n */\n CustomDataProviderClass?: new (...args: any) => IDataProvider;\n}\n\n\n/**\n * Helper class that holds boilerplate code for handling a virtual dataset in PCF, like syncing data, columns, and metadata from parameters.\n *\n */\nexport class VirtualDatasetAdapter {\n private _context!: ComponentFramework.Context<IInputs, IOutputs>;\n private _dataset!: Dataset<IDataProvider>;\n private _container!: HTMLDivElement;\n private _options?: IVirtualDatasetAdapterOptions\n private _initialized: boolean = false;\n private _state: ComponentFramework.Dictionary = {};\n private _datasetControl!: IDatasetControl;\n\n constructor(options?: IVirtualDatasetAdapterOptions) {\n this._options = options;\n }\n\n public init(context: ComponentFramework.Context<IInputs, IOutputs>, container: HTMLDivElement, state: ComponentFramework.Dictionary) {\n this._container = container;\n this._context = context;\n this._state = state ?? {};\n if (!context.parameters.Data.raw) {\n this._createDummyDatasetControl();\n return this;\n }\n const dataProvider = this._getDataProviderInstance();\n this._dataset = new Dataset(dataProvider);\n //loads parameter columns\n this._dataset.setMetadata(this._getEntityMetadata());\n this._dataset.setDataSource(context.parameters.Data.raw);\n this._datasetControl = new DatasetControl({\n state: this._state,\n //@ts-ignore - typings\n controlId: this._context.utils._customControlProperties?.controlId,\n onGetPcfContext: () => this._context,\n onGetParameters: () => this._getDatasetControlParameters()\n });\n this._datasetControl.setInterceptor('onInitialize', async (parameters, defaultAction) => {\n //preloads dataset\n await defaultAction(parameters);\n //sets columns after preload\n this._dataset.setColumns(this._getColumns());\n await this._options?.onInitialize?.(this.getDataset());\n });\n if (this._context.parameters.Height?.raw === '100%') {\n this._container.classList.add(this._getFullTabStyles());\n }\n this._initialized = true;\n }\n\n /**\n * @param {?() => void} [onRenderEmptyData] - Only called when the data parameter is set to `null`. This should usually not happen since it's a required parameter, but Power Apps can pass null in certain scenarios (for example on a form with new record).\n */\n public updateView(context: ComponentFramework.Context<IInputs, IOutputs>, onRenderComponent: (datasetControlProps: Omit<IDatasetControlProps, 'onGetControlComponent'>) => void, onRenderEmptyData?: () => void) {\n this._context = context;\n if (!context.parameters.Data.raw) {\n return onRenderEmptyData?.()\n }\n //if not yet initialized, initialize, can happen if we start without data\n if (!this._initialized) {\n this.init(context, this._container, this._state);\n }\n return onRenderComponent({\n onGetDatasetControlInstance: () => this._datasetControl\n });\n }\n\n public getDataset(): Dataset<IDataProvider> {\n return this._dataset;\n }\n\n public getDatasetControl(): IDatasetControl {\n return this._datasetControl;\n }\n\n private _isEditingEnabled(): boolean {\n return this._context.parameters.EnableEditing?.raw === 'true';\n }\n\n private _isAutoSaveEnabled(): boolean {\n return this._context.parameters.EnableAutoSave?.raw === 'true';\n }\n\n private _isCommandBarEnabled(): boolean {\n return this._context.parameters.EnableCommandBar?.raw !== 'false'\n }\n\n private _createDummyDatasetControl() {\n this._datasetControl = new DatasetControl({\n state: this._state,\n //@ts-ignore - typings\n controlId: this._context.utils._customControlProperties?.controlId,\n onGetPcfContext: () => this._context,\n onGetParameters: () => {\n return {\n ...this._getDatasetControlParameters(),\n Grid: new Dataset(new MemoryDataProvider([], { PrimaryIdAttribute: 'id' }))\n }\n }\n });\n }\n\n private _getDatasetControlParameters(): IDatasetControlParameters {\n return {\n Grid: this.getDataset(),\n EnableEditing: {\n raw: this._isEditingEnabled()\n },\n EnableCommandBar: {\n raw: this._isCommandBarEnabled()\n },\n EnableAutoSave: {\n raw: this._isAutoSaveEnabled()\n },\n EnablePagination: {\n raw: this._context.parameters.EnablePagination?.raw !== 'false'\n },\n EnableFiltering: {\n raw: this._context.parameters.EnableFiltering?.raw !== 'false'\n },\n EnableSorting: {\n raw: this._context.parameters.EnableSorting?.raw !== 'false'\n },\n EnableNavigation: {\n raw: this._context.parameters.EnableNavigation?.raw !== 'false'\n },\n EnableOptionSetColors: {\n raw: this._context.parameters.EnableOptionSetColors?.raw === 'true'\n },\n SelectableRows: {\n raw: this._context.parameters.SelectableRows?.raw ?? 'single'\n },\n RowHeight: {\n raw: this._context.parameters.RowHeight?.raw ?? 42\n },\n //quick find is always handled by platform\n EnableQuickFind: {\n raw: this._context.parameters.EnableQuickFind?.raw === 'true'\n },\n EnableEditColumns: {\n raw: this._context.parameters.EnableEditColumns?.raw === 'true'\n },\n EnableAggregation: {\n raw: this._context.parameters.EnableAggregation?.raw === 'true',\n },\n EnableGrouping: {\n raw: this._context.parameters.EnableGrouping?.raw === 'true'\n },\n Height: {\n raw: this._context.parameters.Height?.raw ?? null\n },\n InlineRibbonButtonIds: {\n raw: this._context.parameters.InlineRibbonButtonIds?.raw ?? null\n },\n EnableZebra: {\n raw: this._context.parameters.EnableZebra?.raw !== 'false'\n },\n DefaultExpandedGroupLevel: {\n raw: this._context.parameters.DefaultExpandedGroupLevel?.raw ?? null\n },\n EnableRecordCount: {\n raw: this._context.parameters.EnableRecordCount?.raw !== 'false'\n },\n EnableGroupedColumnsPinning: {\n raw: this._context.parameters.EnableGroupedColumnsPinning?.raw !== 'false'\n },\n EnablePageSizeSwitcher: {\n raw: this._context.parameters.EnablePageSizeSwitcher?.raw !== 'false'\n },\n GroupingType: {\n raw: this._context.parameters.GroupingType?.raw ?? 'nested'\n },\n IsLocalHarnessDebugMode: this._context.parameters.IsLocalHarnessDebugMode,\n ClientApiWebresourceName: {\n raw: this._context.parameters.ClientApiWebresourceName?.raw ?? null\n },\n ClientApiFunctionName: {\n raw: this._context.parameters.ClientApiFunctionName?.raw ?? null\n }\n }\n }\n\n private _getDataProviderInstance(): IDataProvider {\n if (this._options?.CustomDataProviderClass) {\n return new this._options.CustomDataProviderClass(this._context.parameters.Data.raw);\n }\n switch (this._context.parameters.DataProvider.raw) {\n case \"FetchXml\": {\n return new FetchXmlDataProvider(this._context.parameters.Data.raw as string)\n }\n case 'Memory': {\n return new MemoryDataProvider(this._context.parameters.Data.raw!, this._getEntityMetadata())\n }\n }\n }\n\n private _getColumns() {\n try {\n const parameterColumns = this._context.parameters.Columns?.raw;\n const columns: IColumn[] = Array.isArray(parameterColumns) ? parameterColumns : JSON.parse(parameterColumns ?? \"[]\");\n return this._getMergedColumns(columns);\n }\n catch (err) {\n console.error(err);\n return this._dataset.columns;\n }\n }\n\n private _getMergedColumns(parameterColumns: IColumn[]): IColumn[] {\n const columnsMap = new Map<string, IColumn>(this._dataset.columns.map((col: IColumn) => [col.name, col]));\n const stateColumnsMap = new Map<string, IColumn>(this._state?.DatasetControlState?.columns?.map((col: IColumn) => [col.name, col]) ?? []);\n //if we have state, return it\n if (stateColumnsMap.size > 0) {\n return [...stateColumnsMap.values()];\n }\n //no state, save to load from parameters\n else {\n parameterColumns.forEach(parameterCol => {\n const col = columnsMap.get(parameterCol.name);\n if (col) {\n columnsMap.set(col.name, {\n ...col,\n ...parameterCol\n });\n } else {\n columnsMap.set(parameterCol.name, parameterCol);\n }\n });\n }\n return [...columnsMap.values()];\n }\n\n private _getEntityMetadata() {\n const parameterMetadata = this._context.parameters.EntityMetadata.raw;\n if (parameterMetadata) {\n return JSON.parse(parameterMetadata);\n }\n return {};\n }\n\n private _getFullTabStyles() {\n return mergeStyles({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1\n });\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="@types/powerapps-component-framework" />
|
|
2
|
-
import { EventEmitter, ICommand, IDataset, IInterceptor } from "@talxis/client-libraries";
|
|
2
|
+
import { EventEmitter, ICommand, IDataset, IEventEmitter, IInterceptor } from "@talxis/client-libraries";
|
|
3
3
|
import { IDatasetControlParameters } from "../../components/DatasetControl/interfaces";
|
|
4
|
+
import { IEditColumns } from "./EditColumns";
|
|
4
5
|
interface IDatasetControlOptions {
|
|
5
6
|
state: ComponentFramework.Dictionary;
|
|
6
7
|
controlId: string;
|
|
@@ -9,12 +10,15 @@ interface IDatasetControlOptions {
|
|
|
9
10
|
}
|
|
10
11
|
export interface IDatasetControlEvents {
|
|
11
12
|
onRecordCommandsLoaded: () => void;
|
|
13
|
+
onRemountRequested: () => void;
|
|
14
|
+
onEditColumnsRequested: () => void;
|
|
12
15
|
onInitialized: () => void;
|
|
13
16
|
}
|
|
14
17
|
interface IDatasetControlInterceptors {
|
|
15
18
|
onInitialize: () => Promise<void>;
|
|
16
19
|
}
|
|
17
|
-
export interface IDatasetControl extends
|
|
20
|
+
export interface IDatasetControl extends IEventEmitter<IDatasetControlEvents> {
|
|
21
|
+
editColumns: IEditColumns;
|
|
18
22
|
setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;
|
|
19
23
|
isPaginationVisible(): boolean;
|
|
20
24
|
isRecordCountVisible(): boolean;
|
|
@@ -29,7 +33,12 @@ export interface IDatasetControl extends EventEmitter<IDatasetControlEvents> {
|
|
|
29
33
|
loadCommands(ids: string[]): Promise<void>;
|
|
30
34
|
retrieveRecordCommands(): ICommand[];
|
|
31
35
|
areCommandsLoaded(): boolean;
|
|
36
|
+
isEditColumnsVisible(): boolean;
|
|
37
|
+
isViewSwitcherVisible(): boolean;
|
|
38
|
+
isEditFiltersVisible(): boolean;
|
|
39
|
+
requestEditColumns(): void;
|
|
32
40
|
destroy(): void;
|
|
41
|
+
requestRemount(): void;
|
|
33
42
|
init(): Promise<void>;
|
|
34
43
|
getState(): ComponentFramework.Dictionary;
|
|
35
44
|
saveState(): void;
|
|
@@ -43,6 +52,7 @@ export declare class DatasetControl extends EventEmitter<IDatasetControlEvents>
|
|
|
43
52
|
private _debouncedLoadRecordCommands;
|
|
44
53
|
private _interceptors;
|
|
45
54
|
constructor(options: IDatasetControlOptions);
|
|
55
|
+
get editColumns(): IEditColumns;
|
|
46
56
|
setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;
|
|
47
57
|
isPaginationVisible(): boolean;
|
|
48
58
|
isRecordCountVisible(): boolean;
|
|
@@ -50,6 +60,10 @@ export declare class DatasetControl extends EventEmitter<IDatasetControlEvents>
|
|
|
50
60
|
isQuickFindVisible(): boolean;
|
|
51
61
|
isAutoSaveEnabled(): boolean;
|
|
52
62
|
isRibbonVisible(): boolean;
|
|
63
|
+
requestEditColumns(): void;
|
|
64
|
+
isViewSwitcherVisible(): boolean;
|
|
65
|
+
isEditColumnsVisible(): boolean;
|
|
66
|
+
isEditFiltersVisible(): boolean;
|
|
53
67
|
getHeight(): string | null;
|
|
54
68
|
getDataset(): IDataset;
|
|
55
69
|
getPcfContext(): ComponentFramework.Context<any, any>;
|
|
@@ -57,6 +71,7 @@ export declare class DatasetControl extends EventEmitter<IDatasetControlEvents>
|
|
|
57
71
|
retrieveRecordCommands(): ICommand[];
|
|
58
72
|
areCommandsLoaded(): boolean;
|
|
59
73
|
destroy(): void;
|
|
74
|
+
requestRemount(): void;
|
|
60
75
|
init(): Promise<void>;
|
|
61
76
|
getParameters(): IDatasetControlParameters;
|
|
62
77
|
getState(): ComponentFramework.Dictionary;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, Client, Interceptors, DataProvider } from '@talxis/client-libraries';
|
|
2
2
|
import debounce from 'debounce';
|
|
3
|
+
import { EditColumns } from './EditColumns.js';
|
|
3
4
|
|
|
4
5
|
class DatasetControl extends EventEmitter {
|
|
5
6
|
constructor(options) {
|
|
@@ -16,6 +17,9 @@ class DatasetControl extends EventEmitter {
|
|
|
16
17
|
this._addEventListeners();
|
|
17
18
|
this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());
|
|
18
19
|
}
|
|
20
|
+
get editColumns() {
|
|
21
|
+
return new EditColumns({ datasetControl: this });
|
|
22
|
+
}
|
|
19
23
|
setInterceptor(event, interceptor) {
|
|
20
24
|
this._interceptors.setInterceptor(event, interceptor);
|
|
21
25
|
}
|
|
@@ -37,6 +41,18 @@ class DatasetControl extends EventEmitter {
|
|
|
37
41
|
isRibbonVisible() {
|
|
38
42
|
return this.getParameters().EnableCommandBar?.raw ?? true;
|
|
39
43
|
}
|
|
44
|
+
requestEditColumns() {
|
|
45
|
+
this.dispatchEvent('onEditColumnsRequested');
|
|
46
|
+
}
|
|
47
|
+
isViewSwitcherVisible() {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
isEditColumnsVisible() {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
isEditFiltersVisible() {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
40
56
|
getHeight() {
|
|
41
57
|
return this.getParameters().Height?.raw ?? null;
|
|
42
58
|
}
|
|
@@ -70,6 +86,9 @@ class DatasetControl extends EventEmitter {
|
|
|
70
86
|
this.clearEventListeners();
|
|
71
87
|
this._interceptors.clearInterceptors();
|
|
72
88
|
}
|
|
89
|
+
requestRemount() {
|
|
90
|
+
this.dispatchEvent('onRemountRequested');
|
|
91
|
+
}
|
|
73
92
|
async init() {
|
|
74
93
|
await this._interceptors.execute('onInitialize', undefined, async () => {
|
|
75
94
|
if (this.getDataset().getDataProvider().getProperty('isStandalone') || !this._client.isTalxisPortal()) {
|