Skip to content

Commit 2ed4a2b

Browse files
committed
feat: ✨ 完善多选加载,支持跨页多选
1 parent 0c38ee2 commit 2ed4a2b

20 files changed

Lines changed: 790 additions & 591 deletions

locales/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@
9797
"page_range": "Please enter the page range.:\n (e.g., 1, 3-5, 9-)",
9898
"read_mode": "Reading mode",
9999
"selected": "Selected",
100-
"setting": "Settings"
100+
"setting": "Settings",
101+
"clear": "Clear"
101102
},
102103
"pwa": {
103104
"alert": {

locales/hu.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@
9797
"page_range": "Kérlek add meg az oldaltartományt:\n(például: 1, 3-5, 9-)",
9898
"read_mode": "Olvasó mód",
9999
"selected": "Kiválasztva",
100-
"setting": "Beállítások"
100+
"setting": "Beállítások",
101+
"clear": "Törlés"
101102
},
102103
"pwa": {
103104
"alert": {

locales/ru.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@
9797
"page_range": "Введите диапазон страниц.:\n (например, 1, 3-5, 9-)",
9898
"read_mode": "Режим чтения",
9999
"selected": "Выбрано",
100-
"setting": "Настройки"
100+
"setting": "Настройки",
101+
"clear": "Очистить"
101102
},
102103
"pwa": {
103104
"alert": {

locales/ta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@
9797
"page_range": "பக்க எண் வரம்பை உள்ளிடவும்:\n (எடுத்துக்காட்டாக: 1, 3-5, 9-))",
9898
"read_mode": "படித்தல் பயன்முறை",
9999
"selected": "தேர்ந்தெடுக்கப்பட்டது",
100-
"setting": "அமைக்கவும்"
100+
"setting": "அமைக்கவும்",
101+
"clear": "அழி"
101102
},
102103
"pwa": {
103104
"alert": {

locales/zh.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@
9797
"page_range": "请输入页码范围:\n(例如:1, 3-5, 9-)",
9898
"read_mode": "阅读模式",
9999
"selected": "已选中",
100-
"setting": "设置"
100+
"setting": "设置",
101+
"clear": "清空"
101102
},
102103
"pwa": {
103104
"alert": {

src/helper/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,3 @@ export * from './useCache';
88
export * from './useDrag';
99
export * from './useStore';
1010
export * from './useStyle';
11-
export * from './useMultiSelectMode';

src/helper/other.ts

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export const isString = (val: unknown): val is string =>
4242
export const isNumber = (val: unknown): val is number =>
4343
typeof val === 'number';
4444

45+
export const isArray = (val: unknown): val is unknown[] => Array.isArray(val);
46+
4547
/** 判断两个数是否在指定误差范围内相等 */
4648
export const approx = (val: number, target: number, range = 1) =>
4749
Math.abs(target - val) <= range;
@@ -327,7 +329,13 @@ export const needDarkMode = (hexColor: string) => {
327329
return yiq < 128;
328330
};
329331

330-
/** 等到传入的函数返回 true */
332+
/**
333+
* 重复执行传入的函数,直到其返回真值或超时
334+
*
335+
* @param fn - 条件判断函数
336+
* @param timeout - 超时时间(毫秒),默认为 Infinity
337+
* @param waitTime - 轮询间隔时间(毫秒),默认为 100
338+
*/
331339
export async function wait<T>(
332340
fn: () => T | undefined | Promise<T | undefined>,
333341
): Promise<TrueValue<T>>;
@@ -349,18 +357,24 @@ export async function wait<T>(
349357
_timeout -= waitTime;
350358
res = await fn();
351359
}
352-
353360
return res;
354361
}
355362

356-
/** 等到指定的 dom 出现 */
357-
export async function waitDom(selector: string): Promise<HTMLElement>;
363+
/** 等到指定 selector 匹配到指定数量的 dom 元素 */
358364
export async function waitDom(
359365
selector: string,
366+
count?: number,
367+
): Promise<HTMLElement[]>;
368+
export async function waitDom(
369+
selector: string,
370+
count?: number,
360371
timeout?: number,
361-
): Promise<HTMLElement | null>;
362-
export async function waitDom(selector: string, timeout?: number) {
363-
return wait(() => querySelector(selector), timeout);
372+
): Promise<HTMLElement[] | undefined>;
373+
export async function waitDom(selector: string, count = 1, timeout?: number) {
374+
return wait(() => {
375+
const elements = document.querySelectorAll<HTMLElement>(selector);
376+
return elements.length >= count ? [...elements] : undefined;
377+
}, timeout);
364378
}
365379

366380
/** 等待指定的图片元素加载完成 */
@@ -718,3 +732,12 @@ export const getImageData = (img: HTMLImageElement) => {
718732
ctx.drawImage(img, 0, 0);
719733
return ctx.getImageData(0, 0, width, height);
720734
};
735+
736+
// TODO: 用这个重构相关实现
737+
export const withEventStop =
738+
<T extends Event>(handler?: (e: T) => void) =>
739+
(e: T) => {
740+
e.stopPropagation();
741+
e.preventDefault();
742+
if (handler) handler(e);
743+
};

0 commit comments

Comments
 (0)