@talxis/base-controls 1.2601.4 → 1.2601.6

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.
Files changed (87) hide show
  1. package/dist/components/DatasetControl/DatasetControl.d.ts +1 -2
  2. package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.d.ts +5 -0
  3. package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +70 -0
  4. package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -0
  5. package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.d.ts +7 -0
  6. package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js +14 -0
  7. package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js.map +1 -0
  8. package/dist/components/DatasetControl/EditColumns/EditColumns.d.ts +5 -0
  9. package/dist/components/DatasetControl/EditColumns/EditColumns.js +66 -0
  10. package/dist/components/DatasetControl/EditColumns/EditColumns.js.map +1 -0
  11. package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.d.ts +1 -0
  12. package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js +35 -0
  13. package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js.map +1 -0
  14. package/dist/components/DatasetControl/EditColumns/Selector/Selector.d.ts +9 -0
  15. package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +58 -0
  16. package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -0
  17. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.d.ts +4 -0
  18. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js +32 -0
  19. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js.map +1 -0
  20. package/dist/components/DatasetControl/EditColumns/SortableItem/styles.d.ts +26 -0
  21. package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js +32 -0
  22. package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js.map +1 -0
  23. package/dist/components/DatasetControl/EditColumns/styles.d.ts +50 -0
  24. package/dist/components/DatasetControl/EditColumns/styles.js +56 -0
  25. package/dist/components/DatasetControl/EditColumns/styles.js.map +1 -0
  26. package/dist/components/DatasetControl/EditColumns/useEditColumns.d.ts +4 -0
  27. package/dist/components/DatasetControl/EditColumns/useEditColumns.js +9 -0
  28. package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -0
  29. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +1 -1
  30. package/dist/components/DatasetControl/Header/Header.js +83 -45
  31. package/dist/components/DatasetControl/Header/Header.js.map +1 -1
  32. package/dist/components/DatasetControl/interfaces.d.ts +5 -1
  33. package/dist/components/DatasetControl/translations.d.ts +32 -0
  34. package/dist/components/DatasetControl/translations.js +8 -0
  35. package/dist/components/DatasetControl/translations.js.map +1 -1
  36. package/dist/components/DateTime/DateTime.d.ts +1 -2
  37. package/dist/components/DateTime/components/Calendar.d.ts +1 -2
  38. package/dist/components/Decimal/Decimal.d.ts +1 -2
  39. package/dist/components/Duration/Duration.d.ts +1 -2
  40. package/dist/components/Grid/cells/cell/Cell.d.ts +2 -3
  41. package/dist/components/Grid/cells/cell/content/CellContent.d.ts +1 -2
  42. package/dist/components/Grid/cells/cell/notifications/Notifications.d.ts +1 -2
  43. package/dist/components/Grid/cells/selection-cell/SelectionCell.d.ts +1 -2
  44. package/dist/components/Grid/cells/selection-cell/SelectionCell.js.map +1 -1
  45. package/dist/components/Grid/cells/selection-cell/record-save-error-callout/RecordSaveErrorCallout.d.ts +1 -2
  46. package/dist/components/Grid/column-headers/column-header/ColumnHeader.d.ts +1 -2
  47. package/dist/components/Grid/column-headers/column-header/ColumnHeaderContextualMenu.d.ts +1 -1
  48. package/dist/components/Grid/column-headers/column-header/FilterCallout.d.ts +1 -2
  49. package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.d.ts +1 -2
  50. package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.d.ts +1 -2
  51. package/dist/components/Grid/grid/Grid.d.ts +1 -2
  52. package/dist/components/Grid/loading/full-row/FullRowLoading.d.ts +1 -2
  53. package/dist/components/Grid/overlays/empty-records/EmptyRecordsOverlay.d.ts +1 -2
  54. package/dist/components/Grid/overlays/loading/LoadingOverlay.d.ts +1 -2
  55. package/dist/components/GridCellRenderer/GridCellRenderer.d.ts +1 -2
  56. package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.d.ts +1 -2
  57. package/dist/components/GridCellRenderer/ValueRenderer/styles.d.ts +174 -110
  58. package/dist/components/GridCellRenderer/ValueRenderer/styles.js +1 -0
  59. package/dist/components/GridCellRenderer/ValueRenderer/styles.js.map +1 -1
  60. package/dist/components/Lookup/Lookup.d.ts +1 -2
  61. package/dist/components/Lookup/components/RecordCreator.d.ts +1 -2
  62. package/dist/components/Lookup/components/TargetSelector.d.ts +1 -2
  63. package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.d.ts +1 -2
  64. package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.d.ts +1 -2
  65. package/dist/components/NestedControlRenderer/NestedControlRenderer.d.ts +1 -2
  66. package/dist/components/OptionSet/OptionSet.d.ts +1 -2
  67. package/dist/components/OptionSet/shared.d.ts +1 -2
  68. package/dist/components/Ribbon/styles.d.ts +1 -0
  69. package/dist/components/Ribbon/styles.js +1 -0
  70. package/dist/components/Ribbon/styles.js.map +1 -1
  71. package/dist/components/TextField/TextField.d.ts +1 -2
  72. package/dist/components/TwoOptions/TwoOptions.d.ts +1 -2
  73. package/dist/hooks/useShouldRemount.d.ts +1 -0
  74. package/dist/hooks/useShouldRemount.js +14 -0
  75. package/dist/hooks/useShouldRemount.js.map +1 -0
  76. package/dist/index.d.ts +80 -15
  77. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.d.ts +1 -0
  78. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +3 -0
  79. package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
  80. package/dist/utils/dataset-control/DatasetControl.d.ts +17 -2
  81. package/dist/utils/dataset-control/DatasetControl.js +19 -0
  82. package/dist/utils/dataset-control/DatasetControl.js.map +1 -1
  83. package/dist/utils/dataset-control/EditColumns.d.ts +48 -0
  84. package/dist/utils/dataset-control/EditColumns.js +140 -0
  85. package/dist/utils/dataset-control/EditColumns.js.map +1 -0
  86. package/dist/utils/theme/components/ThemeWrapper.d.ts +1 -1
  87. package/package.json +9 -4
