devexpress-reporting-react 25.1.2-beta → 25.1.4
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/dx-report-viewer/components/analytics/Properties/CollectionEditor/CollectionEditor.js +1 -1
- package/dx-report-viewer/components/analytics/Properties/Editors/EditorBase/EditorBase.js +1 -1
- package/dx-report-viewer/components/reporting/AIPanel/AIPanel.js +6 -1
- package/dx-report-viewer/components/reporting/Editing/CharacterComb/CharacterComb.js +1 -1
- package/dx-report-viewer/components/reporting/Editing/ExportTool/ExportTool.js +1 -1
- package/dx-report-viewer/components/reporting/Editing/TextField/Text/EditingFieldText.js +1 -1
- package/dx-report-viewer/components/reporting/ParametersPanel/DateRange/DateRange/DateRange.js +2 -0
- package/dx-report-viewer/components/reporting/ParametersPanel/Editor/Editor/Editor.js +1 -0
- package/dx-report-viewer/components/reporting/ReportPreview/Page/Page.js +1 -1
- package/dx-report-viewer/components/reporting/ReportPreview/Surface/Surface.js +10 -6
- package/dx-report-viewer/components/reporting/Search/Search.js +5 -1
- package/dx-report-viewer/hooks/dxEllipsisEditor.js +1 -3
- package/dx-report-viewer/hooks/dxTextCopier.d.ts +4 -0
- package/dx-report-viewer/hooks/dxTextCopier.js +6 -0
- package/package.json +7 -7
package/dx-report-viewer/components/analytics/Properties/CollectionEditor/CollectionEditor.js
CHANGED
|
@@ -53,7 +53,7 @@ const CollectionEditor = ({ viewModel, contentTemplate }) => {
|
|
|
53
53
|
React.createElement("div", { ref: ref },
|
|
54
54
|
React.createElement("div", { className: "dx-collectioneditor-header dx-accordion-header" },
|
|
55
55
|
React.createElement("div", { className: "dx-editor-header" },
|
|
56
|
-
React.createElement("div", { role: "treeitem", className: "dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger", "aria-expanded": viewModel.alwaysShow || !viewModel.collapsed ? 'true' : 'false', "aria-owns": viewModel.contentId, id: viewModel.headerId },
|
|
56
|
+
React.createElement("div", { role: "treeitem", className: "dx-field dxrd-complex-editor dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger", "aria-expanded": viewModel.alwaysShow || !viewModel.collapsed ? 'true' : 'false', "aria-owns": viewModel.contentId, id: viewModel.headerId },
|
|
57
57
|
React.createElement(CollectionEditorActions, { data: viewModel }),
|
|
58
58
|
!!viewModel.displayName && React.createElement("div", { className: "dx-collectioneditor-header-text dxd-text-primary", style: { paddingLeft: viewModel.padding + 'px' } },
|
|
59
59
|
React.createElement(Template, { className: `dx-collapsing-image dxrd-display-inline-block ${!viewModel.collapsed ? 'dx-image-expanded' : ''}`, template: "dxrd-svg-collapsed" }),
|
|
@@ -22,7 +22,7 @@ const EditorBase = ({ data }) => {
|
|
|
22
22
|
return (React.createElement("div", { className: "dx-editor", hidden: !data.visible },
|
|
23
23
|
React.createElement("div", { className: "dx-group", ref: accordionRef },
|
|
24
24
|
React.createElement("div", { className: "dx-editor-header" },
|
|
25
|
-
React.createElement("div", { className: `dx-field ${data.isComplexEditor ? 'dxrd-accessibility-accordion-trigger dx-accessibility-focus-border-accented' : ''}`, role: "treeitem", id: data.isComplexEditor ? data.headerId : undefined, "aria-owns": data.isComplexEditor ? data.contentId : undefined, "aria-expanded": data.isComplexEditor ? (data.alwaysShow || !data.collapsed ? 'true' : 'false') : undefined },
|
|
25
|
+
React.createElement("div", { className: `dx-field ${data.isComplexEditor ? 'dxrd-complex-editor dxrd-accessibility-accordion-trigger dx-accessibility-focus-border-accented' : ''}`, role: "treeitem", id: data.isComplexEditor ? data.headerId : undefined, "aria-owns": data.isComplexEditor ? data.contentId : undefined, "aria-expanded": data.isComplexEditor ? (data.alwaysShow || !data.collapsed ? 'true' : 'false') : undefined },
|
|
26
26
|
React.createElement("div", { className: `dx-field-label dx-accordion-header dxd-text-primary ${data.templateName === 'dx-emptyHeader' ? 'dx-accordion-empty' : ''}`, style: { paddingLeft: data.padding['padding-left'] + 'px' } }, data.isComplexEditor ? React.createElement(GroupHeader, { data: data }) : React.createElement(EditorLabel, { data: data })),
|
|
27
27
|
React.createElement("div", { className: `dx-field-value ${data.isPropertyHighlighted ? 'dxd-border-accented' : ''}` }, data.templateName !== 'dx-emptyHeader' && React.createElement(LazyTemplate, { isResolved: isResolved, template: data.templateName, data: data })))),
|
|
28
28
|
data.isComplexEditor && (React.createElement("div", { className: "dx-editor-content dx-accordion-content", role: "group", "aria-labelledby": data.headerId, id: data.contentId, "aria-hidden": !data.alwaysShow && data.collapsed ? 'true' : 'false' }, data.editorCreated && React.createElement(Template, { template: data.contentTemplateName, data: data }))))));
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import
|
|
2
|
+
import Button from 'devextreme-react/button';
|
|
3
|
+
import CheckBox from 'devextreme-react/check-box';
|
|
4
|
+
import LoadIndicator from 'devextreme-react/load-indicator';
|
|
5
|
+
import SelectBox from 'devextreme-react/select-box';
|
|
6
|
+
import TextArea from 'devextreme-react/text-area';
|
|
7
|
+
import Popup from 'devextreme-react/popup';
|
|
3
8
|
import Template from '../../core/Template';
|
|
4
9
|
import { Position } from 'devextreme-react/cjs/popup';
|
|
5
10
|
import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
|
|
@@ -13,6 +13,6 @@ const CharacterComb = ({ data }) => {
|
|
|
13
13
|
(!data.active || data.field.readOnly) &&
|
|
14
14
|
data.cells.map((cell, index) => (React.createElement("div", { key: index, className: "dxrp-editing-field-charactercomb-cell", style: processStyles(cell.style) }, cell.text))),
|
|
15
15
|
data.active && !data.field.readOnly &&
|
|
16
|
-
React.createElement("textarea", { className: "dxrp-editing-field-text dxrd-background-white", value: value, onChange: handleValueChanged, style: processStyles(data.textStyle), onBlur: () => data.hideEditor(true), onKeyUp: event => data.keypressAction(data, event.nativeEvent) })));
|
|
16
|
+
React.createElement("textarea", { className: "dxrp-editing-field-text dxrd-background-white", value: value, onChange: handleValueChanged, style: processStyles(data.textStyle), onBlur: () => data.hideEditor(true), onKeyUp: event => data.keypressAction(data, event.nativeEvent), onInput: event => data.onInput(data, event.nativeEvent) })));
|
|
17
17
|
};
|
|
18
18
|
export default CharacterComb;
|
|
@@ -14,7 +14,7 @@ const ExportTool = ({ data }) => {
|
|
|
14
14
|
}, [data]);
|
|
15
15
|
return (React.createElement("div", { ref: elementRef },
|
|
16
16
|
React.createElement("div", { className: "dxrd-visually-hidden" },
|
|
17
|
-
React.createElement("form", {
|
|
17
|
+
React.createElement("form", { method: "post" })),
|
|
18
18
|
React.createElement(Popup, { width: data.popupOptions.width, height: data.popupOptions.height, title: data.popupOptions.title, visible: data.popupOptions.visible, showCloseButton: true, onHidden: () => data.popupOptions.onHidden(), toolbarItems: data.popupOptions.toolbarItems, wrapperAttr: data.popupOptions.wrapperAttr, container: popupOptions?.container, position: popupOptions?.position },
|
|
19
19
|
React.createElement("div", { className: "dxrd-print-dialog-content" },
|
|
20
20
|
React.createElement("div", null, data.printingTexts.caption),
|
|
@@ -5,6 +5,6 @@ const TextEditingField = ({ data }) => {
|
|
|
5
5
|
setValue(value);
|
|
6
6
|
data.value = value;
|
|
7
7
|
};
|
|
8
|
-
return (React.createElement("textarea", { className: "dxrp-editing-field-text", value: value, onChange: e => handleValueChanged(e.target.value), style: data.textStyle, onBlur: () => data.hideEditor(true), onKeyUp: event => data.keypressAction(data, event.nativeEvent) }));
|
|
8
|
+
return (React.createElement("textarea", { className: "dxrp-editing-field-text", value: value, onChange: e => handleValueChanged(e.target.value), style: data.textStyle, onBlur: () => data.hideEditor(true), onKeyUp: event => data.keypressAction(data, event.nativeEvent), onInput: event => data.onInput(data, event.nativeEvent) }));
|
|
9
9
|
};
|
|
10
10
|
export default TextEditingField;
|
package/dx-report-viewer/components/reporting/ParametersPanel/DateRange/DateRange/DateRange.js
CHANGED
|
@@ -32,6 +32,8 @@ const DateRange = ({ viewModel }) => {
|
|
|
32
32
|
buttonAction: processClickEvent,
|
|
33
33
|
value: viewModel.displayValue,
|
|
34
34
|
readOnly: true,
|
|
35
|
+
disabled: viewModel.disabled,
|
|
36
|
+
visible: viewModel.visible,
|
|
35
37
|
openOnFieldClick: true,
|
|
36
38
|
inputAttr: { 'aria-label': viewModel._displayName, id: viewModel._editorInputId }
|
|
37
39
|
});
|
|
@@ -21,6 +21,7 @@ const PropertyEditor = ({ data }) => {
|
|
|
21
21
|
const treeItemCssClasses = ['dx-field'];
|
|
22
22
|
data.isComplexEditor && treeItemCssClasses.push('dxrd-accessibility-accordion-trigger');
|
|
23
23
|
data.isComplexEditor && treeItemCssClasses.push('dx-accessibility-focus-border-accented');
|
|
24
|
+
data.isComplexEditor && treeItemCssClasses.push('dxrd-complex-editor');
|
|
24
25
|
data.editorOptions?.hasVerticalLabel && treeItemCssClasses.push('dxrd-vertical-label');
|
|
25
26
|
const isResolved = (newVal) => data.setIsRendered(newVal);
|
|
26
27
|
return (React.createElement("div", { className: "dx-editor", hidden: !data.visible },
|
|
@@ -4,7 +4,7 @@ import useDxMutationObserver from '../../../../hooks/dxMutationObserver';
|
|
|
4
4
|
import useDxBrickSelection from '../../../../hooks/dxBrickSelection';
|
|
5
5
|
import useDxPreviewPageRenderer from '../../../../hooks/dxPreviewPageRenderer';
|
|
6
6
|
import Menu from 'devextreme-react/menu';
|
|
7
|
-
import
|
|
7
|
+
import LoadPanel from 'devextreme-react/load-panel';
|
|
8
8
|
const EditingFieldsHolder = ({ editingFields, editingFieldsKeyboardHelper }) => {
|
|
9
9
|
const mutationObserverRef = React.useRef();
|
|
10
10
|
useDxMutationObserver(mutationObserverRef, editingFieldsKeyboardHelper);
|
|
@@ -5,7 +5,9 @@ import useDxMutationObserver from '../../../../hooks/dxMutationObserver';
|
|
|
5
5
|
import useDxAutoFit from '../../../../hooks/dxAutoFit';
|
|
6
6
|
import useDxLazyImages from '../../../../hooks/dxLazyImages';
|
|
7
7
|
import useDxToView from '../../../../hooks/dxToView';
|
|
8
|
-
import
|
|
8
|
+
import useDxTextCopier from '../../../../hooks/dxTextCopier';
|
|
9
|
+
import Button from 'devextreme-react/button';
|
|
10
|
+
import Popup from 'devextreme-react/popup';
|
|
9
11
|
import { Position } from 'devextreme-react/cjs/popup';
|
|
10
12
|
const MultiPageHolder = ({ lazyImagesOptions, pages }) => {
|
|
11
13
|
const lazyImagesRef = React.useRef();
|
|
@@ -25,10 +27,12 @@ const Surface = ({ data }) => {
|
|
|
25
27
|
const clipboardMessage = getLocalization('Clipboard', 'ASPxReportsStringId.WebDocumentViewer_AriaClipboard');
|
|
26
28
|
const autoFitRef = React.useRef();
|
|
27
29
|
useDxAutoFit(autoFitRef, data.currentPage?.autoFitOptions);
|
|
30
|
+
const textCopier = React.useRef();
|
|
31
|
+
useDxTextCopier(textCopier, { viewModel: data });
|
|
28
32
|
const dxMutationObserverRef = React.useRef();
|
|
29
33
|
useDxMutationObserver(dxMutationObserverRef, data.previewBrickKeyboardHelper);
|
|
30
34
|
return (React.createElement(React.Fragment, null,
|
|
31
|
-
React.createElement("div", { className: `dxrd-preview-wrapper ${data.rtlReport ? 'dx-rtl' : ''} ${data.editingFieldsHighlighted ? 'dxrp-editing-fields-hightlighted' : ''}`, "data-bind": "textCopier" },
|
|
35
|
+
React.createElement("div", { ref: textCopier, className: `dxrd-preview-wrapper ${data.rtlReport ? 'dx-rtl' : ''} ${data.editingFieldsHighlighted ? 'dxrp-editing-fields-hightlighted' : ''}`, "data-bind": "textCopier" },
|
|
32
36
|
React.createElement(Template, { template: "dxrd-preview-progress-bar", data: data.progressBar }),
|
|
33
37
|
React.createElement("div", { className: "dxrd-preview-surface", ref: dxMutationObserverRef },
|
|
34
38
|
!data.showMultipagePreview && (React.createElement("div", { className: "dxrd-report-preview-holder", role: "list" }, (!!data.currentPage && (data.currentPage.pageLoading || (!data.currentPage.pageLoading && data.currentPage.pageLoaded))) && (React.createElement("div", { role: "listitem", className: "dxrd-report-preview dx-accessibility-page-item dx-accessibility-border-accented", ref: autoFitRef, style: { width: data.currentPage.width + 'px', height: data.currentPage.height + 'px' } },
|
|
@@ -36,12 +40,12 @@ const Surface = ({ data }) => {
|
|
|
36
40
|
data.showMultipagePreview && !!data.currentPage && React.createElement(MultiPageHolder, { pages: data.pages, lazyImagesOptions: data.lazyImagesOptions }),
|
|
37
41
|
React.createElement("div", { className: `dxrd-report-preview-placeholder ${!!data.currentPage ? 'dxrd-visually-hidden' : ''}` },
|
|
38
42
|
React.createElement("div", { "aria-live": "assertive", "aria-atomic": "true", className: "dxd-empty-area-placeholder-text-color dxd-text-info" }, data.emptyDocumentCaption))),
|
|
39
|
-
React.createElement(Popup, { width: 450, height: 150, visible: data.
|
|
43
|
+
React.createElement(Popup, { width: 450, height: 150, visible: data._exportTranslatedDocPopupVisible, container: '.dxrd-preview-surface', dragEnabled: false, hideOnOutsideClick: true, showCloseButton: false, showTitle: false, onHidden: () => data.onExportPopupHiding() },
|
|
40
44
|
React.createElement(Position, { at: "top", my: "top", of: "#dxrd-preview-ai-panel-id", collision: "fit" }),
|
|
41
|
-
React.createElement("span", { "data-bind": "text:
|
|
45
|
+
React.createElement("span", { "data-bind": "text: _exportTranslatedDodumentWarningMsg", className: "dxrd-preview-export-warning-popup-text" }, data._exportTranslatedDodumentWarningMsg),
|
|
42
46
|
React.createElement("div", { className: "dxrd-preview-export-warning-popup-button-group" },
|
|
43
|
-
React.createElement(Button, { text: data.
|
|
44
|
-
React.createElement(Button, { text: data.
|
|
47
|
+
React.createElement(Button, { text: data._exportTranslatedDocumentButtonText, onClick: () => data._exportTranslatedHandler(), className: "dxrd-preview-export-warning-popup-button dx-button-default" }),
|
|
48
|
+
React.createElement(Button, { text: data._exportOriginalDocumentButtonText, onClick: () => data._exportTranslatedCancel(), className: "dxrd-preview-export-warning-popup-button" })))),
|
|
45
49
|
React.createElement("div", { id: "dxrd-preview-bricks-live-region", className: "dxrd-visually-hidden", "aria-live": "polite", "aria-atomic": "true" }),
|
|
46
50
|
React.createElement("div", { id: "clipboard-container", className: "dxrd-position-absolute dxrd-top--100px" },
|
|
47
51
|
React.createElement("textarea", { disabled: true, "aria-label": clipboardMessage, id: "clipboard" }))));
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import useDxAction from '../../../hooks/dxAction';
|
|
3
|
-
import
|
|
3
|
+
import TextBox from 'devextreme-react/text-box';
|
|
4
|
+
import Button from 'devextreme-react/button';
|
|
5
|
+
import CheckBox from 'devextreme-react/check-box';
|
|
6
|
+
import LoadIndicator from 'devextreme-react/load-indicator';
|
|
7
|
+
import List from 'devextreme-react/list';
|
|
4
8
|
import useDxMutationObserver from '../../../hooks/dxMutationObserver';
|
|
5
9
|
import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
|
|
6
10
|
const SearchResultItem = ({ item }) => {
|
|
@@ -12,9 +12,7 @@ const useDxEllipsisEditor = (options) => {
|
|
|
12
12
|
};
|
|
13
13
|
}, []);
|
|
14
14
|
React.useEffect(() => {
|
|
15
|
-
|
|
16
|
-
editor.option('value', options.value);
|
|
17
|
-
}
|
|
15
|
+
editor?._updateOptions(options);
|
|
18
16
|
});
|
|
19
17
|
return ref;
|
|
20
18
|
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { initializeTextCopierBinding } from 'devexpress-reporting/viewer/internal/_bindings';
|
|
3
|
+
const useDxTextCopier = (ref, options) => {
|
|
4
|
+
React.useEffect(() => options && ref.current && initializeTextCopierBinding(ref.current, options), []);
|
|
5
|
+
};
|
|
6
|
+
export default useDxTextCopier;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devexpress-reporting-react",
|
|
3
|
-
"version": "25.1.
|
|
3
|
+
"version": "25.1.4",
|
|
4
4
|
"homepage": "https://www.devexpress.com/",
|
|
5
5
|
"bugs": "https://www.devexpress.com/support/",
|
|
6
6
|
"author": "Developer Express Inc.",
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"@types/prop-types": "15.7.13",
|
|
22
|
-
"@types/react": "^18.0.
|
|
23
|
-
"@types/react-dom": "^18.0.
|
|
24
|
-
"devextreme-react": "25.1.
|
|
22
|
+
"@types/react": "^18.0.0 || ^19.0.0",
|
|
23
|
+
"@types/react-dom": "^18.0.0 || ^19.0.0",
|
|
24
|
+
"devextreme-react": "25.1.4",
|
|
25
25
|
"react": "^18.0.0 || ^19.0.0",
|
|
26
26
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
27
|
-
"@devexpress/analytics-core": "25.1.
|
|
28
|
-
"devexpress-reporting": "25.1.
|
|
27
|
+
"@devexpress/analytics-core": "25.1.4",
|
|
28
|
+
"devexpress-reporting": "25.1.4"
|
|
29
29
|
},
|
|
30
|
-
"commitSHA": "
|
|
30
|
+
"commitSHA": "5b78c68d9e427bf7b2541409c002eb0368b76696",
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "echo done"
|
|
33
33
|
}
|