indicator-ui 1.0.11 → 1.0.12

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.
@@ -1,5 +1,6 @@
1
1
  type FunBaseType = (...args: any) => any;
2
- type PropsType<T extends FunBaseType> = [
2
+ type FunctionGeneric = FunBaseType | FunBaseType[];
3
+ type PropsType<T extends FunctionGeneric> = [
3
4
  fun: T,
4
5
  initState?: boolean
5
6
  ];
@@ -8,10 +9,52 @@ type ActionsType = {
8
9
  stopLoading: () => void;
9
10
  getIsLoading: () => boolean;
10
11
  };
11
- type FunReturnType<T extends FunBaseType> = [
12
+ type FunReturnType<T extends FunctionGeneric> = [
12
13
  fun: T,
13
14
  isLoading: boolean,
14
15
  actions: ActionsType
15
16
  ];
17
+ /**
18
+ * Хук для управления состоянием загрузки при выполнении функций.
19
+ * Оборачивает переданную функцию (или массив функций) в декоратор, который автоматически
20
+ * устанавливает состояние загрузки перед выполнением и сбрасывает его после завершения.
21
+ *
22
+ * @template T - Тип функции или массива функций
23
+ *
24
+ * @param {T} fun - Функция или массив функций для декорирования
25
+ * @param {boolean} [initState=false] - Начальное состояние загрузки
26
+ *
27
+ * @returns {[T, boolean, ActionsType]} Кортеж из трёх элементов:
28
+ * - Декорированная функция(и) с автоматическим управлением состоянием загрузки
29
+ * - Текущее реактивное состояние загрузки (boolean)
30
+ * - Объект с действиями для ручного управления состоянием:
31
+ * - `startLoading()` - установить состояние загрузки в true
32
+ * - `stopLoading()` - установить состояние загрузки в false
33
+ * - `getIsLoading()` - получить текущее состояние загрузки
34
+ *
35
+ * @example
36
+ * // Использование с одной функцией
37
+ * const [fetchData, isLoading, {startLoading, stopLoading}] = useLoading(
38
+ * async () => {
39
+ * const response = await fetch('/api/data');
40
+ * return response.json();
41
+ * }
42
+ * );
43
+ *
44
+ * @example
45
+ * // Использование с массивом функций
46
+ * const [
47
+ * [handleSubmit, handleDelete],
48
+ * isLoading,
49
+ * actions
50
+ * ] = useLoading([
51
+ * async (data) => await api.submit(data),
52
+ * async (id) => await api.delete(id)
53
+ * ]);
54
+ *
55
+ * @example
56
+ * // С начальным состоянием загрузки
57
+ * const [loadUser, isLoading] = useLoading(fetchUser, true);
58
+ */
16
59
  export declare function useLoading<T extends FunBaseType>(...args: PropsType<T>): FunReturnType<T>;
17
60
  export {};
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "react-components",
12
12
  "ui-kit"
13
13
  ],
14
- "version": "1.0.11",
14
+ "version": "1.0.12",
15
15
  "exports": {
16
16
  ".": {
17
17
  "types": "./dist/types/index.d.ts",