@@ -19,6 +19,7 @@ const getMultilineStyles = () => {
19
19
  return {
20
20
  whiteSpace: 'normal',
21
21
  display: '-webkit-box',
22
+ //@ts-ignore
22
23
  '-webkit-box-orient': 'vertical',
23
24
  //@ts-ignore
24
25
  wordBreak: 'auto-phrase',
@@ -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 ...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 '-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;YACD,GAAG,WAAW,GAAG,kBAAkB,EAAE,GAAG,EAAE;AAC9C,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;AACtB,QAAA,oBAAoB,EAAE,UAAU;;AAEhC,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,oBAAoB,EAAE,GAAG;AACzB,QAAA,UAAU,EAAE,QAAQ;KACvB,CAAA;AACL,CAAC;;;;"}
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,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ILookup } from "./interfaces";
3
- export declare const Lookup: (props: ILookup) => JSX.Element;
2
+ export declare const Lookup: (props: ILookup) => import("react/jsx-runtime").JSX.Element;
@@ -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,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { IOptionSet } from './interfaces';
3
- export declare const OptionSet: (props: IOptionSet) => JSX.Element;
2
+ export declare const OptionSet: (props: IOptionSet) => 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,6 +1,7 @@
1
1
  export declare const getRibbonStyles: () => import("@fluentui/react").IProcessedStyleSet<{
2
2
  container: {
3
3
  flex: number;
4
+ minWidth: number;
4
5
  };
5
6
  shimmerRoot: {
6
7
  width: string;
@@ -4,6 +4,7 @@ const getRibbonStyles = () => {
4
4
  return mergeStyleSets({
5
5
  container: {
6
6
  flex: 1,
7
+ minWidth: 0,
7
8
  },
8
9
  shimmerRoot: {
9
10
  width: '100%',
@@ -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;AACV,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;;;;"}
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;;;;"}
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ITextField } from './interfaces';
3
- export declare const TextField: (props: ITextField) => JSX.Element;
2
+ export declare const TextField: (props: ITextField) => import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { ITwoOptions } from './interfaces';
3
- export declare const TwoOptions: (props: ITwoOptions) => JSX.Element;
2
+ export declare const TwoOptions: (props: ITwoOptions) => import("react/jsx-runtime").JSX.Element;
@@ -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, EventEmitter, IInterceptor, ICommand, IColumn, AggregationFunction, IRecord, Dataset, IDataProvider, IRawRecord, IEventEmitter } from '@talxis/client-libraries';
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 EventEmitter<IDatasetControlEvents> {
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":";;;;AAwDA;;;AAGG;MACU,qBAAqB,CAAA;AAS9B,IAAA,WAAA,CAAY,OAAuC,EAAA;QAJ3C,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAM,CAAA,MAAA,GAAkC,EAAE,CAAC;AAI/C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KAC3B;AAEM,IAAA,IAAI,CAAC,OAAsD,EAAE,SAAyB,EAAE,KAAoC,EAAA;AAC/H,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;;QAE1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,MAAM;;YAElB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,EAAE,SAAS;AAClE,YAAA,eAAe,EAAE,MAAM,IAAI,CAAC,QAAQ;AACpC,YAAA,eAAe,EAAE,MAAM,IAAI,CAAC,4BAA4B,EAAE;AAC7D,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,UAAU,EAAE,aAAa,KAAI;;AAEpF,YAAA,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;;YAEhC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;AAED;;AAEG;AACI,IAAA,UAAU,CAAC,OAAsD,EAAE,iBAAqG,EAAE,iBAA8B,EAAA;AAC3M,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9B,OAAO,iBAAiB,IAAI,CAAA;AAC/B,SAAA;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,OAAO,iBAAiB,CAAC;AACrB,YAAA,2BAA2B,EAAE,MAAM,IAAI,CAAC,eAAe;AAC1D,SAAA,CAAC,CAAC;KACN;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAEM,iBAAiB,GAAA;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAEO,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,KAAK,MAAM,CAAC;KACjE;IAEO,kBAAkB,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,KAAK,MAAM,CAAC;KAClE;IAEO,oBAAoB,GAAA;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,KAAK,OAAO,CAAA;KACpE;IAEO,0BAA0B,GAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,MAAM;;YAElB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,EAAE,SAAS;AAClE,YAAA,eAAe,EAAE,MAAM,IAAI,CAAC,QAAQ;YACpC,eAAe,EAAE,MAAK;gBAClB,OAAO;oBACH,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACtC,oBAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9E,CAAA;aACJ;AACJ,SAAA,CAAC,CAAC;KACN;IAEO,4BAA4B,GAAA;QAChC,OAAO;AACH,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,YAAA,aAAa,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAChC,aAAA;AACD,YAAA,gBAAgB,EAAE;AACd,gBAAA,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACnC,aAAA;AACD,YAAA,cAAc,EAAE;AACZ,gBAAA,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACjC,aAAA;AACD,YAAA,gBAAgB,EAAE;gBACd,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,KAAK,OAAO;AAClE,aAAA;AACD,YAAA,eAAe,EAAE;gBACb,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,KAAK,OAAO;AACjE,aAAA;AACD,YAAA,aAAa,EAAE;gBACX,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,KAAK,OAAO;AAC/D,aAAA;AACD,YAAA,gBAAgB,EAAE;gBACd,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,KAAK,OAAO;AAClE,aAAA;AACD,YAAA,qBAAqB,EAAE;gBACnB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,KAAK,MAAM;AACtE,aAAA;AACD,YAAA,cAAc,EAAE;gBACZ,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,IAAI,QAAQ;AAChE,aAAA;AACD,YAAA,SAAS,EAAE;gBACP,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE;AACrD,aAAA;;AAED,YAAA,eAAe,EAAE;gBACb,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,KAAK,MAAM;AAChE,aAAA;AACD,YAAA,iBAAiB,EAAE;gBACf,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,KAAK,MAAM;AAClE,aAAA;AACD,YAAA,iBAAiB,EAAE;gBACf,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,KAAK,MAAM;AAClE,aAAA;AACD,YAAA,cAAc,EAAE;gBACZ,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,KAAK,MAAM;AAC/D,aAAA;AACD,YAAA,MAAM,EAAE;gBACJ,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI;AACpD,aAAA;AACD,YAAA,qBAAqB,EAAE;gBACnB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,IAAI,IAAI;AACnE,aAAA;AACD,YAAA,WAAW,EAAE;gBACT,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,KAAK,OAAO;AAC7D,aAAA;AACD,YAAA,yBAAyB,EAAE;gBACvB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,EAAE,GAAG,IAAI,IAAI;AACvE,aAAA;AACD,YAAA,iBAAiB,EAAE;gBACf,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,KAAK,OAAO;AACnE,aAAA;AACD,YAAA,2BAA2B,EAAE;gBACzB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAA2B,EAAE,GAAG,KAAK,OAAO;AAC7E,aAAA;AACD,YAAA,sBAAsB,EAAE;gBACpB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE,GAAG,KAAK,OAAO;AACxE,aAAA;AACD,YAAA,YAAY,EAAE;gBACV,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,GAAG,IAAI,QAAQ;AAC9D,aAAA;AACD,YAAA,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,uBAAuB;AACzE,YAAA,wBAAwB,EAAE;gBACtB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,EAAE,GAAG,IAAI,IAAI;AACtE,aAAA;AACD,YAAA,qBAAqB,EAAE;gBACnB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,IAAI,IAAI;AACnE,aAAA;SACJ,CAAA;KACJ;IAEO,wBAAwB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE;AACxC,YAAA,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvF,SAAA;QACD,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG;YAC7C,KAAK,UAAU,EAAE;AACb,gBAAA,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAa,CAAC,CAAA;AAC/E,aAAA;YACD,KAAK,QAAQ,EAAE;AACX,gBAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;AAC/F,aAAA;AACJ,SAAA;KACJ;IAEO,WAAW,GAAA;QACf,IAAI;YACA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;YAC/D,MAAM,OAAO,GAAc,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;AACrH,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA,OAAO,GAAG,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,SAAA;KACJ;AAEO,IAAA,iBAAiB,CAAC,gBAA2B,EAAA;QACjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAY,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAkB,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAY,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;AAE1I,QAAA,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,SAAA;;AAEI,aAAA;AACD,YAAA,gBAAgB,CAAC,OAAO,CAAC,YAAY,IAAG;gBACpC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAA,IAAI,GAAG,EAAE;AACL,oBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AACrB,wBAAA,GAAG,GAAG;AACN,wBAAA,GAAG,YAAY;AAClB,qBAAA,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;oBACH,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACnD,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;IAEO,kBAAkB,GAAA;QACtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC;AACtE,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;IAEO,iBAAiB,GAAA;AACrB,QAAA,OAAO,WAAW,CAAC;AACf,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA,CAAC,CAAC;KACN;AACJ;;;;"}
@@ -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 EventEmitter<IDatasetControlEvents> {
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 this.getParameters().EnableEditColumns?.raw ?? false;
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()) {