@dreamtree-org/twreact-ui 1.0.81 → 1.0.82

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/dist/index.esm.js CHANGED
@@ -3935,89 +3935,16 @@ var DEFAULT_ACTIONS = [{
3935
3935
  })
3936
3936
  }];
3937
3937
 
3938
- // Memoized ActionMenuPortal to prevent unnecessary re-renders
3939
- var ActionMenuPortal = /*#__PURE__*/memo(function ActionMenuPortal(_ref) {
3940
- var anchorElem = _ref.anchorElem,
3941
- _ref$actions = _ref.actions,
3938
+ // Simple inline action menu component (no portal)
3939
+ var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
3940
+ var _ref$actions = _ref.actions,
3942
3941
  actions = _ref$actions === void 0 ? [] : _ref$actions,
3943
- anchorRow = _ref.anchorRow,
3942
+ row = _ref.row,
3944
3943
  onAction = _ref.onAction,
3945
3944
  menuRef = _ref.menuRef;
3946
- var _useState = useState({
3947
- left: 0,
3948
- top: 0,
3949
- transformOrigin: "top right",
3950
- maxHeight: 300,
3951
- width: 180,
3952
- opacity: 0
3953
- }),
3954
- _useState2 = _slicedToArray(_useState, 2),
3955
- style = _useState2[0],
3956
- setStyle = _useState2[1];
3957
- var menuWidth = 180;
3958
- var maxMenuHeight = 320;
3959
- var margin = 8;
3960
- var minMenuHeight = 80;
3961
- useLayoutEffect(function () {
3962
- if (!anchorElem) return;
3963
- var computePosition = function computePosition() {
3964
- var rect = anchorElem.getBoundingClientRect();
3965
- var scrollY = window.scrollY || window.pageYOffset;
3966
- var scrollX = window.scrollX || window.pageXOffset;
3967
- var spaceBelow = window.innerHeight - rect.bottom;
3968
- var spaceAbove = rect.top;
3969
- var placement = "bottom";
3970
- var allowedMaxHeight;
3971
- if (spaceBelow < 160 && spaceAbove > spaceBelow) {
3972
- placement = "top";
3973
- allowedMaxHeight = Math.min(maxMenuHeight, Math.max(minMenuHeight, spaceAbove - margin));
3974
- } else {
3975
- allowedMaxHeight = Math.min(maxMenuHeight, Math.max(minMenuHeight, spaceBelow - margin));
3976
- }
3977
- var measuredMenuHeight = allowedMaxHeight;
3978
- var menuEl = menuRef === null || menuRef === void 0 ? void 0 : menuRef.current;
3979
- if (menuEl) {
3980
- var contentHeight = menuEl.scrollHeight || menuEl.offsetHeight || allowedMaxHeight;
3981
- measuredMenuHeight = Math.min(contentHeight, allowedMaxHeight);
3982
- }
3983
- var top = placement === "top" ? rect.top + scrollY - measuredMenuHeight - margin : rect.bottom + scrollY + margin;
3984
- var minTop = margin + scrollY;
3985
- var maxTop = window.innerHeight + scrollY - measuredMenuHeight - margin;
3986
- top = Math.max(minTop, Math.min(top, maxTop));
3987
- var left = rect.right + scrollX - menuWidth;
3988
- left = Math.max(margin, Math.min(left, window.innerWidth - menuWidth - margin));
3989
- setStyle({
3990
- left: left,
3991
- top: top,
3992
- transformOrigin: placement === "bottom" ? "top right" : "bottom right",
3993
- maxHeight: allowedMaxHeight,
3994
- width: menuWidth,
3995
- opacity: 1
3996
- });
3997
- };
3998
- computePosition();
3999
- var onScrollOrResize = function onScrollOrResize() {
4000
- window.requestAnimationFrame(computePosition);
4001
- };
4002
- window.addEventListener("resize", onScrollOrResize);
4003
- window.addEventListener("scroll", onScrollOrResize, true);
4004
- return function () {
4005
- window.removeEventListener("resize", onScrollOrResize);
4006
- window.removeEventListener("scroll", onScrollOrResize, true);
4007
- };
4008
- }, [anchorElem, menuRef]);
4009
3945
  return /*#__PURE__*/React__default.createElement("div", {
4010
3946
  ref: menuRef,
4011
- style: {
4012
- position: "absolute",
4013
- top: style.top,
4014
- left: style.left,
4015
- width: style.width,
4016
- maxHeight: style.maxHeight,
4017
- transformOrigin: style.transformOrigin,
4018
- opacity: style.opacity
4019
- },
4020
- className: "absolute z-50 bg-white rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out",
3947
+ className: "absolute right-0 top-full mt-1 z-50 w-44 bg-white rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto max-h-64",
4021
3948
  onClick: function onClick(e) {
4022
3949
  return e.stopPropagation();
4023
3950
  }
@@ -4033,9 +3960,9 @@ var ActionMenuPortal = /*#__PURE__*/memo(function ActionMenuPortal(_ref) {
4033
3960
  className: "w-full text-left px-3 py-2 text-sm hover:bg-gray-100 flex items-center gap-2 rounded-md",
4034
3961
  onClick: function onClick(e) {
4035
3962
  e.stopPropagation();
4036
- onAction === null || onAction === void 0 || onAction(action, anchorRow);
3963
+ onAction === null || onAction === void 0 || onAction(action, row);
4037
3964
  }
4038
- }, action.render ? action.render(anchorRow) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, action.icon && /*#__PURE__*/React__default.createElement("span", {
3965
+ }, action.render ? action.render(row) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, action.icon && /*#__PURE__*/React__default.createElement("span", {
4039
3966
  className: "inline-flex"
4040
3967
  }, action.icon), /*#__PURE__*/React__default.createElement("span", null, action.label))));
4041
3968
  })));
