@talxis/base-controls 1.2506.4 → 1.2506.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/Grid/aggregation/Aggregation.d.ts +18 -0
- package/dist/components/Grid/aggregation/Aggregation.js +129 -0
- package/dist/components/Grid/aggregation/Aggregation.js.map +1 -0
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js +6 -3
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/components/EmptyRecordsOverlay/EmptyRecords.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +18 -8
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/styles.d.ts +4 -0
- package/dist/components/Grid/core/components/AgGrid/styles.js +4 -0
- package/dist/components/Grid/core/components/AgGrid/styles.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/Cell.js +14 -1
- package/dist/components/Grid/core/components/Cell/Cell.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/CellContent/CellContent.js +5 -0
- package/dist/components/Grid/core/components/Cell/CellContent/CellContent.js.map +1 -1
- package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js +1 -1
- package/dist/components/Grid/core/components/ColumnHeader/ColumnHeader.js.map +1 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js +10 -2
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js.map +1 -1
- package/dist/components/Grid/core/interfaces/IGridColumn.d.ts +1 -0
- package/dist/components/Grid/core/model/Grid.d.ts +3 -0
- package/dist/components/Grid/core/model/Grid.js +36 -13
- package/dist/components/Grid/core/model/Grid.js.map +1 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.d.ts +3 -0
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js +1 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js.map +1 -1
- package/dist/components/Grid/filtering/model/Condition.js +1 -1
- package/dist/components/Grid/filtering/model/Condition.js.map +1 -1
- package/dist/components/Grid/interfaces.d.ts +1 -0
- package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js +58 -34
- package/dist/components/Grid/sorting/components/SortingContextualMenu/SortingContextualMenu.js.map +1 -1
- package/dist/components/Grid/translations.d.ts +36 -0
- package/dist/components/Grid/translations.js +13 -1
- package/dist/components/Grid/translations.js.map +1 -1
- package/dist/components/GridCellRenderer/GridCellRenderer.js +37 -5
- package/dist/components/GridCellRenderer/GridCellRenderer.js.map +1 -1
- package/dist/components/GridCellRenderer/interfaces.d.ts +5 -2
- package/dist/components/GridCellRenderer/styles.d.ts +15 -2
- package/dist/components/GridCellRenderer/styles.js +15 -2
- package/dist/components/GridCellRenderer/styles.js.map +1 -1
- package/dist/components/GridCellRenderer/translations.d.ts +24 -0
- package/dist/components/GridCellRenderer/translations.js +24 -0
- package/dist/components/GridCellRenderer/translations.js.map +1 -1
- package/dist/components/NestedControlRenderer/properties/OptionSetProperty.js +0 -4
- package/dist/components/NestedControlRenderer/properties/OptionSetProperty.js.map +1 -1
- package/dist/index.d.ts +66 -6
- package/dist/utils/dataset/adapters/DatasetAdapter.d.ts +0 -4
- package/dist/utils/dataset/adapters/DatasetAdapter.js.map +1 -1
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.js","sources":["../../../../../../src/components/Grid/core/components/Cell/Cell.tsx"],"sourcesContent":["import { ICellRendererParams } from \"@ag-grid-community/core\";\nimport { IGridColumn } from \"../../interfaces/IGridColumn\";\nimport { Constants, IRecord } from \"@talxis/client-libraries\";\nimport { Checkbox, ITooltipHostProps, Shimmer, ThemeProvider, useTheme } from \"@fluentui/react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { getCellStyles, getInnerCellStyles } from \"./styles\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../../constants\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { Notifications } from \"./Notifications/Notifications\";\nimport { CellContent } from \"./CellContent/CellContent\";\nimport { ICellValues } from \"../AgGrid/model/AgGrid\";\nimport { getClassNames, ICommandBarItemProps, useThemeGenerator } from \"@talxis/react-components\";\nimport { useControlTheme } from \"../../../../../utils\";\n\nexport interface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n isCellEditor: boolean;\n data: IRecord;\n value: ICellValues;\n}\nexport const Cell = (props: ICellProps) => {\n const styles = useMemo(() => getCellStyles(), [])\n const cellFormatting = props.value.customFormatting;\n const cellTheme = useThemeGenerator(cellFormatting.primaryColor, cellFormatting.backgroundColor, cellFormatting.textColor, cellFormatting.themeOverride);\n const grid = useGridInstance();\n\n const renderContent = () => {\n switch (props.baseColumn.name) {\n case CHECKBOX_COLUMN_KEY: {\n return (\n <Checkbox\n checked={props.node.isSelected()}\n onChange={(e, checked) => {\n grid.selection.toggle(props.node.id!);\n }}\n styles={{\n checkbox: styles.checkbox\n }} />\n );\n }\n default: {\n return <InternalCell {...props} />\n }\n }\n }\n\n return <ThemeProvider theme={cellTheme} className={getClassNames([styles.cellRoot, cellFormatting.className])}>\n {renderContent()}\n </ThemeProvider>\n}\n\n\nexport const InternalCell = (props: ICellProps) => {\n const column = props.baseColumn;\n const record = props.data;\n const formatting = props.value.customFormatting;\n const grid = useGridInstance();\n const error = props.value.error;\n const notifications = props.value.notifications;\n const errorMessage = props.value.errorMessage;\n const theme = useTheme();\n const applicationTheme = useControlTheme(grid.pcfContext.fluentDesignLanguage);\n const [recordCommands, setRecordCommands] = useState(undefined);\n\n const shouldShowNotEditableNotification = () => {\n if (column.isEditable && !record.getColumnInfo(column.name).security.editable) {\n return true;\n }\n return false;\n }\n\n const getShouldRenderNotifications = (): boolean => {\n if (props.isCellEditor) {\n return false;\n }\n if (error === true) {\n return true;\n }\n if (shouldShowNotEditableNotification()) {\n return true;\n }\n if (notifications && notifications.length > 0) {\n return true;\n }\n return false;\n }\n\n const renderContent = (): JSX.Element => {\n if (isLoading()) {\n return (\n <Shimmer styles={{\n shimmerWrapper: styles.shimmerWrapper,\n root: styles.shimmerRoot\n }} />\n );\n }\n return (\n <>\n {(column.type !== 'action' || column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) &&\n <CellContent {...props} recordCommands={recordCommands} />\n }\n {shouldRenderNotifications &&\n renderNotifications()\n }\n </>\n )\n }\n\n const getFarNotifications = (): ICommandBarItemProps[] => {\n const result: ICommandBarItemProps[] = [];\n const tooltipProps: ITooltipHostProps = {\n tooltipProps: {\n theme: applicationTheme\n },\n calloutProps: {\n theme: applicationTheme,\n }\n }\n if (shouldShowNotEditableNotification()) {\n result.push({\n key: 'noteditable',\n text: grid.labels['value-not-editable'](),\n iconOnly: true,\n disabled: true,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Uneditable',\n styles: {\n root: styles.uneditableIconRoot\n }\n }\n })\n }\n if (error) {\n result.push({\n key: 'error',\n iconOnly: true,\n disabled: true,\n text: errorMessage,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Error',\n styles: {\n root: styles.errorIconRoot\n }\n }\n })\n }\n return result;\n }\n\n const renderNotifications = (): JSX.Element => {\n return <Notifications\n formatting={formatting}\n isActionColumn={column.type === 'action'}\n columnAlignment={props.value.columnAlignment}\n notifications={notifications}\n farItems={getFarNotifications()} />\n }\n\n const isLoading = () => {\n if(props.value.loading) {\n return true;\n }\n if(column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME && !recordCommands) {\n return true;\n\n }\n return false;\n }\n\n const shouldRenderNotifications = getShouldRenderNotifications();\n const styles = useMemo(() => getInnerCellStyles(props.isCellEditor, theme, props.value.columnAlignment), [props.isCellEditor, theme, props.value.columnAlignment]);\n\n useEffect(() => {\n if(column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n (async () => {\n //@ts-ignore - typings\n setRecordCommands(await grid.dataset.retrieveRecordCommand([record.getRecordId()], grid.inlineRibbonButtonIds));\n })();\n }\n }, [record.getValue(column.name)]);\n\n return <div className={styles.innerCellRoot} data-is-valid={!error}>\n {renderContent()}\n </div>\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;AAoBa,MAAA,IAAI,GAAG,CAAC,KAAiB,KAAI;AACtC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;AACjD,IAAA,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,eAAe,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;AACzJ,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAK;AACvB,QAAA,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI;YACzB,KAAK,mBAAmB,EAAE;gBACtB,QACIA,IAAC,QAAQ,EAAA,EACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;wBACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;qBACzC,EACD,MAAM,EAAE;wBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC5B,qBAAA,EAAA,CAAI,EACX;AACL,aAAA;AACD,YAAA,SAAS;AACL,gBAAA,OAAOA,GAAC,CAAA,YAAY,EAAK,EAAA,GAAA,KAAK,GAAI,CAAA;AACrC,aAAA;AACJ,SAAA;AACL,KAAC,CAAA;IAED,OAAOA,GAAA,CAAC,aAAa,EAAA,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,EACxG,QAAA,EAAA,aAAa,EAAE,EAAA,CACJ,CAAA;AACpB,EAAC;AAGY,MAAA,YAAY,GAAG,CAAC,KAAiB,KAAI;AAC9C,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAChD,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAChC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;AAChD,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9C,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC/E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEhE,MAAM,iCAAiC,GAAG,MAAK;AAC3C,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3E,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAA;IAED,MAAM,4BAA4B,GAAG,MAAc;QAC/C,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAI,iCAAiC,EAAE,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAA;IAED,MAAM,aAAa,GAAG,MAAkB;QACpC,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,QACIA,GAAA,CAAC,OAAO,EAAA,EAAC,MAAM,EAAE;oBACb,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,IAAI,EAAE,MAAM,CAAC,WAAW;AAC3B,iBAAA,EAAA,CAAI,EACP;AACL,SAAA;AACD,QAAA,QACIC,IACK,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,0BAA0B;oBAC9EF,GAAC,CAAA,WAAW,OAAK,KAAK,EAAE,cAAc,EAAE,cAAc,EAAI,CAAA,EAE7D,yBAAyB;oBACtB,mBAAmB,EAAE,CAE1B,EAAA,CAAA,EACN;AACL,KAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,MAA6B;QACrD,MAAM,MAAM,GAA2B,EAAE,CAAC;AAC1C,QAAA,MAAM,YAAY,GAAsB;AACpC,YAAA,YAAY,EAAE;AACV,gBAAA,KAAK,EAAE,gBAAgB;AAC1B,aAAA;AACD,YAAA,YAAY,EAAE;AACV,gBAAA,KAAK,EAAE,gBAAgB;AAC1B,aAAA;SACJ,CAAA;QACD,IAAI,iCAAiC,EAAE,EAAE;YACrC,MAAM,CAAC,IAAI,CAAC;AACR,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE;AACzC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,gBAAgB,EAAE,YAAY;AAC9B,gBAAA,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,MAAM,EAAE;wBACJ,IAAI,EAAE,MAAM,CAAC,kBAAkB;AAClC,qBAAA;AACJ,iBAAA;AACJ,aAAA,CAAC,CAAA;AACL,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,IAAI,CAAC;AACR,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,gBAAgB,EAAE,YAAY;AAC9B,gBAAA,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,MAAM,EAAE;wBACJ,IAAI,EAAE,MAAM,CAAC,aAAa;AAC7B,qBAAA;AACJ,iBAAA;AACJ,aAAA,CAAC,CAAA;AACL,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;AAClB,KAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,MAAkB;AAC1C,QAAA,OAAOA,GAAC,CAAA,aAAa,EACjB,EAAA,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,QAAQ,EACxC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,EAC5C,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,mBAAmB,EAAE,GAAI,CAAA;AAC3C,KAAC,CAAA;IAED,MAAM,SAAS,GAAG,MAAK;AACnB,QAAA,IAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,0BAA0B,IAAI,CAAC,cAAc,EAAE;AACxE,YAAA,OAAO,IAAI,CAAC;AAEf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAA;AAED,IAAA,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAC;AACjE,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnK,SAAS,CAAC,MAAK;AACX,QAAA,IAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,0BAA0B,EAAE;YACrD,CAAC,YAAW;;gBAER,iBAAiB,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;aACnH,GAAG,CAAC;AACR,SAAA;AACL,KAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAA,OAAOA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,aAAa,EAAiB,eAAA,EAAA,CAAC,KAAK,EAAA,QAAA,EAC7D,aAAa,EAAE,GACd,CAAA;AACV;;;;"}
|
|
1
|
+
{"version":3,"file":"Cell.js","sources":["../../../../../../src/components/Grid/core/components/Cell/Cell.tsx"],"sourcesContent":["import { ICellRendererParams } from \"@ag-grid-community/core\";\nimport { IGridColumn } from \"../../interfaces/IGridColumn\";\nimport { Constants, IRecord } from \"@talxis/client-libraries\";\nimport { Checkbox, ITooltipHostProps, Shimmer, ThemeProvider, useTheme } from \"@fluentui/react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { getCellStyles, getInnerCellStyles } from \"./styles\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../../constants\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { Notifications } from \"./Notifications/Notifications\";\nimport { CellContent } from \"./CellContent/CellContent\";\nimport { ICellValues } from \"../AgGrid/model/AgGrid\";\nimport { getClassNames, ICommandBarItemProps, useThemeGenerator } from \"@talxis/react-components\";\nimport { useControlTheme } from \"../../../../../utils\";\n\nexport interface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n isCellEditor: boolean;\n data: IRecord;\n value: ICellValues;\n}\nexport const Cell = (props: ICellProps) => {\n const styles = useMemo(() => getCellStyles(), [])\n const cellFormatting = props.value.customFormatting;\n const cellTheme = useThemeGenerator(cellFormatting.primaryColor, cellFormatting.backgroundColor, cellFormatting.textColor, cellFormatting.themeOverride);\n const grid = useGridInstance();\n const record = props.data;\n const column = props.baseColumn;\n \n const shouldRenderEmptyCell = () => {\n if(record.getDataProvider().getSummarizationType() === 'aggregation') {\n if(column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME || column.name === CHECKBOX_COLUMN_KEY) {\n return true;\n }\n }\n return false;\n }\n\n const renderContent = () => {\n if (shouldRenderEmptyCell()) {\n return <></>\n }\n switch (props.baseColumn.name) {\n case CHECKBOX_COLUMN_KEY: {\n return (\n <Checkbox\n checked={props.node.isSelected()}\n onChange={(e, checked) => {\n grid.selection.toggle(props.node.id!);\n }}\n styles={{\n checkbox: styles.checkbox\n }} />\n );\n }\n default: {\n return <InternalCell {...props} />\n }\n }\n }\n\n return <ThemeProvider theme={cellTheme} className={getClassNames([styles.cellRoot, cellFormatting.className])}>\n {renderContent()}\n </ThemeProvider>\n}\n\n\nexport const InternalCell = (props: ICellProps) => {\n const column = props.baseColumn;\n const record = props.data;\n const formatting = props.value.customFormatting;\n const grid = useGridInstance();\n const error = props.value.error;\n const notifications = props.value.notifications;\n const errorMessage = props.value.errorMessage;\n const theme = useTheme();\n const applicationTheme = useControlTheme(grid.pcfContext.fluentDesignLanguage);\n const [recordCommands, setRecordCommands] = useState(undefined);\n\n const shouldShowNotEditableNotification = () => {\n if (column.isEditable && !record.getColumnInfo(column.name).security.editable) {\n return true;\n }\n return false;\n }\n\n const getShouldRenderNotifications = (): boolean => {\n if (props.isCellEditor) {\n return false;\n }\n if (error === true) {\n return true;\n }\n if (shouldShowNotEditableNotification()) {\n return true;\n }\n if (notifications && notifications.length > 0) {\n return true;\n }\n return false;\n }\n\n const renderContent = (): JSX.Element => {\n if (isLoading()) {\n return (\n <Shimmer styles={{\n shimmerWrapper: styles.shimmerWrapper,\n root: styles.shimmerRoot\n }} />\n );\n }\n return (\n <>\n {(column.type !== 'action' || column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) &&\n <CellContent {...props} recordCommands={recordCommands} />\n }\n {shouldRenderNotifications &&\n renderNotifications()\n }\n </>\n )\n }\n\n const getFarNotifications = (): ICommandBarItemProps[] => {\n const result: ICommandBarItemProps[] = [];\n const tooltipProps: ITooltipHostProps = {\n tooltipProps: {\n theme: applicationTheme\n },\n calloutProps: {\n theme: applicationTheme,\n }\n }\n if (shouldShowNotEditableNotification()) {\n result.push({\n key: 'noteditable',\n text: grid.labels['value-not-editable'](),\n iconOnly: true,\n disabled: true,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Uneditable',\n styles: {\n root: styles.uneditableIconRoot\n }\n }\n })\n }\n if (error) {\n result.push({\n key: 'error',\n iconOnly: true,\n disabled: true,\n text: errorMessage,\n tooltipHostProps: tooltipProps,\n iconProps: {\n iconName: 'Error',\n styles: {\n root: styles.errorIconRoot\n }\n }\n })\n }\n return result;\n }\n\n const renderNotifications = (): JSX.Element => {\n return <Notifications\n formatting={formatting}\n isActionColumn={column.type === 'action'}\n columnAlignment={props.value.columnAlignment}\n notifications={notifications}\n farItems={getFarNotifications()} />\n }\n\n const isLoading = () => {\n if (props.value.loading) {\n return true;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME && !recordCommands) {\n return true;\n\n }\n return false;\n }\n\n const shouldRenderNotifications = getShouldRenderNotifications();\n const styles = useMemo(() => getInnerCellStyles(props.isCellEditor, theme, props.value.columnAlignment), [props.isCellEditor, theme, props.value.columnAlignment]);\n\n useEffect(() => {\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n (async () => {\n //@ts-ignore - typings\n setRecordCommands(await grid.dataset.retrieveRecordCommand([record.getRecordId()], grid.inlineRibbonButtonIds));\n })();\n }\n }, [record.getValue(column.name)]);\n\n return <div className={styles.innerCellRoot} data-is-valid={!error}>\n {renderContent()}\n </div>\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -48,6 +48,11 @@ const CellContent = (props) => {
|
|
|
48
48
|
inputFocusBorderAlt: 'transparent',
|
|
49
49
|
errorText: 'transparent'
|
|
50
50
|
},
|
|
51
|
+
fonts: record.getDataProvider().getSummarizationType() === 'aggregation' ? {
|
|
52
|
+
medium: {
|
|
53
|
+
fontWeight: 600
|
|
54
|
+
}
|
|
55
|
+
} : {},
|
|
51
56
|
effects: {
|
|
52
57
|
underlined: false
|
|
53
58
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellContent.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/CellContent/CellContent.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { ICellProps } from '../Cell';\nimport { getCellContentStyles } from './styles';\nimport { NestedControlRenderer } from '../../../../../NestedControlRenderer/NestedControlRenderer';\nimport { ControlTheme, IFluentDesignState } from '../../../../../../utils';\nimport { IComboBoxStyles, IDatePickerStyles, ITextFieldStyles, IToggleStyles, merge, useTheme } from '@fluentui/react';\nimport { useRerender } from '@talxis/react-components';\nimport { getJustifyContent } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { Client, ICommand } from '@talxis/client-libraries';\nimport { AgGridContext } from '../../AgGrid/context';\n\nconst client = new Client();\n\ninterface ICellContentProps extends ICellProps {\n recordCommands?: ICommand[];\n}\n\n\nexport const CellContent = (props: ICellContentProps) => {\n const columnRef = React.useRef(props.baseColumn);\n const mountedRef = React.useRef(false);\n const valueRef = React.useRef(props.value);\n const recordCommands = props.recordCommands;\n columnRef.current = props.baseColumn;\n valueRef.current = props.value;\n const rerender = useRerender();\n const grid = useGridInstance();\n const agGrid = React.useContext(AgGridContext);\n const record = props.data;\n const node = props.node;\n const themeRef = React.useRef(useTheme());\n themeRef.current = useTheme();\n const styles = React.useMemo(() => getCellContentStyles(valueRef.current.columnAlignment), [valueRef.current.columnAlignment]);\n //defer loading of the nested control to solve edge case where the changed values from onNotifyOutputChanged triggered by unmount would not be available straight away\n const [shouldRenderNestedControl, setShouldRenderNestedControl] = React.useState(false);\n const getColumn = () => {\n return columnRef.current;\n }\n\n const getFluentDesignLanguage = (fluentDesignLanguage?: IFluentDesignState) => {\n //@ts-ignore\n const formatting = agGrid.getCellFormatting(props);\n const mergedOverrides: any = merge({}, fluentDesignLanguage?.v8FluentOverrides ?? {}, formatting.themeOverride);\n const columnAlignment = valueRef.current.columnAlignment;\n const result = ControlTheme.GenerateFluentDesignLanguage(formatting.primaryColor, formatting.backgroundColor, formatting.textColor, {\n v8FluentOverrides: merge({},\n {\n semanticColors: {\n inputBorder: 'transparent',\n inputBorderHovered: 'transparent',\n inputBackground: formatting.backgroundColor,\n focusBorder: 'transparent',\n disabledBorder: 'transparent',\n inputFocusBorderAlt: 'transparent',\n errorText: 'transparent'\n\n },\n effects: {\n underlined: false\n },\n\n components: {\n 'TextField': {\n styles: {\n field: {\n textAlign: columnAlignment\n }\n\n } as ITextFieldStyles\n },\n 'ComboBox': {\n styles: {\n input: {\n textAlign: columnAlignment === 'right' ? 'right' : undefined,\n paddingRight: columnAlignment === 'right' ? 8 : undefined,\n }\n } as IComboBoxStyles\n },\n 'DatePicker': {\n styles: {\n root: {\n '.ms-TextField-field': {\n paddingRight: columnAlignment === 'right' ? 8 : undefined,\n textAlign: columnAlignment === 'right' ? 'right' : 'left'\n }\n } as any\n } as IDatePickerStyles\n },\n 'Toggle': {\n styles: {\n root: {\n justifyContent: getJustifyContent(columnAlignment)\n }\n } as IToggleStyles\n }\n }\n },\n mergedOverrides\n ),\n applicationTheme: fluentDesignLanguage?.applicationTheme\n })\n return result;\n }\n\n const onNotifyOutputChanged = (outputs: any) => {\n let isEditing = props.isCellEditor;\n //if we are not mounted, set editing to true so requestRender gets run\n //if this is not present, a PCF editor might trigger this too late and we would not see the current value in renderer until next\n if (!mountedRef.current) {\n isEditing = false;\n }\n grid.onNotifyOutputChanged(record, columnRef.current, isEditing, outputs.value, () => rerender())\n }\n const debouncedNotifyOutputChanged = useDebouncedCallback((outputs) => onNotifyOutputChanged(outputs), 100);\n\n React.useEffect(() => {\n mountedRef.current = true;\n setShouldRenderNestedControl(true);\n return () => {\n mountedRef.current = false;\n }\n }, []);\n\n if (!shouldRenderNestedControl) {\n return <></>\n }\n\n return <NestedControlRenderer\n context={grid.pcfContext}\n parameters={{\n ControlName: valueRef.current.customControl.name,\n LoadingType: 'shimmer',\n Bindings: grid.getBindings(record, getColumn(), valueRef.current.customControl),\n ControlStates: {\n isControlDisabled: !valueRef.current.editing\n },\n }}\n onNotifyOutputChanged={(outputs) => {\n //talxis portal does not have debounce for notifyoutput\n //Power Apps does a debounce of 100ms\n if (getColumn().oneClickEdit && client.isTalxisPortal()) {\n debouncedNotifyOutputChanged(outputs);\n }\n else {\n onNotifyOutputChanged(outputs);\n }\n }}\n onOverrideComponentProps={(componentProps) => {\n return {\n ...componentProps,\n rootContainerProps: {\n ...componentProps.rootContainerProps,\n className: styles.controlRoot\n },\n controlContainerProps: {\n className: styles.controlContainer\n },\n overridenControlContainerProps: {\n className: styles.overridenControlContainer\n },\n messageBarProps: {\n ...componentProps.messageBarProps,\n styles: {\n root: styles.errorMessageRoot,\n content: styles.errorMessageContent\n }\n },\n loadingProps: {\n ...componentProps.loadingProps,\n shimmerProps: {\n ...componentProps.loadingProps.shimmerProps,\n styles: {\n ...componentProps.loadingProps?.shimmerProps?.styles,\n shimmerWrapper: styles.shimmerWrapper\n }\n },\n containerProps: {\n ...componentProps.loadingProps?.containerProps,\n className: styles.loadingWrapper\n }\n },\n onOverrideRender: (control, isCustomPcfComponent, defaultRender) => {\n if (isCustomPcfComponent) {\n grid.setUsesNestedPcfs();\n }\n if (valueRef.current.customComponent) {\n const result = valueRef.current.customComponent.onRender(control.getProps(), themeRef.current, control.getContainer())\n //onRender can explicitly return null to force the grid to use native renderer\n //useful if the custom component is required only for renderer, but not for editor or vice versa\n if (result === null) {\n return defaultRender();\n }\n return result;\n }\n return defaultRender();\n },\n onOverrideUnmount: (control, defaultUnmount) => {\n if (valueRef.current.customComponent) {\n const result = valueRef.current.customComponent.onUnmount(control.getContainer());\n //onRender can explicitly return null to force the grid to use native renderer\n //useful if the custom component is required only for renderer, but not for editor or vice versa\n if (result === null) {\n return defaultUnmount();\n }\n return result;\n }\n //@ts-ignore - internal types\n //skip the unmounting for custom PCF's in Power Apps\n // PCF unmount in Power Apps causes other nested PCF's to reinitialize which causes flickering\n //umounting of nested PCF's happens on grid destroy to prevent memory leaks (currently done by refreshing the page as no better method was found)\n if (control.isMountedPcfComponent() && !grid.getClient().isTalxisPortal()) {\n return;\n }\n return defaultUnmount();\n },\n onOverrideControlProps: (controlProps) => {\n //here we always need to fetch the latest parameters\n //we still might have old one's cached in valueRef\n const columnInfo = record.getColumnInfo(getColumn().name);\n const parameters = columnInfo.ui.getControlParameters({\n ...controlProps.parameters,\n ...grid.getParameters(record, getColumn(), props.isCellEditor, recordCommands)\n })\n return {\n ...controlProps,\n context: {\n ...controlProps.context,\n mode: Object.create(controlProps.context.mode, {\n allocatedHeight: {\n value: node.rowHeight! - 1\n },\n\n }),\n parameters: parameters,\n fluentDesignLanguage: getFluentDesignLanguage(controlProps.context.fluentDesignLanguage)\n },\n parameters: parameters\n }\n }\n }\n }}\n />\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellContent.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/CellContent/CellContent.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { ICellProps } from '../Cell';\nimport { getCellContentStyles } from './styles';\nimport { NestedControlRenderer } from '../../../../../NestedControlRenderer/NestedControlRenderer';\nimport { ControlTheme, IFluentDesignState } from '../../../../../../utils';\nimport { IComboBoxStyles, IDatePickerStyles, ITextFieldStyles, IToggleStyles, merge, useTheme } from '@fluentui/react';\nimport { useRerender } from '@talxis/react-components';\nimport { getJustifyContent } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { Client, ICommand } from '@talxis/client-libraries';\nimport { AgGridContext } from '../../AgGrid/context';\n\nconst client = new Client();\n\ninterface ICellContentProps extends ICellProps {\n recordCommands?: ICommand[];\n}\n\n\nexport const CellContent = (props: ICellContentProps) => {\n const columnRef = React.useRef(props.baseColumn);\n const mountedRef = React.useRef(false);\n const valueRef = React.useRef(props.value);\n const recordCommands = props.recordCommands;\n columnRef.current = props.baseColumn;\n valueRef.current = props.value;\n const rerender = useRerender();\n const grid = useGridInstance();\n const agGrid = React.useContext(AgGridContext);\n const record = props.data;\n const node = props.node;\n const themeRef = React.useRef(useTheme());\n themeRef.current = useTheme();\n const styles = React.useMemo(() => getCellContentStyles(valueRef.current.columnAlignment), [valueRef.current.columnAlignment]);\n //defer loading of the nested control to solve edge case where the changed values from onNotifyOutputChanged triggered by unmount would not be available straight away\n const [shouldRenderNestedControl, setShouldRenderNestedControl] = React.useState(false);\n const getColumn = () => {\n return columnRef.current;\n }\n\n const getFluentDesignLanguage = (fluentDesignLanguage?: IFluentDesignState) => {\n //@ts-ignore\n const formatting = agGrid.getCellFormatting(props);\n const mergedOverrides: any = merge({}, fluentDesignLanguage?.v8FluentOverrides ?? {}, formatting.themeOverride);\n const columnAlignment = valueRef.current.columnAlignment;\n const result = ControlTheme.GenerateFluentDesignLanguage(formatting.primaryColor, formatting.backgroundColor, formatting.textColor, {\n v8FluentOverrides: merge({},\n {\n semanticColors: {\n inputBorder: 'transparent',\n inputBorderHovered: 'transparent',\n inputBackground: formatting.backgroundColor,\n focusBorder: 'transparent',\n disabledBorder: 'transparent',\n inputFocusBorderAlt: 'transparent',\n errorText: 'transparent'\n\n },\n fonts: record.getDataProvider().getSummarizationType() === 'aggregation' ? {\n medium: {\n fontWeight: 600 as any\n }\n }: {},\n effects: {\n underlined: false\n },\n components: {\n 'TextField': {\n styles: {\n field: {\n textAlign: columnAlignment\n }\n\n } as ITextFieldStyles\n },\n 'ComboBox': {\n styles: {\n input: {\n textAlign: columnAlignment === 'right' ? 'right' : undefined,\n paddingRight: columnAlignment === 'right' ? 8 : undefined,\n }\n } as IComboBoxStyles\n },\n 'DatePicker': {\n styles: {\n root: {\n '.ms-TextField-field': {\n paddingRight: columnAlignment === 'right' ? 8 : undefined,\n textAlign: columnAlignment === 'right' ? 'right' : 'left'\n }\n } as any\n } as IDatePickerStyles\n },\n 'Toggle': {\n styles: {\n root: {\n justifyContent: getJustifyContent(columnAlignment)\n }\n } as IToggleStyles\n }\n }\n },\n mergedOverrides\n ),\n applicationTheme: fluentDesignLanguage?.applicationTheme\n })\n return result;\n }\n\n const onNotifyOutputChanged = (outputs: any) => {\n let isEditing = props.isCellEditor;\n //if we are not mounted, set editing to true so requestRender gets run\n //if this is not present, a PCF editor might trigger this too late and we would not see the current value in renderer until next\n if (!mountedRef.current) {\n isEditing = false;\n }\n grid.onNotifyOutputChanged(record, columnRef.current, isEditing, outputs.value, () => rerender())\n }\n const debouncedNotifyOutputChanged = useDebouncedCallback((outputs) => onNotifyOutputChanged(outputs), 100);\n\n React.useEffect(() => {\n mountedRef.current = true;\n setShouldRenderNestedControl(true);\n return () => {\n mountedRef.current = false;\n }\n }, []);\n\n if (!shouldRenderNestedControl) {\n return <></>\n }\n\n return <NestedControlRenderer\n context={grid.pcfContext}\n parameters={{\n ControlName: valueRef.current.customControl.name,\n LoadingType: 'shimmer',\n Bindings: grid.getBindings(record, getColumn(), valueRef.current.customControl),\n ControlStates: {\n isControlDisabled: !valueRef.current.editing\n },\n }}\n onNotifyOutputChanged={(outputs) => {\n //talxis portal does not have debounce for notifyoutput\n //Power Apps does a debounce of 100ms\n if (getColumn().oneClickEdit && client.isTalxisPortal()) {\n debouncedNotifyOutputChanged(outputs);\n }\n else {\n onNotifyOutputChanged(outputs);\n }\n }}\n onOverrideComponentProps={(componentProps) => {\n return {\n ...componentProps,\n rootContainerProps: {\n ...componentProps.rootContainerProps,\n className: styles.controlRoot\n },\n controlContainerProps: {\n className: styles.controlContainer\n },\n overridenControlContainerProps: {\n className: styles.overridenControlContainer\n },\n messageBarProps: {\n ...componentProps.messageBarProps,\n styles: {\n root: styles.errorMessageRoot,\n content: styles.errorMessageContent\n }\n },\n loadingProps: {\n ...componentProps.loadingProps,\n shimmerProps: {\n ...componentProps.loadingProps.shimmerProps,\n styles: {\n ...componentProps.loadingProps?.shimmerProps?.styles,\n shimmerWrapper: styles.shimmerWrapper\n }\n },\n containerProps: {\n ...componentProps.loadingProps?.containerProps,\n className: styles.loadingWrapper\n }\n },\n onOverrideRender: (control, isCustomPcfComponent, defaultRender) => {\n if (isCustomPcfComponent) {\n grid.setUsesNestedPcfs();\n }\n if (valueRef.current.customComponent) {\n const result = valueRef.current.customComponent.onRender(control.getProps(), themeRef.current, control.getContainer())\n //onRender can explicitly return null to force the grid to use native renderer\n //useful if the custom component is required only for renderer, but not for editor or vice versa\n if (result === null) {\n return defaultRender();\n }\n return result;\n }\n return defaultRender();\n },\n onOverrideUnmount: (control, defaultUnmount) => {\n if (valueRef.current.customComponent) {\n const result = valueRef.current.customComponent.onUnmount(control.getContainer());\n //onRender can explicitly return null to force the grid to use native renderer\n //useful if the custom component is required only for renderer, but not for editor or vice versa\n if (result === null) {\n return defaultUnmount();\n }\n return result;\n }\n //@ts-ignore - internal types\n //skip the unmounting for custom PCF's in Power Apps\n // PCF unmount in Power Apps causes other nested PCF's to reinitialize which causes flickering\n //umounting of nested PCF's happens on grid destroy to prevent memory leaks (currently done by refreshing the page as no better method was found)\n if (control.isMountedPcfComponent() && !grid.getClient().isTalxisPortal()) {\n return;\n }\n return defaultUnmount();\n },\n onOverrideControlProps: (controlProps) => {\n //here we always need to fetch the latest parameters\n //we still might have old one's cached in valueRef\n const columnInfo = record.getColumnInfo(getColumn().name);\n const parameters = columnInfo.ui.getControlParameters({\n ...controlProps.parameters,\n ...grid.getParameters(record, getColumn(), props.isCellEditor, recordCommands)\n })\n return {\n ...controlProps,\n context: {\n ...controlProps.context,\n mode: Object.create(controlProps.context.mode, {\n allocatedHeight: {\n value: node.rowHeight! - 1\n },\n\n }),\n parameters: parameters,\n fluentDesignLanguage: getFluentDesignLanguage(controlProps.context.fluentDesignLanguage)\n },\n parameters: parameters\n }\n }\n }\n }}\n />\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const ColumnHeader = (props) => {
|
|
|
15
15
|
const columnHeaderStyles = useMemo(() => getColumnHeaderStyles(theme, column.alignment), [theme, column.alignment]);
|
|
16
16
|
const buttonRef = useRef(null);
|
|
17
17
|
const onClick = () => {
|
|
18
|
-
if ((column.isFilterable === false && column.disableSorting)) {
|
|
18
|
+
if ((column.isFilterable === false && column.disableSorting && !column.canBeAggregated)) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
setColumnHeaderContextualMenuProps({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeader.js","sources":["../../../../../../src/components/Grid/core/components/ColumnHeader/ColumnHeader.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\nimport { CommandBarButton, Icon, Label, useTheme } from '@fluentui/react';\nimport { FilterCallout, IFilterCallout } from '../../../filtering/components/FilterCallout/FilterCallout';\nimport { IGridColumn } from '../../interfaces/IGridColumn';\nimport { ISortingContextualMenu, SortingContextualMenu } from '../../../sorting/components/SortingContextualMenu/SortingContextualMenu';\nimport { getColumnHeaderStyles } from './styles';\nimport { useGridInstance } from '../../hooks/useGridInstance';\nimport React from 'react';\n\nexport interface IColumnHeader {\n baseColumn: IGridColumn;\n}\n\nexport const ColumnHeader = (props: IColumnHeader) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const [columnHeaderContextualMenuProps, setColumnHeaderContextualMenuProps] = useState<ISortingContextualMenu | null>(null);\n const [filterCalloutProps, setFilterCalloutProps] = useState<IFilterCallout | null>(null);\n const theme = useTheme();\n const columnHeaderStyles = useMemo(() => getColumnHeaderStyles(theme, column.alignment), [theme, column.alignment])\n const buttonRef = useRef<HTMLElement>(null);\n\n const onClick = () => {\n if ((column.isFilterable === false && column.disableSorting)) {\n return;\n }\n setColumnHeaderContextualMenuProps({\n column: column,\n onDismiss: (e, dismissAll, showFilterCallout) => {\n setColumnHeaderContextualMenuProps(null);\n if (!showFilterCallout) {\n return;\n }\n setFilterCalloutProps({\n column: column,\n onDismiss: () => {\n setFilterCalloutProps(null)\n }\n })\n }\n });\n }\n const preventDismissOnEvent = (e: Event | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element> | React.FocusEvent<Element, Element>) => {\n if(e.type !== 'scroll') {\n return false;\n }\n const target = e.target as HTMLElement;\n //check for vertical scroll\n if (target?.classList?.contains('ag-body-viewport') || target?.classList?.contains('ag-body-vertical-scroll-viewport')) {\n return true;\n }\n //ios outputs horizontal scroll if focused in callout btn which would result in dismiss of callout\n if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {\n return true;\n }\n return false;\n }\n return (\n <>\n <CommandBarButton\n elementRef={buttonRef}\n title={column.displayName}\n className={columnHeaderStyles.root}\n onClick={onClick}\n >\n {grid.isEditable && !column.isEditable && column.type !== 'action' && <Icon className={columnHeaderStyles.editIcon} iconName='Uneditable' />}\n <div className={columnHeaderStyles.labelWrapper}>\n <Label className={columnHeaderStyles.label}>{column.displayName}</Label>\n {column.isRequired &&\n <span className={columnHeaderStyles.requiredSymbol}>*</span>\n }\n </div>\n <div className={columnHeaderStyles.filterSortIcons}>\n {column.isSorted && <Icon iconName={column.isSortedDescending ? 'SortDown' : 'SortUp'} />}\n {column.isFiltered && <Icon iconName='Filter' />}\n </div>\n </CommandBarButton>\n {columnHeaderContextualMenuProps &&\n <SortingContextualMenu \n target={buttonRef}\n calloutProps={{\n preventDismissOnEvent: preventDismissOnEvent\n }} \n {...columnHeaderContextualMenuProps} />\n }\n {filterCalloutProps &&\n <FilterCallout preventDismissOnEvent={preventDismissOnEvent} target={buttonRef} {...filterCalloutProps} />\n }\n </>\n )\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;AAaa,MAAA,YAAY,GAAG,CAAC,KAAoB,KAAI;AACjD,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,MAAM,CAAC,+BAA+B,EAAE,kCAAkC,CAAC,GAAG,QAAQ,CAAgC,IAAI,CAAC,CAAC;IAC5H,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;AAC1F,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AACnH,IAAA,MAAM,SAAS,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,MAAK;
|
|
1
|
+
{"version":3,"file":"ColumnHeader.js","sources":["../../../../../../src/components/Grid/core/components/ColumnHeader/ColumnHeader.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\nimport { CommandBarButton, Icon, Label, useTheme } from '@fluentui/react';\nimport { FilterCallout, IFilterCallout } from '../../../filtering/components/FilterCallout/FilterCallout';\nimport { IGridColumn } from '../../interfaces/IGridColumn';\nimport { ISortingContextualMenu, SortingContextualMenu } from '../../../sorting/components/SortingContextualMenu/SortingContextualMenu';\nimport { getColumnHeaderStyles } from './styles';\nimport { useGridInstance } from '../../hooks/useGridInstance';\nimport React from 'react';\n\nexport interface IColumnHeader {\n baseColumn: IGridColumn;\n}\n\nexport const ColumnHeader = (props: IColumnHeader) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const [columnHeaderContextualMenuProps, setColumnHeaderContextualMenuProps] = useState<ISortingContextualMenu | null>(null);\n const [filterCalloutProps, setFilterCalloutProps] = useState<IFilterCallout | null>(null);\n const theme = useTheme();\n const columnHeaderStyles = useMemo(() => getColumnHeaderStyles(theme, column.alignment), [theme, column.alignment])\n const buttonRef = useRef<HTMLElement>(null);\n\n const onClick = () => {\n if ((column.isFilterable === false && column.disableSorting && !column.canBeAggregated)) {\n return;\n }\n setColumnHeaderContextualMenuProps({\n column: column,\n onDismiss: (e, dismissAll, showFilterCallout) => {\n setColumnHeaderContextualMenuProps(null);\n if (!showFilterCallout) {\n return;\n }\n setFilterCalloutProps({\n column: column,\n onDismiss: () => {\n setFilterCalloutProps(null)\n }\n })\n }\n });\n }\n const preventDismissOnEvent = (e: Event | React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element> | React.FocusEvent<Element, Element>) => {\n if(e.type !== 'scroll') {\n return false;\n }\n const target = e.target as HTMLElement;\n //check for vertical scroll\n if (target?.classList?.contains('ag-body-viewport') || target?.classList?.contains('ag-body-vertical-scroll-viewport')) {\n return true;\n }\n //ios outputs horizontal scroll if focused in callout btn which would result in dismiss of callout\n if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {\n return true;\n }\n return false;\n }\n return (\n <>\n <CommandBarButton\n elementRef={buttonRef}\n title={column.displayName}\n className={columnHeaderStyles.root}\n onClick={onClick}\n >\n {grid.isEditable && !column.isEditable && column.type !== 'action' && <Icon className={columnHeaderStyles.editIcon} iconName='Uneditable' />}\n <div className={columnHeaderStyles.labelWrapper}>\n <Label className={columnHeaderStyles.label}>{column.displayName}</Label>\n {column.isRequired &&\n <span className={columnHeaderStyles.requiredSymbol}>*</span>\n }\n </div>\n <div className={columnHeaderStyles.filterSortIcons}>\n {column.isSorted && <Icon iconName={column.isSortedDescending ? 'SortDown' : 'SortUp'} />}\n {column.isFiltered && <Icon iconName='Filter' />}\n </div>\n </CommandBarButton>\n {columnHeaderContextualMenuProps &&\n <SortingContextualMenu \n target={buttonRef}\n calloutProps={{\n preventDismissOnEvent: preventDismissOnEvent\n }} \n {...columnHeaderContextualMenuProps} />\n }\n {filterCalloutProps &&\n <FilterCallout preventDismissOnEvent={preventDismissOnEvent} target={buttonRef} {...filterCalloutProps} />\n }\n </>\n )\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -75,7 +75,12 @@ const ChangeGrid = (props) => {
|
|
|
75
75
|
], {
|
|
76
76
|
PrimaryIdAttribute: "id__virtual"
|
|
77
77
|
});
|
|
78
|
-
memoryProvider.setColumns(getColumns()
|
|
78
|
+
memoryProvider.setColumns(getColumns().map(col => {
|
|
79
|
+
return {
|
|
80
|
+
...col,
|
|
81
|
+
aggregationFunction: undefined
|
|
82
|
+
};
|
|
83
|
+
}));
|
|
79
84
|
const dataset = new Dataset(memoryProvider);
|
|
80
85
|
dataset.isValid = () => {
|
|
81
86
|
return baseRecord.isValid();
|
|
@@ -203,6 +208,9 @@ const ChangeGrid = (props) => {
|
|
|
203
208
|
EnableNavigation: {
|
|
204
209
|
raw: false,
|
|
205
210
|
},
|
|
211
|
+
EnableAggregation: {
|
|
212
|
+
raw: false
|
|
213
|
+
},
|
|
206
214
|
EnableOptionSetColors: grid.parameters.EnableOptionSetColors,
|
|
207
215
|
EnableSorting: {
|
|
208
216
|
raw: false,
|
|
@@ -215,7 +223,7 @@ const ChangeGrid = (props) => {
|
|
|
215
223
|
},
|
|
216
224
|
Height: {
|
|
217
225
|
raw: '160px'
|
|
218
|
-
}
|
|
226
|
+
},
|
|
219
227
|
} }) }));
|
|
220
228
|
};
|
|
221
229
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeGrid.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { useGridInstance } from \"../../../../../../hooks/useGridInstance\";\nimport {\n Dataset,\n DataTypes,\n IColumn,\n IDataset,\n IRecordChange,\n MemoryDataProvider,\n} from \"@talxis/client-libraries\";\nimport { DatasetControl } from \"../../../../../../../../DatasetControl\";\nimport { useTheme } from \"@fluentui/react\";\nimport { getChangeGridStyles } from \"./styles\";\nimport React from \"react\";\nimport { AgGridContext } from \"../../../../../AgGrid/context\";\nimport { Grid } from \"../../../../../../../Grid\";\n\ninterface IChangeGrid {\n recordChange: IRecordChange;\n onDatasetReady: (dataset: IDataset) => void;\n onDatasetDestroyed: (dataset: IDataset) => void;\n onIsSaving: (value: boolean) => void;\n onRequestRender: () => void;\n}\n\nexport const ChangeGrid = (props: IChangeGrid) => {\n const fieldChangesRef = useRef(props.recordChange.columns);\n fieldChangesRef.current = props.recordChange.columns;\n const baseRecord = props.recordChange.record;\n const grid = useGridInstance();\n const changedColumns = fieldChangesRef.current.map((change) => {\n return grid.dataset.columns.find((x) => change.columnName === x.name)!;\n });\n const agGridContext = React.useContext(AgGridContext);\n\n const recordPrimaryName = (() => {\n let result;\n const primaryColumn = grid.dataset.columns.find((col) => col.isPrimary);\n if (primaryColumn) {\n result = baseRecord.getFormattedValue(primaryColumn.name);\n } else {\n const firstTextColumn = grid.dataset.columns.find(\n (col) => col.dataType === DataTypes.SingleLineText\n );\n if (firstTextColumn) {\n result = baseRecord.getFormattedValue(firstTextColumn.name);\n }\n }\n return result ?? grid.labels[\"no-name\"]();\n })();\n\n const theme = useTheme();\n const styles = useMemo(() => getChangeGridStyles(theme, recordPrimaryName), [theme, recordPrimaryName]);\n\n useEffect(() => {\n props.onDatasetReady(dataset);\n return () => {\n props.onDatasetDestroyed(dataset);\n agGridContext.rerender();\n }\n }, []);\n\n const getColumns = (): IColumn[] => {\n const virtualColumns: IColumn[] = [\n {\n name: \"id__virtual\",\n alias: \"id__virtual\",\n visualSizeFactor: 0,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 0,\n isHidden: true,\n },\n {\n name: \"valueDesc__virtual\",\n alias: \"valueDesc__virtual\",\n visualSizeFactor: 150,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 1,\n },\n ];\n return [...virtualColumns, ...changedColumns];\n };\n\n const getDataset = () => {\n const memoryProvider = new MemoryDataProvider(\n [\n {\n id__virtual: \"original\",\n 'valueDesc__virtual': grid.labels[\"original-value\"](),\n },\n {\n id__virtual: \"new\",\n 'valueDesc__virtual': grid.labels[\"new-value\"](),\n },\n ], {\n PrimaryIdAttribute: \"id__virtual\"\n }\n );\n memoryProvider.setColumns(getColumns());\n const dataset = new Dataset(memoryProvider);\n dataset.isValid = () => {\n return baseRecord.isValid()\n }\n grid.dataset.linking.getLinkedEntities().map(x => dataset.linking.addLinkedEntity(x))\n\n dataset.addEventListener('onRecordLoaded', (record) => {\n const recordId = record.getRecordId();\n record.expressions.ui.setCustomFormattingExpression('valueDesc__virtual', (cellTheme) => {\n return {\n themeOverride: {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }\n }\n })\n changedColumns.map(col => {\n const change = fieldChangesRef.current.find(x => x.columnName === col.name);\n record.expressions?.setCurrencySymbolExpression(col.name, () => baseRecord.getCurrencySymbol?.(col.name) ?? \"\");\n //we need to store the previous values somewhere, in changes?\n //record.expressions?.ui.setCustomFormattingExpression(col.name, (cellTheme) => baseRecord.getColumnInfo(col.name).ui.getCustomFormatting(cellTheme));\n record.expressions?.ui.setControlParametersExpression(col.name, (parameters) => baseRecord.getColumnInfo(col.name).ui.getControlParameters(parameters));\n record.expressions?.ui.setCustomControlsExpression(col.name, (defaultCustomControls) => baseRecord.getColumnInfo(col.name).ui.getCustomControls(defaultCustomControls));\n record.expressions?.ui.setCustomControlComponentExpression(col.name, () => baseRecord.getColumnInfo(col.name).ui.getCustomControlComponent())\n if (recordId === 'new') {\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n if(!change) {\n record.setValue(col.name, record.getValue(col.name))\n }\n else {\n record.setValue(col.name, change.currentValue);\n }\n record.expressions?.ui.setNotificationsExpression?.(col.name, () => {\n return [\n {\n uniqueId: \"clear\",\n title: grid.labels[\"saving-discard\"](),\n iconName: \"EraseTool\",\n compact: true,\n messages: [],\n actions: [\n {\n actions: [\n () => {\n baseRecord.clearChanges?.(col.name);\n record.setValue(col.name, baseRecord.getValue(col.name))\n },\n ],\n },\n ],\n }\n ]\n })\n record.expressions?.setValidationExpression?.(col.name, () => baseRecord.getColumnInfo(col.name))\n }\n else if (recordId === 'original') {\n record.expressions?.setDisabledExpression?.(col.name, () => true);\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n }\n });\n })\n\n dataset.addEventListener('onRecordColumnValueChanged', (record, columnName) => {\n baseRecord.setValue(columnName, record.getValue(columnName)); \n props.onRequestRender(); \n })\n dataset.addEventListener('onChangesCleared', () => {\n baseRecord.clearChanges?.();\n props.onRequestRender();\n })\n dataset.addEventListener('onRecordSave', async () => {\n props.onIsSaving(true);\n await baseRecord.save();\n baseRecord.clearChanges?.();\n props.onIsSaving(false);\n props.onRequestRender();\n })\n return dataset;\n };\n const dataset = useMemo(() => getDataset(), []);\n return (\n <div className={styles.root}>\n <DatasetControl\n onGetControlComponent={(props) => <Grid {...props} />}\n context={{\n ...grid.pcfContext,\n parameters: {\n ...grid.pcfContext.parameters,\n Grid: dataset,\n },\n }}\n onOverrideComponentProps={(props) => {\n return {\n ...props,\n headerProps: {\n ...props.headerProps,\n headerContainerProps: {\n ...props.headerProps?.headerContainerProps,\n style: {\n display: 'none'\n }\n }\n },\n onRenderPagination: (props, renderPagination) => React.createElement(React.Fragment)\n }\n }}\n parameters={{\n Grid: dataset,\n EnablePagination: {\n raw: false,\n },\n EnableFiltering: {\n raw: false,\n },\n EnableEditing: {\n raw: true,\n },\n EnableNavigation: {\n raw: false,\n },\n EnableOptionSetColors: grid.parameters.EnableOptionSetColors,\n EnableSorting: {\n raw: false,\n },\n EnableChangeEditor: {\n raw: false\n },\n SelectableRows: {\n raw: \"none\",\n },\n Height: {\n raw: '160px'\n }\n }}\n />\n </div>\n );\n};\n"],"names":["React","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChangeGrid.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { useGridInstance } from \"../../../../../../hooks/useGridInstance\";\nimport {\n Dataset,\n DataTypes,\n IColumn,\n IDataset,\n IRecordChange,\n MemoryDataProvider,\n} from \"@talxis/client-libraries\";\nimport { DatasetControl } from \"../../../../../../../../DatasetControl\";\nimport { useTheme } from \"@fluentui/react\";\nimport { getChangeGridStyles } from \"./styles\";\nimport React from \"react\";\nimport { AgGridContext } from \"../../../../../AgGrid/context\";\nimport { Grid } from \"../../../../../../../Grid\";\n\ninterface IChangeGrid {\n recordChange: IRecordChange;\n onDatasetReady: (dataset: IDataset) => void;\n onDatasetDestroyed: (dataset: IDataset) => void;\n onIsSaving: (value: boolean) => void;\n onRequestRender: () => void;\n}\n\nexport const ChangeGrid = (props: IChangeGrid) => {\n const fieldChangesRef = useRef(props.recordChange.columns);\n fieldChangesRef.current = props.recordChange.columns;\n const baseRecord = props.recordChange.record;\n const grid = useGridInstance();\n const changedColumns = fieldChangesRef.current.map((change) => {\n return grid.dataset.columns.find((x) => change.columnName === x.name)!;\n });\n const agGridContext = React.useContext(AgGridContext);\n\n const recordPrimaryName = (() => {\n let result;\n const primaryColumn = grid.dataset.columns.find((col) => col.isPrimary);\n if (primaryColumn) {\n result = baseRecord.getFormattedValue(primaryColumn.name);\n } else {\n const firstTextColumn = grid.dataset.columns.find(\n (col) => col.dataType === DataTypes.SingleLineText\n );\n if (firstTextColumn) {\n result = baseRecord.getFormattedValue(firstTextColumn.name);\n }\n }\n return result ?? grid.labels[\"no-name\"]();\n })();\n\n const theme = useTheme();\n const styles = useMemo(() => getChangeGridStyles(theme, recordPrimaryName), [theme, recordPrimaryName]);\n\n useEffect(() => {\n props.onDatasetReady(dataset);\n return () => {\n props.onDatasetDestroyed(dataset);\n agGridContext.rerender();\n }\n }, []);\n\n const getColumns = (): IColumn[] => {\n const virtualColumns: IColumn[] = [\n {\n name: \"id__virtual\",\n alias: \"id__virtual\",\n visualSizeFactor: 0,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 0,\n isHidden: true,\n },\n {\n name: \"valueDesc__virtual\",\n alias: \"valueDesc__virtual\",\n visualSizeFactor: 150,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 1,\n },\n ];\n return [...virtualColumns, ...changedColumns];\n };\n\n const getDataset = () => {\n const memoryProvider = new MemoryDataProvider(\n [\n {\n id__virtual: \"original\",\n 'valueDesc__virtual': grid.labels[\"original-value\"](),\n },\n {\n id__virtual: \"new\",\n 'valueDesc__virtual': grid.labels[\"new-value\"](),\n },\n ], {\n PrimaryIdAttribute: \"id__virtual\"\n }\n );\n memoryProvider.setColumns(getColumns().map(col => {\n return {\n ...col,\n aggregationFunction: undefined\n }\n }));\n const dataset = new Dataset(memoryProvider);\n dataset.isValid = () => {\n return baseRecord.isValid()\n }\n grid.dataset.linking.getLinkedEntities().map(x => dataset.linking.addLinkedEntity(x))\n\n dataset.addEventListener('onRecordLoaded', (record) => {\n const recordId = record.getRecordId();\n record.expressions.ui.setCustomFormattingExpression('valueDesc__virtual', (cellTheme) => {\n return {\n themeOverride: {\n fonts: {\n medium: {\n fontWeight: 600\n }\n }\n }\n }\n })\n changedColumns.map(col => {\n const change = fieldChangesRef.current.find(x => x.columnName === col.name);\n record.expressions?.setCurrencySymbolExpression(col.name, () => baseRecord.getCurrencySymbol?.(col.name) ?? \"\");\n //we need to store the previous values somewhere, in changes?\n //record.expressions?.ui.setCustomFormattingExpression(col.name, (cellTheme) => baseRecord.getColumnInfo(col.name).ui.getCustomFormatting(cellTheme));\n record.expressions?.ui.setControlParametersExpression(col.name, (parameters) => baseRecord.getColumnInfo(col.name).ui.getControlParameters(parameters));\n record.expressions?.ui.setCustomControlsExpression(col.name, (defaultCustomControls) => baseRecord.getColumnInfo(col.name).ui.getCustomControls(defaultCustomControls));\n record.expressions?.ui.setCustomControlComponentExpression(col.name, () => baseRecord.getColumnInfo(col.name).ui.getCustomControlComponent())\n if (recordId === 'new') {\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n if (!change) {\n record.setValue(col.name, record.getValue(col.name))\n }\n else {\n record.setValue(col.name, change.currentValue);\n }\n record.expressions?.ui.setNotificationsExpression?.(col.name, () => {\n return [\n {\n uniqueId: \"clear\",\n title: grid.labels[\"saving-discard\"](),\n iconName: \"EraseTool\",\n compact: true,\n messages: [],\n actions: [\n {\n actions: [\n () => {\n baseRecord.clearChanges?.(col.name);\n record.setValue(col.name, baseRecord.getValue(col.name))\n },\n ],\n },\n ],\n }\n ]\n })\n record.expressions?.setValidationExpression?.(col.name, () => baseRecord.getColumnInfo(col.name))\n }\n else if (recordId === 'original') {\n record.expressions?.setDisabledExpression?.(col.name, () => true);\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n }\n });\n })\n\n dataset.addEventListener('onRecordColumnValueChanged', (record, columnName) => {\n baseRecord.setValue(columnName, record.getValue(columnName));\n props.onRequestRender();\n })\n dataset.addEventListener('onChangesCleared', () => {\n baseRecord.clearChanges?.();\n props.onRequestRender();\n })\n dataset.addEventListener('onRecordSave', async () => {\n props.onIsSaving(true);\n await baseRecord.save();\n baseRecord.clearChanges?.();\n props.onIsSaving(false);\n props.onRequestRender();\n })\n return dataset;\n };\n const dataset = useMemo(() => getDataset(), []);\n return (\n <div className={styles.root}>\n <DatasetControl\n onGetControlComponent={(props) => <Grid {...props} />}\n context={{\n ...grid.pcfContext,\n parameters: {\n ...grid.pcfContext.parameters,\n Grid: dataset,\n },\n }}\n onOverrideComponentProps={(props) => {\n return {\n ...props,\n headerProps: {\n ...props.headerProps,\n headerContainerProps: {\n ...props.headerProps?.headerContainerProps,\n style: {\n display: 'none'\n }\n }\n },\n onRenderPagination: (props, renderPagination) => React.createElement(React.Fragment)\n }\n }}\n parameters={{\n Grid: dataset,\n EnablePagination: {\n raw: false,\n },\n EnableFiltering: {\n raw: false,\n },\n EnableEditing: {\n raw: true,\n },\n EnableNavigation: {\n raw: false,\n },\n EnableAggregation: {\n raw: false\n },\n EnableOptionSetColors: grid.parameters.EnableOptionSetColors,\n EnableSorting: {\n raw: false,\n },\n EnableChangeEditor: {\n raw: false\n },\n SelectableRows: {\n raw: \"none\",\n },\n Height: {\n raw: '160px'\n },\n }}\n />\n </div>\n );\n};\n"],"names":["React","_jsx"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { Sorting } from "../../sorting/Sorting";
|
|
|
7
7
|
import { KeyHoldListener } from "../services/KeyListener";
|
|
8
8
|
import { IGridColumn } from "../interfaces/IGridColumn";
|
|
9
9
|
import { IBinding } from "../../../NestedControlRenderer/interfaces";
|
|
10
|
+
import { Aggregation } from "../../aggregation/Aggregation";
|
|
10
11
|
export interface IGridHeightSettings {
|
|
11
12
|
isAutoHeightEnabled: boolean;
|
|
12
13
|
height?: string;
|
|
@@ -39,6 +40,7 @@ export declare class Grid {
|
|
|
39
40
|
get records(): IRecord[];
|
|
40
41
|
get sorting(): Sorting;
|
|
41
42
|
get filtering(): Filtering;
|
|
43
|
+
get aggregation(): Aggregation;
|
|
42
44
|
get selection(): Selection;
|
|
43
45
|
get paging(): ComponentFramework.PropertyHelper.DataSetApi.Paging & {
|
|
44
46
|
pageNumber: number;
|
|
@@ -74,5 +76,6 @@ export declare class Grid {
|
|
|
74
76
|
private _isColumnSortable;
|
|
75
77
|
private _isColumnFilterable;
|
|
76
78
|
private _getColumnEntityName;
|
|
79
|
+
private _canColumnBeAggregated;
|
|
77
80
|
private _getColumnType;
|
|
78
81
|
}
|
|
@@ -4,6 +4,7 @@ import { Selection } from '../../selection/model/Selection.js';
|
|
|
4
4
|
import { Sorting } from '../../sorting/Sorting.js';
|
|
5
5
|
import { CHECKBOX_COLUMN_KEY } from '../../constants.js';
|
|
6
6
|
import { merge } from 'merge-anything';
|
|
7
|
+
import { Aggregation } from '../../aggregation/Aggregation.js';
|
|
7
8
|
import { BaseControls } from '../../../../utils/BaseControls.js';
|
|
8
9
|
|
|
9
10
|
const DEFAULT_ROW_HEIGHT = 42;
|
|
@@ -26,6 +27,7 @@ class Grid {
|
|
|
26
27
|
filtering: new Filtering(this),
|
|
27
28
|
selection: new Selection(this),
|
|
28
29
|
sorting: new Sorting(this),
|
|
30
|
+
aggregation: new Aggregation(this)
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
;
|
|
@@ -69,6 +71,9 @@ class Grid {
|
|
|
69
71
|
get filtering() {
|
|
70
72
|
return this._dependencies.filtering;
|
|
71
73
|
}
|
|
74
|
+
get aggregation() {
|
|
75
|
+
return this._dependencies.aggregation;
|
|
76
|
+
}
|
|
72
77
|
get selection() {
|
|
73
78
|
return this._dependencies.selection;
|
|
74
79
|
}
|
|
@@ -159,6 +164,7 @@ class Grid {
|
|
|
159
164
|
isRequired: this._isColumnRequired(column),
|
|
160
165
|
isFilterable: this._isColumnFilterable(column),
|
|
161
166
|
disableSorting: !this._isColumnSortable(column),
|
|
167
|
+
canBeAggregated: this._canColumnBeAggregated(column),
|
|
162
168
|
isSortedDescending: sorted?.sortDirection === 1 ? true : false,
|
|
163
169
|
type: this._getColumnType(column),
|
|
164
170
|
isResizable: true,
|
|
@@ -182,6 +188,7 @@ class Grid {
|
|
|
182
188
|
isFiltered: false,
|
|
183
189
|
isRequired: false,
|
|
184
190
|
isResizable: false,
|
|
191
|
+
canBeAggregated: false,
|
|
185
192
|
disableSorting: true,
|
|
186
193
|
isSorted: false,
|
|
187
194
|
isSortedDescending: false,
|
|
@@ -271,6 +278,7 @@ class Grid {
|
|
|
271
278
|
return defaultControl;
|
|
272
279
|
}
|
|
273
280
|
getParameters(record, column, editing, recordCommands) {
|
|
281
|
+
const aggregation = this.aggregation.getAggregationForColumn(column.name);
|
|
274
282
|
const parameters = {
|
|
275
283
|
Dataset: {
|
|
276
284
|
raw: this.dataset,
|
|
@@ -305,18 +313,18 @@ class Grid {
|
|
|
305
313
|
raw: editing ? 'editor' : 'renderer',
|
|
306
314
|
type: DataTypes.SingleLineText
|
|
307
315
|
};
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
316
|
+
parameters.AutoFocus = {
|
|
317
|
+
raw: editing,
|
|
318
|
+
type: DataTypes.TwoOptions
|
|
319
|
+
};
|
|
320
|
+
parameters.AggregationFunction = {
|
|
321
|
+
raw: record.getDataProvider().getSummarizationType() !== 'none' ? aggregation?.aggregationFunction ?? null : null,
|
|
322
|
+
type: DataTypes.SingleLineText
|
|
323
|
+
};
|
|
324
|
+
parameters.RecordCommands = {
|
|
325
|
+
raw: recordCommands ?? [],
|
|
326
|
+
type: DataTypes.Object
|
|
327
|
+
};
|
|
320
328
|
switch (column.dataType) {
|
|
321
329
|
case 'Lookup.Customer':
|
|
322
330
|
case 'Lookup.Owner':
|
|
@@ -379,7 +387,9 @@ class Grid {
|
|
|
379
387
|
switch (column.dataType) {
|
|
380
388
|
//getValue always returns string for TwoOptions
|
|
381
389
|
case 'TwoOptions': {
|
|
382
|
-
|
|
390
|
+
if (typeof value === 'string') {
|
|
391
|
+
value = value == '1' ? true : false;
|
|
392
|
+
}
|
|
383
393
|
break;
|
|
384
394
|
}
|
|
385
395
|
//getValue always returns string for OptionSet
|
|
@@ -475,6 +485,19 @@ class Grid {
|
|
|
475
485
|
}
|
|
476
486
|
return this.dataset.linking.getLinkedEntities().find(x => x.alias === entityAliasName).name;
|
|
477
487
|
}
|
|
488
|
+
_canColumnBeAggregated(column) {
|
|
489
|
+
//aggregations disabled by default
|
|
490
|
+
if (this.parameters.EnableAggregation?.raw !== true) {
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {
|
|
494
|
+
return false;
|
|
495
|
+
}
|
|
496
|
+
if (!column.metadata?.SupportedAggregations || column.metadata.SupportedAggregations.length === 0) {
|
|
497
|
+
return false;
|
|
498
|
+
}
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
478
501
|
_getColumnType(column) {
|
|
479
502
|
if (column.type) {
|
|
480
503
|
return column.type;
|