@rainbow-oh/yee-c 0.7.0 → 0.8.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.
Files changed (37) hide show
  1. package/dist/cjs/Form/form-store.d.ts +2 -1
  2. package/dist/cjs/Form/form-store.js +32 -17
  3. package/dist/cjs/Table/hooks/useColumns.js +1 -1
  4. package/dist/cjs/Table/style/index.less +35 -11
  5. package/dist/cjs/Table/table.js +57 -7
  6. package/dist/cjs/Table/tbody/cell.js +1 -1
  7. package/dist/cjs/Table/util/header.d.ts +3 -1
  8. package/dist/cjs/Table/util/header.js +30 -3
  9. package/dist/cjs/style/color.css +2 -0
  10. package/dist/cjs/style/themes.css +1 -1
  11. package/dist/cjs/style/variables.css +3 -1
  12. package/dist/cjs/version.d.ts +1 -1
  13. package/dist/cjs/version.js +1 -1
  14. package/dist/esm/Form/form-store.d.ts +2 -1
  15. package/dist/esm/Form/form-store.js +40 -19
  16. package/dist/esm/Table/hooks/useColumns.js +1 -1
  17. package/dist/esm/Table/style/index.less +35 -11
  18. package/dist/esm/Table/table.js +54 -2
  19. package/dist/esm/Table/tbody/cell.js +1 -1
  20. package/dist/esm/Table/util/header.d.ts +3 -1
  21. package/dist/esm/Table/util/header.js +30 -2
  22. package/dist/esm/style/color.css +2 -0
  23. package/dist/esm/style/themes.css +1 -1
  24. package/dist/esm/style/variables.css +3 -1
  25. package/dist/esm/version.d.ts +1 -1
  26. package/dist/esm/version.js +1 -1
  27. package/dist/umd/yee-c.min.css +3 -3
  28. package/dist/umd/yee-c.min.js +1 -1
  29. package/package.json +1 -1
  30. package/src/Form/form-store.ts +42 -15
  31. package/src/Table/hooks/useColumns.ts +1 -1
  32. package/src/Table/style/index.less +35 -11
  33. package/src/Table/table.tsx +60 -1
  34. package/src/Table/tbody/cell.tsx +1 -1
  35. package/src/Table/util/header.ts +48 -2
  36. package/src/style/color.css +2 -0
  37. package/src/version.ts +1 -1
@@ -6,6 +6,12 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
8
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
9
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
14
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
15
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
10
16
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
11
17
  import clsx from 'clsx';
@@ -138,6 +144,30 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
138
144
 
139
145
  // Track previous values to determine what action triggered onChange
140
146
  var prevSortersRef = useRef({});
147
+ var contentWrapperRef = useRef(null);
148
+ var contentRef = useRef(null);
149
+ var _React$useState = React.useState({
150
+ left: false,
151
+ right: false
152
+ }),
153
+ _React$useState2 = _slicedToArray(_React$useState, 2),
154
+ horizontalScroll = _React$useState2[0],
155
+ setHorizontalScroll = _React$useState2[1];
156
+ var updateHorizontalScroll = React.useCallback(function () {
157
+ var wrapper = contentWrapperRef.current;
158
+ var content = contentRef.current;
159
+ if (!wrapper || !content) return;
160
+ var scrollContainer = content.scrollWidth - content.clientWidth > 1 ? content : wrapper;
161
+ var maxScrollLeft = scrollContainer.scrollWidth - scrollContainer.clientWidth;
162
+ var hasHorizontalScroll = maxScrollLeft > 1;
163
+ var next = {
164
+ left: hasHorizontalScroll && scrollContainer.scrollLeft > 1,
165
+ right: hasHorizontalScroll && scrollContainer.scrollLeft < maxScrollLeft - 1
166
+ };
167
+ setHorizontalScroll(function (current) {
168
+ return current.left === next.left && current.right === next.right ? current : next;
169
+ });
170
+ }, []);
141
171
 
