Match-id-046fd79e841199a551441fa3705d3d460f564573

This commit is contained in:
* 2023-09-15 16:20:55 +08:00
commit f6b9b3079a
85 changed files with 150 additions and 206 deletions

View File

@ -16,17 +16,17 @@
'use strict'; 'use strict';
module.exports = { module.exports = {
printWidth: 120, // 一行120字符数如果超过会进行换行 printWidth: 120, // 一行120字符数如果超过会进行换行
tabWidth: 2, // tab等2个空格 tabWidth: 2, // tab等2个空格
useTabs: false, // 用空格缩进行 useTabs: false, // 用空格缩进行
semi: true, // 行尾使用分号 semi: true, // 行尾使用分号
singleQuote: true, // 字符串使用单引号 singleQuote: true, // 字符串使用单引号
quoteProps: 'as-needed', // 仅在需要时在对象属性添加引号 quoteProps: 'as-needed', // 仅在需要时在对象属性添加引号
jsxSingleQuote: false, // 在JSX中使用双引号 jsxSingleQuote: false, // 在JSX中使用双引号
trailingComma: 'es5', // 使用尾逗号(对象、数组等) trailingComma: 'es5', // 使用尾逗号(对象、数组等)
bracketSpacing: true, // 对象的括号间增加空格 bracketSpacing: true, // 对象的括号间增加空格
bracketSameLine: false, // 将多行JSX元素的>放在最后一行的末尾 bracketSameLine: false, // 将多行JSX元素的>放在最后一行的末尾
arrowParens: 'avoid', // 在唯一的arrow函数参数周围省略括号 arrowParens: 'avoid', // 在唯一的arrow函数参数周围省略括号
vueIndentScriptAndStyle: false, // 不缩进Vue文件中的<script>和<style>标记内的代码 vueIndentScriptAndStyle: false, // 不缩进Vue文件中的<script>和<style>标记内的代码
endOfLine: 'lf', // 仅限换行(\n endOfLine: 'lf', // 仅限换行(\n
}; };

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Horizon Antd</title> <title>Inula Antd</title>
<script type="module" src="/src/admin/main.jsx"></script> <script type="module" src="/src/admin/main.jsx"></script>
</head> </head>
<body></body> <body></body>

View File

