@talxis/base-controls 1.2602.3 → 1.2603.1
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/README.md +77 -2
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +3 -3
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.d.ts +2 -0
- package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.js +15 -0
- package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/EditColumns.d.ts +15 -2
- package/dist/components/DatasetControl/EditColumns/EditColumns.js +16 -7
- package/dist/components/DatasetControl/EditColumns/EditColumns.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.d.ts +2 -0
- package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.js +10 -0
- package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.d.ts +3 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js +12 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/styles.d.ts +6 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/styles.js +13 -0
- package/dist/components/DatasetControl/EditColumns/OptionText/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js +2 -2
- package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.d.ts +1 -0
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +17 -2
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/Selector/styles.d.ts +7 -0
- package/dist/components/DatasetControl/EditColumns/Selector/styles.js +14 -0
- package/dist/components/DatasetControl/EditColumns/Selector/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js +12 -9
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.d.ts +2 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.js +14 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.d.ts +8 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.js +15 -0
- package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/components.d.ts +18 -0
- package/dist/components/DatasetControl/EditColumns/components.js +15 -0
- package/dist/components/DatasetControl/EditColumns/components.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/index.d.ts +1 -0
- package/dist/components/DatasetControl/EditColumns/index.js +2 -0
- package/dist/components/DatasetControl/EditColumns/index.js.map +1 -0
- package/dist/components/DatasetControl/EditColumns/styles.d.ts +9 -0
- package/dist/components/DatasetControl/EditColumns/styles.js +10 -1
- package/dist/components/DatasetControl/EditColumns/styles.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/useEditColumns.d.ts +9 -2
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -1
- package/dist/components/DatasetControl/translations.d.ts +4 -0
- package/dist/components/DatasetControl/translations.js +1 -0
- package/dist/components/DatasetControl/translations.js.map +1 -1
- package/dist/components/DateTime/DateTime.js +5 -1
- package/dist/components/DateTime/DateTime.js.map +1 -1
- package/dist/components/DateTime/hooks/useDateTime.js +11 -3
- package/dist/components/DateTime/hooks/useDateTime.js.map +1 -1
- package/dist/components/Grid/cells/cell/Cell.js +6 -0
- package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
- package/dist/components/NestedControlRenderer/NestedControl.js +2 -1
- package/dist/components/NestedControlRenderer/NestedControl.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useIsLoading.d.ts +1 -0
- package/dist/hooks/useIsLoading.js +22 -0
- package/dist/hooks/useIsLoading.js.map +1 -0
- package/dist/hooks/useIsMounted.d.ts +1 -0
- package/dist/hooks/useIsMounted.js +14 -0
- package/dist/hooks/useIsMounted.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/dataset-control/EditColumns.d.ts +2 -2
- package/dist/utils/dataset-control/EditColumns.js +2 -1
- package/dist/utils/dataset-control/EditColumns.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,5 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@talxis/base-controls)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
A set of React components made specifically to work with the [Power Apps Component Framework (PCF)](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/overview). Each supported PCF binding datatype has its own React component, so you can render fully functional Power Apps controls—like Lookups, DateTimes, and Decimals—as standard React components in both Portal and Power Apps.
|
|
6
|
+
|
|
7
|
+
## Why Base Controls?
|
|
8
|
+
|
|
9
|
+
Before this package, embedding a nested `Lookup` or other native control inside your PCF required the Nested PCF API, which didn't support binding updates and was cumbersome to work with. With Base Controls you simply render a React component and update its props to trigger a rerender:
|
|
10
|
+
|
|
11
|
+
```jsx
|
|
12
|
+
<Lookup
|
|
13
|
+
context={context}
|
|
14
|
+
parameters={{
|
|
15
|
+
value: {
|
|
16
|
+
raw: [{ entityType: 'account', id: '000', name: 'Account 1' }],
|
|
17
|
+
attributes: { Targets: ['account'] },
|
|
18
|
+
getAllViews: async (entityName) => {
|
|
19
|
+
return [{ viewId: '000', viewName: 'View 1', isDefault: true }];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}}
|
|
23
|
+
/>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
More sophisticated controls like `Lookup` or `DateTime` also expose custom hooks, so you can use the business logic while building your own presentation layer.
|
|
27
|
+
|
|
28
|
+
Base Controls handle the many small details that are easy to overlook—number formatting from User Settings, decimal/group separators, precision, error states, translations, and more—so every control behaves consistently without extra effort.
|
|
29
|
+
|
|
30
|
+
## Available Controls
|
|
31
|
+
|
|
32
|
+
| Control | Description |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `Decimal` | Decimal, currency and whole number fields |
|
|
35
|
+
| `DateTime` | Date and time picker |
|
|
36
|
+
| `Lookup` | Entity lookup field |
|
|
37
|
+
| `OptionSet` | Single-select option set |
|
|
38
|
+
| `MultiSelectOptionSet` | Multi-select option set |
|
|
39
|
+
| `TwoOptions` | Boolean / two-option toggle |
|
|
40
|
+
| `TextField` | Single-line and multi-line text |
|
|
41
|
+
| `Duration` | Duration field |
|
|
42
|
+
| `Grid` | Data grid |
|
|
43
|
+
| `DatasetControl` | Dataset-based control |
|
|
44
|
+
|
|
45
|
+
## Quick Start
|
|
46
|
+
|
|
47
|
+
Install the package:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install @talxis/base-controls
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Then import and use a control:
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { Decimal } from '@talxis/base-controls';
|
|
57
|
+
|
|
58
|
+
const [value, setValue] = React.useState<number | null>(3000);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<Decimal
|
|
62
|
+
context={context}
|
|
63
|
+
onNotifyOutputChanged={(outputs) => setValue(outputs.value ?? null)}
|
|
64
|
+
parameters={{
|
|
65
|
+
value: { raw: value, type: 'Decimal' }
|
|
66
|
+
}}
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
See the [Usage Guide](./docs/usage.md) for detailed examples covering precision, error handling, translations, component prop overrides, and context method overrides.
|
|
72
|
+
|
|
73
|
+
## Documentation
|
|
74
|
+
|
|
75
|
+
- [**Usage Guide**](./docs/usage.md) — How to use Base Controls in your PCF, including extensibility and advanced examples
|
|
76
|
+
- [**Developing**](./docs/developing.md) — Running a local build in PCF or Portal, and troubleshooting
|
|
77
|
+
- [**Releasing**](./docs/releasing.md) — How to create a new release and publish to NPM
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
See [LICENSE.md](./LICENSE.md) for details.
|
|
@@ -8,7 +8,7 @@ import { Attribute } from '@talxis/client-libraries';
|
|
|
8
8
|
|
|
9
9
|
const ColumnSelector = (props) => {
|
|
10
10
|
const { openMenuOnMount } = props;
|
|
11
|
-
const editColumnsModel = useEditColumns();
|
|
11
|
+
const editColumnsModel = useEditColumns().model;
|
|
12
12
|
const styles = useMemo(() => getColumnSelectorStyles(), []);
|
|
13
13
|
const model = useModel();
|
|
14
14
|
const labels = model.getLabels();
|
|
@@ -45,7 +45,7 @@ const ColumnSelector = (props) => {
|
|
|
45
45
|
setDefaultOptions(options);
|
|
46
46
|
})();
|
|
47
47
|
}, []);
|
|
48
|
-
return jsx(Selector, { onOverrideComponentProps: (props) => {
|
|
48
|
+
return jsx(Selector, { context: "columnSelector", onOverrideComponentProps: (props) => {
|
|
49
49
|
return {
|
|
50
50
|
...props,
|
|
51
51
|
ref: ref,
|
|
@@ -53,7 +53,7 @@ const ColumnSelector = (props) => {
|
|
|
53
53
|
inputValue: inputValue,
|
|
54
54
|
className: styles.root,
|
|
55
55
|
backspaceRemovesValue: false,
|
|
56
|
-
value: editColumnsModel.getColumns(),
|
|
56
|
+
value: editColumnsModel.getColumns().filter(col => !col.isHidden),
|
|
57
57
|
closeMenuOnSelect: false,
|
|
58
58
|
hideSelectedOptions: true,
|
|
59
59
|
defaultOptions: defaultOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSelector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { InputActionMeta } from \"react-select\";\nimport { getColumnSelectorStyles } from \"./styles\";\nimport { useModel } from \"../../useModel\";\nimport { Selector } from \"../Selector/Selector\";\nimport { useEditColumns } from \"../useEditColumns\";\nimport { SelectInstance } from 'react-select';\nimport { Attribute, IColumn } from \"@talxis/client-libraries\";\n\ninterface IColumnSelectorProps {\n openMenuOnMount?: boolean;\n}\n\n\nexport const ColumnSelector = (props: IColumnSelectorProps) => {\n const { openMenuOnMount } = props;\n const editColumnsModel = useEditColumns();\n const styles = useMemo(() => getColumnSelectorStyles(), []);\n const model = useModel();\n const labels = model.getLabels();\n const ref = React.useRef<SelectInstance>(null);\n const [defaultOptions, setDefaultOptions] = React.useState<IColumn[]>([]);\n const [inputValue, setInputValue] = React.useState<string>('');\n\n const onChange = (columns: IColumn[]) => {\n editColumnsModel.addColumn(columns[columns.length - 1]);\n setDefaultOptions([...defaultOptions]);\n setTimeout(() => {\n ref.current?.focusInput();\n }, 0);\n }\n\n const onInputChange = (value: string, actionMeta: InputActionMeta) => {\n switch (actionMeta.action) {\n case 'menu-close':\n case 'input-blur':\n case 'set-value': {\n value = actionMeta.prevInputValue;\n break;\n }\n }\n setInputValue(value);\n return value;\n }\n\n useEffect(() => {\n if (openMenuOnMount) {\n ref.current?.focus();\n ref.current?.openMenu('first');\n }\n (async () => {\n const options = await editColumnsModel.getAvailableColumns();\n //forces refresh of defaultOptions\n setDefaultOptions(options);\n })();\n }, []);\n\n\n return <Selector<true> onOverrideComponentProps={(props) => {\n return {\n ...props,\n ref: ref,\n isMulti: true,\n inputValue: inputValue,\n className: styles.root,\n backspaceRemovesValue: false,\n value: editColumnsModel.getColumns(),\n closeMenuOnSelect: false,\n hideSelectedOptions: true,\n defaultOptions: defaultOptions,\n placeholder: `${labels[\"add-column\"]()}...`,\n controlShouldRenderValue: false,\n onInputChange: onInputChange,\n getOptionValue: (column) => Attribute.GetNameFromAlias(column.name),\n onKeyDown: (ev) => ev.key === 'Enter' && ref.current?.openMenu('first'),\n loadOptions: (inputValue: string) => editColumnsModel.getAvailableColumns(inputValue),\n onChange: (columns) => onChange(columns as IColumn[]),\n }\n }} />\n}"],"names":["_jsx"],"mappings":";;;;;;;;AAca,MAAA,cAAc,GAAG,CAAC,KAA2B,KAAI;AAC1D,IAAA,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;AAClC,IAAA,MAAM,gBAAgB,GAAG,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ColumnSelector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { InputActionMeta } from \"react-select\";\nimport { getColumnSelectorStyles } from \"./styles\";\nimport { useModel } from \"../../useModel\";\nimport { Selector } from \"../Selector/Selector\";\nimport { useEditColumns } from \"../useEditColumns\";\nimport { SelectInstance } from 'react-select';\nimport { Attribute, IColumn } from \"@talxis/client-libraries\";\n\ninterface IColumnSelectorProps {\n openMenuOnMount?: boolean;\n}\n\n\nexport const ColumnSelector = (props: IColumnSelectorProps) => {\n const { openMenuOnMount } = props;\n const editColumnsModel = useEditColumns().model;\n const styles = useMemo(() => getColumnSelectorStyles(), []);\n const model = useModel();\n const labels = model.getLabels();\n const ref = React.useRef<SelectInstance>(null);\n const [defaultOptions, setDefaultOptions] = React.useState<IColumn[]>([]);\n const [inputValue, setInputValue] = React.useState<string>('');\n\n const onChange = (columns: IColumn[]) => {\n editColumnsModel.addColumn(columns[columns.length - 1]);\n setDefaultOptions([...defaultOptions]);\n setTimeout(() => {\n ref.current?.focusInput();\n }, 0);\n }\n\n const onInputChange = (value: string, actionMeta: InputActionMeta) => {\n switch (actionMeta.action) {\n case 'menu-close':\n case 'input-blur':\n case 'set-value': {\n value = actionMeta.prevInputValue;\n break;\n }\n }\n setInputValue(value);\n return value;\n }\n\n useEffect(() => {\n if (openMenuOnMount) {\n ref.current?.focus();\n ref.current?.openMenu('first');\n }\n (async () => {\n const options = await editColumnsModel.getAvailableColumns();\n //forces refresh of defaultOptions\n setDefaultOptions(options);\n })();\n }, []);\n\n\n return <Selector<true> context=\"columnSelector\" onOverrideComponentProps={(props) => {\n return {\n ...props,\n ref: ref,\n isMulti: true,\n inputValue: inputValue,\n className: styles.root,\n backspaceRemovesValue: false,\n value: editColumnsModel.getColumns().filter(col => !col.isHidden),\n closeMenuOnSelect: false,\n hideSelectedOptions: true,\n defaultOptions: defaultOptions,\n placeholder: `${labels[\"add-column\"]()}...`,\n controlShouldRenderValue: false,\n onInputChange: onInputChange,\n getOptionValue: (column) => Attribute.GetNameFromAlias(column.name),\n onKeyDown: (ev) => ev.key === 'Enter' && ref.current?.openMenu('first'),\n loadOptions: (inputValue: string) => editColumnsModel.getAvailableColumns(inputValue),\n onChange: (columns) => onChange(columns as IColumn[]),\n }\n }} />\n}"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { CommandBar as CommandBar$1 } from '@talxis/react-components';
|
|
3
|
+
|
|
4
|
+
const CommandBar = (props) => {
|
|
5
|
+
const { items = [], farItems = [] } = props;
|
|
6
|
+
if (items.length === 0 && farItems.length === 0) {
|
|
7
|
+
return jsx(Fragment, {});
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return jsx(CommandBar$1, { ...props });
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { CommandBar };
|
|
15
|
+
//# sourceMappingURL=CommandBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandBar.js","sources":["../../../../../src/components/DatasetControl/EditColumns/CommandBar/CommandBar.tsx"],"sourcesContent":["import { CommandBar as BaseCommandBar, ICommandBarProps} from \"@talxis/react-components\";\n\nexport const CommandBar = (props: ICommandBarProps) => {\n const {items = [], farItems = []} = props;\n if(items.length === 0 && farItems.length === 0) {\n return <></>\n }\n else {\n return <BaseCommandBar {...props} />\n }\n}"],"names":["_jsx","BaseCommandBar"],"mappings":";;;AAEa,MAAA,UAAU,GAAG,CAAC,KAAuB,KAAI;IAClD,MAAM,EAAC,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAC,GAAG,KAAK,CAAC;IAC1C,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,QAAA,OAAOA,iBAAK,CAAA;AACf,KAAA;AACI,SAAA;AACD,QAAA,OAAOA,GAAC,CAAAC,YAAc,EAAK,EAAA,GAAA,KAAK,GAAI,CAAA;AACvC,KAAA;AACL;;;;"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { IPanelProps } from "@fluentui/react";
|
|
2
|
+
import { IEditColumns } from "../../../utils/dataset-control/EditColumns";
|
|
3
|
+
import { IComponents } from "./components";
|
|
4
|
+
import { IColumn } from "@talxis/client-libraries";
|
|
5
|
+
export interface IEditColumnsRef {
|
|
6
|
+
remountColumnSelector: () => void;
|
|
7
|
+
editColumnsModel: IEditColumns;
|
|
8
|
+
}
|
|
9
|
+
export interface IEditColumnsProps {
|
|
2
10
|
onDismiss: () => void;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
showScopeSelector?: boolean;
|
|
13
|
+
components?: Partial<IComponents>;
|
|
14
|
+
panelProps?: IPanelProps;
|
|
15
|
+
onGetRef?: (ref: IEditColumnsRef) => void;
|
|
16
|
+
onFilterVisibleColumns?: (columns: IColumn[]) => IColumn[];
|
|
3
17
|
}
|
|
4
18
|
export declare const EditColumns: (props: IEditColumnsProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export {};
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { useTheme, Panel, PrimaryButton, DefaultButton, Label } from '@fluentui/react';
|
|
2
|
+
import { useTheme, Panel, PrimaryButton, DefaultButton, Overlay, Label } from '@fluentui/react';
|
|
3
3
|
import { useModel } from '../useModel.js';
|
|
4
|
-
import { useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { useMemo, useRef, useState, useEffect } from 'react';
|
|
5
5
|
import { getEditColumnsStyles } from './styles.js';
|
|
6
6
|
import { useSensor, PointerSensor, DndContext } from '@dnd-kit/core';
|
|
7
7
|
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
|
|
8
8
|
import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
9
9
|
import { SortableItem } from './SortableItem/SortableItem.js';
|
|
10
|
-
import { useRerender } from '@talxis/react-components';
|
|
10
|
+
import { useRerender, Spinner } from '@talxis/react-components';
|
|
11
11
|
import { ColumnSelector } from './ColumnSelector/ColumnSelector.js';
|
|
12
12
|
import { useShouldRemount } from '../../../hooks/useShouldRemount.js';
|
|
13
13
|
import { ScopeSelector } from './ScopeSelector/ScopeSelector.js';
|
|
14
14
|
import { EditColumnsContext } from './useEditColumns.js';
|
|
15
|
+
import { components } from './components.js';
|
|
15
16
|
import { useEventEmitter } from '../../../hooks/useEventEmitter.js';
|
|
16
17
|
|
|
17
18
|
const EditColumns = (props) => {
|
|
@@ -23,11 +24,14 @@ const EditColumns = (props) => {
|
|
|
23
24
|
const labels = model.getLabels();
|
|
24
25
|
const styles = useMemo(() => getEditColumnsStyles(theme), []);
|
|
25
26
|
const editColumnsModel = useMemo(() => datasetControl.editColumns, []);
|
|
26
|
-
const columns = editColumnsModel.getColumns();
|
|
27
|
+
const columns = props.onFilterVisibleColumns?.(editColumnsModel.getColumns()) ?? editColumnsModel.getColumns();
|
|
27
28
|
const sensor = useSensor(PointerSensor);
|
|
28
29
|
const scrollableContainerRef = useRef(null);
|
|
30
|
+
const { isLoading, showScopeSelector = true } = props;
|
|
29
31
|
const [shouldRemountColumnSelector, remountColumnSelector] = useShouldRemount();
|
|
30
32
|
const [openColumnSelectorOnMount, setOpenColumnSelectorOnMount] = useState(false);
|
|
33
|
+
//TODO: unify via hook?
|
|
34
|
+
const components$1 = { ...components, ...props.components };
|
|
31
35
|
const rerender = useRerender();
|
|
32
36
|
useEventEmitter(editColumnsModel, 'onColumnsChanged', rerender);
|
|
33
37
|
useEventEmitter(editColumnsModel, 'onRelatedEntityColumnChanged', () => {
|
|
@@ -35,6 +39,12 @@ const EditColumns = (props) => {
|
|
|
35
39
|
setOpenColumnSelectorOnMount(true);
|
|
36
40
|
});
|
|
37
41
|
useEventEmitter(editColumnsModel, 'onColumnAdded', () => scrollableContainerRef.current?.scrollTo({ top: 0 }));
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
props.onGetRef?.({
|
|
44
|
+
remountColumnSelector,
|
|
45
|
+
editColumnsModel
|
|
46
|
+
});
|
|
47
|
+
}, []);
|
|
38
48
|
const getTitle = () => {
|
|
39
49
|
const collectionName = provider.getMetadata().DisplayCollectionName;
|
|
40
50
|
let title = labels["edit-columns"]();
|
|
@@ -46,7 +56,7 @@ const EditColumns = (props) => {
|
|
|
46
56
|
const onDismiss = (ev) => {
|
|
47
57
|
return ev?.key === 'Escape' ? ev?.preventDefault() : props.onDismiss();
|
|
48
58
|
};
|
|
49
|
-
return jsx(EditColumnsContext.Provider, { value: editColumnsModel, children: jsxs(Panel, { headerText: getTitle(), isOpen: true, onDismiss: onDismiss, styles: {
|
|
59
|
+
return jsx(EditColumnsContext.Provider, { value: { model: editColumnsModel, components: components$1 }, children: jsxs(Panel, { headerText: getTitle(), isOpen: true, onDismiss: onDismiss, styles: {
|
|
50
60
|
footer: styles.panelFooter,
|
|
51
61
|
commands: styles.panelCommands,
|
|
52
62
|
scrollableContent: styles.panelScrollableContent,
|
|
@@ -56,8 +66,7 @@ const EditColumns = (props) => {
|
|
|
56
66
|
editColumnsModel.save();
|
|
57
67
|
props.onDismiss();
|
|
58
68
|
}, text: labels['save'](), disabled: columns.filter(col => !col.isHidden).length === 0 }), jsx(DefaultButton, { text: labels['cancel'](), onClick: props.onDismiss })] });
|
|
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
|
-
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 => {
|
|
69
|
+
}, ...props.panelProps, children: [isLoading && jsx(Overlay, { className: styles.loadingOverlay, children: jsx(Spinner, {}) }), jsxs("div", { className: styles.header, children: [jsx(components$1.CommandBar, { items: [] }), jsxs("div", { className: styles.selectors, children: [showScopeSelector && (jsxs("div", { className: styles.selector, children: [jsx(Label, { children: labels["column-source"]() }), jsx(ScopeSelector, {})] })), jsx("div", { style: { height: 38 }, className: styles.selector, children: !shouldRemountColumnSelector && jsx(ColumnSelector, { openMenuOnMount: openColumnSelectorOnMount }) })] })] }), jsx("div", { ref: scrollableContainerRef, className: styles.scrollableContainer, children: jsx(DndContext, { sensors: [sensor], onDragEnd: (e) => editColumnsModel.moveColumn(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
70
|
return jsx(SortableItem, { column: col }, col.name);
|
|
62
71
|
}) }) }) }) })] }) });
|
|
63
72
|
};
|
|
@@ -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 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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"}
|
|
1
|
+
{"version":3,"file":"EditColumns.js","sources":["../../../../src/components/DatasetControl/EditColumns/EditColumns.tsx"],"sourcesContent":["import { DefaultButton, IPanelProps, Label, Overlay, Panel, PrimaryButton, useTheme } from \"@fluentui/react\";\nimport { useModel } from \"../useModel\";\nimport { useEffect, 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, Spinner } from \"@talxis/react-components\";\nimport { ColumnSelector } from \"./ColumnSelector/ColumnSelector\";\nimport { useShouldRemount } from \"../../../hooks/useShouldRemount\";\nimport { ScopeSelector } from \"./ScopeSelector/ScopeSelector\";\nimport { IEditColumns, IEditColumnsEvents } from \"../../../utils/dataset-control/EditColumns\";\nimport { EditColumnsContext } from \"./useEditColumns\";\nimport { IComponents } from \"./components\";\nimport { components as defaultComponents } from \"./components\";\nimport { IColumn } from \"@talxis/client-libraries\";\n\nexport interface IEditColumnsRef {\n remountColumnSelector: () => void;\n editColumnsModel: IEditColumns;\n}\n\nexport interface IEditColumnsProps {\n onDismiss: () => void;\n isLoading?: boolean;\n showScopeSelector?: boolean;\n components?: Partial<IComponents>;\n panelProps?: IPanelProps;\n onGetRef?: (ref: IEditColumnsRef) => void;\n onFilterVisibleColumns?: (columns: IColumn[]) => IColumn[];\n}\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 = props.onFilterVisibleColumns?.(editColumnsModel.getColumns()) ?? editColumnsModel.getColumns();\n const sensor = useSensor(PointerSensor);\n const scrollableContainerRef = useRef<HTMLDivElement>(null);\n const { isLoading, showScopeSelector = true } = props;\n const [shouldRemountColumnSelector, remountColumnSelector] = useShouldRemount();\n const [openColumnSelectorOnMount, setOpenColumnSelectorOnMount] = useState(false);\n //TODO: unify via hook?\n const components = { ...defaultComponents, ...props.components };\n const rerender = useRerender();\n\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 useEffect(() => {\n props.onGetRef?.({\n remountColumnSelector,\n editColumnsModel\n })\n }, []);\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={{ model: editColumnsModel, components }}>\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 {...props.panelProps}\n >\n {isLoading && <Overlay className={styles.loadingOverlay}>\n <Spinner />\n </Overlay>}\n <div className={styles.header}>\n <components.CommandBar items={[]} />\n <div className={styles.selectors}>\n {showScopeSelector && (\n <div className={styles.selector}>\n <Label>{labels[\"column-source\"]()}</Label>\n <ScopeSelector />\n </div>\n )}\n <div style={{height: 38}} className={styles.selector}>\n {!shouldRemountColumnSelector && <ColumnSelector\n openMenuOnMount={openColumnSelectorOnMount} />}\n </div>\n </div>\n </div>\n <div ref={scrollableContainerRef} className={styles.scrollableContainer}>\n <DndContext\n sensors={[sensor]}\n onDragEnd={(e) => editColumnsModel.moveColumn(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":["components","defaultComponents","_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { CommandBar } from '../CommandBar/CommandBar.js';
|
|
3
|
+
|
|
4
|
+
const OptionCommandBar = (props) => {
|
|
5
|
+
const { context, ...rest } = props;
|
|
6
|
+
return jsx(CommandBar, { ...rest });
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { OptionCommandBar };
|
|
10
|
+
//# sourceMappingURL=OptionCommandBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionCommandBar.js","sources":["../../../../../src/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.tsx"],"sourcesContent":["import { CommandBar } from \"../CommandBar/CommandBar\";\nimport { IOptionCommandBarProps } from \"../components\";\n\nexport const OptionCommandBar = (props: IOptionCommandBarProps) => {\n const { context, ...rest } = props;\n return <CommandBar {...rest} />\n}"],"names":["_jsx"],"mappings":";;;AAGa,MAAA,gBAAgB,GAAG,CAAC,KAA6B,KAAI;IAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACnC,IAAA,OAAOA,GAAC,CAAA,UAAU,EAAK,EAAA,GAAA,IAAI,GAAI,CAAA;AACnC;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { getOptionTextStyles } from './styles.js';
|
|
4
|
+
import { Text } from '@fluentui/react';
|
|
5
|
+
|
|
6
|
+
const OptionText = (props) => {
|
|
7
|
+
const styles = useMemo(() => getOptionTextStyles(), []);
|
|
8
|
+
return jsx(Text, { className: styles.optionText, children: props.children });
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { OptionText };
|
|
12
|
+
//# sourceMappingURL=OptionText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionText.js","sources":["../../../../../src/components/DatasetControl/EditColumns/OptionText/OptionText.tsx"],"sourcesContent":["import { IColumn } from \"@talxis/client-libraries\";\nimport { useMemo } from \"react\";\nimport { GroupBase, OptionProps } from \"react-select\";\nimport { getOptionTextStyles } from \"./styles\";\nimport { Text } from \"@fluentui/react\";\n\nexport const OptionText = (props: React.PropsWithChildren<OptionProps<IColumn, boolean, GroupBase<IColumn>>>) => {\n const styles = useMemo(() => getOptionTextStyles(), []);\n \n return <Text className={styles.optionText}>{props.children}</Text>\n}"],"names":["_jsx"],"mappings":";;;;;AAMa,MAAA,UAAU,GAAG,CAAC,KAAiF,KAAI;AAC5G,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;AAExD,IAAA,OAAOA,GAAC,CAAA,IAAI,EAAC,EAAA,SAAS,EAAE,MAAM,CAAC,UAAU,EAAG,QAAA,EAAA,KAAK,CAAC,QAAQ,GAAQ,CAAA;AACtE;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../src/components/DatasetControl/EditColumns/OptionText/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getOptionTextStyles = () => {\n return mergeStyleSets({\n optionText: {\n flexGrow: 1,\n gap: 10\n }\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,mBAAmB,GAAG,MAAK;AACpC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,UAAU,EAAE;AACR,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,EAAE;AACV,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -5,7 +5,7 @@ import { useState, useEffect } from 'react';
|
|
|
5
5
|
import { useModel } from '../../useModel.js';
|
|
6
6
|
|
|
7
7
|
const ScopeSelector = () => {
|
|
8
|
-
const editColumnsModel = useEditColumns();
|
|
8
|
+
const editColumnsModel = useEditColumns().model;
|
|
9
9
|
const [isDisabled, setIsDisabled] = useState(true);
|
|
10
10
|
const labels = useModel().getLabels();
|
|
11
11
|
const getOptionLabel = (column) => {
|
|
@@ -18,7 +18,7 @@ const ScopeSelector = () => {
|
|
|
18
18
|
setIsDisabled(options.length === 1);
|
|
19
19
|
})();
|
|
20
20
|
}, []);
|
|
21
|
-
return jsx(Selector, { onOverrideComponentProps: (props) => {
|
|
21
|
+
return jsx(Selector, { context: "scopeSelector", onOverrideComponentProps: (props) => {
|
|
22
22
|
return {
|
|
23
23
|
...props,
|
|
24
24
|
isMulti: false,
|
|
@@ -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 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;
|
|
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().model;\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> context=\"scopeSelector\" 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,KAAK,CAAC;IAChD,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;AAEP,IAAA,OAAOA,GAAC,CAAA,QAAQ,EAAiC,EAAA,OAAO,EAAC,eAAe,EAAC,wBAAwB,EAAE,CAAC,KAAK,KAAI;YACzG,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;;;;"}
|
|
@@ -3,6 +3,7 @@ import { GroupBase } from 'react-select';
|
|
|
3
3
|
import { AsyncProps } from 'react-select/dist/declarations/src/useAsync';
|
|
4
4
|
type ReactSelectProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> = AsyncProps<TColumn, IsMulti, GroupBase<TColumn>>;
|
|
5
5
|
interface ISelectorProps<IsMulti extends boolean = false, TColumn extends IColumn = IColumn> {
|
|
6
|
+
context: 'scopeSelector' | 'columnSelector';
|
|
6
7
|
onOverrideComponentProps?: (props: ReactSelectProps<IsMulti, TColumn>) => ReactSelectProps<IsMulti, TColumn>;
|
|
7
8
|
}
|
|
8
9
|
export declare const Selector: <IsMulti extends boolean = false, TColumn extends IColumn = IColumn>(props: ISelectorProps<IsMulti, TColumn>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { DatasetConstants } from '@talxis/client-libraries';
|
|
2
3
|
import { useTheme, Callout, DirectionalHint, TooltipHost } from '@fluentui/react';
|
|
3
4
|
import AsyncSelect from 'react-select/async';
|
|
4
5
|
import { useModel } from '../../useModel.js';
|
|
5
6
|
import { components } from 'react-select';
|
|
6
7
|
import React, { useMemo } from 'react';
|
|
8
|
+
import { getSelectorStyles } from './styles.js';
|
|
9
|
+
import { useEditColumns } from '../useEditColumns.js';
|
|
7
10
|
|
|
8
11
|
const Selector = (props) => {
|
|
9
12
|
const theme = useTheme();
|
|
10
13
|
const onOverrideComponentProps = props.onOverrideComponentProps ?? ((p) => p);
|
|
11
14
|
const labels = useModel().getLabels();
|
|
12
15
|
const id = useMemo(() => `selector-${window.crypto.randomUUID()}`, []);
|
|
16
|
+
const styles = useMemo(() => getSelectorStyles(), []);
|
|
17
|
+
const { components: editColumnsComponents } = useEditColumns();
|
|
18
|
+
const { context } = props;
|
|
13
19
|
const MemoizedMenu = useMemo(() => React.memo((props) => (jsx(Callout, { directionalHint: DirectionalHint.leftTopEdge, target: `#${id}`, children: jsx(components.Menu, { ...props }) }))), [id]);
|
|
20
|
+
const getTooltipContent = (columnName) => {
|
|
21
|
+
return columnName.endsWith(DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX) ? 'user_column' : columnName;
|
|
22
|
+
};
|
|
14
23
|
const componentProps = onOverrideComponentProps({
|
|
15
24
|
id: id,
|
|
16
25
|
getOptionValue: (column) => column.name,
|
|
@@ -31,6 +40,12 @@ const Selector = (props) => {
|
|
|
31
40
|
return {
|
|
32
41
|
width: 300
|
|
33
42
|
};
|
|
43
|
+
},
|
|
44
|
+
menuList: (base) => {
|
|
45
|
+
return {
|
|
46
|
+
...base,
|
|
47
|
+
scrollbarWidth: 'thin'
|
|
48
|
+
};
|
|
34
49
|
}
|
|
35
50
|
},
|
|
36
51
|
theme: (base) => {
|
|
@@ -46,7 +61,7 @@ const Selector = (props) => {
|
|
|
46
61
|
};
|
|
47
62
|
},
|
|
48
63
|
components: {
|
|
49
|
-
Option: (props) => jsx(components.Option, { ...props, children: jsx(TooltipHost, { content: props.data.name, children:
|
|
64
|
+
Option: (props) => jsx(components.Option, { ...props, children: jsx(TooltipHost, { content: getTooltipContent(props.data.name), children: jsxs("div", { className: styles.optionContainer, children: [jsx(editColumnsComponents.OptionText, { ...props }), jsx(editColumnsComponents.OptionCommandBar, { items: [], context: context, column: props.data })] }) }) }),
|
|
50
65
|
Menu: MemoizedMenu
|
|
51
66
|
}
|
|
52
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/Selector/Selector.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"Selector.js","sources":["../../../../../src/components/DatasetControl/EditColumns/Selector/Selector.tsx"],"sourcesContent":["import { DatasetConstants, IColumn } from \"@talxis/client-libraries\";\nimport { GroupBase } from 'react-select';\nimport { Callout, DirectionalHint, TooltipHost, useTheme, Text } 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\";\nimport { getSelectorStyles } from \"./styles\";\nimport { useEditColumns } from \"../useEditColumns\";\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 context: 'scopeSelector' | 'columnSelector';\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 const styles = useMemo(() => getSelectorStyles(), []);\n const { components: editColumnsComponents } = useEditColumns();\n const { context } = props;\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\n const getTooltipContent = (columnName: string): string => {\n return columnName.endsWith(DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX) ? 'user_column' : columnName;\n }\n\n const componentProps = onOverrideComponentProps({\n id: id,\n getOptionValue: (column) => column.name,\n getOptionLabel: (column) => 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 menuList: (base) => {\n return {\n ...base,\n scrollbarWidth: 'thin'\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={getTooltipContent(props.data.name)}\n >\n <div className={styles.optionContainer}>\n <editColumnsComponents.OptionText {...props as any} />\n <editColumnsComponents.OptionCommandBar items={[]} context={context} column={props.data} />\n </div>\n </TooltipHost>\n </components.Option>,\n Menu: MemoizedMenu\n\n }\n })\n\n return <AsyncSelect {...componentProps} />\n}"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mergeStyleSets } from '@fluentui/react';
|
|
2
|
+
|
|
3
|
+
const getSelectorStyles = () => {
|
|
4
|
+
return mergeStyleSets({
|
|
5
|
+
optionContainer: {
|
|
6
|
+
display: 'flex',
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
padding: '8px 12px'
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { getSelectorStyles };
|
|
14
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../src/components/DatasetControl/EditColumns/Selector/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getSelectorStyles = () => {\n return mergeStyleSets({\n optionContainer: {\n display: 'flex',\n alignItems: 'center',\n padding: '8px 12px'\n },\n })\n}"],"names":[],"mappings":";;AAEO,MAAM,iBAAiB,GAAG,MAAK;AAClC,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,eAAe,EAAE;AACb,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,OAAO,EAAE,UAAU;AACtB,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -3,29 +3,32 @@ import { useSortable } from '@dnd-kit/sortable';
|
|
|
3
3
|
import { CSS } from '@dnd-kit/utilities';
|
|
4
4
|
import { getSortableItemStyles } from './styles.js';
|
|
5
5
|
import { useMemo } from 'react';
|
|
6
|
-
import { useTheme,
|
|
6
|
+
import { useTheme, ThemeProvider, Text } from '@fluentui/react';
|
|
7
7
|
import { useModel } from '../../useModel.js';
|
|
8
8
|
import { useEditColumns } from '../useEditColumns.js';
|
|
9
|
+
import { useThemeGenerator } from '@talxis/react-components';
|
|
9
10
|
|
|
10
11
|
const SortableItem = (props) => {
|
|
11
12
|
const { column } = props;
|
|
12
|
-
const
|
|
13
|
+
const { model, components } = useEditColumns();
|
|
13
14
|
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: column.name });
|
|
14
15
|
const theme = useTheme();
|
|
15
16
|
const styles = useMemo(() => getSortableItemStyles(theme), []);
|
|
16
17
|
const labels = useModel().getLabels();
|
|
17
18
|
const displayName = column.displayName ?? labels['no-name']();
|
|
19
|
+
const sortableItemTheme = useThemeGenerator(theme.palette.themePrimary, theme.semanticColors.buttonBackgroundPressed, theme.semanticColors.bodyText);
|
|
18
20
|
const style = {
|
|
19
21
|
transform: CSS.Transform.toString(transform),
|
|
20
22
|
transition,
|
|
21
23
|
};
|
|
22
|
-
return (jsxs(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
return (jsxs(ThemeProvider, { theme: sortableItemTheme, className: styles.sortableItem, ref: setNodeRef, style: style, ...attributes, ...listeners, children: [jsx(Text, { title: displayName, children: displayName }), jsx(components.SortableItemCommandBar, { column: column, items: [], farItems: [{
|
|
25
|
+
key: 'delete',
|
|
26
|
+
iconProps: {
|
|
27
|
+
iconName: 'Cancel',
|
|
28
|
+
},
|
|
29
|
+
//onClick gets cancelled by dnd kit if placed directly on the button, so we use onMouseUp
|
|
30
|
+
onMouseUp: () => model.deleteColumn(column.name)
|
|
31
|
+
}] })] }));
|
|
29
32
|
};
|
|
30
33
|
|
|
31
34
|
export { SortableItem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableItem.js","sources":["../../../../../src/components/DatasetControl/EditColumns/SortableItem/SortableItem.tsx"],"sourcesContent":["import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from '@dnd-kit/utilities';\nimport { IColumn } from \"@talxis/client-libraries\";\nimport { getSortableItemStyles } from \"./styles\";\nimport { useMemo } from \"react\";\nimport { useTheme, Text,
|
|
1
|
+
{"version":3,"file":"SortableItem.js","sources":["../../../../../src/components/DatasetControl/EditColumns/SortableItem/SortableItem.tsx"],"sourcesContent":["import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from '@dnd-kit/utilities';\nimport { IColumn } from \"@talxis/client-libraries\";\nimport { getSortableItemStyles } from \"./styles\";\nimport { useMemo } from \"react\";\nimport { useTheme, Text, ThemeProvider } from \"@fluentui/react\";\nimport { useModel } from \"../../useModel\";\nimport { useEditColumns } from \"../useEditColumns\";\nimport { useThemeGenerator } from \"@talxis/react-components\";\n\nexport const SortableItem = (props: { column: IColumn }) => {\n const { column } = props;\n const { model, components } = useEditColumns()\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: column.name });\n const theme = useTheme();\n const styles = useMemo(() => getSortableItemStyles(theme), []);\n const labels = useModel().getLabels();\n const displayName = column.displayName ?? labels['no-name']();\n const sortableItemTheme = useThemeGenerator(theme.palette.themePrimary, theme.semanticColors.buttonBackgroundPressed, theme.semanticColors.bodyText);\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <ThemeProvider theme={sortableItemTheme} className={styles.sortableItem} ref={setNodeRef} style={style} {...attributes} {...listeners}>\n <Text title={displayName}>{displayName}</Text>\n <components.SortableItemCommandBar column={column} items={[]} farItems={[{\n key: 'delete',\n iconProps: {\n iconName: 'Cancel',\n },\n //onClick gets cancelled by dnd kit if placed directly on the button, so we use onMouseUp\n onMouseUp: () => model.deleteColumn(column.name)\n }]} />\n </ThemeProvider>\n );\n}"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;AAUa,MAAA,YAAY,GAAG,CAAC,KAA0B,KAAI;AACvD,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACtG,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,qBAAqB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/D,IAAA,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9D,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,uBAAuB,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAErJ,IAAA,MAAM,KAAK,GAAG;QACV,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5C,UAAU;KACb,CAAC;IAEF,QACIA,KAAC,aAAa,EAAA,EAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAM,GAAA,UAAU,EAAM,GAAA,SAAS,aACjIC,GAAC,CAAA,IAAI,EAAC,EAAA,KAAK,EAAE,WAAW,YAAG,WAAW,EAAA,CAAQ,EAC9CA,GAAA,CAAC,UAAU,CAAC,sBAAsB,EAAC,EAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACrE,wBAAA,GAAG,EAAE,QAAQ;AACb,wBAAA,SAAS,EAAE;AACP,4BAAA,QAAQ,EAAE,QAAQ;AACrB,yBAAA;;wBAED,SAAS,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;qBACnD,CAAC,EAAA,CAAI,CACM,EAAA,CAAA,EAClB;AACN;;;;"}
|