devexpress-reporting-react 25.1.7 → 25.2.3

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.
@@ -4,9 +4,8 @@ import CheckBox from 'devextreme-react/check-box';
4
4
  import LoadIndicator from 'devextreme-react/load-indicator';
5
5
  import SelectBox from 'devextreme-react/select-box';
6
6
  import TextArea from 'devextreme-react/text-area';
7
- import Popup from 'devextreme-react/popup';
7
+ import Popup, { Position } from 'devextreme-react/popup';
8
8
  import Template from '../../core/Template';
9
- import { Position } from 'devextreme-react/cjs/popup';
10
9
  import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
11
10
  const AIPanel = ({ data }) => {
12
11
  const viewModel = data.model.getViewModel();
@@ -13,7 +13,7 @@ const MobilePage = ({ data }) => {
13
13
  backgroundColor: data.color
14
14
  }, hidden: !data.pageLoading }, data.loadingText),
15
15
  React.createElement("div", { className: `dxrdp-active-border ${data.active && data.hasBricks ? 'dxrdp-active' : ''}`, hidden: data.readerMode }),
16
- data.activeBricks.map(brick => React.createElement(Template, { key: brick.indexes, template: "dxrd-page-brick-mobile", data: brick })),
16
+ data.activeBricks?.map(brick => React.createElement(Template, { key: brick.indexes, template: "dxrd-page-brick-mobile", data: brick })),
17
17
  !data.brickLoading && data.editingFields &&
18
18
  data.editingFields.map((editingField, index) => React.createElement(Template, { key: index, template: editingField.template, data: editingField }))));
19
19
  };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { IDateRangeEditorMobileViewModel } from 'devexpress-reporting/viewer/mobile/internal/_parametersPopup.viewModel';
3
+ declare const TimeRangeMobile: React.FC<{
4
+ data: IDateRangeEditorMobileViewModel;
5
+ }>;
6
+ export default TimeRangeMobile;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import SelectBox from 'devextreme-react/select-box';
3
+ import useDxForceRerender from '../../../../../hooks/dxForceRerender';
4
+ import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
5
+ import { DateBox } from 'devextreme-react';
6
+ const TimeRangeMobile = ({ data }) => {
7
+ const forceRerender = useDxForceRerender();
8
+ React.useEffect(() => {
9
+ const eventHolder = data.popupModel;
10
+ return eventHolder._viewModelEvents?.on(ViewModelChangedEvent, forceRerender);
11
+ }, []);
12
+ return (React.createElement("div", { className: "dxrv-preview-date-range-mobile" },
13
+ React.createElement("div", { className: "dx-fieldset" },
14
+ React.createElement("div", { className: "dx-field" },
15
+ React.createElement(SelectBox, { dataSource: data.items, displayExpr: "displayName", onValueChanged: data.popupModel.onTextChanged, placeholder: data.popupModel.selectPeriodPlaceholder, useItemTextAsTitle: true })),
16
+ React.createElement("div", { className: "dx-field" },
17
+ React.createElement("div", { className: "dx-fieldset-column" },
18
+ React.createElement("div", { className: "dx-fieldset-header" }, data.popupModel.fromText),
19
+ React.createElement(DateBox, { type: "time", value: data.startRange.value, onValueChanged: (e) => data.startRange.onValueChanged(e), className: "dx-accessibility-timerange-item dxrv-timerange-picker-input-start" })),
20
+ React.createElement("div", { className: "dx-fieldset-column dx-fieldset-column-right" },
21
+ React.createElement("div", { className: "dx-fieldset-header" }, data.popupModel.untilText),
22
+ React.createElement("div", { className: "dxd-back-secondary dx-fieldset-column-separator" }),
23
+ React.createElement(DateBox, { type: "time", value: data.endRange.value, onValueChanged: (e) => data.endRange.onValueChanged(e), className: "dx-accessibility-timerange-item dxrv-timerange-picker-input-start" }))))));
24
+ };
25
+ export default TimeRangeMobile;
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import Popup from 'devextreme-react/popup';
3
3
  import { ScrollView } from 'devextreme-react/scroll-view';
4
4
  import Template from '../../../../core/Template';
5
- import { calculateWithZoomFactor } from '@devexpress/analytics-core/accessibility/_internal';
6
5
  import useDxAction from '../../../../../hooks/dxAction';
7
6
  import useDxMutationObserver from '../../../../../hooks/dxMutationObserver';
