@talxis/base-controls 1.2512.4 → 1.2601.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +14 -11
  2. package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js.map +1 -1
  3. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.d.ts +14 -2
  4. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js +41 -7
  5. package/dist/components/DatasetControl/Filtering/DatasetColumnFilteringModel.js.map +1 -1
  6. package/dist/components/DatasetControl/Header/Header.js +9 -2
  7. package/dist/components/DatasetControl/Header/Header.js.map +1 -1
  8. package/dist/components/DatasetControl/interfaces.d.ts +3 -1
  9. package/dist/components/Grid/cells/cell/Cell.js +17 -6
  10. package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
  11. package/dist/components/Grid/grid/Grid.js +26 -13
  12. package/dist/components/Grid/grid/Grid.js.map +1 -1
  13. package/dist/components/Grid/grid/GridModel.d.ts +0 -1
  14. package/dist/components/Grid/grid/GridModel.js +1 -7
  15. package/dist/components/Grid/grid/GridModel.js.map +1 -1
  16. package/dist/components/Grid/grid/styles.d.ts +3 -0
  17. package/dist/components/Grid/grid/styles.js +3 -0
  18. package/dist/components/Grid/grid/styles.js.map +1 -1
  19. package/dist/components/Grid/interfaces.d.ts +1 -8
  20. package/dist/components/Grid/overlays/loading/LoadingOverlay.js +11 -3
  21. package/dist/components/Grid/overlays/loading/LoadingOverlay.js.map +1 -1
  22. package/dist/components/Grid/overlays/loading/styles.d.ts +10 -0
  23. package/dist/components/Grid/overlays/loading/styles.js +17 -0
  24. package/dist/components/Grid/overlays/loading/styles.js.map +1 -0
  25. package/dist/components/Lookup/hooks/useFetchXml.js +32 -7
  26. package/dist/components/Lookup/hooks/useFetchXml.js.map +1 -1
  27. package/dist/components/Lookup/hooks/useLookup.js +4 -4
  28. package/dist/components/Lookup/hooks/useLookup.js.map +1 -1
  29. package/dist/index.d.ts +5 -10
  30. package/package.json +2 -2
@@ -102,7 +102,6 @@ export declare class GridModel {
102
102
  private _canColumnBeAggregated;
103
103
  private _registerEventListeners;
104
104
  private _showNestedProviderPagingLimitNotification;
105
- private _autoSaveRecord;
106
105
  private _refreshTotalRowOnAutoSave;
107
106
  private _setGroupingInterceptor;
108
107
  private get _dataset();
@@ -47,7 +47,7 @@ class GridModel {
47
47
  return this.getParameters().EnableNavigation?.raw !== false;
48
48
  }
49
49
  isAutoSaveEnabled() {
50
- return this.getParameters().EnableAutoSave?.raw === true;
50
+ return this._dataset.getDataProvider().getProperty('autoSave') === true;
51
51
  }
52
52
  isGroupedColumnsPinnedEnabled() {
53
53
  return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;
@@ -697,7 +697,6 @@ class GridModel {
697
697
  return true;
698
698
  }
699
699
  _registerEventListeners() {
700
- this._dataset.addEventListener('onRecordColumnValueChanged', (record) => this._autoSaveRecord(record));
701
700
  this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());
702
701
  this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());
703
702
  this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());
@@ -713,11 +712,6 @@ class GridModel {
713
712
  });
714
713
  }
715
714
  }