142
172
  // Wrap onFilter to trigger onChange
143
173
  var onFilter = React.useCallback(function () {
@@ -179,6 +209,24 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
179
209
  return;
180
210
  }
181
211
  }, [sorters, current, pageSize, pageData, sortedData, onChange]);
212
+ useEffect(function () {
213
+ updateHorizontalScroll();
214
+ var wrapper = contentWrapperRef.current;
215
+ var content = contentRef.current;
216
+ if (!wrapper || !content) return undefined;
217
+ if (typeof ResizeObserver === 'undefined') {
218
+ window.addEventListener('resize', updateHorizontalScroll);
219
+ return function () {
220
+ return window.removeEventListener('resize', updateHorizontalScroll);
221
+ };
222
+ }
223
+ var resizeObserver = new ResizeObserver(updateHorizontalScroll);
224
+ resizeObserver.observe(wrapper);
225
+ resizeObserver.observe(content);
226
+ return function () {
227
+ return resizeObserver.disconnect();
228
+ };
229
+ }, [updateHorizontalScroll, wrapedColumns, pageData, scroll === null || scroll === void 0 ? void 0 : scroll.x]);
182
230
  var renderHeader = function renderHeader() {
183
231
  return /*#__PURE__*/React.createElement(Header, {
184
232
  prefixCls: prefixCls,
@@ -244,13 +292,17 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
244
292
  columns: wrapedColumns
245
293
  }), renderTHeader(), renderTBody(), renderTFooter()));
246
294
  return /*#__PURE__*/React.createElement("div", {
247
- className: "".concat(prefixCls, "-content-wrapper")
295
+ ref: contentWrapperRef,
296
+ className: clsx("".concat(prefixCls, "-content-wrapper"), _defineProperty(_defineProperty({}, "".concat(prefixCls, "-content-wrapper-scroll-left"), horizontalScroll.left), "".concat(prefixCls, "-content-wrapper-scroll-right"), horizontalScroll.right)),
297
+ onScroll: updateHorizontalScroll
248
298
  }, /*#__PURE__*/React.createElement("div", {
299
+ ref: contentRef,
249
300
  className: clsx("".concat(prefixCls, "-content"), _defineProperty(_defineProperty({}, "".concat(prefixCls, "-").concat(size, "-size"), size), "".concat(prefixCls, "-fixed-header"), scroll === null || scroll === void 0 ? void 0 : scroll.y)),
250
301
  style: {
251
302
  height: scroll === null || scroll === void 0 ? void 0 : scroll.y,
252
303
  width: scroll === null || scroll === void 0 ? void 0 : scroll.x
253
- }
304
+ },
305
+ onScroll: updateHorizontalScroll
254
306
  }, table));
255
307
  };
