devextreme-planit-treegrid-react 1.1.9 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,21 +30,29 @@ npm install devextreme-planit-treegrid-react
30
30
  ```
31
31
  import DxPlanitTreeGrid from 'devextreme-planit-treegrid-react'
32
32
 
33
- <DxPlanitTreeGrid
34
- id='dx-planit-vera-pivotgrid-id'
35
- ref={$childRef}
36
- dataSource={dataSource}
37
- groupField={TreeDataGroup}
38
- dataColor={[
39
- { format: 'percent', color: 'rgb(26, 169, 228)', condition: '>= 110' },
40
- { format: 'percent', color: '#fd7e14', condition: '< 100' },
41
- ]}
42
- convertNullToHipen={true}
43
- convertZeroToHipen={true}
44
- stateStoringKey={'dx-vera-pivotgrid-storing'}
45
- allowSortingBySummary={true}
46
- ...
47
- />
33
+ <>
34
+ <LoadPanel position={{ of: 'dx-planit-vera-pivotgrid-id' }} />
35
+ <DxPlanitTreeGrid
36
+ id="dx-planit-vera-pivotgrid-id"
37
+ ref={$childRef}
38
+ dataSource={dataSource}
39
+ groupField={TreeDataGroup}
40
+ dataColor={[
41
+ { format: 'percent', color: 'rgb(26, 169, 228)', condition: '>= 110' },
42
+ { format: 'percent', color: '#fd7e14', condition: '< 100' },
43
+ ]}
44
+ convertNullToHipen={true}
45
+ convertZeroToHipen={true}
46
+ allowSortingBySummary={true}
47
+ allowFiltering={true}
48
+ allowSorting={true}
49
+ ...
50
+ >
51
+ <HeaderFilter allowSearch={true} showRelevantValues={true} />
52
+ <FieldPanel visible={true} />
53
+ <StateStoring enabled={true} type="sessionStorage" storageKey={'dx-vera-pivotgrid-storing'} />
54
+ </DxPlanitTreeGrid>
55
+ </>
48
56
  ```
49
57
 
50
58
  ```
@@ -95,19 +103,10 @@ export const TreeDataGroup: TypeDxPlanit.IGroupField[] = [
95
103
 
96
104
  ```
97
105
 
98
- \*\*Note: [DevExtreme PivotGrid](https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxPivotGrid/) 중 아래의 기능은 사용 불능 처리되었습니다.
106
+ \*\*Note: [DevExtreme PivotGrid](https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxPivotGrid/) 의 property중 아래의 기능은 사용 불능 처리되었습니다.
99
107
 
100
108
  > width, height, showColumnGrandTotals, showColumnTotals, showRowGrandTotals, FieldChooser
101
109
 