@@ -4123,85 +4050,85 @@ var Table = function Table(_ref2) {
4123
4050
  pageNumber = _ref2.pageNumber,
4124
4051
  props = _objectWithoutProperties$1(_ref2, _excluded$k);
4125
4052
  // Core state
4126
- var _useState3 = useState(false),
4127
- _useState4 = _slicedToArray(_useState3, 2),
4128
- isMobileView = _useState4[0],
4129
- setIsMobileView = _useState4[1];
4130
- var _useState5 = useState(function () {
4053
+ var _useState = useState(false),
4054
+ _useState2 = _slicedToArray(_useState, 2),
4055
+ isMobileView = _useState2[0],
4056
+ setIsMobileView = _useState2[1];
4057
+ var _useState3 = useState(function () {
4131
4058
  return Array.isArray(data) ? data : [];
4132
4059
  }),
4060
+ _useState4 = _slicedToArray(_useState3, 2),
4061
+ tableData = _useState4[0],
4062
+ setTableData = _useState4[1];
4063
+ var _useState5 = useState(false),
4133
4064
  _useState6 = _slicedToArray(_useState5, 2),
4134
- tableData = _useState6[0],
4135
- setTableData = _useState6[1];
4136
- var _useState7 = useState(false),
4065
+ loading = _useState6[0],
4066
+ setLoading = _useState6[1];
4067
+ var _useState7 = useState(pageSize),
4137
4068
  _useState8 = _slicedToArray(_useState7, 2),
4138
- loading = _useState8[0],
4139
- setLoading = _useState8[1];
4140
- var _useState9 = useState(pageSize),
4141
- _useState0 = _slicedToArray(_useState9, 2),
4142
- limit = _useState0[0],
4143
- setLimit = _useState0[1];
4144
- var _useState1 = useState(function () {
4069
+ limit = _useState8[0],
4070
+ setLimit = _useState8[1];
4071
+ var _useState9 = useState(function () {
4145
4072
  return typeof pageNumber === "number" ? pageNumber : 1;
4146
4073
  }),
4147
- _useState10 = _slicedToArray(_useState1, 2),
4148
- currentPage = _useState10[0],
4149
- setCurrentPage = _useState10[1];
4074
+ _useState0 = _slicedToArray(_useState9, 2),
4075
+ currentPage = _useState0[0],
4076
+ setCurrentPage = _useState0[1];
4150
4077
 
4151
4078
  // Column state
4152
- var _useState11 = useState(function () {
4079
+ var _useState1 = useState(function () {
4153
4080
  return Array.isArray(columns) ? columns.map(function (c) {
4154
4081
  return _objectSpread$9({}, c);
4155
4082
  }) : [];
4156
4083
  }),
4084
+ _useState10 = _slicedToArray(_useState1, 2),
4085
+ columnsState = _useState10[0],
4086
+ setColumnsState = _useState10[1];
4087
+ var _useState11 = useState(false),
4157
4088
  _useState12 = _slicedToArray(_useState11, 2),
4158
- columnsState = _useState12[0],
4159
- setColumnsState = _useState12[1];
4160
- var _useState13 = useState(false),
4161
- _useState14 = _slicedToArray(_useState13, 2),
4162
- showColumnMenu = _useState14[0],
4163
- setShowColumnMenu = _useState14[1];
4089
+ showColumnMenu = _useState12[0],
4090
+ setShowColumnMenu = _useState12[1];
4164
4091
 
4165
4092
  // Sorting/filtering state
4166
- var _useState15 = useState({
4093
+ var _useState13 = useState({
4167
4094
  key: null,
4168
4095
  direction: "asc"
4169
4096
  }),
4097
+ _useState14 = _slicedToArray(_useState13, 2),
4098
+ sortConfig = _useState14[0],
4099
+ setSortConfig = _useState14[1];
4100
+ var _useState15 = useState({}),
4170
4101
  _useState16 = _slicedToArray(_useState15, 2),
4171
- sortConfig = _useState16[0],
4172
- setSortConfig = _useState16[1];
4173
- var _useState17 = useState({}),
4102
+ filters = _useState16[0],
4103
+ setFilters = _useState16[1];
4104
+ var _useState17 = useState(""),
4174
4105
  _useState18 = _slicedToArray(_useState17, 2),
4175
- filters = _useState18[0],
4176
- setFilters = _useState18[1];
4177
- var _useState19 = useState(""),
4178
- _useState20 = _slicedToArray(_useState19, 2),
4179
- searchInput = _useState20[0],
4180
- setSearchInput = _useState20[1];
4106
+ searchInput = _useState18[0],
4107
+ setSearchInput = _useState18[1];
4181
4108
 
4182
4109
  // Selection/expansion state
4183
- var _useState21 = useState(function () {
4110
+ var _useState19 = useState(function () {
4184
4111
  return new Set();
4185
4112
  }),
4186
- _useState22 = _slicedToArray(_useState21, 2),
4187
- selectedRows = _useState22[0],
4188
- setSelectedRows = _useState22[1];
4189
- var _useState23 = useState(function () {
4113
+ _useState20 = _slicedToArray(_useState19, 2),
4114
+ selectedRows = _useState20[0],
4115
+ setSelectedRows = _useState20[1];
4116
+ var _useState21 = useState(function () {
4190
4117
  return new Set();
4191
4118
  }),
4192
- _useState24 = _slicedToArray(_useState23, 2),
4193
- expandedRows = _useState24[0],
4194
- setExpandedRows = _useState24[1];
4119
+ _useState22 = _slicedToArray(_useState21, 2),
4120
+ expandedRows = _useState22[0],
4121
+ setExpandedRows = _useState22[1];
4195
4122
 
4196
4123
  // Action menu state
4197
- var _useState25 = useState(null),
4124
+ var _useState23 = useState(null),
4125
+ _useState24 = _slicedToArray(_useState23, 2),
4126
+ actionAnchor = _useState24[0],
4127
+ setActionAnchor = _useState24[1];
4128
+ var _useState25 = useState(false),
4198
4129
  _useState26 = _slicedToArray(_useState25, 2),
4199
- actionAnchor = _useState26[0],
4200
- setActionAnchor = _useState26[1];
4201
- var _useState27 = useState(false),
4202
- _useState28 = _slicedToArray(_useState27, 2),
4203
- showMobileFilters = _useState28[0],
4204
- setShowMobileFilters = _useState28[1];
4130
+ showMobileFilters = _useState26[0],
4131
+ setShowMobileFilters = _useState26[1];
4205
4132
 
4206
4133
  // Refs
4207
4134
  var columnMenuRef = useRef(null);
@@ -4542,15 +4469,14 @@ var Table = function Table(_ref2) {
4542
4469
  title: "Actions"
4543
4470
  }, /*#__PURE__*/React__default.createElement(MoreVertical, {
4544
4471
  className: "h-4 w-4"
4545
- })), (actionAnchor === null || actionAnchor === void 0 ? void 0 : actionAnchor.key) === actionCellKey && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement(ActionMenuPortal, {
4546
- anchorElem: actionAnchor.elem,
4547
- anchorRow: actionAnchor.row,
4472
+ })), (actionAnchor === null || actionAnchor === void 0 ? void 0 : actionAnchor.key) === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
4548
4473
  actions: actionsToUse,
4474
+ row: row,
4549
4475
  onAction: function onAction(action) {
4550
4476
  return handleOnAction(action, row);
4551
4477
  },
4552
4478
  menuRef: actionMenuRef
4553
- }), document.body))), /*#__PURE__*/React__default.createElement("div", {
4479
+ }))), /*#__PURE__*/React__default.createElement("div", {
4554
4480
  className: "p-4"
4555
4481
  }, visibleColumns.map(function (column, colIndex) {
4556
4482
  var extraCellClass = typeof cellClass === "function" ? cellClass({
@@ -4932,7 +4858,7 @@ var Table = function Table(_ref2) {
4932
4858
  return e.stopPropagation();
4933
4859
  }
4934
4860
  }, /*#__PURE__*/React__default.createElement("div", {
4935
- className: "inline-block"
4861
+ className: "relative inline-block"
4936
4862
  }, /*#__PURE__*/React__default.createElement("button", {
4937
4863
  onClick: function onClick(e) {
4938
4864
  return toggleActions(e, actionCellKey, row);
@@ -4942,15 +4868,14 @@ var Table = function Table(_ref2) {
4942
4868
  title: "Actions"
4943
4869
  }, /*#__PURE__*/React__default.createElement(MoreVertical, {
4944
4870
  className: "h-4 w-4"
4945
- }))), (actionAnchor === null || actionAnchor === void 0 ? void 0 : actionAnchor.key) === actionCellKey && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement(ActionMenuPortal, {
4946
- anchorElem: actionAnchor.elem,
4947
- anchorRow: actionAnchor.row,
4871
+ })), (actionAnchor === null || actionAnchor === void 0 ? void 0 : actionAnchor.key) === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
4948
4872
  actions: actionsToUse,
4873
+ row: row,
4949
4874
  onAction: function onAction(action) {
4950
4875
  return handleOnAction(action, row);
4951
4876
  },
4952
4877
  menuRef: actionMenuRef
4953
- }), document.body))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
4878
+ })))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
4954
4879
  colSpan: visibleCount,
4955
4880
  className: "px-6 py-4 bg-gray-50"
4956
4881
  }, /*#__PURE__*/React__default.createElement(DetailsComponent, {