one-design-next 0.0.83 → 0.0.84

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.
@@ -705,15 +705,26 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
705
705
  }, [filteredSkills, filteredSkillGroups, handleSelectSkill, triggerActiveIndex, triggerMenuVisible]);
706
706
 
707
707
  /* trigger 浮 anchor:跟随 caret 的 0×0 隐形元素,给 Popover 当 children。
708
- * Popover 需要 DOM children 当 reference,没有"虚拟 anchor" API,只能这么搞。 */
708
+ * Popover 需要 DOM children 当 reference,没有"虚拟 anchor" API,只能这么搞。
709
+ *
710
+ * 使用 position: absolute 而非 fixed——Drawer 等容器的 transform 会创建
711
+ * 新的 containing block,导致 fixed 定位失准。absolute 相对于最近 positioned
712
+ * 祖先([data-odn-composer] 有 position:relative),通过减去 offsetParent
713
+ * 的 viewport rect 得到正确的局部坐标。 */
709
714
  var triggerAnchorRef = useRef(null);
710
715
  useLayoutEffect(function () {
711
716
  var el = triggerAnchorRef.current;
712
717
  if (!el || !triggerInfo) return;
713
- el.style.left = "".concat(triggerInfo.rect.left, "px");
714
- /* 锚到 caret 行顶部,配合 placement=topLeft 让 menu 浮在输入内容上方,
715
- * 不遮挡正在输入的文字(空间不足时 Popover flip 会自动回落到下方)。 */
716
- el.style.top = "".concat(triggerInfo.rect.top, "px");
718
+ var offsetParent = el.offsetParent;
719
+ if (offsetParent) {
720
+ var parentRect = offsetParent.getBoundingClientRect();
721
+ el.style.left = "".concat(triggerInfo.rect.left - parentRect.left, "px");
722
+ el.style.top = "".concat(triggerInfo.rect.top - parentRect.top, "px");
723
+ } else {
724
+ // fallback:没有 offsetParent(比如 display:none),用 viewport 坐标
725
+ el.style.left = "".concat(triggerInfo.rect.left, "px");
726
+ el.style.top = "".concat(triggerInfo.rect.top, "px");
727
+ }
717
728
  }, [triggerInfo]);
718
729
 
719
730
  /* ---- Derived ---- */
@@ -1131,7 +1142,7 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1131
1142
  ref: triggerAnchorRef,
1132
1143
  "data-odn-composer-trigger-anchor": true,
1133
1144
  style: {
1134
- position: 'fixed',
1145
+ position: 'absolute',
1135
1146
  width: 0,
1136
1147
  height: 0,
1137
1148
  pointerEvents: 'none'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one-design-next",
3
- "version": "0.0.83",
3
+ "version": "0.0.84",
4
4
  "description": "One Design Next from TAD@tencent.com",
5
5
  "license": "MIT",
6
6
  "type": "module",