102
- \*\*Note: [DevExtreme PivotGrid](https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxPivotGrid/) 중 아래의 기능은 사용 방법이 변경되었습니다.
110
+ \*\*Note: [DevExtreme PivotGrid](https://js.devexpress.com/Documentation/ApiReference/UI_Components/dxPivotGrid/) 추가 기능 중 아래의 기능은 일부 제한되었습니다.
103
111
 
104
- > &lt;StateStoring enabled='true' /&gt; 은 stateStoringKey: boolean property로 대체되었습니다.
105
- >
106
- > stateStoringKey가 없을 경우, &lt;StateStoring enabled='false' /&gt; 와 동일하게 작동합니다.
107
-
108
- ```
109
- <DxPlanitTreeGrid
110
- stateStoringKey={'dx-vera-pivotgrid-storing'}
111
- ...
112
- />
113
- ```
112
+ > &lt;FieldPanel enabled='true' /&gt; 의 속성 중 showColumnFields, showDataFields, showFilterFields 사용 불능 처리되었습니다.
@@ -19,9 +19,7 @@ Object.defineProperty(exports, '__esModule', {
19
19
  });
20
20
  exports.default = void 0;
21
21
  var _react = require('react');
22
- var _loadPanel = require('devextreme-react/load-panel');
23
22
  var _pivotGrid = _interopRequireWildcard(require('devextreme-react/pivot-grid'));
24
- var _dataGrid = require('devextreme-react/data-grid');
25
23
  var _excel_exporter = require('devextreme/excel_exporter');
26
24
  var _exceljs = require('exceljs');
27
25
  var _fileSaver = _interopRequireDefault(require('file-saver'));
@@ -133,7 +131,7 @@ function _arrayWithHoles(arr) {
133
131
  if (Array.isArray(arr)) return arr;
134
132
  }
135
133
  /**
136
- * devextreme pivotgrid Configrations 중 사용 불가 항목 : id, width, height, showColumnGrandTotals, showColumnTotals, showRowGrandTotals, FieldChooser
134
+ * devextreme pivotgrid Configrations 중 사용 불가 항목 : id, width, height, showColumnGrandTotals, showColumnTotals, showRowGrandTotals, FieldChooser. fieldPanel,
137
135
  * devextreme pivotgrid Configrations 중 사용 방법 변경 항목 : stateStoring, Export
138
136
  * onExported, onFileSaving 이벤트 사용하지 않음.
139
137
  */
@@ -145,7 +143,8 @@ function _arrayWithHoles(arr) {
145
143
 
146
144
  var grandTotalCssNm = 'data-grand-total';
147
145
  var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref) {
148
- var _props$id = props.id,
146
+ var children = props.children,
147
+ _props$id = props.id,
149
148
  id = _props$id === void 0 ? 'dx-planit-vera-pivotgrid-id' : _props$id,
150
149
  groupField = props.groupField,
151
150
  dataColor = props.dataColor,
@@ -153,8 +152,6 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
153
152
  convertNullToHipen = _props$convertNullToH === void 0 ? true : _props$convertNullToH,
154
153
  _props$convertZeroToH = props.convertZeroToHipen,
155
154
  convertZeroToHipen = _props$convertZeroToH === void 0 ? true : _props$convertZeroToH,
156
- _props$stateStoringKe = props.stateStoringKey,
157
- stateStoringKey = _props$stateStoringKe === void 0 ? '' : _props$stateStoringKe,
158
155
  _props$allowExpandAll = props.allowExpandAll,
159
156
  allowExpandAll = _props$allowExpandAll === void 0 ? false : _props$allowExpandAll,
160
157
  _props$allowFiltering = props.allowFiltering,
@@ -189,8 +186,6 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
189
186
  visible = _props$visible === void 0 ? true : _props$visible,
190
187
  _props$wordWrapEnable = props.wordWrapEnabled,
191
188
  wordWrapEnabled = _props$wordWrapEnable === void 0 ? false : _props$wordWrapEnable,
192
- _props$customExcelBut = props.customExcelButton,
193
- customExcelButton = _props$customExcelBut === void 0 ? false : _props$customExcelBut,
194
189
  onCellClick = props.onCellClick,
195
190
  onCellPrepared = props.onCellPrepared,
196
191
  onContentReady = props.onContentReady,
@@ -222,11 +217,42 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
222
217
  argb: 'FF7E7E7E',
223
218
  },
224
219
  };
