ods-component-lib 1.18.231 → 1.18.233

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 (40) hide show
  1. package/dist/components/antd/modal/OdsAdvanceModal.d.ts +7 -0
  2. package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Functions.d.ts +1 -4
  3. package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Types.d.ts +3 -31
  4. package/dist/components/devextreme/OdsTimeline/OdsTimeline.Constants.d.ts +4 -0
  5. package/dist/components/devextreme/OdsTimeline/OdsTimeline.Functions.d.ts +6 -0
  6. package/dist/components/devextreme/OdsTimeline/OdsTimeline.Types.d.ts +77 -0
  7. package/dist/components/devextreme/OdsTimeline/OdsTimeline.d.ts +5 -0
  8. package/dist/components/devextreme/OdsTimeline/OdsTimelineDateFilter.d.ts +3 -0
  9. package/dist/components/devextreme/OdsTimeline/OdsTimelineSelectionColumn.d.ts +2 -0
  10. package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Style.d.ts +9 -0
  11. package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.Types.d.ts +10 -2
  12. package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTable.d.ts +2 -2
  13. package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableSelectionColumn.d.ts +1 -1
  14. package/dist/components/devextreme/OdsTimelineTable/OdsTimelineTableTaskTemplate.d.ts +6 -0
  15. package/dist/index.css +8 -0
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +335 -382
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.modern.js +337 -385
  20. package/dist/index.modern.js.map +1 -1
  21. package/dist/stories/OdsAdvanceModal/OdsAdvanceModal.stories.d.ts +42 -0
  22. package/dist/stories/OdsAdvanceModal/Samples/BasicOdsAdvanceModal.sample.d.ts +8 -0
  23. package/dist/stories/OdsBasicDataGrid/OdsBasicDataGrid.stories.d.ts +110 -0
  24. package/dist/stories/OdsBasicDataGrid/Samples/MergeCells/MergeCells.Constants.d.ts +14 -0
  25. package/dist/stories/OdsBasicDataGrid/Samples/MergeCells/MergeCells.MockData.d.ts +7 -0
  26. package/dist/stories/OdsBasicDataGrid/Samples/MergeCells/MergeCells.Sample.d.ts +1 -0
  27. package/dist/stories/OdsModal/Samples/OdsModal.Sample.d.ts +1 -0
  28. package/dist/stories/OdsPivotGrid/OdsPivotGrid.stories.d.ts +15 -0
  29. package/dist/stories/OdsPivotGrid/Samples/BasicPivotGrid/BasicPivotGrid.Constants.d.ts +2 -0
  30. package/dist/stories/OdsPivotGrid/Samples/BasicPivotGrid/BasicPivotGrid.MockData.d.ts +7 -0
  31. package/dist/stories/OdsPivotGrid/Samples/BasicPivotGrid/BasicPivotGrid.Sample.d.ts +1 -0
  32. package/dist/stories/OdsRemoteDataGrid/Samples/MergeCells/MergeCells.Constants.d.ts +5 -0
  33. package/dist/stories/OdsRemoteDataGrid/Samples/MergeCells/MergeCells.MockData.d.ts +6 -0
  34. package/dist/stories/OdsRemoteDataGrid/Samples/MergeCells/MergeCells.Sample.d.ts +1 -0
  35. package/dist/stories/OdsTimePicker/Samples/TimeRangePicker.d.ts +2 -0
  36. package/dist/stories/OdsTimeline/OdsTimeline.Constants.d.ts +3 -0
  37. package/dist/stories/OdsTimeline/OdsTimeline.Functions.d.ts +6 -0
  38. package/dist/stories/OdsTimeline/OdsTimeline.MockData.d.ts +39 -0
  39. package/dist/stories/OdsTimelineTable/OdsTimelineTable.stories.d.ts +1 -1
  40. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -45,6 +45,7 @@ var devextremeReact = require('devextreme-react');
45
45
  var antdStyle = require('antd-style');
46
46
  var FileSaver = require('file-saver');
47
47
  require('devextreme/dist/css/dx.light.css');
48
+ var gantt = require('devextreme-react/gantt');
48
49
 
49
50
  function _toPrimitive(t, r) {
50
51
  if ("object" != typeof t || !t) return t;
@@ -37848,14 +37849,6 @@ var useStyles$a = antdStyle.createStyles(function (_ref) {
37848
37849
  };
37849
37850
  });
37850
37851
 
