@ioca/react 1.4.6 → 1.4.62

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 +1 @@
1
- {"version":3,"file":"datagrid.js","sources":["../../../../packages/components/datagrid/datagrid.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\r\nimport classNames from \"classnames\";\r\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\r\nimport { getNextSorter } from \"../../js/utils\";\r\nimport Loading from \"../loading\";\r\nimport Empty from \"../utils/empty\";\r\nimport \"./index.css\";\r\nimport Row, { Header } from \"./row\";\r\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\r\n\r\nconst Datagrid = (props: IDatagrid) => {\r\n\tconst {\r\n\t\tdata = [],\r\n\t\tcolumns = [],\r\n\t\tborder,\r\n\t\tstriped,\r\n\t\theader = true,\r\n\t\tresizable,\r\n\t\tcellPadding = \".5em\",\r\n\t\tcellEllipsis,\r\n\t\tempty = <Empty />,\r\n\t\tloading,\r\n\t\theight = \"unset\",\r\n\t\tstyle,\r\n\t\tclassName,\r\n\t\trenderLoading = () => <Loading size='1.5em' className='color-3' />,\r\n\t\tonCellClick,\r\n\t\tonRowClick,\r\n\t\tonHeaderClick,\r\n\t\tonSort,\r\n\t\tonScroll,\r\n\t\tonResize,\r\n\t} = props;\r\n\r\n\tconst container = useRef<HTMLDivElement>(null);\r\n\tconst state = useReactive<TDatagridState>({\r\n\t\trows: data,\r\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\r\n\t\tsortBy: \"\",\r\n\t\tsortType: \"\",\r\n\t});\r\n\r\n\tconst styles = useMemo(() => {\r\n\t\tconst { widths } = state;\r\n\r\n\t\tconst o = {\r\n\t\t\t...style,\r\n\t\t\t\"--grid-template-columns\": widths\r\n\t\t\t\t.map((w) => {\r\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\r\n\t\t\t\t})\r\n\t\t\t\t.join(\" \"),\r\n\t\t};\r\n\r\n\t\tif (!resizable) return o;\r\n\r\n\t\tconst fws = columns.map((col, i) => {\r\n\t\t\tconst { fixed } = col;\r\n\t\t\tif (!fixed) return 0;\r\n\t\t\treturn widths[i] as number;\r\n\t\t});\r\n\r\n\t\tcolumns.map((col, i) => {\r\n\t\t\tconst { fixed } = col;\r\n\t\t\tif (!fixed) return;\r\n\t\t\tif (i === 0) {\r\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\r\n\t\t\t} else if (i === fws.length - 1) {\r\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\r\n\t\t\t} else {\r\n\t\t\t\tconst isLeft = fixed === \"left\";\r\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\r\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\r\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\r\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn o;\r\n\t}, [state.widths, resizable]);\r\n\r\n\tconst handleWidthChange = (i: number, w: number) => {\r\n\t\tif (!resizable) return;\r\n\r\n\t\tconst [...ws] = state.widths;\r\n\t\tws[i] = w;\r\n\t\tstate.widths = ws;\r\n\t\tonResize?.(columns[i], w);\r\n\t};\r\n\r\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\r\n\t\tif (column?.sorter) {\r\n\t\t\tconst [sortBy, sortType] = getNextSorter(\r\n\t\t\t\tstate.sortBy,\r\n\t\t\t\tstate.sortType,\r\n\t\t\t\tcolumn.id\r\n\t\t\t);\r\n\r\n\t\t\tObject.assign(state, {\r\n\t\t\t\tsortBy,\r\n\t\t\t\tsortType,\r\n\t\t\t});\r\n\r\n\t\t\tonSort?.(sortBy, sortType);\r\n\t\t}\r\n\r\n\t\tonHeaderClick?.(column, e);\r\n\t};\r\n\r\n\tconst rows = useMemo(() => {\r\n\t\tconst { sortBy, sortType } = state;\r\n\r\n\t\tif (sortBy && !onSort) {\r\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\r\n\t\t\tconst sortFn =\r\n\t\t\t\ttypeof sorter === \"function\"\r\n\t\t\t\t\t? sorter\r\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\r\n\t\t\tconst sorted = [...data].sort(sortFn);\r\n\r\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}, [data, columns, state.sortBy, state.sortType]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!container.current) return;\r\n\t\tconst { current: div } = container;\r\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\r\n\t\tif (!tds?.length) return;\r\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\r\n\t}, [columns, resizable]);\r\n\r\n\tuseEffect(() => {\r\n\t\tloading && container.current?.scrollTo({ top: 0, left: 0 });\r\n\t}, [loading]);\r\n\r\n\tconst mergedStyle = {\r\n\t\t\"--cell-padding\": cellPadding,\r\n\t\t...styles,\r\n\t} as CSSProperties;\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tstyle={{ maxHeight: height, ...mergedStyle }}\r\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\r\n\t\t\t\t\"i-datagrid-bordered\": border,\r\n\t\t\t\t\"i-datagrid-striped\": striped,\r\n\t\t\t})}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tref={container}\r\n\t\t\t\tclassName={classNames(\"i-datagrid\", {\r\n\t\t\t\t\t\"i-datagrid-loading\": loading,\r\n\t\t\t\t})}\r\n\t\t\t\tonWheel={onScroll}\r\n\t\t\t>\r\n\t\t\t\t{header && (\r\n\t\t\t\t\t<Header\r\n\t\t\t\t\t\tcolumns={columns}\r\n\t\t\t\t\t\tresizable={resizable}\r\n\t\t\t\t\t\tsortType={state.sortType}\r\n\t\t\t\t\t\tsortBy={state.sortBy}\r\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\r\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\r\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{rows.map((row, i) => (\r\n\t\t\t\t\t<Row\r\n\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\r\n\t\t\t\t\t\tdata={row}\r\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\r\n\t\t\t\t\t\tcolumns={columns}\r\n\t\t\t\t\t\tonCellClick={onCellClick}\r\n\t\t\t\t\t\tonRowClick={onRowClick}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))}\r\n\r\n\t\t\t\t{rows.length < 1 && empty}\r\n\t\t\t</div>\r\n\r\n\t\t\t{loading && renderLoading()}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Datagrid;\r\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"datagrid.js","sources":["../../../../packages/components/datagrid/datagrid.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\r\nimport classNames from \"classnames\";\r\nimport { CSSProperties, MouseEvent, useEffect, useMemo, useRef } from \"react\";\r\nimport { getNextSorter } from \"../../js/utils\";\r\nimport Loading from \"../loading\";\r\nimport Empty from \"../utils/empty\";\r\nimport \"./index.css\";\r\nimport Row, { Header } from \"./row\";\r\nimport type { IColumn, IData, IDatagrid, TDatagridState } from \"./type\";\r\n\r\nconst Datagrid = (props: IDatagrid) => {\r\n\tconst {\r\n\t\tdata = [],\r\n\t\tcolumns = [],\r\n\t\tborder,\r\n\t\tstriped,\r\n\t\theader = true,\r\n\t\tresizable,\r\n\t\tcellPadding = \".5em\",\r\n\t\tcellEllipsis,\r\n\t\tempty = <Empty />,\r\n\t\tloading,\r\n\t\theight = \"unset\",\r\n\t\tstyle,\r\n\t\tclassName,\r\n\t\trenderLoading = () => (\r\n\t\t\t<Loading size='1.5em' className='color-3' absolute />\r\n\t\t),\r\n\t\tonCellClick,\r\n\t\tonRowClick,\r\n\t\tonCellDoubleClick,\r\n\t\tonHeaderClick,\r\n\t\tonSort,\r\n\t\tonScroll,\r\n\t\tonResize,\r\n\t} = props;\r\n\r\n\tconst container = useRef<HTMLDivElement>(null);\r\n\tconst state = useReactive<TDatagridState>({\r\n\t\trows: data,\r\n\t\twidths: columns.map((col) => col.width ?? \"min-content\"),\r\n\t\tsortBy: \"\",\r\n\t\tsortType: \"\",\r\n\t});\r\n\r\n\tconst styles = useMemo(() => {\r\n\t\tconst { widths } = state;\r\n\r\n\t\tconst o = {\r\n\t\t\t...style,\r\n\t\t\t\"--grid-template-columns\": widths\r\n\t\t\t\t.map((w) => {\r\n\t\t\t\t\treturn typeof w === \"number\" ? `${w}px` : w;\r\n\t\t\t\t})\r\n\t\t\t\t.join(\" \"),\r\n\t\t};\r\n\r\n\t\tif (!resizable) return o;\r\n\r\n\t\tconst fws = columns.map((col, i) => {\r\n\t\t\tconst { fixed } = col;\r\n\t\t\tif (!fixed) return 0;\r\n\t\t\treturn widths[i] as number;\r\n\t\t});\r\n\r\n\t\tcolumns.map((col, i) => {\r\n\t\t\tconst { fixed } = col;\r\n\t\t\tif (!fixed) return;\r\n\t\t\tif (i === 0) {\r\n\t\t\t\to[`--datagrid-cell-inset-0`] = 0;\r\n\t\t\t} else if (i === fws.length - 1) {\r\n\t\t\t\to[`--datagrid-cell-inset-${fws.length - 1}`] = \"auto 0\";\r\n\t\t\t} else {\r\n\t\t\t\tconst isLeft = fixed === \"left\";\r\n\t\t\t\tconst before = isLeft ? fws.slice(0, i) : fws.slice(i + 1);\r\n\t\t\t\tconst sum = before.reduce((pre, cur) => pre + cur) + \"px\";\r\n\t\t\t\tconst result = isLeft ? `${sum} auto` : `auto ${sum}`;\r\n\t\t\t\to[`--datagrid-cell-inset-${i}`] = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn o;\r\n\t}, [state.widths, resizable]);\r\n\r\n\tconst handleWidthChange = (i: number, w: number) => {\r\n\t\tif (!resizable) return;\r\n\r\n\t\tconst [...ws] = state.widths;\r\n\t\tws[i] = w;\r\n\t\tstate.widths = ws;\r\n\t\tonResize?.(columns[i], w);\r\n\t};\r\n\r\n\tconst handleHeaderClick = (column?: IColumn, e?: MouseEvent) => {\r\n\t\tif (column?.sorter) {\r\n\t\t\tconst [sortBy, sortType] = getNextSorter(\r\n\t\t\t\tstate.sortBy,\r\n\t\t\t\tstate.sortType,\r\n\t\t\t\tcolumn.id\r\n\t\t\t);\r\n\r\n\t\t\tObject.assign(state, {\r\n\t\t\t\tsortBy,\r\n\t\t\t\tsortType,\r\n\t\t\t});\r\n\r\n\t\t\tonSort?.(sortBy, sortType);\r\n\t\t}\r\n\r\n\t\tonHeaderClick?.(column, e);\r\n\t};\r\n\r\n\tconst rows = useMemo(() => {\r\n\t\tconst { sortBy, sortType } = state;\r\n\r\n\t\tif (sortBy && !onSort) {\r\n\t\t\tconst sorter = columns.find((col) => col.id === sortBy)?.sorter;\r\n\t\t\tconst sortFn =\r\n\t\t\t\ttypeof sorter === \"function\"\r\n\t\t\t\t\t? sorter\r\n\t\t\t\t\t: (a: IData, b: IData) => b[sortBy] - a[sortBy];\r\n\t\t\tconst sorted = [...data].sort(sortFn);\r\n\r\n\t\t\treturn sortType === \"desc\" ? sorted : sorted.reverse();\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}, [data, columns, state.sortBy, state.sortType]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!container.current) return;\r\n\t\tconst { current: div } = container;\r\n\t\tconst tds = div.querySelector(\".i-datagrid-row\")?.children;\r\n\t\tif (!tds?.length) return;\r\n\t\tstate.widths = Array.from(tds).map((node: any) => node.offsetWidth);\r\n\t}, [columns, resizable]);\r\n\r\n\tuseEffect(() => {\r\n\t\tloading && container.current?.scrollTo({ top: 0, left: 0 });\r\n\t}, [loading]);\r\n\r\n\tconst mergedStyle = {\r\n\t\t\"--cell-padding\": cellPadding,\r\n\t\t...styles,\r\n\t} as CSSProperties;\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tstyle={{ maxHeight: height, ...mergedStyle }}\r\n\t\t\tclassName={classNames(\"i-datagrid-container\", className, {\r\n\t\t\t\t\"i-datagrid-bordered\": border,\r\n\t\t\t\t\"i-datagrid-striped\": striped,\r\n\t\t\t})}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tref={container}\r\n\t\t\t\tclassName={classNames(\"i-datagrid\", {\r\n\t\t\t\t\t\"i-datagrid-loading\": loading,\r\n\t\t\t\t})}\r\n\t\t\t\tonWheel={onScroll}\r\n\t\t\t>\r\n\t\t\t\t{header && (\r\n\t\t\t\t\t<Header\r\n\t\t\t\t\t\tcolumns={columns}\r\n\t\t\t\t\t\tresizable={resizable}\r\n\t\t\t\t\t\tsortType={state.sortType}\r\n\t\t\t\t\t\tsortBy={state.sortBy}\r\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\r\n\t\t\t\t\t\tonWidthChange={handleWidthChange}\r\n\t\t\t\t\t\tonHeaderClick={handleHeaderClick}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{rows.map((row, i) => (\r\n\t\t\t\t\t<Row\r\n\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\trow={i + (header ? 1 : 0)}\r\n\t\t\t\t\t\tdata={row}\r\n\t\t\t\t\t\tcellEllipsis={cellEllipsis}\r\n\t\t\t\t\t\tcolumns={columns}\r\n\t\t\t\t\t\tonCellClick={onCellClick}\r\n\t\t\t\t\t\tonRowClick={onRowClick}\r\n\t\t\t\t\t\tonCellDoubleClick={onCellDoubleClick}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))}\r\n\r\n\t\t\t\t{rows.length < 1 && empty}\r\n\t\t\t</div>\r\n\r\n\t\t\t{loading && renderLoading()}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Datagrid;\r\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -32,13 +32,13 @@ const Popconfirm = (props) => {
32
32
  const handleOk = async (e) => {
33
33
  state.loading = true;
34
34
  ok.onClick?.(e);
35
- onOk?.()
36
- ?.then(() => {
35
+ try {
36
+ await onOk?.();
37
37
  state.visible = false;
38
- })
39
- .finally(() => {
38
+ }
39
+ finally {
40
40
  state.loading = false;
41
- });
41
+ }
42
42
  };
43
43
  const handleCancel = async (e) => {
44
44
  cancel.onClick?.(e);
@@ -1 +1 @@
1
- {"version":3,"file":"popconfirm.js","sources":["../../../../packages/components/popconfirm/popconfirm.tsx"],"sourcesContent":["import { InfoOutlined } from \"@ricons/material\";\r\nimport { useReactive } from \"ahooks\";\r\nimport { MouseEvent } from \"react\";\r\nimport Button from \"../button\";\r\nimport { IButton } from \"../button/type\";\r\nimport Flex from \"../flex\";\r\nimport Icon from \"../icon\";\r\nimport Popup from \"../popup\";\r\nimport \"./index.css\";\r\nimport { IPopconfirm } from \"./type\";\r\n\r\nconst defaultOk = {\r\n\tchildren: \"确定\",\r\n};\r\n\r\nconst defaultCancel = {\r\n\tchildren: \"取消\",\r\n\tsecondary: true,\r\n};\r\n\r\nconst Popconfirm = (props: IPopconfirm) => {\r\n\tconst {\r\n\t\ttrigger = \"click\",\r\n\t\tvisible,\r\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' size='1.2em' />,\r\n\t\tcontent,\r\n\t\tokButtonProps,\r\n\t\tcancelButtonProps,\r\n\t\tchildren,\r\n\t\talign = \"end\",\r\n\t\tposition = \"top\",\r\n\t\toffset = 12,\r\n\t\textra,\r\n\t\tonOk,\r\n\t\tonClose,\r\n\t\t...restProps\r\n\t} = props;\r\n\r\n\tconst state = useReactive({\r\n\t\tloading: false,\r\n\t\tvisible,\r\n\t});\r\n\r\n\tconst ok: IButton = okButtonProps\r\n\t\t? Object.assign({}, defaultOk, okButtonProps)\r\n\t\t: defaultOk;\r\n\tconst cancel: IButton = cancelButtonProps\r\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\r\n\t\t: defaultCancel;\r\n\r\n\tconst handleVisibleChange = (v: boolean) => {\r\n\t\tstate.visible = v;\r\n\t\trestProps.onVisibleChange?.(v);\r\n\t};\r\n\r\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\r\n\t\tstate.loading = true;\r\n\t\tok.onClick?.(e);\r\n\r\n\t\tonOk?.()\r\n\t\t\t?.then(() => {\r\n\t\t\t\tstate.visible = false;\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tstate.loading = false;\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\r\n\t\tcancel.onClick?.(e);\r\n\t\tawait onClose?.();\r\n\t\tstate.visible = false;\r\n\t};\r\n\r\n\tconst popconfirmContent = (\r\n\t\t<div className='i-popconfirm'>\r\n\t\t\t<Flex gap='.5em'>\r\n\t\t\t\t{icon}\r\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\r\n\t\t\t</Flex>\r\n\r\n\t\t\t<Flex gap={12} justify='flex-end' className='i-popconfirm-footer'>\r\n\t\t\t\t{cancelButtonProps !== null && (\r\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\r\n\t\t\t\t)}\r\n\t\t\t\t{extra}\r\n\t\t\t\t{okButtonProps !== null && (\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tloading={state.loading}\r\n\t\t\t\t\t\t{...ok}\r\n\t\t\t\t\t\tonClick={handleOk}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t</Flex>\r\n\t\t</div>\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Popup\r\n\t\t\tcontent={popconfirmContent}\r\n\t\t\t{...restProps}\r\n\t\t\ttrigger={trigger}\r\n\t\t\tvisible={state.visible}\r\n\t\t\talign={align}\r\n\t\t\toffset={offset}\r\n\t\t\tposition={position}\r\n\t\t\tonVisibleChange={handleVisibleChange}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t</Popup>\r\n\t);\r\n};\r\n\r\nexport default Popconfirm;\r\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"popconfirm.js","sources":["../../../../packages/components/popconfirm/popconfirm.tsx"],"sourcesContent":["import { InfoOutlined } from \"@ricons/material\";\r\nimport { useReactive } from \"ahooks\";\r\nimport { MouseEvent } from \"react\";\r\nimport Button from \"../button\";\r\nimport { IButton } from \"../button/type\";\r\nimport Flex from \"../flex\";\r\nimport Icon from \"../icon\";\r\nimport Popup from \"../popup\";\r\nimport \"./index.css\";\r\nimport { IPopconfirm } from \"./type\";\r\n\r\nconst defaultOk = {\r\n\tchildren: \"确定\",\r\n};\r\n\r\nconst defaultCancel = {\r\n\tchildren: \"取消\",\r\n\tsecondary: true,\r\n};\r\n\r\nconst Popconfirm = (props: IPopconfirm) => {\r\n\tconst {\r\n\t\ttrigger = \"click\",\r\n\t\tvisible,\r\n\t\ticon = <Icon icon={<InfoOutlined />} className='error' size='1.2em' />,\r\n\t\tcontent,\r\n\t\tokButtonProps,\r\n\t\tcancelButtonProps,\r\n\t\tchildren,\r\n\t\talign = \"end\",\r\n\t\tposition = \"top\",\r\n\t\toffset = 12,\r\n\t\textra,\r\n\t\tonOk,\r\n\t\tonClose,\r\n\t\t...restProps\r\n\t} = props;\r\n\r\n\tconst state = useReactive({\r\n\t\tloading: false,\r\n\t\tvisible,\r\n\t});\r\n\r\n\tconst ok: IButton = okButtonProps\r\n\t\t? Object.assign({}, defaultOk, okButtonProps)\r\n\t\t: defaultOk;\r\n\tconst cancel: IButton = cancelButtonProps\r\n\t\t? Object.assign({}, defaultCancel, cancelButtonProps)\r\n\t\t: defaultCancel;\r\n\r\n\tconst handleVisibleChange = (v: boolean) => {\r\n\t\tstate.visible = v;\r\n\t\trestProps.onVisibleChange?.(v);\r\n\t};\r\n\r\n\tconst handleOk = async (e: MouseEvent<HTMLElement>) => {\r\n\t\tstate.loading = true;\r\n\t\tok.onClick?.(e);\r\n\t\ttry {\r\n\t\t\tawait onOk?.();\r\n\t\t\tstate.visible = false;\r\n\t\t} finally {\r\n\t\t\tstate.loading = false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleCancel = async (e: MouseEvent<HTMLElement>) => {\r\n\t\tcancel.onClick?.(e);\r\n\t\tawait onClose?.();\r\n\t\tstate.visible = false;\r\n\t};\r\n\r\n\tconst popconfirmContent = (\r\n\t\t<div className='i-popconfirm'>\r\n\t\t\t<Flex gap='.5em'>\r\n\t\t\t\t{icon}\r\n\t\t\t\t<div className='i-popconfirm-content'>{content}</div>\r\n\t\t\t</Flex>\r\n\r\n\t\t\t<Flex gap={12} justify='flex-end' className='i-popconfirm-footer'>\r\n\t\t\t\t{cancelButtonProps !== null && (\r\n\t\t\t\t\t<Button {...cancel} onClick={handleCancel} />\r\n\t\t\t\t)}\r\n\t\t\t\t{extra}\r\n\t\t\t\t{okButtonProps !== null && (\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tloading={state.loading}\r\n\t\t\t\t\t\t{...ok}\r\n\t\t\t\t\t\tonClick={handleOk}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t</Flex>\r\n\t\t</div>\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Popup\r\n\t\t\tcontent={popconfirmContent}\r\n\t\t\t{...restProps}\r\n\t\t\ttrigger={trigger}\r\n\t\t\tvisible={state.visible}\r\n\t\t\talign={align}\r\n\t\t\toffset={offset}\r\n\t\t\tposition={position}\r\n\t\t\tonVisibleChange={handleVisibleChange}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t</Popup>\r\n\t);\r\n};\r\n\r\nexport default Popconfirm;\r\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -37,7 +37,10 @@ const Content = (props) => {
37
37
  };
38
38
  }, [arrowProps]);
39
39
  const content = (jsxs("div", { ref: ref, className: classNames("i-popup", className), ...restProps, children: [arrow && (jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'i-popup-arrow', style: arrowCSS, children: jsx("path", { d: 'M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' }) })), children] }));