225
- (0, _react.useImperativeHandle)(ref, function () {
226
- return {
227
- exportToExcel: exportToExcel,
228
- };
229
- });
220
+
221
+ /**
222
+ * props.children 경고문 출력
223
+ * @param child props.children
224
+ */
225
+ var warnDisableProps = function warnDisableProps(child) {
226
+ if (child.props.showColumnFields || child.props.showFilterFields || child.props.showDataFields) {
227
+ console.warn('FieldPanel의 showColumnFields, showFilterFields, showDataFields 기능은 사용하실 수 없습니다');
228
+ }
229
+ };
230
+
231
+ /**
232
+ * props.children 중 FieldPanel 일부 기능 불능화
233
+ * @param child props.children
234
+ * @returns
235
+ */
236
+ var modifyChildren = function modifyChildren(child, index) {
237
+ if (child.type.name === 'FieldPanel') {
238
+ var _child$props$visible, _child$props$allowFie, _child$props$showRowF;
239
+ warnDisableProps(child);
240
+ return /*#__PURE__*/ _react.createElement(_pivotGrid.FieldPanel, {
241
+ key: 'FieldPanel' + index,
242
+ visible: (_child$props$visible = child.props.visible) !== null && _child$props$visible !== void 0 ? _child$props$visible : false,
243
+ allowFieldDragging:
244
+ (_child$props$allowFie = child.props.allowFieldDragging) !== null && _child$props$allowFie !== void 0
245
+ ? _child$props$allowFie
246
+ : true,
247
+ showColumnFields: false,
248
+ showFilterFields: false,
249
+ showDataFields: false,
250
+ showRowFields:
251
+ (_child$props$showRowF = child.props.showRowFields) !== null && _child$props$showRowF !== void 0 ? _child$props$showRowF : true,
252
+ });
253
+ }
254
+ return child;
255
+ };
230
256
 
231
257
  /**
232
258
  * 그리드 사이즈 재조정
@@ -585,13 +611,6 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
585
611
  }
586
612
  };
587
613
 
588
- /**
589
- * 그리드 펼침 정보 세션스토리지 리셋
590
- */
591
- var resetSession = function resetSession() {
592
- sessionStorage.removeItem(stateStoringKey);
593
- };
594
-
595
614
  /**
596
615
  * 엑셀 export 명령
597
616
  * @param fileName 저장하고자 하는 엑셀파일명
@@ -613,7 +632,7 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
613
632
  */