256
308
  var renderFooter = function renderFooter() {
@@ -42,7 +42,7 @@ var TableCell = function TableCell(props) {
42
42
  var _children = renderChildren();
43
43
  var getTdProps = function getTdProps() {
44
44
  var title = render ? undefined : record[dataIndex || ''];
45
- var cls = clsx("".concat(prefixCls, "-cell"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-cell-fixed-").concat(fixed), fixed), "".concat(prefixCls, "-cell-fixed-").concat(fixed, "-first"), isFixedRightFirst), "".concat(prefixCls, "-fixed-").concat(fixed, "-last"), isFixedLeftLast), className);
45
+ var cls = clsx("".concat(prefixCls, "-cell"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-cell-fixed-").concat(fixed), fixed), "".concat(prefixCls, "-cell-fixed-").concat(fixed, "-first"), isFixedRightFirst), "".concat(prefixCls, "-cell-fixed-").concat(fixed, "-last"), isFixedLeftLast), className);
46
46
  var styles = _objectSpread(_objectSpread({}, style), {}, {
47
47
  width: width,
48
48
  maxWidth: width,
@@ -11,10 +11,12 @@ export declare function flattenLeafColumns(columns: WrapedColumnProps[], parentF
11
11
  *
12
12
  * - Pass 1 (DFS): place each column into the row matching its depth; a group's
13
13
  * colSpan equals the sum of its children's colSpans.
14
+ * - Fixed metadata from the resolved leaf columns is reused by leaf cells and
15
+ * aggregated for group cells whose descendants share the same fixed side.
14
16
  * - Pass 2: leaf cells (no sub-columns) get rowSpan = rowCount - rowIndex so
15
17
  * they stretch down to the last header row; group cells keep rowSpan = 1.
16
18
  */
17
- export declare function parseHeaderRows(rootColumns: WrapedColumnProps[]): HeaderCell[][];
19
+ export declare function parseHeaderRows(rootColumns: WrapedColumnProps[], resolvedLeafColumns?: WrapedColumnProps[]): HeaderCell[][];
18
20
  /**
19
21
  * Inject selection / expand columns into the top level of the column tree.
20
22
  * `index` is a 1-based position among the top-level columns.
@@ -34,24 +34,52 @@ export function flattenLeafColumns(columns, parentFixed) {
34
34
  *
35
35
  * - Pass 1 (DFS): place each column into the row matching its depth; a group's
36
36
  * colSpan equals the sum of its children's colSpans.
37
+ * - Fixed metadata from the resolved leaf columns is reused by leaf cells and
38
+ * aggregated for group cells whose descendants share the same fixed side.
37
39
  * - Pass 2: leaf cells (no sub-columns) get rowSpan = rowCount - rowIndex so
38
40
  * they stretch down to the last header row; group cells keep rowSpan = 1.
39
41
  */
40
42
  export function parseHeaderRows(rootColumns) {
43
+ var resolvedLeafColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : flattenLeafColumns(rootColumns);
41
44
  var rows = [];
45
+ var leafIndex = 0;
42
46
  var fillRowCells = function fillRowCells(columns, rowIndex) {
43
47
  rows[rowIndex] = rows[rowIndex] || [];
44
48
  var colSpanTotal = 0;
45
- columns.filter(Boolean).forEach(function (column) {
49
+ columns.filter(Boolean).forEach(function (sourceColumn) {
50
+ var column = sourceColumn;
51
+ var subColumns = sourceColumn.children;
52
+ var leafStartIndex = leafIndex;
46
53
  var cell = {
47
54
  column: column,
48
55
  colSpan: 1,
49
56
  rowSpan: 1
50
57
  };
51
- var subColumns = column.children;
52
58
  if (subColumns && subColumns.length > 0) {
59
+ var _groupLeaves$;
53
60
  cell.colSpan = fillRowCells(subColumns, rowIndex + 1);
54
61
  cell.hasSubColumns = true;
62
+ var groupLeaves = resolvedLeafColumns.slice(leafStartIndex, leafIndex);
63
+ var fixed = (_groupLeaves$ = groupLeaves[0]) === null || _groupLeaves$ === void 0 ? void 0 : _groupLeaves$.fixed;
64
+ var isFixedGroup = (fixed === 'left' || fixed === 'right') && groupLeaves.every(function (leaf) {
65
+ return leaf.fixed === fixed;
66
+ });
67
+ if (isFixedGroup) {
68
+ var _offsetLeaf$style;
69
+ var offsetLeaf = fixed === 'left' ? groupLeaves[0] : groupLeaves[groupLeaves.length - 1];
70
+ var boundaryLeaf = fixed === 'left' ? groupLeaves[groupLeaves.length - 1] : groupLeaves[0];
71
+ column = _objectSpread(_objectSpread({}, sourceColumn), {}, {
72
+ fixed: fixed,
73
+ style: _objectSpread(_objectSpread({}, sourceColumn.style), {}, _defineProperty({}, fixed, (_offsetLeaf$style = offsetLeaf.style) === null || _offsetLeaf$style === void 0 ? void 0 : _offsetLeaf$style[fixed])),
74
+ isFixedLeftLast: fixed === 'left' && boundaryLeaf.isFixedLeftLast,
75
+ isFixedRightFirst: fixed === 'right' && boundaryLeaf.isFixedRightFirst
76
+ });
77
+ cell.column = column;
78
+ }
79
+ } else {
80
+ column = resolvedLeafColumns[leafIndex] || sourceColumn;
81
+ cell.column = column;
82
+ leafIndex += 1;
55
83
  }
56
84
  rows[rowIndex].push(cell);
57
85
  colSpanTotal += cell.colSpan;
@@ -848,6 +848,7 @@
848
848
  --yee-table-thead-stripe-borderbottom-color: var(
849
849
  --yee-table-thead-borderbottom-color
850
850
  );
851
+ --yee-table-row-bg-color: var(--yee-color-bg-container);
851
852
  --yee-table-odd-row-bg-color: var(--yee-color-bg-container);
852
853
  --yee-table-even-row-bg-color: var(--yee-color-bg-head);
853
854
  --yee-table-elevated-thead-stripe-borderbottom-color: var(
@@ -870,6 +871,7 @@
870
871
  --yee-table-head-filter-active-color: var(--yee-primary-color);
871
872
  --yee-table-fixed-left-after-bs-color: var(--yee-box-shadow-color);
872
873
  --yee-table-fixed-right-after-bs-color: var(--yee-box-shadow-color);
874
+ --yee-table-fixed-column-bg-color: inherit;
873
875
  --yee-table-filter-list-bg-color: var(--yee-color-bg-elevated);
874
876
  --yee-table-tbody-tr-expanded-bg-color: var(--yee-color-bg-container);
875
877
  --yee-table-elevated-tbody-tr-expanded-bg-color: var(
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-07-21T08:16:43.112Z
4
+ * Generated on 2026-07-22T03:22:12.652Z
5
5
  */
6
6
 
7
7
  /* ========== color.blue.css ========== */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-07-21T08:16:43.112Z
4
+ * Generated on 2026-07-22T03:22:12.652Z
5
5
  */
6
6
 
7
7
  /* ========== color.css ========== */
@@ -855,6 +855,7 @@
855
855
  --yee-table-thead-stripe-borderbottom-color: var(
856
856
  --yee-table-thead-borderbottom-color
857
857
  );
858
+ --yee-table-row-bg-color: var(--yee-color-bg-container);
858
859
  --yee-table-odd-row-bg-color: var(--yee-color-bg-container);
859
860
  --yee-table-even-row-bg-color: var(--yee-color-bg-head);
860
861
  --yee-table-elevated-thead-stripe-borderbottom-color: var(
@@ -877,6 +878,7 @@
877
878
  --yee-table-head-filter-active-color: var(--yee-primary-color);
878
879
  --yee-table-fixed-left-after-bs-color: var(--yee-box-shadow-color);
879
880
  --yee-table-fixed-right-after-bs-color: var(--yee-box-shadow-color);
881
+ --yee-table-fixed-column-bg-color: inherit;
880
882
  --yee-table-filter-list-bg-color: var(--yee-color-bg-elevated);
881
883
  --yee-table-tbody-tr-expanded-bg-color: var(--yee-color-bg-container);
882
884
  --yee-table-elevated-tbody-tr-expanded-bg-color: var(
@@ -3,4 +3,4 @@ declare global {
3
3
  __yee_c_version__: string;
4
4
  }
5
5
  }
6
- export declare const version = "0.7.0";
6
+ export declare const version = "0.8.0";
@@ -1,4 +1,4 @@
1
- export var version = "0.7.0";
1
+ export var version = "0.8.0";
2
2
  if (typeof window !== 'undefined') {
3
3
  window.__yee_c_version__ = version;
4
4
  }