8
7
  const PredefinedItem = ({ item }) => {
@@ -15,20 +14,19 @@ const PredefinedItem = ({ item }) => {
15
14
  const DateRangePopupContainer = ({ data }) => {
16
15
  const ref = React.useRef();
17
16
  useDxMutationObserver(ref, data.dialogKeyboardHelper);
18
- const popupOptions = data.getPopupSettings();
19
- popupOptions.height = calculateWithZoomFactor(362);
17
+ const popupOptions = data.getPopupSettings(false);
20
18
  const scrollViewRef = React.useRef();
21
- const predefinedRangesRef = React.useRef();
19
+ const predefinedDateRangesRef = React.useRef();
22
20
  React.useEffect(() => {
23
- predefinedRangesRef.current = scrollViewRef.current?.instance().element();
21
+ predefinedDateRangesRef.current = scrollViewRef.current?.instance().element();
24
22
  }, [scrollViewRef.current]);
25
- useDxMutationObserver(predefinedRangesRef, data.predefinedRanges.accessibilityKeyboardHelper);
23
+ useDxMutationObserver(predefinedDateRangesRef, data.predefinedDateRanges.accessibilityKeyboardHelper);
26
24
  return (React.createElement(Popup, { width: popupOptions.width, height: popupOptions.height, wrapperAttr: popupOptions.wrapperAttr, position: popupOptions.position, container: popupOptions.container, showTitle: popupOptions.showTitle, showCloseButton: popupOptions.showCloseButton, hideOnOutsideClick: popupOptions.hideOnOutsideClick, onHidden: popupOptions.onHidden, animation: popupOptions.animation, shading: popupOptions.shading, visible: popupOptions.visible },
27
25
  React.createElement(ScrollView, { elementAttr: { 'role': 'dialog', 'aria-modal': 'true' }, showScrollbar: data.scrollViewOptions.showScrollbar, direction: data.scrollViewOptions.direction, useNative: data.scrollViewOptions.useNative, onInitialized: data.scrollViewOptions.onInitialized },
28
26
  React.createElement("div", { className: "dxrv-daterange-editor-popup-container", ref: ref },
29
- React.createElement(ScrollView, { className: "dxrv-daterange-editor-list dxrv-daterange-editor-item dxd-border-primary dx-accessibility-daterange-item", elementAttr: { role: 'listbox' }, showScrollbar: data.predefinedRanges.scrollViewOptions.showScrollbar, scrollByContent: data.predefinedRanges.scrollViewOptions.scrollByContent, bounceEnabled: data.predefinedRanges.scrollViewOptions.bounceEnabled, useNative: data.predefinedRanges.scrollViewOptions.useNative, scrollByThumb: data.predefinedRanges.scrollViewOptions.scrollByThumb, onInitialized: data.predefinedRanges.scrollViewOptions.onInitialized, ref: scrollViewRef },
27
+ React.createElement(ScrollView, { className: "dxrv-daterange-editor-list dxrv-daterange-editor-item dxd-border-primary dx-accessibility-daterange-item", elementAttr: { role: 'listbox' }, showScrollbar: data.predefinedDateRanges.scrollViewOptions.showScrollbar, scrollByContent: data.predefinedDateRanges.scrollViewOptions.scrollByContent, bounceEnabled: data.predefinedDateRanges.scrollViewOptions.bounceEnabled, useNative: data.predefinedDateRanges.scrollViewOptions.useNative, scrollByThumb: data.predefinedDateRanges.scrollViewOptions.scrollByThumb, onInitialized: data.predefinedDateRanges.scrollViewOptions.onInitialized, ref: scrollViewRef },
30
28
  React.createElement("div", { className: "dx-accessibility-container-background dxd-back-accented" }),
31
- data.predefinedRanges.items.map((item, index) => React.createElement(PredefinedItem, { key: index, item: item }))),
29
+ data.predefinedDateRanges.items.map((item, index) => React.createElement(PredefinedItem, { key: index, item: item }))),
32
30
  React.createElement("div", { className: "dxrv-daterange-editor-item" },
33
31
  React.createElement("div", { className: "dx-accessibility-container-background dxd-back-accented" }),
34
32
  React.createElement(Template, { template: "dxrv-daterange-calendar", data: data.startRange })),
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { IDateRangeEditorViewModel } from 'devexpress-reporting/viewer/widgets/dateRange/dateRangeEditor.viewmodel';
3
+ declare const TimeRangePopupContainer: React.FC<{
4
+ data: IDateRangeEditorViewModel;
5
+ }>;
6
+ export default TimeRangePopupContainer;
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import Popup from 'devextreme-react/popup';
3
+ import useDxMutationObserver from '../../../../../hooks/dxMutationObserver';
4
+ import Box, { Item } from 'devextreme-react/box';
5
+ import { calculateWithZoomFactor, getLocalization } from '@devexpress/analytics-core/analytics-internal-native';
6
+ import { DateBox } from 'devextreme-react';
7
+ const TimeRangePopupContainer = ({ data }) => {
8
+ const ref = React.useRef();
9
+ useDxMutationObserver(ref, data.dialogKeyboardHelper);
10
+ const popupOptions = data.getPopupSettings(true);
11
+ popupOptions.height = calculateWithZoomFactor(255);
12
+ function extendItem(event, group) {
13
+ const item = group[event.itemIndex];
14
+ if (item) {
15
+ event.itemData['click'] = item.click;
16
+ event.itemData['id'] = item.id;
17
+ }
18
+ return event;
19
+ }
20
+ function onRangeItemClick(event, group) {
21
+ data.onRangeItemClick(extendItem(event, group));
22
+ }
23
+ function onRangeItemsRendered(event, group) {
24
+ data.onRangeItemsRendered(extendItem(event, group));
25
+ }
26
+ return (React.createElement(Popup, { width: popupOptions.width, height: popupOptions.height, wrapperAttr: popupOptions.wrapperAttr, position: popupOptions.position, container: popupOptions.container, showTitle: popupOptions.showTitle, showCloseButton: popupOptions.showCloseButton, hideOnOutsideClick: popupOptions.hideOnOutsideClick, onHidden: popupOptions.onHidden, animation: popupOptions.animation, shading: popupOptions.shading, visible: popupOptions.visible, "aria-modal": "true" },
27
+ React.createElement("div", { className: "dxrv-timerange-editor-popup-content", ref: ref },
28
+ data.predefinedDateRanges?.groupedItems?.map((group, groupIndex) => (React.createElement("div", { className: "dxrv-timerange-editor-popup-container", key: `group-${groupIndex}` },
29
+ React.createElement(Box, { width: "450px", height: 25, direction: "row", items: group.map(item => { return { ratio: 1, template: item.template }; }), onItemClick: (e) => onRangeItemClick(e, group), onItemRendered: (e) => onRangeItemsRendered(e, group) })))),
30
+ React.createElement(Box, { direction: "row", width: "450px", height: 30, className: "dxrv-timerange-picker-container" },
31
+ React.createElement(Item, { ratio: 1 },
32
+ React.createElement("div", { className: "dxrv-timerange-editor-popup-picker" },
33
+ React.createElement("span", null,
34
+ " ",
35
+ getLocalization('Start', 'PreviewStringId.RangeParameters_Start')),
36
+ React.createElement(DateBox, { type: "time", value: data.startRange.value, onValueChanged: (e) => data.startRange.onValueChanged(e), className: "dx-accessibility-timerange-item dxrv-timerange-picker-input-start" }))),
37
+ React.createElement(Item, { ratio: 1 },
38
+ React.createElement("div", { className: "dxrv-timerange-editor-popup-picker" },
39
+ React.createElement("span", null,
40
+ " ",
41
+ getLocalization('End', 'PreviewStringId.RangeParameters_End')),
42
+ React.createElement(DateBox, { type: "time", value: data.endRange.value, onValueChanged: (e) => data.endRange.onValueChanged(e), className: "dx-accessibility-timerange-item dxrv-timerange-picker-input-end" })))))));
43
+ };
44
+ export default TimeRangePopupContainer;
@@ -1,2 +1,2 @@
1
- export * from './PopupContainer';
2
- export { default } from './PopupContainer';
1
+ export * from './DatePopupContainer';
2
+ export { default } from './DatePopupContainer';
@@ -1,2 +1,2 @@
1
- export * from './PopupContainer';
2
- export { default } from './PopupContainer';
1
+ export * from './DatePopupContainer';
2
+ export { default } from './DatePopupContainer';
@@ -14,7 +14,7 @@ const Image = ({ data }) => {
14
14
  const pageRendererRef = React.useRef();
15
15
  useDxPreviewPageRenderer(pageRendererRef, data.imageOptions);
16
16
  return (React.createElement("div", null,
17
- data.activeBricks.map(brick => React.createElement(Template, { key: brick.indexes, template: "dxrd-page-brick-mobile", data: brick })),
17
+ data.activeBricks?.map(brick => React.createElement(Template, { key: brick.indexes, template: "dxrd-page-brick-mobile", data: brick })),
18
18
  data.clickableBricks.map(brick => React.createElement(Template, { key: brick.indexes, template: "dxrd-page-brick-clickable", data: brick })),
19
19
  !data.brickLoading
20
20
  && data.editingFields
@@ -7,8 +7,7 @@ import useDxLazyImages from '../../../../hooks/dxLazyImages';
7
7
  import useDxToView from '../../../../hooks/dxToView';
8
8
  import useDxTextCopier from '../../../../hooks/dxTextCopier';
9
9
  import Button from 'devextreme-react/button';
10
- import Popup from 'devextreme-react/popup';
11
- import { Position } from 'devextreme-react/cjs/popup';
10
+ import Popup, { Position } from 'devextreme-react/popup';
12
11
  const MultiPageHolder = ({ lazyImagesOptions, pages }) => {
13
12
  const lazyImagesRef = React.useRef();
14
13
  useDxLazyImages(lazyImagesRef, lazyImagesOptions);
@@ -51,6 +51,8 @@ import MobileActionsExport from './Mobile/Actions/MobileActionsExport';
51
51
  import MobileParametersPopup from './Mobile/Parameters/MobileParametersPopup';
52
52
  import MobileParameters from './Mobile/Parameters/MobileParameters';
53
53
  import MobileParametersDateRange from './Mobile/Parameters/MobileParametersDateRange';
54
+ import TimeRangePopupContainer from './ParametersPanel/DateRange/PopupContainer/TimePopupContainer';
55
+ import TimeRangeMobile from './ParametersPanel/DateRange/Mobile';
54
56
  export const reportingTemplates = {
55
57
  'dxrd-preview-pager': Pager,
56
58
  'dxrd-zoom-autofit-select-template': Zoom,
@@ -66,6 +68,7 @@ export const reportingTemplates = {
66
68
  'dxrd-preview-ai-panel': AIPanel,
67
69
  'dxrd-multivalue-editable': MultiValueEditable,
68
70
  'dxrv-range-parameter': DateRange,
71
+ 'dxrv-daterange-editor-timeonly-popup': TimeRangePopupContainer,
69
72
  'dxrv-daterange-editor-popup': DateRangePopupContainer,
70
73
  'dxrv-daterange-calendar': Calendar,
71
74
  'dxrdp-surface': Surface,
@@ -102,6 +105,7 @@ export const reportingTemplates = {
102
105
  'dxrv-preview-parameters-mobile': MobileParameters,
103
106
  'dxrv-range-parameter-mobile': MobileParametersDateRange,
104
107
  'dxrv-preview-date-range-mobile': DateRangeMobile,
108
+ 'dxrv-preview-time-range-mobile': TimeRangeMobile,
105
109
  'dxrd-menu-export-content': MobileActionsExport,
106
110
  'dxrdp-search-mobile': MobileSearch,
107
111
  'dxrdp-pages-mobile': MobilePaginator,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devexpress-reporting-react",
3
- "version": "25.1.7",
3
+ "version": "25.2.3",
4
4
  "homepage": "https://www.devexpress.com/",
5
5
  "bugs": "https://www.devexpress.com/support/",
6
6
  "author": "Developer Express Inc.",
@@ -21,13 +21,13 @@
21
21
  "@types/prop-types": "15.7.13",
22
22
  "@types/react": "^18.0.0 || ^19.0.0",
23
23
  "@types/react-dom": "^18.0.0 || ^19.0.0",
24
- "devextreme-react": "25.1.7",
24
+ "devextreme-react": "25.2.3",
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.7",
28
- "devexpress-reporting": "25.1.7"
27
+ "devexpress-reporting": "25.2.3",
28
+ "@devexpress/analytics-core": "25.2.3"
29
29
  },
30
- "commitSHA": "cabf3ed6d55dded163f9e1cb8a62c415e70a17a4",
30
+ "commitSHA": "3e020449bb3873a595400e9e33460de1965cf2ea",
31
31
  "scripts": {
32
32
  "build": "echo done"
33
33
  }