@pdg/react-table 1.0.64 → 1.0.66

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,3 +4,4 @@ export { ll, nextTick };
4
4
  export * from './compare';
5
5
  export * from './number';
6
6
  export * from './table';
7
+ export * from './tel';
@@ -0,0 +1 @@
1
+ export declare function getTelAutoDash(tel: string | null | undefined): string | null;
@@ -7,8 +7,8 @@ export interface TableItem {
7
7
  [key: string]: any;
8
8
  }
9
9
  export interface TableColumn<T = TableItem> {
10
- id: string;
11
- type?: 'text' | 'number' | 'date' | 'datetime' | 'img' | 'button' | 'buttons' | 'check';
10
+ id?: string;
11
+ type?: 'text' | 'number' | 'tel' | 'date' | 'datetime' | 'date-hour' | 'date-minute' | 'img' | 'button' | 'buttons' | 'check';
12
12
  label?: ReactNode;
13
13
  name?: string;
14
14
  align?: TableCellProps['align'];
@@ -16,6 +16,7 @@ export interface TableColumn<T = TableItem> {
16
16
  minWidth?: string | number;
17
17
  ellipsis?: boolean;
18
18
  dateFormat?: string;
19
+ dateTwoLine?: boolean;
19
20
  hideAllCheck?: boolean;
20
21
  tooltipProps?: Omit<TooltipProps, 'children' | 'title'>;
21
22
  display?: {
package/dist/index.esm.js CHANGED
@@ -2721,6 +2721,72 @@ function typographyColorToSxColor(color) {
2721
2721
  else {
2722
2722
  return color;
2723
2723
  }
2724
+ }function getTelAutoDash(tel) {
2725
+ if (tel == null)
2726
+ return null;
2727
+ var str = tel.replace(/[^0-9*]/g, '');
2728
+ var isLastDash = tel.substr(tel.length - 1, 1) === '-';
2729
+ if (str.substr(0, 1) !== '0' && !['15', '16', '18'].includes(str.substr(0, 2))) {
2730
+ return tel;
2731
+ }
2732
+ var tmp = '';
2733
+ var preLen;
2734
+ switch (str.substr(0, 2)) {
2735
+ case '02':
2736
+ preLen = 2;
2737
+ break;
2738
+ case '15':
2739
+ case '16':
2740
+ case '18':
2741
+ preLen = 4;
2742
+ break;
2743
+ default:
2744
+ preLen = 3;
2745
+ }
2746
+ if (['15', '16', '18'].includes(str.substr(0, 2))) {
2747
+ if (str.length <= preLen) {
2748
+ tmp = str;
2749
+ }
2750
+ else if (str.length <= preLen + 4) {
2751
+ tmp += str.substr(0, preLen);
2752
+ tmp += '-';
2753
+ tmp += str.substr(preLen);
2754
+ }
2755
+ else {
2756
+ tmp = str;
2757
+ }
2758
+ }
2759
+ else if (str.length <= preLen) {
2760
+ tmp = str;
2761
+ }
2762
+ else if (str.length <= preLen + 3) {
2763
+ tmp += str.substr(0, preLen);
2764
+ tmp += '-';
2765
+ tmp += str.substr(preLen);
2766
+ }
2767
+ else if (str.length <= preLen + 7) {
2768
+ tmp += str.substr(0, preLen);
2769
+ tmp += '-';
2770
+ tmp += str.substr(preLen, 3);
2771
+ tmp += '-';
2772
+ tmp += str.substr(preLen + 3);
2773
+ }
2774
+ else if (str.length <= preLen + 8) {
2775
+ tmp += str.substr(0, preLen);
2776
+ tmp += '-';
2777
+ tmp += str.substr(preLen, 4);
2778
+ tmp += '-';
2779
+ tmp += str.substr(preLen + 4);
2780
+ }
2781
+ else {
2782
+ tmp = str;
2783
+ }
2784
+ if (isLastDash) {
2785
+ if (str.length === preLen) {
2786
+ tmp += '-';
2787
+ }
2788
+ }
2789
+ return tmp;
2724
2790
  }var TableContextDefaultValue = {
2725
2791
  menuOpen: false,
2726
2792
  openMenuId: undefined,
@@ -2956,6 +3022,11 @@ var TableBodyCell = function (_a) {
2956
3022
  data = numberWithThousandSeparator(data);
2957
3023
  }
2958
3024
  break;
3025
+ case 'tel':
3026
+ if (typeof data === 'string') {
3027
+ data = getTelAutoDash(data);
3028
+ }
3029
+ break;
2959
3030
  case 'check':
2960
3031
  data = (React__default.createElement(Box, { className: 'TableBoxyCell-check-box', onClick: menuOpen ? undefined : function (e) { return e.stopPropagation(); } },
2961
3032
  React__default.createElement(Checkbox, { checked: checked, disabled: checkDisabled, onChange: function (e, newChecked) {
@@ -2991,7 +3062,29 @@ var TableBodyCell = function (_a) {
2991
3062
  break;
2992
3063
  case 'datetime':
2993
3064
  if (data) {
2994
- data = dayjs(data, column.dateFormat).format('YYYY-MM-DD HH:mm:ss');
3065
+ var dt = dayjs(data, column.dateFormat);
3066
+ data = (React__default.createElement(React__default.Fragment, null,
3067
+ React__default.createElement("span", null, dt.format('YYYY-MM-DD')),
3068
+ column.dateTwoLine ? React__default.createElement("br", null) : ' ',
3069
+ React__default.createElement("span", { style: { opacity: 0.5 } }, dt.format('HH:mm:ss'))));
3070
+ }
3071
+ break;
3072
+ case 'date-hour':
3073
+ if (data) {
3074
+ var dt = dayjs(data, column.dateFormat);
3075
+ data = (React__default.createElement(React__default.Fragment, null,
3076
+ React__default.createElement("span", null, dt.format('YYYY-MM-DD')),
3077
+ column.dateTwoLine ? React__default.createElement("br", null) : ' ',
3078
+ React__default.createElement("span", { style: { opacity: 0.5 } }, dt.format('HH시'))));
3079
+ }
3080
+ break;
3081
+ case 'date-minute':
3082
+ if (data) {
3083
+ var dt = dayjs(data, column.dateFormat);
3084
+ data = (React__default.createElement(React__default.Fragment, null,
3085
+ React__default.createElement("span", null, dt.format('YYYY-MM-DD')),
3086
+ column.dateTwoLine ? React__default.createElement("br", null) : ' ',
3087
+ React__default.createElement("span", { style: { opacity: 0.5 } }, dt.format('HH시 MM분'))));
2995
3088
  }
2996
3089
  break;
2997
3090
  }
@@ -3366,6 +3459,7 @@ TableTopHead.defaultProps = TableTopHeadDefaultProps;
3366
3459
  var templateObject_1$1;function columnFilter(v) {
3367
3460
  return v !== undefined && v !== null && v !== false;
3368
3461
  }
3462
+ var _columnId = 0;
3369
3463
  var Table = React__default.forwardRef(function (_a, ref) {
3370
3464
  // Ref ---------------------------------------------------------------------------------------------------------------
3371
3465
  var caption = _a.caption, topHeadRows = _a.topHeadRows, initColumns = _a.columns, initItems = _a.items, initPaging = _a.paging, pagingAlign = _a.pagingAlign, defaultAlign = _a.defaultAlign, defaultEllipsis = _a.defaultEllipsis, initStickyHeader = _a.stickyHeader, height = _a.height, minHeight = _a.minHeight, maxHeight = _a.maxHeight, fullHeight = _a.fullHeight, showOddColor = _a.showOddColor, showEvenColor = _a.showEvenColor, cellPadding = _a.cellPadding, footer = _a.footer, noData = _a.noData, pagination = _a.pagination, sortable = _a.sortable, onClick = _a.onClick, onGetBodyRowSx = _a.onGetBodyRowSx, onPageChange = _a.onPageChange, onSortChange = _a.onSortChange, onCheckChange = _a.onCheckChange,
@@ -3376,6 +3470,7 @@ var Table = React__default.forwardRef(function (_a, ref) {
3376
3470
  var updateHeadCheckTimer = useRef();
3377
3471
  var fireOnCheckChangeTimer = useRef({});
3378
3472
  var simpleBarRef = useRef(null);
3473
+ var finalColumnsIdRef = useRef([]);
3379
3474
  // sortable --------------------------------------------------------------------------------------------------------
3380
3475
  var sensors = useSensors(useSensor(MouseSensor, {
3381
3476
  // Require the mouse to move by 10 pixels before activating
@@ -3446,18 +3541,28 @@ var Table = React__default.forwardRef(function (_a, ref) {
3446
3541
  return __assign$3({ id: id == null ? "".concat(v4(), "_").concat(index) : id }, item);
3447
3542
  });
3448
3543
  }, []);
3544
+ var getFinalColumnId = useCallback(function (column) {
3545
+ if (finalColumns && finalColumnsIdRef.current) {
3546
+ var idx = finalColumns.indexOf(column);
3547
+ return finalColumnsIdRef.current[idx];
3548
+ }
3549
+ else {
3550
+ return '';
3551
+ }
3552
+ }, [finalColumns]);
3449
3553
  var updateHeadCheck = useCallback(function (column) {
3450
3554
  if (updateHeadCheckTimer.current) {
3451
3555
  clearTimeout(updateHeadCheckTimer.current);
3452
3556
  updateHeadCheckTimer.current = undefined;
3453
3557
  }
3454
- var headColumnData = localHeaderDataRef.current[column.id];
3558
+ var columnId = getFinalColumnId(column);
3559
+ var headColumnData = localHeaderDataRef.current[columnId];
3455
3560
  if (headColumnData) {
3456
3561
  updateHeadCheckTimer.current = setTimeout(function () {
3457
3562
  var _a, _b;
3458
3563
  updateHeadCheckTimer.current = undefined;
3459
3564
  var enabledCheckExists = !!Object.keys(localBodyDataRef.current).find(function (key) {
3460
- var columnData = localBodyDataRef.current[key].columns[column.id];
3565
+ var columnData = localBodyDataRef.current[key].columns[columnId];
3461
3566
  if (columnData) {
3462
3567
  if (!columnData.checkDisabled) {
3463
3568
  return true;
@@ -3466,7 +3571,7 @@ var Table = React__default.forwardRef(function (_a, ref) {
3466
3571
  });
3467
3572
  var allChecked = enabledCheckExists &&
3468
3573
  !Object.keys(localBodyDataRef.current).find(function (key) {
3469
- var columnData = localBodyDataRef.current[key].columns[column.id];
3574
+ var columnData = localBodyDataRef.current[key].columns[columnId];
3470
3575
  if (columnData) {
3471
3576
  if (!columnData.checkDisabled) {
3472
3577
  return !columnData.checked;
@@ -3477,7 +3582,7 @@ var Table = React__default.forwardRef(function (_a, ref) {
3477
3582
  (_b = headColumnData.commands) === null || _b === void 0 ? void 0 : _b.setChecked(allChecked);
3478
3583
  }, 100);
3479
3584
  }
3480
- }, []);
3585
+ }, [getFinalColumnId]);
3481
3586
  var getCheckedItems = useCallback(function (columnId) {
3482
3587
  var checkedItems = [];
3483
3588
  Object.keys(localBodyDataRef.current).forEach(function (key) {
@@ -3550,7 +3655,17 @@ var Table = React__default.forwardRef(function (_a, ref) {
3550
3655
  useEffect(function () {
3551
3656
  stopHeadCheckTimer();
3552
3657
  clearFireOnCheckChangeTimer();
3553
- setFinalColumns(columns === null || columns === void 0 ? void 0 : columns.filter(columnFilter));
3658
+ var newFinalColumns = columns === null || columns === void 0 ? void 0 : columns.filter(columnFilter);
3659
+ setFinalColumns(newFinalColumns);
3660
+ finalColumnsIdRef.current = newFinalColumns === null || newFinalColumns === void 0 ? void 0 : newFinalColumns.map(function (col) {
3661
+ if (col.id) {
3662
+ return col.id;
3663
+ }
3664
+ else {
3665
+ _columnId += 1;
3666
+ return "$c$".concat(_columnId, "$");
3667
+ }
3668
+ });
3554
3669
  // eslint-disable-next-line react-hooks/exhaustive-deps
3555
3670
  }, [columns]);
3556
3671
  useLayoutEffect(function () {
@@ -3564,7 +3679,7 @@ var Table = React__default.forwardRef(function (_a, ref) {
3564
3679
  if (finalColumns) {
3565
3680
  finalColumns.forEach(function (c) {
3566
3681
  var _a;
3567
- var columnId = c.id;
3682
+ var columnId = getFinalColumnId(c);
3568
3683
  if ((_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[columnId]) {
3569
3684
  res[item.id].columns[columnId] = localBodyDataRef.current[item.id].columns[columnId];
3570
3685
  }
@@ -3583,18 +3698,18 @@ var Table = React__default.forwardRef(function (_a, ref) {
3583
3698
  else {
3584
3699
  localBodyDataRef.current = {};
3585
3700
  }
3586
- }, [sortableItems, finalColumns, clearFireOnCheckChangeTimer]);
3701
+ }, [sortableItems, finalColumns, clearFireOnCheckChangeTimer, getFinalColumnId]);
3587
3702
  useLayoutEffect(function () {
3588
3703
  if (finalColumns) {
3589
3704
  localHeaderDataRef.current = finalColumns.reduce(function (res, c) {
3590
- res[c.id] = { column: c, checked: false };
3705
+ res[getFinalColumnId(c)] = { column: c, checked: false };
3591
3706
  return res;
3592
3707
  }, {});
3593
3708
  }
3594
3709
  else {
3595
3710
  localHeaderDataRef.current = {};
3596
3711
  }
3597
- }, [finalColumns]);
3712
+ }, [finalColumns, getFinalColumnId]);
3598
3713
  // Commands --------------------------------------------------------------------------------------------------------
3599
3714
  useLayoutEffect(function () {
3600
3715
  if (ref) {
@@ -3675,14 +3790,14 @@ var Table = React__default.forwardRef(function (_a, ref) {
3675
3790
  var handleHeadCheckChange = useCallback(function (column, checked) {
3676
3791
  Object.keys(localBodyDataRef.current).forEach(function (key) {
3677
3792
  var _a;
3678
- var data = localBodyDataRef.current[key].columns[column.id];
3793
+ var data = localBodyDataRef.current[key].columns[getFinalColumnId(column)];
3679
3794
  if (data) {
3680
3795
  if (!data.checkDisabled) {
3681
3796
  (_a = data.commands) === null || _a === void 0 ? void 0 : _a.setChecked(checked);
3682
3797
  }
3683
3798
  }
3684
3799
  });
3685
- }, []);
3800
+ }, [getFinalColumnId]);
3686
3801
  var handleBodyCheckChange = useCallback(function (item, column) {
3687
3802
  updateHeadCheck(column);
3688
3803
  }, [updateHeadCheck]);
@@ -3705,39 +3820,40 @@ var Table = React__default.forwardRef(function (_a, ref) {
3705
3820
  }, [openMenuId]);
3706
3821
  var TableContextSetItemColumnChecked = useCallback(function (item, column, checked) {
3707
3822
  var _a;
3708
- var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[column.id];
3823
+ var columnId = getFinalColumnId(column);
3824
+ var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[columnId];
3709
3825
  if (data) {
3710
3826
  data.checked = checked;
3711
- fireOnCheckChange(column.id);
3827
+ fireOnCheckChange(columnId);
3712
3828
  }
3713
- }, [fireOnCheckChange]);
3829
+ }, [fireOnCheckChange, getFinalColumnId]);
3714
3830
  var TableContextSetItemColumnCheckDisabled = useCallback(function (item, column, disabled) {
3715
3831
  var _a;
3716
- var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[column.id];
3832
+ var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[getFinalColumnId(column)];
3717
3833
  if (data) {
3718
3834
  data.checkDisabled = disabled;
3719
3835
  updateHeadCheck(column);
3720
3836
  }
3721
- }, [updateHeadCheck]);
3837
+ }, [getFinalColumnId, updateHeadCheck]);
3722
3838
  var TableContextSetItemColumnCommands = useCallback(function (item, column, commands) {
3723
3839
  var _a;
3724
- var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[column.id];
3840
+ var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[getFinalColumnId(column)];
3725
3841
  if (data) {
3726
3842
  data.commands = commands;
3727
3843
  }
3728
- }, []);
3844
+ }, [getFinalColumnId]);
3729
3845
  var TableContextSetHeadColumnChecked = useCallback(function (column, checked) {
3730
- var data = localHeaderDataRef.current[column.id];
3846
+ var data = localHeaderDataRef.current[getFinalColumnId(column)];
3731
3847
  if (data) {
3732
3848
  data.checked = checked;
3733
3849
  }
3734
- }, []);
3850
+ }, [getFinalColumnId]);
3735
3851
  var TableContextSetHeadColumnCommands = useCallback(function (column, commands) {
3736
- var data = localHeaderDataRef.current[column.id];
3852
+ var data = localHeaderDataRef.current[getFinalColumnId(column)];
3737
3853
  if (data) {
3738
3854
  data.commands = commands;
3739
3855
  }
3740
- }, []);
3856
+ }, [getFinalColumnId]);
3741
3857
  // Memo --------------------------------------------------------------------------------------------------------------
3742
3858
  var tableContextValue = useMemo(function () { return ({
3743
3859
  menuOpen: menuOpen,