@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.
Files changed (72) hide show
  1. package/README.md +77 -2
  2. package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +3 -3
  3. package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -1
  4. package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.d.ts +2 -0
  5. package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.js +15 -0
  6. package/dist/components/DatasetControl/EditColumns/CommandBar/CommandBar.js.map +1 -0
  7. package/dist/components/DatasetControl/EditColumns/EditColumns.d.ts +15 -2
  8. package/dist/components/DatasetControl/EditColumns/EditColumns.js +16 -7
  9. package/dist/components/DatasetControl/EditColumns/EditColumns.js.map +1 -1
  10. package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.d.ts +2 -0
  11. package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.js +10 -0
  12. package/dist/components/DatasetControl/EditColumns/OptionCommandBar/OptionCommandBar.js.map +1 -0
  13. package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.d.ts +3 -0
  14. package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js +12 -0
  15. package/dist/components/DatasetControl/EditColumns/OptionText/OptionText.js.map +1 -0
  16. package/dist/components/DatasetControl/EditColumns/OptionText/styles.d.ts +6 -0
  17. package/dist/components/DatasetControl/EditColumns/OptionText/styles.js +13 -0
  18. package/dist/components/DatasetControl/EditColumns/OptionText/styles.js.map +1 -0
  19. package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js +2 -2
  20. package/dist/components/DatasetControl/EditColumns/ScopeSelector/ScopeSelector.js.map +1 -1
  21. package/dist/components/DatasetControl/EditColumns/Selector/Selector.d.ts +1 -0
  22. package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +17 -2
  23. package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -1
  24. package/dist/components/DatasetControl/EditColumns/Selector/styles.d.ts +7 -0
  25. package/dist/components/DatasetControl/EditColumns/Selector/styles.js +14 -0
  26. package/dist/components/DatasetControl/EditColumns/Selector/styles.js.map +1 -0
  27. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js +12 -9
  28. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItem.js.map +1 -1
  29. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.d.ts +2 -0
  30. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.js +14 -0
  31. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/SortableItemCommandBar.js.map +1 -0
  32. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.d.ts +8 -0
  33. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.js +15 -0
  34. package/dist/components/DatasetControl/EditColumns/SortableItem/SortableItemCommandBar/styles.js.map +1 -0
  35. package/dist/components/DatasetControl/EditColumns/components.d.ts +18 -0
  36. package/dist/components/DatasetControl/EditColumns/components.js +15 -0
  37. package/dist/components/DatasetControl/EditColumns/components.js.map +1 -0
  38. package/dist/components/DatasetControl/EditColumns/index.d.ts +1 -0
  39. package/dist/components/DatasetControl/EditColumns/index.js +2 -0
  40. package/dist/components/DatasetControl/EditColumns/index.js.map +1 -0
  41. package/dist/components/DatasetControl/EditColumns/styles.d.ts +9 -0
  42. package/dist/components/DatasetControl/EditColumns/styles.js +10 -1
  43. package/dist/components/DatasetControl/EditColumns/styles.js.map +1 -1
  44. package/dist/components/DatasetControl/EditColumns/useEditColumns.d.ts +9 -2
  45. package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -1
  46. package/dist/components/DatasetControl/translations.d.ts +4 -0
  47. package/dist/components/DatasetControl/translations.js +1 -0
  48. package/dist/components/DatasetControl/translations.js.map +1 -1
  49. package/dist/components/DateTime/DateTime.js +5 -1
  50. package/dist/components/DateTime/DateTime.js.map +1 -1
  51. package/dist/components/DateTime/hooks/useDateTime.js +11 -3
  52. package/dist/components/DateTime/hooks/useDateTime.js.map +1 -1
  53. package/dist/components/Grid/cells/cell/Cell.js +6 -0
  54. package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
  55. package/dist/components/NestedControlRenderer/NestedControl.js +2 -1
  56. package/dist/components/NestedControlRenderer/NestedControl.js.map +1 -1
  57. package/dist/hooks/index.d.ts +2 -0
  58. package/dist/hooks/index.js +2 -0
  59. package/dist/hooks/index.js.map +1 -1
  60. package/dist/hooks/useIsLoading.d.ts +1 -0
  61. package/dist/hooks/useIsLoading.js +22 -0
  62. package/dist/hooks/useIsLoading.js.map +1 -0
  63. package/dist/hooks/useIsMounted.d.ts +1 -0
  64. package/dist/hooks/useIsMounted.js +14 -0
  65. package/dist/hooks/useIsMounted.js.map +1 -0
  66. package/dist/index.d.ts +10 -2
  67. package/dist/index.js +2 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/utils/dataset-control/EditColumns.d.ts +2 -2
  70. package/dist/utils/dataset-control/EditColumns.js +2 -1
  71. package/dist/utils/dataset-control/EditColumns.js.map +1 -1
  72. package/package.json +2 -2
