@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.
- package/lib/cjs/components/datagrid/datagrid.js +2 -2
- package/lib/cjs/components/datagrid/datagrid.js.map +1 -1
- package/lib/cjs/components/popconfirm/popconfirm.js +5 -5
- package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/cjs/components/popup/content.js +4 -1
- package/lib/cjs/components/popup/content.js.map +1 -1
- package/lib/cjs/components/popup/popup.js +5 -2
- package/lib/cjs/components/popup/popup.js.map +1 -1
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/es/components/datagrid/datagrid.js +2 -2
- package/lib/es/components/datagrid/datagrid.js.map +1 -1
- package/lib/es/components/popconfirm/popconfirm.js +5 -5
- package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/es/components/popup/content.js +4 -1
- package/lib/es/components/popup/content.js.map +1 -1
- package/lib/es/components/popup/popup.js +5 -2
- package/lib/es/components/popup/popup.js.map +1 -1
- package/lib/index.js +16 -10
- package/lib/types/components/dropdown/dropdown.d.ts +1 -1
- package/lib/types/components/icon/icon.d.ts +1 -1
- package/lib/types/components/message/message.d.ts +5 -5
- package/lib/types/js/useTheme/index.d.ts +2 -2
- package/package.json +2 -2
|
@@ -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
|
-
|
|
36
|
-
?.
|
|
35
|
+
try {
|
|
36
|
+
await onOk?.();
|
|
37
37
|
state.visible = false;
|
|
38
|
-
}
|
|
39
|
-
|
|
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\
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
3618
|
-
?.
|
|
3623
|
+
try {
|
|
3624
|
+
await onOk?.();
|
|
3619
3625
|
state.visible = false;
|
|
3620
|
-
}
|
|
3621
|
-
|
|
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
|
|
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
|
|
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:
|
|
6
|
+
close: any;
|
|
7
7
|
};
|
|
8
8
|
declare namespace message {
|
|
9
9
|
var error: (content: ReactNode) => {
|
|
10
10
|
instance: IMessage;
|
|
11
|
-
close:
|
|
11
|
+
close: any;
|
|
12
12
|
};
|
|
13
13
|
var success: (content: ReactNode) => {
|
|
14
14
|
instance: IMessage;
|
|
15
|
-
close:
|
|
15
|
+
close: any;
|
|
16
16
|
};
|
|
17
17
|
var warning: (content: ReactNode) => {
|
|
18
18
|
instance: IMessage;
|
|
19
|
-
close:
|
|
19
|
+
close: any;
|
|
20
20
|
};
|
|
21
21
|
var info: (content: ReactNode) => {
|
|
22
22
|
instance: IMessage;
|
|
23
|
-
close:
|
|
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
|
|
6
|
-
setTheme: (value?: ahooks_lib_createUseStorageState.SetState<string>
|
|
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.
|
|
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": "^
|
|
50
|
+
"vite": "^7.1.9",
|
|
51
51
|
"vite-plugin-dynamic-import": "^1.6.0"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|