614
633
  var convertDataControllerColumnsInfo = function convertDataControllerColumnsInfo(component) {
615
634
  var arr = [];
616
- var columnInfo = component._dataController._columnsInfo.forEach(function (column) {
635
+ component._dataController._columnsInfo.forEach(function (column) {
617
636
  var newColumn = column.slice();
618
637
  if (groupField && newColumn.length === 1 && newColumn[0].type === 'GT' && newColumn[0].text === 'Grand Total') {
619
638
  arr.push.apply(arr, _toConsumableArray(makeDataControllerColumnGroup(groupField)));
@@ -659,6 +678,51 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
659
678
  e.cancel = true;
660
679
  };
661
680
 
681
+ /**
682
+ * props.children 요소 중 일부 요소 default 설정 변경
683
+ * @param child ReactNode
684
+ * @returns ReatNode
685
+ */
686
+ var convertChildren = function convertChildren(child) {
687
+ if (Array.isArray(child)) {
688
+ return child.map(function (item, index) {
689
+ return modifyChildren(item, index);
690
+ });
691
+ } else {
692
+ return modifyChildren(child, 0);
693
+ }
694
+ };
695
+
696
+ /**
697
+ * StateStoring 의 storageKey값 가져오기
698
+ * @param child props.children
699
+ * @returns storageKey값
700
+ */
701
+ var getStateStorageKey = function getStateStorageKey(child) {
702
+ if (Array.isArray(child)) {
703
+ var stateStoring = child.filter(function (node) {
704
+ return node.type.name === 'StateStoring';
705
+ });
706
+ if (stateStoring !== null && stateStoring !== void 0 && stateStoring.length) {
707
+ return stateStoring[0].props.storageKey;
708
+ }
709
+ return null;
710
+ } else if (child.type.name === 'StateStoring') {
711
+ return child.props.storageKey;
712
+ }
713
+ return null;
714
+ };
715
+
716
+ /**
717
+ * 그리드 펼침 정보 세션스토리지 리셋
718
+ */
719
+ var resetSession = function resetSession() {
720
+ var stateStoringKey = getStateStorageKey(children);
721
+ if (stateStoringKey) {
722
+ sessionStorage.removeItem(stateStoringKey);
723
+ }
724
+ };
725
+
662
726
  /**
663
727
  * devextreme CellPreparedEvent 이벤트 실행
664
728
  * @param e
@@ -677,9 +741,8 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
677
741
  * devextreme Raise Event
678
742
  */
679
743
  var onContentReadyChild = function onContentReadyChild(e) {
680
- setTimeout(function () {
681
- return insertRowHeaderGroup();
682
- }, 0);
744
+ insertRowHeaderGroup();
745
+ // setTimeout(() => insertRowHeaderGroup(), 0);
683
746
  getGridSize();
684
747
  return onContentReady ? onContentReady(e) : undefined;
685
748
  };
@@ -701,6 +764,11 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
701
764
  var onOptionChangedChild = function onOptionChangedChild(e) {
702
765
  return onOptionChanged ? onOptionChanged(e) : undefined;
703
766
  };
767
+ (0, _react.useImperativeHandle)(ref, function () {
768
+ return {
769
+ exportToExcel: exportToExcel,
770
+ };
771
+ });
704
772
  (0, _react.useEffect)(
705
773
  function () {
706
774
  if (Object.keys(dataSource).length) {
@@ -718,11 +786,6 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
718
786
  /*#__PURE__*/ _react.createElement(
719
787
  'div',
720
788
  null,
721
- /*#__PURE__*/ _react.createElement(_loadPanel.LoadPanel, {
722
- position: {
723
- of: id,
724
- },
725
- }),
726
789
  /*#__PURE__*/ _react.createElement(
727
790
  _pivotGrid.default,
728
791
  {
@@ -761,11 +824,7 @@ var DxPlanitTreeGrid = /*#__PURE__*/ (0, _react.forwardRef)(function (props, ref
761
824
  onInitialized: onInitializedChild,
762
825
  onOptionChanged: onOptionChangedChild,
763
826
  },
764
- /*#__PURE__*/ _react.createElement(_dataGrid.StateStoring, {
765
- enabled: stateStoringKey === null || stateStoringKey === void 0 ? void 0 : stateStoringKey.length,
766
- type: 'sessionStorage',
767
- storageKey: stateStoringKey,
768
- }),
827
+ convertChildren(children),
769
828
  /*#__PURE__*/ _react.createElement(_pivotGrid.FieldChooser, {
770
829
  enabled: false,
771
830
  })
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import React from 'react';
1
2
  import DevExpress from 'devextreme';
3
+ import { HeaderFilter } from 'devextreme-react/pivot-grid';
2
4
  import { Format } from 'devextreme/localization';
3
5
 
4
6
  export declare const DxPlanitTreeGrid;
@@ -32,7 +34,8 @@ export declare module TypeDxPlanit {
32
34
  dataColor?: IColorInfo[];
33
35
  convertNullToHipen?: boolean;
34
36
  convertZeroToHipen?: boolean;
35
- stateStoringKey?: string;
36
37
  customExcelButton?: boolean;
38
+ HeaderFilter?: HeaderFilter;
39
+ children?: React.ReactNode;
37
40
  }
38
41
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devextreme-planit-treegrid-react",
3
- "version": "1.1.9",
3
+ "version": "1.3.0",
4
4
  "description": "Devextreme의 DxPivotGrid를 Tree Grid처럼 보여주는 Wrapper입니다.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -41,15 +41,15 @@
41
41
  "not op_mini all"
42
42
  ],
43
43
  "dependencies": {
44
- "react": "^18.2.0",
45
- "react-dom": "^18.2.0",
46
- "react-router-dom": "^6.4.3",
47
- "react-scripts": "^5.0.1",
48
44
  "devextreme": "^22.1.6",
49
- "devextreme-planit-treegrid-react": "^1.1.8",
45
+ "devextreme-planit-treegrid-react": "^1.2.9",
50
46
  "devextreme-react": "^22.1.6",
51
47
  "exceljs": "^4.3.0",
52
48
  "file-saver": "^2.0.5",
49
+ "react": "^18.2.0",
50
+ "react-dom": "^18.2.0",
51
+ "react-router-dom": "^6.4.3",
52
+ "react-scripts": "^5.0.1",
53
53
  "typescript": "^4.9.3",
54
54
  "uuid": "^9.0.0",
55
55
  "web-vitals": "^2.1.4"