@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.
- package/dist/components/DatasetControl/DatasetControl.d.ts +1 -2
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.d.ts +5 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +70 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.d.ts +7 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js +14 -0
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.d.ts +5 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.js +66 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.d.ts +1 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js +35 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.d.ts +9 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +58 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.d.ts +4 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js +32 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.d.ts +26 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js +32 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/styles.d.ts +50 -0
- package/dist/components/DatasetControl/EditColumns/styles.js +56 -0
- package/dist/components/DatasetControl/EditColumns/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.d.ts +4 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js +9 -0
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -0
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +1 -1
- package/dist/components/DatasetControl/Header/Header.js +83 -45
- package/dist/components/DatasetControl/Header/Header.js.map +1 -1
- package/dist/components/DatasetControl/interfaces.d.ts +5 -1
- package/dist/components/DatasetControl/translations.d.ts +32 -0
- package/dist/components/DatasetControl/translations.js +8 -0
- package/dist/components/DatasetControl/translations.js.map +1 -1
- package/dist/components/DateTime/DateTime.d.ts +1 -2
- package/dist/components/DateTime/components/Calendar.d.ts +1 -2
- package/dist/components/Decimal/Decimal.d.ts +1 -2
- package/dist/components/Duration/Duration.d.ts +1 -2
- package/dist/components/Grid/cells/cell/Cell.d.ts +2 -3
- package/dist/components/Grid/cells/cell/content/CellContent.d.ts +1 -2
- package/dist/components/Grid/cells/cell/notifications/Notifications.d.ts +1 -2
- package/dist/components/Grid/cells/selection-cell/SelectionCell.d.ts +1 -2
- package/dist/components/Grid/cells/selection-cell/SelectionCell.js.map +1 -1
- package/dist/components/Grid/cells/selection-cell/record-save-error-callout/RecordSaveErrorCallout.d.ts +1 -2
- package/dist/components/Grid/column-headers/column-header/ColumnHeader.d.ts +1 -2
- package/dist/components/Grid/column-headers/column-header/ColumnHeaderContextualMenu.d.ts +1 -1
- package/dist/components/Grid/column-headers/column-header/FilterCallout.d.ts +1 -2
- package/dist/components/Grid/column-headers/record-selection-checkbox/RecordSelectionCheckbox.d.ts +1 -2
- package/dist/components/Grid/errors/FullWidthCellRendererError/FullWidthCellRendererError.d.ts +1 -2
- package/dist/components/Grid/grid/Grid.d.ts +1 -2
- package/dist/components/Grid/loading/full-row/FullRowLoading.d.ts +1 -2
- package/dist/components/Grid/overlays/empty-records/EmptyRecordsOverlay.d.ts +1 -2
- package/dist/components/Grid/overlays/loading/LoadingOverlay.d.ts +1 -2
- package/dist/components/GridCellRenderer/GridCellRenderer.d.ts +1 -2
- package/dist/components/GridCellRenderer/ValueRenderer/ValueRenderer.d.ts +1 -2
- package/dist/components/GridCellRenderer/ValueRenderer/styles.d.ts +174 -110
- package/dist/components/GridCellRenderer/ValueRenderer/styles.js +1 -0
- package/dist/components/GridCellRenderer/ValueRenderer/styles.js.map +1 -1
- package/dist/components/Lookup/Lookup.d.ts +1 -2
- package/dist/components/Lookup/components/RecordCreator.d.ts +1 -2
- package/dist/components/Lookup/components/TargetSelector.d.ts +1 -2
- package/dist/components/MultiSelectOptionSet/ColofulOptions/ColorfulOptions.d.ts +1 -2
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.d.ts +1 -2
- package/dist/components/NestedControlRenderer/NestedControlRenderer.d.ts +1 -2
- package/dist/components/OptionSet/OptionSet.d.ts +1 -2
- package/dist/components/OptionSet/shared.d.ts +1 -2
- package/dist/components/Ribbon/styles.d.ts +1 -0
- package/dist/components/Ribbon/styles.js +1 -0
- package/dist/components/Ribbon/styles.js.map +1 -1
- package/dist/components/TextField/TextField.d.ts +1 -2
- package/dist/components/TwoOptions/TwoOptions.d.ts +1 -2
- package/dist/hooks/useShouldRemount.d.ts +1 -0
- package/dist/hooks/useShouldRemount.js +14 -0
- package/dist/hooks/useShouldRemount.js.map +1 -0
- package/dist/index.d.ts +80 -15
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.d.ts +1 -0
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +3 -0
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/dist/utils/dataset-control/DatasetControl.d.ts +17 -2
- package/dist/utils/dataset-control/DatasetControl.js +19 -0
- package/dist/utils/dataset-control/DatasetControl.js.map +1 -1
- package/dist/utils/dataset-control/EditColumns.d.ts +48 -0
- package/dist/utils/dataset-control/EditColumns.js +140 -0
- package/dist/utils/dataset-control/EditColumns.js.map +1 -0
- package/dist/utils/theme/components/ThemeWrapper.d.ts +1 -1
- package/package.json +9 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetControl.js","sources":["../../../src/utils/dataset-control/DatasetControl.ts"],"sourcesContent":["import { Client, DataProvider, EventEmitter, ICommand, IDataset, IInterceptor, IInternalDataProvider, Interceptors } from \"@talxis/client-libraries\";\nimport debounce from \"debounce\";\nimport { IDatasetControlParameters } from \"../../components/DatasetControl/interfaces\";\n\n\ninterface IDatasetControlOptions {\n state: ComponentFramework.Dictionary;\n controlId: string;\n onGetPcfContext: () => ComponentFramework.Context<any, any>;\n onGetParameters: () => IDatasetControlParameters;\n}\n\nexport interface IDatasetControlEvents {\n onRecordCommandsLoaded: () => void;\n onInitialized: () => void;\n}\n\ninterface IDatasetControlInterceptors {\n onInitialize: () => Promise<void>;\n}\n\nexport interface IDatasetControl extends EventEmitter<IDatasetControlEvents> {\n setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;\n isPaginationVisible(): boolean;\n isRecordCountVisible(): boolean;\n isPageSizeSwitcherVisible(): boolean;\n isQuickFindVisible(): boolean;\n isAutoSaveEnabled(): boolean;\n isRibbonVisible(): boolean;\n getHeight(): string | null;\n getDataset(): IDataset;\n getPcfContext(): ComponentFramework.Context<any>;\n getParameters(): IDatasetControlParameters;\n loadCommands(ids: string[]): Promise<void>;\n retrieveRecordCommands(): ICommand[];\n areCommandsLoaded(): boolean;\n destroy(): void;\n init(): Promise<void>;\n getState(): ComponentFramework.Dictionary;\n saveState(): void;\n}\n\nexport class DatasetControl extends EventEmitter<IDatasetControlEvents> implements IDatasetControl {\n private _hasFirstDataLoaded: boolean = false;\n private _commands: ICommand[] = [];\n private _commandsLoaded: boolean = false;\n private _client: Client = new Client();\n private _options: IDatasetControlOptions;\n private _debouncedLoadRecordCommands: debounce.DebouncedFunction<(ids: string[]) => void>;\n private _interceptors = new Interceptors<IDatasetControlInterceptors>();\n\n constructor(options: IDatasetControlOptions) {\n super();\n this._options = options\n this._setDatasetProperties();\n this._setState();\n this._debouncedLoadRecordCommands = debounce((ids) => this.loadCommands(ids))\n this._addEventListeners();\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n }\n\n public setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void {\n this._interceptors.setInterceptor(event, interceptor);\n }\n public isPaginationVisible(): boolean {\n return this.getParameters().EnablePagination?.raw ?? true;\n }\n public isRecordCountVisible(): boolean {\n return this.getParameters().EnableRecordCount?.raw ?? true;\n }\n public isPageSizeSwitcherVisible(): boolean {\n return this.getParameters().EnablePageSizeSwitcher?.raw ?? true;\n }\n public isQuickFindVisible(): boolean {\n return this.getParameters().EnableQuickFind?.raw ?? true;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw ?? false;\n }\n public isRibbonVisible(): boolean {\n return this.getParameters().EnableCommandBar?.raw ?? true;\n }\n public getHeight() {\n return this.getParameters().Height?.raw ?? null;\n }\n public getDataset() {\n return this.getParameters().Grid;\n }\n public getPcfContext() {\n return this._options.onGetPcfContext();\n }\n public async loadCommands(ids: string[]) {\n //we need to to have our ribbon shadow call the retrieveRecordCommand method in Power Apps in order to inject it into Power Apps ribbon.\n if (!this.isRibbonVisible() && this._client.isTalxisPortal()) {\n return;\n }\n this._commands = await this.getDataset().getDataProvider().retrieveRecordCommand({\n recordIds: ids,\n refreshAllRules: true\n });\n this._commandsLoaded = true;\n this.dispatchEvent('onRecordCommandsLoaded');\n }\n public retrieveRecordCommands() {\n return this._commands;\n }\n public areCommandsLoaded(): boolean {\n return this._commandsLoaded;\n }\n public destroy() {\n this.saveState();\n this.getDataset().destroy();\n this.clearEventListeners();\n this._interceptors.clearInterceptors();\n }\n public async init() {\n await this._interceptors.execute('onInitialize', undefined, async () => {\n if (this.getDataset().getDataProvider().getProperty('isStandalone') || !this._client.isTalxisPortal()) {\n await (<IInternalDataProvider>this.getDataset().getDataProvider()).preload();\n }\n });\n await this._executeClientApiScript();\n //this makes sure the current columns go through any dataset interceptors\n this.getDataset().setColumns(this.getDataset().columns);\n this.getDataset().paging.loadExactPage(this.getDataset().paging.pageNumber);\n this.dispatchEvent('onInitialized');\n }\n public getParameters() {\n return this._options.onGetParameters();\n }\n public getState() {\n return this._options.state;\n }\n public saveState() {\n if (!this._hasFirstDataLoaded) {\n return;\n }\n const provider = this.getDataset().getDataProvider();\n const state = this._options.state;\n const DatasetControlState = state.DatasetControlState || {};\n DatasetControlState.columns = provider.getColumns();\n DatasetControlState.linking = provider.getLinking();\n DatasetControlState.sorting = provider.getSorting();\n DatasetControlState.filtering = provider.getFiltering();\n DatasetControlState.pageSize = provider.getPaging().pageSize;\n DatasetControlState.pageNumber = provider.getPaging().pageNumber;\n DatasetControlState.searchQuery = provider.getSearchQuery();\n DatasetControlState.selectedRecordIds = provider.getSelectedRecordIds();\n state.DatasetControlState = DatasetControlState;\n this.getPcfContext().mode.setControlState(state);\n }\n private async _executeClientApiScript(): Promise<void> {\n const clientApiWebresourceName = this.getParameters().ClientApiWebresourceName?.raw;\n const clientApiFunctionName = this.getParameters().ClientApiFunctionName?.raw;\n if (clientApiFunctionName) {\n if (!clientApiFunctionName) {\n throw new Error('ClientApiFunctionName parameter is not set.');\n }\n try {\n //@ts-ignore - typings\n await Xrm.Utility.executeFunction(clientApiWebresourceName, clientApiFunctionName, [{\n dataset: this.getDataset(),\n controlId: this._options.controlId\n }]);\n }\n catch (err) {\n console.error('Client API web resource execution failed. Client API will not be enabled! Reason: ', err);\n }\n }\n }\n\n private _setDatasetProperties() {\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('autoSave', this.isAutoSaveEnabled());\n provider.setProperty('groupingType', this.getParameters().GroupingType?.raw ?? 'nested');\n const inlineRibbonButtonsIds = [\n ...(this.getParameters().InlineRibbonButtonIds?.raw?.split(',') ?? []),\n DataProvider.CONST.SAVE_COMMAND_ID,\n DataProvider.CONST.CLEAR_CHANGES_COMMAND_ID\n ];\n provider.setProperty('inlineRibbonButtonsIds', new Set(inlineRibbonButtonsIds));\n }\n\n private _addEventListeners() {\n this.getDataset().addEventListener('onRecordsSelected', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onRecordColumnValueChanged', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onAfterRecordSaved', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onFirstDataLoaded', () => {\n this._hasFirstDataLoaded = true;\n })\n }\n\n private _setState() {\n const state = this._options.state?.DatasetControlState;\n if (!state) {\n return;\n }\n\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('hasPreviousState', true);\n provider.setLinking(state.linking);\n provider.setSorting(state.sorting);\n provider.setFiltering(state.filtering);\n provider.getPaging().setPageSize(state.pageSize);\n provider.getPaging().setPageNumber(state.pageNumber);\n provider.setSearchQuery(state.searchQuery);\n provider.setSelectedRecordIds(state.selectedRecordIds);\n }\n\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatasetControl.js","sources":["../../../src/utils/dataset-control/DatasetControl.ts"],"sourcesContent":["import { Client, DataProvider, EventEmitter, ICommand, IDataset, IEventEmitter, IInterceptor, IInternalDataProvider, Interceptors } from \"@talxis/client-libraries\";\nimport debounce from \"debounce\";\nimport { IDatasetControlParameters } from \"../../components/DatasetControl/interfaces\";\nimport { EditColumns, IEditColumns } from \"./EditColumns\";\n\n\ninterface IDatasetControlOptions {\n state: ComponentFramework.Dictionary;\n controlId: string;\n onGetPcfContext: () => ComponentFramework.Context<any, any>;\n onGetParameters: () => IDatasetControlParameters;\n}\n\nexport interface IDatasetControlEvents {\n onRecordCommandsLoaded: () => void;\n onRemountRequested: () => void;\n onEditColumnsRequested: () => void;\n onInitialized: () => void;\n}\n\ninterface IDatasetControlInterceptors {\n onInitialize: () => Promise<void>;\n}\n\nexport interface IDatasetControl extends IEventEmitter<IDatasetControlEvents> {\n editColumns: IEditColumns;\n setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;\n isPaginationVisible(): boolean;\n isRecordCountVisible(): boolean;\n isPageSizeSwitcherVisible(): boolean;\n isQuickFindVisible(): boolean;\n isAutoSaveEnabled(): boolean;\n isRibbonVisible(): boolean;\n getHeight(): string | null;\n getDataset(): IDataset;\n getPcfContext(): ComponentFramework.Context<any>;\n getParameters(): IDatasetControlParameters;\n loadCommands(ids: string[]): Promise<void>;\n retrieveRecordCommands(): ICommand[];\n areCommandsLoaded(): boolean;\n isEditColumnsVisible(): boolean;\n isViewSwitcherVisible(): boolean;\n isEditFiltersVisible(): boolean;\n //this should be removed once we have a custom edit columns button in the ribbon\n requestEditColumns(): void;\n destroy(): void;\n requestRemount(): void;\n init(): Promise<void>;\n getState(): ComponentFramework.Dictionary;\n saveState(): void;\n}\n\nexport class DatasetControl extends EventEmitter<IDatasetControlEvents> implements IDatasetControl {\n private _hasFirstDataLoaded: boolean = false;\n private _commands: ICommand[] = [];\n private _commandsLoaded: boolean = false;\n private _client: Client = new Client();\n private _options: IDatasetControlOptions;\n private _debouncedLoadRecordCommands: debounce.DebouncedFunction<(ids: string[]) => void>;\n private _interceptors = new Interceptors<IDatasetControlInterceptors>();\n\n constructor(options: IDatasetControlOptions) {\n super();\n this._options = options;\n this._setDatasetProperties();\n this._setState();\n this._debouncedLoadRecordCommands = debounce((ids) => this.loadCommands(ids))\n this._addEventListeners();\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n }\n\n public get editColumns(): IEditColumns {\n return new EditColumns({ datasetControl: this });\n }\n\n public setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void {\n this._interceptors.setInterceptor(event, interceptor);\n }\n public isPaginationVisible(): boolean {\n return this.getParameters().EnablePagination?.raw ?? true;\n }\n public isRecordCountVisible(): boolean {\n return this.getParameters().EnableRecordCount?.raw ?? true;\n }\n public isPageSizeSwitcherVisible(): boolean {\n return this.getParameters().EnablePageSizeSwitcher?.raw ?? true;\n }\n public isQuickFindVisible(): boolean {\n return this.getParameters().EnableQuickFind?.raw ?? true;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw ?? false;\n }\n public isRibbonVisible(): boolean {\n return this.getParameters().EnableCommandBar?.raw ?? true;\n }\n public requestEditColumns(): void {\n this.dispatchEvent('onEditColumnsRequested');\n }\n public isViewSwitcherVisible(): boolean {\n return false;\n }\n public isEditColumnsVisible(): boolean {\n return this.getParameters().EnableEditColumns?.raw ?? false;\n }\n public isEditFiltersVisible(): boolean {\n return false;\n }\n public getHeight() {\n return this.getParameters().Height?.raw ?? null;\n }\n public getDataset() {\n return this.getParameters().Grid;\n }\n public getPcfContext() {\n return this._options.onGetPcfContext();\n }\n public async loadCommands(ids: string[]) {\n //we need to to have our ribbon shadow call the retrieveRecordCommand method in Power Apps in order to inject it into Power Apps ribbon.\n if (!this.isRibbonVisible() && this._client.isTalxisPortal()) {\n return;\n }\n this._commands = await this.getDataset().getDataProvider().retrieveRecordCommand({\n recordIds: ids,\n refreshAllRules: true\n });\n this._commandsLoaded = true;\n this.dispatchEvent('onRecordCommandsLoaded');\n }\n public retrieveRecordCommands() {\n return this._commands;\n }\n public areCommandsLoaded(): boolean {\n return this._commandsLoaded;\n }\n public destroy() {\n this.saveState();\n this.getDataset().destroy();\n this.clearEventListeners();\n this._interceptors.clearInterceptors();\n }\n public requestRemount(): void {\n this.dispatchEvent('onRemountRequested');\n }\n public async init() {\n await this._interceptors.execute('onInitialize', undefined, async () => {\n if (this.getDataset().getDataProvider().getProperty('isStandalone') || !this._client.isTalxisPortal()) {\n await (<IInternalDataProvider>this.getDataset().getDataProvider()).preload();\n }\n });\n await this._executeClientApiScript();\n //this makes sure the current columns go through any dataset interceptors\n this.getDataset().setColumns(this.getDataset().columns);\n this.getDataset().paging.loadExactPage(this.getDataset().paging.pageNumber);\n this.dispatchEvent('onInitialized');\n }\n public getParameters() {\n return this._options.onGetParameters();\n }\n public getState() {\n return this._options.state;\n }\n public saveState() {\n if (!this._hasFirstDataLoaded) {\n return;\n }\n const provider = this.getDataset().getDataProvider();\n const state = this._options.state;\n const DatasetControlState = state.DatasetControlState || {};\n DatasetControlState.columns = provider.getColumns();\n DatasetControlState.linking = provider.getLinking();\n DatasetControlState.sorting = provider.getSorting();\n DatasetControlState.filtering = provider.getFiltering();\n DatasetControlState.pageSize = provider.getPaging().pageSize;\n DatasetControlState.pageNumber = provider.getPaging().pageNumber;\n DatasetControlState.searchQuery = provider.getSearchQuery();\n DatasetControlState.selectedRecordIds = provider.getSelectedRecordIds();\n state.DatasetControlState = DatasetControlState;\n this.getPcfContext().mode.setControlState(state);\n }\n private async _executeClientApiScript(): Promise<void> {\n const clientApiWebresourceName = this.getParameters().ClientApiWebresourceName?.raw;\n const clientApiFunctionName = this.getParameters().ClientApiFunctionName?.raw;\n if (clientApiFunctionName) {\n if (!clientApiFunctionName) {\n throw new Error('ClientApiFunctionName parameter is not set.');\n }\n try {\n //@ts-ignore - typings\n await Xrm.Utility.executeFunction(clientApiWebresourceName, clientApiFunctionName, [{\n dataset: this.getDataset(),\n controlId: this._options.controlId\n }]);\n }\n catch (err) {\n console.error('Client API web resource execution failed. Client API will not be enabled! Reason: ', err);\n }\n }\n }\n\n private _setDatasetProperties() {\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('autoSave', this.isAutoSaveEnabled());\n provider.setProperty('groupingType', this.getParameters().GroupingType?.raw ?? 'nested');\n const inlineRibbonButtonsIds = [\n ...(this.getParameters().InlineRibbonButtonIds?.raw?.split(',') ?? []),\n DataProvider.CONST.SAVE_COMMAND_ID,\n DataProvider.CONST.CLEAR_CHANGES_COMMAND_ID\n ];\n provider.setProperty('inlineRibbonButtonsIds', new Set(inlineRibbonButtonsIds));\n }\n\n private _addEventListeners() {\n this.getDataset().addEventListener('onRecordsSelected', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onRecordColumnValueChanged', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onAfterRecordSaved', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onFirstDataLoaded', () => {\n this._hasFirstDataLoaded = true;\n })\n }\n\n private _setState() {\n const state = this._options.state?.DatasetControlState;\n if (!state) {\n return;\n }\n\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('hasPreviousState', true);\n provider.setLinking(state.linking);\n provider.setSorting(state.sorting);\n provider.setFiltering(state.filtering);\n provider.getPaging().setPageSize(state.pageSize);\n provider.getPaging().setPageNumber(state.pageNumber);\n provider.setSearchQuery(state.searchQuery);\n provider.setSelectedRecordIds(state.selectedRecordIds);\n }\n\n}"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { EventEmitter, IAvailableRelatedColumn, IColumn, IEventEmitter } from "@talxis/client-libraries";
|
|
2
|
+
import { IDatasetControl } from "./DatasetControl";
|
|
3
|
+
export interface IEditColumnsEvents {
|
|
4
|
+
onColumnAdded: (column: IColumn) => void;
|
|
5
|
+
onColumnsChanged: (newColumns: IColumn[]) => void;
|
|
6
|
+
onRelatedEntityColumnChanged: (relatedEntityColumn: IColumn | null) => void;
|
|
7
|
+
}
|
|
8
|
+
interface IEditColumnsOptions {
|
|
9
|
+
datasetControl: IDatasetControl;
|
|
10
|
+
}
|
|
11
|
+
export interface IEditColumns extends IEventEmitter<IEditColumnsEvents> {
|
|
12
|
+
save(): void;
|
|
13
|
+
getColumns(): (IColumn & {
|
|
14
|
+
id: string;
|
|
15
|
+
})[];
|
|
16
|
+
deleteColumn(name: string): void;
|
|
17
|
+
addColumn(column: IColumn): void;
|
|
18
|
+
getAvailableColumns(query?: string): Promise<IColumn[]>;
|
|
19
|
+
getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;
|
|
20
|
+
selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;
|
|
21
|
+
onColumnMoved(draggedColumnId: string, targetColumnId: string): void;
|
|
22
|
+
getMainEntityColumn(): IAvailableRelatedColumn;
|
|
23
|
+
}
|
|
24
|
+
export declare class EditColumns extends EventEmitter<IEditColumnsEvents> implements IEditColumns {
|
|
25
|
+
private _datasetControl;
|
|
26
|
+
private _provider;
|
|
27
|
+
private _currentColumns;
|
|
28
|
+
private _relatedEntityColumn;
|
|
29
|
+
private _foreignKeyEntityLinkMap;
|
|
30
|
+
constructor(options: IEditColumnsOptions);
|
|
31
|
+
save(): void;
|
|
32
|
+
getColumns(): (IColumn & {
|
|
33
|
+
id: string;
|
|
34
|
+
})[];
|
|
35
|
+
deleteColumn(name: string): void;
|
|
36
|
+
addColumn(column: IColumn): void;
|
|
37
|
+
getAvailableColumns(query?: string): Promise<IColumn[]>;
|
|
38
|
+
getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;
|
|
39
|
+
selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;
|
|
40
|
+
onColumnMoved(draggedColumnId: string, targetColumnId: string): void;
|
|
41
|
+
getMainEntityColumn(): IAvailableRelatedColumn;
|
|
42
|
+
private _normalizeText;
|
|
43
|
+
private _generateLinkedEntityExpression;
|
|
44
|
+
private _cleanupUnusedLinkedEntityExpression;
|
|
45
|
+
private _setLinking;
|
|
46
|
+
private _setColumns;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { EventEmitter, DataTypes, Attribute } from '@talxis/client-libraries';
|
|
2
|
+
|
|
3
|
+
class EditColumns extends EventEmitter {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
super();
|
|
6
|
+
this._currentColumns = [];
|
|
7
|
+
this._relatedEntityColumn = null;
|
|
8
|
+
this._foreignKeyEntityLinkMap = new Map();
|
|
9
|
+
this._datasetControl = options.datasetControl;
|
|
10
|
+
this._provider = options.datasetControl.getDataset().getDataProvider();
|
|
11
|
+
this._currentColumns = this._provider.getColumns().map(col => ({ ...col, id: col.name }));
|
|
12
|
+
this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [l.to, l]));
|
|
13
|
+
}
|
|
14
|
+
save() {
|
|
15
|
+
this._setColumns();
|
|
16
|
+
this._setLinking();
|
|
17
|
+
this._provider.clearSelectedRecordIds();
|
|
18
|
+
this._datasetControl.requestRemount();
|
|
19
|
+
}
|
|
20
|
+
getColumns() {
|
|
21
|
+
return this._currentColumns;
|
|
22
|
+
}
|
|
23
|
+
deleteColumn(name) {
|
|
24
|
+
this._currentColumns = this._currentColumns.filter(col => col.name !== name);
|
|
25
|
+
this._cleanupUnusedLinkedEntityExpression();
|
|
26
|
+
this.dispatchEvent('onColumnsChanged', this._currentColumns);
|
|
27
|
+
}
|
|
28
|
+
addColumn(column) {
|
|
29
|
+
if (this._relatedEntityColumn) {
|
|
30
|
+
const linking = this._generateLinkedEntityExpression(this._relatedEntityColumn);
|
|
31
|
+
column = {
|
|
32
|
+
...column,
|
|
33
|
+
name: `${linking.alias}.${column.name}`,
|
|
34
|
+
displayName: `${column.displayName} (${this._relatedEntityColumn.displayName})`
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
this._currentColumns.unshift({ ...column, id: column.name });
|
|
38
|
+
this.dispatchEvent('onColumnAdded', column);
|
|
39
|
+
this.dispatchEvent('onColumnsChanged', this._currentColumns);
|
|
40
|
+
}
|
|
41
|
+
async getAvailableColumns(query) {
|
|
42
|
+
const entityName = this._relatedEntityColumn?.metadata?.Targets?.[0] ?? this._provider.getEntityName();
|
|
43
|
+
const availableColumns = await this._provider.getAvailableColumns({ entityName: entityName });
|
|
44
|
+
if (!query)
|
|
45
|
+
return availableColumns;
|
|
46
|
+
const normalizedQuery = this._normalizeText(query).toLowerCase();
|
|
47
|
+
return availableColumns.filter(col => this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery));
|
|
48
|
+
}
|
|
49
|
+
async getAvailableRelatedColumns(query) {
|
|
50
|
+
const relatedColumns = await this._provider.getAvailableRelatedColumns();
|
|
51
|
+
const allColumns = [...relatedColumns, this.getMainEntityColumn()];
|
|
52
|
+
if (!query) {
|
|
53
|
+
return allColumns.sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));
|
|
54
|
+
}
|
|
55
|
+
const normalizedQuery = this._normalizeText(query).toLowerCase();
|
|
56
|
+
return allColumns
|
|
57
|
+
.filter(col => {
|
|
58
|
+
return this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery);
|
|
59
|
+
})
|
|
60
|
+
.sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));
|
|
61
|
+
}
|
|
62
|
+
selectRelatedEntityColumn(column) {
|
|
63
|
+
this._relatedEntityColumn = column.name === this._provider.getMetadata().PrimaryIdAttribute ? null : { ...column };
|
|
64
|
+
this.dispatchEvent('onRelatedEntityColumnChanged', this._relatedEntityColumn);
|
|
65
|
+
}
|
|
66
|
+
onColumnMoved(draggedColumnId, targetColumnId) {
|
|
67
|
+
if (draggedColumnId !== targetColumnId) {
|
|
68
|
+
const oldIndex = this._currentColumns.findIndex(col => col.id === draggedColumnId);
|
|
69
|
+
const newIndex = this._currentColumns.findIndex(col => col.id === targetColumnId);
|
|
70
|
+
const newColumns = [...this._currentColumns];
|
|
71
|
+
const [movedItem] = newColumns.splice(oldIndex, 1);
|
|
72
|
+
newColumns.splice(newIndex, 0, movedItem);
|
|
73
|
+
this._currentColumns = newColumns;
|
|
74
|
+
this.dispatchEvent('onColumnsChanged', this._currentColumns);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
getMainEntityColumn() {
|
|
78
|
+
return {
|
|
79
|
+
name: this._provider.getMetadata().PrimaryIdAttribute,
|
|
80
|
+
displayName: this._provider.getMetadata().DisplayName,
|
|
81
|
+
relatedEntityName: this._provider.getEntityName(),
|
|
82
|
+
relatedEntityDisplayName: '',
|
|
83
|
+
relatedEntityPrimaryIdAttribute: this._provider.getMetadata().PrimaryIdAttribute,
|
|
84
|
+
dataType: DataTypes.LookupSimple,
|
|
85
|
+
metadata: {
|
|
86
|
+
Targets: [this._provider.getEntityName()]
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
_normalizeText(text) {
|
|
91
|
+
return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
92
|
+
}
|
|
93
|
+
_generateLinkedEntityExpression(relatedColumn) {
|
|
94
|
+
// Return existing alias if already mapped
|
|
95
|
+
const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(relatedColumn.name);
|
|
96
|
+
if (existingLinkedEntity) {
|
|
97
|
+
return existingLinkedEntity;
|
|
98
|
+
}
|
|
99
|
+
const existingAliases = new Set([...this._foreignKeyEntityLinkMap.values()].map(link => link.alias));
|
|
100
|
+
const entityName = relatedColumn.relatedEntityName;
|
|
101
|
+
let alias = entityName;
|
|
102
|
+
let index = 1;
|
|
103
|
+
while (existingAliases.has(alias)) {
|
|
104
|
+
alias = `${entityName}_${index++}`;
|
|
105
|
+
}
|
|
106
|
+
const linking = {
|
|
107
|
+
alias: alias,
|
|
108
|
+
name: entityName,
|
|
109
|
+
from: relatedColumn.relatedEntityPrimaryIdAttribute,
|
|
110
|
+
to: relatedColumn.name,
|
|
111
|
+
linkType: 'outer'
|
|
112
|
+
};
|
|
113
|
+
this._foreignKeyEntityLinkMap.set(relatedColumn.name, linking);
|
|
114
|
+
return linking;
|
|
115
|
+
}
|
|
116
|
+
_cleanupUnusedLinkedEntityExpression() {
|
|
117
|
+
const currentColumnsLinks = new Set(this._currentColumns.map(col => Attribute.GetLinkedEntityAlias(col.name) ?? ''));
|
|
118
|
+
const linkToRemove = [...this._foreignKeyEntityLinkMap.entries()].find(([key, link]) => {
|
|
119
|
+
return !currentColumnsLinks.has(link.alias);
|
|
120
|
+
});
|
|
121
|
+
if (linkToRemove) {
|
|
122
|
+
this._foreignKeyEntityLinkMap.delete(linkToRemove[0]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
_setLinking() {
|
|
126
|
+
this._provider.setLinking([...this._foreignKeyEntityLinkMap.values()]);
|
|
127
|
+
}
|
|
128
|
+
_setColumns() {
|
|
129
|
+
this._provider.setColumns(this._currentColumns.map((col, i) => {
|
|
130
|
+
const { id, ...newCol } = {
|
|
131
|
+
...col,
|
|
132
|
+
order: i
|
|
133
|
+
};
|
|
134
|
+
return newCol;
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export { EditColumns };
|
|
140
|
+
//# sourceMappingURL=EditColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditColumns.js","sources":["../../../src/utils/dataset-control/EditColumns.ts"],"sourcesContent":["import { Attribute, DataTypes, EventEmitter, IAvailableRelatedColumn, IColumn, IDataProvider, IEventEmitter, ILinkEntityExposedExpression } from \"@talxis/client-libraries\";\nimport { IDatasetControl } from \"./DatasetControl\";\n\nexport interface IEditColumnsEvents {\n onColumnAdded: (column: IColumn) => void;\n onColumnsChanged: (newColumns: IColumn[]) => void;\n onRelatedEntityColumnChanged: (relatedEntityColumn: IColumn | null) => void;\n}\n\ninterface IEditColumnsOptions {\n datasetControl: IDatasetControl;\n}\n\nexport interface IEditColumns extends IEventEmitter<IEditColumnsEvents> {\n save(): void;\n getColumns(): (IColumn & { id: string })[];\n deleteColumn(name: string): void;\n addColumn(column: IColumn): void;\n getAvailableColumns(query?: string): Promise<IColumn[]>;\n getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;\n selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;\n onColumnMoved(draggedColumnId: string, targetColumnId: string): void;\n getMainEntityColumn(): IAvailableRelatedColumn;\n}\n\nexport class EditColumns extends EventEmitter<IEditColumnsEvents> implements IEditColumns {\n private _datasetControl: IDatasetControl;\n private _provider: IDataProvider;\n private _currentColumns: (IColumn & { id: string })[] = [];\n private _relatedEntityColumn: IAvailableRelatedColumn | null = null;\n private _foreignKeyEntityLinkMap: Map<string, ILinkEntityExposedExpression> = new Map();\n\n constructor(options: IEditColumnsOptions) {\n super();\n this._datasetControl = options.datasetControl;\n this._provider = options.datasetControl.getDataset().getDataProvider();\n this._currentColumns = this._provider.getColumns().map(col => ({ ...col, id: col.name }));\n this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [l.to, l]));\n }\n\n public save() {\n this._setColumns();\n this._setLinking();\n this._provider.clearSelectedRecordIds();\n this._datasetControl.requestRemount();\n }\n\n public getColumns(): (IColumn & { id: string })[] {\n return this._currentColumns;\n }\n\n public deleteColumn(name: string) {\n this._currentColumns = this._currentColumns.filter(col => col.name !== name);\n this._cleanupUnusedLinkedEntityExpression();\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public addColumn(column: IColumn) {\n if (this._relatedEntityColumn) {\n const linking = this._generateLinkedEntityExpression(this._relatedEntityColumn);\n column = {\n ...column,\n name: `${linking.alias}.${column.name}`,\n displayName: `${column.displayName} (${this._relatedEntityColumn.displayName})`\n }\n }\n this._currentColumns.unshift({ ...column, id: column.name });\n this.dispatchEvent('onColumnAdded', column);\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public async getAvailableColumns(query?: string): Promise<IColumn[]> {\n const entityName = this._relatedEntityColumn?.metadata?.Targets?.[0] ?? this._provider.getEntityName();\n const availableColumns = await this._provider.getAvailableColumns({ entityName: entityName });\n if (!query) return availableColumns;\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return availableColumns.filter(col =>\n this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery)\n );\n }\n\n\n public async getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]> {\n const relatedColumns = await this._provider.getAvailableRelatedColumns();\n const allColumns = [...relatedColumns, this.getMainEntityColumn()];\n\n if (!query) {\n return allColumns.sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return allColumns\n .filter(col => {\n return this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery);\n })\n .sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n public selectRelatedEntityColumn(column: IAvailableRelatedColumn) {\n this._relatedEntityColumn = column.name === this._provider.getMetadata().PrimaryIdAttribute ? null : { ...column };\n this.dispatchEvent('onRelatedEntityColumnChanged', this._relatedEntityColumn);\n }\n\n public onColumnMoved(draggedColumnId: string, targetColumnId: string) {\n if (draggedColumnId !== targetColumnId) {\n const oldIndex = this._currentColumns.findIndex(col => col.id === draggedColumnId);\n const newIndex = this._currentColumns.findIndex(col => col.id === targetColumnId);\n\n const newColumns = [...this._currentColumns];\n const [movedItem] = newColumns.splice(oldIndex, 1);\n newColumns.splice(newIndex, 0, movedItem);\n\n this._currentColumns = newColumns;\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n }\n\n public getMainEntityColumn(): IAvailableRelatedColumn {\n return {\n name: this._provider.getMetadata().PrimaryIdAttribute,\n displayName: this._provider.getMetadata().DisplayName,\n relatedEntityName: this._provider.getEntityName(),\n relatedEntityDisplayName: '',\n relatedEntityPrimaryIdAttribute: this._provider.getMetadata().PrimaryIdAttribute,\n dataType: DataTypes.LookupSimple,\n metadata: {\n Targets: [this._provider.getEntityName()]\n }\n }\n }\n\n private _normalizeText(text: string): string {\n return text.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n }\n\n private _generateLinkedEntityExpression(relatedColumn: IAvailableRelatedColumn): ILinkEntityExposedExpression {\n // Return existing alias if already mapped\n const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(relatedColumn.name);\n if (existingLinkedEntity) {\n return existingLinkedEntity;\n }\n const existingAliases = new Set([...this._foreignKeyEntityLinkMap.values()].map(link => link.alias));\n const entityName = relatedColumn.relatedEntityName;\n let alias = entityName;\n let index = 1;\n\n while (existingAliases.has(alias)) {\n alias = `${entityName}_${index++}`;\n }\n const linking: ILinkEntityExposedExpression = {\n alias: alias,\n name: entityName,\n from: relatedColumn.relatedEntityPrimaryIdAttribute,\n to: relatedColumn.name,\n linkType: 'outer'\n }\n this._foreignKeyEntityLinkMap.set(relatedColumn.name, linking);\n return linking;\n }\n\n private _cleanupUnusedLinkedEntityExpression() {\n const currentColumnsLinks = new Set<string>(this._currentColumns.map(col => Attribute.GetLinkedEntityAlias(col.name) ?? ''));\n const linkToRemove = [...this._foreignKeyEntityLinkMap.entries()].find(([key, link]) => {\n return !currentColumnsLinks.has(link.alias);\n });\n if (linkToRemove) {\n this._foreignKeyEntityLinkMap.delete(linkToRemove[0]);\n }\n }\n\n private _setLinking() {\n this._provider.setLinking([...this._foreignKeyEntityLinkMap.values()]);\n }\n private _setColumns() {\n this._provider.setColumns(this._currentColumns.map((col, i) => {\n const { id, ...newCol } = {\n ...col,\n order: i\n }\n return newCol;\n }));\n }\n\n}"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@ interface IThemeWrapper extends ThemeProviderProps {
|
|
|
5
5
|
fluentDesignLanguage?: ComponentFramework.FluentDesignState;
|
|
6
6
|
children?: React.ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare const ThemeWrapper: (props: IThemeWrapper) => JSX.Element;
|
|
8
|
+
export declare const ThemeWrapper: (props: IThemeWrapper) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@talxis/base-controls",
|
|
3
|
-
"version": "1.2601.
|
|
3
|
+
"version": "1.2601.6",
|
|
4
4
|
"description": "Set of React components that natively work with Power Apps Component Framework APIs.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"@types/node": "^17.0.14",
|
|
32
32
|
"@types/numeral": "^2.0.5",
|
|
33
33
|
"@types/powerapps-component-framework": "^1.3.14",
|
|
34
|
-
"@types/react": "
|
|
35
|
-
"@types/react-dom": "^17.0.
|
|
34
|
+
"@types/react": "17.0.90",
|
|
35
|
+
"@types/react-dom": "^17.0.21",
|
|
36
36
|
"@types/validator": "^13.11.9",
|
|
37
37
|
"@types/xrm": "^9.0.81",
|
|
38
38
|
"babel-loader": "^8.2.3",
|
|
@@ -78,7 +78,12 @@
|
|
|
78
78
|
"@ag-grid-enterprise/core": "31.3.2",
|
|
79
79
|
"@ag-grid-enterprise/row-grouping": "31.3.2",
|
|
80
80
|
"@ag-grid-enterprise/server-side-row-model": "31.3.2",
|
|
81
|
+
"@dnd-kit/core": "^6.3.1",
|
|
82
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
83
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
84
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
81
85
|
"@fluentui/react-migration-v8-v9": "^9.6.20",
|
|
86
|
+
"@talxis/client-libraries": "1.2601.5",
|
|
82
87
|
"color": "^4.2.3",
|
|
83
88
|
"dayjs": "^1.11.10",
|
|
84
89
|
"debounce": "^2.2.0",
|
|
@@ -89,13 +94,13 @@
|
|
|
89
94
|
"liquidjs": "^9.43.0",
|
|
90
95
|
"merge-anything": "^5.1.7",
|
|
91
96
|
"numeral": "^2.0.6",
|
|
97
|
+
"react-select": "^5.10.2",
|
|
92
98
|
"use-debounce": "^10.0.1",
|
|
93
99
|
"validator": "^13.11.9"
|
|
94
100
|
},
|
|
95
101
|
"peerDependencies": {
|
|
96
102
|
"@fluentui/react": "<=8.121.5",
|
|
97
103
|
"@talxis/react-components": "1.2505.2",
|
|
98
|
-
"@talxis/client-libraries": "1.2601.4",
|
|
99
104
|
"react": "^16.8.6 || ^17.0.2",
|
|
100
105
|
"react-dom": "^16.8.6 || ^17.0.2"
|
|
101
106
|
}
|