package/README.md CHANGED
@@ -2,5 +2,80 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/@talxis/base-controls)](https://www.npmjs.com/package/@talxis/base-controls)
4
4
 
5
- ## Developing
6
- Refer to [Developing](./docs/developing.md) for more information.
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":"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"}
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,2 @@
1
+ import { ICommandBarProps } from "@talxis/react-components";
2
+ export declare const CommandBar: (props: ICommandBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -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
- interface IEditColumnsProps {
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":";;;;;;;;;;;;;;;;;AAmCa,MAAA,WAAW,GAAG,CAAC,KAAwB,KAAI;AACpD,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACjD,IAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC;AAC5C,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;AAC3C,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AACjC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvE,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAC/G,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AACxC,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC5D,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACtD,MAAM,CAAC,2BAA2B,EAAE,qBAAqB,CAAC,GAAG,gBAAgB,EAAE,CAAC;IAChF,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAElF,MAAMA,YAAU,GAAG,EAAE,GAAGC,UAAiB,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AACjE,IAAA,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAE/B,IAAA,eAAe,CAAqB,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACpF,IAAA,eAAe,CAAqB,gBAAgB,EAAE,8BAA8B,EAAE,MAAK;AACvF,QAAA,qBAAqB,EAAE,CAAC;QACxB,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACvC,KAAC,CAAC,CAAC;IACH,eAAe,CAAqB,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnI,SAAS,CAAC,MAAK;QACX,KAAK,CAAC,QAAQ,GAAG;YACb,qBAAqB;YACrB,gBAAgB;AACnB,SAAA,CAAC,CAAA;KACL,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,MAAK;QAClB,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC;AACpE,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;AACrC,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,KAAK,IAAI,CAAA,EAAA,EAAK,cAAc,CAAA,CAAE,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAA;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,EAAyE,KAAI;AAC5F,QAAA,OAAQ,EAAoB,EAAE,GAAG,KAAK,QAAQ,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AAC9F,KAAC,CAAC;AAEF,IAAA,OAAOC,GAAC,CAAA,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,cAAEF,YAAU,EAAE,EAC9E,QAAA,EAAAG,IAAA,CAAC,KAAK,EAAA,EACF,UAAU,EAAE,QAAQ,EAAE,EACtB,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,WAAW;gBAC1B,QAAQ,EAAE,MAAM,CAAC,aAAa;gBAC9B,iBAAiB,EAAE,MAAM,CAAC,sBAAsB;gBAChD,OAAO,EAAE,MAAM,CAAC,YAAY;AAC/B,aAAA,EACD,gBAAgB,EAAA,IAAA,EAChB,qBAAqB,EAAE,MAAK;AACxB,gBAAA,OAAOA,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAC5C,QAAA,EAAA,CAAAD,GAAA,CAAC,aAAa,EAAA,EACV,OAAO,EAAE,MAAK;gCACV,gBAAgB,CAAC,IAAI,EAAE,CAAC;gCACxB,KAAK,CAAC,SAAS,EAAE,CAAC;6BACrB,EACD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACtB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAC7D,CAAA,EACFA,IAAC,aAAa,EAAA,EACV,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EACxB,OAAO,EAAE,KAAK,CAAC,SAAS,EAC1B,CAAA,CAAA,EAAA,CACA,CAAA;aACT,EAAA,GACG,KAAK,CAAC,UAAU,aAEnB,SAAS,IAAIA,IAAC,OAAO,EAAA,EAAC,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EACnDA,IAAC,OAAO,EAAA,EAAA,CAAG,EACL,CAAA,EACVC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,MAAM,EACzB,QAAA,EAAA,CAAAD,GAAA,CAACF,YAAU,CAAC,UAAU,IAAC,KAAK,EAAE,EAAE,EAAI,CAAA,EACpCG,cAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,QAAA,EAAA,CAAA,iBAAiB,KACdA,cAAK,SAAS,EAAE,MAAM,CAAC,QAAQ,aAC3BD,GAAC,CAAA,KAAK,cAAE,MAAM,CAAC,eAAe,CAAC,EAAE,GAAS,EAC1CA,GAAA,CAAC,aAAa,EAAG,EAAA,CAAA,CAAA,EAAA,CACf,CACT,EACDA,GAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,YAC/C,CAAC,2BAA2B,IAAIA,GAAC,CAAA,cAAc,IAC5C,eAAe,EAAE,yBAAyB,EAAA,CAAI,EAChD,CAAA,CAAA,EAAA,CACJ,IACJ,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACnEA,GAAC,CAAA,UAAU,IACP,OAAO,EAAE,CAAC,MAAM,CAAC,EACjB,SAAS,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAClG,SAAS,EAAE,CAAC,sBAAsB,CAAC,YAEnCA,GAAC,CAAA,eAAe,IACZ,QAAQ,EAAE,2BAA2B,EACrC,KAAK,EAAE,gBAAgB,CAAC,UAAU,EAAE,EACpC,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAA,QAAA,EACtC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,IAAG;oCAC5C,OAAOA,GAAA,CAAC,YAAY,EAAA,EAAgB,MAAM,EAAE,GAAG,EAAA,EAArB,GAAG,CAAC,IAAI,CAAiB,CAAA;AACvD,iCAAC,CAAC,EACA,CAAA,EAAA,CACQ,GACT,EACX,CAAA,CAAA,EAAA,CACF,GACkB,CAAA;AAClC;;;;"}
@@ -0,0 +1,2 @@
1
+ import { IOptionCommandBarProps } from "../components";
2
+ export declare const OptionCommandBar: (props: IOptionCommandBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -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,3 @@
1
+ import { IColumn } from "@talxis/client-libraries";
2
+ import { GroupBase, OptionProps } from "react-select";
3
+ export declare const OptionText: (props: React.PropsWithChildren<OptionProps<IColumn, boolean, GroupBase<IColumn>>>) => import("react/jsx-runtime").JSX.Element;
@@ -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,6 @@
1
+ export declare const getOptionTextStyles: () => import("@fluentui/react").IProcessedStyleSet<{
2
+ optionText: {
3
+ flexGrow: number;
4
+ gap: number;
5
+ };
6
+ }>;
@@ -0,0 +1,13 @@
1
+ import { mergeStyleSets } from '@fluentui/react';
2
+
3
+ const getOptionTextStyles = () => {
4
+ return mergeStyleSets({
5
+ optionText: {
6
+ flexGrow: 1,
7
+ gap: 10
8
+ }
9
+ });
10
+ };
11
+
12
+ export { getOptionTextStyles };
13
+ //# sourceMappingURL=styles.js.map
@@ -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;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
+ {"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: jsx("div", { style: { padding: '8px 12px' }, children: props.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 { 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) => 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 },\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,MAAM,KAAK,MAAM,CAAC,IAAI;AACvC,QAAA,cAAc,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;QACrE,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 { 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":";;;;;;;;;;AAmBa,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;AACvE,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE,CAAC;AAC/D,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1B,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,CACP,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAG,CAAC,UAAkB,KAAY;AACrD,QAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,GAAG,aAAa,GAAG,UAAU,CAAC;AACxG,KAAC,CAAA;IAED,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAC5C,QAAA,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI;AACvC,QAAA,cAAc,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;QACrE,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;AACD,YAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;gBACf,OAAO;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,cAAc,EAAE,MAAM;iBACzB,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,EAAK,EAAA,GAAA,KAAK,EAC3C,QAAA,EAAAA,GAAA,CAAC,WAAW,EAAA,EACR,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAE3C,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,eAAe,EAClC,QAAA,EAAA,CAAAD,GAAA,CAAC,qBAAqB,CAAC,UAAU,EAAA,EAAA,GAAK,KAAY,EAAA,CAAI,EACtDA,GAAA,CAAC,qBAAqB,CAAC,gBAAgB,EAAC,EAAA,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAI,CAAA,CAAA,EAAA,CACzF,GACI,EACE,CAAA;AACpB,YAAA,IAAI,EAAE,YAAY;AAErB,SAAA;AACJ,KAAA,CAAC,CAAA;AAEF,IAAA,OAAOA,GAAC,CAAA,WAAW,EAAK,EAAA,GAAA,cAAc,GAAI,CAAA;AAC9C;;;;"}
@@ -0,0 +1,7 @@
1
+ export declare const getSelectorStyles: () => import("@fluentui/react").IProcessedStyleSet<{
2
+ optionContainer: {
3
+ display: string;
4
+ alignItems: string;
5
+ padding: string;
6
+ };
7
+ }>;
@@ -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, Text, IconButton } from '@fluentui/react';
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 editColumnsModel = useEditColumns();
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("div", { className: styles.sortableItem, ref: setNodeRef, style: style, ...attributes, ...listeners, children: [jsx(Text, { title: displayName, children: displayName }), jsx(IconButton
23
- //onClick gets cancelled by dnd kit if placed directly on the button, so we use onMouseUp
24
- , {
25
- //onClick gets cancelled by dnd kit if placed directly on the button, so we use onMouseUp
26
- onMouseUp: () => editColumnsModel.deleteColumn(column.name), iconProps: {
27
- iconName: 'Delete'
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, IconButton } from \"@fluentui/react\";\nimport { useModel } from \"../../useModel\";\nimport { useEditColumns } from \"../useEditColumns\";\n\nexport const SortableItem = (props: { column: IColumn }) => {\n const { column} = props;\n const editColumnsModel = 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\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <div className={styles.sortableItem} ref={setNodeRef} style={style} {...attributes} {...listeners}>\n <Text title={displayName}>{displayName}</Text>\n <IconButton\n //onClick gets cancelled by dnd kit if placed directly on the button, so we use onMouseUp\n onMouseUp={() => editColumnsModel.deleteColumn(column.name)}\n iconProps={{\n iconName: 'Delete'\n }}\n />\n </div>\n );\n}"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;AASa,MAAA,YAAY,GAAG,CAAC,KAA0B,KAAI;AACvD,IAAA,MAAM,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC;AACxB,IAAA,MAAM,gBAAgB,GAAG,cAAc,EAAE,CAAC;IAC1C,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;AAE9D,IAAA,MAAM,KAAK,GAAG;QACV,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5C,UAAU;KACb,CAAC;AAEF,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAM,GAAA,UAAU,EAAM,GAAA,SAAS,EAC7F,QAAA,EAAA,CAAAC,GAAA,CAAC,IAAI,EAAC,EAAA,KAAK,EAAE,WAAW,EAAG,QAAA,EAAA,WAAW,EAAQ,CAAA,EAC1CA,IAAC,UAAU;;;;AAEP,gBAAA,SAAS,EAAE,MAAM,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3D,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,QAAQ;iBACrB,EACH,CAAA,CAAA,EAAA,CACJ,EACR;AACN;;;;"}
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;;;;"}
@@ -0,0 +1,2 @@
1
+ import { ISortableItemCommandBarProps } from "../../components";
2
+ export declare const SortableItemCommandBar: (props: ISortableItemCommandBarProps) => import("react/jsx-runtime").JSX.Element;