marquee-selection 0.0.11 → 0.0.13

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/README.md CHANGED
@@ -92,7 +92,7 @@ options(主要项):
92
92
  - allowIntersectionSelection?: boolean 默认 true。若为 false,则只禁止“部分交叉”关系:即新集合与已有集合间存在交集且双方都还有各自独有的元素。
93
93
  - allowContainmentSelection?: boolean 默认 true。仅当 allowIntersectionSelection=false 时生效;true 表示仍允许“包含/被包含”关系(A 是 B 的子集或父集),false 表示包含也禁止,仅保留完全不相交或完全相等两种情况。
94
94
  - allowUnionSelection?: boolean 默认 true。若为 false,则当已存在选择/组时,禁止新增元素(并集)。
95
- - toolbarButtons?: { label; title?; className?; onClick?(ctx) }[] 追加自定义工具栏按钮
95
+ - toolbarButtons?: { label; title?; className?; onClick?(ctx) }[] 追加自定义工具栏按钮(ctx.label/ctx.title 为可写属性,可在同步或异步回调中赋值以实时更新按钮展示)
96
96
 
97
97
  controller:
98
98
 
@@ -103,6 +103,7 @@ controller:
103
103
  - setGroupVisibility(index: number, hidden: boolean): boolean 设置组可见
104
104
  - toggleGroupVisibility(index: number): boolean 切换可见
105
105
  - getSelectionResult(): MarqueeSelectionSnapshot 获取当前快照
106
+ - setToolbarButtonProps(groupIndex: number, buttonIndex: number, props: { label?: string; title?: string }): boolean 直接修改指定组的自定义工具栏按钮文案(label/title 任意可选)
106
107
  - onSelectionEnd(handler): () => void 订阅下一次结束
107
108
  - waitForSelectionEnd(): Promise<MarqueeSelectionSnapshot> 等待下一次结束
108
109
  - getGroupNesting(): { parents: (number|null)[]; children: number[][]; roots: number[] } | null 获取组级嵌套(groupMode 下有效)
@@ -156,6 +157,8 @@ groupNesting 说明:依据组外接矩形完全包含关系,给每个组选
156
157
  - ctx.controller 控制器实例
157
158
  - ctx.getSnapshot() 获取最新快照
158
159
  - ctx.refresh() 触发重绘覆盖层并广播 onSelectionEnd
160
+ - ctx.label / ctx.title 支持在回调中赋值(含异步场景),立即刷新按钮文本与 title;ctx.buttonEl 可用于附加自定义 DOM
161
+ - 若需在回调外(例如异步完成后、或来自其它交互)修改按钮文案,可调用 `controller.setToolbarButtonProps(groupIndex, buttonIndex, { label?: string, title?: string })`,该方法会持久更新对应组的按钮状态并刷新 UI。
159
162
  - 示例:
160
163
 
161
164
  ```ts
package/dist/index.d.ts CHANGED
@@ -163,6 +163,9 @@ type MarqueeSelectionOptions = {
163
163
  anchorRect?: DOMRect;
164
164
  anchorEl?: HTMLElement;
165
165
  overlayEl?: HTMLElement;
166
+ label?: string;
167
+ title?: string;
168
+ buttonEl: HTMLButtonElement;
166
169
  }) => void;
167
170
  }>;
168
171
  };
@@ -205,6 +208,10 @@ type MarqueeSelectionController = {
205
208
  children: number[][];
206
209
  roots: number[];
207
210
  } | null;
211
+ setToolbarButtonProps: (groupIndex: number, buttonIndex: number, props: {
212
+ label?: string;
213
+ title?: string;
214
+ }) => boolean;
208
215
  };
209
216
  /**
210
217
  * 启用容器内矩形拖拽圈选