@talxis/base-controls 1.2601.5 → 1.2602.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,7 +55,7 @@ const EditColumns = (props) => {
55
55
  return jsxs("div", { className: styles.panelFooterButtons, children: [jsx(PrimaryButton, { onClick: () => {
56
56
  editColumnsModel.save();
57
57
  props.onDismiss();
58
- }, text: labels['save']() }), jsx(DefaultButton, { text: labels['cancel'](), onClick: props.onDismiss })] });
58
+ }, text: labels['save'](), disabled: columns.filter(col => !col.isHidden).length === 0 }), jsx(DefaultButton, { text: labels['cancel'](), onClick: props.onDismiss })] });
59
59
  }, children: [jsx("div", { className: styles.header, children: jsxs("div", { className: styles.selectors, children: [jsxs("div", { className: styles.selector, children: [jsx(Label, { children: labels["column-source"]() }), jsx(ScopeSelector, {})] }), !shouldRemountColumnSelector &&
60
60
  jsx("div", { className: styles.selector, children: jsx(ColumnSelector, { openMenuOnMount: openColumnSelectorOnMount }) })] }) }), jsx("div", { ref: scrollableContainerRef, className: styles.scrollableContainer, children: jsx(DndContext, { sensors: [sensor], onDragEnd: (e) => editColumnsModel.onColumnMoved(e.active.id.toString(), e.over?.id.toString() ?? ''), modifiers: [restrictToVerticalAxis], children: jsx(SortableContext, { strategy: verticalListSortingStrategy, items: editColumnsModel.getColumns(), children: jsx("div", { className: styles.sortableItemsWrapper, children: columns.filter(col => !col.isHidden).map(col => {
61
61
  return jsx(SortableItem, { column: col }, col.name);
@@ -1 +1 @@
1
- {"version":3,"file":"EditColumns.js","sources":["../../../../src/components/DatasetControl/EditColumns/EditColumns.tsx"],"sourcesContent":["import { DefaultButton, Label, Panel, PanelType, PrimaryButton, useTheme } from \"@fluentui/react\";\nimport { useModel } from \"../useModel\";\nimport { Key, useMemo, useRef, useState } from \"react\";\nimport { getEditColumnsStyles } from \"./styles\";\nimport { DndContext, PointerSensor, useSensor } from \"@dnd-kit/core\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { SortableItem } from \"./SortableItem/SortableItem\";\nimport { useEventEmitter } from \"../../../hooks\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { ColumnSelector } from \"./ColumnSelector/ColumnSelector\";\nimport { useShouldRemount } from \"../../../hooks/useShouldRemount\";\nimport { ScopeSelector } from \"./ScopeSelector/ScopeSelector\";\nimport { IEditColumnsEvents } from \"../../../utils/dataset-control/EditColumns\";\nimport { EditColumnsContext } from \"./useEditColumns\";\n\ninterface IEditColumnsProps {\n onDismiss: () => void;\n}\n\nexport const EditColumns = (props: IEditColumnsProps) => {\n const model = useModel();\n const datasetControl = model.getDatasetControl();\n const dataset = datasetControl.getDataset();\n const provider = dataset.getDataProvider();\n const theme = useTheme();\n const labels = model.getLabels();\n const styles = useMemo(() => getEditColumnsStyles(theme), []);\n const editColumnsModel = useMemo(() => datasetControl.editColumns, []);\n const columns = editColumnsModel.getColumns();\n const sensor = useSensor(PointerSensor);\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const [shouldRemountColumnSelector, remountColumnSelector] = useShouldRemount();\n const [openColumnSelectorOnMount, setOpenColumnSelectorOnMount] = useState(false);\n const rerender = useRerender();\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onColumnsChanged', rerender);\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onRelatedEntityColumnChanged', () => {\n remountColumnSelector();\n setOpenColumnSelectorOnMount(true);\n });\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onColumnAdded', () => scrollableContainerRef.current?.scrollTo({ top: 0 }));\n\n const getTitle = () => {\n const collectionName = provider.getMetadata().DisplayCollectionName;\n let title = labels[\"edit-columns\"]();\n if (collectionName) {\n title += `: ${collectionName}`;\n }\n return title;\n }\n\n const onDismiss = (ev?: React.SyntheticEvent<HTMLElement, Event> | KeyboardEvent | undefined) => {\n return (ev as KeyboardEvent)?.key === 'Escape' ? ev?.preventDefault() : props.onDismiss();\n };\n\n return <EditColumnsContext.Provider value={editColumnsModel}>\n <Panel\n headerText={getTitle()}\n isOpen={true}\n onDismiss={onDismiss}\n styles={{\n footer: styles.panelFooter,\n commands: styles.panelCommands,\n scrollableContent: styles.panelScrollableContent,\n content: styles.panelContent\n }}\n isFooterAtBottom\n onRenderFooterContent={() => {\n return <div className={styles.panelFooterButtons}>\n <PrimaryButton\n onClick={() => {\n editColumnsModel.save();\n props.onDismiss();\n }}\n text={labels['save']()}\n />\n <DefaultButton\n text={labels['cancel']()}\n onClick={props.onDismiss}\n />\n </div>\n }}\n >\n <div className={styles.header}>\n <div className={styles.selectors}>\n <div className={styles.selector}>\n <Label>{labels[\"column-source\"]()}</Label>\n <ScopeSelector />\n </div>\n {!shouldRemountColumnSelector &&\n <div className={styles.selector}>\n <ColumnSelector \n openMenuOnMount={openColumnSelectorOnMount} />\n </div>\n }\n </div>\n </div>\n <div ref={scrollableContainerRef} className={styles.scrollableContainer}>\n <DndContext\n sensors={[sensor]}\n onDragEnd={(e) => editColumnsModel.onColumnMoved(e.active.id.toString(), e.over?.id.toString() ?? '')}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n strategy={verticalListSortingStrategy}\n items={editColumnsModel.getColumns()}>\n <div className={styles.sortableItemsWrapper}>\n {columns.filter(col => !col.isHidden).map(col => {\n return <SortableItem key={col.name} column={col} />\n })}\n </div>\n </SortableContext>\n </DndContext>\n </div>\n </Panel>\n </EditColumnsContext.Provider>\n}\n\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"EditColumns.js","sources":["../../../../src/components/DatasetControl/EditColumns/EditColumns.tsx"],"sourcesContent":["import { DefaultButton, Label, Panel, PanelType, PrimaryButton, useTheme } from \"@fluentui/react\";\nimport { useModel } from \"../useModel\";\nimport { Key, useMemo, useRef, useState } from \"react\";\nimport { getEditColumnsStyles } from \"./styles\";\nimport { DndContext, PointerSensor, useSensor } from \"@dnd-kit/core\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { SortableItem } from \"./SortableItem/SortableItem\";\nimport { useEventEmitter } from \"../../../hooks\";\nimport { useRerender } from \"@talxis/react-components\";\nimport { ColumnSelector } from \"./ColumnSelector/ColumnSelector\";\nimport { useShouldRemount } from \"../../../hooks/useShouldRemount\";\nimport { ScopeSelector } from \"./ScopeSelector/ScopeSelector\";\nimport { IEditColumnsEvents } from \"../../../utils/dataset-control/EditColumns\";\nimport { EditColumnsContext } from \"./useEditColumns\";\n\ninterface IEditColumnsProps {\n onDismiss: () => void;\n}\n\nexport const EditColumns = (props: IEditColumnsProps) => {\n const model = useModel();\n const datasetControl = model.getDatasetControl();\n const dataset = datasetControl.getDataset();\n const provider = dataset.getDataProvider();\n const theme = useTheme();\n const labels = model.getLabels();\n const styles = useMemo(() => getEditColumnsStyles(theme), []);\n const editColumnsModel = useMemo(() => datasetControl.editColumns, []);\n const columns = editColumnsModel.getColumns();\n const sensor = useSensor(PointerSensor);\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const [shouldRemountColumnSelector, remountColumnSelector] = useShouldRemount();\n const [openColumnSelectorOnMount, setOpenColumnSelectorOnMount] = useState(false);\n const rerender = useRerender();\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onColumnsChanged', rerender);\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onRelatedEntityColumnChanged', () => {\n remountColumnSelector();\n setOpenColumnSelectorOnMount(true);\n });\n useEventEmitter<IEditColumnsEvents>(editColumnsModel, 'onColumnAdded', () => scrollableContainerRef.current?.scrollTo({ top: 0 }));\n\n const getTitle = () => {\n const collectionName = provider.getMetadata().DisplayCollectionName;\n let title = labels[\"edit-columns\"]();\n if (collectionName) {\n title += `: ${collectionName}`;\n }\n return title;\n }\n\n const onDismiss = (ev?: React.SyntheticEvent<HTMLElement, Event> | KeyboardEvent | undefined) => {\n return (ev as KeyboardEvent)?.key === 'Escape' ? ev?.preventDefault() : props.onDismiss();\n };\n\n return <EditColumnsContext.Provider value={editColumnsModel}>\n <Panel\n headerText={getTitle()}\n isOpen={true}\n onDismiss={onDismiss}\n styles={{\n footer: styles.panelFooter,\n commands: styles.panelCommands,\n scrollableContent: styles.panelScrollableContent,\n content: styles.panelContent\n }}\n isFooterAtBottom\n onRenderFooterContent={() => {\n return <div className={styles.panelFooterButtons}>\n <PrimaryButton\n onClick={() => {\n editColumnsModel.save();\n props.onDismiss();\n }}\n text={labels['save']()}\n disabled={columns.filter(col => !col.isHidden).length === 0}\n />\n <DefaultButton\n text={labels['cancel']()}\n onClick={props.onDismiss}\n />\n </div>\n }}\n >\n <div className={styles.header}>\n <div className={styles.selectors}>\n <div className={styles.selector}>\n <Label>{labels[\"column-source\"]()}</Label>\n <ScopeSelector />\n </div>\n {!shouldRemountColumnSelector &&\n <div className={styles.selector}>\n <ColumnSelector \n openMenuOnMount={openColumnSelectorOnMount} />\n </div>\n }\n </div>\n </div>\n <div ref={scrollableContainerRef} className={styles.scrollableContainer}>\n <DndContext\n sensors={[sensor]}\n onDragEnd={(e) => editColumnsModel.onColumnMoved(e.active.id.toString(), e.over?.id.toString() ?? '')}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n strategy={verticalListSortingStrategy}\n items={editColumnsModel.getColumns()}>\n <div className={styles.sortableItemsWrapper}>\n {columns.filter(col => !col.isHidden).map(col => {\n return <SortableItem key={col.name} column={col} />\n })}\n </div>\n </SortableContext>\n </DndContext>\n </div>\n </Panel>\n </EditColumnsContext.Provider>\n}\n\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -24,6 +24,7 @@ const ScopeSelector = () => {
24
24
  isMulti: false,
25
25
  isDisabled: isDisabled,
26
26
  defaultValue: editColumnsModel.getMainEntityColumn(),
27
+ getOptionValue: (column) => `${column.relatedEntityPrimaryIdAttribute}_${column.name}`,
27
28
  getOptionLabel: (column) => getOptionLabel(column),
28
29
  loadOptions: (inputValue) => editColumnsModel.getAvailableRelatedColumns(inputValue),
29
30
  onChange: (column) => editColumnsModel.selectRelatedEntityColumn(column),
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeSelector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.tsx"],"sourcesContent":["import { IAvailableRelatedColumn } from \"@talxis/client-libraries\";\nimport { Selector } from \"../Selector/Selector\";\nimport { useEditColumns } from \"../useEditColumns\";\nimport { useEffect, useState } from \"react\";\nimport { useModel } from \"../../useModel\";\n\n\nexport const ScopeSelector = () => {\n const editColumnsModel = useEditColumns();\n const [isDisabled, setIsDisabled] = useState(true);\n const labels = useModel().getLabels();\n\n const getOptionLabel = (column: IAvailableRelatedColumn): string => {\n const relatedEntityDisplayName = column.relatedEntityDisplayName;\n return relatedEntityDisplayName ? `${column.displayName} (${relatedEntityDisplayName})` : column.displayName ?? labels['no-name']();\n }\n\n useEffect(() => {\n (async () => {\n const options = await editColumnsModel.getAvailableRelatedColumns();\n setIsDisabled(options.length === 1);\n })();\n }, []);\n\n return <Selector<false, IAvailableRelatedColumn> onOverrideComponentProps={(props) => {\n return {\n ...props,\n isMulti: false,\n isDisabled: isDisabled,\n defaultValue: editColumnsModel.getMainEntityColumn(),\n getOptionLabel: (column) => getOptionLabel(column),\n loadOptions: (inputValue: string) => editColumnsModel.getAvailableRelatedColumns(inputValue),\n onChange: (column) => editColumnsModel.selectRelatedEntityColumn(column!),\n }\n }} />\n}"],"names":["_jsx"],"mappings":";;;;;;AAOO,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,MAAM,gBAAgB,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD,IAAA,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AAEtC,IAAA,MAAM,cAAc,GAAG,CAAC,MAA+B,KAAY;AAC/D,QAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QACjE,OAAO,wBAAwB,GAAG,GAAG,MAAM,CAAC,WAAW,CAAA,EAAA,EAAK,wBAAwB,CAAA,CAAA,CAAG,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AACxI,KAAC,CAAA;IAED,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;AACR,YAAA,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,0BAA0B,EAAE,CAAC;AACpE,YAAA,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;SACvC,GAAG,CAAC;KACR,EAAE,EAAE,CAAC,CAAC;IAEP,OAAOA,GAAA,CAAC,QAAQ,EAAiC,EAAA,wBAAwB,EAAE,CAAC,KAAK,KAAI;YACjF,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,YAAY,EAAE,gBAAgB,CAAC,mBAAmB,EAAE;gBACpD,cAAc,EAAE,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;gBAClD,WAAW,EAAE,CAAC,UAAkB,KAAK,gBAAgB,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBAC5F,QAAQ,EAAE,CAAC,MAAM,KAAK,gBAAgB,CAAC,yBAAyB,CAAC,MAAO,CAAC;aAC5E,CAAA;AACL,SAAC,GAAI,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"ScopeSelector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.tsx"],"sourcesContent":["import { IAvailableRelatedColumn } from \"@talxis/client-libraries\";\nimport { Selector } from \"../Selector/Selector\";\nimport { useEditColumns } from \"../useEditColumns\";\nimport { useEffect, useState } from \"react\";\nimport { useModel } from \"../../useModel\";\n\n\nexport const ScopeSelector = () => {\n const editColumnsModel = useEditColumns();\n const [isDisabled, setIsDisabled] = useState(true);\n const labels = useModel().getLabels();\n\n const getOptionLabel = (column: IAvailableRelatedColumn): string => {\n const relatedEntityDisplayName = column.relatedEntityDisplayName;\n return relatedEntityDisplayName ? `${column.displayName} (${relatedEntityDisplayName})` : column.displayName ?? labels['no-name']();\n }\n\n useEffect(() => {\n (async () => {\n const options = await editColumnsModel.getAvailableRelatedColumns();\n setIsDisabled(options.length === 1);\n })();\n }, []);\n\n return <Selector<false, IAvailableRelatedColumn> onOverrideComponentProps={(props) => {\n return {\n ...props,\n isMulti: false,\n isDisabled: isDisabled,\n defaultValue: editColumnsModel.getMainEntityColumn(),\n getOptionValue: (column) => `${column.relatedEntityPrimaryIdAttribute}_${column.name}`,\n getOptionLabel: (column) => getOptionLabel(column),\n loadOptions: (inputValue: string) => editColumnsModel.getAvailableRelatedColumns(inputValue),\n onChange: (column) => editColumnsModel.selectRelatedEntityColumn(column!),\n }\n }} />\n}"],"names":["_jsx"],"mappings":";;;;;;AAOO,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,MAAM,gBAAgB,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD,IAAA,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AAEtC,IAAA,MAAM,cAAc,GAAG,CAAC,MAA+B,KAAY;AAC/D,QAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QACjE,OAAO,wBAAwB,GAAG,GAAG,MAAM,CAAC,WAAW,CAAA,EAAA,EAAK,wBAAwB,CAAA,CAAA,CAAG,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AACxI,KAAC,CAAA;IAED,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;AACR,YAAA,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,0BAA0B,EAAE,CAAC;AACpE,YAAA,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;SACvC,GAAG,CAAC;KACR,EAAE,EAAE,CAAC,CAAC;IAEP,OAAOA,GAAA,CAAC,QAAQ,EAAiC,EAAA,wBAAwB,EAAE,CAAC,KAAK,KAAI;YACjF,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,YAAY,EAAE,gBAAgB,CAAC,mBAAmB,EAAE;AACpD,gBAAA,cAAc,EAAE,CAAC,MAAM,KAAK,CAAA,EAAG,MAAM,CAAC,+BAA+B,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAE,CAAA;gBACtF,cAAc,EAAE,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;gBAClD,WAAW,EAAE,CAAC,UAAkB,KAAK,gBAAgB,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBAC5F,QAAQ,EAAE,CAAC,MAAM,KAAK,gBAAgB,CAAC,yBAAyB,CAAC,MAAO,CAAC;aAC5E,CAAA;AACL,SAAC,GAAI,CAAA;AACT;;;;"}
@@ -1,5 +1,4 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { Attribute } from '@talxis/client-libraries';
3
2
  import { useTheme, Callout, DirectionalHint, TooltipHost } from '@fluentui/react';
4
3
  import AsyncSelect from 'react-select/async';
5
4
  import { useModel } from '../../useModel.js';
@@ -14,7 +13,7 @@ const Selector = (props) => {
14
13
  const MemoizedMenu = useMemo(() => React.memo((props) => (jsx(Callout, { directionalHint: DirectionalHint.leftTopEdge, target: `#${id}`, children: jsx(components.Menu, { ...props }) }))), [id]);
15
14
  const componentProps = onOverrideComponentProps({
16
15
  id: id,
17
- getOptionValue: (column) => Attribute.GetNameFromAlias(column.name),
16
+ getOptionValue: (column) => column.name,
18
17
  getOptionLabel: (column) => column.displayName ?? labels['no-name'](),
19
18
  noOptionsMessage: () => labels['no-result-found'](),
20
19
  maxMenuHeight: 600,
@@ -1 +1 @@
1
- {"version":3,"file":"Selector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/Selector/Selector.tsx"],"sourcesContent":["import { Attribute, IColumn } from \"@talxis/client-libraries\";\nimport { GroupBase, MenuProps } from 'react-select';\nimport { Callout, DirectionalHint, TooltipHost, useTheme } from \"@fluentui/react\";\nimport AsyncSelect from 'react-select/async';\nimport { AsyncProps } from 'react-select/dist/declarations/src/useAsync';\nimport { useModel } from \"../../useModel\";\nimport { components } from 'react-select';\nimport { useMemo } from \"react\";\nimport React from \"react\";\n\ntype ReactSelectProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> = AsyncProps<TColumn, IsMulti, GroupBase<TColumn>>;\n\ninterface ISelectorProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> {\n onOverrideComponentProps?: (props: ReactSelectProps<IsMulti, TColumn>) => ReactSelectProps<IsMulti, TColumn>\n}\n\nexport const Selector = <IsMulti extends boolean = false, TColumn extends IColumn = IColumn>(props: ISelectorProps<IsMulti, TColumn>) => {\n const theme = useTheme();\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((p) => p);\n const labels = useModel().getLabels();\n const id = useMemo(() => `selector-${window.crypto.randomUUID()}`, []);\n\n const MemoizedMenu = useMemo(() =>\n React.memo((props: any) => (\n <Callout\n directionalHint={DirectionalHint.leftTopEdge}\n target={`#${id}`}>\n <components.Menu {...props} />\n </Callout>\n )),\n [id]);\n\n const componentProps = onOverrideComponentProps({\n id: id,\n getOptionValue: (column: any) => Attribute.GetNameFromAlias(column.name),\n getOptionLabel: (column: any) => column.displayName ?? labels['no-name'](),\n noOptionsMessage: () => labels['no-result-found'](),\n maxMenuHeight: 600,\n isClearable: false,\n defaultOptions: true,\n styles: {\n option: (base) => {\n return {\n ...base,\n padding: 0,\n cursor: 'pointer',\n }\n },\n menu: () => {\n return {\n width: 300\n }\n }\n },\n theme: (base: any) => {\n return {\n ...base,\n colors: {\n ...base.colors,\n primary: theme.palette.themePrimary,\n primary75: theme.palette.themeLighterAlt,\n primary50: theme.palette.themeLight,\n primary25: theme.palette.themeLighter,\n }\n }\n },\n components: {\n Option: (props) => <components.Option {...props}>\n <TooltipHost\n content={props.data.name}\n >\n <div style={{ padding: '8px 12px' }}>\n {props.children}\n </div>\n </TooltipHost>\n </components.Option>,\n Menu: MemoizedMenu\n }\n })\n\n return <AsyncSelect {...componentProps} />\n}"],"names":["_jsx"],"mappings":";;;;;;;;AAgBa,MAAA,QAAQ,GAAG,CAAqE,KAAuC,KAAI;AACpI,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,IAAA,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AACtC,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAY,SAAA,EAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,OAAO,CAAC,MACzB,KAAK,CAAC,IAAI,CAAC,CAAC,KAAU,MAClBA,GAAC,CAAA,OAAO,EACJ,EAAA,eAAe,EAAE,eAAe,CAAC,WAAW,EAC5C,MAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAE,CAAA,EAAA,QAAA,EAChBA,GAAC,CAAA,UAAU,CAAC,IAAI,OAAK,KAAK,EAAA,CAAI,GACxB,CACb,CAAC,EACF,CAAC,EAAE,CAAC,CAAC,CAAC;IAEV,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAC5C,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,cAAc,EAAE,CAAC,MAAW,KAAK,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AACxE,QAAA,cAAc,EAAE,CAAC,MAAW,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;QAC1E,gBAAgB,EAAE,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE;AACnD,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,MAAM,EAAE;AACJ,YAAA,MAAM,EAAE,CAAC,IAAI,KAAI;gBACb,OAAO;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,MAAM,EAAE,SAAS;iBACpB,CAAA;aACJ;YACD,IAAI,EAAE,MAAK;gBACP,OAAO;AACH,oBAAA,KAAK,EAAE,GAAG;iBACb,CAAA;aACJ;AACJ,SAAA;AACD,QAAA,KAAK,EAAE,CAAC,IAAS,KAAI;YACjB,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,MAAM,EAAE;oBACJ,GAAG,IAAI,CAAC,MAAM;AACd,oBAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AACnC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;AACxC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;AACnC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AACxC,iBAAA;aACJ,CAAA;SACJ;AACD,QAAA,UAAU,EAAE;AACR,YAAA,MAAM,EAAE,CAAC,KAAK,KAAKA,GAAC,CAAA,UAAU,CAAC,MAAM,OAAK,KAAK,EAAA,QAAA,EAC3CA,IAAC,WAAW,EAAA,EACR,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAA,QAAA,EAExBA,GAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAC9B,QAAA,EAAA,KAAK,CAAC,QAAQ,EAAA,CACb,GACI,EACE,CAAA;AACpB,YAAA,IAAI,EAAE,YAAY;AACrB,SAAA;AACJ,KAAA,CAAC,CAAA;AAEF,IAAA,OAAOA,GAAC,CAAA,WAAW,EAAK,EAAA,GAAA,cAAc,GAAI,CAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"Selector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/Selector/Selector.tsx"],"sourcesContent":["import { Attribute, IColumn } from \"@talxis/client-libraries\";\nimport { GroupBase, MenuProps } from 'react-select';\nimport { Callout, DirectionalHint, TooltipHost, useTheme } from \"@fluentui/react\";\nimport AsyncSelect from 'react-select/async';\nimport { AsyncProps } from 'react-select/dist/declarations/src/useAsync';\nimport { useModel } from \"../../useModel\";\nimport { components } from 'react-select';\nimport { useMemo } from \"react\";\nimport React from \"react\";\n\ntype ReactSelectProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> = AsyncProps<TColumn, IsMulti, GroupBase<TColumn>>;\n\ninterface ISelectorProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> {\n onOverrideComponentProps?: (props: ReactSelectProps<IsMulti, TColumn>) => ReactSelectProps<IsMulti, TColumn>\n}\n\nexport const Selector = <IsMulti extends boolean = false, TColumn extends IColumn = IColumn>(props: ISelectorProps<IsMulti, TColumn>) => {\n const theme = useTheme();\n const onOverrideComponentProps = props.onOverrideComponentProps ?? ((p) => p);\n const labels = useModel().getLabels();\n const id = useMemo(() => `selector-${window.crypto.randomUUID()}`, []);\n\n const MemoizedMenu = useMemo(() =>\n React.memo((props: any) => (\n <Callout\n directionalHint={DirectionalHint.leftTopEdge}\n target={`#${id}`}>\n <components.Menu {...props} />\n </Callout>\n )),\n [id]);\n\n const componentProps = onOverrideComponentProps({\n id: id,\n getOptionValue: (column: any) => column.name,\n getOptionLabel: (column: any) => column.displayName ?? labels['no-name'](),\n noOptionsMessage: () => labels['no-result-found'](),\n maxMenuHeight: 600,\n isClearable: false,\n defaultOptions: true,\n styles: {\n option: (base) => {\n return {\n ...base,\n padding: 0,\n cursor: 'pointer',\n }\n },\n menu: () => {\n return {\n width: 300\n }\n }\n },\n theme: (base: any) => {\n return {\n ...base,\n colors: {\n ...base.colors,\n primary: theme.palette.themePrimary,\n primary75: theme.palette.themeLighterAlt,\n primary50: theme.palette.themeLight,\n primary25: theme.palette.themeLighter,\n }\n }\n },\n components: {\n Option: (props) => <components.Option {...props}>\n <TooltipHost\n content={props.data.name}\n >\n <div style={{ padding: '8px 12px' }}>\n {props.children}\n </div>\n </TooltipHost>\n </components.Option>,\n Menu: MemoizedMenu\n }\n })\n\n return <AsyncSelect {...componentProps} />\n}"],"names":["_jsx"],"mappings":";;;;;;;AAgBa,MAAA,QAAQ,GAAG,CAAqE,KAAuC,KAAI;AACpI,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,IAAA,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AACtC,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAY,SAAA,EAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,OAAO,CAAC,MACzB,KAAK,CAAC,IAAI,CAAC,CAAC,KAAU,MAClBA,GAAC,CAAA,OAAO,EACJ,EAAA,eAAe,EAAE,eAAe,CAAC,WAAW,EAC5C,MAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAE,CAAA,EAAA,QAAA,EAChBA,GAAC,CAAA,UAAU,CAAC,IAAI,OAAK,KAAK,EAAA,CAAI,GACxB,CACb,CAAC,EACF,CAAC,EAAE,CAAC,CAAC,CAAC;IAEV,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAC5C,QAAA,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,CAAC,MAAW,KAAK,MAAM,CAAC,IAAI;AAC5C,QAAA,cAAc,EAAE,CAAC,MAAW,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;QAC1E,gBAAgB,EAAE,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE;AACnD,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,MAAM,EAAE;AACJ,YAAA,MAAM,EAAE,CAAC,IAAI,KAAI;gBACb,OAAO;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,MAAM,EAAE,SAAS;iBACpB,CAAA;aACJ;YACD,IAAI,EAAE,MAAK;gBACP,OAAO;AACH,oBAAA,KAAK,EAAE,GAAG;iBACb,CAAA;aACJ;AACJ,SAAA;AACD,QAAA,KAAK,EAAE,CAAC,IAAS,KAAI;YACjB,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,MAAM,EAAE;oBACJ,GAAG,IAAI,CAAC,MAAM;AACd,oBAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AACnC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;AACxC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;AACnC,oBAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AACxC,iBAAA;aACJ,CAAA;SACJ;AACD,QAAA,UAAU,EAAE;AACR,YAAA,MAAM,EAAE,CAAC,KAAK,KAAKA,GAAC,CAAA,UAAU,CAAC,MAAM,OAAK,KAAK,EAAA,QAAA,EAC3CA,IAAC,WAAW,EAAA,EACR,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAA,QAAA,EAExBA,GAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAC9B,QAAA,EAAA,KAAK,CAAC,QAAQ,EAAA,CACb,GACI,EACE,CAAA;AACpB,YAAA,IAAI,EAAE,YAAY;AACrB,SAAA;AACJ,KAAA,CAAC,CAAA;AAEF,IAAA,OAAOA,GAAC,CAAA,WAAW,EAAK,EAAA,GAAA,cAAc,GAAI,CAAA;AAC9C;;;;"}
@@ -48,7 +48,7 @@ class DatasetControl extends EventEmitter {
48
48
  return false;
49
49
  }
50
50
  isEditColumnsVisible() {
51
- return true;
51
+ return this.getParameters().EnableEditColumns?.raw ?? false;
52
52
  }
53
53
  isEditFiltersVisible() {
54
54
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetControl.js","sources":["../../../src/utils/dataset-control/DatasetControl.ts"],"sourcesContent":["import { Client, DataProvider, EventEmitter, ICommand, IDataset, IEventEmitter, IInterceptor, IInternalDataProvider, Interceptors } from \"@talxis/client-libraries\";\nimport debounce from \"debounce\";\nimport { IDatasetControlParameters } from \"../../components/DatasetControl/interfaces\";\nimport { EditColumns, IEditColumns } from \"./EditColumns\";\n\n\ninterface IDatasetControlOptions {\n state: ComponentFramework.Dictionary;\n controlId: string;\n onGetPcfContext: () => ComponentFramework.Context<any, any>;\n onGetParameters: () => IDatasetControlParameters;\n}\n\nexport interface IDatasetControlEvents {\n onRecordCommandsLoaded: () => void;\n onRemountRequested: () => void;\n onEditColumnsRequested: () => void;\n onInitialized: () => void;\n}\n\ninterface IDatasetControlInterceptors {\n onInitialize: () => Promise<void>;\n}\n\nexport interface IDatasetControl extends IEventEmitter<IDatasetControlEvents> {\n editColumns: IEditColumns;\n setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;\n isPaginationVisible(): boolean;\n isRecordCountVisible(): boolean;\n isPageSizeSwitcherVisible(): boolean;\n isQuickFindVisible(): boolean;\n isAutoSaveEnabled(): boolean;\n isRibbonVisible(): boolean;\n getHeight(): string | null;\n getDataset(): IDataset;\n getPcfContext(): ComponentFramework.Context<any>;\n getParameters(): IDatasetControlParameters;\n loadCommands(ids: string[]): Promise<void>;\n retrieveRecordCommands(): ICommand[];\n areCommandsLoaded(): boolean;\n isEditColumnsVisible(): boolean;\n isViewSwitcherVisible(): boolean;\n isEditFiltersVisible(): boolean;\n //this should be removed once we have a custom edit columns button in the ribbon\n requestEditColumns(): void;\n destroy(): void;\n requestRemount(): void;\n init(): Promise<void>;\n getState(): ComponentFramework.Dictionary;\n saveState(): void;\n}\n\nexport class DatasetControl extends EventEmitter<IDatasetControlEvents> implements IDatasetControl {\n private _hasFirstDataLoaded: boolean = false;\n private _commands: ICommand[] = [];\n private _commandsLoaded: boolean = false;\n private _client: Client = new Client();\n private _options: IDatasetControlOptions;\n private _debouncedLoadRecordCommands: debounce.DebouncedFunction<(ids: string[]) => void>;\n private _interceptors = new Interceptors<IDatasetControlInterceptors>();\n\n constructor(options: IDatasetControlOptions) {\n super();\n this._options = options;\n this._setDatasetProperties();\n this._setState();\n this._debouncedLoadRecordCommands = debounce((ids) => this.loadCommands(ids))\n this._addEventListeners();\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n }\n\n public get editColumns(): IEditColumns {\n return new EditColumns({ datasetControl: this });\n }\n\n public setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void {\n this._interceptors.setInterceptor(event, interceptor);\n }\n public isPaginationVisible(): boolean {\n return this.getParameters().EnablePagination?.raw ?? true;\n }\n public isRecordCountVisible(): boolean {\n return this.getParameters().EnableRecordCount?.raw ?? true;\n }\n public isPageSizeSwitcherVisible(): boolean {\n return this.getParameters().EnablePageSizeSwitcher?.raw ?? true;\n }\n public isQuickFindVisible(): boolean {\n return this.getParameters().EnableQuickFind?.raw ?? true;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw ?? false;\n }\n public isRibbonVisible(): boolean {\n return this.getParameters().EnableCommandBar?.raw ?? true;\n }\n public requestEditColumns(): void {\n this.dispatchEvent('onEditColumnsRequested');\n }\n public isViewSwitcherVisible(): boolean {\n return false;\n }\n public isEditColumnsVisible(): boolean {\n return true;\n return this.getParameters().EnableEditColumns?.raw ?? false;\n }\n public isEditFiltersVisible(): boolean {\n return false;\n }\n public getHeight() {\n return this.getParameters().Height?.raw ?? null;\n }\n public getDataset() {\n return this.getParameters().Grid;\n }\n public getPcfContext() {\n return this._options.onGetPcfContext();\n }\n public async loadCommands(ids: string[]) {\n //we need to to have our ribbon shadow call the retrieveRecordCommand method in Power Apps in order to inject it into Power Apps ribbon.\n if (!this.isRibbonVisible() && this._client.isTalxisPortal()) {\n return;\n }\n this._commands = await this.getDataset().getDataProvider().retrieveRecordCommand({\n recordIds: ids,\n refreshAllRules: true\n });\n this._commandsLoaded = true;\n this.dispatchEvent('onRecordCommandsLoaded');\n }\n public retrieveRecordCommands() {\n return this._commands;\n }\n public areCommandsLoaded(): boolean {\n return this._commandsLoaded;\n }\n public destroy() {\n this.saveState();\n this.getDataset().destroy();\n this.clearEventListeners();\n this._interceptors.clearInterceptors();\n }\n public requestRemount(): void {\n this.dispatchEvent('onRemountRequested');\n }\n public async init() {\n await this._interceptors.execute('onInitialize', undefined, async () => {\n if (this.getDataset().getDataProvider().getProperty('isStandalone') || !this._client.isTalxisPortal()) {\n await (<IInternalDataProvider>this.getDataset().getDataProvider()).preload();\n }\n });\n await this._executeClientApiScript();\n //this makes sure the current columns go through any dataset interceptors\n this.getDataset().setColumns(this.getDataset().columns);\n this.getDataset().paging.loadExactPage(this.getDataset().paging.pageNumber);\n this.dispatchEvent('onInitialized');\n }\n public getParameters() {\n return this._options.onGetParameters();\n }\n public getState() {\n return this._options.state;\n }\n public saveState() {\n if (!this._hasFirstDataLoaded) {\n return;\n }\n const provider = this.getDataset().getDataProvider();\n const state = this._options.state;\n const DatasetControlState = state.DatasetControlState || {};\n DatasetControlState.columns = provider.getColumns();\n DatasetControlState.linking = provider.getLinking();\n DatasetControlState.sorting = provider.getSorting();\n DatasetControlState.filtering = provider.getFiltering();\n DatasetControlState.pageSize = provider.getPaging().pageSize;\n DatasetControlState.pageNumber = provider.getPaging().pageNumber;\n DatasetControlState.searchQuery = provider.getSearchQuery();\n DatasetControlState.selectedRecordIds = provider.getSelectedRecordIds();\n state.DatasetControlState = DatasetControlState;\n this.getPcfContext().mode.setControlState(state);\n }\n private async _executeClientApiScript(): Promise<void> {\n const clientApiWebresourceName = this.getParameters().ClientApiWebresourceName?.raw;\n const clientApiFunctionName = this.getParameters().ClientApiFunctionName?.raw;\n if (clientApiFunctionName) {\n if (!clientApiFunctionName) {\n throw new Error('ClientApiFunctionName parameter is not set.');\n }\n try {\n //@ts-ignore - typings\n await Xrm.Utility.executeFunction(clientApiWebresourceName, clientApiFunctionName, [{\n dataset: this.getDataset(),\n controlId: this._options.controlId\n }]);\n }\n catch (err) {\n console.error('Client API web resource execution failed. Client API will not be enabled! Reason: ', err);\n }\n }\n }\n\n private _setDatasetProperties() {\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('autoSave', this.isAutoSaveEnabled());\n provider.setProperty('groupingType', this.getParameters().GroupingType?.raw ?? 'nested');\n const inlineRibbonButtonsIds = [\n ...(this.getParameters().InlineRibbonButtonIds?.raw?.split(',') ?? []),\n DataProvider.CONST.SAVE_COMMAND_ID,\n DataProvider.CONST.CLEAR_CHANGES_COMMAND_ID\n ];\n provider.setProperty('inlineRibbonButtonsIds', new Set(inlineRibbonButtonsIds));\n }\n\n private _addEventListeners() {\n this.getDataset().addEventListener('onRecordsSelected', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onRecordColumnValueChanged', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onAfterRecordSaved', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onFirstDataLoaded', () => {\n this._hasFirstDataLoaded = true;\n })\n }\n\n private _setState() {\n const state = this._options.state?.DatasetControlState;\n if (!state) {\n return;\n }\n\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('hasPreviousState', true);\n provider.setLinking(state.linking);\n provider.setSorting(state.sorting);\n provider.setFiltering(state.filtering);\n provider.getPaging().setPageSize(state.pageSize);\n provider.getPaging().setPageNumber(state.pageNumber);\n provider.setSearchQuery(state.searchQuery);\n provider.setSelectedRecordIds(state.selectedRecordIds);\n }\n\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatasetControl.js","sources":["../../../src/utils/dataset-control/DatasetControl.ts"],"sourcesContent":["import { Client, DataProvider, EventEmitter, ICommand, IDataset, IEventEmitter, IInterceptor, IInternalDataProvider, Interceptors } from \"@talxis/client-libraries\";\nimport debounce from \"debounce\";\nimport { IDatasetControlParameters } from \"../../components/DatasetControl/interfaces\";\nimport { EditColumns, IEditColumns } from \"./EditColumns\";\n\n\ninterface IDatasetControlOptions {\n state: ComponentFramework.Dictionary;\n controlId: string;\n onGetPcfContext: () => ComponentFramework.Context<any, any>;\n onGetParameters: () => IDatasetControlParameters;\n}\n\nexport interface IDatasetControlEvents {\n onRecordCommandsLoaded: () => void;\n onRemountRequested: () => void;\n onEditColumnsRequested: () => void;\n onInitialized: () => void;\n}\n\ninterface IDatasetControlInterceptors {\n onInitialize: () => Promise<void>;\n}\n\nexport interface IDatasetControl extends IEventEmitter<IDatasetControlEvents> {\n editColumns: IEditColumns;\n setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void;\n isPaginationVisible(): boolean;\n isRecordCountVisible(): boolean;\n isPageSizeSwitcherVisible(): boolean;\n isQuickFindVisible(): boolean;\n isAutoSaveEnabled(): boolean;\n isRibbonVisible(): boolean;\n getHeight(): string | null;\n getDataset(): IDataset;\n getPcfContext(): ComponentFramework.Context<any>;\n getParameters(): IDatasetControlParameters;\n loadCommands(ids: string[]): Promise<void>;\n retrieveRecordCommands(): ICommand[];\n areCommandsLoaded(): boolean;\n isEditColumnsVisible(): boolean;\n isViewSwitcherVisible(): boolean;\n isEditFiltersVisible(): boolean;\n //this should be removed once we have a custom edit columns button in the ribbon\n requestEditColumns(): void;\n destroy(): void;\n requestRemount(): void;\n init(): Promise<void>;\n getState(): ComponentFramework.Dictionary;\n saveState(): void;\n}\n\nexport class DatasetControl extends EventEmitter<IDatasetControlEvents> implements IDatasetControl {\n private _hasFirstDataLoaded: boolean = false;\n private _commands: ICommand[] = [];\n private _commandsLoaded: boolean = false;\n private _client: Client = new Client();\n private _options: IDatasetControlOptions;\n private _debouncedLoadRecordCommands: debounce.DebouncedFunction<(ids: string[]) => void>;\n private _interceptors = new Interceptors<IDatasetControlInterceptors>();\n\n constructor(options: IDatasetControlOptions) {\n super();\n this._options = options;\n this._setDatasetProperties();\n this._setState();\n this._debouncedLoadRecordCommands = debounce((ids) => this.loadCommands(ids))\n this._addEventListeners();\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n }\n\n public get editColumns(): IEditColumns {\n return new EditColumns({ datasetControl: this });\n }\n\n public setInterceptor<K extends keyof IDatasetControlInterceptors>(event: K, interceptor: IInterceptor<IDatasetControlInterceptors, K>): void {\n this._interceptors.setInterceptor(event, interceptor);\n }\n public isPaginationVisible(): boolean {\n return this.getParameters().EnablePagination?.raw ?? true;\n }\n public isRecordCountVisible(): boolean {\n return this.getParameters().EnableRecordCount?.raw ?? true;\n }\n public isPageSizeSwitcherVisible(): boolean {\n return this.getParameters().EnablePageSizeSwitcher?.raw ?? true;\n }\n public isQuickFindVisible(): boolean {\n return this.getParameters().EnableQuickFind?.raw ?? true;\n }\n public isAutoSaveEnabled(): boolean {\n return this.getParameters().EnableAutoSave?.raw ?? false;\n }\n public isRibbonVisible(): boolean {\n return this.getParameters().EnableCommandBar?.raw ?? true;\n }\n public requestEditColumns(): void {\n this.dispatchEvent('onEditColumnsRequested');\n }\n public isViewSwitcherVisible(): boolean {\n return false;\n }\n public isEditColumnsVisible(): boolean {\n return this.getParameters().EnableEditColumns?.raw ?? false;\n }\n public isEditFiltersVisible(): boolean {\n return false;\n }\n public getHeight() {\n return this.getParameters().Height?.raw ?? null;\n }\n public getDataset() {\n return this.getParameters().Grid;\n }\n public getPcfContext() {\n return this._options.onGetPcfContext();\n }\n public async loadCommands(ids: string[]) {\n //we need to to have our ribbon shadow call the retrieveRecordCommand method in Power Apps in order to inject it into Power Apps ribbon.\n if (!this.isRibbonVisible() && this._client.isTalxisPortal()) {\n return;\n }\n this._commands = await this.getDataset().getDataProvider().retrieveRecordCommand({\n recordIds: ids,\n refreshAllRules: true\n });\n this._commandsLoaded = true;\n this.dispatchEvent('onRecordCommandsLoaded');\n }\n public retrieveRecordCommands() {\n return this._commands;\n }\n public areCommandsLoaded(): boolean {\n return this._commandsLoaded;\n }\n public destroy() {\n this.saveState();\n this.getDataset().destroy();\n this.clearEventListeners();\n this._interceptors.clearInterceptors();\n }\n public requestRemount(): void {\n this.dispatchEvent('onRemountRequested');\n }\n public async init() {\n await this._interceptors.execute('onInitialize', undefined, async () => {\n if (this.getDataset().getDataProvider().getProperty('isStandalone') || !this._client.isTalxisPortal()) {\n await (<IInternalDataProvider>this.getDataset().getDataProvider()).preload();\n }\n });\n await this._executeClientApiScript();\n //this makes sure the current columns go through any dataset interceptors\n this.getDataset().setColumns(this.getDataset().columns);\n this.getDataset().paging.loadExactPage(this.getDataset().paging.pageNumber);\n this.dispatchEvent('onInitialized');\n }\n public getParameters() {\n return this._options.onGetParameters();\n }\n public getState() {\n return this._options.state;\n }\n public saveState() {\n if (!this._hasFirstDataLoaded) {\n return;\n }\n const provider = this.getDataset().getDataProvider();\n const state = this._options.state;\n const DatasetControlState = state.DatasetControlState || {};\n DatasetControlState.columns = provider.getColumns();\n DatasetControlState.linking = provider.getLinking();\n DatasetControlState.sorting = provider.getSorting();\n DatasetControlState.filtering = provider.getFiltering();\n DatasetControlState.pageSize = provider.getPaging().pageSize;\n DatasetControlState.pageNumber = provider.getPaging().pageNumber;\n DatasetControlState.searchQuery = provider.getSearchQuery();\n DatasetControlState.selectedRecordIds = provider.getSelectedRecordIds();\n state.DatasetControlState = DatasetControlState;\n this.getPcfContext().mode.setControlState(state);\n }\n private async _executeClientApiScript(): Promise<void> {\n const clientApiWebresourceName = this.getParameters().ClientApiWebresourceName?.raw;\n const clientApiFunctionName = this.getParameters().ClientApiFunctionName?.raw;\n if (clientApiFunctionName) {\n if (!clientApiFunctionName) {\n throw new Error('ClientApiFunctionName parameter is not set.');\n }\n try {\n //@ts-ignore - typings\n await Xrm.Utility.executeFunction(clientApiWebresourceName, clientApiFunctionName, [{\n dataset: this.getDataset(),\n controlId: this._options.controlId\n }]);\n }\n catch (err) {\n console.error('Client API web resource execution failed. Client API will not be enabled! Reason: ', err);\n }\n }\n }\n\n private _setDatasetProperties() {\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('autoSave', this.isAutoSaveEnabled());\n provider.setProperty('groupingType', this.getParameters().GroupingType?.raw ?? 'nested');\n const inlineRibbonButtonsIds = [\n ...(this.getParameters().InlineRibbonButtonIds?.raw?.split(',') ?? []),\n DataProvider.CONST.SAVE_COMMAND_ID,\n DataProvider.CONST.CLEAR_CHANGES_COMMAND_ID\n ];\n provider.setProperty('inlineRibbonButtonsIds', new Set(inlineRibbonButtonsIds));\n }\n\n private _addEventListeners() {\n this.getDataset().addEventListener('onRecordsSelected', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onRecordColumnValueChanged', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onAfterRecordSaved', () => {\n this._debouncedLoadRecordCommands(this.getDataset().getSelectedRecordIds());\n })\n this.getDataset().addEventListener('onFirstDataLoaded', () => {\n this._hasFirstDataLoaded = true;\n })\n }\n\n private _setState() {\n const state = this._options.state?.DatasetControlState;\n if (!state) {\n return;\n }\n\n const provider = this.getDataset().getDataProvider();\n provider.setProperty('hasPreviousState', true);\n provider.setLinking(state.linking);\n provider.setSorting(state.sorting);\n provider.setFiltering(state.filtering);\n provider.getPaging().setPageSize(state.pageSize);\n provider.getPaging().setPageNumber(state.pageNumber);\n provider.setSearchQuery(state.searchQuery);\n provider.setSelectedRecordIds(state.selectedRecordIds);\n }\n\n}"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ class EditColumns extends EventEmitter {
9
9
  this._datasetControl = options.datasetControl;
10
10
  this._provider = options.datasetControl.getDataset().getDataProvider();
11
11
  this._currentColumns = this._provider.getColumns().map(col => ({ ...col, id: col.name }));
12
- this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [l.to, l]));
12
+ this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [`${l.from}_${l.to}`, l]));
13
13
  }
14
14
  save() {
15
15
  this._setColumns();
@@ -92,7 +92,7 @@ class EditColumns extends EventEmitter {
92
92
  }
93
93
  _generateLinkedEntityExpression(relatedColumn) {
94
94
  // Return existing alias if already mapped
95
- const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(relatedColumn.name);
95
+ const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(`${relatedColumn.relatedEntityPrimaryIdAttribute}_${relatedColumn.name}`);
96
96
  if (existingLinkedEntity) {
97
97
  return existingLinkedEntity;
98
98
  }
@@ -110,7 +110,7 @@ class EditColumns extends EventEmitter {
110
110
  to: relatedColumn.name,
111
111
  linkType: 'outer'
112
112
  };
113
- this._foreignKeyEntityLinkMap.set(relatedColumn.name, linking);
113
+ this._foreignKeyEntityLinkMap.set(`${relatedColumn.relatedEntityPrimaryIdAttribute}_${relatedColumn.name}`, linking);
114
114
  return linking;
115
115
  }
116
116
  _cleanupUnusedLinkedEntityExpression() {
@@ -1 +1 @@
1
- {"version":3,"file":"EditColumns.js","sources":["../../../src/utils/dataset-control/EditColumns.ts"],"sourcesContent":["import { Attribute, DataTypes, EventEmitter, IAvailableRelatedColumn, IColumn, IDataProvider, IEventEmitter, ILinkEntityExposedExpression } from \"@talxis/client-libraries\";\nimport { IDatasetControl } from \"./DatasetControl\";\n\nexport interface IEditColumnsEvents {\n onColumnAdded: (column: IColumn) => void;\n onColumnsChanged: (newColumns: IColumn[]) => void;\n onRelatedEntityColumnChanged: (relatedEntityColumn: IColumn | null) => void;\n}\n\ninterface IEditColumnsOptions {\n datasetControl: IDatasetControl;\n}\n\nexport interface IEditColumns extends IEventEmitter<IEditColumnsEvents> {\n save(): void;\n getColumns(): (IColumn & { id: string })[];\n deleteColumn(name: string): void;\n addColumn(column: IColumn): void;\n getAvailableColumns(query?: string): Promise<IColumn[]>;\n getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;\n selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;\n onColumnMoved(draggedColumnId: string, targetColumnId: string): void;\n getMainEntityColumn(): IAvailableRelatedColumn;\n}\n\nexport class EditColumns extends EventEmitter<IEditColumnsEvents> implements IEditColumns {\n private _datasetControl: IDatasetControl;\n private _provider: IDataProvider;\n private _currentColumns: (IColumn & { id: string })[] = [];\n private _relatedEntityColumn: IAvailableRelatedColumn | null = null;\n private _foreignKeyEntityLinkMap: Map<string, ILinkEntityExposedExpression> = new Map();\n\n constructor(options: IEditColumnsOptions) {\n super();\n this._datasetControl = options.datasetControl;\n this._provider = options.datasetControl.getDataset().getDataProvider();\n this._currentColumns = this._provider.getColumns().map(col => ({ ...col, id: col.name }));\n this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [l.to, l]));\n }\n\n public save() {\n this._setColumns();\n this._setLinking();\n this._provider.clearSelectedRecordIds();\n this._datasetControl.requestRemount();\n }\n\n public getColumns(): (IColumn & { id: string })[] {\n return this._currentColumns;\n }\n\n public deleteColumn(name: string) {\n this._currentColumns = this._currentColumns.filter(col => col.name !== name);\n this._cleanupUnusedLinkedEntityExpression();\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public addColumn(column: IColumn) {\n if (this._relatedEntityColumn) {\n const linking = this._generateLinkedEntityExpression(this._relatedEntityColumn);\n column = {\n ...column,\n name: `${linking.alias}.${column.name}`,\n displayName: `${column.displayName} (${this._relatedEntityColumn.displayName})`\n }\n }\n this._currentColumns.unshift({ ...column, id: column.name });\n this.dispatchEvent('onColumnAdded', column);\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public async getAvailableColumns(query?: string): Promise<IColumn[]> {\n const entityName = this._relatedEntityColumn?.metadata?.Targets?.[0] ?? this._provider.getEntityName();\n const availableColumns = await this._provider.getAvailableColumns({ entityName: entityName });\n if (!query) return availableColumns;\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return availableColumns.filter(col =>\n this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery)\n );\n }\n\n\n public async getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]> {\n const relatedColumns = await this._provider.getAvailableRelatedColumns();\n const allColumns = [...relatedColumns, this.getMainEntityColumn()];\n\n if (!query) {\n return allColumns.sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return allColumns\n .filter(col => {\n return this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery);\n })\n .sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n public selectRelatedEntityColumn(column: IAvailableRelatedColumn) {\n this._relatedEntityColumn = column.name === this._provider.getMetadata().PrimaryIdAttribute ? null : { ...column };\n this.dispatchEvent('onRelatedEntityColumnChanged', this._relatedEntityColumn);\n }\n\n public onColumnMoved(draggedColumnId: string, targetColumnId: string) {\n if (draggedColumnId !== targetColumnId) {\n const oldIndex = this._currentColumns.findIndex(col => col.id === draggedColumnId);\n const newIndex = this._currentColumns.findIndex(col => col.id === targetColumnId);\n\n const newColumns = [...this._currentColumns];\n const [movedItem] = newColumns.splice(oldIndex, 1);\n newColumns.splice(newIndex, 0, movedItem);\n\n this._currentColumns = newColumns;\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n }\n\n public getMainEntityColumn(): IAvailableRelatedColumn {\n return {\n name: this._provider.getMetadata().PrimaryIdAttribute,\n displayName: this._provider.getMetadata().DisplayName,\n relatedEntityName: this._provider.getEntityName(),\n relatedEntityDisplayName: '',\n relatedEntityPrimaryIdAttribute: this._provider.getMetadata().PrimaryIdAttribute,\n dataType: DataTypes.LookupSimple,\n metadata: {\n Targets: [this._provider.getEntityName()]\n }\n }\n }\n\n private _normalizeText(text: string): string {\n return text.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n }\n\n private _generateLinkedEntityExpression(relatedColumn: IAvailableRelatedColumn): ILinkEntityExposedExpression {\n // Return existing alias if already mapped\n const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(relatedColumn.name);\n if (existingLinkedEntity) {\n return existingLinkedEntity;\n }\n const existingAliases = new Set([...this._foreignKeyEntityLinkMap.values()].map(link => link.alias));\n const entityName = relatedColumn.relatedEntityName;\n let alias = entityName;\n let index = 1;\n\n while (existingAliases.has(alias)) {\n alias = `${entityName}_${index++}`;\n }\n const linking: ILinkEntityExposedExpression = {\n alias: alias,\n name: entityName,\n from: relatedColumn.relatedEntityPrimaryIdAttribute,\n to: relatedColumn.name,\n linkType: 'outer'\n }\n this._foreignKeyEntityLinkMap.set(relatedColumn.name, linking);\n return linking;\n }\n\n private _cleanupUnusedLinkedEntityExpression() {\n const currentColumnsLinks = new Set<string>(this._currentColumns.map(col => Attribute.GetLinkedEntityAlias(col.name) ?? ''));\n const linkToRemove = [...this._foreignKeyEntityLinkMap.entries()].find(([key, link]) => {\n return !currentColumnsLinks.has(link.alias);\n });\n if (linkToRemove) {\n this._foreignKeyEntityLinkMap.delete(linkToRemove[0]);\n }\n }\n\n private _setLinking() {\n this._provider.setLinking([...this._foreignKeyEntityLinkMap.values()]);\n }\n private _setColumns() {\n this._provider.setColumns(this._currentColumns.map((col, i) => {\n const { id, ...newCol } = {\n ...col,\n order: i\n }\n return newCol;\n }));\n }\n\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EditColumns.js","sources":["../../../src/utils/dataset-control/EditColumns.ts"],"sourcesContent":["import { Attribute, DataTypes, EventEmitter, IAvailableRelatedColumn, IColumn, IDataProvider, IEventEmitter, ILinkEntityExposedExpression } from \"@talxis/client-libraries\";\nimport { IDatasetControl } from \"./DatasetControl\";\n\nexport interface IEditColumnsEvents {\n onColumnAdded: (column: IColumn) => void;\n onColumnsChanged: (newColumns: IColumn[]) => void;\n onRelatedEntityColumnChanged: (relatedEntityColumn: IColumn | null) => void;\n}\n\ninterface IEditColumnsOptions {\n datasetControl: IDatasetControl;\n}\n\nexport interface IEditColumns extends IEventEmitter<IEditColumnsEvents> {\n save(): void;\n getColumns(): (IColumn & { id: string })[];\n deleteColumn(name: string): void;\n addColumn(column: IColumn): void;\n getAvailableColumns(query?: string): Promise<IColumn[]>;\n getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]>;\n selectRelatedEntityColumn(column: IAvailableRelatedColumn): void;\n onColumnMoved(draggedColumnId: string, targetColumnId: string): void;\n getMainEntityColumn(): IAvailableRelatedColumn;\n}\n\nexport class EditColumns extends EventEmitter<IEditColumnsEvents> implements IEditColumns {\n private _datasetControl: IDatasetControl;\n private _provider: IDataProvider;\n private _currentColumns: (IColumn & { id: string })[] = [];\n private _relatedEntityColumn: IAvailableRelatedColumn | null = null;\n private _foreignKeyEntityLinkMap: Map<string, ILinkEntityExposedExpression> = new Map();\n\n constructor(options: IEditColumnsOptions) {\n super();\n this._datasetControl = options.datasetControl;\n this._provider = options.datasetControl.getDataset().getDataProvider();\n this._currentColumns = this._provider.getColumns().map(col => ({ ...col, id: col.name }));\n this._foreignKeyEntityLinkMap = new Map(this._provider.getLinking().map(l => [`${l.from}_${l.to}`, l]));\n }\n\n public save() {\n this._setColumns();\n this._setLinking();\n this._provider.clearSelectedRecordIds();\n this._datasetControl.requestRemount();\n }\n\n public getColumns(): (IColumn & { id: string })[] {\n return this._currentColumns;\n }\n\n public deleteColumn(name: string) {\n this._currentColumns = this._currentColumns.filter(col => col.name !== name);\n this._cleanupUnusedLinkedEntityExpression();\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public addColumn(column: IColumn) {\n if (this._relatedEntityColumn) {\n const linking = this._generateLinkedEntityExpression(this._relatedEntityColumn);\n column = {\n ...column,\n name: `${linking.alias}.${column.name}`,\n displayName: `${column.displayName} (${this._relatedEntityColumn.displayName})`\n }\n }\n this._currentColumns.unshift({ ...column, id: column.name });\n this.dispatchEvent('onColumnAdded', column);\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n\n public async getAvailableColumns(query?: string): Promise<IColumn[]> {\n const entityName = this._relatedEntityColumn?.metadata?.Targets?.[0] ?? this._provider.getEntityName();\n const availableColumns = await this._provider.getAvailableColumns({ entityName: entityName });\n if (!query) return availableColumns;\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return availableColumns.filter(col =>\n this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery)\n );\n }\n\n\n public async getAvailableRelatedColumns(query?: string): Promise<IAvailableRelatedColumn[]> {\n const relatedColumns = await this._provider.getAvailableRelatedColumns();\n const allColumns = [...relatedColumns, this.getMainEntityColumn()];\n\n if (!query) {\n return allColumns.sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n const normalizedQuery = this._normalizeText(query).toLowerCase();\n return allColumns\n .filter(col => {\n return this._normalizeText(col.displayName || '').toLowerCase().includes(normalizedQuery);\n })\n .sort((a, b) => (a.displayName || '').localeCompare(b.displayName || ''));\n }\n\n public selectRelatedEntityColumn(column: IAvailableRelatedColumn) {\n this._relatedEntityColumn = column.name === this._provider.getMetadata().PrimaryIdAttribute ? null : { ...column };\n this.dispatchEvent('onRelatedEntityColumnChanged', this._relatedEntityColumn);\n }\n\n public onColumnMoved(draggedColumnId: string, targetColumnId: string) {\n if (draggedColumnId !== targetColumnId) {\n const oldIndex = this._currentColumns.findIndex(col => col.id === draggedColumnId);\n const newIndex = this._currentColumns.findIndex(col => col.id === targetColumnId);\n\n const newColumns = [...this._currentColumns];\n const [movedItem] = newColumns.splice(oldIndex, 1);\n newColumns.splice(newIndex, 0, movedItem);\n\n this._currentColumns = newColumns;\n this.dispatchEvent('onColumnsChanged', this._currentColumns);\n }\n }\n\n public getMainEntityColumn(): IAvailableRelatedColumn {\n return {\n name: this._provider.getMetadata().PrimaryIdAttribute,\n displayName: this._provider.getMetadata().DisplayName,\n relatedEntityName: this._provider.getEntityName(),\n relatedEntityDisplayName: '',\n relatedEntityPrimaryIdAttribute: this._provider.getMetadata().PrimaryIdAttribute,\n dataType: DataTypes.LookupSimple,\n metadata: {\n Targets: [this._provider.getEntityName()]\n }\n }\n }\n\n private _normalizeText(text: string): string {\n return text.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n }\n\n private _generateLinkedEntityExpression(relatedColumn: IAvailableRelatedColumn): ILinkEntityExposedExpression {\n // Return existing alias if already mapped\n const existingLinkedEntity = this._foreignKeyEntityLinkMap.get(`${relatedColumn.relatedEntityPrimaryIdAttribute}_${relatedColumn.name}`);\n if (existingLinkedEntity) {\n return existingLinkedEntity;\n }\n const existingAliases = new Set([...this._foreignKeyEntityLinkMap.values()].map(link => link.alias));\n const entityName = relatedColumn.relatedEntityName;\n let alias = entityName;\n let index = 1;\n\n while (existingAliases.has(alias)) {\n alias = `${entityName}_${index++}`;\n }\n const linking: ILinkEntityExposedExpression = {\n alias: alias,\n name: entityName,\n from: relatedColumn.relatedEntityPrimaryIdAttribute,\n to: relatedColumn.name,\n linkType: 'outer'\n }\n this._foreignKeyEntityLinkMap.set(`${relatedColumn.relatedEntityPrimaryIdAttribute}_${relatedColumn.name}`, linking);\n return linking;\n }\n\n private _cleanupUnusedLinkedEntityExpression() {\n const currentColumnsLinks = new Set<string>(this._currentColumns.map(col => Attribute.GetLinkedEntityAlias(col.name) ?? ''));\n const linkToRemove = [...this._foreignKeyEntityLinkMap.entries()].find(([key, link]) => {\n return !currentColumnsLinks.has(link.alias);\n });\n if (linkToRemove) {\n this._foreignKeyEntityLinkMap.delete(linkToRemove[0]);\n }\n }\n\n private _setLinking() {\n this._provider.setLinking([...this._foreignKeyEntityLinkMap.values()]);\n }\n private _setColumns() {\n this._provider.setColumns(this._currentColumns.map((col, i) => {\n const { id, ...newCol } = {\n ...col,\n order: i\n }\n return newCol;\n }));\n }\n\n}"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talxis/base-controls",
3
- "version": "1.2601.5",
3
+ "version": "1.2602.2",
4
4
  "description": "Set of React components that natively work with Power Apps Component Framework APIs.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -83,7 +83,7 @@
83
83
  "@dnd-kit/sortable": "^10.0.0",
84
84
  "@dnd-kit/utilities": "^3.2.2",
85
85
  "@fluentui/react-migration-v8-v9": "^9.6.20",
86
- "@talxis/client-libraries": "1.2601.5",
86
+ "@talxis/client-libraries": "1.2602.2",
87
87
  "color": "^4.2.3",
88
88
  "dayjs": "^1.11.10",
89
89
  "debounce": "^2.2.0",