716
- _autoSaveRecord(record) {
717
- if (this.isAutoSaveEnabled() && record.isDirty()) {
718
- record.save();
719
- }
720
- }
721
715
  _refreshTotalRowOnAutoSave() {
722
716
  if (this.isAutoSaveEnabled()) {
723
717
  this._totalRow.refresh();
@@ -1 +1 @@
1
- {"version":3,"file":"GridModel.js","sources":["../../../../src/components/Grid/grid/GridModel.ts"],"sourcesContent":["import { AggregationFunction, DataProvider, DataType, DataTypes, FieldValue, Filtering, Formatting, Grouping, IColumn, ICustomColumnControl, ICustomColumnFormatting, IDataProvider, IDataset, IGroupByMetadata, IInternalDataProvider, IRecord, Sanitizer, Sorting, TotalRow } from \"@talxis/client-libraries\";\nimport { merge } from \"merge-anything\";\nimport { ITheme, Theming } from \"@talxis/react-components\";\nimport { getTheme } from \"@fluentui/react\";\nimport { gridTranslations } from \"../translations\";\nimport { ITranslation } from \"../../../hooks\";\nimport { IBinding } from \"../../NestedControlRenderer/interfaces\";\nimport { BaseControls, IFluentDesignState } from \"../../../utils\";\nimport { IGrid, IGridParameters } from \"../interfaces\";\nimport { CHECKBOX_COLUMN_KEY } from \"../constants\";\nimport { Type as FilterType } from \"@talxis/client-libraries\";\nimport hotkeys from 'hotkeys-js';\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\ninterface IGridDependencies {\n labels: Required<ITranslation<typeof gridTranslations>>;\n onGetProps: () => IGrid;\n theme?: ITheme;\n}\n\ninterface IPCFContext extends Omit<ComponentFramework.Context<any, any>, 'fluentDesignLanguage'> {\n fluentDesignLanguage?: IFluentDesignState\n}\n\nexport interface IGridColumn extends IColumn {\n isRequired: boolean;\n isEditable: boolean;\n isFilterable: boolean;\n isSorted: boolean;\n isFiltered: boolean;\n canBeAggregated: boolean;\n canBeGrouped: boolean;\n isSortedDescending: boolean;\n isResizable: boolean;\n alignment: IColumn['alignment'],\n}\n\nexport class GridModel {\n public readonly oddRowCellTheme: ITheme;\n public readonly evenRowCellTheme: ITheme;\n private _getProps: () => IGrid;\n private _labels: Required<ITranslation<typeof gridTranslations>>;\n private _theme: ITheme;\n private _sorting: Sorting;\n private _totalRow: TotalRow\n private _grouping: Grouping;\n private _filtering: Filtering;\n private _nestedProviderPagingLimitNotificationId: string | null = null;\n private _cachedGridColumnsMap: Map<string, IGridColumn> = new Map();\n\n constructor({ onGetProps, labels, theme }: IGridDependencies) {\n this._getProps = onGetProps;\n this._labels = labels;\n this._theme = theme ?? getTheme();\n this.oddRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.neutralLighterAlt, this._theme.semanticColors.bodyText);\n this.evenRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.white, this._theme.semanticColors.bodyText);\n const provider = this.getDataset().getDataProvider();\n this._sorting = new Sorting(provider);\n this._totalRow = new TotalRow(provider);\n this._filtering = new Filtering(provider, FieldValue);\n this._grouping = new Grouping(provider);\n this._registerEventListeners();\n hotkeys('*', (event, handler) => {\n })\n }\n\n public getDataset(): IDataset {\n return this._getProps().parameters.Grid;\n }\n\n public getPcfContext(): IPCFContext {\n return this._getProps().context;\n }\n\n public getState() {\n return this._getProps().state;\n }\n\n public getParameters(): IGridParameters {\n return this._getProps().parameters;\n }\n public getLabels(): Required<ITranslation<typeof gridTranslations>> {\n return this._labels;\n }\n public isZebraEnabled(): boolean {\n return this._getProps().parameters.EnableZebra?.raw !== false;\n }\n public isNavigationEnabled(): boolean {\n return this.getParameters().EnableNavigation?.raw !== false;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw === true;\n }\n public isGroupedColumnsPinnedEnabled(): boolean {\n return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;\n }\n public getInlineRibbonButtonIds(): string | null {\n return this.getParameters().InlineRibbonButtonIds?.raw ?? null;\n }\n public isEditingEnabled(): boolean {\n return this.getParameters().EnableEditing?.raw === true;\n }\n public getGroupType(): 'nested' | 'flat' {\n return this.getDataset().getDataProvider().getProperty('groupingType');\n }\n public optionSetColorsEnabled(): boolean {\n return this.getParameters().EnableOptionSetColors?.raw === true;\n }\n public getDefaultExpandedGroupLevel(): number {\n return this.getParameters().DefaultExpandedGroupLevel?.raw ?? -1;\n }\n public getLicenseKey(): string | null {\n return this.getParameters().LicenseKey?.raw ?? null;\n }\n public getDefaultRowHeight(): number {\n const height = this.getParameters().RowHeight?.raw;\n if (height) {\n return height;\n }\n return DEFAULT_ROW_HEIGHT;\n }\n\n public getSelectionType(): 'none' | 'single' | 'multiple' {\n switch (this.getParameters().SelectableRows?.raw) {\n case undefined:\n case null: {\n return 'multiple'\n }\n }\n return this.getParameters().SelectableRows!.raw;\n }\n public getControl(column: IColumn, record: IRecord, editing: boolean): Required<ICustomColumnControl> {\n editing = record.getSummarizationType() === 'aggregation' ? false : editing;\n //file and image currently do not support editor, always force cell renderers\n switch (column.dataType) {\n case 'File':\n case 'Image': {\n return {\n name: 'GridCellRenderer',\n appliesTo: 'both',\n bindings: {}\n }\n }\n }\n const defaultControl: Required<ICustomColumnControl> = {\n name: (() => {\n if (record.getSummarizationType() === 'aggregation') {\n return 'GridCellRenderer';\n }\n if (column.name === DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME) {\n return BaseControls.GridInlineRibbon;\n }\n if (editing) {\n return BaseControls.GetControlNameForDataType(column.dataType as DataType)\n }\n return 'GridCellRenderer';\n })(),\n appliesTo: 'both',\n bindings: {}\n };\n const customControls = record.getColumnInfo(column.name).ui.getCustomControls([defaultControl]);\n const appliesToValue = editing ? 'editor' : 'renderer';\n const customControl = customControls.find(\n control => control.appliesTo === 'both' || control.appliesTo === appliesToValue\n );\n if (customControl) {\n return merge(defaultControl, customControl) as Required<ICustomColumnControl>;\n }\n\n return defaultControl;\n }\n\n public getBindings(record: IRecord, column: IColumn, control: ICustomColumnControl) {\n const columnInfo = record.getColumnInfo(column.name);\n const bindings: { [name: string]: IBinding } = {\n 'value': {\n isStatic: false,\n type: column.dataType as any,\n value: this.getControlValue(record, column),\n formattedValue: this.getRecordFormattedValue(record, column).value,\n error: columnInfo.error,\n errorMessage: columnInfo.errorMessage,\n onNotifyOutputChanged: () => { },\n metadata: {\n onOverrideMetadata: () => column.metadata\n }\n },\n 'IsCellCustomizer': {\n isStatic: true,\n type: DataTypes.TwoOptions,\n value: true\n }\n }\n if (control.bindings) {\n Object.entries(control.bindings).map(([name, binding]) => {\n bindings[name] = {\n isStatic: true,\n type: binding.type!,\n value: binding.value\n }\n })\n }\n return bindings;\n }\n\n public getFieldBindingParameters(record: IRecord, column: IColumn, editing: boolean) {\n //make sure we have IColumn, not IGridColumn\n column = record.getDataProvider().getColumnsMap()[column.name]!;\n const summarizationType = record.getDataProvider().getSummarizationType();\n const value = this.getRecordValue(record, column);\n const formattedValue = this.getRecordFormattedValue(record, column);\n const aggregationColumn = record.getDataProvider().getColumnsMap()[column.aggregation?.alias!];\n const parameters: any = {\n Dataset: {\n raw: this.getDataset(),\n type: DataTypes.Object\n },\n Record: {\n raw: record,\n type: DataTypes.Object\n },\n Column: {\n raw: column,\n type: DataTypes.Object\n }\n }\n parameters.AggregatedValue = {\n raw: value.aggregatedValue,\n formatted: formattedValue.aggregatedValue,\n type: aggregationColumn?.dataType ?? DataTypes.Decimal\n }\n parameters.EnableNavigation = {\n raw: (() => {\n if (!this.isNavigationEnabled()) {\n return false;\n }\n if (summarizationType === 'aggregation') {\n return false;\n }\n else if (summarizationType === 'grouping') {\n switch (column.dataType) {\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding:\n case DataTypes.LookupOwner:\n case DataTypes.LookupSimple:\n case DataTypes.File:\n case DataTypes.Image:\n case DataTypes.SingleLineEmail:\n case DataTypes.SingleLineUrl:\n case DataTypes.SingleLinePhone: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n else {\n return true;\n }\n })(),\n type: DataTypes.TwoOptions\n }\n parameters.ColumnAlignment = {\n raw: column.alignment,\n type: DataTypes.SingleLineText\n }\n parameters.IsPrimaryColumn = {\n raw: column.isPrimary,\n type: DataTypes.TwoOptions\n }\n parameters.ShowErrorMessage = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.CellType = {\n raw: editing ? 'editor' : 'renderer',\n type: DataTypes.SingleLineText\n }\n parameters.AutoFocus = {\n raw: editing,\n type: DataTypes.TwoOptions\n }\n parameters.AggregationFunction = {\n raw: summarizationType === 'aggregation' ? aggregationColumn?.aggregation?.aggregationFunction : null,\n type: DataTypes.SingleLineText\n }\n parameters.PrefixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.SuffixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.IsInlineNewEnabled = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableTypeSuffix = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableOptionSetColors = {\n raw: this.optionSetColorsEnabled(),\n type: DataTypes.TwoOptions\n }\n parameters.CommandButtonIds = {\n raw: this.getInlineRibbonButtonIds(),\n type: DataTypes.SingleLineText\n }\n parameters.ShouldUnmountWhenOutputChanges = {\n raw: (() => {\n //by default, leave cell editor opened for these types since\n // they can output partial changes as values\n switch (column.dataType) {\n case 'DateAndTime.DateAndTime':\n case 'MultiSelectPicklist': {\n return false;\n }\n default: {\n return true;\n }\n }\n })(),\n type: DataTypes.TwoOptions\n }\n return parameters;\n }\n\n public isColumnExpandable(record: IRecord, column: IColumn): boolean {\n const groupBy = record.getDataProvider().grouping.getGroupBys()[0];\n return groupBy?.columnName === column.name\n }\n\n public getFieldFormatting(record: IRecord, columnName: string): Required<ICustomColumnFormatting> {\n const defaultTheme = this.getDefaultCellTheme(record);\n const defaultBackgroundColor = defaultTheme.semanticColors.bodyBackground;;\n\n // Handle checkbox column specifically\n if (columnName === CHECKBOX_COLUMN_KEY || !record) {\n return {\n primaryColor: this._theme.palette.themePrimary,\n backgroundColor: defaultBackgroundColor,\n textColor: Theming.GetTextColorForBackground(defaultBackgroundColor),\n className: '',\n themeOverride: {}\n };\n }\n\n const customFormatting = record.getColumnInfo(columnName).ui.getCustomFormatting(defaultTheme) ?? {};\n\n // Prepare the result with defaults\n const result: Required<ICustomColumnFormatting> = {\n backgroundColor: customFormatting.backgroundColor ?? defaultBackgroundColor,\n primaryColor: customFormatting.primaryColor ?? this._theme.palette.themePrimary,\n textColor: customFormatting.textColor ?? '',\n className: customFormatting.className ?? '',\n themeOverride: customFormatting.themeOverride ?? {}\n };\n\n // Apply background-specific adjustments\n if (result.backgroundColor !== defaultBackgroundColor) {\n result.themeOverride = merge({}, {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }, result.themeOverride);\n\n if (!customFormatting.primaryColor) {\n result.primaryColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n }\n\n // Ensure text color is set\n if (!result.textColor) {\n result.textColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n\n return result;\n }\n\n public getDefaultCellTheme(record: IRecord): ITheme {\n const isEven = record.getIndex() % 2 === 0;\n const summarizationType = record.getDataProvider().getSummarizationType();\n if (summarizationType !== 'none') {\n return this.oddRowCellTheme;\n }\n //child of a group record\n else if (record.getDataProvider().getParentDataProvider()) {\n return this.evenRowCellTheme;\n }\n else if (isEven || !this.isZebraEnabled()) {\n return this.evenRowCellTheme;\n }\n else {\n return this.oddRowCellTheme;\n }\n }\n\n public getGridColumns(): IGridColumn[] {\n this._cachedGridColumnsMap.clear();\n const gridColumns: IGridColumn[] = this.getDataset().columns.map(column => {\n const gridColumn = this.getGridColumnByName(column.name, true);\n this._cachedGridColumnsMap.set(gridColumn.name, gridColumn);\n return gridColumn;\n });\n return gridColumns;\n }\n\n public getColumnByName(columnName: string): IColumn {\n return this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n }\n\n public getGridColumnByName(columnName: string, force?: boolean): IGridColumn {\n if (!force) {\n const column = this._cachedGridColumnsMap.get(columnName);\n if (!column) {\n throw new Error(`Column with name ${columnName} not found in grid columns cache.`);\n }\n return column;\n }\n else {\n const column = this.getDataset().getColumnsMap()[columnName];\n const sorted = this.getDataset().sorting?.find(sort => sort.name === column.name);\n return {\n ...column,\n alignment: column.alignment!,\n isFiltered: this._filtering.getColumnFilter(column.name).isAppliedToDataset(),\n isEditable: this._isColumnEditable(column),\n isRequired: this._isColumnRequired(column),\n canBeGrouped: this._isColumnGroupable(column),\n isFilterable: this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n canBeAggregated: this._canColumnBeAggregated(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false\n }\n }\n }\n\n public getRecordValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, false);\n }\n public getRecordFormattedValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, true);\n }\n //returns record value in a form that is compatible with PCF typings\n public getControlValue(record: IRecord, column: IColumn | string): any {\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n //can be the aggregated value\n let value = this.getRecordValue(record, column).value;\n switch (column.dataType) {\n //getValue always returns string for TwoOptions\n case 'TwoOptions': {\n if (typeof value === 'string') {\n value = value == '1' ? true : false\n }\n break;\n }\n //getValue always returns string for OptionSet\n case 'OptionSet': {\n value = value ? parseInt(value) : null;\n break;\n }\n case 'MultiSelectPicklist': {\n value = value ? value.split(',').map((x: string) => parseInt(x)) : null;\n break;\n }\n case 'Lookup.Simple':\n case 'Lookup.Customer':\n case 'Lookup.Owner':\n case 'Lookup.Regarding': {\n //our implementation returns array, Power Apps returns object\n if (value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: ComponentFramework.EntityReference) => Sanitizer.Lookup.getLookupValue(x))\n break;\n }\n }\n return value;\n }\n\n public isRecordSelectionDisabled(record: IRecord): boolean {\n const dataProvider = record.getDataProvider();\n const level = dataProvider.getNestingLevel();\n const groupBys = this.getDataset().grouping.getGroupBys();\n if (this.getGroupType() === 'nested' && level < groupBys.length - 1) {\n return true;\n }\n if (dataProvider.getSummarizationType() === 'grouping' && this.getSelectionType() === 'single') {\n return true;\n }\n return false;\n }\n\n public isColumnEditable(columnName: string, record?: IRecord): boolean {\n let isEditable = true;\n const mainDatasetColumn = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n let column = mainDatasetColumn;\n if (record) {\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n }\n switch (true) {\n case !this.isEditingEnabled():\n case record?.isSaving():\n case column.oneClickEdit: {\n isEditable = false;\n break;\n }\n }\n switch (column.name) {\n case DataProvider.CONST.CHECKBOX_COLUMN_KEY:\n case DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME: {\n isEditable = false;\n break;\n }\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataTypes.File:\n case DataTypes.Image: {\n isEditable = false;\n break;\n }\n }\n //if the column is not editable, return false\n if (!isEditable) {\n return false\n }\n else {\n //columns is editable and we are not asking for record\n if (!record) {\n return true;\n }\n //column is editable, but we need to check if the record is editable\n else return this._isRecordFieldEditable(record, column);\n }\n }\n\n public addAggregation(columnName: string, aggregationFunction: AggregationFunction) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.addAggregation(columnName, aggregationFunction)\n })\n })\n }\n public removeAggregation(alias: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.removeAggregation(alias);\n })\n })\n }\n public toggleColumnGroup(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n if (column.grouping?.isGrouped) {\n this._grouping.ungroupColumn(column.grouping.alias!);\n }\n else {\n this._grouping.groupColumn(column.name);\n }\n this._dataset.refresh();\n })\n }\n\n public getColumnFilter(columnName: string) {\n return this._filtering.getColumnFilter(columnName);\n }\n\n public removeColumnFilter(columnName: string, saveToDataset?: boolean) {\n this._filtering.removeColumnFilter(columnName);\n if (!saveToDataset) {\n return;\n }\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const filterExpression = this._filtering.getFilterExpression(FilterType.And.Value);\n if (!filterExpression) {\n throw new Error('Unexpected error when clearing column filter.');\n }\n this._dataset.filtering.setFilter(filterExpression);\n this._dataset.refresh();\n })\n }\n\n public sortColumn(columnName: string, descending?: boolean) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).setSortValue(descending ? 1 : 0, hotkeys.getPressedKeyString().includes('⇧'));\n this._dataset.refresh();\n })\n }\n\n public clearColumnSorting(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).clear();\n this._dataset.refresh();\n })\n }\n public getTotalRow() {\n return this._totalRow;\n }\n public getFiltering() {\n return this._filtering;\n }\n public isSelectionModifierKeyPressed(): boolean {\n const pressedKeys = hotkeys.getPressedKeyString().join(',');\n switch (true) {\n case pressedKeys.includes('⇧'):\n case pressedKeys.includes('ctrl'):\n case pressedKeys.includes('⌘'): {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n public getColumnSortingLabel(columnName: string, descending?: boolean): string {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.WholeDuration:\n case DataTypes.Currency: {\n if (!descending) {\n return this._labels['filtersortmenu-sortnumber-a-z']()\n }\n return this._labels['filtersortmenu-sortnumber-z-a']()\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n if (!descending) {\n return this._labels['filtersortmenu-sortdate-a-z']()\n }\n return this._labels['filtersortmenu-sortdate-z-a']()\n }\n case DataTypes.TwoOptions: {\n const options = column.metadata?.OptionSet ?? [];\n if (!descending) {\n return `${options[0].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[1].Label}`\n }\n return `${options[1].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[0].Label}`\n }\n default: {\n if (!descending) {\n return this._labels['filtersortmenu-sorttext-a-z']()\n }\n return this._labels['filtersortmenu-sorttext-z-a']()\n }\n }\n\n }\n\n public destroy() {\n if (this._nestedProviderPagingLimitNotificationId) {\n window.Xrm.App.clearGlobalNotification(this._nestedProviderPagingLimitNotificationId);\n }\n hotkeys.unbind();\n }\n\n private _getInternalDataProvider(): IInternalDataProvider {\n return this.getDataset().getDataProvider() as IInternalDataProvider;\n }\n\n private _setAggregationDecorator(fn: () => void) {\n fn();\n if (this._dataset.grouping.getGroupBys().length > 0) {\n this._dataset.refresh();\n }\n else {\n this._totalRow?.refresh();\n }\n }\n\n private _getRecordValue(record: IRecord, column: IColumn | string, formatted: boolean): { value: any; aggregatedValue: any } {\n if (!record) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n if (!column) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const method = formatted ? 'getFormattedValue' : 'getValue';\n const groupBy = record.getDataProvider().grouping.getGroupBy(column.grouping?.alias!);\n const aggregation = record.getDataProvider().aggregation.getAggregation(column.aggregation?.alias!);\n\n let value = record[method](columnName);\n let aggregatedValue = null;\n\n if (groupBy) {\n value = record[method](groupBy.alias);\n }\n if (aggregation) {\n aggregatedValue = record[method](aggregation.alias);\n }\n return {\n value: value,\n aggregatedValue: aggregatedValue\n }\n }\n\n private _isRecordFieldEditable(record: IRecord, column: IColumn): boolean {\n const columnInfo = record.getColumnInfo(column.name);\n //if editable not defined, return true since column is editable in this case\n return columnInfo?.security.editable ?? true;\n }\n\n private _isColumnRequired(column: IColumn): boolean {\n if (!this.getParameters().EnableEditing?.raw) {\n return false;\n }\n switch (column.metadata?.RequiredLevel) {\n case 1:\n case 2: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n private _isColumnSortable(column: IColumn): boolean {\n //sorting enabled by default\n if (this.getParameters().EnableSorting?.raw === false) {\n return false;\n }\n return !column.disableSorting;\n }\n private _isColumnFilterable(column: IColumn): boolean {\n //filtering enabled by default\n if (this.getParameters().EnableFiltering?.raw === false) {\n return false;\n }\n if (!column.metadata?.SupportedFilterConditionOperators || column.metadata.SupportedFilterConditionOperators.length === 0) {\n return false;\n }\n return true;\n }\n\n private _isColumnGroupable(column: IColumn): boolean {\n //grouping disabled by default\n if (this.getParameters().EnableGrouping?.raw !== true) {\n return false;\n }\n return !!column.metadata?.CanBeGrouped;\n }\n\n private _isColumnEditable(column: IColumn): boolean {\n //editing disabled by default\n if (this.getParameters().EnableEditing?.raw !== true) {\n return false;\n }\n return !!column.metadata?.IsValidForUpdate;\n }\n\n private _canColumnBeAggregated(column: IColumn): boolean {\n //aggregations disabled by default\n if (this.getParameters().EnableAggregation?.raw !== true) {\n return false;\n }\n if (!column.metadata?.SupportedAggregations || column.metadata.SupportedAggregations.length === 0) {\n return false;\n }\n return true;\n }\n\n private _registerEventListeners() {\n this._dataset.addEventListener('onRecordColumnValueChanged', (record) => this._autoSaveRecord(record));\n this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());\n this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());\n this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());\n this._setGroupingInterceptor();\n }\n\n //TODO: use control notification instead\n private async _showNestedProviderPagingLimitNotification() {\n if (!this._nestedProviderPagingLimitNotificationId) {\n this._nestedProviderPagingLimitNotificationId = await window.Xrm.App.addGlobalNotification({\n level: 4,\n message: this.getLabels()['maximumGroupChildrenLimitReached']({ maxGroupChildren: Formatting.Get().formatInteger(5000) }),\n type: 2\n });\n }\n }\n private _autoSaveRecord(record: IRecord) {\n if (this.isAutoSaveEnabled() && record.isDirty()) {\n record.save();\n }\n }\n\n private _refreshTotalRowOnAutoSave() {\n if (this.isAutoSaveEnabled()) {\n this._totalRow.refresh()\n }\n }\n\n //this method makes sure that the grouping is only applied to the first grouping column\n //this allows for nested grouping to work correctly\n private _setGroupingInterceptor() {\n if (this.getGroupType() === 'flat') {\n return;\n }\n let originalSortedGrouping: IGroupByMetadata[] = [];\n let originalAggregation: IGroupByMetadata[] = [];\n this._dataset.addEventListener('onBeforeNewDataLoaded', () => {\n originalSortedGrouping = this._dataset.grouping.getGroupBys().sort((a, b) => {\n const colA = this._dataset.getDataProvider().getColumnsMap()[a.columnName]!;\n const colB = this._dataset.getDataProvider().getColumnsMap()[b.columnName]!;\n return colA.order! - colB.order!;\n });\n originalAggregation = this._dataset.aggregation.getAggregations();\n if (originalSortedGrouping.length > 1) {\n this._dataset.grouping.clear();\n const groupBy = originalSortedGrouping[0];\n this._dataset.grouping.addGroupBy(groupBy);\n //clear all grouping aggregations except the first one\n for (let i = 1; i < originalSortedGrouping.length; i++) {\n const column = this._dataset.getDataProvider().getColumnsMap()[originalSortedGrouping[i].columnName];\n this._dataset.aggregation.removeAggregation(column?.aggregation?.alias!);\n }\n }\n })\n this._dataset.addEventListener('onNewDataLoaded', () => {\n originalSortedGrouping.map((group) => {\n this._dataset.grouping.addGroupBy(group);\n })\n originalAggregation.map((aggr: any) => {\n this._dataset.aggregation.addAggregation(aggr);\n })\n })\n }\n\n private get _dataset() {\n return this.getDataset();\n }\n}"],"names":["FilterType"],"mappings":"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"}
1
+ {"version":3,"file":"GridModel.js","sources":["../../../../src/components/Grid/grid/GridModel.ts"],"sourcesContent":["import { AggregationFunction, DataProvider, DataType, DataTypes, FieldValue, Filtering, Formatting, Grouping, IColumn, ICustomColumnControl, ICustomColumnFormatting, IDataProvider, IDataset, IGroupByMetadata, IInternalDataProvider, IRecord, Sanitizer, Sorting, TotalRow } from \"@talxis/client-libraries\";\nimport { merge } from \"merge-anything\";\nimport { ITheme, Theming } from \"@talxis/react-components\";\nimport { getTheme } from \"@fluentui/react\";\nimport { gridTranslations } from \"../translations\";\nimport { ITranslation } from \"../../../hooks\";\nimport { IBinding } from \"../../NestedControlRenderer/interfaces\";\nimport { BaseControls, IFluentDesignState } from \"../../../utils\";\nimport { IGrid, IGridParameters } from \"../interfaces\";\nimport { CHECKBOX_COLUMN_KEY } from \"../constants\";\nimport { Type as FilterType } from \"@talxis/client-libraries\";\nimport hotkeys from 'hotkeys-js';\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\ninterface IGridDependencies {\n labels: Required<ITranslation<typeof gridTranslations>>;\n onGetProps: () => IGrid;\n theme?: ITheme;\n}\n\ninterface IPCFContext extends Omit<ComponentFramework.Context<any, any>, 'fluentDesignLanguage'> {\n fluentDesignLanguage?: IFluentDesignState\n}\n\nexport interface IGridColumn extends IColumn {\n isRequired: boolean;\n isEditable: boolean;\n isFilterable: boolean;\n isSorted: boolean;\n isFiltered: boolean;\n canBeAggregated: boolean;\n canBeGrouped: boolean;\n isSortedDescending: boolean;\n isResizable: boolean;\n alignment: IColumn['alignment'],\n}\n\nexport class GridModel {\n public readonly oddRowCellTheme: ITheme;\n public readonly evenRowCellTheme: ITheme;\n private _getProps: () => IGrid;\n private _labels: Required<ITranslation<typeof gridTranslations>>;\n private _theme: ITheme;\n private _sorting: Sorting;\n private _totalRow: TotalRow\n private _grouping: Grouping;\n private _filtering: Filtering;\n private _nestedProviderPagingLimitNotificationId: string | null = null;\n private _cachedGridColumnsMap: Map<string, IGridColumn> = new Map();\n\n constructor({ onGetProps, labels, theme }: IGridDependencies) {\n this._getProps = onGetProps;\n this._labels = labels;\n this._theme = theme ?? getTheme();\n this.oddRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.neutralLighterAlt, this._theme.semanticColors.bodyText);\n this.evenRowCellTheme = Theming.GenerateThemeV8(this._theme.palette.themePrimary, this._theme.palette.white, this._theme.semanticColors.bodyText);\n const provider = this.getDataset().getDataProvider();\n this._sorting = new Sorting(provider);\n this._totalRow = new TotalRow(provider);\n this._filtering = new Filtering(provider, FieldValue);\n this._grouping = new Grouping(provider);\n this._registerEventListeners();\n hotkeys('*', (event, handler) => {\n })\n }\n\n public getDataset(): IDataset {\n return this._getProps().parameters.Grid;\n }\n\n public getPcfContext(): IPCFContext {\n return this._getProps().context;\n }\n\n public getState() {\n return this._getProps().state;\n }\n\n public getParameters(): IGridParameters {\n return this._getProps().parameters;\n }\n public getLabels(): Required<ITranslation<typeof gridTranslations>> {\n return this._labels;\n }\n public isZebraEnabled(): boolean {\n return this._getProps().parameters.EnableZebra?.raw !== false;\n }\n public isNavigationEnabled(): boolean {\n return this.getParameters().EnableNavigation?.raw !== false;\n }\n public isAutoSaveEnabled(): boolean {\n return this._dataset.getDataProvider().getProperty('autoSave') === true\n }\n public isGroupedColumnsPinnedEnabled(): boolean {\n return this.getParameters().EnableGroupedColumnsPinning?.raw !== false;\n }\n public getInlineRibbonButtonIds(): string | null {\n return this.getParameters().InlineRibbonButtonIds?.raw ?? null;\n }\n public isEditingEnabled(): boolean {\n return this.getParameters().EnableEditing?.raw === true;\n }\n public getGroupType(): 'nested' | 'flat' {\n return this.getDataset().getDataProvider().getProperty('groupingType');\n }\n public optionSetColorsEnabled(): boolean {\n return this.getParameters().EnableOptionSetColors?.raw === true;\n }\n public getDefaultExpandedGroupLevel(): number {\n return this.getParameters().DefaultExpandedGroupLevel?.raw ?? -1;\n }\n public getLicenseKey(): string | null {\n return this.getParameters().LicenseKey?.raw ?? null;\n }\n public getDefaultRowHeight(): number {\n const height = this.getParameters().RowHeight?.raw;\n if (height) {\n return height;\n }\n return DEFAULT_ROW_HEIGHT;\n }\n\n public getSelectionType(): 'none' | 'single' | 'multiple' {\n switch (this.getParameters().SelectableRows?.raw) {\n case undefined:\n case null: {\n return 'multiple'\n }\n }\n return this.getParameters().SelectableRows!.raw;\n }\n public getControl(column: IColumn, record: IRecord, editing: boolean): Required<ICustomColumnControl> {\n editing = record.getSummarizationType() === 'aggregation' ? false : editing;\n //file and image currently do not support editor, always force cell renderers\n switch (column.dataType) {\n case 'File':\n case 'Image': {\n return {\n name: 'GridCellRenderer',\n appliesTo: 'both',\n bindings: {}\n }\n }\n }\n const defaultControl: Required<ICustomColumnControl> = {\n name: (() => {\n if (record.getSummarizationType() === 'aggregation') {\n return 'GridCellRenderer';\n }\n if (column.name === DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME) {\n return BaseControls.GridInlineRibbon;\n }\n if (editing) {\n return BaseControls.GetControlNameForDataType(column.dataType as DataType)\n }\n return 'GridCellRenderer';\n })(),\n appliesTo: 'both',\n bindings: {}\n };\n const customControls = record.getColumnInfo(column.name).ui.getCustomControls([defaultControl]);\n const appliesToValue = editing ? 'editor' : 'renderer';\n const customControl = customControls.find(\n control => control.appliesTo === 'both' || control.appliesTo === appliesToValue\n );\n if (customControl) {\n return merge(defaultControl, customControl) as Required<ICustomColumnControl>;\n }\n\n return defaultControl;\n }\n\n public getBindings(record: IRecord, column: IColumn, control: ICustomColumnControl) {\n const columnInfo = record.getColumnInfo(column.name);\n const bindings: { [name: string]: IBinding } = {\n 'value': {\n isStatic: false,\n type: column.dataType as any,\n value: this.getControlValue(record, column),\n formattedValue: this.getRecordFormattedValue(record, column).value,\n error: columnInfo.error,\n errorMessage: columnInfo.errorMessage,\n onNotifyOutputChanged: () => { },\n metadata: {\n onOverrideMetadata: () => column.metadata\n }\n },\n 'IsCellCustomizer': {\n isStatic: true,\n type: DataTypes.TwoOptions,\n value: true\n }\n }\n if (control.bindings) {\n Object.entries(control.bindings).map(([name, binding]) => {\n bindings[name] = {\n isStatic: true,\n type: binding.type!,\n value: binding.value\n }\n })\n }\n return bindings;\n }\n\n public getFieldBindingParameters(record: IRecord, column: IColumn, editing: boolean) {\n //make sure we have IColumn, not IGridColumn\n column = record.getDataProvider().getColumnsMap()[column.name]!;\n const summarizationType = record.getDataProvider().getSummarizationType();\n const value = this.getRecordValue(record, column);\n const formattedValue = this.getRecordFormattedValue(record, column);\n const aggregationColumn = record.getDataProvider().getColumnsMap()[column.aggregation?.alias!];\n const parameters: any = {\n Dataset: {\n raw: this.getDataset(),\n type: DataTypes.Object\n },\n Record: {\n raw: record,\n type: DataTypes.Object\n },\n Column: {\n raw: column,\n type: DataTypes.Object\n }\n }\n parameters.AggregatedValue = {\n raw: value.aggregatedValue,\n formatted: formattedValue.aggregatedValue,\n type: aggregationColumn?.dataType ?? DataTypes.Decimal\n }\n parameters.EnableNavigation = {\n raw: (() => {\n if (!this.isNavigationEnabled()) {\n return false;\n }\n if (summarizationType === 'aggregation') {\n return false;\n }\n else if (summarizationType === 'grouping') {\n switch (column.dataType) {\n case DataTypes.LookupCustomer:\n case DataTypes.LookupRegarding:\n case DataTypes.LookupOwner:\n case DataTypes.LookupSimple:\n case DataTypes.File:\n case DataTypes.Image:\n case DataTypes.SingleLineEmail:\n case DataTypes.SingleLineUrl:\n case DataTypes.SingleLinePhone: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n else {\n return true;\n }\n })(),\n type: DataTypes.TwoOptions\n }\n parameters.ColumnAlignment = {\n raw: column.alignment,\n type: DataTypes.SingleLineText\n }\n parameters.IsPrimaryColumn = {\n raw: column.isPrimary,\n type: DataTypes.TwoOptions\n }\n parameters.ShowErrorMessage = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.CellType = {\n raw: editing ? 'editor' : 'renderer',\n type: DataTypes.SingleLineText\n }\n parameters.AutoFocus = {\n raw: editing,\n type: DataTypes.TwoOptions\n }\n parameters.AggregationFunction = {\n raw: summarizationType === 'aggregation' ? aggregationColumn?.aggregation?.aggregationFunction : null,\n type: DataTypes.SingleLineText\n }\n parameters.PrefixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.SuffixIcon = {\n raw: null,\n type: DataTypes.SingleLineText\n }\n parameters.IsInlineNewEnabled = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableTypeSuffix = {\n raw: false,\n type: DataTypes.TwoOptions\n }\n parameters.EnableOptionSetColors = {\n raw: this.optionSetColorsEnabled(),\n type: DataTypes.TwoOptions\n }\n parameters.CommandButtonIds = {\n raw: this.getInlineRibbonButtonIds(),\n type: DataTypes.SingleLineText\n }\n parameters.ShouldUnmountWhenOutputChanges = {\n raw: (() => {\n //by default, leave cell editor opened for these types since\n // they can output partial changes as values\n switch (column.dataType) {\n case 'DateAndTime.DateAndTime':\n case 'MultiSelectPicklist': {\n return false;\n }\n default: {\n return true;\n }\n }\n })(),\n type: DataTypes.TwoOptions\n }\n return parameters;\n }\n\n public isColumnExpandable(record: IRecord, column: IColumn): boolean {\n const groupBy = record.getDataProvider().grouping.getGroupBys()[0];\n return groupBy?.columnName === column.name\n }\n\n public getFieldFormatting(record: IRecord, columnName: string): Required<ICustomColumnFormatting> {\n const defaultTheme = this.getDefaultCellTheme(record);\n const defaultBackgroundColor = defaultTheme.semanticColors.bodyBackground;;\n\n // Handle checkbox column specifically\n if (columnName === CHECKBOX_COLUMN_KEY || !record) {\n return {\n primaryColor: this._theme.palette.themePrimary,\n backgroundColor: defaultBackgroundColor,\n textColor: Theming.GetTextColorForBackground(defaultBackgroundColor),\n className: '',\n themeOverride: {}\n };\n }\n\n const customFormatting = record.getColumnInfo(columnName).ui.getCustomFormatting(defaultTheme) ?? {};\n\n // Prepare the result with defaults\n const result: Required<ICustomColumnFormatting> = {\n backgroundColor: customFormatting.backgroundColor ?? defaultBackgroundColor,\n primaryColor: customFormatting.primaryColor ?? this._theme.palette.themePrimary,\n textColor: customFormatting.textColor ?? '',\n className: customFormatting.className ?? '',\n themeOverride: customFormatting.themeOverride ?? {}\n };\n\n // Apply background-specific adjustments\n if (result.backgroundColor !== defaultBackgroundColor) {\n result.themeOverride = merge({}, {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }, result.themeOverride);\n\n if (!customFormatting.primaryColor) {\n result.primaryColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n }\n\n // Ensure text color is set\n if (!result.textColor) {\n result.textColor = Theming.GetTextColorForBackground(result.backgroundColor);\n }\n\n return result;\n }\n\n public getDefaultCellTheme(record: IRecord): ITheme {\n const isEven = record.getIndex() % 2 === 0;\n const summarizationType = record.getDataProvider().getSummarizationType();\n if (summarizationType !== 'none') {\n return this.oddRowCellTheme;\n }\n //child of a group record\n else if (record.getDataProvider().getParentDataProvider()) {\n return this.evenRowCellTheme;\n }\n else if (isEven || !this.isZebraEnabled()) {\n return this.evenRowCellTheme;\n }\n else {\n return this.oddRowCellTheme;\n }\n }\n\n public getGridColumns(): IGridColumn[] {\n this._cachedGridColumnsMap.clear();\n const gridColumns: IGridColumn[] = this.getDataset().columns.map(column => {\n const gridColumn = this.getGridColumnByName(column.name, true);\n this._cachedGridColumnsMap.set(gridColumn.name, gridColumn);\n return gridColumn;\n });\n return gridColumns;\n }\n\n public getColumnByName(columnName: string): IColumn {\n return this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n }\n\n public getGridColumnByName(columnName: string, force?: boolean): IGridColumn {\n if (!force) {\n const column = this._cachedGridColumnsMap.get(columnName);\n if (!column) {\n throw new Error(`Column with name ${columnName} not found in grid columns cache.`);\n }\n return column;\n }\n else {\n const column = this.getDataset().getColumnsMap()[columnName];\n const sorted = this.getDataset().sorting?.find(sort => sort.name === column.name);\n return {\n ...column,\n alignment: column.alignment!,\n isFiltered: this._filtering.getColumnFilter(column.name).isAppliedToDataset(),\n isEditable: this._isColumnEditable(column),\n isRequired: this._isColumnRequired(column),\n canBeGrouped: this._isColumnGroupable(column),\n isFilterable: this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n canBeAggregated: this._canColumnBeAggregated(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false\n }\n }\n }\n\n public getRecordValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, false);\n }\n public getRecordFormattedValue(record: IRecord, column: IColumn | string) {\n return this._getRecordValue(record, column, true);\n }\n //returns record value in a form that is compatible with PCF typings\n public getControlValue(record: IRecord, column: IColumn | string): any {\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n //can be the aggregated value\n let value = this.getRecordValue(record, column).value;\n switch (column.dataType) {\n //getValue always returns string for TwoOptions\n case 'TwoOptions': {\n if (typeof value === 'string') {\n value = value == '1' ? true : false\n }\n break;\n }\n //getValue always returns string for OptionSet\n case 'OptionSet': {\n value = value ? parseInt(value) : null;\n break;\n }\n case 'MultiSelectPicklist': {\n value = value ? value.split(',').map((x: string) => parseInt(x)) : null;\n break;\n }\n case 'Lookup.Simple':\n case 'Lookup.Customer':\n case 'Lookup.Owner':\n case 'Lookup.Regarding': {\n //our implementation returns array, Power Apps returns object\n if (value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: ComponentFramework.EntityReference) => Sanitizer.Lookup.getLookupValue(x))\n break;\n }\n }\n return value;\n }\n\n public isRecordSelectionDisabled(record: IRecord): boolean {\n const dataProvider = record.getDataProvider();\n const level = dataProvider.getNestingLevel();\n const groupBys = this.getDataset().grouping.getGroupBys();\n if (this.getGroupType() === 'nested' && level < groupBys.length - 1) {\n return true;\n }\n if (dataProvider.getSummarizationType() === 'grouping' && this.getSelectionType() === 'single') {\n return true;\n }\n return false;\n }\n\n public isColumnEditable(columnName: string, record?: IRecord): boolean {\n let isEditable = true;\n const mainDatasetColumn = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n let column = mainDatasetColumn;\n if (record) {\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n }\n switch (true) {\n case !this.isEditingEnabled():\n case record?.isSaving():\n case column.oneClickEdit: {\n isEditable = false;\n break;\n }\n }\n switch (column.name) {\n case DataProvider.CONST.CHECKBOX_COLUMN_KEY:\n case DataProvider.CONST.RIBBON_BUTTONS_COLUMN_NAME: {\n isEditable = false;\n break;\n }\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataTypes.File:\n case DataTypes.Image: {\n isEditable = false;\n break;\n }\n }\n //if the column is not editable, return false\n if (!isEditable) {\n return false\n }\n else {\n //columns is editable and we are not asking for record\n if (!record) {\n return true;\n }\n //column is editable, but we need to check if the record is editable\n else return this._isRecordFieldEditable(record, column);\n }\n }\n\n public addAggregation(columnName: string, aggregationFunction: AggregationFunction) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.addAggregation(columnName, aggregationFunction)\n })\n })\n }\n public removeAggregation(alias: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._setAggregationDecorator(() => {\n this._totalRow.removeAggregation(alias);\n })\n })\n }\n public toggleColumnGroup(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n if (column.grouping?.isGrouped) {\n this._grouping.ungroupColumn(column.grouping.alias!);\n }\n else {\n this._grouping.groupColumn(column.name);\n }\n this._dataset.refresh();\n })\n }\n\n public getColumnFilter(columnName: string) {\n return this._filtering.getColumnFilter(columnName);\n }\n\n public removeColumnFilter(columnName: string, saveToDataset?: boolean) {\n this._filtering.removeColumnFilter(columnName);\n if (!saveToDataset) {\n return;\n }\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n const filterExpression = this._filtering.getFilterExpression(FilterType.And.Value);\n if (!filterExpression) {\n throw new Error('Unexpected error when clearing column filter.');\n }\n this._dataset.filtering.setFilter(filterExpression);\n this._dataset.refresh();\n })\n }\n\n public sortColumn(columnName: string, descending?: boolean) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).setSortValue(descending ? 1 : 0, hotkeys.getPressedKeyString().includes('⇧'));\n this._dataset.refresh();\n })\n }\n\n public clearColumnSorting(columnName: string) {\n this._getInternalDataProvider().executeWithUnsavedChangesBlocker(() => {\n this._sorting.getColumnSorting(columnName).clear();\n this._dataset.refresh();\n })\n }\n public getTotalRow() {\n return this._totalRow;\n }\n public getFiltering() {\n return this._filtering;\n }\n public isSelectionModifierKeyPressed(): boolean {\n const pressedKeys = hotkeys.getPressedKeyString().join(',');\n switch (true) {\n case pressedKeys.includes('⇧'):\n case pressedKeys.includes('ctrl'):\n case pressedKeys.includes('⌘'): {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n public getColumnSortingLabel(columnName: string, descending?: boolean): string {\n const column = this.getDataset().getDataProvider().getColumnsMap()[columnName]!;\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.Decimal:\n case DataTypes.WholeDuration:\n case DataTypes.Currency: {\n if (!descending) {\n return this._labels['filtersortmenu-sortnumber-a-z']()\n }\n return this._labels['filtersortmenu-sortnumber-z-a']()\n }\n case DataTypes.DateAndTimeDateAndTime:\n case DataTypes.DateAndTimeDateOnly: {\n if (!descending) {\n return this._labels['filtersortmenu-sortdate-a-z']()\n }\n return this._labels['filtersortmenu-sortdate-z-a']()\n }\n case DataTypes.TwoOptions: {\n const options = column.metadata?.OptionSet ?? [];\n if (!descending) {\n return `${options[0].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[1].Label}`\n }\n return `${options[1].Label} ${this._labels['filtersortmenu-sorttwooption-joint']()} ${options[0].Label}`\n }\n default: {\n if (!descending) {\n return this._labels['filtersortmenu-sorttext-a-z']()\n }\n return this._labels['filtersortmenu-sorttext-z-a']()\n }\n }\n\n }\n\n public destroy() {\n if (this._nestedProviderPagingLimitNotificationId) {\n window.Xrm.App.clearGlobalNotification(this._nestedProviderPagingLimitNotificationId);\n }\n hotkeys.unbind();\n }\n\n private _getInternalDataProvider(): IInternalDataProvider {\n return this.getDataset().getDataProvider() as IInternalDataProvider;\n }\n\n private _setAggregationDecorator(fn: () => void) {\n fn();\n if (this._dataset.grouping.getGroupBys().length > 0) {\n this._dataset.refresh();\n }\n else {\n this._totalRow?.refresh();\n }\n }\n\n private _getRecordValue(record: IRecord, column: IColumn | string, formatted: boolean): { value: any; aggregatedValue: any } {\n if (!record) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const columnName = typeof column === 'string' ? column : column.name;\n column = record.getDataProvider().getColumnsMap()[columnName]!;\n if (!column) {\n return {\n value: null,\n aggregatedValue: null\n }\n }\n const method = formatted ? 'getFormattedValue' : 'getValue';\n const groupBy = record.getDataProvider().grouping.getGroupBy(column.grouping?.alias!);\n const aggregation = record.getDataProvider().aggregation.getAggregation(column.aggregation?.alias!);\n\n let value = record[method](columnName);\n let aggregatedValue = null;\n\n if (groupBy) {\n value = record[method](groupBy.alias);\n }\n if (aggregation) {\n aggregatedValue = record[method](aggregation.alias);\n }\n return {\n value: value,\n aggregatedValue: aggregatedValue\n }\n }\n\n private _isRecordFieldEditable(record: IRecord, column: IColumn): boolean {\n const columnInfo = record.getColumnInfo(column.name);\n //if editable not defined, return true since column is editable in this case\n return columnInfo?.security.editable ?? true;\n }\n\n private _isColumnRequired(column: IColumn): boolean {\n if (!this.getParameters().EnableEditing?.raw) {\n return false;\n }\n switch (column.metadata?.RequiredLevel) {\n case 1:\n case 2: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n private _isColumnSortable(column: IColumn): boolean {\n //sorting enabled by default\n if (this.getParameters().EnableSorting?.raw === false) {\n return false;\n }\n return !column.disableSorting;\n }\n private _isColumnFilterable(column: IColumn): boolean {\n //filtering enabled by default\n if (this.getParameters().EnableFiltering?.raw === false) {\n return false;\n }\n if (!column.metadata?.SupportedFilterConditionOperators || column.metadata.SupportedFilterConditionOperators.length === 0) {\n return false;\n }\n return true;\n }\n\n private _isColumnGroupable(column: IColumn): boolean {\n //grouping disabled by default\n if (this.getParameters().EnableGrouping?.raw !== true) {\n return false;\n }\n return !!column.metadata?.CanBeGrouped;\n }\n\n private _isColumnEditable(column: IColumn): boolean {\n //editing disabled by default\n if (this.getParameters().EnableEditing?.raw !== true) {\n return false;\n }\n return !!column.metadata?.IsValidForUpdate;\n }\n\n private _canColumnBeAggregated(column: IColumn): boolean {\n //aggregations disabled by default\n if (this.getParameters().EnableAggregation?.raw !== true) {\n return false;\n }\n if (!column.metadata?.SupportedAggregations || column.metadata.SupportedAggregations.length === 0) {\n return false;\n }\n return true;\n }\n\n private _registerEventListeners() {\n this._dataset.addEventListener('onAfterRecordSaved', () => this._refreshTotalRowOnAutoSave());\n this._dataset.addEventListener('onAfterSaved', () => this._totalRow.refresh());\n this._dataset.addEventListener('onNestedProviderPagingLimitReached', () => this._showNestedProviderPagingLimitNotification());\n this._setGroupingInterceptor();\n }\n\n //TODO: use control notification instead\n private async _showNestedProviderPagingLimitNotification() {\n if (!this._nestedProviderPagingLimitNotificationId) {\n this._nestedProviderPagingLimitNotificationId = await window.Xrm.App.addGlobalNotification({\n level: 4,\n message: this.getLabels()['maximumGroupChildrenLimitReached']({ maxGroupChildren: Formatting.Get().formatInteger(5000) }),\n type: 2\n });\n }\n }\n private _refreshTotalRowOnAutoSave() {\n if (this.isAutoSaveEnabled()) {\n this._totalRow.refresh()\n }\n }\n\n //this method makes sure that the grouping is only applied to the first grouping column\n //this allows for nested grouping to work correctly\n private _setGroupingInterceptor() {\n if (this.getGroupType() === 'flat') {\n return;\n }\n let originalSortedGrouping: IGroupByMetadata[] = [];\n let originalAggregation: IGroupByMetadata[] = [];\n this._dataset.addEventListener('onBeforeNewDataLoaded', () => {\n originalSortedGrouping = this._dataset.grouping.getGroupBys().sort((a, b) => {\n const colA = this._dataset.getDataProvider().getColumnsMap()[a.columnName]!;\n const colB = this._dataset.getDataProvider().getColumnsMap()[b.columnName]!;\n return colA.order! - colB.order!;\n });\n originalAggregation = this._dataset.aggregation.getAggregations();\n if (originalSortedGrouping.length > 1) {\n this._dataset.grouping.clear();\n const groupBy = originalSortedGrouping[0];\n this._dataset.grouping.addGroupBy(groupBy);\n //clear all grouping aggregations except the first one\n for (let i = 1; i < originalSortedGrouping.length; i++) {\n const column = this._dataset.getDataProvider().getColumnsMap()[originalSortedGrouping[i].columnName];\n this._dataset.aggregation.removeAggregation(column?.aggregation?.alias!);\n }\n }\n })\n this._dataset.addEventListener('onNewDataLoaded', () => {\n originalSortedGrouping.map((group) => {\n this._dataset.grouping.addGroupBy(group);\n })\n originalAggregation.map((aggr: any) => {\n this._dataset.aggregation.addAggregation(aggr);\n })\n })\n }\n\n private get _dataset() {\n return this.getDataset();\n }\n}"],"names":["FilterType"],"mappings":"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"}
@@ -67,6 +67,9 @@ export declare const getGridStyles: (theme: ITheme) => import("@fluentui/react")
67
67
  'view-transition-name': string;
68
68
  };
69
69
  };