37851
- var checkCellSelectionConstraints$1 = function checkCellSelectionConstraints(e) {
37852
- return e.rowType == "data" && e.columnIndex > -1 && e.rowIndex > -1;
37853
- };
37854
- var cellAlreadySelected$1 = function cellAlreadySelected(pkValue, dataField, cellInfos) {
37855
- return cellInfos.some(function (cell) {
37856
- return cell.pkValue == pkValue && cell.dataField == dataField;
37857
- });
37858
- };
37859
37852
  var getMultiLevelColumns$1 = function getMultiLevelColumns(col) {
37860
37853
  return col.multiLevelColumns && col.multiLevelColumns.map(function (colItem) {
37861
37854
  return React__default.createElement(DataGrid.Column, Object.assign({
@@ -38054,31 +38047,12 @@ OdsMergeCellDataGridHelper.getInstance = function () {
38054
38047
  var useToken$2 = antd.theme.useToken;
38055
38048
  var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38056
38049
  var _props$columnResizing, _props$className, _props$selection, _props$selectOptions, _props$selectOptions$, _props$selectOptions2, _props$selectOptions$2, _props$selectOptions3;
38057
- var ref = props.ref,
38050
+ var refGrid = props.refGrid,
38058
38051
  keyExpr = props.keyExpr,
38059
- hasFastUpdate = props.hasFastUpdate,
38060
- fastUpdateButtonText = props.fastUpdateButtonText,
38061
- fastUpdateModalTitle = props.fastUpdateModalTitle,
38062
- fastUpdateModalCancelText = props.fastUpdateModalCancelText,
38063
- fastUpdateModalSaveText = props.fastUpdateModalSaveText,
38064
- fastUpdateFormRequiredFieldMessage = props.fastUpdateFormRequiredFieldMessage,
38065
- onCellClick = props.onCellClick,
38066
- onCellHoverChanged = props.onCellHoverChanged,
38067
- onFastUpdateButtonClick = props.onFastUpdateButtonClick,
38068
- onFastUpdateFinish = props.onFastUpdateFinish,
38069
- onFastUpdateCancel = props.onFastUpdateCancel,
38070
- onFastUpdateFailed = props.onFastUpdateFailed,
38071
- onCellPrepared = props.onCellPrepared,
38072
- detailGridColumns = props.detailGridColumns,
38073
- detailData = props.detailData,
38074
- masterDetailFeatures = props.masterDetailFeatures;
38052
+ onCellPrepared = props.onCellPrepared;
38075
38053
  var _useToken = useToken$2(),
38076
38054
  token = _useToken.token;
38077
- var _AntForm$useForm = antd.Form.useForm(),
38078
- fastUpdateForm = _AntForm$useForm[0];
38079
- var gridRef = ref != null ? ref : React.useRef(null);
38080
38055
  var helper = OdsMergeCellDataGridHelper.getInstance();
38081
- var pkName = keyExpr && keyExpr.toString();
38082
38056
  var _useState = React.useState(false),
38083
38057
  render = _useState[0],
38084
38058
  rerender = _useState[1];
@@ -38088,24 +38062,9 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38088
38062
  var _useState3 = React.useState([]),
38089
38063
  data = _useState3[0],
38090
38064
  setData = _useState3[1];
38091
- var _useState4 = React.useState(false),
38092
- isFastUpdateModalOpen = _useState4[0],
38093
- setIsFastUpdateModalOpen = _useState4[1];
38094
- var _useState5 = React.useState([]),
38095
- selectedCells = _useState5[0],
38096
- setSelectedCells = _useState5[1];
38097
- var _useState6 = React.useState([]),
38098
- hoveredCells = _useState6[0],
38099
- setHoveredCells = _useState6[1];
38100
- var _useState7 = React.useState([]),
38101
- ctrlSelectedCells = _useState7[0],
38102
- setCtrlSelectedCells = _useState7[1];
38103
- var _useState8 = React.useState(false),
38104
- ctrlSelection = _useState8[0],
38105
- setCtrlSelection = _useState8[1];
38106
- var _useState9 = React.useState([]),
38107
- mergedCellInfo = _useState9[0],
38108
- setMergedCellInfo = _useState9[1];
38065
+ var _useState4 = React.useState([]),
38066
+ mergedCellInfo = _useState4[0],
38067
+ setMergedCellInfo = _useState4[1];
38109
38068
  var _useStyles = useStyles$a(),
38110
38069
  gridStyle = _useStyles.styles;
38111
38070
  React.useEffect(function () {
@@ -38148,121 +38107,10 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38148
38107
  React.useEffect(function () {
38149
38108
  localization.locale(localStorage.getItem("locale"));
38150
38109
  localization.loadMessages(JSON.parse(localStorage.getItem("localTranslation")));
38151
- if (gridRef.current) {
38152
- gridRef.current.instance.updateDimensions();
38110
+ if (refGrid !== null && refGrid !== void 0 && refGrid.current) {
38111
+ refGrid.current.instance.updateDimensions();
38153
38112
  }
38154
- hasFastUpdate && document.addEventListener("keydown", keydownEvent);
38155
- return function () {
38156
- hasFastUpdate && document.removeEventListener("keydown", keydownEvent);
38157
- };
38158
38113
  }, []);
38159
- var keydownEvent = function keydownEvent(e) {
38160
- switch (e.key) {
38161
- case "Escape":
38162
- {
38163
- clearSelectedCells();
38164
- }
38165
- break;
38166
- }
38167
- };
38168
- var clearSelectedCells = function clearSelectedCells() {
38169
- setSelectedCells([]);
38170
- };
38171
- var singleSelect = function singleSelect(pkValue, dataField) {
38172
- runSetSelectedCells([{
38173
- dataField: dataField,
38174
- pkValue: pkValue
38175
- }]);
38176
- };
38177
- var multipleSelect = function multipleSelect(cells) {
38178
- if (cells.length == 0) {
38179
- return;
38180
- }
38181
- var _cells = [];
38182
- var _loop = function _loop() {
38183
- var element = cells[index];
38184
- if (!_cells.some(function (cell) {
38185
- return cell.colIndex == element.colIndex && cell.rowIndex == element.rowIndex;
38186
- })) {
38187
- _cells.push({
38188
- colIndex: element.colIndex,
38189
- rowIndex: element.rowIndex
38190
- });
38191
- }
38192
- };
38193
- for (var index = 0; index < cells.length; index++) {
38194
- _loop();
38195
- }
38196
- var result = [];
38197
- var maxColIndex = Math.max.apply(null, _cells.map(function (item) {
38198
- return item.colIndex;
38199
- }));
38200
- var minColIndex = Math.min.apply(null, _cells.map(function (item) {
38201
- return item.colIndex;
38202
- }));
38203
- var maxRowIndex = Math.max.apply(null, _cells.map(function (item) {
38204
- return item.rowIndex;
38205
- }));
38206
- var minRowIndex = Math.min.apply(null, _cells.map(function (item) {
38207
- return item.rowIndex;
38208
- }));
38209
- for (var rowIndex = minRowIndex; rowIndex <= maxRowIndex; rowIndex++) {
38210
- var _loop2 = function _loop2() {
38211
- var _column = gridRef.current.instance.columnOption(colIndex);
38212
- if (constants$2.allowedDataTypesForMultiCellEditing.some(function (item) {
38213
- return item.toLocaleLowerCase() == _column.dataType.toLocaleLowerCase();
38214
- })) {
38215
- result.push({
38216
- dataField: _column.dataField,
38217
- pkValue: gridRef.current.instance.cellValue(rowIndex, pkName)
38218
- });
38219
- }
38220
- };
38221
- for (var colIndex = minColIndex; colIndex <= maxColIndex; colIndex++) {
38222
- _loop2();
38223
- }
38224
- }
38225
- runSetSelectedCells(result);
38226
- setHoveredCells([]);
38227
- setCtrlSelectedCells([]);
38228
- };
38229
- var runSetSelectedCells = function runSetSelectedCells(value) {
38230
- var removeDuplicates = function removeDuplicates(oldValues) {
38231
- var result = [];
38232
- var _loop3 = function _loop3() {
38233
- var element = value[index];
38234
- if (element.pkValue && !oldValues.some(function (cell) {
38235
- return cell.dataField == element.dataField && cell.pkValue == element.pkValue;
38236
- })) {
38237
- result.push({
38238
- dataField: element.dataField,
38239
- pkValue: element.pkValue
38240
- });
38241
- }
38242
- };
38243
- for (var index = 0; index < value.length; index++) {
38244
- _loop3();
38245
- }
38246
- return result;
38247
- };
38248
- setSelectedCells(function (prev) {
38249
- return [].concat(prev, removeDuplicates(prev));
38250
- });
38251
- };
38252
- var removeSelectedCell = function removeSelectedCell(rowIndex, colIndex) {
38253
- var dataField = gridRef.current.instance.columnOption(colIndex).dataField;
38254
- var pkValue = gridRef.current.instance.cellValue(rowIndex, pkName);
38255
- setSelectedCells(function (prev) {
38256
- return prev.filter(function (cell) {
38257
- return !(cell.dataField == dataField && cell.pkValue == pkValue);
38258
- });
38259
- });
38260
- };
38261
- var closeModal = function closeModal() {
38262
- setIsFastUpdateModalOpen(false);
38263
- clearSelectedCells();
38264
- fastUpdateForm.resetFields();
38265
- };
38266
38114
  var actionButtons = React.useMemo(function () {
38267
38115
  if (props.actionButtonGroup) {
38268
38116
  if (props.actionButtonGroup.length > 3 && !props.edit) {
@@ -38274,18 +38122,6 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38274
38122
  return [];
38275
38123
  }
38276
38124
  }, [props.actionButtonGroup]);
38277
- var onEditorPreparing = React.useCallback(function (e) {
38278
- if (e.row !== undefined && e.parentType === "dataRow") {
38279
- if (props.handleEditorPreparing) {
38280
- props.handleEditorPreparing(e);
38281
- }
38282
- }
38283
- if (e.editorOptions && e.rowType === "data" && e.parentType === "dataRow") {
38284
- e.editorOptions.onValueChanged = function (args) {
38285
- if (args.event && args.event.type === "cancel") e.cellElement.dispatchEvent(onCancelEditEvent$1);
38286
- };
38287
- }
38288
- }, [props.isServerSide]);
38289
38125
  var customLoad = React.useCallback(function () {
38290
38126
  var state = JSON.parse(localStorage.getItem(props.exportFileName + "Storage"));
38291
38127
  if (localStorage.getItem(props.exportFileName + "Storage")) {
@@ -38312,21 +38148,6 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38312
38148
  }
38313
38149
  localStorage.setItem(props.exportFileName + "Storage", JSON.stringify(state));
38314
38150
  }, [props.filterEnabledShow]);
38315
- var onEditorPrepared = React.useCallback(function (info) {
38316
- if (info.parentType === "filterRow" && info.editorName === "dxSelectBox" && (info.dataField === "IsActive" || info.dataField === "isActive")) {
38317
- if (info.dataSource != null && info.dataSource.length > 0) {
38318
- info.showAllText = info.dataSource.find(function (i) {
38319
- return i.value === null;
38320
- }).label;
38321
- info.trueText = info.dataSource.find(function (i) {
38322
- return i.value === true;
38323
- }).label;
38324
- info.falseText = info.dataSource.find(function (i) {
38325
- return i.value === false;
38326
- }).label;
38327
- }
38328
- }
38329
- }, []);
38330
38151
  function actionCellRender(cellData, props) {
38331
38152
  var kebabMenuButtons = props.actionButtonGroup && props.actionButtonGroup.length > 3 && !props.edit ? props.actionButtonGroup.slice(2).map(function (button) {
38332
38153
  return {
@@ -38423,95 +38244,7 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38423
38244
  }
38424
38245
  return React__default.createElement(React__default.Fragment, null, buttonElements);
38425
38246
  }
38426
- var onCustomCellClick = function onCustomCellClick(e) {
38427
- if (hasFastUpdate) {
38428
- if (checkCellSelectionConstraints$1(e) && constants$2.allowedDataTypesForMultiCellEditing.some(function (item) {
38429
- return item.toLocaleLowerCase() == e.column.dataType.toLocaleLowerCase();
38430
- })) {
38431
- if (!e.event.ctrlKey) {
38432
- if (cellAlreadySelected$1(e.data[pkName], e.column.dataField, selectedCells)) {
38433
- removeSelectedCell(e.rowIndex, e.columnIndex);
38434
- } else {
38435
- singleSelect(e.data[pkName], e.column.dataField);
38436
- }
38437
- } else {
38438
- var selectedCell = {
38439
- colIndex: e.columnIndex,
38440
- rowIndex: e.rowIndex
38441
- };
38442
- if (ctrlSelection) {
38443
- multipleSelect([].concat(ctrlSelectedCells, [selectedCell]));
38444
- } else {
38445
- setCtrlSelectedCells(function (prev) {
38446
- return [].concat(prev, [selectedCell]);
38447
- });
38448
- }
38449
- setCtrlSelection(function (prev) {
38450
- return !prev;
38451
- });
38452
- }
38453
- }
38454
- }
38455
- onCellClick && onCellClick(e);
38456
- };
38457
- var onCustomCellHoverChanged = function onCustomCellHoverChanged(e) {
38458
- if (hasFastUpdate) {
38459
- if (!e.event.ctrlKey && !ctrlSelection) {
38460
- if (checkCellSelectionConstraints$1(e)) {
38461
- if (e.event.buttons === 1) {
38462
- setHoveredCells(function (prev) {
38463
- return [].concat(prev, [{
38464
- colIndex: e.columnIndex,
38465
- rowIndex: e.rowIndex
38466
- }]);
38467
- });
38468
- } else {
38469
- multipleSelect(hoveredCells);
38470
- }
38471
- } else if (e.rowType != "data") {
38472
- multipleSelect(hoveredCells);
38473
- }
38474
- }
38475
- }
38476
- onCellHoverChanged && onCellHoverChanged(e);
38477
- };
38478
- var onCustomFastUpdateButtonClick = function onCustomFastUpdateButtonClick(e) {
38479
- if (selectedCells.length > 0) {
38480
- setIsFastUpdateModalOpen(true);
38481
- }
38482
- onFastUpdateButtonClick && onFastUpdateButtonClick(e);
38483
- };
38484
- var onFastUpdateModalCancel = function onFastUpdateModalCancel(_e) {
38485
- closeModal();
38486
- onFastUpdateCancel && onFastUpdateCancel();
38487
- };
38488
- var onFastUpdateFormFinish = function onFastUpdateFormFinish(values) {
38489
- onFastUpdateFinish && onFastUpdateFinish(values, selectedCells);
38490
- closeModal();
38491
- };
38492
- var onFastUpdateFormFinishFailed = function onFastUpdateFormFinishFailed(errorInfo) {
38493
- onFastUpdateFailed && onFastUpdateFailed(errorInfo);
38494
- };
38495
- var onClickFastUpdateFormCancel = function onClickFastUpdateFormCancel(_e) {
38496
- closeModal();
38497
- onFastUpdateCancel && onFastUpdateCancel();
38498
- };
38499
38247
  var onCustomCellPrepared = function onCustomCellPrepared(e) {
38500
- var _props$edit, _props$edit2;
38501
- if (hasFastUpdate) {
38502
- if (e.rowType === "data" && e.column.allowEditing && constants$2.allowedDataTypesForMultiCellEditing.some(function (item) {
38503
- return item.toLocaleLowerCase() == e.column.dataType.toLocaleLowerCase();
38504
- })) {
38505
- if (selectedCells.some(function (cell) {
38506
- return cell.pkValue == e.data[pkName] && cell.dataField == e.column.dataField;
38507
- })) {
38508
- e.cellElement.classList.add("grid-cell-selected");
38509
- }
38510
- }
38511
- }
38512
- if (((_props$edit = props.edit) === null || _props$edit === void 0 ? void 0 : _props$edit.mode) == "cell" && (_props$edit2 = props.edit) !== null && _props$edit2 !== void 0 && _props$edit2.allowUpdating && e.rowType == "data" && !e.column.allowEditing) {
38513
- e.cellElement.classList.add("grid-cell-disable-colored");
38514
- }
38515
38248
  var isDifferentDataField = e.column.type == "selection" || e.column.dataField == dataFieldNameActions;
38516
38249
  if (e.rowType === "data" && e.columnIndex >= 0 && e.rowIndex >= 0 && (props.mergeDataFields.some(function (x) {
38517
38250
  return x == e.column.dataField;
@@ -38636,81 +38369,23 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38636
38369
  });
38637
38370
  }
38638
38371
  };
38639
- var renderMasterDetailGrid = React.useCallback(function (_ref) {
38640
- var _dataSource$data;
38641
- var dataSource = _ref.data;
38642
- var detailID = dataSource === null || dataSource === void 0 ? void 0 : (_dataSource$data = dataSource.data) === null || _dataSource$data === void 0 ? void 0 : _dataSource$data.ID;
38643
- if (!detailID || !(detailData !== null && detailData !== void 0 && detailData[detailID])) {
38644
- return null;
38645
- }
38646
- return React__default.createElement(MasterDetailDataGrid, {
38647
- columns: detailGridColumns,
38648
- dataSource: detailData[detailID],
38649
- masterDetailFeatures: masterDetailFeatures
38650
- });
38651
- }, [detailGridColumns, detailData, masterDetailFeatures]);
38652
38372
  var checkIsPropArray = function checkIsPropArray(prop) {
38653
38373
  return prop && Array.isArray(prop);
38654
38374
  };
38655
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(antd.Modal, {
38656
- title: fastUpdateModalTitle != null ? fastUpdateModalTitle : "Fast Update",
38657
- open: isFastUpdateModalOpen,
38658
- onCancel: onFastUpdateModalCancel,
38659
- footer: [],
38660
- maskClosable: true,
38661
- width: 300
38662
- }, React__default.createElement(antd.Form, {
38663
- key: "form-fastupdate",
38664
- form: fastUpdateForm,
38665
- style: {
38666
- maxWidth: "100%"
38667
- },
38668
- layout: "vertical",
38669
- onFinish: onFastUpdateFormFinish,
38670
- onFinishFailed: onFastUpdateFormFinishFailed
38671
- }, constants$2.allowedDataTypesForMultiCellEditing.map(function (item) {
38672
- switch (item) {
38673
- case "number":
38674
- return React__default.createElement(antd.Form.Item, {
38675
- name: "number",
38676
- label: "",
38677
- rules: [{
38678
- required: true,
38679
- message: fastUpdateFormRequiredFieldMessage != null ? fastUpdateFormRequiredFieldMessage : "Required field"
38680
- }]
38681
- }, React__default.createElement(OdsInputNumber, {
38682
- key: "odsinputnumber-fastupdate",
38683
- style: {
38684
- width: "100%"
38685
- },
38686
- min: 0
38687
- }));
38688
- default:
38689
- return React__default.createElement("div", null);
38690
- }
38691
- }), React__default.createElement(antd.Row, {
38692
- style: {
38693
- justifyContent: "end",
38694
- gap: token.marginSM
38695
- }
38696
- }, React__default.createElement(antd.Col, null, React__default.createElement(OdsButton, {
38697
- key: "back",
38698
- onClick: onClickFastUpdateFormCancel
38699
- }, " ", fastUpdateModalCancelText != null ? fastUpdateModalCancelText : "Cancel")), React__default.createElement(antd.Col, null, React__default.createElement(OdsButton, {
38700
- htmlType: "submit",
38701
- type: "primary"
38702
- }, " ", fastUpdateModalSaveText != null ? fastUpdateModalSaveText : "Save"))))), React__default.createElement(DataGrid__default, Object.assign({
38375
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(DataGrid__default, Object.assign({
38703
38376
  keyExpr: keyExpr,
38704
38377
  dataSource: data,
38705
38378
  showBorders: true,
38706
38379
  columnAutoWidth: false,
38707
- ref: gridRef,
38380
+ ref: refGrid,
38708
38381
  height: props.height == undefined ? window.innerHeight - 164 : props.height,
38709
38382
  allowColumnResizing: true,
38710
38383
  columnResizingMode: (_props$columnResizing = props.columnResizingMode) != null ? _props$columnResizing : "widget",
38711
38384
  showRowLines: true,
38712
38385
  allowColumnReordering: true,
38713
- remoteOperations: false,
38386
+ remoteOperations: {
38387
+ sorting: true
38388
+ },
38714
38389
  paging: {
38715
38390
  enabled: false
38716
38391
  },
@@ -38731,18 +38406,13 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38731
38406
  mode: "multiple",
38732
38407
  selectAllMode: "page"
38733
38408
  },
38734
- sorting: {
38735
- mode: "none"
38736
- },
38737
- onEditorPreparing: onEditorPreparing,
38738
38409
  onExporting: handleExporting,
38739
38410
  onRowClick: props.onRowClick,
38740
- onEditorPrepared: onEditorPrepared,
38741
38411
  onSaved: props.onSaved,
38742
38412
  onSaving: props.onSaving,
38743
38413
  onEditCanceling: props.onEditCanceling,
38744
- onCellClick: onCustomCellClick,
38745
- onCellHoverChanged: onCustomCellHoverChanged,
38414
+ onCellClick: props.onCellClick,
38415
+ onCellHoverChanged: props.onCellHoverChanged,
38746
38416
  onCellPrepared: onCustomCellPrepared,
38747
38417
  onOptionChanged: props.onOptionChanged,
38748
38418
  onToolbarPreparing: !props.closeGridHeader && (props.onToolbarPreparing || onToolbarPreparing),
@@ -38753,7 +38423,7 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38753
38423
  }, col, {
38754
38424
  minWidth: 50,
38755
38425
  width: props.isColumnWidthFixed === true ? 160 : undefined,
38756
- cssClass: col.cssClass + " " + (hasFastUpdate ? "grid-cell-disable-text-selection" : "")
38426
+ cssClass: col.cssClass
38757
38427
  }), col.lookUp && React__default.createElement(devextremeReact.Lookup, Object.assign({}, col.lookUp)), (col.dataField === "IsActive" || col.dataField === "isActive") && React__default.createElement(DataGrid.HeaderFilter, {
38758
38428
  dataSource: [{
38759
38429
  text: "Active",
@@ -38786,32 +38456,7 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38786
38456
  cellRender: function cellRender(cellData) {
38787
38457
  return actionCellRender(cellData, props);
38788
38458
  }
38789
- }), props.showMasterDetail && React__default.createElement(DataGrid.MasterDetail, {
38790
- enabled: true,
38791
- component: renderMasterDetailGrid
38792
- }), props.edit && React__default.createElement(DataGrid.Editing, {
38793
- mode: props.edit.mode,
38794
- allowUpdating: props.edit.allowUpdating,
38795
- allowDeleting: props.edit.allowDeleting,
38796
- allowAdding: props.edit.allowAdding,
38797
- useIcons: true
38798
- }, props.edit.mode === "popup" && React__default.createElement("div", null, React__default.createElement(DataGrid.Popup, {
38799
- showTitle: true,
38800
- width: 700,
38801
- height: 300,
38802
- showCloseButton: false
38803
- }), React__default.createElement(DataGrid.Form, null, props.edit.formItems && props.edit.formItems.map(function (formItem) {
38804
- return React__default.createElement(form.Item, {
38805
- itemType: formItem.itemType,
38806
- colCount: formItem.colCount,
38807
- colSpan: formItem.colSpan
38808
- }, formItem.items.map(function (subItem) {
38809
- return React__default.createElement(form.Item, {
38810
- key: subItem.dataField,
38811
- dataField: subItem.dataField
38812
- });
38813
- }));
38814
- })))), React__default.createElement(DataGrid.Paging, {
38459
+ }), React__default.createElement(DataGrid.Paging, {
38815
38460
  enabled: false
38816
38461
  }), React__default.createElement(DataGrid.Pager, {
38817
38462
  visible: false
@@ -38826,7 +38471,7 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38826
38471
  }), React__default.createElement(DataGrid.HeaderFilter, {
38827
38472
  visible: true
38828
38473
  }), React__default.createElement(DataGrid.Sorting, {
38829
- mode: "none"
38474
+ mode: "multiple"
38830
38475
  }), !props.closeGridHeader && React__default.createElement(DataGrid.Export, {
38831
38476
  enabled: true,
38832
38477
  allowExportSelectedData: true,
@@ -38858,10 +38503,7 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38858
38503
  }), React__default.createElement(DataGrid.Item, {
38859
38504
  name: "exportButton",
38860
38505
  cssClass: "toolbarPanelItems"
38861
- }), hasFastUpdate && React__default.createElement(DataGrid.Item, null, React__default.createElement(OdsButton, {
38862
- key: "odsbutton-fastupdate",
38863
- onClick: onCustomFastUpdateButtonClick
38864
- }, fastUpdateButtonText != null ? fastUpdateButtonText : "Fast Update"))), React__default.createElement(DataGrid.StateStoring, {
38506
+ })), React__default.createElement(DataGrid.StateStoring, {
38865
38507
  enabled: true,
38866
38508
  type: "custom",
38867
38509
  customLoad: customLoad,
@@ -38869,6 +38511,316 @@ var OdsMergeCellDataGrid = function OdsMergeCellDataGrid(props) {
38869
38511
  })));
38870
38512
  };
38871
38513
 
38514
+ var currentYear = new Date().getFullYear();
38515
+ var Constants = {
38516
+ timelineDefaultStartDate: new Date(currentYear, 0, 1),
38517
+ timelineDefaultEndDate: new Date(currentYear + 1, 0, 1)
38518
+ };
38519
+
38520
+ var checkboxCellComponent = function checkboxCellComponent(props) {
38521
+ var isChecked = props.data.value;
38522
+ var onChange = function onChange(e) {
38523
+ props.data.column.onCheckboxColumnChange({
38524
+ data: props.data.data,
38525
+ dataField: props.data.column.dataField,
38526
+ isChecked: e.target.checked
38527
+ });
38528
+ };
38529
+ return React__default.createElement(OdsCheckbox, {
38530
+ key: "odstimeline-checkboxcolumn-" + props.data.name,
38531
+ style: {
38532
+ height: "32px"
38533
+ },
38534
+ defaultChecked: isChecked,
38535
+ onChange: onChange
38536
+ });
38537
+ };
38538
+ var statusCellComponent = function statusCellComponent(props) {
38539
+ var isActive = props.data.value;
38540
+ var _onClick = function onClick(value) {
38541
+ props.data.column.onStatusColumnChange({
38542
+ data: props.data.data,
38543
+ dataField: props.data.column.dataField,
38544
+ status: value
38545
+ });
38546
+ };
38547
+ return isActive ? React__default.createElement(icons.CheckCircleFilled, {
38548
+ style: {
38549
+ fontSize: 20,
38550
+ color: "#568B6B"
38551
+ },
38552
+ onClick: function onClick() {
38553
+ return _onClick(false);
38554
+ }
38555
+ }) : React__default.createElement(icons.CheckCircleFilled, {
38556
+ style: {
38557
+ fontSize: 20,
38558
+ color: "#EDEDED"
38559
+ },
38560
+ onClick: function onClick() {
38561
+ return _onClick(true);
38562
+ }
38563
+ });
38564
+ };
38565
+ var minimalHeaderCellComponent = function minimalHeaderCellComponent(data, __el) {
38566
+ return React__default.createElement("div", {
38567
+ className: "minimalHeaderCell"
38568
+ }, data.data.column.caption);
38569
+ };
38570
+ var mapCustomTask = function mapCustomTask(item) {
38571
+ return _extends({
38572
+ isSelected: false
38573
+ }, item);
38574
+ };
38575
+ var setSelectedKeys = function setSelectedKeys(datasource, key, selectedKeys) {
38576
+ if (key && key != "" && selectedKeys && selectedKeys.length > 0) {
38577
+ return datasource.map(function (x) {
38578
+ if (selectedKeys.some(function (y) {
38579
+ return y == x[key];
38580
+ })) {
38581
+ x.isSelected = true;
38582
+ }
38583
+ return x;
38584
+ });
38585
+ } else {
38586
+ return datasource;
38587
+ }
38588
+ };
38589
+
38590
+ var OdsTimelineDateFilter = function OdsTimelineDateFilter(props) {
38591
+ var defaultStartDate = props.defaultStartDate,
38592
+ defaultEndDate = props.defaultEndDate,
38593
+ backText = props.backText,
38594
+ nextText = props.nextText,
38595
+ onFilterRangeChange = props.onFilterRangeChange;
38596
+ var _useState = React.useState([dayjs_min(defaultStartDate), dayjs_min(defaultEndDate)]),
38597
+ dateRange = _useState[0],
38598
+ setDateRange = _useState[1];
38599
+ var startDate = dateRange[0].toDate();
38600
+ var endDate = dateRange[1].toDate();
38601
+ var onPickerValueChange = function onPickerValueChange(date) {
38602
+ var newStartDate = date[0].toDate(),
38603
+ newEndDate = date[1].toDate();
38604
+ (newStartDate != startDate || newEndDate != endDate) && onFilterRangeChange({
38605
+ startDate: newStartDate,
38606
+ endDate: newEndDate
38607
+ });
38608
+ setDateRange(date);
38609
+ };
38610
+ var buttonClick = function buttonClick(monthDirection) {
38611
+ var newStartDate = startDate,
38612
+ newEndDate = endDate,
38613
+ currentStartYear = startDate.getFullYear(),
38614
+ currentStartMonth = startDate.getMonth(),
38615
+ currentEndYear = endDate.getFullYear(),
38616
+ currentEndMonth = endDate.getMonth();
38617
+ switch (monthDirection) {
38618
+ case "previousMonth":
38619
+ newStartDate.setMonth(currentStartMonth == 0 ? 11 : currentStartMonth - 1);
38620
+ newStartDate.setFullYear(currentStartMonth == 0 ? currentStartYear - 1 : currentStartYear);
38621
+ break;
38622
+ case "nextMonth":
38623
+ newEndDate.setMonth(currentEndMonth == 11 ? 0 : currentEndMonth + 1);
38624
+ newEndDate.setFullYear(currentEndMonth == 11 ? currentEndYear + 1 : currentEndYear);
38625
+ break;
38626
+ }
38627
+ setDateRange([dayjs_min(newStartDate), dayjs_min(newEndDate)]);
38628
+ onFilterRangeChange({
38629
+ startDate: newStartDate,
38630
+ endDate: newEndDate
38631
+ });
38632
+ };
38633
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(antd.Space, null, React__default.createElement(OdsButton, {
38634
+ key: "odsbutton-back",
38635
+ onClick: function onClick(_e) {
38636
+ buttonClick("previousMonth");
38637
+ },
38638
+ style: {
38639
+ backgroundColor: "#A19FA0",
38640
+ color: "white",
38641
+ borderColor: "white"
38642
+ }
38643
+ }, React__default.createElement(icons.LeftCircleFilled, null), backText != null ? backText : "Back"), React__default.createElement(OdsDateRangePicker, {
38644
+ defaultValue: [dayjs_min(defaultStartDate), dayjs_min(defaultEndDate)],
38645
+ value: dateRange,
38646
+ onPickerValueChange: onPickerValueChange
38647
+ }), React__default.createElement(OdsButton, {
38648
+ key: "odsbutton-next",
38649
+ onClick: function onClick(_e) {
38650
+ buttonClick("nextMonth");
38651
+ },
38652
+ style: {
38653
+ backgroundColor: "#A19FA0",
38654
+ color: "white",
38655
+ borderColor: "white"
38656
+ }
38657
+ }, nextText != null ? nextText : "Next", React__default.createElement(icons.RightCircleFilled, null))));
38658
+ };
38659
+
38660
+ var OdsTimelineSelectionColumn = function OdsTimelineSelectionColumn(selectionEvent) {
38661
+ var selectionColumn = {
38662
+ caption: "",
38663
+ minWidth: 50,
38664
+ width: 50,
38665
+ dataField: "isSelected",
38666
+ cellComponent: function cellComponent(props) {
38667
+ var onChange = function onChange(e) {
38668
+ selectionEvent && selectionEvent({
38669
+ data: props.data.data,
38670
+ isSelected: e.target.checked
38671
+ });
38672
+ };
38673
+ return React__default.createElement(OdsCheckbox, {
38674
+ key: "odstimeline-selection-" + props.data.name,
38675
+ style: {
38676
+ height: "32px"
38677
+ },
38678
+ defaultChecked: props.data.value,
38679
+ onChange: onChange
38680
+ });
38681
+ }
38682
+ };
38683
+ return selectionColumn;
38684
+ };
38685
+
38686
+ var _templateObject$B, _templateObject2$9, _templateObject3$6;
38687
+ var useStyles$b = antdStyle.createStyles(function (_ref, props) {
38688
+ var css = _ref.css;
38689
+ return {
38690
+ taskBar: css(_templateObject$B || (_templateObject$B = _taggedTemplateLiteralLoose(["\n min-height: 22px;\n display: block;\n overflow: hidden;\n width: ", "px;\n border: 1px solid #f0f0f0;\n border-radius: 5px;\n background-color: #f0f0f0;\n "])), props.taskWidth),
38691
+ taskProgress: css(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteralLoose(["\n height: 100%;\n position: absolute;\n left: 0;\n bottom: 0;\n width: ", "%;\n border: 1px solid ", ";\n border-radius: 5px;\n background-color: ", ";\n "])), props.progressPerc, props.progressColor, props.progressColor),
38692
+ taskBarTitle: css(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteralLoose(["\n z-index: 1;\n padding-left: 4px;\n position: absolute;\n "])))
38693
+ };
38694
+ });
38695
+
38696
+ var OdsTimelineTableTaskTemplate = function OdsTimelineTableTaskTemplate(_ref) {
38697
+ var taskData = _ref.taskData,
38698
+ taskSize = _ref.taskSize;
38699
+ var _useStyles = useStyles$b({
38700
+ progressColor: taskData.color,
38701
+ progressPerc: taskData.progress,
38702
+ taskWidth: taskSize.width
38703
+ }),
38704
+ timelineTableStyles = _useStyles.styles;
38705
+ return React__default.createElement("div", {
38706
+ className: timelineTableStyles.taskBar
38707
+ }, React__default.createElement("span", {
38708
+ className: timelineTableStyles.taskBarTitle
38709
+ }, taskData.title), React__default.createElement("div", {
38710
+ className: timelineTableStyles.taskProgress
38711
+ }));
38712
+ };
38713
+
38714
+ var OdsTimelineTable = React.forwardRef(function (props, ref) {
38715
+ var customColumns = props.customColumns,
38716
+ customTasks = props.customTasks,
38717
+ customTaskKey = props.customTaskKey,
38718
+ customSelectedKeys = props.customSelectedKeys,
38719
+ children = props.children,
38720
+ startDateRange = props.startDateRange,
38721
+ endDateRange = props.endDateRange,
38722
+ multiSelectionEnabled = props.multiSelectionEnabled,
38723
+ toolbarVisible = props.toolbarVisible,
38724
+ showDateFilter = props.showDateFilter,
38725
+ onCustomSelectionChanged = props.onCustomSelectionChanged,
38726
+ onDateRangeChange = props.onDateRangeChange;
38727
+ var _useState = React.useState(startDateRange != null ? startDateRange : Constants.timelineDefaultStartDate),
38728
+ startDate = _useState[0],
38729
+ setStartDate = _useState[1];
38730
+ var _useState2 = React.useState(endDateRange != null ? endDateRange : Constants.timelineDefaultEndDate),
38731
+ endDate = _useState2[0],
38732
+ setEndDate = _useState2[1];
38733
+ var _useState3 = React.useState([]),
38734
+ timelineTasks = _useState3[0],
38735
+ setTimelineTasks = _useState3[1];
38736
+ React.useEffect(function () {
38737
+ setTimelineTasks(multiSelectionEnabled ? setSelectedKeys(customTasks.map(mapCustomTask), customTaskKey, customSelectedKeys) : customTasks);
38738
+ }, [customTasks]);
38739
+ var getSelectedRowsData = function getSelectedRowsData() {
38740
+ return timelineTasks.filter(function (item) {
38741
+ return item.isSelected == true;
38742
+ });
38743
+ };
38744
+ var updateSelectionData = function updateSelectionData(keyValue, isSelected) {
38745
+ setTimelineTasks(function (prev) {
38746
+ return prev.map(function (item) {
38747
+ if (item[props.customTaskKey] == keyValue) {
38748
+ item.isSelected = isSelected;
38749
+ }
38750
+ return item;
38751
+ });
38752
+ });
38753
+ };
38754
+ var onTimelineDateRangeChange = function onTimelineDateRangeChange(e) {
38755
+ setStartDate(e.startDate);
38756
+ setEndDate(e.endDate);
38757
+ onDateRangeChange && onDateRangeChange({
38758
+ startDate: e.startDate,
38759
+ endDate: e.endDate
38760
+ });
38761
+ };
38762
+ var onTimelineCheckboxSelectionChange = function onTimelineCheckboxSelectionChange(e) {
38763
+ updateSelectionData(e.data[props.customTaskKey], e.isSelected);
38764
+ onCustomSelectionChanged && onCustomSelectionChanged(e);
38765
+ };
38766
+ var timelineColumns = multiSelectionEnabled ? [OdsTimelineSelectionColumn(onTimelineCheckboxSelectionChange)].concat(customColumns) : customColumns;
38767
+ React.useImperativeHandle(ref, function () {
38768
+ return {
38769
+ getSelectedRowsData: getSelectedRowsData
38770
+ };
38771
+ });
38772
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(gantt.Gantt, Object.assign({
38773
+ width: "100%",
38774
+ height: 500,
38775
+ startDateRange: startDate,
38776
+ endDateRange: endDate,
38777
+ taskContentRender: function taskContentRender(params) {
38778
+ return React__default.createElement(OdsTimelineTableTaskTemplate, Object.assign({}, params));
38779
+ }
38780
+ }, props), toolbarVisible ? React__default.createElement(gantt.Toolbar, null, showDateFilter ? React__default.createElement(gantt.Item, {
38781
+ key: "OdsTimelineTable_ToolbarItem_DateFilter",
38782
+ component: function component(props) {
38783
+ return OdsTimelineDateFilter(_extends({}, props, {
38784
+ defaultStartDate: startDate,
38785
+ defaultEndDate: endDate,
38786
+ onFilterRangeChange: onTimelineDateRangeChange
38787
+ }));
38788
+ }
38789
+ }) : "", React__default.createElement(gantt.Item, {
38790
+ key: "OdsTimelineTable_ToolbarItem_ZoomIn",
38791
+ name: "zoomIn"
38792
+ }), React__default.createElement(gantt.Item, {
38793
+ key: "OdsTimelineTable_ToolbarItem_ZoomOut",
38794
+ name: "zoomOut"
38795
+ })) : "", React__default.createElement(gantt.ContextMenu, {
38796
+ enabled: false
38797
+ }), timelineColumns === null || timelineColumns === void 0 ? void 0 : timelineColumns.map(function (columnProps) {
38798
+ if (columnProps.isStatusColumn) {
38799
+ return React__default.createElement(gantt.Column, Object.assign({
38800
+ width: 50,
38801
+ minWidth: 50,
38802
+ cssClass: "cellCenteredVertically",
38803
+ cellComponent: statusCellComponent,
38804
+ headerCellComponent: minimalHeaderCellComponent
38805
+ }, columnProps));
38806
+ } else if (columnProps.isCheckboxColumn) {
38807
+ return React__default.createElement(gantt.Column, Object.assign({
38808
+ width: 50,
38809
+ minWidth: 50,
38810
+ cssClass: "cellCenteredVertically",
38811
+ cellComponent: checkboxCellComponent,
38812
+ headerCellComponent: minimalHeaderCellComponent
38813
+ }, columnProps));
38814
+ } else {
38815
+ return React__default.createElement(gantt.Column, Object.assign({
38816
+ headerCellComponent: columnProps.isMinimized && minimalHeaderCellComponent
38817
+ }, columnProps));
38818
+ }
38819
+ }), React__default.createElement(gantt.Tasks, {
38820
+ dataSource: timelineTasks
38821
+ }), children));
38822
+ });
38823
+
38872
38824
  /**
38873
38825
  * Checks if `value` is the
38874
38826
  * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
@@ -39378,10 +39330,10 @@ function debounce(func, wait, options) {
39378
39330
 
39379
39331
  var debounce_1 = debounce;
39380
39332
 
39381
- var checkCellSelectionConstraints$2 = function checkCellSelectionConstraints(e) {
39333
+ var checkCellSelectionConstraints$1 = function checkCellSelectionConstraints(e) {
39382
39334
  return e.rowType == "data" && e.columnIndex > -1 && e.rowIndex > -1;
39383
39335
  };
39384
- var cellAlreadySelected$2 = function cellAlreadySelected(pkValue, dataField, cellInfos) {
39336
+ var cellAlreadySelected$1 = function cellAlreadySelected(pkValue, dataField, cellInfos) {
39385
39337
  return cellInfos.some(function (cell) {
39386
39338
  return cell.pkValue == pkValue && cell.dataField == dataField;
39387
39339
  });
@@ -40163,11 +40115,11 @@ var OdsRemoteDataGrid = function OdsRemoteDataGrid(props) {
40163
40115
  var onCustomCellClick = function onCustomCellClick(e) {
40164
40116
  e.cellElement.style.backgroundColor = "transparent";
40165
40117
  if (hasFastUpdate) {
40166
- if (checkCellSelectionConstraints$2(e) && constants$3.allowedDataTypesForMultiCellEditing.some(function (item) {
40118
+ if (checkCellSelectionConstraints$1(e) && constants$3.allowedDataTypesForMultiCellEditing.some(function (item) {
40167
40119
  return item.toLocaleLowerCase() == e.column.dataType.toLocaleLowerCase();
40168
40120
  })) {
40169
40121
  if (!e.event.ctrlKey) {
40170
- if (cellAlreadySelected$2(e.data[pkName], e.column.dataField, selectedCells)) {
40122
+ if (cellAlreadySelected$1(e.data[pkName], e.column.dataField, selectedCells)) {
40171
40123
  removeSelectedCell(e.rowIndex, e.columnIndex);
40172
40124
  } else {
40173
40125
  singleSelect(e.data[pkName], e.column.dataField);
@@ -40195,7 +40147,7 @@ var OdsRemoteDataGrid = function OdsRemoteDataGrid(props) {
40195
40147
  var onCustomCellHoverChanged = function onCustomCellHoverChanged(e) {
40196
40148
  if (hasFastUpdate) {
40197
40149
  if (!e.event.ctrlKey && !ctrlSelection) {
40198
- if (checkCellSelectionConstraints$2(e)) {
40150
+ if (checkCellSelectionConstraints$1(e)) {
40199
40151
  if (e.event.buttons === 1) {
40200
40152
  setHoveredCells(function (prev) {
40201
40153
  return [].concat(prev, [{
@@ -40587,6 +40539,7 @@ exports.OdsTag = OdsTag;
40587
40539
  exports.OdsText = OdsText;
40588
40540
  exports.OdsTextArea = OdsTextArea;
40589
40541
  exports.OdsTimeline = OdsTimeline;
40542
+ exports.OdsTimelineTable = OdsTimelineTable;
40590
40543
  exports.OdsTimepicker = OdsTimepicker;
40591
40544
  exports.OdsTitle = OdsTitle;
40592
40545
  exports.OdsTransfer = OdsTransfer;