@ -17,19 +17,17 @@
"classnames": "^2.2.6", "classnames": "^2.2.6",
"echarts": "^5.0.0", "echarts": "^5.0.0",
"history": "^5.3.0", "history": "^5.3.0",
"@cloudsop/horizon": "^0.0.58",
"lodash": "^4.17.11", "lodash": "^4.17.11",
"moment": "2.24.0", "moment": "2.24.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"path-to-regexp": "^6.1.0", "path-to-regexp": "^6.1.0",
"prop-types": "^15.7.0", "prop-types": "^15.7.0",
"qs": "^6.10.0", "qs": "^6.10.0",
"react-dom": "17.0.2", "inulajs": "0.0.11",
"react-draft-wysiwyg": "^1.13.0", "react-draft-wysiwyg": "^1.13.0",
"react-intl": "^6.3.2", "inula-intl": "^0.0.1",
"react-perfect-scrollbar": "^1.5.0", "react-perfect-scrollbar": "^1.5.0",
"react-router": "^6.10.0", "inula-router": "^0.0.1",
"react-router-dom": "^6.10.0",
"recharts": "^2.0.0", "recharts": "^2.0.0",
"store": "^2.0.0" "store": "^2.0.0"
}, },
@ -47,8 +45,6 @@
"@babel/preset-typescript": "^7.18.6", "@babel/preset-typescript": "^7.18.6",
"@babel/runtime": "7.18.6", "@babel/runtime": "7.18.6",
"@babel/types": "7.18.6", "@babel/types": "7.18.6",
"@types/react": "^18.0.27",
"@types/react-dom": "^18.0.10",
"@vitejs/plugin-react": "^3.1.0", "@vitejs/plugin-react": "^3.1.0",
"@vitejs/plugin-react-refresh": "^1.3.5", "@vitejs/plugin-react-refresh": "^1.3.5",
"babel-loader": "8.2.5", "babel-loader": "8.2.5",
@ -63,8 +59,6 @@
"less-vars-to-js": "^1.3.0", "less-vars-to-js": "^1.3.0",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"prettier": "^2.0.0", "prettier": "^2.0.0",
"react-router": "5.2.0",
"react-router-dom": "5.0.1",
"style-loader": "^3.2.2", "style-loader": "^3.2.2",
"ts-loader": "^9.3.1", "ts-loader": "^9.3.1",
"tsconfig-paths-webpack-plugin": "^4.0.1", "tsconfig-paths-webpack-plugin": "^4.0.1",

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { BarsOutlined, DownOutlined } from '@ant-design/icons'; import { BarsOutlined, DownOutlined } from '@ant-design/icons';
import { Dropdown, Button, Menu } from 'antd'; import { Dropdown, Button, Menu } from 'antd';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { TooltipProps } from 'antd/lib/tooltip'; import { TooltipProps } from 'antd/lib/tooltip';
export interface EllipsisTooltipProps extends TooltipProps { export interface EllipsisTooltipProps extends TooltipProps {

View File

@ -1,11 +1,8 @@
import Inula, { Component } from '@cloudsop/horizon'; import Inula, { Component } from 'inulajs';
import { Tooltip } from 'antd'; import { Tooltip } from 'antd';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './index.module.less'; import styles from './index.module.less';
/* eslint react/no-did-mount-set-state: 0 */
/* eslint no-param-reassign: 0 */
const isSupportLineClamp = document.body.style.webkitLineClamp !== undefined; const isSupportLineClamp = document.body.style.webkitLineClamp !== undefined;
const TooltipOverlayStyle = { const TooltipOverlayStyle = {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import styles from './FilterItem.module.less'; import styles from './FilterItem.module.less';

View File

@ -1,14 +1,16 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import type { InulaNode, CSSProperties, Component } from 'inulajs';
export interface GlobalFooterProps { export interface GlobalFooterProps {
links?: Array<{ links?: Array<{
key?: string; key?: string;
title: Inula.ReactNode; title: InulaNode;
href: string; href: string;
blankTarget?: boolean; blankTarget?: boolean;
}>; }>;
copyright?: Inula.ReactNode; copyright?: InulaNode;
style?: Inula.CSSProperties; style?: CSSProperties;
className?: string; className?: string;
} }
export default class GlobalFooter extends Inula.Component<GlobalFooterProps, any> {} export default class GlobalFooter extends Component<GlobalFooterProps, any> {}

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './index.module.less'; import styles from './index.module.less';

View File

@ -11,5 +11,5 @@ order: 7
| 参数 | 说明 | 类型 | 默认值 | | 参数 | 说明 | 类型 | 默认值 |
| --------- | -------- | ---------------------------------------------------------------- | ------ | | --------- | -------- | ---------------------------------------------------------------- | ------ |
| links | 链接数据 | array<{ title: ReactNode, href: string, blankTarget?: boolean }> | - | | links | 链接数据 | array<{ title: InulaNode, href: string, blankTarget?: boolean }> | - |
| copyright | 版权信息 | ReactNode | - | | copyright | 版权信息 | InulaNode | - |

View File

@ -1,13 +1,13 @@
import Inula, { Fragment } from '@cloudsop/horizon'; import Inula, { Fragment } from 'inulajs';
import { Breadcrumb } from 'antd'; import { Breadcrumb } from 'antd';
import { Link } from 'react-router-dom'; import { Link } from 'inula-router';
import { t } from 'utils/intl'; import { t } from 'utils/intl';
import iconMap from 'utils/iconMap'; import iconMap from 'utils/iconMap';
import { pathToRegexp } from 'path-to-regexp'; import { pathToRegexp } from 'path-to-regexp';
import { queryAncestors } from 'utils'; import { queryAncestors } from 'utils';
import styles from './Bread.module.less'; import styles from './Bread.module.less';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
function Bread({ routeList, history }) { function Bread({ routeList, history }) {
const generateBreadcrumbs = paths => { const generateBreadcrumbs = paths => {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Menu, Layout } from 'antd'; import { Menu, Layout } from 'antd';
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'; import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
import { Trans } from 'utils/intl'; import { Trans } from 'utils/intl';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Switch, Layout } from 'antd'; import { Switch, Layout } from 'antd';
import { t } from 'utils/intl'; import { t } from 'utils/intl';
import { Trans } from 'utils/intl'; import { Trans } from 'utils/intl';

View File

@ -1,13 +1,11 @@
import Inula, { useState, Fragment } from '@cloudsop/horizon'; import Inula, { useState, Fragment } from 'inulajs';
import PropTypes from 'prop-types';
import { Menu } from 'antd'; import { Menu } from 'antd';
import { NavLink } from 'react-router-dom'; import { NavLink, withRouter } from 'inula-router';
import { pathToRegexp } from 'path-to-regexp'; import { pathToRegexp } from 'path-to-regexp';
import { arrayToTree, queryAncestors } from '../../utils'; import { arrayToTree, queryAncestors } from '../../utils';
import iconMap from '../../utils/iconMap'; import iconMap from '../../utils/iconMap';
import store from 'store'; import store from 'store';
import { getStore } from '../../models/app-model'; import { getStore } from '../../models/app-model';
import { withRouter } from 'react-router-dom';
const { SubMenu } = Menu; const { SubMenu } = Menu;

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './Loader.module.less'; import styles from './Loader.module.less';

View File

@ -1,4 +1,4 @@
import Inula, { Component } from '@cloudsop/horizon'; import Inula, { Component } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import Loader from '../Loader'; import Loader from '../Loader';

View File

@ -1,10 +1,10 @@
import Inula, { Fragment } from '@cloudsop/horizon'; import Inula, { Fragment } from 'inulajs';
import { queryLayout } from 'utils'; import { queryLayout } from 'utils';
import config from 'utils/config'; import config from 'utils/config';
import PublicLayout from './PublicLayout'; import PublicLayout from './PublicLayout';
import PrimaryLayout from './PrimaryLayout'; import PrimaryLayout from './PrimaryLayout';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
import './BaseLayout.less'; import './BaseLayout.less';
const LayoutMap = { const LayoutMap = {

View File

@ -1,4 +1,4 @@
import Inula, { useEffect, Fragment } from '@cloudsop/horizon'; import Inula, { useEffect, Fragment } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { MyLayout, GlobalFooter } from '../components'; import { MyLayout, GlobalFooter } from '../components';
import { BackTop, Layout, Drawer } from 'antd'; import { BackTop, Layout, Drawer } from 'antd';
@ -10,7 +10,7 @@ import Error from '../pages/404';
import styles from './PrimaryLayout.module.less'; import styles from './PrimaryLayout.module.less';
import store from 'store'; import store from 'store';
import { getStore } from '../models/app-model'; import { getStore } from '../models/app-model';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
const { Content } = Layout; const { Content } = Layout;
const { Header, Bread, Sider } = MyLayout; const { Header, Bread, Sider } = MyLayout;

View File

@ -1,9 +1,9 @@
import Inula, { Suspense } from '@cloudsop/horizon'; import Inula, { Suspense } from 'inulajs';
import { ConfigProvider } from 'antd'; import { ConfigProvider } from 'antd';
import { IntlProvider } from 'react-intl'; import { IntlProvider } from 'inula-intl';
import { getLocale } from '../utils'; import { getLocale } from '../utils';
import BaseLayout from './BaseLayout'; import BaseLayout from './BaseLayout';
import { Route, withRouter } from 'react-router-dom'; import { Route, withRouter } from 'inula-router';
import { getRoutes } from '../pages/routes'; import { getRoutes } from '../pages/routes';
import { getLangResource } from '../utils/intl'; import { getLangResource } from '../utils/intl';

View File

@ -1,5 +1,5 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { BrowserRouter } from 'react-router-dom'; import { BrowserRouter } from 'inula-router';
import config from './utils/config'; import config from './utils/config';
import 'antd/dist/antd.css'; import 'antd/dist/antd.css';

View File

@ -5,7 +5,7 @@ import api from '../services';
// @ts-ignore // @ts-ignore
const { queryRouteList, queryUserInfo } = api; const { queryRouteList, queryUserInfo } = api;
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const goDashboard = history => { const goDashboard = history => {
if (pathToRegexp(['/', '/login']).exec(window.location.pathname)) { if (pathToRegexp(['/', '/login']).exec(window.location.pathname)) {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { FrownOutlined } from '@ant-design/icons'; import { FrownOutlined } from '@ant-design/icons';
import { Page } from 'components'; import { Page } from 'components';
import styles from './404.module.less'; import styles from './404.module.less';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Card } from 'antd'; import { Card } from 'antd';
import iconMap from 'utils/iconMap'; import iconMap from 'utils/iconMap';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import styles from './quote.module.less'; import styles from './quote.module.less';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import Color from '../../../utils/theme'; import Color from '../../../utils/theme';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Spin } from 'antd'; import { Spin } from 'antd';
import styles from './weather.module.less'; import styles from './weather.module.less';

View File

@ -1,4 +1,4 @@
import Inula, { useEffect } from '@cloudsop/horizon'; import Inula, { useEffect } from 'inulajs';
import { Row, Col, Card } from 'antd'; import { Row, Col, Card } from 'antd';
import Color from '../../utils/theme'; import Color from '../../utils/theme';
import { Page, ScrollBar } from '../../components'; import { Page, ScrollBar } from '../../components';

View File

@ -1,6 +1,6 @@
import { parse } from 'qs'; import { parse } from 'qs';
import api from '../../services'; import api from '../../services';
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const { queryDashboard, queryWeather } = api; const { queryDashboard, queryWeather } = api;
const avatar = '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236.jpeg'; const avatar = '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236.jpeg';

View File

@ -1,8 +1,8 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Redirect } from 'react-router-dom'; import { Redirect } from 'inula-router';
function Index() { function Index() {
return <Redirect to={`/dashboard`} />; return <Redirect to={'/dashboard'} />;
} }
export default Index; export default Index;

View File

@ -1,4 +1,4 @@
import Inula, { lazy } from '@cloudsop/horizon'; import Inula, { lazy } from 'inulajs';
export function getRoutes() { export function getRoutes() {
const routes = [ const routes = [

View File

@ -1,4 +1,4 @@
import Inula, { useRef } from '@cloudsop/horizon'; import Inula, { useRef } from 'inulajs';
import moment from 'moment'; import moment from 'moment';
import { FilterItem } from 'components'; import { FilterItem } from 'components';
import { Button, Row, Col, DatePicker, Form, Input, Cascader } from 'antd'; import { Button, Row, Col, DatePicker, Form, Input, Cascader } from 'antd';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Table, Modal } from 'antd'; import { Table, Modal } from 'antd';
import { DropOption } from 'components'; import { DropOption } from 'components';
import { t } from 'utils/intl'; import { t } from 'utils/intl';

View File

@ -1,4 +1,4 @@
import Inula, { useRef } from '@cloudsop/horizon'; import Inula, { useRef } from 'inulajs';
import { Form, Input, InputNumber, Radio, Modal, Cascader } from 'antd'; import { Form, Input, InputNumber, Radio, Modal, Cascader } from 'antd';
import { t, Trans } from 'utils/intl'; import { t, Trans } from 'utils/intl';
import city from 'utils/city'; import city from 'utils/city';

View File

@ -1,4 +1,4 @@
import Inula, { PureComponent } from '@cloudsop/horizon'; import Inula, { PureComponent } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Page } from 'components'; import { Page } from 'components';
import styles from './index.module.less'; import styles from './index.module.less';

View File

@ -1,4 +1,4 @@
import Inula, { useEffect } from '@cloudsop/horizon'; import Inula, { useEffect } from 'inulajs';
import { Row, Col, Button, Popconfirm } from 'antd'; import { Row, Col, Button, Popconfirm } from 'antd';
import { Page } from '../../components'; import { Page } from '../../components';
import { stringify } from 'qs'; import { stringify } from 'qs';

View File

@ -1,5 +1,5 @@
import api from '../../services'; import api from '../../services';
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const { queryUserList, createUser, removeUser, updateUser, removeUserList } = api; const { queryUserList, createUser, removeUser, updateUser, removeUserList } = api;

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { import {
PayCircleOutlined, PayCircleOutlined,
ShoppingCartOutlined, ShoppingCartOutlined,

View File

@ -2,8 +2,8 @@
* 国际化支持按需加载 * 国际化支持按需加载
*/ */
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { createIntl, createIntlCache, FormattedMessage } from 'react-intl'; import { createIntl, createIntlCache, FormattedMessage } from 'inula-intl';
import zhCN from 'antd/lib/locale-provider/zh_CN'; import zhCN from 'antd/lib/locale-provider/zh_CN';
import enUS from 'antd/lib/locale-provider/en_US'; import enUS from 'antd/lib/locale-provider/en_US';
import ptBR from 'antd/lib/locale-provider/pt_BR'; import ptBR from 'antd/lib/locale-provider/pt_BR';

View File

@ -11,9 +11,9 @@ let alias = {
config: path.resolve('src/admin/utils/config'), config: path.resolve('src/admin/utils/config'),
themes: path.resolve('src/admin/themes'), themes: path.resolve('src/admin/themes'),
utils: path.resolve('src/admin/utils'), utils: path.resolve('src/admin/utils'),
react: '@cloudsop/horizon', // 新增 react: 'inulajs', // 新增
'react-dom': '@cloudsop/horizon', // 新增 'react-dom': 'inulajs', // 新增
'react/jsx-dev-runtime': '@cloudsop/horizon/jsx-dev-runtime', 'react/jsx-dev-runtime': 'inulajs/jsx-dev-runtime',
}; };
// https://vitejs.dev/config/ // https://vitejs.dev/config/
@ -23,11 +23,11 @@ export default defineConfig({
babel: { babel: {
plugins: [ plugins: [
[ [
"@babel/plugin-transform-react-jsx", '@babel/plugin-transform-react-jsx',
{ {
"runtime": "automatic", // 新增 runtime: 'automatic', // 新增
"importSource": "@cloudsop/horizon" // 新增 importSource: 'inulajs', // 新增
} },
], ],
'@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-class-properties',
'@babel/plugin-syntax-dynamic-import', '@babel/plugin-syntax-dynamic-import',

View File

@ -1,45 +0,0 @@
[inula-antd](https://codehub-y.huawei.com/c00486778/horizon-antd/files?ref=master)项目是借鉴[AntD Admin](https://github.com/zuiidea/antd-admin)的一个中控台项目。主要特点是使用了[horizon](https://open.codehub.huawei.com/innersource/shanhai/wutong/horizon/horizon-core/wiki/view/doc/695491)框架并且使用HorizonX实现状态管理。
界面如:
![inula-antd1](http://image.huawei.com/tiny-lts/v1/images/5b32eb56b2162b5e02f6306bf6f6e09d_1913x903.gif@900-0-90-f.gif)
## 代码特点:
1、使用了`horizon`开发框架兼容React的所有接口。
2、使用`函数式组件`进行开发。
3、使用TS语言待完成
4、使用了`horizonX的状态管理`能力每个page都会有一个store这样可以保证每个store体积较小使用方便性能也更好一些。
5、使用了`React-router-dom`作为路由利用Lazy动态加载组件。
6、使用`less`书写css。
7、封装了request请求。
8、使用`react-intl`实现国际化。
9、支持换肤能力。
10、使用了antd 作为组件、使用了Echart、HighCharts、ReChart绘制多种图形。
11、提供简单易用的`数据mock`能力并使用mockjs进行数据mock。
## 工程特点:
1、支持热部署。
2、支持source-map调试。
3、提供babel.config.js、.editorconfig、.prettierrc.js、.eslintrc.js 等常用配置。
## 使用方式:
1、克隆ssh://git@codehub-dg-y.huawei.com:2222/c00486778/horizon-antd.git
2、执行 `npm i -f` 如果@cloudsop/horizon无法下载请在`.npmrc`配置 @cloudsop:registry=https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm
3、执行 `npm run dev:admin`

View File

@ -12,7 +12,7 @@ module.exports = {
'@babel/preset-react', '@babel/preset-react',
{ {
runtime: 'automatic', // 新增 runtime: 'automatic', // 新增
importSource: '@cloudsop/horizon', // 新增 importSource: 'inulajs', // 新增
}, },
], ],
], ],

View File

@ -1,5 +1,5 @@
{ {
"name": "horizon-antd-fun", "name": "inulajs-antd-fun",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
@ -17,8 +17,6 @@
"@babel/preset-typescript": "^7.18.6", "@babel/preset-typescript": "^7.18.6",
"@babel/runtime": "7.18.6", "@babel/runtime": "7.18.6",
"@babel/types": "7.18.6", "@babel/types": "7.18.6",
"@types/react": "16.8.6",
"@types/react-dom": "16.9.6",
"babel-loader": "^9.0.0", "babel-loader": "^9.0.0",
"clean-webpack-plugin": "4.0.0", "clean-webpack-plugin": "4.0.0",
"css-loader": "^4.3.0", "css-loader": "^4.3.0",
@ -42,7 +40,7 @@
"dependencies": { "dependencies": {
"@ant-design/icons": "^5.1.4", "@ant-design/icons": "^5.1.4",
"@babel/plugin-proposal-export-default-from": "^7.18.6", "@babel/plugin-proposal-export-default-from": "^7.18.6",
"@cloudsop/horizon": "^0.0.58", "inulajs": "^0.0.8",
"antd": "^4.0.0", "antd": "^4.0.0",
"axios": "^1.4.0", "axios": "^1.4.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
@ -54,10 +52,9 @@
"path-to-regexp": "^6.1.0", "path-to-regexp": "^6.1.0",
"prop-types": "^15.7.0", "prop-types": "^15.7.0",
"qs": "^6.10.0", "qs": "^6.10.0",
"react-intl": "^6.4.4", "inula-intl": "^0.0.1",
"inula-router": "^0.0.1",
"react-perfect-scrollbar": "^1.5.0", "react-perfect-scrollbar": "^1.5.0",
"react-router": "^6.12.1",
"react-router-dom": "^5.0.0",
"recharts": "^2.0.0", "recharts": "^2.0.0",
"redux": "^4.2.1", "redux": "^4.2.1",
"redux-thunk": "^2.4.2", "redux-thunk": "^2.4.2",

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { TooltipProps } from 'antd/lib/tooltip'; import { TooltipProps } from 'antd/lib/tooltip';
export interface EllipsisTooltipProps extends TooltipProps { export interface EllipsisTooltipProps extends TooltipProps {

View File

@ -1,4 +1,4 @@
import Inula, { Component } from '@cloudsop/horizon'; import Inula, { Component } from 'inulajs';
import { Tooltip } from 'antd'; import { Tooltip } from 'antd';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './index.less'; import styles from './index.less';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import styles from './FilterItem.less'; import styles from './FilterItem.less';

View File

@ -1,14 +1,15 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import type { InulaNode, CSSProperties, Component } from 'inulajs';
export interface GlobalFooterProps { export interface GlobalFooterProps {
links?: Array<{ links?: Array<{
key?: string; key?: string;
title: Inula.ReactNode; title: InulaNode;
href: string; href: string;
blankTarget?: boolean; blankTarget?: boolean;
}>; }>;
copyright?: Inula.InulaNode; copyright?: InulaNode;
style?: Inula.CSSProperties; style?: CSSProperties;
className?: string; className?: string;
} }
export default class GlobalFooter extends Inula.Component<GlobalFooterProps, any> {} export default class GlobalFooter extends Component<GlobalFooterProps, any> {}

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './index.less'; import styles from './index.less';

View File

@ -11,5 +11,5 @@ order: 7
| 参数 | 说明 | 类型 | 默认值 | | 参数 | 说明 | 类型 | 默认值 |
| --------- | -------- | ---------------------------------------------------------------- | ------ | | --------- | -------- | ---------------------------------------------------------------- | ------ |
| links | 链接数据 | array<{ title: ReactNode, href: string, blankTarget?: boolean }> | - | | links | 链接数据 | array<{ title: InulaNode, href: string, blankTarget?: boolean }> | - |
| copyright | 版权信息 | ReactNode | - | | copyright | 版权信息 | InulaNode | - |

View File

@ -1,13 +1,13 @@
import Inula, { Fragment } from '@cloudsop/horizon'; import Inula, { Fragment } from 'inulajs';
import { Breadcrumb } from 'antd'; import { Breadcrumb } from 'antd';
import { Link } from 'react-router-dom'; import { Link } from 'inula-router';
import { t } from 'utils/intl'; import { t } from 'utils/intl';
import iconMap from 'utils/iconMap'; import iconMap from 'utils/iconMap';
const { pathToRegexp } = require('path-to-regexp'); const { pathToRegexp } = require('path-to-regexp');
import { queryAncestors } from 'utils'; import { queryAncestors } from 'utils';
import styles from './Bread.less'; import styles from './Bread.less';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
function Bread({ routeList, history }) { function Bread({ routeList, history }) {
const generateBreadcrumbs = paths => { const generateBreadcrumbs = paths => {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Menu, Layout } from 'antd'; import { Menu, Layout } from 'antd';
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'; import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
import { Trans } from 'utils/intl'; import { Trans } from 'utils/intl';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Switch, Layout } from 'antd'; import { Switch, Layout } from 'antd';
import { t } from 'utils/intl'; import { t } from 'utils/intl';
import { Trans } from 'utils/intl'; import { Trans } from 'utils/intl';

View File

@ -1,13 +1,13 @@
import Inula, { useState, Fragment } from '@cloudsop/horizon'; import Inula, { useState, Fragment } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Menu } from 'antd'; import { Menu } from 'antd';
import { NavLink } from 'react-router-dom'; import { NavLink } from 'inula-router';
import { pathToRegexp } from 'path-to-regexp'; import { pathToRegexp } from 'path-to-regexp';
import { arrayToTree, queryAncestors } from '../../utils'; import { arrayToTree, queryAncestors } from '../../utils';
import iconMap from '../../utils/iconMap'; import iconMap from '../../utils/iconMap';
import store from 'store'; import store from 'store';
import { getStore } from '../../models/app-model'; import { getStore } from '../../models/app-model';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
const { SubMenu } = Menu; const { SubMenu } = Menu;

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './Loader.less'; import styles from './Loader.less';

View File

@ -1,4 +1,4 @@
import Inula, { Component } from '@cloudsop/horizon'; import Inula, { Component } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import Loader from '../Loader'; import Loader from '../Loader';

View File

@ -1,5 +1,5 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { BrowserRouter } from 'react-router-dom'; import { BrowserRouter } from 'inula-router';
import config from './utils/config'; import config from './utils/config';
import 'antd/dist/antd.css'; import 'antd/dist/antd.css';

View File

@ -1,10 +1,10 @@
import Inula, { Fragment } from '@cloudsop/horizon'; import Inula, { Fragment } from 'inulajs';
import { queryLayout } from 'utils'; import { queryLayout } from 'utils';
import config from 'utils/config'; import config from 'utils/config';
import PublicLayout from './PublicLayout'; import PublicLayout from './PublicLayout';
import PrimaryLayout from './PrimaryLayout'; import PrimaryLayout from './PrimaryLayout';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
import './BaseLayout.less'; import './BaseLayout.less';
const LayoutMap = { const LayoutMap = {

View File

@ -1,4 +1,4 @@
import Inula, { useEffect, Fragment } from '@cloudsop/horizon'; import Inula, { useEffect, Fragment } from 'inulajs';
import { MyLayout, GlobalFooter } from '../components'; import { MyLayout, GlobalFooter } from '../components';
import { BackTop, Layout } from 'antd'; import { BackTop, Layout } from 'antd';
import { pathToRegexp } from 'path-to-regexp'; import { pathToRegexp } from 'path-to-regexp';
@ -8,7 +8,7 @@ import Error from '../pages/404';
import styles from './PrimaryLayout.less'; import styles from './PrimaryLayout.less';
import store from 'store'; import store from 'store';
import { getStore } from '../models/app-model'; import { getStore } from '../models/app-model';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'inula-router';
const { Content } = Layout; const { Content } = Layout;
const { Header, Bread, Sider } = MyLayout; const { Header, Bread, Sider } = MyLayout;

View File

@ -1,9 +1,9 @@
import Inula, { Suspense } from '@cloudsop/horizon'; import Inula, { Suspense } from 'inulajs';
import { ConfigProvider } from 'antd'; import { ConfigProvider } from 'antd';
import { IntlProvider } from 'react-intl'; import { IntlProvider } from 'inula-intl';
import { getLocale } from '../utils'; import { getLocale } from '../utils';
import BaseLayout from './BaseLayout'; import BaseLayout from './BaseLayout';
import { Route, withRouter } from 'react-router-dom'; import { Route, withRouter } from 'inula-router';
import { getRoutes } from '../pages/routes'; import { getRoutes } from '../pages/routes';
import { getLangResource } from '../utils/intl'; import { getLangResource } from '../utils/intl';

View File

@ -5,7 +5,7 @@ import api from '../services';
// @ts-ignore // @ts-ignore
const { queryRouteList, logoutUser, queryUserInfo } = api; const { queryRouteList, logoutUser, queryUserInfo } = api;
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const goDashboard = history => { const goDashboard = history => {
if (pathToRegexp(['/', '/login']).exec(window.location.pathname)) { if (pathToRegexp(['/', '/login']).exec(window.location.pathname)) {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { FrownOutlined } from '@ant-design/icons'; import { FrownOutlined } from '@ant-design/icons';
import { Page } from 'components'; import { Page } from 'components';
import styles from './404.less'; import styles from './404.less';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Card } from 'antd'; import { Card } from 'antd';
import iconMap from 'utils/iconMap'; import iconMap from 'utils/iconMap';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import styles from './quote.less'; import styles from './quote.less';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import { Color } from 'utils'; import { Color } from 'utils';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Spin } from 'antd'; import { Spin } from 'antd';
import styles from './weather.less'; import styles from './weather.less';

View File

@ -1,4 +1,4 @@
import Inula, { useEffect } from '@cloudsop/horizon'; import Inula, { useEffect } from 'inulajs';
import { Row, Col, Card } from 'antd'; import { Row, Col, Card } from 'antd';
import { Color } from '../../utils'; import { Color } from '../../utils';
import { Page, ScrollBar } from '../../components'; import { Page, ScrollBar } from '../../components';

View File

@ -1,6 +1,6 @@
import { parse } from 'qs'; import { parse } from 'qs';
import api from '../../services'; import api from '../../services';
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const { queryDashboard, queryWeather } = api; const { queryDashboard, queryWeather } = api;
const avatar = '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236.jpeg'; const avatar = '//cdn.antd-admin.zuiidea.com/bc442cf0cc6f7940dcc567e465048d1a8d634493198c4-sPx5BR_fw236.jpeg';

View File

@ -1,8 +1,8 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Redirect } from 'react-router-dom'; import { Redirect } from 'inula-router';
function Index() { function Index() {
return <Redirect to={`/dashboard`} />; return <Redirect to={'/dashboard'} />;
} }
export default Index; export default Index;

View File

@ -1,4 +1,4 @@
import Inula, { lazy } from '@cloudsop/horizon'; import Inula, { lazy } from 'inulajs';
export function getRoutes() { export function getRoutes() {
const routes = [ const routes = [

View File

@ -1,4 +1,4 @@
import Inula, { useRef } from '@cloudsop/horizon'; import Inula, { useRef } from 'inulajs';
import moment from 'moment'; import moment from 'moment';
import { FilterItem } from 'components'; import { FilterItem } from 'components';
import { Button, Row, Col, DatePicker, Form, Input, Cascader } from 'antd'; import { Button, Row, Col, DatePicker, Form, Input, Cascader } from 'antd';

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { Table, Modal } from 'antd'; import { Table, Modal } from 'antd';
import { DropOption } from 'components'; import { DropOption } from 'components';
import { t } from 'utils/intl'; import { t } from 'utils/intl';

View File

@ -1,4 +1,4 @@
import Inula, { useRef } from '@cloudsop/horizon'; import Inula, { useRef } from 'inulajs';
import { Form, Input, InputNumber, Radio, Modal, Cascader } from 'antd'; import { Form, Input, InputNumber, Radio, Modal, Cascader } from 'antd';
import { t, Trans } from 'utils/intl'; import { t, Trans } from 'utils/intl';
import city from 'utils/city'; import city from 'utils/city';

View File

@ -1,4 +1,4 @@
import Inula, { PureComponent } from '@cloudsop/horizon'; import Inula, { PureComponent } from 'inulajs';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Page } from 'components'; import { Page } from 'components';
import styles from './index.less'; import styles from './index.less';

View File

@ -1,4 +1,4 @@
import Inula, { useEffect } from '@cloudsop/horizon'; import Inula, { useEffect } from 'inulajs';
import { Row, Col, Button, Popconfirm } from 'antd'; import { Row, Col, Button, Popconfirm } from 'antd';
import { Page } from '../../components'; import { Page } from '../../components';
import { stringify } from 'qs'; import { stringify } from 'qs';

View File

@ -1,5 +1,5 @@
import api from '../../services'; import api from '../../services';
import { createStore } from '@cloudsop/horizon'; import { createStore } from 'inulajs';
const { queryUserList, createUser, removeUser, updateUser, removeUserList } = api; const { queryUserList, createUser, removeUser, updateUser, removeUserList } = api;

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { import {
PayCircleOutlined, PayCircleOutlined,
ShoppingCartOutlined, ShoppingCartOutlined,

View File

@ -2,8 +2,8 @@
* 国际化支持按需加载 * 国际化支持按需加载
*/ */
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import { createIntl, createIntlCache, FormattedMessage } from 'react-intl'; import { createIntl, createIntlCache, FormattedMessage } from 'inula-intl';
import zhCN from 'antd/lib/locale-provider/zh_CN'; import zhCN from 'antd/lib/locale-provider/zh_CN';
import enUS from 'antd/lib/locale-provider/en_US'; import enUS from 'antd/lib/locale-provider/en_US';
import ptBR from 'antd/lib/locale-provider/pt_BR'; import ptBR from 'antd/lib/locale-provider/pt_BR';

View File

@ -14,8 +14,8 @@ module.exports = {
themes: path.resolve('src/themes'), themes: path.resolve('src/themes'),
utils: path.resolve('src/utils'), utils: path.resolve('src/utils'),
react: '@cloudsop/horizon', // 新增 react: 'inulajs', // 新增
'react-dom': '@cloudsop/horizon', // 新增 'react-dom': 'inulajs', // 新增
}, },
}, },
rules: [ rules: [

View File

@ -1,5 +1,5 @@
{ {
"name": "horizon-vite-app", "name": "inula-vite-app",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
@ -11,7 +11,7 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@cloudsop/horizon": "^0.0.58" "inulajs": "^0.0.11"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.21.4", "@babel/core": "^7.21.4",

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import './index.css'; import './index.css';
function App() { function App() {
@ -19,7 +19,7 @@ function App() {
<h2>了解更多</h2> <h2>了解更多</h2>
<p> <p>
要了解 Inula查看{' '} 要了解 Inula查看{' '}
<a href="https://inulajs.org" target="_blank">Inula 官网</a> <a href="https://openinula.com/" target="_blank">Inula 官网</a>
</p> </p>
</div> </div>
</div> </div>

View File

@ -1,9 +1,9 @@
import react from '@vitejs/plugin-react'; import react from '@vitejs/plugin-react';
let alias = { let alias = {
react: '@cloudsop/horizon', // 新增 react: 'inulajs', // 新增
'react-dom': '@cloudsop/horizon', // 新增 'react-dom': 'inulajs', // 新增
'react/jsx-dev-runtime': '@cloudsop/horizon/jsx-dev-runtime', 'react/jsx-dev-runtime': 'inulajs/jsx-dev-runtime',
}; };
export default { export default {

View File

@ -1,5 +1,5 @@
{ {
"name": "horizon-webpack-app", "name": "inula-webpack-app",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
@ -10,7 +10,7 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@cloudsop/horizon": "^0.0.58" "inulajs": "^0.0.11"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.21.4", "@babel/core": "^7.21.4",

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import './styles.css'; import './styles.css';
class App extends Inula.Component { class App extends Inula.Component {

View File

@ -1,4 +1,4 @@
import Inula from '@cloudsop/horizon'; import Inula from 'inulajs';
import App from './App'; import App from './App';
Inula.render(<App />, document.getElementById('root')); Inula.render(<App />, document.getElementById('root'));

View File

@ -21,7 +21,7 @@ module.exports = {
'@babel/preset-react', '@babel/preset-react',
{ {
runtime: 'automatic', // 新增 runtime: 'automatic', // 新增
importSource: '@cloudsop/horizon', // 新增 importSource: 'inulajs', // 新增
}, },
], ],
], ],

View File

@ -1,5 +1,5 @@
{ {
"name": "@cloudsop/create-horizon", "name": "create-inula",
"version": "1.0.22", "version": "1.0.22",
"description": "", "description": "",
"main": "index.js", "main": "index.js",