70
+ '.ag-overlay-loading-wrapper': {
71
+ backdropFilter: string;
72
+ };
70
73
  '.ag-cell-focus': {
71
74
  zIndex: number;
72
75
  '::after': {
@@ -68,6 +68,9 @@ const getGridStyles = (theme) => {
68
68
  'view-transition-name': 'cell-highlight',
69
69
  }
70
70
  },
71
+ '.ag-overlay-loading-wrapper': {
72
+ backdropFilter: 'blur(1px)'
73
+ },
71
74
  '.ag-cell-focus': {
72
75
  zIndex: 2,
73
76
  '::after': {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/components/Grid/grid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\nimport { IColumn } from \"@talxis/client-libraries\";\n\nexport const getGridStyles = (theme: ITheme) => {\n return mergeStyleSets({\n gridRoot: {\n height: '100%',\n minHeight: 180,\n display: 'flex',\n flexDirection: 'column',\n '--ag-borders': 'none !important',\n '.ag-root-wrapper': {\n maxHeight: '100%',\n '--ag-selected-row-background-color': theme.palette.themePrimary,\n '--ag-range-selection-border-color': theme.palette.themePrimary,\n '--ag-row-hover-color': theme.palette.black,\n '--ag-row-border-color': theme.semanticColors.menuDivider,\n '--ag-cell-horizontal-padding': 0,\n '--ag-input-focus-border-color': theme.semanticColors.inputFocusBorderAlt,\n borderBottom: `1px solid ${theme.semanticColors.menuDivider}`,\n '.ag-row::before': {\n zIndex: 1\n },\n '.ag-row-hover::before': {\n opacity: 0.1\n },\n '.ag-row-selected::before': {\n opacity: 0.2\n }\n },\n '.ag-body': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`\n },\n '.ag-header-viewport': {\n backgroundColor: `${theme.semanticColors.bodyBackground}`\n },\n '.ag-center-cols-container': {\n minWidth: '100%',\n },\n '.ag-layout-auto-height .ag-center-cols-clipper, .ag-layout-auto-height .ag-center-cols-container, .ag-layout-print .ag-center-cols-clipper, .ag-layout-print .ag-center-cols-container': {\n minHeight: '42px !important'\n },\n '.ag-header-cell': {\n paddingLeft: 0,\n paddingRight: 0,\n backgroundColor: `${theme.semanticColors.bodyBackground} !important`\n },\n '.ag-cell': {\n border: 'none !important',\n borderRadius: 0,\n overflow: 'hidden'\n },\n '.ag-cell-wrapper:has([data-is-loading=\"true\"])': {\n height: '100%'\n },\n '.ms-Checkbox.is-disabled .ms-Checkbox-checkbox': {\n borderColor: `${theme.semanticColors.disabledBorder} !important`\n },\n '.ag-pinned-left-cols-container .ag-cell-last-left-pinned:not([col-id=\"__checkbox__virtual\"])': {\n borderRight: `1px solid ${theme.semanticColors.menuDivider} !important`\n },\n '.ag-cell-highlight': {\n '::after': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n backgroundColor: `color-mix(in srgb, ${theme.palette.themePrimary}, transparent 70%)`,\n 'view-transition-name': 'cell-highlight',\n }\n },\n '.ag-cell-focus': {\n zIndex: 2,\n '::after': {\n content: \"''\",\n position: 'absolute',\n inset: '-1px',\n border: `3px solid ${theme.semanticColors.inputFocusBorderAlt}`,\n borderRadius: theme.effects.roundedCorner2,\n pointerEvents: 'none'\n }\n },\n '.ag-cell-focus:has([data-is-valid=\"false\"])': {\n '::after': {\n borderColor: `${theme.semanticColors.errorIcon} !important`\n }\n },\n '.ag-floating-bottom .ag-row-pinned': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`,\n borderBottom: 'none',\n }\n }\n })\n};\n\nexport const getJustifyContent = (columnAlignment: Required<IColumn['alignment']>) => {\n switch (columnAlignment) {\n case 'left': {\n return 'flex-start'\n }\n case 'center': {\n return 'center'\n }\n case 'right': {\n return 'flex-end'\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/Grid/grid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\nimport { IColumn } from \"@talxis/client-libraries\";\n\nexport const getGridStyles = (theme: ITheme) => {\n return mergeStyleSets({\n gridRoot: {\n height: '100%',\n minHeight: 180,\n display: 'flex',\n flexDirection: 'column',\n '--ag-borders': 'none !important',\n '.ag-root-wrapper': {\n maxHeight: '100%',\n '--ag-selected-row-background-color': theme.palette.themePrimary,\n '--ag-range-selection-border-color': theme.palette.themePrimary,\n '--ag-row-hover-color': theme.palette.black,\n '--ag-row-border-color': theme.semanticColors.menuDivider,\n '--ag-cell-horizontal-padding': 0,\n '--ag-input-focus-border-color': theme.semanticColors.inputFocusBorderAlt,\n borderBottom: `1px solid ${theme.semanticColors.menuDivider}`,\n '.ag-row::before': {\n zIndex: 1\n },\n '.ag-row-hover::before': {\n opacity: 0.1\n },\n '.ag-row-selected::before': {\n opacity: 0.2\n }\n },\n '.ag-body': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`\n },\n '.ag-header-viewport': {\n backgroundColor: `${theme.semanticColors.bodyBackground}`\n },\n '.ag-center-cols-container': {\n minWidth: '100%',\n },\n '.ag-layout-auto-height .ag-center-cols-clipper, .ag-layout-auto-height .ag-center-cols-container, .ag-layout-print .ag-center-cols-clipper, .ag-layout-print .ag-center-cols-container': {\n minHeight: '42px !important'\n },\n '.ag-header-cell': {\n paddingLeft: 0,\n paddingRight: 0,\n backgroundColor: `${theme.semanticColors.bodyBackground} !important`\n },\n '.ag-cell': {\n border: 'none !important',\n borderRadius: 0,\n overflow: 'hidden'\n },\n '.ag-cell-wrapper:has([data-is-loading=\"true\"])': {\n height: '100%'\n },\n '.ms-Checkbox.is-disabled .ms-Checkbox-checkbox': {\n borderColor: `${theme.semanticColors.disabledBorder} !important`\n },\n '.ag-pinned-left-cols-container .ag-cell-last-left-pinned:not([col-id=\"__checkbox__virtual\"])': {\n borderRight: `1px solid ${theme.semanticColors.menuDivider} !important`\n },\n '.ag-cell-highlight': {\n '::after': {\n content: \"''\",\n position: 'absolute',\n left: 0,\n top: 0,\n backgroundColor: `color-mix(in srgb, ${theme.palette.themePrimary}, transparent 70%)`,\n 'view-transition-name': 'cell-highlight',\n }\n },\n '.ag-overlay-loading-wrapper': {\n backdropFilter: 'blur(1px)'\n },\n '.ag-cell-focus': {\n zIndex: 2,\n '::after': {\n content: \"''\",\n position: 'absolute',\n inset: '-1px',\n border: `3px solid ${theme.semanticColors.inputFocusBorderAlt}`,\n borderRadius: theme.effects.roundedCorner2,\n pointerEvents: 'none'\n }\n },\n '.ag-cell-focus:has([data-is-valid=\"false\"])': {\n '::after': {\n borderColor: `${theme.semanticColors.errorIcon} !important`\n }\n },\n '.ag-floating-bottom .ag-row-pinned': {\n borderTop: `1px solid ${theme.semanticColors.menuDivider}`,\n borderBottom: 'none',\n }\n }\n })\n};\n\nexport const getJustifyContent = (columnAlignment: Required<IColumn['alignment']>) => {\n switch (columnAlignment) {\n case 'left': {\n return 'flex-start'\n }\n case 'center': {\n return 'center'\n }\n case 'right': {\n return 'flex-end'\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -5,14 +5,7 @@ import { IParameters, IStringProperty, ITwoOptionsProperty, IWholeNumberProperty
5
5
  import { IControl, IOutputs } from "../../interfaces/context";
6
6
  import { gridTranslations } from "./translations";
7
7
  import { IDataset } from "@talxis/client-libraries";
8
- export interface IGridComponentProps {
9
- agGrid: AgGridReactProps;
10
- registerRowGroupingModule: boolean;
11
- container: any;
12
- pagingProps: any;
13
- licenseKey?: string;
14
- }
15
- export interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, IGridComponentProps> {
8
+ export interface IGrid extends IControl<IGridParameters, IGridOutputs, Partial<ITranslation<typeof gridTranslations>>, AgGridReactProps> {
16
9
  }
17
10
  export interface IGridParameters extends IParameters {
18
11
  Grid: IDataset;
@@ -1,9 +1,17 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { SpinnerSize } from '@fluentui/react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { SpinnerSize, Text } from '@fluentui/react';
3
3
  import { Spinner } from '@talxis/react-components';
4
+ import { useGridInstance } from '../../grid/useGridInstance.js';
5
+ import { useMemo } from 'react';
6
+ import { getLoadingOverlayStyles } from './styles.js';
4
7
 
5
8
  const LoadingOverlay = () => {
6
- return jsx(Spinner, { size: SpinnerSize.large });
9
+ const grid = useGridInstance();
10
+ const provider = grid.getDataset().getDataProvider();
11
+ const loadingMessage = provider.getLoadingMessage();
12
+ const styles = useMemo(() => getLoadingOverlayStyles(), []);
13
+ return jsxs("div", { className: styles.root, children: [jsx(Spinner, { size: SpinnerSize.large }), loadingMessage &&
14
+ jsx(Text, { variant: 'large', className: styles.message, children: loadingMessage })] });
7
15
  };
8
16
 
9
17
  export { LoadingOverlay };
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingOverlay.js","sources":["../../../../../src/components/Grid/overlays/loading/LoadingOverlay.tsx"],"sourcesContent":["import { SpinnerSize } from '@fluentui/react';\nimport { Spinner } from '@talxis/react-components';\n\nexport const LoadingOverlay = () => {\n return <Spinner size={SpinnerSize.large} />\n}"],"names":["_jsx"],"mappings":";;;;AAGO,MAAM,cAAc,GAAG,MAAK;IAC/B,OAAOA,GAAA,CAAC,OAAO,EAAC,EAAA,IAAI,EAAE,WAAW,CAAC,KAAK,EAAA,CAAI,CAAA;AAC/C;;;;"}
1
+ {"version":3,"file":"LoadingOverlay.js","sources":["../../../../../src/components/Grid/overlays/loading/LoadingOverlay.tsx"],"sourcesContent":["import { SpinnerSize, Text } from '@fluentui/react';\nimport { Spinner } from '@talxis/react-components';\nimport { useGridInstance } from '../../grid/useGridInstance';\nimport { useMemo } from 'react';\nimport { getLoadingOverlayStyles } from './styles';\n\nexport const LoadingOverlay = () => {\n const grid = useGridInstance();\n const provider = grid.getDataset().getDataProvider();\n const loadingMessage = provider.getLoadingMessage();\n const styles = useMemo(() => getLoadingOverlayStyles(), []);\n\n return <div className={styles.root}>\n <Spinner size={SpinnerSize.large} />\n {loadingMessage && \n <Text variant='large' className={styles.message}>{loadingMessage}</Text>\n }\n </div>\n}"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMO,MAAM,cAAc,GAAG,MAAK;AAC/B,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,EAAE,CAAC;AACrD,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AACpD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC;AAE5D,IAAA,OAAOA,cAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAC9B,QAAA,EAAA,CAAAC,GAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAA,CAAI,EACnC,cAAc;AACX,gBAAAA,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAAG,cAAc,EAAA,CAAQ,IAE1E,CAAA;AACV;;;;"}
@@ -0,0 +1,10 @@
1
+ export declare const getLoadingOverlayStyles: () => import("@fluentui/react").IProcessedStyleSet<{
2
+ root: {
3
+ display: string;
4
+ flexDirection: string;
5
+ gap: number;
6
+ };
7
+ message: {
8
+ fontWeight: number;
9
+ };
10
+ }>;
@@ -0,0 +1,17 @@
1
+ import { mergeStyleSets } from '@fluentui/react';
2
+
3
+ const getLoadingOverlayStyles = () => {
4
+ return mergeStyleSets({
5
+ root: {
6
+ display: 'flex',
7
+ flexDirection: 'column',
8
+ gap: 10
9
+ },
10
+ message: {
11
+ fontWeight: 600
12
+ }
13
+ });
14
+ };
15
+
16
+ export { getLoadingOverlayStyles };
17
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../../../src/components/Grid/overlays/loading/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getLoadingOverlayStyles = () => {\n return mergeStyleSets({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 10\n },\n message: {\n fontWeight: 600\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,uBAAuB,GAAG,MAAK;AACxC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,GAAG,EAAE,EAAE;AACV,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,UAAU,EAAE,GAAG;AAClB,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
@@ -10,15 +10,40 @@ const useFetchXml = (context) => {
10
10
  return cachedFetchXml.current[viewId];
11
11
  };
12
12
  const applyLookupQuery = async (entity, fetchXml, query) => {
13
+ const parser = new DOMParser();
14
+ const parsedFetchXml = parser.parseFromString(fetchXml, "application/xml");
15
+ const conditions = parsedFetchXml.getElementsByTagName("condition");
16
+ const placeholderConditions = [];
17
+ for (const cond of conditions) {
18
+ if (cond.getAttribute('value') === "{0}") {
19
+ if (query) {
20
+ cond.setAttribute('value', `%${query}%`);
21
+ }
22
+ placeholderConditions.push(cond);
23
+ }
24
+ }
13
25
  if (!query) {
14
- return fetchXml;
26
+ for (const cond of placeholderConditions) {
27
+ const parentFilter = cond.parentElement;
28
+ parentFilter?.removeChild(cond);
29
+ if (parentFilter?.children.length === 0) {
30
+ const grandParent = parentFilter.parentElement;
31
+ grandParent?.removeChild(parentFilter);
32
+ }
33
+ }
34
+ return new XMLSerializer().serializeToString(parsedFetchXml);
35
+ }
36
+ if (placeholderConditions.length > 0) {
37
+ return new XMLSerializer().serializeToString(parsedFetchXml);
38
+ }
39
+ else {
40
+ const metadata = await entity.metadata;
41
+ const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);
42
+ xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [
43
+ new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])
44
+ ]));
45
+ return xmlObject.toXml();
15
46
  }
16
- const metadata = await entity.metadata;
17
- const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);
18
- xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [
19
- new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])
20
- ]));
21
- return xmlObject.toXml();
22
47
  };
