@gateweb/react-utils 1.15.0 → 1.16.0

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.
@@ -1226,6 +1226,26 @@ type TCountdownActions = {
1226
1226
  */
1227
1227
  declare const useCountdown: (initialCountdown: number, enableReinitialize?: boolean) => TCountdownActions;
1228
1228
 
1229
+ type UseDisclosureReturn = {
1230
+ /** Whether the disclosure is currently open. */
1231
+ isOpen: boolean;
1232
+ /** Open the disclosure (sets isOpen = true). */
1233
+ open: () => void;
1234
+ /** Close the disclosure (sets isOpen = false). */
1235
+ close: () => void;
1236
+ /** Toggle the disclosure state (open -> close or close -> open). */
1237
+ toggle: () => void;
1238
+ };
1239
+ /**
1240
+ * A small hook to control open/close state.
1241
+ *
1242
+ * Supports an optional controlled pattern by passing `isOpen` and `onChange`.
1243
+ *
1244
+ * @example
1245
+ * const { isOpen, open, close, toggle } = useDisclosure();
1246
+ */
1247
+ declare function useDisclosure(initialState?: boolean): UseDisclosureReturn;
1248
+
1229
1249
  type TValueOptions<T> = AtLeastOne<{
1230
1250
  /**
1231
1251
  * The controlled value.
@@ -1335,5 +1355,5 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
1335
1355
  */
1336
1356
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
1337
1357
 
1338
- export { ByteSize, MimeTypeMap, OtherMimeType, QueryProvider, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createDataContext, createEnumLikeObject, debounce, deepClone, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNil, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeConfig, mergeRefs, objectToSearchParams, omit, omitByValue, parseFileInfoFromFilename, parseFilenameFromDisposition, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, renameKey, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1339
- export type { MimeTypeExtension, MimeTypeValue, PartialBy, RequiredBy, TCountdownActions };
1358
+ export { ByteSize, MimeTypeMap, OtherMimeType, QueryProvider, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createDataContext, createEnumLikeObject, debounce, deepClone, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNil, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeConfig, mergeRefs, objectToSearchParams, omit, omitByValue, parseFileInfoFromFilename, parseFilenameFromDisposition, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, renameKey, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useDisclosure, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1359
+ export type { MimeTypeExtension, MimeTypeValue, PartialBy, RequiredBy, TCountdownActions, UseDisclosureReturn };
package/dist/cjs/index.js CHANGED
@@ -4,6 +4,7 @@ var dayjs = require('dayjs');
4
4
  var queryStore12s = require('./queryStore-12s-q_SLGgYH.js');
5
5
  var React = require('react');
6
6
  var useCountdown12s = require('./useCountdown-12s-uiqhgllY.js');
7
+ var useDisclosure12s = require('./useDisclosure-12s-SZtbSE4A.js');
7
8
  var download12s = require('./download-12s-DKxkL92w.js');
8
9
  var webStorage12s = require('./webStorage-12s-DHr9PcPl.js');
9
10
 
@@ -1423,6 +1424,7 @@ function mergeRefs(refs) {
1423
1424
  exports.QueryProvider = queryStore12s.QueryProvider;
1424
1425
  exports.useQueryContext = queryStore12s.useQueryContext;
1425
1426
  exports.useCountdown = useCountdown12s.useCountdown;
1427
+ exports.useDisclosure = useDisclosure12s.useDisclosure;
1426
1428
  exports.downloadFile = download12s.downloadFile;
1427
1429
  exports.getLocalStorage = webStorage12s.getLocalStorage;
1428
1430
  exports.setLocalStorage = webStorage12s.setLocalStorage;
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ var React = require('react');
3
+
4
+ /**
5
+ * A small hook to control open/close state.
6
+ *
7
+ * Supports an optional controlled pattern by passing `isOpen` and `onChange`.
8
+ *
9
+ * @example
10
+ * const { isOpen, open, close, toggle } = useDisclosure();
11
+ */ function useDisclosure(initialState = false) {
12
+ const [isOpen, setIsOpen] = React.useState(initialState);
13
+ const open = React.useCallback(()=>setIsOpen(true), []);
14
+ const close = React.useCallback(()=>setIsOpen(false), []);
15
+ const toggle = React.useCallback(()=>setIsOpen((prev)=>!prev), []);
16
+ return {
17
+ isOpen,
18
+ open,
19
+ close,
20
+ toggle
21
+ };
22
+ }
23
+
24
+ exports.useDisclosure = useDisclosure;
@@ -1226,6 +1226,26 @@ type TCountdownActions = {
1226
1226
  */
1227
1227
  declare const useCountdown: (initialCountdown: number, enableReinitialize?: boolean) => TCountdownActions;
1228
1228
 
1229
+ type UseDisclosureReturn = {
1230
+ /** Whether the disclosure is currently open. */
1231
+ isOpen: boolean;
1232
+ /** Open the disclosure (sets isOpen = true). */
1233
+ open: () => void;
1234
+ /** Close the disclosure (sets isOpen = false). */
1235
+ close: () => void;
1236
+ /** Toggle the disclosure state (open -> close or close -> open). */
1237
+ toggle: () => void;
1238
+ };
1239
+ /**
1240
+ * A small hook to control open/close state.
1241
+ *
1242
+ * Supports an optional controlled pattern by passing `isOpen` and `onChange`.
1243
+ *
1244
+ * @example
1245
+ * const { isOpen, open, close, toggle } = useDisclosure();
1246
+ */
1247
+ declare function useDisclosure(initialState?: boolean): UseDisclosureReturn;
1248
+
1229
1249
  type TValueOptions<T> = AtLeastOne<{
1230
1250
  /**
1231
1251
  * The controlled value.
@@ -1335,5 +1355,5 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
1335
1355
  */
1336
1356
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
1337
1357
 
1338
- export { ByteSize, MimeTypeMap, OtherMimeType, QueryProvider, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createDataContext, createEnumLikeObject, debounce, deepClone, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNil, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeConfig, mergeRefs, objectToSearchParams, omit, omitByValue, parseFileInfoFromFilename, parseFilenameFromDisposition, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, renameKey, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1339
- export type { MimeTypeExtension, MimeTypeValue, PartialBy, RequiredBy, TCountdownActions };
1358
+ export { ByteSize, MimeTypeMap, OtherMimeType, QueryProvider, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createDataContext, createEnumLikeObject, debounce, deepClone, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNil, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeConfig, mergeRefs, objectToSearchParams, omit, omitByValue, parseFileInfoFromFilename, parseFilenameFromDisposition, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, renameKey, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useDisclosure, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1359
+ export type { MimeTypeExtension, MimeTypeValue, PartialBy, RequiredBy, TCountdownActions, UseDisclosureReturn };
package/dist/es/index.mjs CHANGED
@@ -2,6 +2,7 @@ import dayjs from 'dayjs';
2
2
  export { Q as QueryProvider, u as useQueryContext } from './queryStore-12s-CFQTVwrg.mjs';
3
3
  import React, { useMemo, createContext, useContext, useState, useCallback } from 'react';
4
4
  export { u as useCountdown } from './useCountdown-12s-t52WIHfq.mjs';
5
+ export { u as useDisclosure } from './useDisclosure-12s-BQAHpAXK.mjs';
5
6
  export { d as downloadFile } from './download-12s-CnaJ0p_f.mjs';
6
7
  export { g as getLocalStorage, s as setLocalStorage } from './webStorage-12s-W1DItzhS.mjs';
7
8
 
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ import { useState, useCallback } from 'react';
3
+
4
+ /**
5
+ * A small hook to control open/close state.
6
+ *
7
+ * Supports an optional controlled pattern by passing `isOpen` and `onChange`.
8
+ *
9
+ * @example
10
+ * const { isOpen, open, close, toggle } = useDisclosure();
11
+ */ function useDisclosure(initialState = false) {
12
+ const [isOpen, setIsOpen] = useState(initialState);
13
+ const open = useCallback(()=>setIsOpen(true), []);
14
+ const close = useCallback(()=>setIsOpen(false), []);
15
+ const toggle = useCallback(()=>setIsOpen((prev)=>!prev), []);
16
+ return {
17
+ isOpen,
18
+ open,
19
+ close,
20
+ toggle
21
+ };
22
+ }
23
+
24
+ export { useDisclosure as u };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gateweb/react-utils",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "React Utils for GateWeb",
5
5
  "homepage": "https://github.com/GatewebSolutions/react-utils",
6
6
  "files": [
@@ -31,16 +31,6 @@
31
31
  }
32
32
  }
33
33
  },
34
- "scripts": {
35
- "prepare": "husky",
36
- "run-code": "ts-node src/period.ts",
37
- "test": "vitest run",
38
- "test:watch": "vitest",
39
- "test:coverage": "vitest run --coverage",
40
- "test:ui": "vitest --ui --coverage.enabled=true",
41
- "build": "bunchee",
42
- "build:prepare": "bunchee --prepare"
43
- },
44
34
  "publishConfig": {
45
35
  "access": "public"
46
36
  },
@@ -79,5 +69,13 @@
79
69
  "@commitlint/config-conventional"
80
70
  ]
81
71
  },
82
- "packageManager": "pnpm@10.11.0"
72
+ "scripts": {
73
+ "run-code": "ts-node src/period.ts",
74
+ "test": "vitest run",
75
+ "test:watch": "vitest",
76
+ "test:coverage": "vitest run --coverage",
77
+ "test:ui": "vitest --ui --coverage.enabled=true",
78
+ "build": "bunchee",
79
+ "build:prepare": "bunchee --prepare"
80
+ }
83
81
  }