40
- return createPortal(content, getContainer(trigger));
40
+ const container = getContainer(trigger);
41
+ if (!container)
42
+ return null;
43
+ return createPortal(content, container);
41
44
  };
42
45
 
43
46
  export { Content as default };
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sources":["../../../../packages/components/popup/content.tsx"],"sourcesContent":["import classNames from \"classnames\";\r\nimport { useMemo } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { IPopupContent } from \"./type\";\r\n\r\nconst Content = (props: IPopupContent) => {\r\n\tconst {\r\n\t\tref,\r\n\t\tgetContainer = (trigger) => {\r\n\t\t\tif (typeof document === \"undefined\") return null;\r\n\t\t\treturn trigger?.offsetParent ?? document.body;\r\n\t\t},\r\n\t\ttrigger,\r\n\t\tarrow,\r\n\t\tarrowProps = {},\r\n\t\tclassName,\r\n\t\tchildren,\r\n\t\t...restProps\r\n\t} = props;\r\n\r\n\tconst arrowCSS = useMemo(() => {\r\n\t\tlet { left, top, pos } = arrowProps;\r\n\t\tlet transform = \"\";\r\n\r\n\t\tswitch (pos) {\r\n\t\t\tcase \"left\":\r\n\t\t\t\tleft += 2;\r\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right\":\r\n\t\t\t\tleft -= 2;\r\n\t\t\t\ttransform = `translate(0, -50%)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top\":\r\n\t\t\t\ttop -= 2;\r\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom\":\r\n\t\t\t\ttop += 2;\r\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tleft,\r\n\t\t\ttop,\r\n\t\t\ttransform,\r\n\t\t};\r\n\t}, [arrowProps]);\r\n\r\n\tconst content = (\r\n\t\t<div\r\n\t\t\tref={ref}\r\n\t\t\tclassName={classNames(\"i-popup\", className)}\r\n\t\t\t{...restProps}\r\n\t\t>\r\n\t\t\t{arrow && (\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\r\n\t\t\t\t\tclassName='i-popup-arrow'\r\n\t\t\t\t\tstyle={arrowCSS}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\r\n\t\t\t\t</svg>\r\n\t\t\t)}\r\n\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n\r\n\treturn createPortal(content, getContainer(trigger));\r\n};\r\n\r\nexport default Content;\r\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAKA,MAAM,OAAO,GAAG,CAAC,KAAoB,KAAI;IACxC,MAAM,EACL,GAAG,EACH,YAAY,GAAG,CAAC,OAAO,KAAI;QAC1B,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,YAAA,OAAO,IAAI;AAChD,QAAA,OAAO,OAAO,EAAE,YAAY,IAAI,QAAQ,CAAC,IAAI;AAC9C,KAAC,EACD,OAAO,EACP,KAAK,EACL,UAAU,GAAG,EAAE,EACf,SAAS,EACT,QAAQ,EACR,GAAG,SAAS,EACZ,GAAG,KAAK;AAET,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAK;QAC7B,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU;QACnC,IAAI,SAAS,GAAG,EAAE;QAElB,QAAQ,GAAG;AACV,YAAA,KAAK,MAAM;gBACV,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,uCAAuC;gBACnD;AACD,YAAA,KAAK,OAAO;gBACX,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,oBAAoB;gBAChC;AACD,YAAA,KAAK,KAAK;gBACT,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,sCAAsC;gBAClD;AACD,YAAA,KAAK,QAAQ;gBACZ,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,qCAAqC;gBACjD;;QAKF,OAAO;YACN,IAAI;YACJ,GAAG;YACH,SAAS;SACT;AACF,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,OAAO,IACZA,IAAA,CAAA,KAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,KACvC,SAAS,EAAA,QAAA,EAAA,CAEZ,KAAK,KACLC,GAAA,CAAA,KAAA,EAAA,EACC,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,QAAQ,EAAA,QAAA,EAEfA,cAAM,CAAC,EAAC,uFAAuF,EAAG,CAAA,EAAA,CAC7F,CACN,EAEA,QAAQ,CACJ,EAAA,CAAA,CACN;IAED,OAAO,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AACpD;;;;"}
1
+ {"version":3,"file":"content.js","sources":["../../../../packages/components/popup/content.tsx"],"sourcesContent":["import classNames from \"classnames\";\r\nimport { useMemo } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { IPopupContent } from \"./type\";\r\n\r\nconst Content = (props: IPopupContent) => {\r\n\tconst {\r\n\t\tref,\r\n\t\tgetContainer = (trigger) => {\r\n\t\t\tif (typeof document === \"undefined\") return null;\r\n\t\t\treturn trigger?.offsetParent ?? document.body;\r\n\t\t},\r\n\t\ttrigger,\r\n\t\tarrow,\r\n\t\tarrowProps = {},\r\n\t\tclassName,\r\n\t\tchildren,\r\n\t\t...restProps\r\n\t} = props;\r\n\r\n\tconst arrowCSS = useMemo(() => {\r\n\t\tlet { left, top, pos } = arrowProps;\r\n\t\tlet transform = \"\";\r\n\r\n\t\tswitch (pos) {\r\n\t\t\tcase \"left\":\r\n\t\t\t\tleft += 2;\r\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"right\":\r\n\t\t\t\tleft -= 2;\r\n\t\t\t\ttransform = `translate(0, -50%)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top\":\r\n\t\t\t\ttop -= 2;\r\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom\":\r\n\t\t\t\ttop += 2;\r\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tleft,\r\n\t\t\ttop,\r\n\t\t\ttransform,\r\n\t\t};\r\n\t}, [arrowProps]);\r\n\r\n\tconst content = (\r\n\t\t<div\r\n\t\t\tref={ref}\r\n\t\t\tclassName={classNames(\"i-popup\", className)}\r\n\t\t\t{...restProps}\r\n\t\t>\r\n\t\t\t{arrow && (\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\r\n\t\t\t\t\tclassName='i-popup-arrow'\r\n\t\t\t\t\tstyle={arrowCSS}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d='M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' />\r\n\t\t\t\t</svg>\r\n\t\t\t)}\r\n\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n\r\n\tconst container = getContainer(trigger);\r\n\tif (!container) return null;\r\n\treturn createPortal(content, container);\r\n};\r\n\r\nexport default Content;\r\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAKA,MAAM,OAAO,GAAG,CAAC,KAAoB,KAAI;IACxC,MAAM,EACL,GAAG,EACH,YAAY,GAAG,CAAC,OAAO,KAAI;QAC1B,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,YAAA,OAAO,IAAI;AAChD,QAAA,OAAO,OAAO,EAAE,YAAY,IAAI,QAAQ,CAAC,IAAI;AAC9C,KAAC,EACD,OAAO,EACP,KAAK,EACL,UAAU,GAAG,EAAE,EACf,SAAS,EACT,QAAQ,EACR,GAAG,SAAS,EACZ,GAAG,KAAK;AAET,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAK;QAC7B,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU;QACnC,IAAI,SAAS,GAAG,EAAE;QAElB,QAAQ,GAAG;AACV,YAAA,KAAK,MAAM;gBACV,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,uCAAuC;gBACnD;AACD,YAAA,KAAK,OAAO;gBACX,IAAI,IAAI,CAAC;gBACT,SAAS,GAAG,oBAAoB;gBAChC;AACD,YAAA,KAAK,KAAK;gBACT,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,sCAAsC;gBAClD;AACD,YAAA,KAAK,QAAQ;gBACZ,GAAG,IAAI,CAAC;gBACR,SAAS,GAAG,qCAAqC;gBACjD;;QAKF,OAAO;YACN,IAAI;YACJ,GAAG;YACH,SAAS;SACT;AACF,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,MAAM,OAAO,IACZA,IAAA,CAAA,KAAA,EAAA,EACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,KACvC,SAAS,EAAA,QAAA,EAAA,CAEZ,KAAK,KACLC,GAAA,CAAA,KAAA,EAAA,EACC,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,QAAQ,EAAA,QAAA,EAEfA,cAAM,CAAC,EAAC,uFAAuF,EAAG,CAAA,EAAA,CAC7F,CACN,EAEA,QAAQ,CACJ,EAAA,CAAA,CACN;AAED,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;AACvC,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;AAC3B,IAAA,OAAO,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;AACxC;;;;"}
@@ -46,9 +46,9 @@ function Popup(props) {
46
46
  statusRef.current = "showing";
47
47
  state.show = true;
48
48
  timerRef.current = setTimeout(() => {
49
- if (statusRef.current !== "showing")
50
- return;
51
49
  requestAnimationFrame(() => {
50
+ if (statusRef.current !== "showing")
51
+ return;
52
52
  const [left, top, { arrowX, arrowY, arrowPos }] = getPosition(triggerRef.current, contentRef.current, {
53
53
  position,
54
54
  gap,
@@ -198,6 +198,9 @@ function Popup(props) {
198
198
  useLayoutEffect(() => {
199
199
  handleToggle(visible);
200
200
  }, [visible]);
201
+ useEffect(() => {
202
+ clearTimer();
203
+ }, []);
201
204
  return (jsxs(Fragment, { children: [Children.map(children, (child) => {
202
205
  if (!isValidElement(child))
203
206
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { useCreation, useReactive } from \"ahooks\";\r\nimport {\r\n\tCSSProperties,\r\n\tChildren,\r\n\tMouseEvent,\r\n\tcloneElement,\r\n\tisValidElement,\r\n\tuseContext,\r\n\tuseEffect,\r\n\tuseLayoutEffect,\r\n\tuseMemo,\r\n\tuseRef,\r\n} from \"react\";\r\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\r\nimport { getPointPosition, getPosition } from \"../../js/utils\";\r\nimport ModalContext from \"../modal/context\";\r\nimport Content from \"./content\";\r\nimport \"./index.css\";\r\nimport { IPopup } from \"./type\";\r\n\r\nexport default function Popup(props: IPopup) {\r\n\tconst {\r\n\t\tvisible = false,\r\n\t\tcontent,\r\n\t\ttrigger = \"hover\",\r\n\t\tgap = 12,\r\n\t\toffset = 8,\r\n\t\tfixed,\r\n\t\tposition = \"top\",\r\n\t\tshowDelay = 16,\r\n\t\thideDelay = 12,\r\n\t\ttouchable,\r\n\t\tarrow = true,\r\n\t\talign,\r\n\t\tfitSize,\r\n\t\twatchResize,\r\n\t\tclickOutside = true,\r\n\t\tdisabled,\r\n\t\tstyle,\r\n\t\tclassName,\r\n\t\tgetContainer,\r\n\t\tchildren,\r\n\t\tonVisibleChange,\r\n\t} = props;\r\n\r\n\tconst triggerRef = useRef<HTMLElement>(null);\r\n\tconst contentRef = useRef<HTMLDivElement>(null);\r\n\tconst timerRef = useRef<any>(null);\r\n\tconst statusRef = useRef<string>(\"\");\r\n\tconst isInModal = useContext(ModalContext);\r\n\tconst refWindow = isInModal || fixed;\r\n\tconst state = useReactive<{\r\n\t\tshow: boolean;\r\n\t\tstyle: CSSProperties;\r\n\t\tarrowProps: Record<string, any>;\r\n\t}>({\r\n\t\tshow: false,\r\n\t\tstyle: { position: refWindow ? \"fixed\" : \"absolute\" },\r\n\t\tarrowProps: {},\r\n\t});\r\n\r\n\tuseMouseUp((e) => {\r\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\r\n\r\n\t\tconst tar = e.target as HTMLElement;\r\n\t\tconst isContain =\r\n\t\t\ttriggerRef.current.contains(tar) ||\r\n\t\t\tcontentRef.current.contains(tar);\r\n\r\n\t\tif (!state.show || isContain) return;\r\n\r\n\t\thandleToggle(false);\r\n\t});\r\n\r\n\tconst clearTimer = () => {\r\n\t\tif (!timerRef.current) return;\r\n\t\tclearTimeout(timerRef.current);\r\n\t\ttimerRef.current = null;\r\n\t\tstatusRef.current = \"\";\r\n\t};\r\n\r\n\tconst handleShow = () => {\r\n\t\tif (disabled) return;\r\n\t\tif (\r\n\t\t\tstate.show &&\r\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstatusRef.current = \"showing\";\r\n\t\tstate.show = true;\r\n\r\n\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\tif (statusRef.current !== \"showing\") return;\r\n\r\n\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\r\n\t\t\t\t\ttriggerRef.current,\r\n\t\t\t\t\tcontentRef.current,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\tgap,\r\n\t\t\t\t\t\toffset,\r\n\t\t\t\t\t\talign,\r\n\t\t\t\t\t\trefWindow,\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tstate.style = {\r\n\t\t\t\t\t...state.style,\r\n\t\t\t\t\topacity: 1,\r\n\t\t\t\t\ttransform: \"none\",\r\n\t\t\t\t\tleft,\r\n\t\t\t\t\ttop,\r\n\t\t\t\t};\r\n\t\t\t\tstate.arrowProps = {\r\n\t\t\t\t\tleft: arrowX,\r\n\t\t\t\t\ttop: arrowY,\r\n\t\t\t\t\tpos: arrowPos,\r\n\t\t\t\t};\r\n\t\t\t\tonVisibleChange?.(true);\r\n\t\t\t\tclearTimer();\r\n\t\t\t\tstatusRef.current = \"\";\r\n\t\t\t});\r\n\t\t}, showDelay);\r\n\t};\r\n\r\n\tconst handleHide = () => {\r\n\t\tif (!state.show) return;\r\n\r\n\t\tstatusRef.current = \"hiding\";\r\n\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\tif (statusRef.current !== \"hiding\") {\r\n\t\t\t\tclearTimer();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tstate.style = {\r\n\t\t\t\t...state.style,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttransform: \"translate(0, 2px)\",\r\n\t\t\t};\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tstate.show = false;\r\n\t\t\t\tclearTimer();\r\n\t\t\t\tonVisibleChange?.(false);\r\n\t\t\t\tstatusRef.current = \"\";\r\n\t\t\t}, 160);\r\n\t\t}, hideDelay);\r\n\t};\r\n\r\n\tconst handleToggle = (action?: boolean) => {\r\n\t\tif (action !== undefined) {\r\n\t\t\taction ? handleShow() : handleHide();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstate.show ? handleHide() : handleShow();\r\n\t};\r\n\tconst eventMaps = useCreation(\r\n\t\t() => ({\r\n\t\t\tclick: {\r\n\t\t\t\tonClick: () => handleToggle(true),\r\n\t\t\t},\r\n\t\t\thover: {\r\n\t\t\t\tonMouseEnter: () => handleToggle(true),\r\n\t\t\t\tonMouseLeave: () => handleToggle(false),\r\n\t\t\t},\r\n\t\t\tfocus: {\r\n\t\t\t\tonFocus: () => handleToggle(true),\r\n\t\t\t\tonBlur: () => handleToggle(false),\r\n\t\t\t},\r\n\t\t\tcontextmenu: {\r\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif (state.show) {\r\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tstate.style = {\r\n\t\t\t\t\t\t\t...state.style,\r\n\t\t\t\t\t\t\tleft,\r\n\t\t\t\t\t\t\ttop,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstate.show = true;\r\n\r\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tstate.style = {\r\n\t\t\t\t\t\t\t...state.style,\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransform: \"none\",\r\n\t\t\t\t\t\t\tleft,\r\n\t\t\t\t\t\t\ttop,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tclearTimer();\r\n\t\t\t\t\t\tonVisibleChange?.(true);\r\n\t\t\t\t\t}, showDelay);\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tnone: {},\r\n\t\t}),\r\n\t\t[]\r\n\t);\r\n\r\n\tconst contentTouch = useMemo(() => {\r\n\t\tif (!touchable) return {};\r\n\t\tconst events: { [key: string]: () => void } = {};\r\n\r\n\t\tif (trigger === \"hover\") {\r\n\t\t\tevents[\"onMouseEnter\"] = () => {\r\n\t\t\t\tclearTimer();\r\n\t\t\t};\r\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t}, [touchable, trigger]);\r\n\r\n\tconst computePosition = () => {\r\n\t\tif (!state.show) return;\r\n\r\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\r\n\t\t\ttriggerRef.current,\r\n\t\t\tcontentRef.current,\r\n\t\t\t{\r\n\t\t\t\tposition,\r\n\t\t\t\tgap,\r\n\t\t\t\toffset,\r\n\t\t\t\talign,\r\n\t\t\t\trefWindow,\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tObject.assign(state, {\r\n\t\t\tstyle: { ...state.style, left, top },\r\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\r\n\t\t});\r\n\t};\r\n\r\n\tconst { observe, unobserve, disconnect } = useResizeObserver();\r\n\tuseEffect(() => {\r\n\t\tif (trigger === \"contextmenu\" || !observe) return;\r\n\r\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\r\n\r\n\t\tif (!watchResize || !contentRef.current) return;\r\n\r\n\t\tobserve(contentRef.current, computePosition);\r\n\r\n\t\treturn () => {\r\n\t\t\tif (!watchResize || !contentRef.current) return;\r\n\r\n\t\t\tunobserve(contentRef.current);\r\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\r\n\t\t\tdisconnect();\r\n\t\t};\r\n\t}, [watchResize, contentRef.current, triggerRef.current]);\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\tif (!fitSize || !state.show) return;\r\n\r\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\r\n\t\tconst size =\r\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\r\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\r\n\t}, [state.show, fitSize]);\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\thandleToggle(visible);\r\n\t}, [visible]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{Children.map(children, (child) => {\r\n\t\t\t\tif (!isValidElement(child)) return;\r\n\r\n\t\t\t\tconst { className, ...restProps } = child.props as any;\r\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\r\n\t\t\t\t\tif (!restProps[evt]) return;\r\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\r\n\r\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\r\n\t\t\t\t\t\tfn();\r\n\t\t\t\t\t\trestProps[evt](e);\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn cloneElement(child, {\r\n\t\t\t\t\tref: triggerRef,\r\n\t\t\t\t\tclassName,\r\n\t\t\t\t\t...restProps,\r\n\t\t\t\t\t...eventMaps[trigger],\r\n\t\t\t\t});\r\n\t\t\t})}\r\n\r\n\t\t\t{state.show && (\r\n\t\t\t\t<Content\r\n\t\t\t\t\tref={contentRef}\r\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\r\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\r\n\t\t\t\t\tarrowProps={state.arrowProps}\r\n\t\t\t\t\tclassName={className}\r\n\t\t\t\t\t{...contentTouch}\r\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\r\n\t\t\t\t\tgetContainer={getContainer}\r\n\t\t\t\t>\r\n\t\t\t\t\t{content}\r\n\t\t\t\t</Content>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { useCreation, useReactive } from \"ahooks\";\r\nimport {\r\n\tCSSProperties,\r\n\tChildren,\r\n\tMouseEvent,\r\n\tcloneElement,\r\n\tisValidElement,\r\n\tuseContext,\r\n\tuseEffect,\r\n\tuseLayoutEffect,\r\n\tuseMemo,\r\n\tuseRef,\r\n} from \"react\";\r\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\r\nimport { getPointPosition, getPosition } from \"../../js/utils\";\r\nimport ModalContext from \"../modal/context\";\r\nimport Content from \"./content\";\r\nimport \"./index.css\";\r\nimport { IPopup } from \"./type\";\r\n\r\nexport default function Popup(props: IPopup) {\r\n\tconst {\r\n\t\tvisible = false,\r\n\t\tcontent,\r\n\t\ttrigger = \"hover\",\r\n\t\tgap = 12,\r\n\t\toffset = 8,\r\n\t\tfixed,\r\n\t\tposition = \"top\",\r\n\t\tshowDelay = 16,\r\n\t\thideDelay = 12,\r\n\t\ttouchable,\r\n\t\tarrow = true,\r\n\t\talign,\r\n\t\tfitSize,\r\n\t\twatchResize,\r\n\t\tclickOutside = true,\r\n\t\tdisabled,\r\n\t\tstyle,\r\n\t\tclassName,\r\n\t\tgetContainer,\r\n\t\tchildren,\r\n\t\tonVisibleChange,\r\n\t} = props;\r\n\r\n\tconst triggerRef = useRef<HTMLElement>(null);\r\n\tconst contentRef = useRef<HTMLDivElement>(null);\r\n\tconst timerRef = useRef<any>(null);\r\n\tconst statusRef = useRef<string>(\"\");\r\n\tconst isInModal = useContext(ModalContext);\r\n\tconst refWindow = isInModal || fixed;\r\n\tconst state = useReactive<{\r\n\t\tshow: boolean;\r\n\t\tstyle: CSSProperties;\r\n\t\tarrowProps: Record<string, any>;\r\n\t}>({\r\n\t\tshow: false,\r\n\t\tstyle: { position: refWindow ? \"fixed\" : \"absolute\" },\r\n\t\tarrowProps: {},\r\n\t});\r\n\r\n\tuseMouseUp((e) => {\r\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\r\n\r\n\t\tconst tar = e.target as HTMLElement;\r\n\t\tconst isContain =\r\n\t\t\ttriggerRef.current.contains(tar) ||\r\n\t\t\tcontentRef.current.contains(tar);\r\n\r\n\t\tif (!state.show || isContain) return;\r\n\r\n\t\thandleToggle(false);\r\n\t});\r\n\r\n\tconst clearTimer = () => {\r\n\t\tif (!timerRef.current) return;\r\n\t\tclearTimeout(timerRef.current);\r\n\t\ttimerRef.current = null;\r\n\t\tstatusRef.current = \"\";\r\n\t};\r\n\r\n\tconst handleShow = () => {\r\n\t\tif (disabled) return;\r\n\t\tif (\r\n\t\t\tstate.show &&\r\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstatusRef.current = \"showing\";\r\n\t\tstate.show = true;\r\n\r\n\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\tif (statusRef.current !== \"showing\") return;\r\n\r\n\t\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\r\n\t\t\t\t\ttriggerRef.current,\r\n\t\t\t\t\tcontentRef.current,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\tgap,\r\n\t\t\t\t\t\toffset,\r\n\t\t\t\t\t\talign,\r\n\t\t\t\t\t\trefWindow,\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tstate.style = {\r\n\t\t\t\t\t...state.style,\r\n\t\t\t\t\topacity: 1,\r\n\t\t\t\t\ttransform: \"none\",\r\n\t\t\t\t\tleft,\r\n\t\t\t\t\ttop,\r\n\t\t\t\t};\r\n\t\t\t\tstate.arrowProps = {\r\n\t\t\t\t\tleft: arrowX,\r\n\t\t\t\t\ttop: arrowY,\r\n\t\t\t\t\tpos: arrowPos,\r\n\t\t\t\t};\r\n\t\t\t\tonVisibleChange?.(true);\r\n\t\t\t\tclearTimer();\r\n\t\t\t\tstatusRef.current = \"\";\r\n\t\t\t});\r\n\t\t}, showDelay);\r\n\t};\r\n\r\n\tconst handleHide = () => {\r\n\t\tif (!state.show) return;\r\n\r\n\t\tstatusRef.current = \"hiding\";\r\n\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\tif (statusRef.current !== \"hiding\") {\r\n\t\t\t\tclearTimer();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tstate.style = {\r\n\t\t\t\t...state.style,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttransform: \"translate(0, 2px)\",\r\n\t\t\t};\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tstate.show = false;\r\n\t\t\t\tclearTimer();\r\n\t\t\t\tonVisibleChange?.(false);\r\n\t\t\t\tstatusRef.current = \"\";\r\n\t\t\t}, 160);\r\n\t\t}, hideDelay);\r\n\t};\r\n\r\n\tconst handleToggle = (action?: boolean) => {\r\n\t\tif (action !== undefined) {\r\n\t\t\taction ? handleShow() : handleHide();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstate.show ? handleHide() : handleShow();\r\n\t};\r\n\tconst eventMaps = useCreation(\r\n\t\t() => ({\r\n\t\t\tclick: {\r\n\t\t\t\tonClick: () => handleToggle(true),\r\n\t\t\t},\r\n\t\t\thover: {\r\n\t\t\t\tonMouseEnter: () => handleToggle(true),\r\n\t\t\t\tonMouseLeave: () => handleToggle(false),\r\n\t\t\t},\r\n\t\t\tfocus: {\r\n\t\t\t\tonFocus: () => handleToggle(true),\r\n\t\t\t\tonBlur: () => handleToggle(false),\r\n\t\t\t},\r\n\t\t\tcontextmenu: {\r\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif (state.show) {\r\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tstate.style = {\r\n\t\t\t\t\t\t\t...state.style,\r\n\t\t\t\t\t\t\tleft,\r\n\t\t\t\t\t\t\ttop,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstate.show = true;\r\n\r\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\r\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tstate.style = {\r\n\t\t\t\t\t\t\t...state.style,\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransform: \"none\",\r\n\t\t\t\t\t\t\tleft,\r\n\t\t\t\t\t\t\ttop,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tclearTimer();\r\n\t\t\t\t\t\tonVisibleChange?.(true);\r\n\t\t\t\t\t}, showDelay);\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tnone: {},\r\n\t\t}),\r\n\t\t[]\r\n\t);\r\n\r\n\tconst contentTouch = useMemo(() => {\r\n\t\tif (!touchable) return {};\r\n\t\tconst events: { [key: string]: () => void } = {};\r\n\r\n\t\tif (trigger === \"hover\") {\r\n\t\t\tevents[\"onMouseEnter\"] = () => {\r\n\t\t\t\tclearTimer();\r\n\t\t\t};\r\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t}, [touchable, trigger]);\r\n\r\n\tconst computePosition = () => {\r\n\t\tif (!state.show) return;\r\n\r\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\r\n\t\t\ttriggerRef.current,\r\n\t\t\tcontentRef.current,\r\n\t\t\t{\r\n\t\t\t\tposition,\r\n\t\t\t\tgap,\r\n\t\t\t\toffset,\r\n\t\t\t\talign,\r\n\t\t\t\trefWindow,\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tObject.assign(state, {\r\n\t\t\tstyle: { ...state.style, left, top },\r\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\r\n\t\t});\r\n\t};\r\n\r\n\tconst { observe, unobserve, disconnect } = useResizeObserver();\r\n\tuseEffect(() => {\r\n\t\tif (trigger === \"contextmenu\" || !observe) return;\r\n\r\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\r\n\r\n\t\tif (!watchResize || !contentRef.current) return;\r\n\r\n\t\tobserve(contentRef.current, computePosition);\r\n\r\n\t\treturn () => {\r\n\t\t\tif (!watchResize || !contentRef.current) return;\r\n\r\n\t\t\tunobserve(contentRef.current);\r\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\r\n\t\t\tdisconnect();\r\n\t\t};\r\n\t}, [watchResize, contentRef.current, triggerRef.current]);\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\tif (!fitSize || !state.show) return;\r\n\r\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\r\n\t\tconst size =\r\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\r\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\r\n\t}, [state.show, fitSize]);\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\thandleToggle(visible);\r\n\t}, [visible]);\r\n\r\n\tuseEffect(() => {\r\n\t\tclearTimer();\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{Children.map(children, (child) => {\r\n\t\t\t\tif (!isValidElement(child)) return;\r\n\r\n\t\t\t\tconst { className, ...restProps } = child.props as any;\r\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\r\n\t\t\t\t\tif (!restProps[evt]) return;\r\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\r\n\r\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\r\n\t\t\t\t\t\tfn();\r\n\t\t\t\t\t\trestProps[evt](e);\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn cloneElement(child, {\r\n\t\t\t\t\tref: triggerRef,\r\n\t\t\t\t\tclassName,\r\n\t\t\t\t\t...restProps,\r\n\t\t\t\t\t...eventMaps[trigger],\r\n\t\t\t\t});\r\n\t\t\t})}\r\n\r\n\t\t\t{state.show && (\r\n\t\t\t\t<Content\r\n\t\t\t\t\tref={contentRef}\r\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\r\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\r\n\t\t\t\t\tarrowProps={state.arrowProps}\r\n\t\t\t\t\tclassName={className}\r\n\t\t\t\t\t{...contentTouch}\r\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\r\n\t\t\t\t\tgetContainer={getContainer}\r\n\t\t\t\t>\r\n\t\t\t\t\t{content}\r\n\t\t\t\t</Content>\r\n\t\t\t)}\r\n\t\t</>\r\n\t);\r\n}\r\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -968,7 +968,7 @@ function Header$1(props) {
968
968
  }
969
969
 
970
970
  const Datagrid = (props) => {
971
- const { data = [], columns = [], border, striped, header = true, resizable, cellPadding = ".5em", cellEllipsis, empty = jsx(Empty, {}), loading, height = "unset", style, className, renderLoading = () => jsx(Loading, { size: '1.5em', className: 'color-3' }), onCellClick, onRowClick, onHeaderClick, onSort, onScroll, onResize, } = props;
971
+ const { data = [], columns = [], border, striped, header = true, resizable, cellPadding = ".5em", cellEllipsis, empty = jsx(Empty, {}), loading, height = "unset", style, className, renderLoading = () => (jsx(Loading, { size: '1.5em', className: 'color-3', absolute: true })), onCellClick, onRowClick, onCellDoubleClick, onHeaderClick, onSort, onScroll, onResize, } = props;
972
972
  const container = useRef(null);
973
973
  const state = useReactive({
974
974
  rows: data,
@@ -1066,7 +1066,7 @@ const Datagrid = (props) => {
1066
1066
  "i-datagrid-striped": striped,
1067
1067
  }), children: [jsxs("div", { ref: container, className: classNames("i-datagrid", {
1068
1068
  "i-datagrid-loading": loading,
1069
- }), onWheel: onScroll, children: [header && (jsx(Header$1, { columns: columns, resizable: resizable, sortType: state.sortType, sortBy: state.sortBy, cellEllipsis: cellEllipsis, onWidthChange: handleWidthChange, onHeaderClick: handleHeaderClick })), rows.map((row, i) => (jsx(Row, { row: i + (header ? 1 : 0), data: row, cellEllipsis: cellEllipsis, columns: columns, onCellClick: onCellClick, onRowClick: onRowClick }, i))), rows.length < 1 && empty] }), loading && renderLoading()] }));
1069
+ }), onWheel: onScroll, children: [header && (jsx(Header$1, { columns: columns, resizable: resizable, sortType: state.sortType, sortBy: state.sortBy, cellEllipsis: cellEllipsis, onWidthChange: handleWidthChange, onHeaderClick: handleHeaderClick })), rows.map((row, i) => (jsx(Row, { row: i + (header ? 1 : 0), data: row, cellEllipsis: cellEllipsis, columns: columns, onCellClick: onCellClick, onRowClick: onRowClick, onCellDoubleClick: onCellDoubleClick }, i))), rows.length < 1 && empty] }), loading && renderLoading()] }));
1070
1070
  };
1071
1071
 
1072
1072
  const Description = (props) => {
@@ -1212,7 +1212,10 @@ const Content$2 = (props) => {
1212
1212
  };
1213
1213
  }, [arrowProps]);
1214
1214
  const content = (jsxs("div", { ref: ref, className: classNames("i-popup", className), ...restProps, children: [arrow && (jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', className: 'i-popup-arrow', style: arrowCSS, children: jsx("path", { d: 'M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z' }) })), children] }));
1215
- return createPortal(content, getContainer(trigger));
1215
+ const container = getContainer(trigger);
1216
+ if (!container)
1217
+ return null;
1218
+ return createPortal(content, container);
1216
1219
  };
1217
1220
 
1218
1221
  function Popup(props) {
@@ -1255,9 +1258,9 @@ function Popup(props) {
1255
1258
  statusRef.current = "showing";
1256
1259
  state.show = true;
1257
1260
  timerRef.current = setTimeout(() => {
1258
- if (statusRef.current !== "showing")
1259
- return;
1260
1261
  requestAnimationFrame(() => {
1262
+ if (statusRef.current !== "showing")
1263
+ return;
1261
1264
  const [left, top, { arrowX, arrowY, arrowPos }] = getPosition(triggerRef.current, contentRef.current, {
1262
1265
  position,
1263
1266
  gap,
@@ -1407,6 +1410,9 @@ function Popup(props) {
1407
1410
  useLayoutEffect(() => {
1408
1411
  handleToggle(visible);
1409
1412
  }, [visible]);
1413
+ useEffect(() => {
1414
+ clearTimer();
1415
+ }, []);
1410
1416
  return (jsxs(Fragment, { children: [Children.map(children, (child) => {
1411
1417
  if (!isValidElement(child))
1412
1418
  return;
@@ -3614,13 +3620,13 @@ const Popconfirm = (props) => {
3614
3620
  const handleOk = async (e) => {
3615
3621
  state.loading = true;
3616
3622
  ok.onClick?.(e);
3617
- onOk?.()
3618
- ?.then(() => {
3623
+ try {
3624
+ await onOk?.();
3619
3625
  state.visible = false;
3620
- })
3621
- .finally(() => {
3626
+ }
3627
+ finally {
3622
3628
  state.loading = false;
3623
- });
3629
+ }
3624
3630
  };
3625
3631
  const handleCancel = async (e) => {
3626
3632
  cancel.onClick?.(e);
@@ -3,7 +3,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import * as react from 'react';
4
4
 
5
5
  declare const Dropdown: {
6
- (props: IDropdown): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
6
+ (props: IDropdown): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode>> | react_jsx_runtime.JSX.Element;
7
7
  Item: (props: IDropItem) => react_jsx_runtime.JSX.Element;
8
8
  };
9
9
 
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { IIcon } from './type.js';
3
3
 
4
- declare const Icon: (props: IIcon) => string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null | undefined;
4
+ declare const Icon: (props: IIcon) => string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode>> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
5
5
 
6
6
  export { Icon as default };
@@ -3,24 +3,24 @@ import { IMessage } from './type.js';
3
3
 
4
4
  declare function message(config: IMessage | ReactNode): {
5
5
  instance: IMessage;
6
- close: () => void;
6
+ close: any;
7
7
  };
8
8
  declare namespace message {
9
9
  var error: (content: ReactNode) => {
10
10
  instance: IMessage;
11
- close: () => void;
11
+ close: any;
12
12
  };
13
13
  var success: (content: ReactNode) => {
14
14
  instance: IMessage;
15
- close: () => void;
15
+ close: any;
16
16
  };
17
17
  var warning: (content: ReactNode) => {
18
18
  instance: IMessage;
19
- close: () => void;
19
+ close: any;
20
20
  };
21
21
  var info: (content: ReactNode) => {
22
22
  instance: IMessage;
23
- close: () => void;
23
+ close: any;
24
24
  };
25
25
  var one: (config: IMessage) => void;
26
26
  }
@@ -2,8 +2,8 @@ import * as ahooks_lib_createUseStorageState from 'D:\\codes\\ioca-react\\node_m
2
2
  import { ITheme } from './type.js';
3
3
 
4
4
  declare const useTheme: (props?: ITheme) => {
5
- theme: string | undefined;
6
- setTheme: (value?: ahooks_lib_createUseStorageState.SetState<string> | undefined) => void;
5
+ theme: string;
6
+ setTheme: (value?: ahooks_lib_createUseStorageState.SetState<string>) => void;
7
7
  };
8
8
 
9
9
  export { useTheme as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ioca/react",
3
- "version": "1.4.06",
3
+ "version": "1.4.62",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -47,7 +47,7 @@
47
47
  "rollup-plugin-scss": "^4.0.0",
48
48
  "sass": "^1.86.0",
49
49
  "typescript": "^5.7.2",
50
- "vite": "^6.0.2",
50
+ "vite": "^7.1.9",
51
51
  "vite-plugin-dynamic-import": "^1.6.0"
52
52
  },
53
53
  "peerDependencies": {