23
48
  return [get, applyLookupQuery];
24
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchXml.js","sources":["../../../../src/components/Lookup/hooks/useFetchXml.ts"],"sourcesContent":["import { useRef } from \"react\"\nimport { IEntity } from \"../interfaces\";\nimport { FetchXmlBuilder } from \"@talxis/client-libraries\";\n\nexport const useFetchXml = (context: ComponentFramework.Context<any>): [\n (viewId: string) => Promise<{fetchxml: string, layoutjson: string}>,\n (entity: IEntity, fetchXml: string, query: string) => Promise<string>\n] => {\n const cachedFetchXml = useRef<{\n [viewId: string]: Promise<any>\n }>({});\n\n const get = async (viewId: string): Promise<{fetchxml: string, layoutjson: string}> => {\n if (!cachedFetchXml.current[viewId]) {\n cachedFetchXml.current[viewId] = context.webAPI.retrieveRecord('savedquery', viewId, '?$select=fetchxml,layoutjson');\n }\n\n return cachedFetchXml.current[viewId];\n }\n const applyLookupQuery = async (entity: IEntity, fetchXml: string, query: string): Promise<string> => {\n if (!query) {\n return fetchXml\n }\n const metadata = await entity.metadata;\n const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);\n xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [\n new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])\n ]))\n return xmlObject.toXml();\n }\n return [get, applyLookupQuery]\n}"],"names":[],"mappings":";;;AAIa,MAAA,WAAW,GAAG,CAAC,OAAwC,KAGhE;AACA,IAAA,MAAM,cAAc,GAAG,MAAM,CAE1B,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,GAAG,GAAG,OAAO,MAAc,KAAqD;AAClF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC;AACxH,SAAA;AAED,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAC,CAAA;IACD,MAAM,gBAAgB,GAAG,OAAO,MAAe,EAAE,QAAgB,EAAE,KAAa,KAAqB;QACjG,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,QAAQ,CAAA;AAClB,SAAA;AACD,QAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,QAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE;YACjF,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;AACzI,SAAA,CAAC,CAAC,CAAA;AACH,QAAA,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;AAC7B,KAAC,CAAA;AACD,IAAA,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;AAClC;;;;"}
1
+ {"version":3,"file":"useFetchXml.js","sources":["../../../../src/components/Lookup/hooks/useFetchXml.ts"],"sourcesContent":["import { useRef } from \"react\"\nimport { IEntity } from \"../interfaces\";\nimport { FetchXmlBuilder } from \"@talxis/client-libraries\";\n\nexport const useFetchXml = (context: ComponentFramework.Context<any>): [\n (viewId: string) => Promise<{ fetchxml: string, layoutjson: string }>,\n (entity: IEntity, fetchXml: string, query: string) => Promise<string>\n] => {\n const cachedFetchXml = useRef<{\n [viewId: string]: Promise<any>\n }>({});\n\n const get = async (viewId: string): Promise<{ fetchxml: string, layoutjson: string }> => {\n if (!cachedFetchXml.current[viewId]) {\n cachedFetchXml.current[viewId] = context.webAPI.retrieveRecord('savedquery', viewId, '?$select=fetchxml,layoutjson');\n }\n\n return cachedFetchXml.current[viewId];\n }\n const applyLookupQuery = async (entity: IEntity, fetchXml: string, query: string): Promise<string> => {\n const parser = new DOMParser();\n const parsedFetchXml = parser.parseFromString(fetchXml, \"application/xml\");\n const conditions = parsedFetchXml.getElementsByTagName(\"condition\");\n const placeholderConditions: Element[] = [];\n for (const cond of conditions) {\n if (cond.getAttribute('value') === \"{0}\") {\n if(query) {\n cond.setAttribute('value', `%${query}%`);\n }\n placeholderConditions.push(cond);\n }\n }\n if (!query) {\n for (const cond of placeholderConditions) {\n const parentFilter = cond.parentElement;\n parentFilter?.removeChild(cond);\n if(parentFilter?.children.length === 0) {\n const grandParent = parentFilter.parentElement;\n grandParent?.removeChild(parentFilter);\n }\n }\n return new XMLSerializer().serializeToString(parsedFetchXml);\n }\n if (placeholderConditions.length > 0) {\n return new XMLSerializer().serializeToString(parsedFetchXml);\n }\n else {\n const metadata = await entity.metadata;\n const xmlObject = FetchXmlBuilder.fetch.fromXml(fetchXml);\n xmlObject.entity.addFilter(new FetchXmlBuilder.filter(FetchXmlBuilder.FilterType.Or, [\n new FetchXmlBuilder.condition(metadata.PrimaryNameAttribute, FetchXmlBuilder.Operator.Like, [new FetchXmlBuilder.value(`%${query}%`)])\n ]))\n return xmlObject.toXml();\n }\n }\n return [get, applyLookupQuery]\n}"],"names":[],"mappings":";;;AAIa,MAAA,WAAW,GAAG,CAAC,OAAwC,KAGhE;AACA,IAAA,MAAM,cAAc,GAAG,MAAM,CAE1B,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,GAAG,GAAG,OAAO,MAAc,KAAuD;AACpF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC;AACxH,SAAA;AAED,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAC,CAAA;IACD,MAAM,gBAAgB,GAAG,OAAO,MAAe,EAAE,QAAgB,EAAE,KAAa,KAAqB;AACjG,QAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,cAAc,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,qBAAqB,GAAc,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;AACtC,gBAAA,IAAG,KAAK,EAAE;oBACN,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAI,CAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;AAC5C,iBAAA;AACD,gBAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE;AACtC,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AACxC,gBAAA,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,gBAAA,IAAG,YAAY,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,oBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;AAC/C,oBAAA,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;AAC1C,iBAAA;AACJ,aAAA;YACD,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChE,SAAA;AACD,QAAA,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAChE,SAAA;AACI,aAAA;AACD,YAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACvC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE;gBACjF,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;AACzI,aAAA,CAAC,CAAC,CAAA;AACH,YAAA,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAA;AACL,KAAC,CAAA;AACD,IAAA,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;AAClC;;;;"}
@@ -123,7 +123,7 @@ const useLookup = (props) => {
123
123
  case "partylist":
124
124
  case "owner":
125
125
  case "customer":
126
- primaryName = entity[`_${targetAttribute}_value@OData.Community.Display.V1.FormattedValue`];
126
+ primaryName = entity[`_${attribute}_value@OData.Community.Display.V1.FormattedValue`];
127
127
  break;
128
128
  case "optionset":
129
129
  case "picklist":
@@ -135,13 +135,13 @@ const useLookup = (props) => {
135
135
  case "decimal":
136
136
  case "money":
137
137
  //TODO: Introduce user formatting, this approach takes format from application user setting
138
- primaryName = entity[`${targetAttribute}@OData.Community.Display.V1.FormattedValue`];
138
+ primaryName = entity[`${attribute}@OData.Community.Display.V1.FormattedValue`];
139
139
  break;
140
140
  case "datetime":
141
- primaryName = props.context.formatting.formatTime(dayjs(entity[targetAttribute]).toDate(), 1);
141
+ primaryName = props.context.formatting.formatTime(dayjs(entity[attribute]).toDate(), 1);
142
142
  break;
143
143
  default:
144
- primaryName = entity[targetAttribute];
144
+ primaryName = entity[attribute];
145
145
  }
146
146
  return (primaryName ??
147
147
  entity[entityMetadata.PrimaryNameAttribute] ??