@creekjs/web-components 1.0.13 → 1.0.15
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/.turbo/turbo-father$colon$build.log +34 -34
- package/dist/creek-config-provider/index.js +13 -13
- package/dist/creek-config-provider/index.js.map +3 -3
- package/dist/creek-keep-alive/index.d.ts +0 -4
- package/dist/creek-keep-alive/index.js +13 -8
- package/dist/creek-keep-alive/index.js.map +2 -2
- package/dist/creek-layout/ActionRender/LayoutSettings.d.ts +2 -1
- package/dist/creek-layout/ActionRender/LayoutSettings.js +7 -6
- package/dist/creek-layout/ActionRender/LayoutSettings.js.map +2 -2
- package/dist/creek-layout/index.d.ts +1 -0
- package/dist/creek-layout/index.js +5 -4
- package/dist/creek-layout/index.js.map +2 -2
- package/dist/creek-layout/useLayoutSettingsStore.d.ts +2 -2
- package/dist/creek-layout/useLayoutSettingsStore.js +11 -4
- package/dist/creek-layout/useLayoutSettingsStore.js.map +2 -2
- package/dist/creek-table/SearchTable.js +18 -0
- package/dist/creek-table/SearchTable.js.map +2 -2
- package/dist/creek-table/components/EllipsisTooltip.js +6 -2
- package/dist/creek-table/components/EllipsisTooltip.js.map +2 -2
- package/dist/creek-table/hooks/useEllipsisColumns.js +3 -0
- package/dist/creek-table/hooks/useEllipsisColumns.js.map +2 -2
- package/dist/creek-table/hooks/useIndexColumn.js +1 -1
- package/dist/creek-table/hooks/useIndexColumn.js.map +1 -1
- package/package.json +1 -1
- package/src/creek-config-provider/index.tsx +16 -15
- package/src/creek-keep-alive/index.tsx +15 -12
- package/src/creek-layout/ActionRender/LayoutSettings.tsx +30 -20
- package/src/creek-layout/index.tsx +6 -4
- package/src/creek-layout/useLayoutSettingsStore.ts +12 -3
- package/src/creek-table/SearchTable.tsx +22 -1
- package/src/creek-table/components/EllipsisTooltip.tsx +6 -2
- package/src/creek-table/hooks/useEllipsisColumns.tsx +5 -0
- package/src/creek-table/hooks/useIndexColumn.tsx +1 -1
- package/dist/creek-config-provider/CreekConfigContext.d.ts.map +0 -1
- package/dist/creek-config-provider/CreekI18nProvider.d.ts.map +0 -1
- package/dist/creek-config-provider/index.d.ts.map +0 -1
- package/dist/creek-hooks/index.d.ts.map +0 -1
- package/dist/creek-hooks/useApp/DrawerHelper.d.ts.map +0 -1
- package/dist/creek-hooks/useApp/ModalHelper.d.ts.map +0 -1
- package/dist/creek-hooks/useApp/index.d.ts.map +0 -1
- package/dist/creek-hooks/useApp/types.d.ts.map +0 -1
- package/dist/creek-hooks/useViewportHeight.d.ts.map +0 -1
- package/dist/creek-icon/index.d.ts.map +0 -1
- package/dist/creek-keep-alive/index.d.ts.map +0 -1
- package/dist/creek-layout/ActionRender/FullScreen.d.ts.map +0 -1
- package/dist/creek-layout/ActionRender/LayoutSettings.d.ts.map +0 -1
- package/dist/creek-layout/ActionRender/UserInfo.d.ts.map +0 -1
- package/dist/creek-layout/ActionRender/index.d.ts.map +0 -1
- package/dist/creek-layout/CollapseButton.d.ts.map +0 -1
- package/dist/creek-layout/Exception/NotFound.d.ts.map +0 -1
- package/dist/creek-layout/Exception/NotFoundPage.d.ts.map +0 -1
- package/dist/creek-layout/Exception/index.d.ts.map +0 -1
- package/dist/creek-layout/index.d.ts.map +0 -1
- package/dist/creek-layout/useLayoutSettingsStore.d.ts.map +0 -1
- package/dist/creek-loading/index.d.ts.map +0 -1
- package/dist/creek-locale-button/index.d.ts.map +0 -1
- package/dist/creek-page-container/index.d.ts.map +0 -1
- package/dist/creek-style/index.d.ts.map +0 -1
- package/dist/creek-style/scrollbar.d.ts.map +0 -1
- package/dist/creek-table/SearchTable.d.ts.map +0 -1
- package/dist/creek-table/components/DensityIcon.d.ts.map +0 -1
- package/dist/creek-table/components/EllipsisTooltip.d.ts.map +0 -1
- package/dist/creek-table/components/index.d.ts.map +0 -1
- package/dist/creek-table/hooks/index.d.ts.map +0 -1
- package/dist/creek-table/hooks/useAdaptiveToolBar.d.ts.map +0 -1
- package/dist/creek-table/hooks/useAutoWidthColumns.d.ts.map +0 -1
- package/dist/creek-table/hooks/useElementDistance.d.ts.map +0 -1
- package/dist/creek-table/hooks/useEllipsisColumns.d.ts.map +0 -1
- package/dist/creek-table/hooks/useIndexColumn.d.ts.map +0 -1
- package/dist/creek-table/hooks/useResizableColumns.d.ts.map +0 -1
- package/dist/creek-table/hooks/useStatusColumns.d.ts.map +0 -1
- package/dist/creek-table/hooks/useTableOptions.d.ts.map +0 -1
- package/dist/creek-table/hooks/useTableScrollHeight.d.ts.map +0 -1
- package/dist/creek-table/index.d.ts.map +0 -1
- package/dist/creek-table/type.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/locales/en_US.d.ts.map +0 -1
- package/dist/locales/zh_CN.d.ts.map +0 -1
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @creekjs/web-components@1.0.
|
|
3
|
+
> @creekjs/web-components@1.0.14 father:build /Users/ernestwang/Documents/code-resoorce/creek/packages/web-components
|
|
4
4
|
> father build
|
|
5
5
|
|
|
6
6
|
[36minfo[39m - Clean output directories
|
|
7
7
|
[36minfo[39m - Bundless for [33msrc[39m directory to [33mcjs[39m format
|
|
8
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-config-provider/index.js[39m (with declaration)
|
|
9
8
|
[35mevent[39m - Bundless [90mCreekConfigContext.tsx[39m to [90mdist/creek-config-provider/CreekConfigContext.js[39m (with declaration)
|
|
10
|
-
[35mevent[39m - Bundless [
|
|
11
|
-
[35mevent[39m - Bundless [
|
|
12
|
-
[35mevent[39m - Bundless [
|
|
13
|
-
[35mevent[39m - Bundless [
|
|
14
|
-
[35mevent[39m - Bundless [
|
|
9
|
+
[35mevent[39m - Bundless [90museViewportHeight.tsx[39m to [90mdist/creek-hooks/useViewportHeight.js[39m (with declaration)
|
|
10
|
+
[35mevent[39m - Bundless [90mtype.ts[39m to [90mdist/creek-table/type.js[39m (with declaration)
|
|
11
|
+
[35mevent[39m - Bundless [90museIndexColumn.tsx[39m to [90mdist/creek-table/hooks/useIndexColumn.js[39m (with declaration)
|
|
12
|
+
[35mevent[39m - Bundless [90mNotFoundPage.tsx[39m to [90mdist/creek-layout/Exception/NotFoundPage.js[39m (with declaration)
|
|
13
|
+
[35mevent[39m - Bundless [90museTableOptions.tsx[39m to [90mdist/creek-table/hooks/useTableOptions.js[39m (with declaration)
|
|
15
14
|
[35mevent[39m - Bundless [90mtypes.ts[39m to [90mdist/creek-hooks/useApp/types.js[39m (with declaration)
|
|
16
|
-
[35mevent[39m - Bundless [
|
|
17
|
-
[35mevent[39m - Bundless [
|
|
18
|
-
[35mevent[39m - Bundless [
|
|
19
|
-
[35mevent[39m - Bundless [
|
|
15
|
+
[35mevent[39m - Bundless [90museEllipsisColumns.tsx[39m to [90mdist/creek-table/hooks/useEllipsisColumns.js[39m (with declaration)
|
|
16
|
+
[35mevent[39m - Bundless [90mDrawerHelper.tsx[39m to [90mdist/creek-hooks/useApp/DrawerHelper.js[39m (with declaration)
|
|
17
|
+
[35mevent[39m - Bundless [90museElementDistance.tsx[39m to [90mdist/creek-table/hooks/useElementDistance.js[39m (with declaration)
|
|
18
|
+
[35mevent[39m - Bundless [90museLayoutSettingsStore.ts[39m to [90mdist/creek-layout/useLayoutSettingsStore.js[39m (with declaration)
|
|
20
19
|
[35mevent[39m - Bundless [90mUserInfo.tsx[39m to [90mdist/creek-layout/ActionRender/UserInfo.js[39m (with declaration)
|
|
21
|
-
[35mevent[39m - Bundless [90mLayoutSettings.tsx[39m to [90mdist/creek-layout/ActionRender/LayoutSettings.js[39m (with declaration)
|
|
22
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-layout/Exception/index.js[39m (with declaration)
|
|
23
20
|
[35mevent[39m - Bundless [90mNotFound.tsx[39m to [90mdist/creek-layout/Exception/NotFound.js[39m (with declaration)
|
|
24
|
-
[35mevent[39m - Bundless [
|
|
25
|
-
[35mevent[39m - Bundless [90mNotFoundPage.tsx[39m to [90mdist/creek-layout/Exception/NotFoundPage.js[39m (with declaration)
|
|
26
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-layout/index.js[39m (with declaration)
|
|
27
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-loading/index.js[39m (with declaration)
|
|
28
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-locale-button/index.js[39m (with declaration)
|
|
29
|
-
[35mevent[39m - Bundless [90mindex.ts[39m to [90mdist/creek-style/index.js[39m (with declaration)
|
|
21
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-layout/Exception/index.js[39m (with declaration)
|
|
30
22
|
[35mevent[39m - Bundless [90mscrollbar.ts[39m to [90mdist/creek-style/scrollbar.js[39m (with declaration)
|
|
31
|
-
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-page-container/index.js[39m (with declaration)
|
|
32
|
-
[35mevent[39m - Bundless [90mEllipsisTooltip.tsx[39m to [90mdist/creek-table/components/EllipsisTooltip.js[39m (with declaration)
|
|
33
|
-
[35mevent[39m - Bundless [90mDensityIcon.tsx[39m to [90mdist/creek-table/components/DensityIcon.js[39m (with declaration)
|
|
34
|
-
[35mevent[39m - Bundless [90mindex.ts[39m to [90mdist/creek-table/hooks/index.js[39m (with declaration)
|
|
35
23
|
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-table/components/index.js[39m (with declaration)
|
|
24
|
+
[35mevent[39m - Bundless [90mindex.ts[39m to [90mdist/creek-style/index.js[39m (with declaration)
|
|
25
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-layout/ActionRender/index.js[39m (with declaration)
|
|
26
|
+
[35mevent[39m - Bundless [90museTableScrollHeight.tsx[39m to [90mdist/creek-table/hooks/useTableScrollHeight.js[39m (with declaration)
|
|
27
|
+
[35mevent[39m - Bundless [90mDensityIcon.tsx[39m to [90mdist/creek-table/components/DensityIcon.js[39m (with declaration)
|
|
28
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-locale-button/index.js[39m (with declaration)
|
|
36
29
|
[35mevent[39m - Bundless [90museAdaptiveToolBar.tsx[39m to [90mdist/creek-table/hooks/useAdaptiveToolBar.js[39m (with declaration)
|
|
37
|
-
[35mevent[39m - Bundless [
|
|
38
|
-
[35mevent[39m - Bundless [
|
|
39
|
-
[35mevent[39m - Bundless [90museIndexColumn.tsx[39m to [90mdist/creek-table/hooks/useIndexColumn.js[39m (with declaration)
|
|
40
|
-
[35mevent[39m - Bundless [90museResizableColumns.tsx[39m to [90mdist/creek-table/hooks/useResizableColumns.js[39m (with declaration)
|
|
41
|
-
[35mevent[39m - Bundless [90museElementDistance.tsx[39m to [90mdist/creek-table/hooks/useElementDistance.js[39m (with declaration)
|
|
30
|
+
[35mevent[39m - Bundless [90mCreekI18nProvider.tsx[39m to [90mdist/creek-config-provider/CreekI18nProvider.js[39m (with declaration)
|
|
31
|
+
[35mevent[39m - Bundless [90mModalHelper.tsx[39m to [90mdist/creek-hooks/useApp/ModalHelper.js[39m (with declaration)
|
|
42
32
|
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-table/index.js[39m (with declaration)
|
|
43
|
-
[35mevent[39m - Bundless [90museTableOptions.tsx[39m to [90mdist/creek-table/hooks/useTableOptions.js[39m (with declaration)
|
|
44
|
-
[35mevent[39m - Bundless [90museTableScrollHeight.tsx[39m to [90mdist/creek-table/hooks/useTableScrollHeight.js[39m (with declaration)
|
|
45
|
-
[35mevent[39m - Bundless [90mtype.ts[39m to [90mdist/creek-table/type.js[39m (with declaration)
|
|
46
33
|
[35mevent[39m - Bundless [90mzh_CN.ts[39m to [90mdist/locales/zh_CN.js[39m (with declaration)
|
|
47
|
-
[35mevent[39m - Bundless [
|
|
34
|
+
[35mevent[39m - Bundless [90mFullScreen.tsx[39m to [90mdist/creek-layout/ActionRender/FullScreen.js[39m (with declaration)
|
|
35
|
+
[35mevent[39m - Bundless [90mindex.ts[39m to [90mdist/creek-hooks/index.js[39m (with declaration)
|
|
36
|
+
[35mevent[39m - Bundless [90mCollapseButton.tsx[39m to [90mdist/creek-layout/CollapseButton.js[39m (with declaration)
|
|
48
37
|
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/index.js[39m (with declaration)
|
|
49
|
-
[35mevent[39m - Bundless [90museLayoutSettingsStore.ts[39m to [90mdist/creek-layout/useLayoutSettingsStore.js[39m (with declaration)
|
|
50
38
|
[35mevent[39m - Bundless [90men_US.ts[39m to [90mdist/locales/en_US.js[39m (with declaration)
|
|
39
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-page-container/index.js[39m (with declaration)
|
|
40
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-config-provider/index.js[39m (with declaration)
|
|
41
|
+
[35mevent[39m - Bundless [90museAutoWidthColumns.tsx[39m to [90mdist/creek-table/hooks/useAutoWidthColumns.js[39m (with declaration)
|
|
42
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-hooks/useApp/index.js[39m (with declaration)
|
|
43
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-loading/index.js[39m (with declaration)
|
|
44
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-keep-alive/index.js[39m (with declaration)
|
|
45
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-icon/index.js[39m (with declaration)
|
|
51
46
|
[35mevent[39m - Bundless [90museStatusColumns.tsx[39m to [90mdist/creek-table/hooks/useStatusColumns.js[39m (with declaration)
|
|
52
47
|
[35mevent[39m - Bundless [90mSearchTable.tsx[39m to [90mdist/creek-table/SearchTable.js[39m (with declaration)
|
|
48
|
+
[35mevent[39m - Bundless [90mLayoutSettings.tsx[39m to [90mdist/creek-layout/ActionRender/LayoutSettings.js[39m (with declaration)
|
|
49
|
+
[35mevent[39m - Bundless [90mindex.ts[39m to [90mdist/creek-table/hooks/index.js[39m (with declaration)
|
|
50
|
+
[35mevent[39m - Bundless [90mEllipsisTooltip.tsx[39m to [90mdist/creek-table/components/EllipsisTooltip.js[39m (with declaration)
|
|
51
|
+
[35mevent[39m - Bundless [90mindex.tsx[39m to [90mdist/creek-layout/index.js[39m (with declaration)
|
|
52
|
+
[35mevent[39m - Bundless [90museResizableColumns.tsx[39m to [90mdist/creek-table/hooks/useResizableColumns.js[39m (with declaration)
|
|
53
53
|
[35mevent[39m - Generate declaration files...
|
|
54
|
-
[35mevent[39m - Transformed successfully in
|
|
54
|
+
[35mevent[39m - Transformed successfully in 6931 ms (45 files)
|
|
@@ -38,7 +38,6 @@ module.exports = __toCommonJS(creek_config_provider_exports);
|
|
|
38
38
|
var import_antd = require("antd");
|
|
39
39
|
var import_en_US = __toESM(require("antd/locale/en_US"));
|
|
40
40
|
var import_zh_CN = __toESM(require("antd/locale/zh_CN"));
|
|
41
|
-
var import_merge = __toESM(require("lodash/merge"));
|
|
42
41
|
var import_creek_hooks = require("../creek-hooks");
|
|
43
42
|
var import_useLayoutSettingsStore = require("../creek-layout/useLayoutSettingsStore");
|
|
44
43
|
var import_CreekConfigContext = require("./CreekConfigContext");
|
|
@@ -54,18 +53,19 @@ var InnerConfigProvider = (props) => {
|
|
|
54
53
|
const { locale } = (0, import_CreekI18nProvider.useAppLocale)();
|
|
55
54
|
const settingsStore = (0, import_useLayoutSettingsStore.useLayoutSettingsStore)();
|
|
56
55
|
const activeColorPrimary = settingsStore.colorPrimary || ((_a = theme == null ? void 0 : theme.token) == null ? void 0 : _a.colorPrimary);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
activeColorPrimary
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
const colorPrimaryToken = activeColorPrimary ? {
|
|
57
|
+
colorPrimary: activeColorPrimary,
|
|
58
|
+
colorLink: activeColorPrimary,
|
|
59
|
+
colorLinkHover: activeColorPrimary,
|
|
60
|
+
colorLinkActive: activeColorPrimary
|
|
61
|
+
} : {};
|
|
62
|
+
let finalTheme = {
|
|
63
|
+
...theme,
|
|
64
|
+
token: {
|
|
65
|
+
...theme == null ? void 0 : theme.token,
|
|
66
|
+
...colorPrimaryToken
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
69
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.ConfigProvider, { locale: ANTD_LOCALE_MAP[locale] || import_zh_CN.default, theme: finalTheme, ...more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_CreekConfigContext.CreekConfigContext.Provider, { value: more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.App, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_creek_hooks.AppProvider, { children }) }) }) });
|
|
70
70
|
};
|
|
71
71
|
var CreekConfigProvider = (props) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/creek-config-provider/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import type { ConfigProviderProps } from 'antd';\nimport { App, ConfigProvider } from 'antd';\nimport enUS_antd from 'antd/locale/en_US';\nimport zhCN_antd from 'antd/locale/zh_CN';\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAoC;AACpC,mBAAsB;AACtB,mBAAsB;
|
|
6
|
-
"names": ["zhCN_antd", "enUS_antd", "
|
|
4
|
+
"sourcesContent": ["import type { ConfigProviderProps } from 'antd';\nimport { App, ConfigProvider } from 'antd';\nimport enUS_antd from 'antd/locale/en_US';\nimport zhCN_antd from 'antd/locale/zh_CN';\n\nimport { AppProvider } from '../creek-hooks';\nimport { useLayoutSettingsStore } from '../creek-layout/useLayoutSettingsStore';\nimport { CreekConfigContext, CreekConfigContextProps } from './CreekConfigContext';\nimport { CreekI18nProvider, CreekI18nProviderProps, LocaleCode, LocaleContext, useAppLocale } from './CreekI18nProvider';\n\nconst ANTD_LOCALE_MAP: Record<LocaleCode, any> = {\n zh_CN: zhCN_antd,\n en_US: enUS_antd,\n};\n\nexport type CreekConfigProviderProps = CreekConfigContextProps & Omit<ConfigProviderProps, 'locale'> & CreekI18nProviderProps;\n\nexport { CreekI18nProvider, LocaleContext, useAppLocale };\nexport type { CreekI18nProviderProps };\n\nconst InnerConfigProvider = (props: Omit<CreekConfigProviderProps, 'locale' | 'messages'>) => {\n const { children, theme, ...more } = props;\n const { locale } = useAppLocale();\n const settingsStore = useLayoutSettingsStore();\n\n const activeColorPrimary = settingsStore.colorPrimary || theme?.token?.colorPrimary;\n\n const colorPrimaryToken = activeColorPrimary\n ? {\n colorPrimary: activeColorPrimary,\n colorLink: activeColorPrimary,\n colorLinkHover: activeColorPrimary,\n colorLinkActive: activeColorPrimary,\n }\n : {};\n\n let finalTheme: ConfigProviderProps['theme'] = {\n ...theme,\n token: {\n ...theme?.token,\n ...colorPrimaryToken,\n },\n };\n\n return (\n <ConfigProvider locale={ANTD_LOCALE_MAP[locale] || zhCN_antd} theme={finalTheme} {...more}>\n <CreekConfigContext.Provider value={more as any}>\n <App>\n <AppProvider>{children}</AppProvider>\n </App>\n </CreekConfigContext.Provider>\n </ConfigProvider>\n );\n};\n\nexport const CreekConfigProvider = (props: CreekConfigProviderProps) => {\n const { children, locale, messages, ...more } = props;\n\n return (\n <CreekI18nProvider locale={locale} messages={messages}>\n <InnerConfigProvider {...more}>{children}</InnerConfigProvider>\n </CreekI18nProvider>\n );\n};\n\nCreekConfigProvider.CreekConfigContext = CreekConfigContext;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAoC;AACpC,mBAAsB;AACtB,mBAAsB;AAEtB,yBAA4B;AAC5B,oCAAuC;AACvC,gCAA4D;AAC5D,+BAAmG;AAwCzF;AAtCV,IAAM,kBAA2C;AAAA,EAC/C,OAAO,aAAAA;AAAA,EACP,OAAO,aAAAC;AACT;AAOA,IAAM,sBAAsB,CAAC,UAAiE;AApB9F;AAqBE,QAAM,EAAE,UAAU,OAAO,GAAG,KAAK,IAAI;AACrC,QAAM,EAAE,OAAO,QAAI,uCAAa;AAChC,QAAM,oBAAgB,sDAAuB;AAE7C,QAAM,qBAAqB,cAAc,kBAAgB,oCAAO,UAAP,mBAAc;AAEvE,QAAM,oBAAoB,qBACtB;AAAA,IACE,cAAc;AAAA,IACd,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EACnB,IACA,CAAC;AAEL,MAAI,aAA2C;AAAA,IAC7C,GAAG;AAAA,IACH,OAAO;AAAA,MACL,GAAG,+BAAO;AAAA,MACV,GAAG;AAAA,IACL;AAAA,EACF;AAEA,SACE,4CAAC,8BAAe,QAAQ,gBAAgB,MAAM,KAAK,aAAAC,SAAW,OAAO,YAAa,GAAG,MACnF,sDAAC,6CAAmB,UAAnB,EAA4B,OAAO,MAClC,sDAAC,mBACC,sDAAC,kCAAa,UAAS,GACzB,GACF,GACF;AAEJ;AAEO,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,KAAK,IAAI;AAEhD,SACE,4CAAC,8CAAkB,QAAgB,UACjC,sDAAC,uBAAqB,GAAG,MAAO,UAAS,GAC3C;AAEJ;AAEA,oBAAoB,qBAAqB;",
|
|
6
|
+
"names": ["zhCN_antd", "enUS_antd", "zhCN_antd"]
|
|
7
7
|
}
|
|
@@ -30,7 +30,7 @@ var import_react_router_dom = require("react-router-dom");
|
|
|
30
30
|
var import_react2 = require("@creekjs/i18n/react");
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
32
|
var CreekKeepAlive = (props) => {
|
|
33
|
-
const { exclude = [], getTabTitle,
|
|
33
|
+
const { exclude = [], getTabTitle, tabBarStyle, maxTabCount = 20 } = props;
|
|
34
34
|
const t = (0, import_react2.useT)();
|
|
35
35
|
const outlet = (0, import_react_router_dom.useOutlet)();
|
|
36
36
|
const location = (0, import_react_router_dom.useLocation)();
|
|
@@ -63,10 +63,14 @@ var CreekKeepAlive = (props) => {
|
|
|
63
63
|
});
|
|
64
64
|
setTabItems((prev) => {
|
|
65
65
|
if (prev.find((i) => i.key === currentPath)) {
|
|
66
|
-
|
|
66
|
+
const updated = prev.map((i) => ({ ...i, closable: prev.length > 1 }));
|
|
67
|
+
return updated;
|
|
67
68
|
}
|
|
68
69
|
const title = (getTabTitle == null ? void 0 : getTabTitle(currentPath)) || currentPath;
|
|
69
|
-
const newItems = [...prev, { key: currentPath, label: title, closable:
|
|
70
|
+
const newItems = [...prev, { key: currentPath, label: title, closable: prev.length > 0 }];
|
|
71
|
+
if (newItems.length === 1) {
|
|
72
|
+
newItems[0].closable = false;
|
|
73
|
+
}
|
|
70
74
|
if (newItems.length > maxTabCount) {
|
|
71
75
|
const indexToRemove = newItems.findIndex((item) => item.closable && item.key !== currentPath);
|
|
72
76
|
if (indexToRemove !== -1) {
|
|
@@ -77,7 +81,7 @@ var CreekKeepAlive = (props) => {
|
|
|
77
81
|
}
|
|
78
82
|
return newItems;
|
|
79
83
|
});
|
|
80
|
-
}, [location.pathname, outlet, getTabTitle,
|
|
84
|
+
}, [location.pathname, outlet, getTabTitle, maxTabCount]);
|
|
81
85
|
(0, import_react.useEffect)(() => {
|
|
82
86
|
}, []);
|
|
83
87
|
const closeTab = (0, import_ahooks.useMemoizedFn)((targetKey) => {
|
|
@@ -90,13 +94,14 @@ var CreekKeepAlive = (props) => {
|
|
|
90
94
|
const nextIndex = targetIndex >= newTabItems.length ? newTabItems.length - 1 : targetIndex;
|
|
91
95
|
const nextKey = newTabItems[nextIndex].key;
|
|
92
96
|
navigate(nextKey);
|
|
93
|
-
} else {
|
|
94
|
-
navigate(homePath);
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
99
|
});
|
|
98
100
|
const closeOtherTabs = (0, import_ahooks.useMemoizedFn)((currentKey) => {
|
|
99
|
-
const
|
|
101
|
+
const currentTab = tabItems.find((item) => item.key === currentKey);
|
|
102
|
+
if (!currentTab)
|
|
103
|
+
return;
|
|
104
|
+
const newTabItems = [{ ...currentTab, closable: false }];
|
|
100
105
|
setTabItems(newTabItems);
|
|
101
106
|
const keepKeys = newTabItems.map((i) => i.key);
|
|
102
107
|
setCachedPages((prev) => {
|
|
@@ -135,7 +140,7 @@ var CreekKeepAlive = (props) => {
|
|
|
135
140
|
{
|
|
136
141
|
key: "close",
|
|
137
142
|
label: t("creek-keep-alive.index.guanBiDangQian", "关闭当前"),
|
|
138
|
-
disabled:
|
|
143
|
+
disabled: tabItems.length <= 1,
|
|
139
144
|
onClick: () => closeTab(item.key)
|
|
140
145
|
},
|
|
141
146
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/creek-keep-alive/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useMemoizedFn } from 'ahooks';\nimport { Dropdown, MenuProps, Tabs } from 'antd';\nimport { isRegExp, isString, omit } from 'lodash';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useOutlet } from 'react-router-dom';\n\nimport { useT } from '@creekjs/i18n/react';\n\nexport interface CreekKeepAliveProps {\n /**\n * 不需要缓存的路径\n */\n exclude?: (string | RegExp)[];\n /**\n * 自定义Tab标题获取方法\n */\n getTabTitle?: (pathname: string) => React.ReactNode;\n /**\n *
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA8B;AAC9B,kBAA0C;AAC1C,oBAAyC;AACzC,mBAA2C;AAC3C,8BAAoD;AAEpD,IAAAA,gBAAqB;
|
|
4
|
+
"sourcesContent": ["import { useMemoizedFn } from 'ahooks';\nimport { Dropdown, MenuProps, Tabs } from 'antd';\nimport { isRegExp, isString, omit } from 'lodash';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useOutlet } from 'react-router-dom';\n\nimport { useT } from '@creekjs/i18n/react';\n\nexport interface CreekKeepAliveProps {\n /**\n * 不需要缓存的路径\n */\n exclude?: (string | RegExp)[];\n /**\n * 自定义Tab标题获取方法\n */\n getTabTitle?: (pathname: string) => React.ReactNode;\n /**\n * Tabs的样式\n */\n tabBarStyle?: React.CSSProperties;\n /**\n * 最大缓存数量,默认为 20\n */\n maxTabCount?: number;\n}\n\ninterface TabItem {\n key: string;\n label: React.ReactNode;\n closable?: boolean;\n}\n\nexport const CreekKeepAlive: React.FC<CreekKeepAliveProps> = (props) => {\n const { exclude = [], getTabTitle, tabBarStyle, maxTabCount = 20 } = props;\n\n const t = useT();\n const outlet = useOutlet();\n const location = useLocation();\n const navigate = useNavigate();\n\n const [tabItems, setTabItems] = useState<TabItem[]>([]);\n const [activeKey, setActiveKey] = useState<string>('');\n const [cachedPages, setCachedPages] = useState<Record<string, React.ReactNode>>({});\n\n // 判断是否不需要缓存\n const isPathExcluded = (path: string) => {\n return exclude.some((item) => {\n if (isString(item)) {\n return item === path;\n }\n if (isRegExp(item)) {\n return item.test(path);\n }\n return false;\n });\n };\n\n // 初始化或路由变化时更新\n useEffect(() => {\n const currentPath = location.pathname;\n setActiveKey(currentPath);\n\n // 更新页面内容缓存\n setCachedPages((prev) => {\n if (prev[currentPath]) {\n return prev;\n }\n return {\n ...prev,\n [currentPath]: outlet,\n };\n });\n\n // 更新 Tab 列表\n setTabItems((prev) => {\n if (prev.find((i) => i.key === currentPath)) {\n // 更新现有 tab 的 closable 状态(只有最后一个 tab 时不可关闭)\n const updated = prev.map((i) => ({ ...i, closable: prev.length > 1 }));\n return updated;\n }\n const title = getTabTitle?.(currentPath) || currentPath;\n const newItems = [...prev, { key: currentPath, label: title, closable: prev.length > 0 }];\n\n // 更新所有 tab 的 closable 状态:只有1个 tab 时全部不可关闭\n if (newItems.length === 1) {\n newItems[0].closable = false;\n }\n\n // 超过最大数量限制\n if (newItems.length > maxTabCount) {\n // 找到第一个可以关闭的 Tab(非首页、非当前页)\n // 这里策略是移除最早加入的那个可关闭 Tab。prev[0] 是最早的。\n // 但要注意不要移除当前页(currentPath),虽然 currentPath 是刚加进去的,但在极端情况下(比如 max=1)\n // 简单策略:移除第一个 closable 且 key !== currentPath 的 item\n const indexToRemove = newItems.findIndex((item) => item.closable && item.key !== currentPath);\n if (indexToRemove !== -1) {\n const itemToRemove = newItems[indexToRemove];\n // 顺便移除缓存\n setCachedPages((currentCached) => omit(currentCached, [itemToRemove.key]));\n newItems.splice(indexToRemove, 1);\n }\n }\n return newItems;\n });\n }, [location.pathname, outlet, getTabTitle, maxTabCount]);\n\n // 清理不需要缓存的页面\n useEffect(() => {\n // 监听路由离开\n // 这里比较 tricky,因为 useEffect 拿到的 activeKey 已经是新的了\n // 我们需要知道\"上一个\"路径\n // 简化处理:每次 render 时,检查 pages 里哪些是不需要缓存且不处于 active 状态的,将其移除?\n // 但如果在 setState 里做会导致死循环。\n // 另一种策略:不缓存 = 离开时销毁。\n // 我们可以在 pages 渲染时控制。\n }, []);\n\n const closeTab = useMemoizedFn((targetKey: string) => {\n const targetIndex = tabItems.findIndex((item) => item.key === targetKey);\n const newTabItems = tabItems.filter((item) => item.key !== targetKey);\n\n // 移除缓存\n setCachedPages((prev) => omit(prev, [targetKey]));\n setTabItems(newTabItems);\n\n // 如果关闭的是当前页,跳转到临近页\n if (targetKey === activeKey) {\n if (newTabItems.length > 0) {\n // 尝试跳到右边,没有则左边\n const nextIndex = targetIndex >= newTabItems.length ? newTabItems.length - 1 : targetIndex;\n const nextKey = newTabItems[nextIndex].key;\n navigate(nextKey);\n }\n }\n });\n\n const closeOtherTabs = useMemoizedFn((currentKey: string) => {\n const currentTab = tabItems.find((item) => item.key === currentKey);\n if (!currentTab) return;\n const newTabItems = [{ ...currentTab, closable: false }];\n setTabItems(newTabItems);\n\n const keepKeys = newTabItems.map((i) => i.key);\n setCachedPages((prev) => {\n const newCachedPages: Record<string, React.ReactNode> = {};\n keepKeys.forEach((k) => {\n if (prev[k]) newCachedPages[k] = prev[k];\n });\n return newCachedPages;\n });\n\n if (activeKey !== currentKey) {\n navigate(currentKey);\n }\n });\n\n const closeRightTabs = useMemoizedFn((currentKey: string) => {\n const currentIndex = tabItems.findIndex((i) => i.key === currentKey);\n const rightItems = tabItems.slice(currentIndex + 1);\n const rightKeys = rightItems.map((i) => i.key);\n\n const newTabItems = tabItems.filter((i) => !rightKeys.includes(i.key));\n setTabItems(newTabItems);\n\n setCachedPages((prev) => omit(prev, rightKeys));\n\n if (rightKeys.includes(activeKey)) {\n navigate(currentKey);\n }\n });\n\n const handleTabEdit = (targetKey: React.MouseEvent | React.KeyboardEvent | string, action: 'add' | 'remove') => {\n if (action === 'remove' && isString(targetKey)) {\n closeTab(targetKey);\n }\n };\n\n const handleTabClick = (key: string) => {\n navigate(key);\n };\n\n const renderTabLabel = (item: TabItem) => {\n const menuItems: MenuProps['items'] = [\n {\n key: 'close',\n label: t('creek-keep-alive.index.guanBiDangQian', '关闭当前'),\n disabled: tabItems.length <= 1,\n onClick: () => closeTab(item.key),\n },\n {\n key: 'closeOthers',\n label: t('creek-keep-alive.index.guanBiQiTa', '关闭其他'),\n onClick: () => closeOtherTabs(item.key),\n },\n {\n key: 'closeRight',\n label: t('creek-keep-alive.index.guanBiYouCe', '关闭右侧'),\n onClick: () => closeRightTabs(item.key),\n },\n ];\n\n return (\n <Dropdown menu={{ items: menuItems }} trigger={['contextMenu']}>\n <span>{item.label}</span>\n </Dropdown>\n );\n };\n\n return (\n <div className=\"creek-keep-alive\">\n <Tabs\n activeKey={activeKey}\n type=\"editable-card\"\n hideAdd\n onChange={handleTabClick}\n onEdit={handleTabEdit}\n tabBarStyle={{ margin: 0, ...tabBarStyle }}\n items={tabItems.map((item) => ({\n ...item,\n label: renderTabLabel(item),\n children: (\n <div key={item.key} style={{ height: '100%', display: activeKey === item.key ? 'block' : 'none' }}>\n {/* 如果是不缓存的页面,且不是当前页,则不渲染(销毁) */}\n {/* 如果是缓存页面,或者是当前页,则渲染 */}\n {!isPathExcluded(item.key) || activeKey === item.key ? cachedPages[item.key] : null}\n </div>\n ),\n }))}\n />\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_react"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export declare const LayoutSettings: ({ defaultShowFullScreen, defaultShowLocaleButton, defaultKeepAlive, }: {
|
|
1
|
+
export declare const LayoutSettings: ({ defaultShowFullScreen, defaultShowLocaleButton, defaultShowThemeColor, defaultKeepAlive, }: {
|
|
2
2
|
defaultShowFullScreen?: boolean | undefined;
|
|
3
3
|
defaultShowLocaleButton?: boolean | undefined;
|
|
4
|
+
defaultShowThemeColor?: boolean | undefined;
|
|
4
5
|
defaultKeepAlive?: boolean | undefined;
|
|
5
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -28,14 +28,14 @@ var import_react = require("@creekjs/i18n/react");
|
|
|
28
28
|
var import_creek_hooks = require("../../creek-hooks");
|
|
29
29
|
var import_useLayoutSettingsStore = require("../useLayoutSettingsStore");
|
|
30
30
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
-
var SettingsForm = ({ defaultShowFullScreen, defaultShowLocaleButton, defaultKeepAlive }) => {
|
|
31
|
+
var SettingsForm = ({ defaultShowFullScreen, defaultShowLocaleButton, defaultShowThemeColor, defaultKeepAlive }) => {
|
|
32
32
|
const t = (0, import_react.useT)();
|
|
33
33
|
const { colorPrimary, showFullScreen, showLocaleButton, keepAlive, setSettings } = (0, import_useLayoutSettingsStore.useLayoutSettingsStore)();
|
|
34
34
|
const currentShowFullScreen = showFullScreen ?? defaultShowFullScreen ?? false;
|
|
35
35
|
const currentShowLocaleButton = showLocaleButton ?? defaultShowLocaleButton ?? true;
|
|
36
36
|
const currentKeepAlive = keepAlive ?? defaultKeepAlive ?? true;
|
|
37
37
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_antd.Form, { layout: "vertical", children: [
|
|
38
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.themeColor", "主题色"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
38
|
+
defaultShowThemeColor && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.themeColor", "主题色"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
39
39
|
import_antd.ColorPicker,
|
|
40
40
|
{
|
|
41
41
|
value: colorPrimary,
|
|
@@ -45,14 +45,15 @@ var SettingsForm = ({ defaultShowFullScreen, defaultShowLocaleButton, defaultKee
|
|
|
45
45
|
allowClear: true
|
|
46
46
|
}
|
|
47
47
|
) }),
|
|
48
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.showFullScreen", "展示全屏按钮"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentShowFullScreen, onChange: (checked) => setSettings({ showFullScreen: checked }) }) }),
|
|
49
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.showLocaleButton", "展示国际化按钮"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentShowLocaleButton, onChange: (checked) => setSettings({ showLocaleButton: checked }) }) }),
|
|
50
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.keepAlive", "开启页面缓存 (Keep Alive)"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentKeepAlive, onChange: (checked) => setSettings({ keepAlive: checked }) }) })
|
|
48
|
+
defaultShowFullScreen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.showFullScreen", "展示全屏按钮"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentShowFullScreen, onChange: (checked) => setSettings({ showFullScreen: checked }) }) }),
|
|
49
|
+
defaultShowLocaleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.showLocaleButton", "展示国际化按钮"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentShowLocaleButton, onChange: (checked) => setSettings({ showLocaleButton: checked }) }) }),
|
|
50
|
+
defaultKeepAlive && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Form.Item, { label: t("creek-layout.ActionRender.LayoutSettings.keepAlive", "开启页面缓存 (Keep Alive)"), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Switch, { checked: currentKeepAlive, onChange: (checked) => setSettings({ keepAlive: checked }) }) })
|
|
51
51
|
] });
|
|
52
52
|
};
|
|
53
53
|
var LayoutSettings = ({
|
|
54
54
|
defaultShowFullScreen,
|
|
55
55
|
defaultShowLocaleButton,
|
|
56
|
+
defaultShowThemeColor,
|
|
56
57
|
defaultKeepAlive
|
|
57
58
|
}) => {
|
|
58
59
|
const t = (0, import_react.useT)();
|
|
@@ -61,7 +62,7 @@ var LayoutSettings = ({
|
|
|
61
62
|
drawer.open({
|
|
62
63
|
title: t("creek-layout.ActionRender.LayoutSettings.title", "系统设置"),
|
|
63
64
|
placement: "right",
|
|
64
|
-
content: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SettingsForm, { defaultShowFullScreen, defaultShowLocaleButton, defaultKeepAlive })
|
|
65
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SettingsForm, { defaultShowFullScreen, defaultShowLocaleButton, defaultShowThemeColor, defaultKeepAlive })
|
|
65
66
|
});
|
|
66
67
|
};
|
|
67
68
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: t("creek-layout.ActionRender.LayoutSettings.title", "系统设置"), placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.SettingOutlined, { onClick: handleOpenSettings }) });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/creek-layout/ActionRender/LayoutSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["import { SettingOutlined } from '@ant-design/icons';\nimport { ColorPicker, Form, Switch, Tooltip } from 'antd';\n\nimport { useT } from '@creekjs/i18n/react';\n\nimport { useApp } from '../../creek-hooks';\nimport { useLayoutSettingsStore } from '../useLayoutSettingsStore';\n\nconst SettingsForm = ({ defaultShowFullScreen, defaultShowLocaleButton, defaultKeepAlive }: { defaultShowFullScreen?: boolean; defaultShowLocaleButton?: boolean; defaultKeepAlive?: boolean }) => {\n const t = useT();\n const { colorPrimary, showFullScreen, showLocaleButton, keepAlive, setSettings } = useLayoutSettingsStore();\n\n const currentShowFullScreen = showFullScreen ?? defaultShowFullScreen ?? false;\n const currentShowLocaleButton = showLocaleButton ?? defaultShowLocaleButton ?? true;\n const currentKeepAlive = keepAlive ?? defaultKeepAlive ?? true;\n\n return (\n <Form layout=\"vertical\">\n <Form.Item label={t('creek-layout.ActionRender.LayoutSettings.themeColor', '主题色')}>\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAChC,kBAAmD;AAEnD,mBAAqB;AAErB,yBAAuB;AACvB,oCAAuC;AAWnC;AATJ,IAAM,eAAe,CAAC,EAAE,uBAAuB,yBAAyB,iBAAiB,
|
|
4
|
+
"sourcesContent": ["import { SettingOutlined } from '@ant-design/icons';\nimport { ColorPicker, Form, Switch, Tooltip } from 'antd';\n\nimport { useT } from '@creekjs/i18n/react';\n\nimport { useApp } from '../../creek-hooks';\nimport { useLayoutSettingsStore } from '../useLayoutSettingsStore';\n\nconst SettingsForm = ({ defaultShowFullScreen, defaultShowLocaleButton, defaultShowThemeColor, defaultKeepAlive }: { defaultShowFullScreen?: boolean; defaultShowLocaleButton?: boolean; defaultShowThemeColor?: boolean; defaultKeepAlive?: boolean }) => {\n const t = useT();\n const { colorPrimary, showFullScreen, showLocaleButton, keepAlive, setSettings } = useLayoutSettingsStore();\n\n const currentShowFullScreen = showFullScreen ?? defaultShowFullScreen ?? false;\n const currentShowLocaleButton = showLocaleButton ?? defaultShowLocaleButton ?? true;\n const currentKeepAlive = keepAlive ?? defaultKeepAlive ?? true;\n\n return (\n <Form layout=\"vertical\">\n {defaultShowThemeColor && (\n <Form.Item label={t('creek-layout.ActionRender.LayoutSettings.themeColor', '主题色')}>\n <ColorPicker\n value={colorPrimary}\n onChange={(color, hex) => {\n setSettings({ colorPrimary: hex || undefined });\n }}\n allowClear\n />\n </Form.Item>\n )}\n {defaultShowFullScreen && (\n <Form.Item label={t('creek-layout.ActionRender.LayoutSettings.showFullScreen', '展示全屏按钮')}>\n <Switch checked={currentShowFullScreen} onChange={(checked) => setSettings({ showFullScreen: checked })} />\n </Form.Item>\n )}\n {defaultShowLocaleButton && (\n <Form.Item label={t('creek-layout.ActionRender.LayoutSettings.showLocaleButton', '展示国际化按钮')}>\n <Switch checked={currentShowLocaleButton} onChange={(checked) => setSettings({ showLocaleButton: checked })} />\n </Form.Item>\n )}\n {defaultKeepAlive && (\n <Form.Item label={t('creek-layout.ActionRender.LayoutSettings.keepAlive', '开启页面缓存 (Keep Alive)')}>\n <Switch checked={currentKeepAlive} onChange={(checked) => setSettings({ keepAlive: checked })} />\n </Form.Item>\n )}\n </Form>\n );\n};\n\nexport const LayoutSettings = ({\n defaultShowFullScreen,\n defaultShowLocaleButton,\n defaultShowThemeColor,\n defaultKeepAlive,\n}: {\n defaultShowFullScreen?: boolean;\n defaultShowLocaleButton?: boolean;\n defaultShowThemeColor?: boolean;\n defaultKeepAlive?: boolean;\n}) => {\n const t = useT();\n const { drawer } = useApp();\n\n const handleOpenSettings = () => {\n drawer.open({\n title: t('creek-layout.ActionRender.LayoutSettings.title', '系统设置'),\n placement: 'right',\n\n content: <SettingsForm defaultShowFullScreen={defaultShowFullScreen} defaultShowLocaleButton={defaultShowLocaleButton} defaultShowThemeColor={defaultShowThemeColor} defaultKeepAlive={defaultKeepAlive} />,\n });\n };\n\n return (\n <Tooltip title={t('creek-layout.ActionRender.LayoutSettings.title', '系统设置')} placement=\"top\">\n <SettingOutlined onClick={handleOpenSettings} />\n </Tooltip>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAChC,kBAAmD;AAEnD,mBAAqB;AAErB,yBAAuB;AACvB,oCAAuC;AAWnC;AATJ,IAAM,eAAe,CAAC,EAAE,uBAAuB,yBAAyB,uBAAuB,iBAAiB,MAA2I;AACzP,QAAM,QAAI,mBAAK;AACf,QAAM,EAAE,cAAc,gBAAgB,kBAAkB,WAAW,YAAY,QAAI,sDAAuB;AAE1G,QAAM,wBAAwB,kBAAkB,yBAAyB;AACzE,QAAM,0BAA0B,oBAAoB,2BAA2B;AAC/E,QAAM,mBAAmB,aAAa,oBAAoB;AAE1D,SACE,6CAAC,oBAAK,QAAO,YACV;AAAA,6BACC,4CAAC,iBAAK,MAAL,EAAU,OAAO,EAAE,uDAAuD,KAAK,GAC9E;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,OAAO,QAAQ;AACxB,sBAAY,EAAE,cAAc,OAAO,OAAU,CAAC;AAAA,QAChD;AAAA,QACA,YAAU;AAAA;AAAA,IACZ,GACF;AAAA,IAED,yBACC,4CAAC,iBAAK,MAAL,EAAU,OAAO,EAAE,2DAA2D,QAAQ,GACrF,sDAAC,sBAAO,SAAS,uBAAuB,UAAU,CAAC,YAAY,YAAY,EAAE,gBAAgB,QAAQ,CAAC,GAAG,GAC3G;AAAA,IAED,2BACC,4CAAC,iBAAK,MAAL,EAAU,OAAO,EAAE,6DAA6D,SAAS,GACxF,sDAAC,sBAAO,SAAS,yBAAyB,UAAU,CAAC,YAAY,YAAY,EAAE,kBAAkB,QAAQ,CAAC,GAAG,GAC/G;AAAA,IAED,oBACC,4CAAC,iBAAK,MAAL,EAAU,OAAO,EAAE,sDAAsD,qBAAqB,GAC7F,sDAAC,sBAAO,SAAS,kBAAkB,UAAU,CAAC,YAAY,YAAY,EAAE,WAAW,QAAQ,CAAC,GAAG,GACjG;AAAA,KAEJ;AAEJ;AAEO,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,QAAI,mBAAK;AACf,QAAM,EAAE,OAAO,QAAI,2BAAO;AAE1B,QAAM,qBAAqB,MAAM;AAC/B,WAAO,KAAK;AAAA,MACV,OAAO,EAAE,kDAAkD,MAAM;AAAA,MACjE,WAAW;AAAA,MAEX,SAAS,4CAAC,gBAAa,uBAA8C,yBAAkD,uBAA8C,kBAAoC;AAAA,IAC3M,CAAC;AAAA,EACH;AAEA,SACE,4CAAC,uBAAQ,OAAO,EAAE,kDAAkD,MAAM,GAAG,WAAU,OACrF,sDAAC,gCAAgB,SAAS,oBAAoB,GAChD;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -65,6 +65,7 @@ var CreekLayout = (props) => {
|
|
|
65
65
|
showFullScreen = false,
|
|
66
66
|
showLocaleButton = false,
|
|
67
67
|
showSettingsButton = false,
|
|
68
|
+
showThemeColor = true,
|
|
68
69
|
keepAlive = false,
|
|
69
70
|
extraActions = [],
|
|
70
71
|
...more
|
|
@@ -73,10 +74,10 @@ var CreekLayout = (props) => {
|
|
|
73
74
|
const { token } = useToken();
|
|
74
75
|
const { collapsed } = (0, import_CollapseButton.useCollapsedStore)();
|
|
75
76
|
const settingsStore = (0, import_useLayoutSettingsStore.useLayoutSettingsStore)();
|
|
76
|
-
const actualShowFullScreen = settingsStore.showFullScreen ??
|
|
77
|
-
const actualShowLocaleButton = settingsStore.showLocaleButton ??
|
|
77
|
+
const actualShowFullScreen = showFullScreen && (settingsStore.showFullScreen ?? true);
|
|
78
|
+
const actualShowLocaleButton = showLocaleButton && (settingsStore.showLocaleButton ?? true);
|
|
78
79
|
const colorPrimary = settingsStore.colorPrimary || token.colorPrimary;
|
|
79
|
-
const actualKeepAlive = settingsStore.keepAlive ??
|
|
80
|
+
const actualKeepAlive = keepAlive && (settingsStore.keepAlive ?? true);
|
|
80
81
|
const _userConfig = { ...userConfig, ...runtimeConfig };
|
|
81
82
|
const intlContext = (0, import_react.useContext)(import_react2.IntlContext);
|
|
82
83
|
const hasI18n = !!intlContext && actualShowLocaleButton;
|
|
@@ -130,7 +131,7 @@ var CreekLayout = (props) => {
|
|
|
130
131
|
actions.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_creek_locale_button.CreekLocaleButton, {}, "locale-button"));
|
|
131
132
|
}
|
|
132
133
|
if (showSettingsButton) {
|
|
133
|
-
actions.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ActionRender.LayoutSettings, { defaultShowFullScreen: showFullScreen, defaultShowLocaleButton: showLocaleButton, defaultKeepAlive: import_lodash.default.isBoolean(keepAlive) ? keepAlive : true }, "settings"));
|
|
134
|
+
actions.push(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ActionRender.LayoutSettings, { defaultShowFullScreen: showFullScreen, defaultShowLocaleButton: showLocaleButton, defaultShowThemeColor: showThemeColor, defaultKeepAlive: import_lodash.default.isBoolean(keepAlive) ? keepAlive : true }, "settings"));
|
|
134
135
|
}
|
|
135
136
|
const keepAliveProps = import_lodash.default.isBoolean(keepAlive) ? {} : keepAlive;
|
|
136
137
|
const layoutContent = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/creek-layout/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { MenuDataItem, ProLayout, ProLayoutProps } from '@ant-design/pro-components';\nimport { useMemoizedFn } from 'ahooks';\nimport { theme } from 'antd';\nimport _ from 'lodash';\nimport { useContext } from 'react';\n\nimport classnames from 'classnames';\n\nimport { IntlContext, useT } from '@creekjs/i18n/react';\n\nimport { CreekKeepAlive, CreekKeepAliveProps } from '../creek-keep-alive';\nimport { CreekLocaleButton } from '../creek-locale-button';\nimport { GlobalScrollbarStyle } from '../creek-style/scrollbar';\nimport { FullScreen, LayoutSettings } from './ActionRender';\nimport { CollapsedButton, useCollapsedStore } from './CollapseButton';\nimport { Exception } from './Exception';\nimport { useLayoutSettingsStore } from './useLayoutSettingsStore';\n\nexport type LayoutProps = ProLayoutProps & {\n runtimeConfig: ProLayoutProps;\n userConfig?: ProLayoutProps;\n navigate?: (path?: string | number) => void;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n showSettingsButton?: boolean;\n initialInfo?: {\n initialState: any;\n loading: boolean;\n setInitialState: () => void;\n };\n keepAlive?: boolean | CreekKeepAliveProps;\n extraActions?: React.ReactNode[];\n};\n\nconst MenuName = ({ name, path }: { name?: string; path?: string }) => {\n const t = useT();\n const key = !path || path === '/' ? 'menu.home' : `menu${path.replace(/\\//g, '.')}`;\n return t(key, name);\n};\n\nexport const CreekLayout = (props: LayoutProps) => {\n const {\n route,\n userConfig,\n runtimeConfig,\n children,\n location,\n navigate,\n showFullScreen = false,\n showLocaleButton = false,\n showSettingsButton = false,\n keepAlive = false,\n extraActions = [],\n ...more\n } = props;\n\n const { useToken } = theme;\n const { token } = useToken();\n\n const { collapsed } = useCollapsedStore();\n const settingsStore = useLayoutSettingsStore();\n\n const actualShowFullScreen = settingsStore.showFullScreen ??
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAwD;AACxD,oBAA8B;AAC9B,kBAAsB;AACtB,oBAAc;AACd,mBAA2B;AAE3B,wBAAuB;AAEvB,IAAAA,gBAAkC;AAElC,8BAAoD;AACpD,iCAAkC;AAClC,uBAAqC;AACrC,0BAA2C;AAC3C,4BAAmD;AACnD,uBAA0B;AAC1B,oCAAuC;
|
|
4
|
+
"sourcesContent": ["import { MenuDataItem, ProLayout, ProLayoutProps } from '@ant-design/pro-components';\nimport { useMemoizedFn } from 'ahooks';\nimport { theme } from 'antd';\nimport _ from 'lodash';\nimport { useContext } from 'react';\n\nimport classnames from 'classnames';\n\nimport { IntlContext, useT } from '@creekjs/i18n/react';\n\nimport { CreekKeepAlive, CreekKeepAliveProps } from '../creek-keep-alive';\nimport { CreekLocaleButton } from '../creek-locale-button';\nimport { GlobalScrollbarStyle } from '../creek-style/scrollbar';\nimport { FullScreen, LayoutSettings } from './ActionRender';\nimport { CollapsedButton, useCollapsedStore } from './CollapseButton';\nimport { Exception } from './Exception';\nimport { useLayoutSettingsStore } from './useLayoutSettingsStore';\n\nexport type LayoutProps = ProLayoutProps & {\n runtimeConfig: ProLayoutProps;\n userConfig?: ProLayoutProps;\n navigate?: (path?: string | number) => void;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n showSettingsButton?: boolean;\n showThemeColor?: boolean;\n initialInfo?: {\n initialState: any;\n loading: boolean;\n setInitialState: () => void;\n };\n keepAlive?: boolean | CreekKeepAliveProps;\n extraActions?: React.ReactNode[];\n};\n\nconst MenuName = ({ name, path }: { name?: string; path?: string }) => {\n const t = useT();\n const key = !path || path === '/' ? 'menu.home' : `menu${path.replace(/\\//g, '.')}`;\n return t(key, name);\n};\n\nexport const CreekLayout = (props: LayoutProps) => {\n const {\n route,\n userConfig,\n runtimeConfig,\n children,\n location,\n navigate,\n showFullScreen = false,\n showLocaleButton = false,\n showSettingsButton = false,\n showThemeColor = true,\n keepAlive = false,\n extraActions = [],\n ...more\n } = props;\n\n const { useToken } = theme;\n const { token } = useToken();\n\n const { collapsed } = useCollapsedStore();\n const settingsStore = useLayoutSettingsStore();\n\n const actualShowFullScreen = showFullScreen && (settingsStore.showFullScreen ?? true);\n const actualShowLocaleButton = showLocaleButton && (settingsStore.showLocaleButton ?? true);\n const colorPrimary = settingsStore.colorPrimary || token.colorPrimary;\n const actualKeepAlive = keepAlive && (settingsStore.keepAlive ?? true);\n\n const _userConfig = { ...userConfig, ...runtimeConfig };\n\n const intlContext = useContext(IntlContext);\n const hasI18n = !!intlContext && actualShowLocaleButton;\n\n const menuDataRender = useMemoizedFn((menuData: MenuDataItem[]) => {\n // 根据当前是否开启了国际化(上下文是否存在)以及用户配置来判断是否包裹菜单翻译\n const isLocaleEnabled = hasI18n;\n\n const mapMenu = (items: MenuDataItem[]): MenuDataItem[] => {\n return items.map((item) => {\n return {\n ...item,\n name: (isLocaleEnabled ? <MenuName name={item.name} path={item.path} /> : item.name) as string,\n children: item.children ? mapMenu(item.children) : undefined,\n };\n });\n };\n return mapMenu(menuData);\n });\n\n const menuItemRender: ProLayoutProps['menuItemRender'] = useMemoizedFn((itemProps, defaultDom) => {\n return (\n <span\n onClick={() => {\n if (navigate) {\n navigate(itemProps.path);\n }\n }}\n >\n {defaultDom}\n </span>\n );\n });\n\n const getTabTitle = useMemoizedFn((pathname: string): string | React.ReactNode => {\n const routes = (route?.routes ?? []) as MenuDataItem[];\n\n const findTitle = (items: MenuDataItem[]): string | undefined => {\n for (const item of items) {\n if (item.path === pathname) return item.name ?? item.title;\n if (item.children) {\n const found = findTitle(item.children);\n if (found) return found;\n }\n }\n };\n\n const title = findTitle(routes) ?? pathname;\n\n return hasI18n ? <MenuName name={title} path={pathname} /> : title;\n });\n\n const actions: React.ReactNode[] = [...extraActions];\n\n if (actualShowFullScreen) {\n actions.push(<FullScreen key=\"full-screen\" />);\n }\n\n if (actualShowLocaleButton) {\n actions.push(<CreekLocaleButton key=\"locale-button\" />);\n }\n\n if (showSettingsButton) {\n actions.push(<LayoutSettings key=\"settings\" defaultShowFullScreen={showFullScreen} defaultShowLocaleButton={showLocaleButton} defaultShowThemeColor={showThemeColor} defaultKeepAlive={_.isBoolean(keepAlive) ? keepAlive : true} />);\n }\n\n const keepAliveProps = _.isBoolean(keepAlive) ? {} : keepAlive;\n\n const layoutContent = (\n <ProLayout\n className={classnames('creek-layout-container', _userConfig?.className)}\n route={route}\n title={_userConfig?.title}\n siderWidth={200}\n location={location}\n menuDataRender={menuDataRender}\n menuItemRender={menuItemRender}\n actionsRender={() => actions}\n token={{\n header: {\n colorBgHeader: '#fff',\n colorHeaderTitle: 'rgba(0, 0, 0, 0.80);',\n colorTextMenuSelected: colorPrimary,\n heightLayoutHeader: 48,\n },\n sider: {\n colorMenuBackground: '#f7f8fa',\n colorBgMenuItemSelected: 'transparent',\n colorTextMenuActive: colorPrimary,\n colorTextMenuSelected: colorPrimary,\n colorTextMenuItemHover: colorPrimary,\n colorTextMenu: '#333',\n },\n pageContainer: {\n paddingBlockPageContainerContent: 0,\n paddingInlinePageContainerContent: 0,\n colorBgPageContainer: 'linear-gradient(180deg, #F7F9FF 0%, #FFF 45.59%);',\n },\n }}\n fixSiderbar\n fixedHeader\n collapsed={collapsed}\n collapsedButtonRender={(collapsed) => {\n return <CollapsedButton collapsed={collapsed} />;\n }}\n {...more}\n >\n <GlobalScrollbarStyle />\n <Exception>{actualKeepAlive ? <CreekKeepAlive getTabTitle={getTabTitle} {...keepAliveProps} /> : children}</Exception>\n </ProLayout>\n );\n\n return layoutContent;\n};\n\nexport * from './Exception';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_react", "_", "classnames", "collapsed"]
|
|
7
7
|
}
|
|
@@ -9,12 +9,12 @@ export declare const useLayoutSettingsStore: import("zustand").UseBoundStore<Omi
|
|
|
9
9
|
setState(partial: LayoutSettingsStore | Partial<LayoutSettingsStore> | ((state: LayoutSettingsStore) => LayoutSettingsStore | Partial<LayoutSettingsStore>), replace?: false | undefined): unknown;
|
|
10
10
|
setState(state: LayoutSettingsStore | ((state: LayoutSettingsStore) => LayoutSettingsStore), replace: true): unknown;
|
|
11
11
|
persist: {
|
|
12
|
-
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<LayoutSettingsStore,
|
|
12
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<LayoutSettingsStore, any, unknown>>) => void;
|
|
13
13
|
clearStorage: () => void;
|
|
14
14
|
rehydrate: () => void | Promise<void>;
|
|
15
15
|
hasHydrated: () => boolean;
|
|
16
16
|
onHydrate: (fn: (state: LayoutSettingsStore) => void) => () => void;
|
|
17
17
|
onFinishHydration: (fn: (state: LayoutSettingsStore) => void) => () => void;
|
|
18
|
-
getOptions: () => Partial<import("zustand/middleware").PersistOptions<LayoutSettingsStore,
|
|
18
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<LayoutSettingsStore, any, unknown>>;
|
|
19
19
|
};
|
|
20
20
|
}>;
|
|
@@ -28,13 +28,20 @@ var useLayoutSettingsStore = (0, import_zustand.create)()(
|
|
|
28
28
|
(0, import_middleware.persist)(
|
|
29
29
|
(set) => ({
|
|
30
30
|
colorPrimary: void 0,
|
|
31
|
-
showFullScreen:
|
|
32
|
-
showLocaleButton:
|
|
33
|
-
keepAlive:
|
|
31
|
+
showFullScreen: void 0,
|
|
32
|
+
showLocaleButton: void 0,
|
|
33
|
+
keepAlive: void 0,
|
|
34
34
|
setSettings: (settings) => set((state) => ({ ...state, ...settings }))
|
|
35
35
|
}),
|
|
36
36
|
{
|
|
37
|
-
name: "creek-layout-settings"
|
|
37
|
+
name: "creek-layout-settings",
|
|
38
|
+
version: 2,
|
|
39
|
+
migrate: (persistedState, version) => {
|
|
40
|
+
if (version < 2) {
|
|
41
|
+
return { ...persistedState, showFullScreen: void 0, showLocaleButton: void 0, keepAlive: void 0 };
|
|
42
|
+
}
|
|
43
|
+
return persistedState;
|
|
44
|
+
}
|
|
38
45
|
}
|
|
39
46
|
)
|
|
40
47
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/creek-layout/useLayoutSettingsStore.ts"],
|
|
4
|
-
"sourcesContent": ["import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nexport type LayoutSettingsStore = {\n colorPrimary?: string;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n keepAlive?: boolean;\n setSettings: (settings: Partial<LayoutSettingsStore>) => void;\n};\n\nexport const useLayoutSettingsStore = create<LayoutSettingsStore>()(\n persist(\n (set) => ({\n colorPrimary: undefined,\n showFullScreen:
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,wBAAwB;AAUjB,IAAM,6BAAyB,uBAA4B;AAAA,MAChE;AAAA,IACE,CAAC,SAAS;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,aAAa,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,GAAG,SAAS,EAAE;AAAA,IACvE;AAAA,IACA;AAAA,MACE,MAAM;AAAA,
|
|
4
|
+
"sourcesContent": ["import { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nexport type LayoutSettingsStore = {\n colorPrimary?: string;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n keepAlive?: boolean;\n setSettings: (settings: Partial<LayoutSettingsStore>) => void;\n};\n\nexport const useLayoutSettingsStore = create<LayoutSettingsStore>()(\n persist(\n (set) => ({\n colorPrimary: undefined,\n showFullScreen: undefined,\n showLocaleButton: undefined,\n keepAlive: undefined,\n setSettings: (settings) => set((state) => ({ ...state, ...settings })),\n }),\n {\n name: 'creek-layout-settings',\n version: 2,\n migrate: (persistedState: any, version: number) => {\n if (version < 2) {\n // 旧版本布尔默认值为 false,新版本改为 undefined\n // 清除旧版本的布尔类型字段,让外层配置优先生效\n return { ...persistedState, showFullScreen: undefined, showLocaleButton: undefined, keepAlive: undefined };\n }\n return persistedState;\n },\n }\n )\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,wBAAwB;AAUjB,IAAM,6BAAyB,uBAA4B;AAAA,MAChE;AAAA,IACE,CAAC,SAAS;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,aAAa,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,GAAG,SAAS,EAAE;AAAA,IACvE;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,gBAAqB,YAAoB;AACjD,YAAI,UAAU,GAAG;AAGf,iBAAO,EAAE,GAAG,gBAAgB,gBAAgB,QAAW,kBAAkB,QAAW,WAAW,OAAU;AAAA,QAC3G;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -92,6 +92,11 @@ var useStyles = (0, import_antd_style.createStyles)(({ token }, options) => {
|
|
|
92
92
|
padding: token.paddingXS
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
|
+
// 树形数据展开图标样式
|
|
96
|
+
[`.${prefixCls}-table-row-expand-icon`]: {
|
|
97
|
+
marginInlineEnd: 4,
|
|
98
|
+
flexShrink: 0
|
|
99
|
+
},
|
|
95
100
|
// 如果没有 headerTitle,toolbar 展示在 headerTitle 的区域
|
|
96
101
|
[`.${prefixCls}-pro-table-list-toolbar-right`]: !hasHeaderTitle ? {
|
|
97
102
|
flex: 1
|
|
@@ -119,8 +124,19 @@ var SearchProTable = (props) => {
|
|
|
119
124
|
size,
|
|
120
125
|
headerTitle,
|
|
121
126
|
showIndex = true,
|
|
127
|
+
expandable,
|
|
122
128
|
...restProps
|
|
123
129
|
} = props;
|
|
130
|
+
const finalExpandable = (0, import_react.useMemo)(() => {
|
|
131
|
+
if (!showIndex)
|
|
132
|
+
return expandable;
|
|
133
|
+
if (!expandable)
|
|
134
|
+
return { columnPos: 1 };
|
|
135
|
+
if (expandable.columnPos === void 0) {
|
|
136
|
+
return { ...expandable, columnPos: 1 };
|
|
137
|
+
}
|
|
138
|
+
return expandable;
|
|
139
|
+
}, [expandable, showIndex]);
|
|
124
140
|
const proTableRef = (0, import_react.useRef)(null);
|
|
125
141
|
const [resizedWidths, setResizedWidths] = (0, import_ahooks.useSafeState)({});
|
|
126
142
|
const { finalOptions, tableSize, finalOptionsRender } = (0, import_hooks.useTableOptions)(options, size, optionsRender);
|
|
@@ -141,6 +157,8 @@ var SearchProTable = (props) => {
|
|
|
141
157
|
optionsRender: finalOptionsRender,
|
|
142
158
|
size: tableSize,
|
|
143
159
|
...restProps,
|
|
160
|
+
pagination,
|
|
161
|
+
expandable: finalExpandable,
|
|
144
162
|
className: (0, import_classnames.default)(styles["creek-table-container"], className),
|
|
145
163
|
columns: resizableColumns,
|
|
146
164
|
bordered,
|