twico-ui 1.32.1 → 1.33.1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to Twico UI are documented here (newest first). This file is generated automatically on each release by [semantic-release](https://semantic-release.gitbook.io/) from [Conventional Commits](https://www.conventionalcommits.org/) — do not edit it by hand. The same notes appear on each [GitHub Release](https://github.com/EncryptionL/twico-ui/releases).
4
4
 
5
+ ## [1.33.1](https://github.com/EncryptionL/twico-ui/compare/v1.33.0...v1.33.1) (2026-08-11)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **tooltip:** make the bubble non-interactive so it never blocks neighbours ([b4b197a](https://github.com/EncryptionL/twico-ui/commit/b4b197a60f1df64eb357939f7e5098d3022c56cd)), closes [#348](https://github.com/EncryptionL/twico-ui/issues/348)
11
+
12
+ # [1.33.0](https://github.com/EncryptionL/twico-ui/compare/v1.32.1...v1.33.0) (2026-08-11)
13
+
14
+
15
+ ### Features
16
+
17
+ * **datatable:** per-cell cellClassName/cellStyle hooks on DatatableColumn ([ac58410](https://github.com/EncryptionL/twico-ui/commit/ac58410109b9a67ed7cb78717a3a98a8b8639cb1)), closes [#242](https://github.com/EncryptionL/twico-ui/issues/242) [#345](https://github.com/EncryptionL/twico-ui/issues/345)
18
+
5
19
  ## [1.32.1](https://github.com/EncryptionL/twico-ui/compare/v1.32.0...v1.32.1) (2026-08-11)
6
20
 
7
21
 
package/dist/index.cjs CHANGED
@@ -7963,6 +7963,9 @@ var TOOLTIP_CSS = `
7963
7963
  .twc-tooltip-wrap { display: inline-flex; }
7964
7964
  .twc-tooltip {
7965
7965
  position: fixed; z-index: var(--z-tooltip);
7966
+ /* #348: purely presentational \u2014 the bubble must NEVER intercept the pointer, so neither a hidden
7967
+ (opacity:0) nor a shown bubble can block neighbouring cells/buttons (matches MUI/Radix tooltips). */
7968
+ pointer-events: none;
7966
7969
  padding: 6px 10px; border-radius: var(--radius-md);
7967
7970
  background: var(--color-text); color: var(--color-surface);
7968
7971
  font-family: var(--font-sans); font-size: var(--text-xs); font-weight: var(--font-medium);
@@ -7974,7 +7977,6 @@ var TOOLTIP_CSS = `
7974
7977
  width: max-content; max-width: var(--_tw-maxw, 320px); box-shadow: var(--shadow-md);
7975
7978
  opacity: 0; transform: scale(0.9); transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);
7976
7979
  }
7977
- .twc-tooltip[data-show="true"] { pointer-events: auto; }
7978
7980
  .twc-tooltip[data-show="true"] { opacity: 1; transform: scale(1); }
7979
7981
  .twc-tooltip[data-place="top"] { transform-origin: bottom center; translate: -50% 0; }
7980
7982
  .twc-tooltip[data-place="bottom"] { transform-origin: top center; translate: -50% 0; }
@@ -8021,9 +8023,6 @@ function Tooltip({
8021
8023
  clearTimeout(closeTimer.current);
8022
8024
  closeTimer.current = setTimeout(() => setShowU(false), 120);
8023
8025
  };
8024
- const cancelClose = () => {
8025
- clearTimeout(closeTimer.current);
8026
- };
8027
8026
  React51__namespace.default.useEffect(() => () => {
8028
8027
  clearTimeout(timer.current);
8029
8028
  clearTimeout(closeTimer.current);
@@ -8099,8 +8098,6 @@ function Tooltip({
8099
8098
  "data-show": show || void 0,
8100
8099
  role: "tooltip",
8101
8100
  "aria-hidden": show ? void 0 : "true",
8102
- onMouseEnter: anchored ? void 0 : cancelClose,
8103
- onMouseLeave: anchored ? void 0 : close,
8104
8101
  style: {
8105
8102
  position: "fixed",
8106
8103
  left: coords.left,
@@ -11519,11 +11516,13 @@ function Datatable({
11519
11516
  const cellId = selectionMode === "cell" ? `${gridId}-${ri}-${ci}` : void 0;
11520
11517
  const display = c.valueFormatter ? c.valueFormatter(val, row) : val;
11521
11518
  const cellTitle = !isActions && !c.renderCell && !isEditing && (typeof display === "string" || typeof display === "number") ? String(display) : void 0;
11519
+ const cellClass = c.cellClassName ? c.cellClassName(val, row) : void 0;
11520
+ const cellSty = c.cellStyle ? c.cellStyle(val, row) : void 0;
11522
11521
  return /* @__PURE__ */ jsxRuntime.jsxs(
11523
11522
  "td",
11524
11523
  {
11525
11524
  id: cellId,
11526
- className: "twc-dt__td",
11525
+ className: cellClass ? `twc-dt__td ${cellClass}` : "twc-dt__td",
11527
11526
  role: "gridcell",
11528
11527
  "data-r": ri,
11529
11528
  "data-c": ci,
@@ -11540,7 +11539,7 @@ function Datatable({
11540
11539
  "data-wrap": effectiveWrapped.has(c.field) || void 0,
11541
11540
  "data-pin": st.pin,
11542
11541
  "data-pin-edge": st.edge,
11543
- style: { width: widthOf(c), ...st.style },
11542
+ style: { width: widthOf(c), ...cellSty, ...st.style, ...st.pin ? { position: "sticky", zIndex: 2 } : null },
11544
11543
  "data-ovtext": cellTitle,
11545
11544
  onClick: selectionMode === "cell" ? (e) => handleCellClick(e, k, row, c) : void 0,
11546
11545
  onFocus: () => setFocus((f) => f.r === ri && f.c === ci ? f : { r: ri, c: ci }),