@talxis/base-controls 1.2411.7 → 1.2411.9

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.
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { AgGridReact } from '@ag-grid-community/react';
3
3
  import { useTheme, MessageBar, MessageBarType } from '@fluentui/react';
4
4
  import { ModuleRegistry } from '@ag-grid-community/core';
5
- import { useRef, useMemo, useState, useEffect, useCallback } from 'react';
5
+ import { useRef, useMemo, useState, useCallback, useEffect } from 'react';
6
6
  import { useSelectionController } from '../../../selection/controllers/useSelectionController.js';
7
7
  import { useGridInstance } from '../../hooks/useGridInstance.js';
8
8
  import { getGridStyles } from './styles.js';
@@ -34,19 +34,16 @@ const AgGrid = () => {
34
34
  const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues(grid.state);
35
35
  //this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013
36
36
  const [records] = useDebounce(grid.records, 0);
37
+ const userChangedColumnSizeRef = useRef(false);
37
38
  const debouncedRefresh = useDebouncedCallback(() => {
38
39
  gridApiRef.current?.refreshCells({
39
40
  rowNodes: gridApiRef.current?.getRenderedNodes(),
40
41
  force: true
41
42
  });
42
- sizeColumnsIfSpaceAvailable();
43
- gridApiRef.current?.refreshHeader();
43
+ grid.refreshGlobalCheckBox();
44
44
  agGrid.selectRows();
45
45
  }, 0);
46
46
  debouncedRefresh();
47
- useEffect(() => {
48
- agGrid.selectRows();
49
- }, [records]);
50
47
  const onGridReady = () => {
51
48
  agGridReadyRef.current = true;
52
49
  setDefaultStateValues({
@@ -63,7 +60,8 @@ const AgGrid = () => {
63
60
  return rootWrapper?.clientWidth ?? 0;
64
61
  };
65
62
  const sizeColumnsIfSpaceAvailable = () => {
66
- if (!gridApiRef.current) {
63
+ //do not autosize if user manually adjusted the column width
64
+ if (!gridApiRef.current || userChangedColumnSizeRef.current) {
67
65
  return;
68
66
  }
69
67
  const availableWidth = getAvailableWidth();
@@ -160,6 +158,7 @@ const AgGrid = () => {
160
158
  columns[i].visualSizeFactor = e.column?.getActualWidth();
161
159
  }
162
160
  }
161
+ userChangedColumnSizeRef.current = true;
163
162
  grid.dataset.setColumns?.(columns);
164
163
  gridApiRef.current?.resetRowHeights();
165
164
  grid.pcfContext.factory.requestRender();
@@ -185,6 +184,15 @@ const AgGrid = () => {
185
184
  grid.pcfContext.mode.setControlState(getNewStateValues());
186
185
  };
187
186
  }, []);
187
+ useEffect(() => {
188
+ agGrid.selectRows();
189
+ }, [records]);
190
+ useEffect(() => {
191
+ //need to wait for next tick so ag grid has the columns ready
192
+ setTimeout(() => {
193
+ sizeColumnsIfSpaceAvailable();
194
+ }, 0);
195
+ }, [columns]);
188
196
  return (jsx("div", { ref: containerRef, className: `${styles.root} ag-theme-balham`, children: agColumns.length > 0 &&
189
197
  jsxs(Fragment, { children: [grid.isEditable && grid.dataset.isDirty?.() &&
190
198
  jsx(Save, {}), grid.error &&
@@ -1 +1 @@
1
- {"version":3,"file":"AgGrid.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/AgGrid.tsx"],"sourcesContent":["import { AgGridReact } from '@ag-grid-community/react';\nimport { MessageBar, MessageBarType, useTheme } from \"@fluentui/react\";\nimport { ColDef, ColumnMovedEvent, ColumnResizedEvent, GridApi, GridState, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useSelectionController } from \"../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { getGridStyles } from \"./styles\";\nimport { Paging } from \"../../../paging/components/Paging/Paging\";\nimport { EmptyRecords } from \"./components/EmptyRecordsOverlay/EmptyRecords\";\nimport { Save } from \"../Save/Save\";\nimport { LoadingOverlay } from \"./components/LoadingOverlay/LoadingOverlay\";\nimport { IRecord } from '@talxis/client-libraries';\nimport { CHECKBOX_COLUMN_KEY } from '../../../constants';\nimport { useDebounce, useDebouncedCallback } from 'use-debounce';\nimport { useGridController } from '../../controllers/useGridController';\nimport { useStateValues } from '@talxis/react-components';\nimport { AgGrid as AgGridModel } from './model/AgGrid';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nModuleRegistry.registerModules([ClientSideRowModelModule]);\n\nexport const AgGrid = () => {\n const grid = useGridInstance();\n const selection = useSelectionController();\n const gridApiRef = useRef<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord>>();\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useTheme();\n const styles = getGridStyles(theme, grid.height);\n const agGridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGridModel(grid, gridApiRef), [])\n const { columns } = useGridController();\n const [agColumns, setAgColumns] = useState<ColDef[]>([]);\n const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues<GridState>(grid.state as GridState);\n //this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013\n const [records] = useDebounce(grid.records, 0);\n\n const debouncedRefresh = useDebouncedCallback(() => {\n gridApiRef.current?.refreshCells({\n rowNodes: gridApiRef.current?.getRenderedNodes(),\n force: true\n });\n sizeColumnsIfSpaceAvailable();\n gridApiRef.current?.refreshHeader();\n agGrid.selectRows();\n }, 0);\n\n debouncedRefresh();\n\n useEffect(() => {\n agGrid.selectRows();\n }, [records]);\n\n\n const onGridReady = () => {\n agGridReadyRef.current = true;\n setDefaultStateValues({\n scroll: {\n top: 0,\n left: 0\n },\n ...gridApiRef.current!.getState(),\n });\n agGrid.selectRows();\n }\n\n const getAvailableWidth = () => {\n const rootWrapper = containerRef.current?.querySelector('.ag-root-wrapper');\n return rootWrapper?.clientWidth ?? 0;\n }\n\n const sizeColumnsIfSpaceAvailable = () => {\n if(!gridApiRef.current) {\n return;\n }\n const availableWidth = getAvailableWidth();\n if (availableWidth > agGrid.getTotalColumnsWidth()) {\n gridApiRef.current!.sizeColumnsToFit();\n }\n }\n\n const updateColumnOrder = async (e: ColumnMovedEvent<IRecord, any>) => {\n if (e.type === 'gridOptionsChanged') {\n return;\n }\n const sortedIds = e.api.getState().columnOrder?.orderedColIds;\n if (!sortedIds) {\n return;\n }\n const idIndexMap = new Map<string, number>();\n sortedIds.forEach((id, index) => {\n idIndexMap.set(id, index);\n });\n\n const orderedColumns = [...grid.dataset.columns].sort((a, b) => {\n const aIndex = idIndexMap.has(a.name) ? idIndexMap.get(a.name)! : sortedIds.length;\n const bIndex = idIndexMap.has(b.name) ? idIndexMap.get(b.name)! : sortedIds.length;\n return aIndex - bIndex;\n });\n grid.dataset.setColumns?.(orderedColumns);\n grid.pcfContext.factory.requestRender()\n }\n\n const globalClickHandler = useCallback((e: MouseEvent) => {\n const hasAncestorWithClass = (element: HTMLElement, className: string): boolean => {\n let parent = element;\n while (!parent.classList.contains('ag-theme-balham')) {\n if (parent.classList.contains(className)) {\n return true;\n }\n if (parent.tagName === 'HTML') {\n return false;\n }\n parent = parent.parentElement!;\n if (!parent) {\n return true;\n }\n }\n return false;\n };\n try {\n if (!hasAncestorWithClass(e.target as HTMLElement, 'ag-cell')) {\n gridApiRef.current?.stopEditing();\n }\n }\n catch (err) {\n }\n }, []);\n\n const copyCellValue = useCallback((event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {\n const cell = gridApiRef.current?.getFocusedCell();\n if (!cell) {\n return;\n }\n const row = gridApiRef.current?.getDisplayedRowAtIndex(cell.rowIndex);\n const formattedValue = gridApiRef.current?.getCellValue({\n rowNode: row!,\n colKey: cell.column.getColId(),\n useFormatter: true\n })\n navigator.clipboard.writeText(formattedValue ?? \"\");\n }\n }, []);\n\n const toggleOverlay = () => {\n if (!gridApiRef.current) {\n return;\n }\n if (grid.loading) {\n gridApiRef.current.showLoadingOverlay();\n return;\n }\n gridApiRef.current.hideOverlay();\n setTimeout(() => {\n if (grid.records.length === 0) {\n gridApiRef.current?.showNoRowsOverlay();\n }\n }, 0);\n }\n\n const updateColumnVisualSizeFactor = useDebouncedCallback((e: ColumnResizedEvent<IRecord, any>) => {\n if (e.source !== 'uiColumnResized') {\n return;\n }\n const resizedColumnKey = grid.dataset.columns.find(x => x.name === e.column?.getId())?.name;\n if (!resizedColumnKey) {\n return;\n }\n const columns = grid.dataset.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].name === resizedColumnKey) {\n columns[i].visualSizeFactor = e.column?.getActualWidth()!\n }\n }\n grid.dataset.setColumns?.(columns);\n gridApiRef.current?.resetRowHeights();\n grid.pcfContext.factory.requestRender()\n }, 200);\n\n //TODO: find a better way to achieve this\n useEffect(() => {\n document.addEventListener('click', globalClickHandler)\n return () => {\n document.removeEventListener('click', globalClickHandler);\n }\n }, []);\n\n useEffect(() => {\n setAgColumns(agGrid.columns);\n }, [columns]);\n\n useEffect(() => {\n toggleOverlay();\n gridApiRef.current?.ensureIndexVisible(0)\n }, [grid.loading]);\n\n\n useEffect(() => {\n //this can be replaced with native functionality if we decide to use ag grid enterprise\n grid.keyHoldListener.addOnKeyDownHandler((event) => copyCellValue(event));\n return () => {\n grid.pcfContext.mode.setControlState(getNewStateValues());\n }\n }, []);\n\n\n return (\n <div\n ref={containerRef}\n className={`${styles.root} ag-theme-balham`}\n >\n {agColumns.length > 0 &&\n <>\n {grid.isEditable && grid.dataset.isDirty?.() &&\n <Save />\n }\n {grid.error &&\n <MessageBar messageBarType={MessageBarType.error}>\n <span dangerouslySetInnerHTML={{\n __html: grid.errorMessage!\n }} />\n </MessageBar>\n }\n <AgGridReact\n animateRows\n rowSelection={grid.selection.type}\n noRowsOverlayComponent={Object.keys(grid.dataset.sortedRecordIds.length === 0) && !grid.loading ? EmptyRecords : undefined}\n loadingOverlayComponent={grid.loading ? LoadingOverlay : undefined}\n suppressDragLeaveHidesColumns\n onColumnResized={(e) => updateColumnVisualSizeFactor(e)}\n onColumnMoved={(e) => {\n if (e.finished) {\n updateColumnOrder(e);\n }\n }}\n reactiveCustomComponents\n onRowSelected={(e) => {\n //prevent infinite loop since we are also setting the rows\n //when the selection comes from above\n if (e.source.includes('api') || e.source === 'gridInitializing') {\n return;\n }\n selection.toggle(e.data!, e.node.isSelected()!)\n }}\n onCellDoubleClicked={(e) => {\n if (grid.isNavigationEnabled && !grid.isEditable) {\n grid.openDatasetItem(e.data!.getNamedReference())\n }\n }}\n onCellMouseOver={(e) => {\n if (e.colDef.colId === CHECKBOX_COLUMN_KEY) {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', true)\n }\n }}\n onCellMouseOut={(e) => {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', false)\n }}\n getRowId={(params) => params.data.getRecordId()}\n onGridReady={(e) => {\n gridApiRef.current = e.api as any;\n if (grid.loading) {\n gridApiRef.current?.showLoadingOverlay();\n }\n sizeColumnsIfSpaceAvailable()\n onGridReady();\n }}\n initialState={stateValuesRef.current}\n onStateUpdated={(e) => stateValuesRef.current = {\n ...stateValuesRef.current,\n ...e.state\n }}\n suppressAnimationFrame\n columnDefs={agColumns as any}\n rowData={records}\n getRowHeight={(params) => {\n const columnWidths: { [name: string]: number } = {};\n params.api.getAllGridColumns().map(col => {\n columnWidths[col.getColId()] = col.getActualWidth()\n })\n return params?.data?.ui?.getHeight(columnWidths, grid.rowHeight)\n }}\n\n >\n </AgGridReact>\n {grid.paging.isEnabled &&\n <Paging />\n }\n </>\n }\n </div>\n );\n}"],"names":["AgGridModel","_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"AgGrid.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/AgGrid.tsx"],"sourcesContent":["import { AgGridReact } from '@ag-grid-community/react';\nimport { MessageBar, MessageBarType, useTheme } from \"@fluentui/react\";\nimport { ColDef, ColumnMovedEvent, ColumnResizedEvent, GridApi, GridState, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useSelectionController } from \"../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { getGridStyles } from \"./styles\";\nimport { Paging } from \"../../../paging/components/Paging/Paging\";\nimport { EmptyRecords } from \"./components/EmptyRecordsOverlay/EmptyRecords\";\nimport { Save } from \"../Save/Save\";\nimport { LoadingOverlay } from \"./components/LoadingOverlay/LoadingOverlay\";\nimport { IRecord } from '@talxis/client-libraries';\nimport { CHECKBOX_COLUMN_KEY } from '../../../constants';\nimport { useDebounce, useDebouncedCallback } from 'use-debounce';\nimport { useGridController } from '../../controllers/useGridController';\nimport { useStateValues } from '@talxis/react-components';\nimport { AgGrid as AgGridModel } from './model/AgGrid';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nModuleRegistry.registerModules([ClientSideRowModelModule]);\n\nexport const AgGrid = () => {\n const grid = useGridInstance();\n const selection = useSelectionController();\n const gridApiRef = useRef<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord>>();\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useTheme();\n const styles = getGridStyles(theme, grid.height);\n const agGridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGridModel(grid, gridApiRef), [])\n const { columns } = useGridController();\n const [agColumns, setAgColumns] = useState<ColDef[]>([]);\n const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues<GridState>(grid.state as GridState);\n //this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013\n const [records] = useDebounce(grid.records, 0);\n const userChangedColumnSizeRef = useRef(false);\n\n const debouncedRefresh = useDebouncedCallback(() => {\n gridApiRef.current?.refreshCells({\n rowNodes: gridApiRef.current?.getRenderedNodes(),\n force: true\n });\n grid.refreshGlobalCheckBox();\n agGrid.selectRows();\n }, 0);\n\n debouncedRefresh();\n\n const onGridReady = () => {\n agGridReadyRef.current = true;\n setDefaultStateValues({\n scroll: {\n top: 0,\n left: 0\n },\n ...gridApiRef.current!.getState(),\n });\n agGrid.selectRows();\n }\n\n\n const getAvailableWidth = () => {\n const rootWrapper = containerRef.current?.querySelector('.ag-root-wrapper');\n return rootWrapper?.clientWidth ?? 0;\n }\n\n const sizeColumnsIfSpaceAvailable = () => {\n //do not autosize if user manually adjusted the column width\n if(!gridApiRef.current || userChangedColumnSizeRef.current) {\n return;\n }\n const availableWidth = getAvailableWidth();\n if (availableWidth > agGrid.getTotalColumnsWidth()) {\n gridApiRef.current!.sizeColumnsToFit();\n }\n }\n\n const updateColumnOrder = async (e: ColumnMovedEvent<IRecord, any>) => {\n if (e.type === 'gridOptionsChanged') {\n return;\n }\n const sortedIds = e.api.getState().columnOrder?.orderedColIds;\n if (!sortedIds) {\n return;\n }\n const idIndexMap = new Map<string, number>();\n sortedIds.forEach((id, index) => {\n idIndexMap.set(id, index);\n });\n\n const orderedColumns = [...grid.dataset.columns].sort((a, b) => {\n const aIndex = idIndexMap.has(a.name) ? idIndexMap.get(a.name)! : sortedIds.length;\n const bIndex = idIndexMap.has(b.name) ? idIndexMap.get(b.name)! : sortedIds.length;\n return aIndex - bIndex;\n });\n grid.dataset.setColumns?.(orderedColumns);\n grid.pcfContext.factory.requestRender()\n }\n\n const globalClickHandler = useCallback((e: MouseEvent) => {\n const hasAncestorWithClass = (element: HTMLElement, className: string): boolean => {\n let parent = element;\n while (!parent.classList.contains('ag-theme-balham')) {\n if (parent.classList.contains(className)) {\n return true;\n }\n if (parent.tagName === 'HTML') {\n return false;\n }\n parent = parent.parentElement!;\n if (!parent) {\n return true;\n }\n }\n return false;\n };\n try {\n if (!hasAncestorWithClass(e.target as HTMLElement, 'ag-cell')) {\n gridApiRef.current?.stopEditing();\n }\n }\n catch (err) {\n }\n }, []);\n\n const copyCellValue = useCallback((event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {\n const cell = gridApiRef.current?.getFocusedCell();\n if (!cell) {\n return;\n }\n const row = gridApiRef.current?.getDisplayedRowAtIndex(cell.rowIndex);\n const formattedValue = gridApiRef.current?.getCellValue({\n rowNode: row!,\n colKey: cell.column.getColId(),\n useFormatter: true\n })\n navigator.clipboard.writeText(formattedValue ?? \"\");\n }\n }, []);\n\n const toggleOverlay = () => {\n if (!gridApiRef.current) {\n return;\n }\n if (grid.loading) {\n gridApiRef.current.showLoadingOverlay();\n return;\n }\n gridApiRef.current.hideOverlay();\n setTimeout(() => {\n if (grid.records.length === 0) {\n gridApiRef.current?.showNoRowsOverlay();\n }\n }, 0);\n }\n\n const updateColumnVisualSizeFactor = useDebouncedCallback((e: ColumnResizedEvent<IRecord, any>) => {\n if (e.source !== 'uiColumnResized') {\n return;\n }\n const resizedColumnKey = grid.dataset.columns.find(x => x.name === e.column?.getId())?.name;\n if (!resizedColumnKey) {\n return;\n }\n const columns = grid.dataset.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].name === resizedColumnKey) {\n columns[i].visualSizeFactor = e.column?.getActualWidth()!\n }\n }\n userChangedColumnSizeRef.current = true;\n grid.dataset.setColumns?.(columns);\n gridApiRef.current?.resetRowHeights();\n grid.pcfContext.factory.requestRender()\n }, 200);\n\n //TODO: find a better way to achieve this\n useEffect(() => {\n document.addEventListener('click', globalClickHandler)\n return () => {\n document.removeEventListener('click', globalClickHandler);\n }\n }, []);\n\n useEffect(() => {\n setAgColumns(agGrid.columns);\n }, [columns]);\n\n useEffect(() => {\n toggleOverlay();\n gridApiRef.current?.ensureIndexVisible(0)\n }, [grid.loading]);\n\n\n useEffect(() => {\n //this can be replaced with native functionality if we decide to use ag grid enterprise\n grid.keyHoldListener.addOnKeyDownHandler((event) => copyCellValue(event));\n return () => {\n grid.pcfContext.mode.setControlState(getNewStateValues());\n }\n }, []);\n\n useEffect(() => {\n agGrid.selectRows();\n }, [records]);\n\n useEffect(() => {\n //need to wait for next tick so ag grid has the columns ready\n setTimeout(() => {\n sizeColumnsIfSpaceAvailable();\n }, 0)\n }, [columns]);\n\n\n return (\n <div\n ref={containerRef}\n className={`${styles.root} ag-theme-balham`}\n >\n {agColumns.length > 0 &&\n <>\n {grid.isEditable && grid.dataset.isDirty?.() &&\n <Save />\n }\n {grid.error &&\n <MessageBar messageBarType={MessageBarType.error}>\n <span dangerouslySetInnerHTML={{\n __html: grid.errorMessage!\n }} />\n </MessageBar>\n }\n <AgGridReact\n animateRows\n rowSelection={grid.selection.type}\n noRowsOverlayComponent={Object.keys(grid.dataset.sortedRecordIds.length === 0) && !grid.loading ? EmptyRecords : undefined}\n loadingOverlayComponent={grid.loading ? LoadingOverlay : undefined}\n suppressDragLeaveHidesColumns\n onColumnResized={(e) => updateColumnVisualSizeFactor(e)}\n onColumnMoved={(e) => {\n if (e.finished) {\n updateColumnOrder(e);\n }\n }}\n reactiveCustomComponents\n onRowSelected={(e) => {\n //prevent infinite loop since we are also setting the rows\n //when the selection comes from above\n if (e.source.includes('api') || e.source === 'gridInitializing') {\n return;\n }\n selection.toggle(e.data!, e.node.isSelected()!)\n }}\n onCellDoubleClicked={(e) => {\n if (grid.isNavigationEnabled && !grid.isEditable) {\n grid.openDatasetItem(e.data!.getNamedReference())\n }\n }}\n onCellMouseOver={(e) => {\n if (e.colDef.colId === CHECKBOX_COLUMN_KEY) {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', true)\n }\n }}\n onCellMouseOut={(e) => {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', false)\n }}\n getRowId={(params) => params.data.getRecordId()}\n onGridReady={(e) => {\n gridApiRef.current = e.api as any;\n if (grid.loading) {\n gridApiRef.current?.showLoadingOverlay();\n }\n sizeColumnsIfSpaceAvailable();\n onGridReady();\n }}\n initialState={stateValuesRef.current}\n onStateUpdated={(e) => stateValuesRef.current = {\n ...stateValuesRef.current,\n ...e.state\n }}\n suppressAnimationFrame\n columnDefs={agColumns as any}\n rowData={records}\n getRowHeight={(params) => {\n const columnWidths: { [name: string]: number } = {};\n params.api.getAllGridColumns().map(col => {\n columnWidths[col.getColId()] = col.getActualWidth()\n })\n return params?.data?.ui?.getHeight(columnWidths, grid.rowHeight)\n }}\n\n >\n </AgGridReact>\n {grid.paging.isEnabled &&\n <Paging />\n }\n </>\n }\n </div>\n );\n}"],"names":["AgGridModel","_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,cAAc,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAEpD,MAAM,MAAM,GAAG,MAAK;AACvB,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;AAC3C,IAAA,MAAM,UAAU,GAAG,MAAM,EAAsE,CAAC;AAChG,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC9C,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAIA,QAAW,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;AACnE,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;AACzD,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,GAAG,cAAc,CAAY,IAAI,CAAC,KAAkB,CAAC,CAAC;;AAEtH,IAAA,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/C,IAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE/C,IAAA,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAK;AAC/C,QAAA,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;AAC7B,YAAA,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE;AAChD,YAAA,KAAK,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,CAAC,UAAU,EAAE,CAAC;KACvB,EAAE,CAAC,CAAC,CAAC;AAEN,IAAA,gBAAgB,EAAE,CAAC;IAEnB,MAAM,WAAW,GAAG,MAAK;AACrB,QAAA,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,QAAA,qBAAqB,CAAC;AAClB,YAAA,MAAM,EAAE;AACJ,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,IAAI,EAAE,CAAC;AACV,aAAA;AACD,YAAA,GAAG,UAAU,CAAC,OAAQ,CAAC,QAAQ,EAAE;AACpC,SAAA,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,KAAC,CAAA;IAGD,MAAM,iBAAiB,GAAG,MAAK;QAC3B,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAC5E,QAAA,OAAO,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC;AACzC,KAAC,CAAA;IAED,MAAM,2BAA2B,GAAG,MAAK;;QAErC,IAAG,CAAC,UAAU,CAAC,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE;YACxD,OAAO;AACV,SAAA;AACD,QAAA,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;AAC3C,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE;AAChD,YAAA,UAAU,CAAC,OAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC1C,SAAA;AACL,KAAC,CAAA;AAED,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAiC,KAAI;AAClE,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,EAAE;YACjC,OAAO;AACV,SAAA;AACD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QAC9D,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACV,SAAA;AACD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;AAC5B,YAAA,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,GAAG,SAAS,CAAC,MAAM,CAAC;YACnF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,GAAG,SAAS,CAAC,MAAM,CAAC;YACnF,OAAO,MAAM,GAAG,MAAM,CAAC;AAC3B,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;AAC3C,KAAC,CAAA;AAED,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAa,KAAI;AACrD,QAAA,MAAM,oBAAoB,GAAG,CAAC,OAAoB,EAAE,SAAiB,KAAa;YAC9E,IAAI,MAAM,GAAG,OAAO,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBAClD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACtC,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AACD,gBAAA,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE;AAC3B,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AACD,gBAAA,MAAM,GAAG,MAAM,CAAC,aAAc,CAAC;gBAC/B,IAAI,CAAC,MAAM,EAAE;AACT,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC;QACF,IAAI;YACA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAqB,EAAE,SAAS,CAAC,EAAE;AAC3D,gBAAA,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;AACrC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,EAAE;AACX,SAAA;KACJ,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAoB,KAAI;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE;YACrE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO;AACV,aAAA;AACD,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtE,YAAA,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;AACpD,gBAAA,OAAO,EAAE,GAAI;AACb,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9B,gBAAA,YAAY,EAAE,IAAI;AACrB,aAAA,CAAC,CAAA;YACF,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;AACvD,SAAA;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,MAAK;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACrB,OAAO;AACV,SAAA;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACxC,OAAO;AACV,SAAA;AACD,QAAA,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,gBAAA,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC3C,aAAA;SACJ,EAAE,CAAC,CAAC,CAAC;AACV,KAAC,CAAA;AAED,IAAA,MAAM,4BAA4B,GAAG,oBAAoB,CAAC,CAAC,CAAmC,KAAI;AAC9F,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,EAAE;YAChC,OAAO;AACV,SAAA;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;QAC5F,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO;AACV,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACtC,gBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAG,CAAA;AAC5D,aAAA;AACJ,SAAA;AACD,QAAA,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;AACnC,QAAA,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;KAC1C,EAAE,GAAG,CAAC,CAAC;;IAGR,SAAS,CAAC,MAAK;AACX,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;AACtD,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC9D,SAAC,CAAA;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;AACX,QAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,MAAK;AACX,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;AAC7C,KAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAGnB,SAAS,CAAC,MAAK;;AAEX,QAAA,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,QAAA,OAAO,MAAK;YACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC9D,SAAC,CAAA;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;QACX,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,MAAK;;QAEX,UAAU,CAAC,MAAK;AACZ,YAAA,2BAA2B,EAAE,CAAC;SACjC,EAAE,CAAC,CAAC,CAAA;AACT,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAGd,IAAA,QACIC,GACI,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,CAAA,EAAG,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAA,QAAA,EAE1C,SAAS,CAAC,MAAM,GAAG,CAAC;YACjBC,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI;AACxC,wBAAAF,GAAA,CAAC,IAAI,EAAA,EAAA,CAAG,EAEX,IAAI,CAAC,KAAK;wBACPA,GAAC,CAAA,UAAU,EAAC,EAAA,cAAc,EAAE,cAAc,CAAC,KAAK,EAAA,QAAA,EAC5CA,GAAM,CAAA,MAAA,EAAA,EAAA,uBAAuB,EAAE;oCAC3B,MAAM,EAAE,IAAI,CAAC,YAAa;AAC7B,iCAAA,EAAA,CAAI,GACI,EAEjBA,GAAA,CAAC,WAAW,EAAA,EACR,WAAW,EACX,IAAA,EAAA,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EACjC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,GAAG,SAAS,EAC1H,uBAAuB,EAAE,IAAI,CAAC,OAAO,GAAG,cAAc,GAAG,SAAS,EAClE,6BAA6B,EAAA,IAAA,EAC7B,eAAe,EAAE,CAAC,CAAC,KAAK,4BAA4B,CAAC,CAAC,CAAC,EACvD,aAAa,EAAE,CAAC,CAAC,KAAI;4BACjB,IAAI,CAAC,CAAC,QAAQ,EAAE;gCACZ,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxB,6BAAA;yBACJ,EACD,wBAAwB,EACxB,IAAA,EAAA,aAAa,EAAE,CAAC,CAAC,KAAI;;;AAGjB,4BAAA,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,EAAE;gCAC7D,OAAO;AACV,6BAAA;AACD,4BAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAG,CAAC,CAAA;AACnD,yBAAC,EACD,mBAAmB,EAAE,CAAC,CAAC,KAAI;4BACvB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gCAC9C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACpD,6BAAA;AACL,yBAAC,EACD,eAAe,EAAE,CAAC,CAAC,KAAI;AACnB,4BAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,mBAAmB,EAAE;gCACxC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAA;AACvE,6BAAA;AACL,yBAAC,EACD,cAAc,EAAE,CAAC,CAAC,KAAI;4BAClB,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;yBACxE,EACD,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAC/C,WAAW,EAAE,CAAC,CAAC,KAAI;AACf,4BAAA,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,GAAU,CAAC;4BAClC,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gCAAA,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC5C,6BAAA;AACD,4BAAA,2BAA2B,EAAE,CAAC;AAC9B,4BAAA,WAAW,EAAE,CAAC;AAClB,yBAAC,EACD,YAAY,EAAE,cAAc,CAAC,OAAO,EACpC,cAAc,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO,GAAG;4BAC5C,GAAG,cAAc,CAAC,OAAO;4BACzB,GAAG,CAAC,CAAC,KAAK;AACb,yBAAA,EACD,sBAAsB,EAAA,IAAA,EACtB,UAAU,EAAE,SAAgB,EAC5B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,MAAM,KAAI;4BACrB,MAAM,YAAY,GAA+B,EAAE,CAAC;4BACpD,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;gCACrC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAA;AACvD,6BAAC,CAAC,CAAA;AACF,4BAAA,OAAO,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;AACpE,yBAAC,GAGS,EACb,IAAI,CAAC,MAAM,CAAC,SAAS;AAClB,wBAAAA,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,CAEf,EAAA,CAAA,EAAA,CAEL,EACR;AACN;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useTheme, Checkbox } from '@fluentui/react';
3
+ import { useState, useMemo } from 'react';
3
4
  import { useSelectionController } from '../../../../../selection/controllers/useSelectionController.js';
4
5
  import { useGridInstance } from '../../../../hooks/useGridInstance.js';
5
6
  import { getGlobalCheckboxStyles } from './styles.js';
@@ -9,6 +10,11 @@ const GlobalCheckBox = () => {
9
10
  const theme = useTheme();
10
11
  const styles = getGlobalCheckboxStyles(theme);
11
12
  const selection = useSelectionController();
13
+ //TODO: why does useRerender not work?
14
+ const [_, rerender] = useState(0);
15
+ useMemo(() => {
16
+ grid.setRefreshGlobalCheckBox(() => rerender((previous) => previous + 1));
17
+ }, []);
12
18
  if (grid.dataset.sortedRecordIds.length === 0) {
13
19
  return jsx(Fragment, {});
14
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalCheckbox.js","sources":["../../../../../../../../src/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.tsx"],"sourcesContent":["import { Checkbox, useTheme } from \"@fluentui/react\";\nimport React from \"react\";\nimport { useSelectionController } from \"../../../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../../../hooks/useGridInstance\";\nimport { getGlobalCheckboxStyles } from \"./styles\";\n\nexport const GlobalCheckBox = () => {\n const grid = useGridInstance();\n const theme = useTheme();\n const styles = getGlobalCheckboxStyles(theme);\n const selection = useSelectionController();\n if(grid.dataset.sortedRecordIds.length === 0) {\n return <></>\n }\n return (\n <div className={styles.root}>\n {selection.type === 'multiple' &&\n <Checkbox\n checked={selection.allRecordsSelected}\n indeterminate={selection.selectedRecordIds.length > 0 && !selection.allRecordsSelected}\n onChange={(e, checked) => {\n if(checked) {\n selection.selectAll()\n return;\n }\n selection.clear();\n }} />\n }\n </div>\n )\n};"],"names":["_jsx"],"mappings":";;;;;;AAMO,MAAM,cAAc,GAAG,MAAK;AAC/B,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,IAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,QAAA,OAAOA,iBAAK,CAAA;AACf,KAAA;AACD,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EACtB,SAAS,CAAC,IAAI,KAAK,UAAU;AAC1B,YAAAA,GAAA,CAAC,QAAQ,EAAA,EACL,OAAO,EAAE,SAAS,CAAC,kBAAkB,EACrC,aAAa,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtF,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACrB,oBAAA,IAAG,OAAO,EAAE;wBACR,SAAS,CAAC,SAAS,EAAE,CAAA;wBACrB,OAAO;AACV,qBAAA;oBACD,SAAS,CAAC,KAAK,EAAE,CAAC;iBACrB,EAAA,CAAI,EAEX,CAAA,EACT;AACL;;;;"}
1
+ {"version":3,"file":"GlobalCheckbox.js","sources":["../../../../../../../../src/components/Grid/core/components/ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.tsx"],"sourcesContent":["import { Checkbox, useTheme } from \"@fluentui/react\";\nimport React, { useMemo, useState } from \"react\";\nimport { useSelectionController } from \"../../../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../../../hooks/useGridInstance\";\nimport { getGlobalCheckboxStyles } from \"./styles\";\nimport { useRerender } from \"../../../../../../../hooks/useRerender\";\n\nexport const GlobalCheckBox = () => {\n const grid = useGridInstance();\n const theme = useTheme();\n const styles = getGlobalCheckboxStyles(theme);\n const selection = useSelectionController();\n //TODO: why does useRerender not work?\n const [_, rerender] = useState(0)\n\n useMemo(() => {\n grid.setRefreshGlobalCheckBox(() => rerender((previous) => previous + 1))\n }, []);\n\n if(grid.dataset.sortedRecordIds.length === 0) {\n return <></>\n }\n return (\n <div className={styles.root}>\n {selection.type === 'multiple' &&\n <Checkbox\n checked={selection.allRecordsSelected}\n indeterminate={selection.selectedRecordIds.length > 0 && !selection.allRecordsSelected}\n onChange={(e, checked) => {\n if(checked) {\n selection.selectAll()\n return;\n }\n selection.clear();\n }} />\n }\n </div>\n )\n};"],"names":["_jsx"],"mappings":";;;;;;;AAOO,MAAM,cAAc,GAAG,MAAK;AAC/B,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;;IAE3C,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEjC,OAAO,CAAC,MAAK;AACT,QAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,QAAQ,CAAC,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;KAC5E,EAAE,EAAE,CAAC,CAAC;IAEP,IAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,QAAA,OAAOA,iBAAK,CAAA;AACf,KAAA;AACD,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EACtB,SAAS,CAAC,IAAI,KAAK,UAAU;AAC1B,YAAAA,GAAA,CAAC,QAAQ,EAAA,EACL,OAAO,EAAE,SAAS,CAAC,kBAAkB,EACrC,aAAa,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtF,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACrB,oBAAA,IAAG,OAAO,EAAE;wBACR,SAAS,CAAC,SAAS,EAAE,CAAA;wBACrB,OAAO;AACV,qBAAA;oBACD,SAAS,CAAC,KAAK,EAAE,CAAC;iBACrB,EAAA,CAAI,EAEX,CAAA,EACT;AACL;;;;"}
@@ -21,6 +21,7 @@ export declare class Grid {
21
21
  private _maxHeight;
22
22
  private _minHeight;
23
23
  private _initialPageSize;
24
+ private _refreshGlobalCheckBox;
24
25
  readonly keyHoldListener: KeyHoldListener;
25
26
  constructor(props: IGrid, labels: any, keyHoldListener: KeyHoldListener);
26
27
  get isNavigationEnabled(): boolean;
@@ -51,6 +52,8 @@ export declare class Grid {
51
52
  openDatasetItem(entityReference: ComponentFramework.EntityReference): void;
52
53
  updateDependencies(props: IGrid): void;
53
54
  refreshColumns(): Promise<IGridColumn[]>;
55
+ setRefreshGlobalCheckBox(refreshGlobalCheckBox: () => void): void;
56
+ refreshGlobalCheckBox(): void;
54
57
  private _isColumnEditable;
55
58
  private _isColumnRequired;
56
59
  private _isColumnSortable;
@@ -16,6 +16,8 @@ class Grid {
16
16
  this._shouldRerender = false;
17
17
  this._records = [];
18
18
  this._minHeight = 150;
19
+ //this is temp, should be moved to AgGrid class, useAgGridInstance should also be created, similar to useGridInstance
20
+ this._refreshGlobalCheckBox = () => { };
19
21
  this._props = props;
20
22
  this._dataset = props.parameters.Grid;
21
23
  this._pcfContext = props.context;
@@ -193,6 +195,12 @@ class Grid {
193
195
  this._columns = gridColumns;
194
196
  return gridColumns;
195
197
  }
198
+ setRefreshGlobalCheckBox(refreshGlobalCheckBox) {
199
+ this._refreshGlobalCheckBox = refreshGlobalCheckBox;
200
+ }
201
+ refreshGlobalCheckBox() {
202
+ this._refreshGlobalCheckBox();
203
+ }
196
204
  async _isColumnEditable(column) {
197
205
  //only allow editing if specifically allowed
198
206
  if (!this._props.parameters.EnableEditing?.raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.js","sources":["../../../../../src/components/Grid/core/model/Grid.ts"],"sourcesContent":["import { Attribute, Constants, DataTypes, IColumn, IDataset, IRecord } from \"@talxis/client-libraries\";\nimport { Filtering } from \"../../filtering/model/Filtering\";\nimport { IGrid } from \"../../interfaces\";\nimport { Paging } from \"../../paging/model/Paging\";\nimport { Selection } from \"../../selection/model/Selection\";\nimport { Sorting } from \"../../sorting/Sorting\";\nimport { DataType } from \"../enums/DataType\";\nimport { KeyHoldListener } from \"../services/KeyListener\";\nimport { Metadata } from \"./Metadata\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../constants\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\nexport class Grid {\n private _props: IGrid;\n private _dataset: IDataset\n private _pcfContext: ComponentFramework.Context<any>;\n private _columns: IGridColumn[] = [];\n //used for optimization\n private _previousRecordsReference: {\n [id: string]: IRecord;\n } = {};\n //TODO: fix types\n private _labels: any;\n private _shouldRerender: boolean = false;\n private _records: IRecord[] = [];\n //TODO: the dependencies might not have fully loaded grid\n //need to make sure that the grid is initialized before creating them\n private _dependencies: {\n filtering: Filtering,\n sorting: Sorting,\n metadata: Metadata,\n selection: Selection,\n paging: Paging,\n };\n private _maxHeight: number;\n private _minHeight: number = 150;\n private _initialPageSize: number;\n public readonly keyHoldListener: KeyHoldListener;\n\n constructor(props: IGrid, labels: any, keyHoldListener: KeyHoldListener) {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n this._labels = labels;\n this.keyHoldListener = keyHoldListener;\n\n this._dependencies = {\n filtering: new Filtering(this),\n selection: new Selection(this),\n metadata: new Metadata(this),\n sorting: new Sorting(this),\n paging: new Paging(this),\n }\n this._initialPageSize = this.paging.pageSize;\n this._maxHeight = this._getMaxHeight();\n\n };\n public get isNavigationEnabled() {\n //enabled by default\n return this.parameters.EnableNavigation?.raw !== false;\n }\n public get isEditable() {\n return this._columns.find(x => x.isEditable) ? true : false;\n }\n public get parameters() {\n return this._props.parameters\n }\n public get error() {\n return this._dataset.error;\n }\n public get errorMessage() {\n return this._dataset.errorMessage\n }\n public get labels() {\n return this._labels;\n }\n public get dataset() {\n return this._dataset;\n }\n public get pcfContext() {\n return this._pcfContext;\n }\n public get props() {\n return this._props;\n }\n public get columns() {\n return this._columns;\n }\n public get records() {\n return this._records\n }\n public get sorting() {\n return this._dependencies.sorting;\n }\n public get metadata() {\n return this._dependencies.metadata;\n }\n public get filtering() {\n return this._dependencies.filtering;\n }\n public get selection() {\n return this._dependencies.selection;\n }\n public get paging() {\n return this._dependencies.paging;\n }\n public get shouldRerender() {\n return this._shouldRerender;\n }\n public get loading() {\n return this._dataset.loading;\n }\n public get state() {\n return this._props.state;\n }\n public get useContainerAsHeight() {\n return this.parameters.UseContainerAsHeight?.raw === true;\n }\n public get enableOptionSetColors() {\n return this.parameters.EnableOptionSetColors?.raw === true;\n }\n public get linking() {\n return this.dataset.linking;\n }\n public get inlineRibbonButtonIds() {\n const idString = this.parameters.InlineRibbonButtonIds?.raw;\n if (!idString) {\n return undefined;\n }\n return idString.split(',');\n }\n\n public get rowHeight() {\n let height = this.parameters.RowHeight?.raw;\n if(!height) {\n height = DEFAULT_ROW_HEIGHT;\n }\n return height;\n }\n\n public get height() {\n let height = this._maxHeight;\n if (this.parameters.Height?.raw) {\n return this.parameters.Height?.raw;\n }\n if (this._records.length === 0) {\n height = this._minHeight;\n }\n else if (this._records.length <= this._initialPageSize) {\n height = this._records.length * this.rowHeight;\n }\n if (height > this._maxHeight) {\n height = this._maxHeight;\n }\n return `${height}px`;\n\n }\n\n public openDatasetItem(entityReference: ComponentFramework.EntityReference) {\n this._dataset.openDatasetItem(entityReference);\n const clickedRecord = this.records.find(x => x.getRecordId() === entityReference.id.guid);\n //we need to make sure the item we are opening gets selected in order for the\n //OnOpenRecord ribbon scripts to work correctly\n //if no record found we have clicked a lookup, no selection should be happening in that case\n if (clickedRecord) {\n this.selection.toggle(clickedRecord, true, true, true);\n }\n }\n\n public updateDependencies(props: IGrid): void {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n //THIS COULD MAKE GRID STOP WORKING IN POWER APPS!\n if (this._previousRecordsReference !== this._dataset.records) {\n this._records = Object.values(this._dataset.records);\n this._previousRecordsReference = this._dataset.records;\n }\n Object.values(this._dependencies).map(dep => {\n dep.onDependenciesUpdated()\n })\n this._shouldRerender = !this.shouldRerender;\n }\n public async refreshColumns(): Promise<IGridColumn[]> {\n const gridColumns: IGridColumn[] = [];\n for (const column of this._dataset.columns) {\n const sorted = this._dataset.sorting?.find(sort => sort.name === column.name);\n const gridColumn: IGridColumn = {\n ...column,\n isEditable: await this._isColumnEditable(column),\n isRequired: await this._isColumnRequired(column),\n isFilterable: await this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false,\n isFiltered: false\n }\n const condition = await this.filtering.condition(gridColumn);\n gridColumn.isFiltered = condition.isAppliedToDataset;\n gridColumns.push(gridColumn);\n }\n if (this.selection.type !== undefined) {\n gridColumns.unshift({\n name: CHECKBOX_COLUMN_KEY,\n alias: CHECKBOX_COLUMN_KEY,\n dataType: DataTypes.SingleLineText,\n displayName: '',\n isEditable: true,\n isFilterable: false,\n isFiltered: false,\n isRequired: false,\n isResizable: false,\n disableSorting: true,\n isSorted: false,\n isSortedDescending: false,\n order: 0,\n visualSizeFactor: 45,\n });\n }\n this._columns = gridColumns;\n return gridColumns;\n }\n\n private async _isColumnEditable(column: IColumn): Promise<boolean> {\n //only allow editing if specifically allowed\n if (!this._props.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataType.FILE:\n case DataType.IMAGE: {\n return false;\n }\n }\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const metadata = await this.metadata.get(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.IsValidForUpdate ?? false;\n }\n\n private async _isColumnRequired(column: IColumn): Promise<boolean> {\n if (!this.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const requiredLevel = metadata.Attributes.get(attributeName)?.attributeDescriptor?.RequiredLevel;\n if (requiredLevel === 1 || requiredLevel === 2) {\n return true;\n }\n return false;\n }\n private _isColumnSortable(column: IColumn): boolean {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this._props.parameters.EnableSorting?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n switch (column.dataType) {\n case DataType.IMAGE: {\n return false;\n }\n }\n if(column.disableSorting === undefined) {\n return true;\n }\n return !column.disableSorting;\n }\n private async _isColumnFilterable(column: IColumn): Promise<boolean> {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this.props.parameters.EnableFiltering?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.isFilterable ?? true;\n }\n private _getMaxHeight(): number {\n let maxHeight = this._initialPageSize * this.rowHeight;\n if (maxHeight > 600) {\n maxHeight = 600;\n }\n return maxHeight;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Grid.js","sources":["../../../../../src/components/Grid/core/model/Grid.ts"],"sourcesContent":["import { Attribute, Constants, DataTypes, IColumn, IDataset, IRecord } from \"@talxis/client-libraries\";\nimport { Filtering } from \"../../filtering/model/Filtering\";\nimport { IGrid } from \"../../interfaces\";\nimport { Paging } from \"../../paging/model/Paging\";\nimport { Selection } from \"../../selection/model/Selection\";\nimport { Sorting } from \"../../sorting/Sorting\";\nimport { DataType } from \"../enums/DataType\";\nimport { KeyHoldListener } from \"../services/KeyListener\";\nimport { Metadata } from \"./Metadata\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../constants\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\nexport class Grid {\n private _props: IGrid;\n private _dataset: IDataset\n private _pcfContext: ComponentFramework.Context<any>;\n private _columns: IGridColumn[] = [];\n //used for optimization\n private _previousRecordsReference: {\n [id: string]: IRecord;\n } = {};\n //TODO: fix types\n private _labels: any;\n private _shouldRerender: boolean = false;\n private _records: IRecord[] = [];\n //TODO: the dependencies might not have fully loaded grid\n //need to make sure that the grid is initialized before creating them\n private _dependencies: {\n filtering: Filtering,\n sorting: Sorting,\n metadata: Metadata,\n selection: Selection,\n paging: Paging,\n };\n private _maxHeight: number;\n private _minHeight: number = 150;\n private _initialPageSize: number;\n //this is temp, should be moved to AgGrid class, useAgGridInstance should also be created, similar to useGridInstance\n private _refreshGlobalCheckBox: () => void = () => {};\n public readonly keyHoldListener: KeyHoldListener;\n\n constructor(props: IGrid, labels: any, keyHoldListener: KeyHoldListener) {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n this._labels = labels;\n this.keyHoldListener = keyHoldListener;\n\n this._dependencies = {\n filtering: new Filtering(this),\n selection: new Selection(this),\n metadata: new Metadata(this),\n sorting: new Sorting(this),\n paging: new Paging(this),\n }\n this._initialPageSize = this.paging.pageSize;\n this._maxHeight = this._getMaxHeight();\n\n };\n public get isNavigationEnabled() {\n //enabled by default\n return this.parameters.EnableNavigation?.raw !== false;\n }\n public get isEditable() {\n return this._columns.find(x => x.isEditable) ? true : false;\n }\n public get parameters() {\n return this._props.parameters\n }\n public get error() {\n return this._dataset.error;\n }\n public get errorMessage() {\n return this._dataset.errorMessage\n }\n public get labels() {\n return this._labels;\n }\n public get dataset() {\n return this._dataset;\n }\n public get pcfContext() {\n return this._pcfContext;\n }\n public get props() {\n return this._props;\n }\n public get columns() {\n return this._columns;\n }\n public get records() {\n return this._records\n }\n public get sorting() {\n return this._dependencies.sorting;\n }\n public get metadata() {\n return this._dependencies.metadata;\n }\n public get filtering() {\n return this._dependencies.filtering;\n }\n public get selection() {\n return this._dependencies.selection;\n }\n public get paging() {\n return this._dependencies.paging;\n }\n public get shouldRerender() {\n return this._shouldRerender;\n }\n public get loading() {\n return this._dataset.loading;\n }\n public get state() {\n return this._props.state;\n }\n public get useContainerAsHeight() {\n return this.parameters.UseContainerAsHeight?.raw === true;\n }\n public get enableOptionSetColors() {\n return this.parameters.EnableOptionSetColors?.raw === true;\n }\n public get linking() {\n return this.dataset.linking;\n }\n public get inlineRibbonButtonIds() {\n const idString = this.parameters.InlineRibbonButtonIds?.raw;\n if (!idString) {\n return undefined;\n }\n return idString.split(',');\n }\n\n public get rowHeight() {\n let height = this.parameters.RowHeight?.raw;\n if(!height) {\n height = DEFAULT_ROW_HEIGHT;\n }\n return height;\n }\n\n public get height() {\n let height = this._maxHeight;\n if (this.parameters.Height?.raw) {\n return this.parameters.Height?.raw;\n }\n if (this._records.length === 0) {\n height = this._minHeight;\n }\n else if (this._records.length <= this._initialPageSize) {\n height = this._records.length * this.rowHeight;\n }\n if (height > this._maxHeight) {\n height = this._maxHeight;\n }\n return `${height}px`;\n\n }\n\n public openDatasetItem(entityReference: ComponentFramework.EntityReference) {\n this._dataset.openDatasetItem(entityReference);\n const clickedRecord = this.records.find(x => x.getRecordId() === entityReference.id.guid);\n //we need to make sure the item we are opening gets selected in order for the\n //OnOpenRecord ribbon scripts to work correctly\n //if no record found we have clicked a lookup, no selection should be happening in that case\n if (clickedRecord) {\n this.selection.toggle(clickedRecord, true, true, true);\n }\n }\n\n public updateDependencies(props: IGrid): void {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n //THIS COULD MAKE GRID STOP WORKING IN POWER APPS!\n if (this._previousRecordsReference !== this._dataset.records) {\n this._records = Object.values(this._dataset.records);\n this._previousRecordsReference = this._dataset.records;\n }\n Object.values(this._dependencies).map(dep => {\n dep.onDependenciesUpdated()\n })\n this._shouldRerender = !this.shouldRerender;\n }\n public async refreshColumns(): Promise<IGridColumn[]> {\n const gridColumns: IGridColumn[] = [];\n for (const column of this._dataset.columns) {\n const sorted = this._dataset.sorting?.find(sort => sort.name === column.name);\n const gridColumn: IGridColumn = {\n ...column,\n isEditable: await this._isColumnEditable(column),\n isRequired: await this._isColumnRequired(column),\n isFilterable: await this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false,\n isFiltered: false\n }\n const condition = await this.filtering.condition(gridColumn);\n gridColumn.isFiltered = condition.isAppliedToDataset;\n gridColumns.push(gridColumn);\n }\n if (this.selection.type !== undefined) {\n gridColumns.unshift({\n name: CHECKBOX_COLUMN_KEY,\n alias: CHECKBOX_COLUMN_KEY,\n dataType: DataTypes.SingleLineText,\n displayName: '',\n isEditable: true,\n isFilterable: false,\n isFiltered: false,\n isRequired: false,\n isResizable: false,\n disableSorting: true,\n isSorted: false,\n isSortedDescending: false,\n order: 0,\n visualSizeFactor: 45,\n });\n }\n this._columns = gridColumns;\n return gridColumns;\n }\n\n public setRefreshGlobalCheckBox(refreshGlobalCheckBox: () => void) {\n this._refreshGlobalCheckBox = refreshGlobalCheckBox;\n }\n\n public refreshGlobalCheckBox() {\n this._refreshGlobalCheckBox();\n }\n\n private async _isColumnEditable(column: IColumn): Promise<boolean> {\n //only allow editing if specifically allowed\n if (!this._props.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataType.FILE:\n case DataType.IMAGE: {\n return false;\n }\n }\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const metadata = await this.metadata.get(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.IsValidForUpdate ?? false;\n }\n\n private async _isColumnRequired(column: IColumn): Promise<boolean> {\n if (!this.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const requiredLevel = metadata.Attributes.get(attributeName)?.attributeDescriptor?.RequiredLevel;\n if (requiredLevel === 1 || requiredLevel === 2) {\n return true;\n }\n return false;\n }\n private _isColumnSortable(column: IColumn): boolean {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this._props.parameters.EnableSorting?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n switch (column.dataType) {\n case DataType.IMAGE: {\n return false;\n }\n }\n if(column.disableSorting === undefined) {\n return true;\n }\n return !column.disableSorting;\n }\n private async _isColumnFilterable(column: IColumn): Promise<boolean> {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this.props.parameters.EnableFiltering?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.isFilterable ?? true;\n }\n private _getMaxHeight(): number {\n let maxHeight = this._initialPageSize * this.rowHeight;\n if (maxHeight > 600) {\n maxHeight = 600;\n }\n return maxHeight;\n }\n}"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talxis/base-controls",
3
- "version": "1.2411.7",
3
+ "version": "1.2411.9",
4
4
  "description": "Set of React components that natively work with Power Apps Component Framework API's",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",