├── .commitlintrc.js ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .prettierrc.js ├── .stylelintignore ├── .stylelintrc.js ├── CHANGELOG.md ├── README.md ├── blocks ├── ActionTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── CustomList.tsx │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── util.tsx │ └── tsconfig.json ├── AdvancedDetail │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── BasicDetail │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── BasicForm │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── BasicList │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── CardList │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── ClassifiedForm │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── DialogForm │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── DialogTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── DialogOperation.tsx │ │ ├── EmptyBlock.tsx │ │ ├── ExceptionBlock.tsx │ │ ├── Operation.tsx │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── ExpandTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FailDetail │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FilterTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── EmptyBlock.tsx │ │ ├── ExceptionBlock.tsx │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FlowForm │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── Forbidden │ ├── README.md │ ├── package.json │ ├── src │ │ ├── components │ │ │ └── Exception │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ └── index.tsx │ └── tsconfig.json ├── FourColumnForm │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── FusionCardAreaChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── mock.js │ └── tsconfig.json ├── FusionCardBarChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── mock.js │ └── tsconfig.json ├── FusionCardCrossPieChart │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── FusionCardGroupBarChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FusionCardLineChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── mock.js │ └── tsconfig.json ├── FusionCardPieChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FusionCardRankChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── FusionCardTypebarChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── mock.js │ └── tsconfig.json ├── FusionCardWorldmapChart │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ ├── mock.js │ │ └── world.geo.js │ └── tsconfig.json ├── GroupForm │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── HierarchicalForm │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── LoginBlock │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── utils.tsx │ └── tsconfig.json ├── MergeCellTable │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── MonitorBlock │ ├── README.md │ ├── package.json │ ├── src │ │ ├── components │ │ │ ├── CardAreaChart │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── mock.js │ │ │ ├── CardPieChart │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── TrendChart │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── VisitBlock │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ └── WebInfoBlock │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ └── mock.js │ └── tsconfig.json ├── MultiColFilterTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── EmptyBlock.tsx │ │ ├── ExceptionBlock.tsx │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── MultiTreeTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── DialogEdit.tsx │ │ ├── EmptyBlock.tsx │ │ ├── ExceptionBlock.tsx │ │ ├── index.module.css │ │ ├── index.tsx │ │ ├── mock.ts │ │ └── types.ts │ └── tsconfig.json ├── NotFound │ ├── README.md │ ├── package.json │ ├── src │ │ ├── components │ │ │ └── Exception │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ └── index.tsx │ └── tsconfig.json ├── PageHeader │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── RegisterBlock │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── utils.tsx │ └── tsconfig.json ├── ServerError │ ├── README.md │ ├── package.json │ ├── src │ │ ├── components │ │ │ └── Exception │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ └── index.tsx │ └── tsconfig.json ├── SettingPersonBlock │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── SettingSystemBlock │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── SingleColFilterTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── SingleTreeTable │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── StepForm │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── SuccessDetail │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ ├── index.tsx │ │ └── utils.tsx │ └── tsconfig.json ├── TableList │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.module.css │ │ └── index.tsx │ └── tsconfig.json ├── ThreeColumnForm │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json ├── TwoColumnForm │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.tsx │ └── tsconfig.json └── WorkTable │ ├── README.md │ ├── package.json │ ├── src │ ├── index.module.css │ ├── index.tsx │ └── mock.js │ └── tsconfig.json ├── build.block.json ├── components ├── anchor │ ├── README.md │ ├── _gitignore │ ├── abc.json │ ├── adaptor │ │ └── index.js │ ├── build.json │ ├── demo │ │ ├── active.md │ │ ├── nohash.md │ │ └── usage.md │ ├── jest.config.js │ ├── package.json │ └── src │ │ ├── index.jsx │ │ ├── link.jsx │ │ └── main.scss ├── container │ └── package.json ├── dynamic-icon │ └── package.json ├── foundation-symbol │ └── package.json ├── img │ └── package.json ├── qrcode │ └── package.json └── title │ └── package.json ├── package.json ├── scaffolds ├── fusion-design-pro-js │ ├── .template │ │ └── scaffold.json │ ├── .vscode │ │ └── extensions.json │ ├── README.md │ ├── _editorconfig │ ├── _eslintignore │ ├── _eslintrc.js │ ├── _gitignore │ ├── _prettierignore │ ├── _prettierrc.js │ ├── _stylelintignore │ ├── _stylelintrc.js │ ├── build.json │ ├── jsconfig.json │ ├── mock │ │ └── index.js │ ├── package.json │ ├── public │ │ ├── favicon.png │ │ └── index.html │ ├── src │ │ ├── app.jsx │ │ ├── components │ │ │ ├── LocaleProvider │ │ │ │ └── index.jsx │ │ │ └── PageHeader │ │ │ │ ├── index.jsx │ │ │ │ └── index.module.css │ │ ├── global.css │ │ ├── layouts │ │ │ ├── BasicLayout │ │ │ │ ├── components │ │ │ │ │ ├── Footer │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── GlobalSearch │ │ │ │ │ │ └── index.jsx │ │ │ │ │ ├── HeaderAvatar │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── Logo │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── Notice │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── PageNav │ │ │ │ │ │ └── index.jsx │ │ │ │ │ └── SolutionLink │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ ├── index.jsx │ │ │ │ └── menuConfig.js │ │ │ └── UserLayout │ │ │ │ ├── index.jsx │ │ │ │ └── index.module.css │ │ ├── locales │ │ │ ├── en-US │ │ │ │ └── index.js │ │ │ └── zh-CN │ │ │ │ └── index.js │ │ ├── models │ │ │ └── user.js │ │ ├── pages │ │ │ ├── Advanced │ │ │ │ ├── components │ │ │ │ │ └── AdvancedDetailHead │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── Analysis │ │ │ │ ├── components │ │ │ │ │ ├── FusionCardAreaChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardBarChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardGroupBarChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── FusionCardLineChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardPieChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ ├── FusionCardRankChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ │ └── FusionCardTypebarChart │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── mock.js │ │ │ │ └── index.jsx │ │ │ ├── BasicDetailPage │ │ │ │ ├── components │ │ │ │ │ └── BasicDetail │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── BasicListPage │ │ │ │ ├── components │ │ │ │ │ └── BasicList │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── CardListPage │ │ │ │ ├── components │ │ │ │ │ └── CardList │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FeedbackFail │ │ │ │ ├── components │ │ │ │ │ └── FailDetail │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FeedbackForbidden │ │ │ │ ├── components │ │ │ │ │ └── Forbidden │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ │ └── index.module.css │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FeedbackNotFound │ │ │ │ ├── components │ │ │ │ │ └── NotFound │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ │ └── index.module.css │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FeedbackServerError │ │ │ │ ├── components │ │ │ │ │ └── ServerError │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ │ └── index.module.css │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FeedbackSuccess │ │ │ │ ├── components │ │ │ │ │ └── SuccessDetail │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── utils.jsx │ │ │ │ └── index.jsx │ │ │ ├── FlowGroup │ │ │ │ ├── components │ │ │ │ │ └── FlowForm │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FormBasic │ │ │ │ ├── components │ │ │ │ │ └── BasicForm │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FormClassified │ │ │ │ ├── components │ │ │ │ │ └── ClassifiedForm │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FormFour │ │ │ │ ├── components │ │ │ │ │ └── FourColumnForm │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FormGroup │ │ │ │ ├── components │ │ │ │ │ └── GroupForm │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FormHierarchical │ │ │ │ ├── components │ │ │ │ │ └── HierarchicalForm │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FormStep │ │ │ │ ├── components │ │ │ │ │ └── StepForm │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FormThree │ │ │ │ ├── components │ │ │ │ │ └── ThreeColumnForm │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FormTwo │ │ │ │ ├── components │ │ │ │ │ └── TwoColumnForm │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FusionActionTable │ │ │ │ ├── components │ │ │ │ │ └── ActionTable │ │ │ │ │ │ ├── CustomList.jsx │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── util.jsx │ │ │ │ └── index.jsx │ │ │ ├── FusionDialogTable │ │ │ │ ├── components │ │ │ │ │ └── DialogTable │ │ │ │ │ │ ├── DialogOperation.jsx │ │ │ │ │ │ ├── EmptyBlock.jsx │ │ │ │ │ │ ├── ExceptionBlock.jsx │ │ │ │ │ │ ├── Operation.jsx │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FusionExpandTable │ │ │ │ ├── components │ │ │ │ │ └── ExpandTable │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FusionFilterTable │ │ │ │ ├── components │ │ │ │ │ └── FilterTable │ │ │ │ │ │ ├── EmptyBlock.jsx │ │ │ │ │ │ ├── ExceptionBlock.jsx │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FusionMergecellTable │ │ │ │ ├── components │ │ │ │ │ └── MergeCellTable │ │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── FusionMutilcolTable │ │ │ │ ├── components │ │ │ │ │ └── MultiColFilterTable │ │ │ │ │ │ ├── EmptyBlock.jsx │ │ │ │ │ │ ├── ExceptionBlock.jsx │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FusionSinglecolTable │ │ │ │ ├── components │ │ │ │ │ └── SingleColFilterTable │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── FusionSingletreeTable │ │ │ │ ├── components │ │ │ │ │ └── SingleTreeTable │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── Login │ │ │ │ ├── components │ │ │ │ │ └── LoginBlock │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── utils.jsx │ │ │ │ └── index.jsx │ │ │ ├── Person │ │ │ │ ├── components │ │ │ │ │ └── SettingPersonBlock │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── Register │ │ │ │ ├── components │ │ │ │ │ └── LoginBlock │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── utils.jsx │ │ │ │ └── index.jsx │ │ │ ├── Settings │ │ │ │ ├── components │ │ │ │ │ └── SettingSystemBlock │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ ├── Solution │ │ │ │ ├── components │ │ │ │ │ ├── SelectLang │ │ │ │ │ │ └── index.jsx │ │ │ │ │ ├── Tasks │ │ │ │ │ │ └── index.jsx │ │ │ │ │ └── UserInfo │ │ │ │ │ │ └── index.jsx │ │ │ │ ├── index.jsx │ │ │ │ ├── models │ │ │ │ │ └── tasks.js │ │ │ │ └── store.js │ │ │ ├── TableListPage │ │ │ │ ├── components │ │ │ │ │ └── BasicList │ │ │ │ │ │ ├── index.jsx │ │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ │ └── Workplace │ │ │ │ ├── components │ │ │ │ └── WorkTable │ │ │ │ │ ├── index.jsx │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── mock.js │ │ │ │ └── index.jsx │ │ ├── routes.js │ │ ├── store.js │ │ └── utils │ │ │ └── locale.js │ └── tsconfig.json ├── fusion-design-pro │ ├── .template │ │ └── scaffold.json │ ├── .vscode │ │ └── extensions.json │ ├── README.md │ ├── _editorconfig │ ├── _eslintignore │ ├── _eslintrc.js │ ├── _gitignore │ ├── _prettierignore │ ├── _prettierrc.js │ ├── _stylelintignore │ ├── _stylelintrc.js │ ├── build.json │ ├── mock │ │ └── index.ts │ ├── package.json │ ├── public │ │ ├── favicon.png │ │ └── index.html │ ├── src │ │ ├── app.tsx │ │ ├── components │ │ │ ├── LocaleProvider │ │ │ │ └── index.tsx │ │ │ └── PageHeader │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ ├── global.css │ │ ├── layouts │ │ │ ├── BasicLayout │ │ │ │ ├── components │ │ │ │ │ ├── Footer │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GlobalSearch │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HeaderAvatar │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Logo │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Notice │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PageNav │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SolutionLink │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── menuConfig.ts │ │ │ └── UserLayout │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ ├── locales │ │ │ ├── en-US │ │ │ │ └── index.ts │ │ │ └── zh-CN │ │ │ │ └── index.ts │ │ ├── models │ │ │ └── user.ts │ │ ├── pages │ │ │ ├── Advanced │ │ │ │ ├── components │ │ │ │ │ └── AdvancedDetailHead │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Analysis │ │ │ │ ├── components │ │ │ │ │ ├── FusionCardAreaChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardBarChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardGroupBarChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FusionCardLineChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── mock.js │ │ │ │ │ ├── FusionCardPieChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FusionCardRankChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── FusionCardTypebarChart │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── mock.js │ │ │ │ └── index.tsx │ │ │ ├── BasicDetailPage │ │ │ │ ├── components │ │ │ │ │ └── BasicDetail │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── BasicListPage │ │ │ │ ├── components │ │ │ │ │ └── BasicList │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── CardListPage │ │ │ │ ├── components │ │ │ │ │ └── CardList │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FeedbackFail │ │ │ │ ├── components │ │ │ │ │ └── FailDetail │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FeedbackForbidden │ │ │ │ ├── components │ │ │ │ │ └── Forbidden │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FeedbackNotFound │ │ │ │ ├── components │ │ │ │ │ └── NotFound │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FeedbackServerError │ │ │ │ ├── components │ │ │ │ │ └── ServerError │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── Exception │ │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FeedbackSuccess │ │ │ │ ├── components │ │ │ │ │ └── SuccessDetail │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.tsx │ │ │ │ └── index.tsx │ │ │ ├── FlowGroup │ │ │ │ ├── components │ │ │ │ │ └── FlowForm │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormBasic │ │ │ │ ├── components │ │ │ │ │ └── BasicForm │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormClassified │ │ │ │ ├── components │ │ │ │ │ └── ClassifiedForm │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormFour │ │ │ │ ├── components │ │ │ │ │ └── FourColumnForm │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormGroup │ │ │ │ ├── components │ │ │ │ │ └── GroupForm │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormHierarchical │ │ │ │ ├── components │ │ │ │ │ └── HierarchicalForm │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormStep │ │ │ │ ├── components │ │ │ │ │ └── StepForm │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormThree │ │ │ │ ├── components │ │ │ │ │ └── ThreeColumnForm │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FormTwo │ │ │ │ ├── components │ │ │ │ │ └── TwoColumnForm │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionActionTable │ │ │ │ ├── components │ │ │ │ │ └── ActionTable │ │ │ │ │ │ ├── CustomList.tsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── util.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionDialogTable │ │ │ │ ├── components │ │ │ │ │ └── DialogTable │ │ │ │ │ │ ├── DialogOperation.tsx │ │ │ │ │ │ ├── EmptyBlock.tsx │ │ │ │ │ │ ├── ExceptionBlock.tsx │ │ │ │ │ │ ├── Operation.tsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionExpandTable │ │ │ │ ├── components │ │ │ │ │ └── ExpandTable │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionFilterTable │ │ │ │ ├── components │ │ │ │ │ └── FilterTable │ │ │ │ │ │ ├── EmptyBlock.tsx │ │ │ │ │ │ ├── ExceptionBlock.tsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionMergecellTable │ │ │ │ ├── components │ │ │ │ │ └── MergeCellTable │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionMutilcolTable │ │ │ │ ├── components │ │ │ │ │ └── MultiColFilterTable │ │ │ │ │ │ ├── EmptyBlock.tsx │ │ │ │ │ │ ├── ExceptionBlock.tsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionSinglecolTable │ │ │ │ ├── components │ │ │ │ │ └── SingleColFilterTable │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── FusionSingletreeTable │ │ │ │ ├── components │ │ │ │ │ └── SingleTreeTable │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Login │ │ │ │ ├── components │ │ │ │ │ └── LoginBlock │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.tsx │ │ │ │ └── index.tsx │ │ │ ├── Person │ │ │ │ ├── components │ │ │ │ │ └── SettingPersonBlock │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Register │ │ │ │ ├── components │ │ │ │ │ └── LoginBlock │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.tsx │ │ │ │ └── index.tsx │ │ │ ├── Settings │ │ │ │ ├── components │ │ │ │ │ └── SettingSystemBlock │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Solution │ │ │ │ ├── components │ │ │ │ │ ├── SelectLang │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Tasks │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── UserInfo │ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── models │ │ │ │ │ └── tasks.ts │ │ │ │ └── store.ts │ │ │ ├── TableListPage │ │ │ │ ├── components │ │ │ │ │ └── BasicList │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ └── Workplace │ │ │ │ ├── components │ │ │ │ └── WorkTable │ │ │ │ │ ├── index.module.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── mock.js │ │ │ │ └── index.tsx │ │ ├── routes.ts │ │ ├── store.ts │ │ ├── typings.d.ts │ │ └── utils │ │ │ └── locale.ts │ └── tsconfig.json ├── ice-stark-child │ └── package.json ├── ice-stark-layout │ └── package.json ├── scaffold-lite-js │ ├── .template │ │ └── scaffold.json │ ├── .vscode │ │ └── extensions.json │ ├── README.md │ ├── _editorconfig │ ├── _eslintignore │ ├── _eslintrc.js │ ├── _gitignore │ ├── _prettierignore │ ├── _prettierrc.js │ ├── _stylelintignore │ ├── _stylelintrc.js │ ├── build.json │ ├── jsconfig.json │ ├── package.json │ ├── public │ │ ├── favicon.png │ │ └── index.html │ ├── src │ │ ├── app.jsx │ │ ├── global.css │ │ ├── layouts │ │ │ └── BasicLayout │ │ │ │ ├── components │ │ │ │ ├── Footer │ │ │ │ │ ├── index.jsx │ │ │ │ │ └── index.module.css │ │ │ │ ├── Logo │ │ │ │ │ ├── index.jsx │ │ │ │ │ └── index.module.css │ │ │ │ └── PageNav │ │ │ │ │ └── index.jsx │ │ │ │ ├── index.jsx │ │ │ │ └── menuConfig.js │ │ ├── pages │ │ │ └── Dashboard │ │ │ │ ├── components │ │ │ │ └── Guide │ │ │ │ │ ├── index.jsx │ │ │ │ │ └── index.module.css │ │ │ │ └── index.jsx │ │ └── routes.js │ └── tsconfig.json └── scaffold-lite │ ├── .template │ └── scaffold.json │ ├── .vscode │ └── extensions.json │ ├── README.md │ ├── _editorconfig │ ├── _eslintignore │ ├── _eslintrc.js │ ├── _gitignore │ ├── _prettierignore │ ├── _prettierrc.js │ ├── _stylelintignore │ ├── _stylelintrc.js │ ├── build.json │ ├── package.json │ ├── public │ ├── favicon.png │ └── index.html │ ├── src │ ├── app.tsx │ ├── global.css │ ├── layouts │ │ └── BasicLayout │ │ │ ├── components │ │ │ ├── Footer │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Logo │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ └── PageNav │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ └── menuConfig.ts │ ├── pages │ │ └── Dashboard │ │ │ ├── components │ │ │ └── Guide │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ ├── routes.ts │ └── typings.d.ts │ └── tsconfig.json ├── scripts ├── generate.js ├── publish-blocks.js └── tsChecker.js ├── tsconfig.block.json ├── tsconfig.json └── types └── typings.d.ts /.commitlintrc.js: -------------------------------------------------------------------------------- 1 | const { getCommitlintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getCommitlintConfig('react'); -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | lib/ 4 | node_modules/ 5 | **/*-min.js 6 | **/*.min.js 7 | coverage/ 8 | _eslintrc.js 9 | _stylelintrc.js 10 | .ice/ 11 | __tests__ 12 | tmp 13 | 14 | scripts/ 15 | # 一级 components 16 | /components/ 17 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-and-publish: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v1 10 | - run: echo >>$GITHUB_ENV BRANCH_NAME=${GITHUB_REF#refs/heads/} 11 | - uses: actions/setup-node@v1 12 | with: 13 | node-version: 10 14 | registry-url: https://registry.npmjs.org/ 15 | - run: npm i 16 | - run: npm run lint 17 | - run: npm run tsChecker -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | lerna-debug.log 4 | npm-debug.log 5 | .happypack 6 | package-lock.json 7 | yarn.lock 8 | yarn-error.log 9 | coverage/ 10 | .eslintcache 11 | .tmp/ 12 | .ice/ 13 | .iceworks-tmp/ 14 | 15 | build 16 | es 17 | blocks/**/lib/ 18 | components/**/lib/ 19 | screenshot.png 20 | index.module.scss.d.ts 21 | tmp/ 22 | .faas_debug_tmp 23 | .severless 24 | blocks/**/*/style.d.ts 25 | .history 26 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | const { getPrettierConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getPrettierConfig('react'); 4 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | 4 | build/ 5 | 6 | scripts/ 7 | # 一级 components 8 | /components/ 9 | -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | const { getStylelintConfig, deepmerge } = require('@iceworks/spec'); 2 | 3 | module.exports = deepmerge(getStylelintConfig('react'), { 4 | rules: { 5 | // "block-no-empty": null, 6 | // "font-family-no-missing-generic-family-keyword": null, 7 | // "order/properties-order": null, 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## 1.0.0 4 | 5 | - [scaffold] 默认切到 webpack 5 6 | - [scaffold] 添加 `IRouterConfig` 7 | -------------------------------------------------------------------------------- /blocks/ActionTable/README.md: -------------------------------------------------------------------------------- 1 | # ActionTable 2 | 3 | 简介:basic 4 | 5 | action bar table 6 | -------------------------------------------------------------------------------- /blocks/ActionTable/src/util.tsx: -------------------------------------------------------------------------------- 1 | import { ColumnProps } from '@alifd/next/types/table'; 2 | 3 | export function getColumnKey(column: ColumnProps & { key?: string }): string | null { 4 | if (column) { 5 | return column.key || String(column.title) || column.dataIndex; 6 | } 7 | return null; 8 | } 9 | -------------------------------------------------------------------------------- /blocks/ActionTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } -------------------------------------------------------------------------------- /blocks/AdvancedDetail/README.md: -------------------------------------------------------------------------------- 1 | # AdvancedDetailHead 2 | 3 | 简介:AdvancedDetailHead 4 | 5 | intro block 6 | -------------------------------------------------------------------------------- /blocks/AdvancedDetail/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/BasicDetail/README.md: -------------------------------------------------------------------------------- 1 | # BasicDetail 2 | 3 | 简介:BasicDetail 4 | 5 | intro block 6 | -------------------------------------------------------------------------------- /blocks/BasicDetail/src/index.module.css: -------------------------------------------------------------------------------- 1 | .content { 2 | margin-top: 4px; 3 | margin-right: 8px; 4 | margin-bottom: 12px; 5 | margin-left: 8px; 6 | } 7 | 8 | .mainTable table { 9 | border: 1px solid #e6e6e6; 10 | } -------------------------------------------------------------------------------- /blocks/BasicDetail/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/BasicForm/README.md: -------------------------------------------------------------------------------- 1 | # BasicForm 2 | 3 | 简介:BasicForm 4 | 5 | single column form 6 | -------------------------------------------------------------------------------- /blocks/BasicForm/src/index.module.css: -------------------------------------------------------------------------------- 1 | .basicForm { 2 | width: 568px; 3 | margin: 0 auto; 4 | } -------------------------------------------------------------------------------- /blocks/BasicForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/BasicList/README.md: -------------------------------------------------------------------------------- 1 | # BasicList 2 | 3 | BasicList 4 | 5 | intro block 6 | -------------------------------------------------------------------------------- /blocks/BasicList/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/CardList/README.md: -------------------------------------------------------------------------------- 1 | # CardList 2 | 3 | CardList 4 | 5 | intro block 6 | -------------------------------------------------------------------------------- /blocks/CardList/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/ClassifiedForm/README.md: -------------------------------------------------------------------------------- 1 | # ClassifiedForm 2 | 3 | 简介:ClassifiedForm 4 | 5 | Classified form 6 | -------------------------------------------------------------------------------- /blocks/ClassifiedForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/DialogForm/README.md: -------------------------------------------------------------------------------- 1 | # DialogForm 2 | 3 | 简介:弹出式表单 4 | 5 | 弹出式表单 6 | -------------------------------------------------------------------------------- /blocks/DialogForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/DialogTable/README.md: -------------------------------------------------------------------------------- 1 | # DialogTable 2 | 3 | 简介:Dialog的表单Table 4 | 5 | dialog table 6 | -------------------------------------------------------------------------------- /blocks/DialogTable/src/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock: React.FC = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /blocks/DialogTable/src/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface IProps { 5 | onRefresh: () => void; 6 | } 7 | 8 | const ExceptionBlock: React.FC = ({ onRefresh }) => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /blocks/DialogTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .dialogTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .dialogTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .dialogTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .dialogTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /blocks/DialogTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ], 11 | "compilerOptions": { 12 | "allowSyntheticDefaultImports": true, 13 | } 14 | } -------------------------------------------------------------------------------- /blocks/ExpandTable/README.md: -------------------------------------------------------------------------------- 1 | # ExpandTable 2 | 3 | 简介:可展开表格 4 | 5 | 可展开的子母表格 6 | -------------------------------------------------------------------------------- /blocks/ExpandTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .next-table-expanded-row .next-table { 2 | padding: 20px; 3 | } 4 | 5 | .tableActions button { 6 | margin-right: 8px; 7 | } -------------------------------------------------------------------------------- /blocks/ExpandTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FailDetail/README.md: -------------------------------------------------------------------------------- 1 | # FailDetail 2 | 3 | 简介:FailDetail 4 | 5 | Fail Detail 6 | -------------------------------------------------------------------------------- /blocks/FailDetail/src/index.module.css: -------------------------------------------------------------------------------- 1 | .failDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .failDetail div { 9 | text-align: center; 10 | } 11 | 12 | .failDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .failDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .failDetail .description { 25 | margin-bottom: 20px; 26 | color: #666; 27 | font-size: 14px; 28 | line-height: 1.5; 29 | text-align: center; 30 | } 31 | 32 | .failDetail .operationWrap { 33 | text-align: center; 34 | } 35 | 36 | .failDetail .mainAction { 37 | margin-right: 8px; 38 | } -------------------------------------------------------------------------------- /blocks/FailDetail/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FilterTable/README.md: -------------------------------------------------------------------------------- 1 | # FilterTable 2 | 3 | 简介:基础过滤表格 4 | 5 | 基础的过滤区加表格的组合 6 | -------------------------------------------------------------------------------- /blocks/FilterTable/src/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock: React.FunctionComponent = (): JSX.Element => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /blocks/FilterTable/src/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface IExceptionBlockProps { 5 | onRefresh: () => Promise; 6 | } 7 | 8 | const ExceptionBlock: React.FunctionComponent = ({ onRefresh }): JSX.Element => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /blocks/FilterTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .filterTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .filterTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .filterTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .filterTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /blocks/FilterTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } -------------------------------------------------------------------------------- /blocks/FlowForm/README.md: -------------------------------------------------------------------------------- 1 | # FlowForm 2 | 3 | 简介:流程表单 4 | 5 | 流程表单 6 | -------------------------------------------------------------------------------- /blocks/FlowForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/Forbidden/README.md: -------------------------------------------------------------------------------- 1 | # Forbidden 2 | 3 | 简介:Forbidden 4 | 5 | forbidden exception 6 | -------------------------------------------------------------------------------- /blocks/Forbidden/src/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /blocks/Forbidden/src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function Forbidden() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /blocks/Forbidden/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FourColumnForm/README.md: -------------------------------------------------------------------------------- 1 | # FourColumnForm 2 | 3 | 简介:FourColumnForm 4 | 5 | Form of four columns 6 | -------------------------------------------------------------------------------- /blocks/FourColumnForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardAreaChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardAreaChart 2 | 3 | 简介:@alifd/fusion-card-area-chart 4 | 5 | 面积图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardAreaChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /blocks/FusionCardAreaChart/src/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: 1, value: 3 }, 5 | { date: 2, value: 9 }, 6 | { date: 3, value: 5 }, 7 | { date: 4, value: 8 }, 8 | { date: 5, value: 11 }, 9 | { date: 6, value: 6 }, 10 | { date: 7, value: 8 }, 11 | { date: 8, value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /blocks/FusionCardAreaChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardBarChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardBarChart 2 | 3 | 简介:funsion-card-bar-Chart 4 | 5 | 柱形图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardBarChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /blocks/FusionCardBarChart/src/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3 }, 5 | { date: '2', value: 9 }, 6 | { date: '3', value: 5 }, 7 | { date: '4', value: 8 }, 8 | { date: '5', value: 11 }, 9 | { date: '6', value: 6 }, 10 | { date: '7', value: 8 }, 11 | { date: '8', value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /blocks/FusionCardBarChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardCrossPieChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardCrossPieChart 2 | 3 | 简介:fusion-card-cross-pie-chart 4 | 5 | 横向饼图 6 | -------------------------------------------------------------------------------- /blocks/FusionCardCrossPieChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardGroupBarChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardGroupBarChart 2 | 3 | 简介:fusion-card-group-bar-chart 4 | 5 | 分组柱形图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardGroupBarChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .fusionCardGroupBarChart { 2 | height: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /blocks/FusionCardGroupBarChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardLineChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardLineChart 2 | 3 | 简介:@alifd/fusion-card-area-chart 4 | 5 | 折线图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardLineChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /blocks/FusionCardLineChart/src/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3, num: 1 }, 5 | { date: '2', value: 9, num: 2 }, 6 | { date: '3', value: 5, num: 2 }, 7 | { date: '4', value: 8, num: 2 }, 8 | { date: '5', value: 11, num: 2 }, 9 | { date: '6', value: 6, num: 2 }, 10 | { date: '7', value: 8, num: 2 }, 11 | { date: '8', value: 7, num: 2 }, 12 | ], 13 | dailySale: '10', 14 | }; 15 | -------------------------------------------------------------------------------- /blocks/FusionCardLineChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardPieChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardPieChart 2 | 3 | 简介:fusion-card-pie-chart 4 | 5 | 扇形图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardPieChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .radioGroup { 2 | display: flex; 3 | width: 320px; 4 | text-align: center; 5 | } 6 | 7 | .radioFlex { 8 | flex: 1; 9 | } 10 | -------------------------------------------------------------------------------- /blocks/FusionCardPieChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardRankChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardRankChart 2 | 3 | 简介:funsion-card-rank-chart 4 | 5 | 排行卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardRankChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardTypebarChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardTypebarChart 2 | 3 | 简介:!alifd/fusion-card-typebar-chart 4 | 5 | 类型区分的柱形卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardTypebarChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /blocks/FusionCardTypebarChart/src/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '82,234', 3 | saleList: [ 4 | { type: 'a', value: 3 }, 5 | { type: 'b', value: 9 }, 6 | ], 7 | dailySale: '10', 8 | }; 9 | -------------------------------------------------------------------------------- /blocks/FusionCardTypebarChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/FusionCardWorldmapChart/README.md: -------------------------------------------------------------------------------- 1 | # FusionCardWorldmapChart 2 | 3 | 简介:funsion-card-worldmap-chart 4 | 5 | 世界地图卡片 6 | -------------------------------------------------------------------------------- /blocks/FusionCardWorldmapChart/src/index.module.css: -------------------------------------------------------------------------------- 1 | 2 | .dataRow { 3 | margin: 20px 0; 4 | } 5 | 6 | .cardTotal { 7 | margin-right: 40px; 8 | color: #666; 9 | font-size: 14px; 10 | font-family: PingFang-SC-Regular; 11 | line-height: 20px; 12 | letter-spacing: 0; 13 | } 14 | 15 | .cardNum { 16 | color: #333; 17 | font-size: 24px; 18 | font-family: Roboto-Bold; 19 | line-height: 20px; 20 | letter-spacing: 0; 21 | } 22 | 23 | .cardMap { 24 | display: flex; 25 | justify-content: center; 26 | } 27 | -------------------------------------------------------------------------------- /blocks/FusionCardWorldmapChart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/GroupForm/README.md: -------------------------------------------------------------------------------- 1 | # GroupForm 2 | 3 | 简介:Group Form 4 | 5 | 分组表单 6 | -------------------------------------------------------------------------------- /blocks/GroupForm/src/index.module.css: -------------------------------------------------------------------------------- 1 | .groupForm { 2 | padding-bottom: 84px; 3 | } 4 | 5 | .card:not(:first-child) { 6 | margin-top: 20px; 7 | border: none; 8 | } 9 | 10 | .button { 11 | min-width: 84px; 12 | } 13 | 14 | .fixedButtons { 15 | position: fixed; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | z-index: 1; 20 | height: 66px; 21 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 22 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 23 | background: #fff; 24 | box-shadow: var(--shadow-3-up, 0 -3px 5px 0 rgba(0, 0, 0, 0.12)); 25 | } 26 | 27 | .mainTable table { 28 | border: 1px solid #e6e6e6; 29 | } -------------------------------------------------------------------------------- /blocks/GroupForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/HierarchicalForm/README.md: -------------------------------------------------------------------------------- 1 | # HierarchicalForm 2 | 3 | 简介:分级表单 4 | 5 | 分级表单 6 | -------------------------------------------------------------------------------- /blocks/HierarchicalForm/src/index.module.css: -------------------------------------------------------------------------------- 1 | .hierarchicalForm { 2 | width: 568px; 3 | max-width: 100%; 4 | margin: 0 auto; 5 | } 6 | 7 | .hierarchicalBlock { 8 | margin-top: 12px; 9 | padding: 20px; 10 | background: #f5f5f5; 11 | } 12 | 13 | .card { 14 | border: none; 15 | } 16 | 17 | .formButton { 18 | min-width: 84px; 19 | } -------------------------------------------------------------------------------- /blocks/HierarchicalForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/LoginBlock/README.md: -------------------------------------------------------------------------------- 1 | # LoginBlock 2 | 3 | 简介:block for login 4 | 5 | block for login 6 | -------------------------------------------------------------------------------- /blocks/LoginBlock/src/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /blocks/LoginBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/MergeCellTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/README.md: -------------------------------------------------------------------------------- 1 | # MinitorBlock 2 | 3 | 简介:监控页面 4 | 5 | 监控页面 6 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/components/CardAreaChart/index.module.css: -------------------------------------------------------------------------------- 1 | 2 | .areaChart { 3 | height: 100%; 4 | } 5 | 6 | .title { 7 | font-weight: bold; 8 | font-size: 16px; 9 | } 10 | 11 | .subTitle { 12 | color: #999; 13 | font-size: 14px; 14 | line-height: 22px; 15 | letter-spacing: 0; 16 | } 17 | 18 | .value { 19 | margin-top: 10px; 20 | color: #333; 21 | font-weight: var(--font-weight-3,bold); 22 | font-size: 24px; 23 | line-height: 28px; 24 | letter-spacing: 0; 25 | } 26 | 27 | .cardFoot { 28 | padding: 13px 16px; 29 | color: #666; 30 | font-size: 12px; 31 | } 32 | 33 | .chartColor { 34 | background: red; 35 | } 36 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/components/CardAreaChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: 1, value: 3 }, 5 | { date: 2, value: 9 }, 6 | { date: 3, value: 5 }, 7 | { date: 4, value: 8 }, 8 | { date: 5, value: 11 }, 9 | { date: 6, value: 6 }, 10 | { date: 7, value: 8 }, 11 | { date: 8, value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/components/CardPieChart/index.module.css: -------------------------------------------------------------------------------- 1 | .radioGroup { 2 | display: flex; 3 | width: 320px; 4 | text-align: center; 5 | } 6 | 7 | .flex1 { 8 | flex: 1; 9 | } 10 | 11 | .title { 12 | font-weight: bold; 13 | font-size: 16px; 14 | } -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/components/TrendChart/index.module.css: -------------------------------------------------------------------------------- 1 | .rateIcon { 2 | display: inline-block; 3 | width: 14px; 4 | height: 14px; 5 | background: url(https://img.alicdn.com/tfs/TB1E.8ZvebviK0jSZFNXXaApXXa-92-90.png) 50% 50% no-repeat; 6 | background-size: contain; 7 | } 8 | 9 | .failIcon { 10 | display: inline-block; 11 | width: 14px; 12 | height: 14px; 13 | background: url(https://img.alicdn.com/tfs/TB1wNsuvNn1gK0jSZKPXXXvUXXa-90-90.png) 50% 50% no-repeat; 14 | background-size: contain; 15 | } 16 | 17 | .successIcon { 18 | display: inline-block; 19 | width: 14px; 20 | height: 14px; 21 | background: url(https://img.alicdn.com/tfs/TB1FnouvHr1gK0jSZR0XXbP8XXa-90-88.png) 50% 50% no-repeat; 22 | background-size: contain; 23 | } 24 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/components/WebInfoBlock/index.module.css: -------------------------------------------------------------------------------- 1 | .box { 2 | height: 188px; 3 | background: #fff; 4 | border-radius: 5px; 5 | } 6 | 7 | .box .content { 8 | height: 91px; 9 | } 10 | 11 | .box .content .value { 12 | color: #333; 13 | font-weight: bold; 14 | font-size: 28px; 15 | line-height: 28px; 16 | } 17 | 18 | .box .content .name { 19 | color: #999; 20 | font-size: 12px; 21 | } 22 | 23 | .box .content .des { 24 | color: #999; 25 | font-size: 12px; 26 | } 27 | 28 | .box .content .des .rise { 29 | color: #d23c26; 30 | } 31 | 32 | .box .content .des .fall { 33 | color: #36cfc9; 34 | } -------------------------------------------------------------------------------- /blocks/MonitorBlock/src/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | JSErrorRate: { 3 | value: '2556', 4 | name: 'js错误率', 5 | des: '周同比:', 6 | rate: '10.1', 7 | isRise: true, 8 | }, 9 | APISuccessRate: { 10 | value: '3456', 11 | name: 'API成功率', 12 | des: '周同比:', 13 | rate: '10.1', 14 | isRise: true, 15 | }, 16 | FirstRenderTime: { 17 | value: '3456ms', 18 | name: '首次渲染时间', 19 | des: '周同比:', 20 | rate: '10.1', 21 | isRise: true, 22 | }, 23 | ResourceError: { 24 | value: '3456', 25 | name: '资源错误', 26 | des: '周同比:', 27 | rate: '10.1', 28 | isRise: false, 29 | }, 30 | }; 31 | -------------------------------------------------------------------------------- /blocks/MonitorBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/MultiColFilterTable/README.md: -------------------------------------------------------------------------------- 1 | # MultiColFilterTable 2 | 3 | 简介:多列FilterTable 4 | 5 | 多列可切换过滤表格 6 | -------------------------------------------------------------------------------- /blocks/MultiColFilterTable/src/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | const EmptyBlock: React.FC = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /blocks/MultiColFilterTable/src/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface Iprops { 5 | onRefresh?: () => any; 6 | } 7 | 8 | const ExceptionBlock: React.FC = ({ onRefresh = () => {} }) => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /blocks/MultiColFilterTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .container :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .container :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .container :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } 24 | 25 | .container .form-actions { 26 | text-align: right; 27 | align-self: end; 28 | } 29 | -------------------------------------------------------------------------------- /blocks/MultiColFilterTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ], 11 | "compilerOptions": { 12 | "allowSyntheticDefaultImports": true, 13 | }, 14 | } -------------------------------------------------------------------------------- /blocks/MultiTreeTable/README.md: -------------------------------------------------------------------------------- 1 | # MultiTreeTable 2 | 3 | 简介:多层树 4 | 5 | 多层树 6 | -------------------------------------------------------------------------------- /blocks/MultiTreeTable/src/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | const EmptyBlock: React.FC = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /blocks/MultiTreeTable/src/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface IProps { 5 | onRefresh: () => void; 6 | } 7 | 8 | const ExceptionBlock: React.FC = ({ onRefresh }) => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /blocks/MultiTreeTable/src/types.ts: -------------------------------------------------------------------------------- 1 | export interface DataItem { 2 | id: string; 3 | email: string; 4 | gender: string; 5 | name: string; 6 | address?: string; 7 | phone: string; 8 | picture?: string; 9 | children?: DataItem[]; 10 | } 11 | -------------------------------------------------------------------------------- /blocks/MultiTreeTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ], 11 | "compilerOptions": { 12 | "allowSyntheticDefaultImports": true, 13 | } 14 | } -------------------------------------------------------------------------------- /blocks/NotFound/README.md: -------------------------------------------------------------------------------- 1 | # NotFound 2 | 3 | 简介:NotFound 4 | 5 | not found exception 6 | -------------------------------------------------------------------------------- /blocks/NotFound/src/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | .exception div { 8 | text-align: center; 9 | } 10 | 11 | .exception .exceptionImage { 12 | margin-bottom: 22px; 13 | } 14 | 15 | .exception .statusCode { 16 | margin-bottom: 6px; 17 | color: #000; 18 | font-size: 28px; 19 | line-height: 52px; 20 | text-align: center; 21 | } 22 | .exception .description { 23 | color: #666; 24 | font-size: 14px; 25 | line-height: 1.5; 26 | text-align: center; 27 | } 28 | -------------------------------------------------------------------------------- /blocks/NotFound/src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function NotFound() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /blocks/NotFound/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/PageHeader/README.md: -------------------------------------------------------------------------------- 1 | # PageHeader 2 | 3 | 简介:页头 4 | 5 | 页头位于页容器中,页容器顶部,起到了内容概览和引导页级操作的作用。 6 | -------------------------------------------------------------------------------- /blocks/PageHeader/src/index.module.css: -------------------------------------------------------------------------------- 1 | .pageHeader { 2 | margin-top: calc(0px - var(--shell-dark-content-paddingTop, 20px)); 3 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 4 | margin-bottom: 0; 5 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 6 | padding: var(--shell-dark-content-paddingTop, 20px) var(--shell-dark-content-paddingLeft, 20px); 7 | background-color: var(--color-white, #fff); 8 | } 9 | 10 | .title { 11 | display: block; 12 | color: var(--color-text1-4, #333); 13 | font-weight: var(--font-weight-3, bold); 14 | font-size: var(--font-size-title, 20px); 15 | line-height: 1.5; 16 | } 17 | 18 | .description { 19 | display: block; 20 | color: var(--color-text1-3, #666); 21 | font-size: var(--font-size-body-2, 14px); 22 | line-height: 1.5; 23 | } -------------------------------------------------------------------------------- /blocks/PageHeader/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/RegisterBlock/README.md: -------------------------------------------------------------------------------- 1 | # RegisterBlock 2 | 3 | 简介:register 4 | 5 | A basic register module 6 | -------------------------------------------------------------------------------- /blocks/RegisterBlock/src/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /blocks/RegisterBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/ServerError/README.md: -------------------------------------------------------------------------------- 1 | # ServerError 2 | 3 | 简介:ServerError 4 | 5 | server error 6 | -------------------------------------------------------------------------------- /blocks/ServerError/src/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /blocks/ServerError/src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function ServerError() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /blocks/ServerError/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/SettingPersonBlock/README.md: -------------------------------------------------------------------------------- 1 | # SettingPersonBlock 2 | 3 | 简介:个人设置 4 | 5 | 基础的个人设置Block 6 | -------------------------------------------------------------------------------- /blocks/SettingPersonBlock/src/index.module.css: -------------------------------------------------------------------------------- 1 | .settingPersonBlock { 2 | width: 568px; 3 | margin: var( --s-19,76px) auto; 4 | } 5 | 6 | .uploadButton { 7 | width: 88px; 8 | font-size: 14px; 9 | } 10 | 11 | .changeLogo p { 12 | margin: 0; 13 | color: rgba(0, 0, 0, 0.50); 14 | font-size: 12px; 15 | line-height: 18px; 16 | letter-spacing: 0; 17 | } 18 | 19 | .validateCodeInput { 20 | width: 100%; 21 | } 22 | 23 | .validateCodeButton { 24 | width: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /blocks/SettingPersonBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/SettingSystemBlock/README.md: -------------------------------------------------------------------------------- 1 | # SettingSystemBlock 2 | 3 | 简介:系统设置 4 | 5 | 基础的系统设置Block 6 | -------------------------------------------------------------------------------- /blocks/SettingSystemBlock/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/SingleColFilterTable/README.md: -------------------------------------------------------------------------------- 1 | # SingleColFilterTable 2 | 3 | 简介:单列 Filter Table 4 | 5 | 单列Filter的Table 6 | -------------------------------------------------------------------------------- /blocks/SingleColFilterTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .wrap { 2 | margin: var(--s-5, 20px); 3 | } 4 | 5 | .formWrap { 6 | margin-bottom: var(--s-5, 20px); 7 | } 8 | 9 | .pagination { 10 | text-align: right; 11 | margin-top: var(--s-5, 20px); 12 | } -------------------------------------------------------------------------------- /blocks/SingleColFilterTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/SingleTreeTable/README.md: -------------------------------------------------------------------------------- 1 | # SingleTreeTable 2 | 3 | 简介:单层树表格 4 | 5 | 通过TreeTable + 合并单元格,做到展开收起,展示 6 | -------------------------------------------------------------------------------- /blocks/SingleTreeTable/src/index.module.css: -------------------------------------------------------------------------------- 1 | .buttonGroup :global .next-btn-text { 2 | margin-right: 12px; 3 | } -------------------------------------------------------------------------------- /blocks/SingleTreeTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } -------------------------------------------------------------------------------- /blocks/StepForm/README.md: -------------------------------------------------------------------------------- 1 | # StepForm 2 | 3 | 简介:StepForm 4 | 5 | Form of steps 6 | -------------------------------------------------------------------------------- /blocks/StepForm/src/index.module.css: -------------------------------------------------------------------------------- 1 | .stepForm { 2 | width: 568px; 3 | margin: 40px auto 24px; 4 | } 5 | 6 | .successIcon { 7 | color: var(--color-success-3, #46bc15); 8 | } 9 | 10 | .form { 11 | margin-top: 40px; 12 | } -------------------------------------------------------------------------------- /blocks/StepForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/SuccessDetail/README.md: -------------------------------------------------------------------------------- 1 | # SuccessDetail 2 | 3 | 简介:SuccessDetail 4 | 5 | success Detail 6 | -------------------------------------------------------------------------------- /blocks/SuccessDetail/src/index.module.css: -------------------------------------------------------------------------------- 1 | .successDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .successDetail div { 9 | text-align: center; 10 | } 11 | 12 | .successDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .successDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | .successDetail .description { 24 | margin-bottom: 20px; 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } 30 | 31 | .successDetail .operationWrap { 32 | text-align: center; 33 | } 34 | 35 | .successDetail .mainAction { 36 | margin-right: 8px; 37 | } 38 | -------------------------------------------------------------------------------- /blocks/SuccessDetail/src/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /blocks/SuccessDetail/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/TableList/README.md: -------------------------------------------------------------------------------- 1 | # TableList 2 | 3 | TableList 4 | 5 | intro block 6 | -------------------------------------------------------------------------------- /blocks/TableList/src/index.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | color: #999; 3 | } 4 | 5 | .searchIcon { 6 | margin-right: 5px; 7 | color: #999; 8 | } 9 | 10 | .operation { 11 | padding: 10px 10px 5px; 12 | border-bottom: 1px dashed #eee; 13 | } 14 | 15 | .operation .btns { 16 | margin-top: 14px; 17 | } 18 | 19 | .operation .btns Button { 20 | margin-left: 10px; 21 | } 22 | 23 | .operation .btns .btnsIcon { 24 | color: #999; 25 | } 26 | 27 | .main { 28 | padding: 15px 10px; 29 | } 30 | 31 | .main .mainAdd { 32 | padding-bottom: 15px; 33 | } 34 | .main .mainAdd .mainIcon { 35 | color: #999; 36 | } 37 | 38 | 39 | .main .add button { 40 | margin-right: 10px; 41 | } 42 | 43 | .main .table .opt button { 44 | margin-right: 5px; 45 | 46 | } 47 | 48 | .main .total { 49 | color: #4a5b6d; 50 | font-size: 12px; 51 | } 52 | 53 | .main .total Span { 54 | padding: 0 3px; 55 | color: #5584ff; 56 | } -------------------------------------------------------------------------------- /blocks/TableList/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/ThreeColumnForm/README.md: -------------------------------------------------------------------------------- 1 | # ThreeColumnForm 2 | 3 | 简介:ThreeColumnForm 4 | 5 | Form of three columns 6 | -------------------------------------------------------------------------------- /blocks/ThreeColumnForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/TwoColumnForm/README.md: -------------------------------------------------------------------------------- 1 | # TwoColumnForm 2 | 3 | 简介:TwoColumnForm 4 | 5 | Form with two coumns 6 | -------------------------------------------------------------------------------- /blocks/TwoColumnForm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /blocks/WorkTable/README.md: -------------------------------------------------------------------------------- 1 | # WorkTable 2 | 3 | 简介:WorkTable 4 | 5 | 工作台模板 6 | -------------------------------------------------------------------------------- /blocks/WorkTable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.block.json", 3 | "include": [ 4 | "./src/**/*.ts", 5 | "./src/**/*.tsx" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "build" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /build.block.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "build-plugin-block", 4 | ["build-plugin-fusion", { 5 | "themePackage": "@alifd/theme-design-pro" 6 | }], 7 | "build-plugin-fusion-material", 8 | [ 9 | "build-plugin-moment-locales", 10 | { 11 | "locales": [ 12 | "zh-cn" 13 | ] 14 | } 15 | ] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /components/anchor/README.md: -------------------------------------------------------------------------------- 1 | # anchor 2 | 3 | `npm i @alifd/biz-anchor` 4 | 5 | `2.0.0` 后增加跟随页面滚动自动切换 active 态功能 6 | 7 | ## API 8 | > 继承 Affix 所有能力 9 | 10 | | 参数名 | 说明 | 必填 | 类型 | 默认值 | 备注 | 11 | | ------ | ---- | ---- | ---- | ------ | ---- | 12 | | offsetTop | 菜单距离顶部偏离的固定高度 | false | Number | 0 | | 13 | | noHash | 不修改hash | false | Number | false | | 14 | | content | 返回关注内容的node节点, 自动生成目录 | false | () => HTMLElement | - | | 15 | | scrollNode | 指定监听的滚动节点 | false | HTMLElement \| () => HTMLElement | window | | 16 | 17 | ### Anchor.Link 18 | | 参数名 | 说明 | 必填 | 类型 | 默认值 | 备注 | 19 | | ------ | ---- | ---- | ---- | ------ | ---- | 20 | | active | | - | bool | false | | 21 | 22 | -------------------------------------------------------------------------------- /components/anchor/_gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # production 7 | build/ 8 | dist/ 9 | tmp/ 10 | lib/ 11 | 12 | # misc 13 | .idea/ 14 | .happypack 15 | .DS_Store 16 | *.swp 17 | *.dia~ 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* 22 | -------------------------------------------------------------------------------- /components/anchor/abc.json: -------------------------------------------------------------------------------- 1 | { 2 | "builder": "@ali/builder-component" 3 | } 4 | -------------------------------------------------------------------------------- /components/anchor/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "docGenIncludes": [ 3 | "src/index.tsx" 4 | ], 5 | "disableGenerateStyle": true, 6 | "plugins": [ 7 | "build-plugin-component" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /components/anchor/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | setupFilesAfterEnv: ['/test/setupTests.js'], 3 | }; 4 | -------------------------------------------------------------------------------- /components/anchor/src/link.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | class Link extends React.Component { 5 | handleClick = (e) => { 6 | this.props.onItemClick(e); 7 | } 8 | 9 | render() { 10 | const { className, children, href, title, active, level, ...others } = this.props; 11 | 12 | const cls = classNames({ 13 | className: !!className, 14 | 'biz-anchor-link': true, 15 | [`biz-anchor-link-level-${level}`]: true, 16 | 'biz-anchor-link-active': active 17 | }); 18 | 19 | return ( 20 |
21 | {title} 22 | {children} 23 |
24 | ); 25 | } 26 | } 27 | 28 | Link.displayName = 'Link'; 29 | 30 | Link.defaultProps = { 31 | onItemClick: () => {} 32 | }; 33 | 34 | export default Link; 35 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "iceworks-team.iceworks" 4 | ] 5 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | .ice/ 6 | 7 | # node 覆盖率文件 8 | coverage/ 9 | 10 | # 忽略文件 11 | **/*-min.js 12 | **/*.min.js 13 | 14 | package-lock.json 15 | yarn.lock 16 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_eslintrc.js: -------------------------------------------------------------------------------- 1 | const { getESLintConfig } = require('@iceworks/spec'); 2 | 3 | // https://www.npmjs.com/package/@iceworks/spec 4 | module.exports = getESLintConfig('react'); 5 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # production 7 | build/ 8 | dist/ 9 | tmp/ 10 | lib/ 11 | 12 | # misc 13 | .idea/ 14 | .happypack 15 | .DS_Store 16 | *.swp 17 | *.dia~ 18 | .ice 19 | .vscode 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | index.module.scss.d.ts 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_prettierignore: -------------------------------------------------------------------------------- 1 | build/ 2 | tests/ 3 | demo/ 4 | .ice/ 5 | coverage/ 6 | **/*-min.js 7 | **/*.min.js 8 | package-lock.json 9 | yarn.lock -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_prettierrc.js: -------------------------------------------------------------------------------- 1 | const { getPrettierConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getPrettierConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_stylelintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | 6 | # node 覆盖率文件 7 | coverage/ 8 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/_stylelintrc.js: -------------------------------------------------------------------------------- 1 | const { getStylelintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getStylelintConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "publicPath": "./", 3 | "vite": true, 4 | "alias": { 5 | "venn.js": "venn.js/build/venn.js" 6 | }, 7 | "plugins": [ 8 | [ 9 | "build-plugin-moment-locales", 10 | { 11 | "locales": [ 12 | "zh-cn" 13 | ] 14 | } 15 | ], 16 | [ 17 | "build-plugin-ignore-style", 18 | { 19 | "libraryName": "@alifd/next" 20 | } 21 | ] 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "jsx": "react", 5 | "paths": { 6 | "@/*": ["./src/*"], 7 | "ice": [".ice/index.ts"] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/mock/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'GET /api/profile': { 3 | status: 'SUCCESS', 4 | data: { 5 | name: '淘小宝', 6 | department: '技术部', 7 | avatar: 'https://img.alicdn.com/tfs/TB1L6tBXQyWBuNjy0FpXXassXXa-80-80.png', 8 | userid: 10001, 9 | }, 10 | }, 11 | 'POST /api/login': (req, res) => { 12 | const { username } = req.body; 13 | const authority = 'admin'; 14 | res.cookie('authority', authority); 15 | res.send({ 16 | status: 'SUCCESS', 17 | data: { 18 | authority, 19 | username, 20 | }, 21 | }); 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Fusion Design Pro - JS 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/app.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { runApp } from 'ice'; 3 | import LocaleProvider from '@/components/LocaleProvider'; 4 | import { getLocale } from '@/utils/locale'; 5 | 6 | const locale = getLocale(); 7 | const appConfig = { 8 | app: { 9 | rootId: 'ice-container', 10 | addProvider: ({ children }) => {children}, 11 | }, 12 | }; 13 | runApp(appConfig); 14 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/components/PageHeader/index.module.css: -------------------------------------------------------------------------------- 1 | .pageHeader { 2 | margin-top: calc(0px - var(--shell-dark-content-paddingTop, 20px)); 3 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 4 | margin-bottom: 0; 5 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 6 | padding: var(--shell-dark-content-paddingTop, 20px) var(--shell-dark-content-paddingLeft, 20px); 7 | background-color: var(--color-white, #fff); 8 | } 9 | 10 | .title { 11 | display: block; 12 | color: var(--color-text1-4, #333); 13 | font-weight: var(--font-weight-3, bold); 14 | font-size: var(--font-size-title, 20px); 15 | line-height: 1.5; 16 | } 17 | 18 | .description { 19 | display: block; 20 | color: var(--color-text1-3, #666); 21 | font-size: var(--font-size-body-2, 14px); 22 | line-height: 1.5; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/global.css: -------------------------------------------------------------------------------- 1 | @import '@alifd/theme-design-pro/variables.css'; 2 | @import '@alifd/theme-design-pro/dist/next.var.css'; 3 | 4 | body { 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/Footer/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function Footer() { 5 | return ( 6 |

7 | Alibaba Fusion 8 |
9 | © 2019-现在 Alibaba Fusion & ICE 10 |

11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/Footer/index.module.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | line-height: 20px; 3 | text-align: center; 4 | } 5 | 6 | .logo { 7 | font-weight: bold; 8 | font-size: 16px; 9 | } 10 | 11 | .copyright { 12 | font-size: 12px; 13 | } 14 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/GlobalSearch/index.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { Search } from '@alifd/next'; 3 | 4 | const mockData = [ 5 | { 6 | label: '搜索条件一', 7 | value: '搜索条件一', 8 | }, 9 | { 10 | label: '搜索条件二', 11 | value: '搜索条件二', 12 | }, 13 | { 14 | label: '搜索条件三', 15 | value: '搜索条件三', 16 | }, 17 | { 18 | label: '搜索条件四', 19 | value: '搜索条件四', 20 | }, 21 | ]; 22 | export default function GlobalSearch() { 23 | const initData = []; 24 | const [dataSource, setDataSource] = useState(initData); 25 | 26 | function onChange() { 27 | setDataSource(mockData); 28 | } 29 | 30 | return ; 31 | } 32 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/Logo/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link } from 'ice'; 3 | import styles from './index.module.css'; 4 | 5 | export default function Logo({ image, text, url }) { 6 | return ( 7 |
8 | 9 | {image && logo} 10 | {text} 11 | 12 |
13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/Logo/index.module.css: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | color: var(--color-text1-1, #ccc); 6 | font-weight: bold; 7 | font-size: 14px; 8 | line-height: 22px; 9 | } 10 | 11 | .logo:visited, .logo:link { 12 | color: var(--color-text1-1, #ccc); 13 | } 14 | 15 | .logo img { 16 | height: 24px; 17 | margin-right: 10px; 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/SolutionLink/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Icon } from '@alifd/next'; 3 | import { Link } from 'ice'; 4 | import styles from './index.module.css'; 5 | 6 | const SolutionLink = () => ( 7 |
8 | 9 | 10 | 11 |
12 | ); 13 | 14 | export default SolutionLink; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/BasicLayout/components/SolutionLink/index.module.css: -------------------------------------------------------------------------------- 1 | .link a { 2 | display: inline-block; 3 | width: 40px; 4 | line-height: 50px; 5 | text-align: center; 6 | cursor: pointer; 7 | color: var(--color-white, #fff); 8 | } 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/UserLayout/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function UserLayout({ children }) { 5 | return ( 6 |
7 |
{children}
8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/layouts/UserLayout/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | height: 100vh; 5 | background-image: url('https://img.alicdn.com/tfs/TB1L.owp1H2gK0jSZJnXXaT1FXa-2880-1770.png'); 6 | background-repeat: no-repeat; 7 | background-size: cover; 8 | } 9 | 10 | .content { 11 | width: 100%; 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/locales/en-US/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.i18n.demo': 'i18n demo', 3 | 'app.i18n.content': 'The card is an example for switch i18n.', 4 | }; 5 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/locales/zh-CN/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.i18n.demo': '多语言示例', 3 | 'app.i18n.content': '本区块用来展示多语言切换能力', 4 | }; 5 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/models/user.js: -------------------------------------------------------------------------------- 1 | import { request } from 'ice'; 2 | 3 | export default { 4 | state: { 5 | name: 'default', 6 | department: '', 7 | avatar: '', 8 | userid: null, 9 | }, 10 | effects: (dispatch) => ({ 11 | async fetchUserProfile() { 12 | const res = await request('/api/profile'); 13 | 14 | if (res.status === 'SUCCESS') { 15 | dispatch.user.update(res.data); 16 | } 17 | }, 18 | }), 19 | reducers: { 20 | update(prevState, payload) { 21 | return { ...prevState, ...payload }; 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Advanced/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import AdvancedDetailHead from './components/AdvancedDetailHead'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Advanced = () => { 9 | return ( 10 | 11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default Advanced; 32 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardAreaChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardAreaChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: 1, value: 3 }, 5 | { date: 2, value: 9 }, 6 | { date: 3, value: 5 }, 7 | { date: 4, value: 8 }, 8 | { date: 5, value: 11 }, 9 | { date: 6, value: 6 }, 10 | { date: 7, value: 8 }, 11 | { date: 8, value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardBarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardBarChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3 }, 5 | { date: '2', value: 9 }, 6 | { date: '3', value: 5 }, 7 | { date: '4', value: 8 }, 8 | { date: '5', value: 11 }, 9 | { date: '6', value: 6 }, 10 | { date: '7', value: 8 }, 11 | { date: '8', value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardGroupBarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .fusionCardGroupBarChart { 2 | height: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardLineChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardLineChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3, num: 1 }, 5 | { date: '2', value: 9, num: 2 }, 6 | { date: '3', value: 5, num: 2 }, 7 | { date: '4', value: 8, num: 2 }, 8 | { date: '5', value: 11, num: 2 }, 9 | { date: '6', value: 6, num: 2 }, 10 | { date: '7', value: 8, num: 2 }, 11 | { date: '8', value: 7, num: 2 }, 12 | ], 13 | dailySale: '10', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardPieChart/index.module.css: -------------------------------------------------------------------------------- 1 | .radioGroup { 2 | display: flex; 3 | width: 320px; 4 | text-align: center; 5 | } 6 | 7 | .radioFlex { 8 | flex: 1; 9 | } 10 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardTypebarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Analysis/components/FusionCardTypebarChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '82,234', 3 | saleList: [ 4 | { type: 'a', value: 3 }, 5 | { type: 'b', value: 9 }, 6 | ], 7 | dailySale: '10', 8 | }; 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/BasicDetailPage/components/BasicDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .content { 2 | margin-top: 4px; 3 | margin-right: 8px; 4 | margin-bottom: 12px; 5 | margin-left: 8px; 6 | } 7 | 8 | .mainTable table { 9 | border: 1px solid #e6e6e6; 10 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/BasicDetailPage/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicDetail from './components/BasicDetail'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const BasicDetailPage = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default BasicDetailPage; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/BasicListPage/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicList from './components/BasicList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const BasicListPage = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default BasicListPage; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/CardListPage/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import CardList from './components/CardList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const CardListPage = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default CardListPage; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackFail/components/FailDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .failDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .failDetail div { 9 | text-align: center; 10 | } 11 | 12 | .failDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .failDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .failDetail .description { 25 | margin-bottom: 20px; 26 | color: #666; 27 | font-size: 14px; 28 | line-height: 1.5; 29 | text-align: center; 30 | } 31 | 32 | .failDetail .operationWrap { 33 | text-align: center; 34 | } 35 | 36 | .failDetail .mainAction { 37 | margin-right: 8px; 38 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackForbidden/components/Forbidden/components/Exception/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Card } from '@alifd/next'; 3 | import styles from './index.module.css'; 4 | 5 | const Exception = (props) => { 6 | const { 7 | statusCode = '404', 8 | description = '服务器好像挂了你要等会了', 9 | image = 'https://img.alicdn.com/tfs/TB14c1VoET1gK0jSZFhXXaAtVXa-200-200.png', 10 | } = props; 11 | return ( 12 | 13 |
14 | img 15 |

{statusCode}

16 |
{description}
17 |
18 |
19 | ); 20 | }; 21 | 22 | export default Exception; 23 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackForbidden/components/Forbidden/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackForbidden/components/Forbidden/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function Forbidden() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackNotFound/components/NotFound/components/Exception/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Card } from '@alifd/next'; 3 | import styles from './index.module.css'; 4 | 5 | const Exception = (props) => { 6 | const { 7 | statusCode = '404', 8 | description = '服务器好像挂了你要等会了', 9 | image = 'https://img.alicdn.com/tfs/TB14c1VoET1gK0jSZFhXXaAtVXa-200-200.png', 10 | } = props; 11 | return ( 12 | 13 |
14 | img 15 |

{statusCode}

16 |
{description}
17 |
18 |
19 | ); 20 | }; 21 | 22 | export default Exception; 23 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackNotFound/components/NotFound/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | .exception div { 8 | text-align: center; 9 | } 10 | 11 | .exception .exceptionImage { 12 | margin-bottom: 22px; 13 | } 14 | 15 | .exception .statusCode { 16 | margin-bottom: 6px; 17 | color: #000; 18 | font-size: 28px; 19 | line-height: 52px; 20 | text-align: center; 21 | } 22 | .exception .description { 23 | color: #666; 24 | font-size: 14px; 25 | line-height: 1.5; 26 | text-align: center; 27 | } 28 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackNotFound/components/NotFound/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function NotFound() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackServerError/components/ServerError/components/Exception/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Card } from '@alifd/next'; 3 | import styles from './index.module.css'; 4 | 5 | const Exception = (props) => { 6 | const { 7 | statusCode = '404', 8 | description = '服务器好像挂了你要等会了', 9 | image = 'https://img.alicdn.com/tfs/TB14c1VoET1gK0jSZFhXXaAtVXa-200-200.png', 10 | } = props; 11 | return ( 12 | 13 |
14 | img 15 |

{statusCode}

16 |
{description}
17 |
18 |
19 | ); 20 | }; 21 | 22 | export default Exception; 23 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackServerError/components/ServerError/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackServerError/components/ServerError/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function ServerError() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackSuccess/components/SuccessDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .successDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .successDetail div { 9 | text-align: center; 10 | } 11 | 12 | .successDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .successDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | .successDetail .description { 24 | margin-bottom: 20px; 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } 30 | 31 | .successDetail .operationWrap { 32 | text-align: center; 33 | } 34 | 35 | .successDetail .mainAction { 36 | margin-right: 8px; 37 | } 38 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FeedbackSuccess/components/SuccessDetail/utils.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback, delay) { 4 | const savedCallback = useRef(null); 5 | useEffect(() => { 6 | savedCallback.current = callback; 7 | }); 8 | useEffect(() => { 9 | const tick = () => { 10 | savedCallback.current(); 11 | }; 12 | 13 | if (delay !== null) { 14 | const id = setInterval(tick, delay || 0); 15 | return () => clearInterval(id); 16 | } 17 | }, [delay]); 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FlowGroup/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FlowForm from './components/FlowForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FlowGroup = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FlowGroup; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormBasic/components/BasicForm/index.module.css: -------------------------------------------------------------------------------- 1 | .basicForm { 2 | width: 568px; 3 | margin: 0 auto; 4 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormBasic/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicForm from './components/BasicForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormBasic = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormBasic; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormClassified/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ClassifiedForm from './components/ClassifiedForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormClassified = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormClassified; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormFour/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FourColumnForm from './components/FourColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormFour = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormFour; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormGroup/components/GroupForm/index.module.css: -------------------------------------------------------------------------------- 1 | .groupForm { 2 | padding-bottom: 84px; 3 | } 4 | 5 | .card:not(:first-child) { 6 | margin-top: 20px; 7 | border: none; 8 | } 9 | 10 | .button { 11 | min-width: 84px; 12 | } 13 | 14 | .fixedButtons { 15 | position: fixed; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | z-index: 1; 20 | height: 66px; 21 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 22 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 23 | background: #fff; 24 | box-shadow: var(--shadow-3-up, 0 -3px 5px 0 rgba(0, 0, 0, 0.12)); 25 | } 26 | 27 | .mainTable table { 28 | border: 1px solid #e6e6e6; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormGroup/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import GroupForm from './components/GroupForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormGroup = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormGroup; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormHierarchical/components/HierarchicalForm/index.module.css: -------------------------------------------------------------------------------- 1 | .hierarchicalForm { 2 | width: 568px; 3 | max-width: 100%; 4 | margin: 0 auto; 5 | } 6 | 7 | .hierarchicalBlock { 8 | margin-top: 12px; 9 | padding: 20px; 10 | background: #f5f5f5; 11 | } 12 | 13 | .card { 14 | border: none; 15 | } 16 | 17 | .formButton { 18 | min-width: 84px; 19 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormStep/components/StepForm/index.module.css: -------------------------------------------------------------------------------- 1 | .stepForm { 2 | width: 568px; 3 | margin: 40px auto 24px; 4 | } 5 | 6 | .successIcon { 7 | color: var(--color-success-3, #46bc15); 8 | } 9 | 10 | .form { 11 | margin-top: 40px; 12 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormStep/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import StepForm from './components/StepForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormStep = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormStep; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormThree/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ThreeColumnForm from './components/ThreeColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormThree = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormThree; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FormTwo/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import TwoColumnForm from './components/TwoColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormTwo = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default FormTwo; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionActionTable/components/ActionTable/util.jsx: -------------------------------------------------------------------------------- 1 | export function getColumnKey(column) { 2 | if (column) { 3 | return column.key || String(column.title) || column.dataIndex; 4 | } 5 | 6 | return null; 7 | } 8 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionDialogTable/components/DialogTable/EmptyBlock.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
数据为空
10 |
11 | ); 12 | }; 13 | 14 | export default EmptyBlock; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionDialogTable/components/DialogTable/ExceptionBlock.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | const ExceptionBlock = ({ onRefresh }) => { 5 | return ( 6 |
7 |
8 | data empty 9 |
10 |
11 | 14 |
15 |
16 | ); 17 | }; 18 | 19 | export default ExceptionBlock; 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionDialogTable/components/DialogTable/index.module.css: -------------------------------------------------------------------------------- 1 | .dialogTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .dialogTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .dialogTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .dialogTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionExpandTable/components/ExpandTable/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .next-table-expanded-row .next-table { 2 | padding: 20px; 3 | } 4 | 5 | .tableActions button { 6 | margin-right: 8px; 7 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionFilterTable/components/FilterTable/EmptyBlock.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
数据为空
10 |
11 | ); 12 | }; 13 | 14 | export default EmptyBlock; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionFilterTable/components/FilterTable/ExceptionBlock.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | const ExceptionBlock = ({ onRefresh }) => { 5 | return ( 6 |
7 |
8 | data empty 9 |
10 |
11 | 14 |
15 |
16 | ); 17 | }; 18 | 19 | export default ExceptionBlock; 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionFilterTable/components/FilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .filterTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .filterTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .filterTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .filterTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionMutilcolTable/components/MultiColFilterTable/EmptyBlock.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | const EmptyBlock = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
数据为空
10 |
11 | ); 12 | }; 13 | 14 | export default EmptyBlock; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionMutilcolTable/components/MultiColFilterTable/ExceptionBlock.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | const ExceptionBlock = ({ onRefresh = () => {} }) => { 5 | return ( 6 |
7 |
8 | data empty 9 |
10 |
11 | 14 |
15 |
16 | ); 17 | }; 18 | 19 | export default ExceptionBlock; 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionMutilcolTable/components/MultiColFilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .container :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .container :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .container :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } 24 | 25 | .container .form-actions { 26 | text-align: right; 27 | align-self: end; 28 | } 29 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionSinglecolTable/components/SingleColFilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .wrap { 2 | margin: var(--s-5, 20px); 3 | } 4 | 5 | .formWrap { 6 | margin-bottom: var(--s-5, 20px); 7 | } 8 | 9 | .pagination { 10 | text-align: right; 11 | margin-top: var(--s-5, 20px); 12 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/FusionSingletreeTable/components/SingleTreeTable/index.module.css: -------------------------------------------------------------------------------- 1 | .buttonGroup :global .next-btn-text { 2 | margin-right: 12px; 3 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Login/components/LoginBlock/utils.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback, delay) { 4 | const savedCallback = useRef(null); 5 | useEffect(() => { 6 | savedCallback.current = callback; 7 | }); 8 | useEffect(() => { 9 | const tick = () => { 10 | savedCallback.current(); 11 | }; 12 | 13 | if (delay !== null) { 14 | const id = setInterval(tick, delay || 0); 15 | return () => clearInterval(id); 16 | } 17 | }, [delay]); 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Login/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import LoginBlock from './components/LoginBlock'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Login = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Login; 18 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Person/components/SettingPersonBlock/index.module.css: -------------------------------------------------------------------------------- 1 | .settingPersonBlock { 2 | width: 568px; 3 | margin: var( --s-19,76px) auto; 4 | } 5 | 6 | .uploadButton { 7 | width: 88px; 8 | font-size: 14px; 9 | } 10 | 11 | .changeLogo p { 12 | margin: 0; 13 | color: rgba(0, 0, 0, 0.50); 14 | font-size: 12px; 15 | line-height: 18px; 16 | letter-spacing: 0; 17 | } 18 | 19 | .validateCodeInput { 20 | width: 100%; 21 | } 22 | 23 | .validateCodeButton { 24 | width: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Person/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SettingPersonBlock from './components/SettingPersonBlock'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Person = () => { 9 | return ( 10 | 11 | 12 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default Person; 33 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Register/components/LoginBlock/utils.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback, delay) { 4 | const savedCallback = useRef(null); 5 | useEffect(() => { 6 | savedCallback.current = callback; 7 | }); 8 | useEffect(() => { 9 | const tick = () => { 10 | savedCallback.current(); 11 | }; 12 | 13 | if (delay !== null) { 14 | const id = setInterval(tick, delay || 0); 15 | return () => clearInterval(id); 16 | } 17 | }, [delay]); 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Register/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import LoginBlock from './components/LoginBlock'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Register = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Register; 18 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Settings/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SettingSystemBlock from './components/SettingSystemBlock'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Settings = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default Settings; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Solution/components/UserInfo/index.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react'; 2 | import { Avatar, Card } from '@alifd/next'; 3 | import store from '@/store'; 4 | 5 | const UserInfo = () => { 6 | const [userInfo, userDispatchers] = store.useModel('user'); 7 | useEffect(() => { 8 | userDispatchers.fetchUserProfile(); 9 | }, []); 10 | return ( 11 | 12 | 13 | 14 | 15 | 16 | 21 | {userInfo.name} 22 | 23 | 24 | 25 | ); 26 | }; 27 | 28 | export default UserInfo; 29 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Solution/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import Tasks from './components/Tasks'; 5 | import UserInfo from './components/UserInfo'; 6 | import SelectLang from './components/SelectLang'; 7 | 8 | const { Cell } = ResponsiveGrid; 9 | 10 | const Solution = () => { 11 | return ( 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default Solution; 33 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Solution/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'ice'; 2 | import tasks from './models/tasks'; 3 | 4 | const store = createStore({ 5 | tasks, 6 | }); 7 | export default store; 8 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/TableListPage/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicList from './components/BasicList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const TableListPage = () => { 9 | return ( 10 | 11 | 12 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default TableListPage; 34 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/pages/Workplace/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import WorkTable from './components/WorkTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Workplace = () => { 9 | return ( 10 | 11 | 12 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default Workplace; 32 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'ice'; 2 | import user from './models/user'; 3 | 4 | const store = createStore({ 5 | user, 6 | }); 7 | export default store; 8 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro-js/src/utils/locale.js: -------------------------------------------------------------------------------- 1 | function setLocale(lang) { 2 | if (lang !== undefined && !/^([a-z]{2})-([A-Z]{2})$/.test(lang)) { 3 | throw new Error('setLocale lang format error'); 4 | } 5 | 6 | if (typeof window !== 'undefined' && getLocale() !== lang) { 7 | window.localStorage.setItem('lang', lang); 8 | window.location.reload(); 9 | } 10 | } 11 | 12 | function getLocale() { 13 | if (typeof window !== 'undefined') { 14 | if (!window.localStorage.getItem('lang')) { 15 | window.localStorage.setItem('lang', navigator.language); 16 | } 17 | 18 | return localStorage.getItem('lang') || ''; 19 | } 20 | 21 | return ''; 22 | } 23 | 24 | export { setLocale, getLocale }; 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "iceworks-team.iceworks" 4 | ] 5 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | .ice/ 6 | 7 | # node 覆盖率文件 8 | coverage/ 9 | 10 | # 忽略文件 11 | **/*-min.js 12 | **/*.min.js 13 | 14 | package-lock.json 15 | yarn.lock 16 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_eslintrc.js: -------------------------------------------------------------------------------- 1 | const { getESLintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getESLintConfig('react-ts', { 4 | rules: { 5 | 'react/jsx-filename-extension': 0, 6 | '@typescript-eslint/explicit-function-return-type': 0, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # production 7 | build/ 8 | dist/ 9 | tmp/ 10 | lib/ 11 | 12 | # misc 13 | .idea/ 14 | .happypack 15 | .DS_Store 16 | *.swp 17 | *.dia~ 18 | .ice 19 | .vscode 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | index.module.scss.d.ts 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_prettierignore: -------------------------------------------------------------------------------- 1 | build/ 2 | tests/ 3 | demo/ 4 | .ice/ 5 | coverage/ 6 | **/*-min.js 7 | **/*.min.js 8 | package-lock.json 9 | yarn.lock -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_prettierrc.js: -------------------------------------------------------------------------------- 1 | const { getPrettierConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getPrettierConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_stylelintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | 6 | # node 覆盖率文件 7 | coverage/ 8 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/_stylelintrc.js: -------------------------------------------------------------------------------- 1 | const { getStylelintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getStylelintConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "publicPath": "./", 3 | "vite": true, 4 | "alias": { 5 | "venn.js": "venn.js/build/venn.js" 6 | }, 7 | "plugins": [ 8 | [ 9 | "build-plugin-moment-locales", 10 | { 11 | "locales": [ 12 | "zh-cn" 13 | ] 14 | } 15 | ], 16 | [ 17 | "build-plugin-ignore-style", 18 | { 19 | "libraryName": "@alifd/next" 20 | } 21 | ] 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/mock/index.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'GET /api/profile': { 3 | status: 'SUCCESS', 4 | data: { 5 | name: '淘小宝', 6 | department: '技术部', 7 | avatar: 'https://img.alicdn.com/tfs/TB1L6tBXQyWBuNjy0FpXXassXXa-80-80.png', 8 | userid: 10001, 9 | }, 10 | }, 11 | 'POST /api/login': (req, res) => { 12 | const { username } = req.body; 13 | const authority = 'admin'; 14 | res.cookie('authority', authority); 15 | res.send({ 16 | status: 'SUCCESS', 17 | data: { 18 | authority, 19 | username, 20 | }, 21 | }); 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Fusion Design Pro - TS 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/app.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { runApp, IAppConfig } from 'ice'; 3 | import LocaleProvider from '@/components/LocaleProvider'; 4 | import { getLocale } from '@/utils/locale'; 5 | 6 | const locale = getLocale(); 7 | 8 | const appConfig: IAppConfig = { 9 | app: { 10 | rootId: 'ice-container', 11 | addProvider: ({ children }) => ( 12 | {children} 13 | ), 14 | }, 15 | }; 16 | runApp(appConfig); 17 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/components/PageHeader/index.module.css: -------------------------------------------------------------------------------- 1 | .pageHeader { 2 | margin-top: calc(0px - var(--shell-dark-content-paddingTop, 20px)); 3 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 4 | margin-bottom: 0; 5 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 6 | padding: var(--shell-dark-content-paddingTop, 20px) var(--shell-dark-content-paddingLeft, 20px); 7 | background-color: var(--color-white, #fff); 8 | } 9 | 10 | .title { 11 | display: block; 12 | color: var(--color-text1-4, #333); 13 | font-weight: var(--font-weight-3, bold); 14 | font-size: var(--font-size-title, 20px); 15 | line-height: 1.5; 16 | } 17 | 18 | .description { 19 | display: block; 20 | color: var(--color-text1-3, #666); 21 | font-size: var(--font-size-body-2, 14px); 22 | line-height: 1.5; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/global.css: -------------------------------------------------------------------------------- 1 | @import '@alifd/theme-design-pro/variables.css'; 2 | @import '@alifd/theme-design-pro/dist/next.var.css'; 3 | 4 | body { 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/Footer/index.module.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | line-height: 20px; 3 | text-align: center; 4 | } 5 | 6 | .logo { 7 | font-weight: bold; 8 | font-size: 16px; 9 | } 10 | 11 | .copyright { 12 | font-size: 12px; 13 | } 14 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/Footer/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function Footer() { 5 | return ( 6 |

7 | Alibaba Fusion 8 |
9 | © 2019-现在 Alibaba Fusion & ICE 10 |

11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/GlobalSearch/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { Search } from '@alifd/next'; 3 | 4 | export interface IData { 5 | label: string; 6 | value: string; 7 | } 8 | 9 | const mockData: IData[] = [{ 10 | label: '搜索条件一', 11 | value: '搜索条件一', 12 | }, { 13 | label: '搜索条件二', 14 | value: '搜索条件二', 15 | }, { 16 | label: '搜索条件三', 17 | value: '搜索条件三', 18 | }, { 19 | label: '搜索条件四', 20 | value: '搜索条件四', 21 | }, 22 | ]; 23 | export default function GlobalSearch() { 24 | const initData: IData[] = []; 25 | const [dataSource, setDataSource] = useState(initData); 26 | function onChange() { 27 | setDataSource(mockData); 28 | } 29 | return ( 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/Logo/index.module.css: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | color: var(--color-text1-1, #ccc); 6 | font-weight: bold; 7 | font-size: 14px; 8 | line-height: 22px; 9 | } 10 | 11 | .logo:visited, .logo:link { 12 | color: var(--color-text1-1, #ccc); 13 | } 14 | 15 | .logo img { 16 | height: 24px; 17 | margin-right: 10px; 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/Logo/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link } from 'ice'; 3 | import styles from './index.module.css'; 4 | 5 | export interface ILogoProps { 6 | image?: string; 7 | text?: string; 8 | url?: string; 9 | } 10 | 11 | export default function Logo({ image, text, url }: ILogoProps) { 12 | return ( 13 |
14 | 15 | { image && logo} 16 | {text} 17 | 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/SolutionLink/index.module.css: -------------------------------------------------------------------------------- 1 | .link a { 2 | display: inline-block; 3 | width: 40px; 4 | line-height: 50px; 5 | text-align: center; 6 | cursor: pointer; 7 | color: var(--color-white, #fff); 8 | } 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/BasicLayout/components/SolutionLink/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Icon } from '@alifd/next'; 3 | import { Link } from 'ice'; 4 | import styles from './index.module.css'; 5 | 6 | const SolutionLink = () => ( 7 |
8 | 9 | 10 | 11 |
12 | ); 13 | 14 | export default SolutionLink; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/UserLayout/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | height: 100vh; 5 | background-image: url('https://img.alicdn.com/tfs/TB1L.owp1H2gK0jSZJnXXaT1FXa-2880-1770.png'); 6 | background-repeat: no-repeat; 7 | background-size: cover; 8 | } 9 | 10 | .content { 11 | width: 100%; 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/layouts/UserLayout/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function UserLayout({ children }: { children: React.ReactNode }) { 5 | return ( 6 |
7 |
8 | {children} 9 |
10 |
11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/locales/en-US/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.i18n.demo': 'i18n demo', 3 | 'app.i18n.content': 'The card is an example for switch i18n.', 4 | }; 5 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/locales/zh-CN/index.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.i18n.demo': '多语言示例', 3 | 'app.i18n.content': '本区块用来展示多语言切换能力', 4 | }; 5 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/models/user.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'ice'; 2 | 3 | interface IState { 4 | name: string; 5 | department: string; 6 | avatar: string; 7 | userid: number | null; 8 | } 9 | 10 | export default { 11 | state: { 12 | name: 'default', 13 | department: '', 14 | avatar: '', 15 | userid: null, 16 | }, 17 | 18 | effects: (dispatch) => ({ 19 | async fetchUserProfile() { 20 | const res = await request('/api/profile'); 21 | if (res.status === 'SUCCESS') { 22 | dispatch.user.update(res.data); 23 | } 24 | }, 25 | }), 26 | 27 | reducers: { 28 | update(prevState: IState, payload: IState) { 29 | return { ...prevState, ...payload }; 30 | }, 31 | }, 32 | }; 33 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Advanced/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import AdvancedDetailHead from './components/AdvancedDetailHead'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Advanced = () => { 9 | return ( 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ); 22 | }; 23 | 24 | export default Advanced; 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardAreaChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardAreaChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: 1, value: 3 }, 5 | { date: 2, value: 9 }, 6 | { date: 3, value: 5 }, 7 | { date: 4, value: 8 }, 8 | { date: 5, value: 11 }, 9 | { date: 6, value: 6 }, 10 | { date: 7, value: 8 }, 11 | { date: 8, value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardBarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } 36 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardBarChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3 }, 5 | { date: '2', value: 9 }, 6 | { date: '3', value: 5 }, 7 | { date: '4', value: 8 }, 8 | { date: '5', value: 11 }, 9 | { date: '6', value: 6 }, 10 | { date: '7', value: 8 }, 11 | { date: '8', value: 7 }, 12 | ], 13 | dailySale: '¥1,234', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardGroupBarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .fusionCardGroupBarChart { 2 | height: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardLineChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardLineChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '123,456', 3 | saleList: [ 4 | { date: '1', value: 3, num: 1 }, 5 | { date: '2', value: 9, num: 2 }, 6 | { date: '3', value: 5, num: 2 }, 7 | { date: '4', value: 8, num: 2 }, 8 | { date: '5', value: 11, num: 2 }, 9 | { date: '6', value: 6, num: 2 }, 10 | { date: '7', value: 8, num: 2 }, 11 | { date: '8', value: 7, num: 2 }, 12 | ], 13 | dailySale: '10', 14 | }; 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardPieChart/index.module.css: -------------------------------------------------------------------------------- 1 | .radioGroup { 2 | display: flex; 3 | width: 320px; 4 | text-align: center; 5 | } 6 | 7 | .radioFlex { 8 | flex: 1; 9 | } 10 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardTypebarChart/index.module.css: -------------------------------------------------------------------------------- 1 | .cardSubTitle { 2 | color: var(--color-text1-2, #999); 3 | font-size: 12px; 4 | line-height: 22px; 5 | letter-spacing: 0; 6 | } 7 | 8 | .cardDes { 9 | margin-top: 6px; 10 | color: var(--color-text1-2, #999); 11 | font-size: 12px; 12 | line-height: 17px; 13 | letter-spacing: 0; 14 | } 15 | 16 | .cardDes span { 17 | margin-left: 2px; 18 | color: #36cfc9; 19 | font-weight: bold; 20 | } 21 | 22 | .cardValue { 23 | margin-top: 10px; 24 | color: #333; 25 | font-weight: var(--font-weight-3, bold); 26 | font-size: 28px; 27 | line-height: 28px; 28 | letter-spacing: 0; 29 | } 30 | 31 | .cardFoot { 32 | padding: 13px 16px; 33 | color: #666; 34 | font-size: 12px; 35 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Analysis/components/FusionCardTypebarChart/mock.js: -------------------------------------------------------------------------------- 1 | export default { 2 | value: '82,234', 3 | saleList: [ 4 | { type: 'a', value: 3 }, 5 | { type: 'b', value: 9 }, 6 | ], 7 | dailySale: '10', 8 | }; 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/BasicDetailPage/components/BasicDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .content { 2 | margin-top: 4px; 3 | margin-right: 8px; 4 | margin-bottom: 12px; 5 | margin-left: 8px; 6 | } 7 | 8 | .mainTable table { 9 | border: 1px solid #e6e6e6; 10 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/BasicDetailPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicDetail from './components/BasicDetail'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const BasicDetailPage = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default BasicDetailPage; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/BasicListPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicList from './components/BasicList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const BasicListPage = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default BasicListPage; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/CardListPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import CardList from './components/CardList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const CardListPage = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default CardListPage; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackFail/components/FailDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .failDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .failDetail div { 9 | text-align: center; 10 | } 11 | 12 | .failDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .failDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .failDetail .description { 25 | margin-bottom: 20px; 26 | color: #666; 27 | font-size: 14px; 28 | line-height: 1.5; 29 | text-align: center; 30 | } 31 | 32 | .failDetail .operationWrap { 33 | text-align: center; 34 | } 35 | 36 | .failDetail .mainAction { 37 | margin-right: 8px; 38 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackFail/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FailDetail from './components/FailDetail'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FeedbackFail = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FeedbackFail; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackForbidden/components/Forbidden/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackForbidden/components/Forbidden/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function Forbidden() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackForbidden/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import Forbidden from './components/Forbidden'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FeedbackForbidden = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FeedbackForbidden; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackNotFound/components/NotFound/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | .exception div { 8 | text-align: center; 9 | } 10 | 11 | .exception .exceptionImage { 12 | margin-bottom: 22px; 13 | } 14 | 15 | .exception .statusCode { 16 | margin-bottom: 6px; 17 | color: #000; 18 | font-size: 28px; 19 | line-height: 52px; 20 | text-align: center; 21 | } 22 | .exception .description { 23 | color: #666; 24 | font-size: 14px; 25 | line-height: 1.5; 26 | text-align: center; 27 | } 28 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackNotFound/components/NotFound/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function NotFound() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackNotFound/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import NotFound from './components/NotFound'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FeedbackNotFound = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FeedbackNotFound; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackServerError/components/ServerError/components/Exception/index.module.css: -------------------------------------------------------------------------------- 1 | .exception { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 504px; 6 | } 7 | 8 | .exception div { 9 | text-align: center; 10 | } 11 | 12 | .exception .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .exception .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | 24 | .exception .description { 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackServerError/components/ServerError/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Exception from './components/Exception'; 3 | 4 | export default function ServerError() { 5 | return ( 6 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackServerError/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ServerError from './components/ServerError'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FeedbackServerError = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FeedbackServerError; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackSuccess/components/SuccessDetail/index.module.css: -------------------------------------------------------------------------------- 1 | .successDetail { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 428px; 6 | } 7 | 8 | .successDetail div { 9 | text-align: center; 10 | } 11 | 12 | .successDetail .exceptionImage { 13 | margin-bottom: 22px; 14 | } 15 | 16 | .successDetail .statusCode { 17 | margin-bottom: 6px; 18 | color: #000; 19 | font-size: 28px; 20 | line-height: 52px; 21 | text-align: center; 22 | } 23 | .successDetail .description { 24 | margin-bottom: 20px; 25 | color: #666; 26 | font-size: 14px; 27 | line-height: 1.5; 28 | text-align: center; 29 | } 30 | 31 | .successDetail .operationWrap { 32 | text-align: center; 33 | } 34 | 35 | .successDetail .mainAction { 36 | margin-right: 8px; 37 | } 38 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackSuccess/components/SuccessDetail/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FeedbackSuccess/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SuccessDetail from './components/SuccessDetail'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FeedbackSuccess = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FeedbackSuccess; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FlowGroup/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FlowForm from './components/FlowForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FlowGroup = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FlowGroup; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormBasic/components/BasicForm/index.module.css: -------------------------------------------------------------------------------- 1 | .basicForm { 2 | width: 568px; 3 | margin: 0 auto; 4 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormBasic/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicForm from './components/BasicForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormBasic = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormBasic; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormClassified/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ClassifiedForm from './components/ClassifiedForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormClassified = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormClassified; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormFour/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FourColumnForm from './components/FourColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormFour = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormFour; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormGroup/components/GroupForm/index.module.css: -------------------------------------------------------------------------------- 1 | .groupForm { 2 | padding-bottom: 84px; 3 | } 4 | 5 | .card:not(:first-child) { 6 | margin-top: 20px; 7 | border: none; 8 | } 9 | 10 | .button { 11 | min-width: 84px; 12 | } 13 | 14 | .fixedButtons { 15 | position: fixed; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | z-index: 1; 20 | height: 66px; 21 | margin-right: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 22 | margin-left: calc(0px - var(--shell-dark-content-paddingLeft, 20px)); 23 | background: #fff; 24 | box-shadow: var(--shadow-3-up, 0 -3px 5px 0 rgba(0, 0, 0, 0.12)); 25 | } 26 | 27 | .mainTable table { 28 | border: 1px solid #e6e6e6; 29 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormGroup/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import GroupForm from './components/GroupForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormGroup = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormGroup; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormHierarchical/components/HierarchicalForm/index.module.css: -------------------------------------------------------------------------------- 1 | .hierarchicalForm { 2 | width: 568px; 3 | max-width: 100%; 4 | margin: 0 auto; 5 | } 6 | 7 | .hierarchicalBlock { 8 | margin-top: 12px; 9 | padding: 20px; 10 | background: #f5f5f5; 11 | } 12 | 13 | .card { 14 | border: none; 15 | } 16 | 17 | .formButton { 18 | min-width: 84px; 19 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormHierarchical/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import HierarchicalForm from './components/HierarchicalForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormHierarchical = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormHierarchical; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormStep/components/StepForm/index.module.css: -------------------------------------------------------------------------------- 1 | .stepForm { 2 | width: 568px; 3 | margin: 40px auto 24px; 4 | } 5 | 6 | .successIcon { 7 | color: var(--color-success-3, #46bc15); 8 | } 9 | 10 | .form { 11 | margin-top: 40px; 12 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormStep/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import StepForm from './components/StepForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormStep = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormStep; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormThree/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ThreeColumnForm from './components/ThreeColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormThree = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormThree; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FormTwo/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import TwoColumnForm from './components/TwoColumnForm'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FormTwo = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default FormTwo; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionActionTable/components/ActionTable/util.tsx: -------------------------------------------------------------------------------- 1 | import { ColumnProps } from '@alifd/next/types/table'; 2 | 3 | export function getColumnKey(column: ColumnProps & { key?: string }): string | null { 4 | if (column) { 5 | return column.key || String(column.title) || column.dataIndex; 6 | } 7 | return null; 8 | } 9 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionActionTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ActionTable from './components/ActionTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionActionTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionActionTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionDialogTable/components/DialogTable/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock: React.FC = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionDialogTable/components/DialogTable/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface IProps { 5 | onRefresh: () => void; 6 | } 7 | 8 | const ExceptionBlock: React.FC = ({ onRefresh }) => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionDialogTable/components/DialogTable/index.module.css: -------------------------------------------------------------------------------- 1 | .dialogTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .dialogTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .dialogTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .dialogTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionDialogTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import DialogTable from './components/DialogTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionDialogTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionDialogTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionExpandTable/components/ExpandTable/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .next-table-expanded-row .next-table { 2 | padding: 20px; 3 | } 4 | 5 | .tableActions button { 6 | margin-right: 8px; 7 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionExpandTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import ExpandTable from './components/ExpandTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionExpandTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionExpandTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionFilterTable/components/FilterTable/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const EmptyBlock: React.FunctionComponent = (): JSX.Element => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionFilterTable/components/FilterTable/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface IExceptionBlockProps { 5 | onRefresh: () => Promise; 6 | } 7 | 8 | const ExceptionBlock: React.FunctionComponent = ({ onRefresh }): JSX.Element => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionFilterTable/components/FilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .filterTable :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .filterTable :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .filterTable :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .filterTable :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionFilterTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import FilterTable from './components/FilterTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionFilterTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionFilterTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionMergecellTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import MergeCellTable from './components/MergeCellTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionMergecellTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionMergecellTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionMutilcolTable/components/MultiColFilterTable/EmptyBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | const EmptyBlock: React.FC = () => { 4 | return ( 5 |
6 |
7 | data empty 8 |
9 |
10 | 数据为空 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default EmptyBlock; 17 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionMutilcolTable/components/MultiColFilterTable/ExceptionBlock.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Button } from '@alifd/next'; 3 | 4 | interface Iprops { 5 | onRefresh?: () => any; 6 | } 7 | 8 | const ExceptionBlock: React.FC = ({ onRefresh = () => {} }) => { 9 | return ( 10 |
11 |
12 | data empty 13 |
14 |
15 | 16 |
17 |
18 | ); 19 | }; 20 | 21 | export default ExceptionBlock; 22 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionMutilcolTable/components/MultiColFilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .container :global .table-empty-block { 2 | width: 100%; 3 | min-height: 200px; 4 | display: flex; 5 | flex-direction: column; 6 | justify-content: center; 7 | align-items: center; 8 | user-select: none; 9 | } 10 | 11 | .container :global .table-empty-block .result-image { 12 | height: 120px; 13 | } 14 | 15 | .container :global .table-empty-block .result-image img { 16 | height: 100%; 17 | } 18 | 19 | .container :global .table-empty-block .result-title { 20 | font-size: 12px; 21 | line-height: 1.5; 22 | color: #bcc4cc; 23 | } 24 | 25 | .container .form-actions { 26 | text-align: right; 27 | align-self: end; 28 | } 29 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionMutilcolTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import MultiColFilterTable from './components/MultiColFilterTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionMutilcolTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionMutilcolTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionSinglecolTable/components/SingleColFilterTable/index.module.css: -------------------------------------------------------------------------------- 1 | .wrap { 2 | margin: var(--s-5, 20px); 3 | } 4 | 5 | .formWrap { 6 | margin-bottom: var(--s-5, 20px); 7 | } 8 | 9 | .pagination { 10 | text-align: right; 11 | margin-top: var(--s-5, 20px); 12 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionSingletreeTable/components/SingleTreeTable/index.module.css: -------------------------------------------------------------------------------- 1 | .buttonGroup :global .next-btn-text { 2 | margin-right: 12px; 3 | } -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/FusionSingletreeTable/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SingleTreeTable from './components/SingleTreeTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const FusionSingletreeTable = () => { 9 | return ( 10 | 11 | 12 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | }; 29 | 30 | export default FusionSingletreeTable; 31 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Login/components/LoginBlock/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Login/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import LoginBlock from './components/LoginBlock'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Login = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Login; 18 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Person/components/SettingPersonBlock/index.module.css: -------------------------------------------------------------------------------- 1 | .settingPersonBlock { 2 | width: 568px; 3 | margin: var( --s-19,76px) auto; 4 | } 5 | 6 | .uploadButton { 7 | width: 88px; 8 | font-size: 14px; 9 | } 10 | 11 | .changeLogo p { 12 | margin: 0; 13 | color: rgba(0, 0, 0, 0.50); 14 | font-size: 12px; 15 | line-height: 18px; 16 | letter-spacing: 0; 17 | } 18 | 19 | .validateCodeInput { 20 | width: 100%; 21 | } 22 | 23 | .validateCodeButton { 24 | width: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Person/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SettingPersonBlock from './components/SettingPersonBlock'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Person = () => { 9 | return ( 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ); 23 | }; 24 | 25 | export default Person; 26 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Register/components/LoginBlock/utils.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | export function useInterval(callback: () => void, delay: number) { 4 | const savedCallback = useRef(null); 5 | 6 | useEffect(() => { 7 | savedCallback.current = callback; 8 | }); 9 | 10 | useEffect(() => { 11 | const tick = () => { 12 | savedCallback.current(); 13 | }; 14 | if (delay !== null) { 15 | const id = setInterval(tick, delay || 0); 16 | return () => clearInterval(id); 17 | } 18 | }, [delay]); 19 | } 20 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Register/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import LoginBlock from './components/LoginBlock'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Register = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Register; 18 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Settings/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import SettingSystemBlock from './components/SettingSystemBlock'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Settings = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default Settings; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Solution/components/UserInfo/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react'; 2 | import { Avatar, Card } from '@alifd/next'; 3 | import store from '@/store'; 4 | 5 | const UserInfo = () => { 6 | const [userInfo, userDispatchers] = store.useModel('user'); 7 | useEffect(() => { 8 | userDispatchers.fetchUserProfile(); 9 | }, []); 10 | 11 | return ( 12 | 13 | 16 | 17 | 18 | 19 | {userInfo.name} 20 | 21 | 22 | ); 23 | }; 24 | 25 | export default UserInfo; 26 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Solution/store.ts: -------------------------------------------------------------------------------- 1 | import { createStore } from 'ice'; 2 | import tasks from './models/tasks'; 3 | 4 | const store = createStore({ tasks }); 5 | 6 | export default store; 7 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/TableListPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import BasicList from './components/BasicList'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const TableListPage = () => { 9 | return ( 10 | 11 | 12 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default TableListPage; 27 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/pages/Workplace/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import PageHeader from '@/components/PageHeader'; 4 | import WorkTable from './components/WorkTable'; 5 | 6 | const { Cell } = ResponsiveGrid; 7 | 8 | const Workplace = () => { 9 | return ( 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ); 22 | }; 23 | 24 | export default Workplace; 25 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/store.ts: -------------------------------------------------------------------------------- 1 | import { createStore } from 'ice'; 2 | import user from './models/user'; 3 | 4 | const store = createStore({ user }); 5 | 6 | export default store; 7 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.module.scss' { 2 | const classes: { [key: string]: string }; 3 | export default classes; 4 | } 5 | 6 | declare module '*.module.less' { 7 | const classes: { [key: string]: string }; 8 | export default classes; 9 | } 10 | 11 | declare module '*.module.css' { 12 | const classes: { [key: string]: string }; 13 | export default classes; 14 | } 15 | -------------------------------------------------------------------------------- /scaffolds/fusion-design-pro/src/utils/locale.ts: -------------------------------------------------------------------------------- 1 | function setLocale(lang: string) { 2 | if (lang !== undefined && !/^([a-z]{2})-([A-Z]{2})$/.test(lang)) { 3 | throw new Error('setLocale lang format error'); 4 | } 5 | 6 | if (typeof window !== 'undefined' && getLocale() !== lang) { 7 | window.localStorage.setItem('lang', lang); 8 | window.location.reload(); 9 | } 10 | } 11 | 12 | function getLocale() { 13 | if (typeof window !== 'undefined') { 14 | if (!window.localStorage.getItem('lang')) { 15 | window.localStorage.setItem('lang', navigator.language); 16 | } 17 | return localStorage.getItem('lang') || ''; 18 | } 19 | return ''; 20 | } 21 | 22 | export { setLocale, getLocale }; 23 | -------------------------------------------------------------------------------- /scaffolds/ice-stark-child/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@icedesign/stark-child-scaffold", 3 | "version": "latest", 4 | "description": "微前端方案 icestark 的子应用模板,用于快速初始化微应用", 5 | "homepage": "https://icestark-react.surge.sh/seller", 6 | "scaffoldConfig": { 7 | "name": "ice-stark-child", 8 | "title": "icestark 子应用", 9 | "categories": [ 10 | "icestark" 11 | ], 12 | "screenshot": "https://img.alicdn.com/tfs/TB1X5.paYr1gK0jSZFDXXb9yVXa-2480-1200.png" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/icestark-child" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/ice-stark-layout/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@icedesign/stark-layout-scaffold", 3 | "version": "latest", 4 | "description": "微前端方案 icestark 的主应用模板,用于快速初始化主应用", 5 | "homepage": "https://icestark-react.surge.sh", 6 | "scaffoldConfig": { 7 | "name": "ice-stark-layout", 8 | "title": "icestark 主应用", 9 | "categories": [ 10 | "icestark" 11 | ], 12 | "screenshot": "https://img.alicdn.com/tfs/TB1WMB9YAL0gK0jSZFAXXcA9pXa-1625-883.png" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/ice-lab/react-materials/tree/master/scaffolds/icestark-layout" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "iceworks-team.iceworks" 4 | ] 5 | } -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | .ice/ 6 | 7 | # node 覆盖率文件 8 | coverage/ 9 | 10 | # 忽略文件 11 | **/*-min.js 12 | **/*.min.js 13 | 14 | package-lock.json 15 | yarn.lock 16 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_eslintrc.js: -------------------------------------------------------------------------------- 1 | const { getESLintConfig } = require('@iceworks/spec'); 2 | 3 | // https://www.npmjs.com/package/@iceworks/spec 4 | module.exports = getESLintConfig('react'); 5 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # production 7 | build/ 8 | dist/ 9 | tmp/ 10 | lib/ 11 | 12 | # misc 13 | .idea/ 14 | .happypack 15 | .DS_Store 16 | *.swp 17 | *.dia~ 18 | .ice 19 | .vscode 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | index.module.scss.d.ts 25 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_prettierignore: -------------------------------------------------------------------------------- 1 | build/ 2 | tests/ 3 | demo/ 4 | .ice/ 5 | coverage/ 6 | **/*-min.js 7 | **/*.min.js 8 | package-lock.json 9 | yarn.lock -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_prettierrc.js: -------------------------------------------------------------------------------- 1 | const { getPrettierConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getPrettierConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_stylelintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | 6 | # node 覆盖率文件 7 | coverage/ 8 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/_stylelintrc.js: -------------------------------------------------------------------------------- 1 | const { getStylelintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getStylelintConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "publicPath": "./", 3 | "vite": true, 4 | "plugins": [ 5 | [ 6 | "build-plugin-moment-locales", 7 | { 8 | "locales": [ 9 | "zh-cn" 10 | ] 11 | } 12 | ], 13 | [ 14 | "build-plugin-ignore-style", 15 | { 16 | "libraryName": "@alifd/next" 17 | } 18 | ] 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "jsx": "react", 5 | "paths": { 6 | "@/*": ["./src/*"], 7 | "ice": [".ice/index.ts"] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Fusion Design Lite - JS 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/app.jsx: -------------------------------------------------------------------------------- 1 | import { runApp } from 'ice'; 2 | 3 | const appConfig = { 4 | app: { 5 | rootId: 'ice-container', 6 | }, 7 | }; 8 | runApp(appConfig); 9 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/global.css: -------------------------------------------------------------------------------- 1 | @import '@alifd/theme-design-pro/variables.css'; 2 | @import '@alifd/theme-design-pro/dist/next.var.css'; 3 | 4 | body { 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/layouts/BasicLayout/components/Footer/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function Footer() { 5 | return ( 6 |

7 | Alibaba Fusion 8 |
9 | © 2019-现在 Alibaba Fusion & ICE 10 |

11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/layouts/BasicLayout/components/Footer/index.module.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | line-height: 20px; 3 | text-align: center; 4 | } 5 | 6 | .logo { 7 | font-weight: bold; 8 | font-size: 16px; 9 | } 10 | 11 | .copyright { 12 | font-size: 12px; 13 | } 14 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/layouts/BasicLayout/components/Logo/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link } from 'ice'; 3 | import styles from './index.module.css'; 4 | 5 | export default function Logo({ image, text, url }) { 6 | return ( 7 |
8 | 9 | {image && logo} 10 | {text} 11 | 12 |
13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/layouts/BasicLayout/components/Logo/index.module.css: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | color: var(--color-text1-1, #ccc); 6 | font-weight: bold; 7 | font-size: 14px; 8 | line-height: 22px; 9 | } 10 | 11 | .logo:visited, .logo:link { 12 | color: var(--color-text1-1, #ccc); 13 | } 14 | 15 | .logo img { 16 | height: 24px; 17 | margin-right: 10px; 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/layouts/BasicLayout/menuConfig.js: -------------------------------------------------------------------------------- 1 | const headerMenuConfig = []; 2 | const asideMenuConfig = [ 3 | { 4 | name: 'Dashboard', 5 | path: '/', 6 | icon: 'smile', 7 | }, 8 | ]; 9 | export { headerMenuConfig, asideMenuConfig }; 10 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/pages/Dashboard/components/Guide/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | min-height: 600px; 3 | overflow: hidden; 4 | text-align: center; 5 | background-color: $color-white; 6 | } 7 | 8 | .title { 9 | font-size: 40px; 10 | text-align: center; 11 | } 12 | 13 | .description { 14 | margin-top: 40px; 15 | } 16 | 17 | .action { 18 | margin-top: 40px; 19 | } -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/pages/Dashboard/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import Guide from './components/Guide'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Dashboard = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Dashboard; 18 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite-js/src/routes.js: -------------------------------------------------------------------------------- 1 | import { lazy } from 'ice'; 2 | import BasicLayout from '@/layouts/BasicLayout'; 3 | 4 | const Dashboard = lazy(() => import('@/pages/Dashboard')); 5 | const routerConfig = [ 6 | { 7 | path: '/', 8 | component: BasicLayout, 9 | children: [ 10 | { 11 | path: '/', 12 | component: Dashboard, 13 | }, 14 | ], 15 | }, 16 | ]; 17 | export default routerConfig; 18 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "iceworks-team.iceworks" 4 | ] 5 | } -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_eslintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | .ice/ 6 | 7 | # node 覆盖率文件 8 | coverage/ 9 | 10 | # 忽略文件 11 | **/*-min.js 12 | **/*.min.js 13 | 14 | package-lock.json 15 | yarn.lock 16 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_eslintrc.js: -------------------------------------------------------------------------------- 1 | const { getESLintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getESLintConfig('react-ts', { 4 | rules: { 5 | 'react/jsx-filename-extension': 0, 6 | '@typescript-eslint/explicit-function-return-type': 0, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # production 7 | build/ 8 | dist/ 9 | tmp/ 10 | lib/ 11 | 12 | # misc 13 | .idea/ 14 | .happypack 15 | .DS_Store 16 | *.swp 17 | *.dia~ 18 | .ice 19 | .vscode 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | index.module.scss.d.ts 25 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_prettierignore: -------------------------------------------------------------------------------- 1 | build/ 2 | tests/ 3 | demo/ 4 | .ice/ 5 | coverage/ 6 | **/*-min.js 7 | **/*.min.js 8 | package-lock.json 9 | yarn.lock -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_prettierrc.js: -------------------------------------------------------------------------------- 1 | const { getPrettierConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getPrettierConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_stylelintignore: -------------------------------------------------------------------------------- 1 | # 忽略目录 2 | build/ 3 | tests/ 4 | demo/ 5 | 6 | # node 覆盖率文件 7 | coverage/ 8 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/_stylelintrc.js: -------------------------------------------------------------------------------- 1 | const { getStylelintConfig } = require('@iceworks/spec'); 2 | 3 | module.exports = getStylelintConfig('react'); 4 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "publicPath": "./", 3 | "vite": true, 4 | "plugins": [ 5 | [ 6 | "build-plugin-moment-locales", 7 | { 8 | "locales": [ 9 | "zh-cn" 10 | ] 11 | } 12 | ], 13 | [ 14 | "build-plugin-ignore-style", 15 | { 16 | "libraryName": "@alifd/next" 17 | } 18 | ] 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Fusion Design Lite - TS 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/app.tsx: -------------------------------------------------------------------------------- 1 | import { runApp, IAppConfig } from 'ice'; 2 | 3 | const appConfig: IAppConfig = { 4 | app: { 5 | rootId: 'ice-container', 6 | }, 7 | }; 8 | 9 | runApp(appConfig); 10 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/global.css: -------------------------------------------------------------------------------- 1 | @import '@alifd/theme-design-pro/variables.css'; 2 | @import '@alifd/theme-design-pro/dist/next.var.css'; 3 | 4 | body { 5 | -webkit-font-smoothing: antialiased; 6 | } 7 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/layouts/BasicLayout/components/Footer/index.module.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | line-height: 20px; 3 | text-align: center; 4 | } 5 | 6 | .logo { 7 | font-weight: bold; 8 | font-size: 16px; 9 | } 10 | 11 | .copyright { 12 | font-size: 12px; 13 | } 14 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/layouts/BasicLayout/components/Footer/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styles from './index.module.css'; 3 | 4 | export default function Footer() { 5 | return ( 6 |

7 | Alibaba Fusion 8 |
9 | © 2019-现在 Alibaba Fusion & ICE 10 |

11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/layouts/BasicLayout/components/Logo/index.module.css: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | color: var(--color-text1-1, #ccc); 6 | font-weight: bold; 7 | font-size: 14px; 8 | line-height: 22px; 9 | } 10 | 11 | .logo:visited, .logo:link { 12 | color: var(--color-text1-1, #ccc); 13 | } 14 | 15 | .logo img { 16 | height: 24px; 17 | margin-right: 10px; 18 | } 19 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/layouts/BasicLayout/components/Logo/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link } from 'ice'; 3 | import styles from './index.module.css'; 4 | 5 | export interface ILogoProps { 6 | image?: string; 7 | text?: string; 8 | url?: string; 9 | } 10 | 11 | export default function Logo({ image, text, url }: ILogoProps) { 12 | return ( 13 |
14 | 15 | { image && logo} 16 | {text} 17 | 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/layouts/BasicLayout/menuConfig.ts: -------------------------------------------------------------------------------- 1 | const headerMenuConfig = []; 2 | 3 | const asideMenuConfig = [ 4 | { 5 | name: 'Dashboard', 6 | path: '/', 7 | icon: 'smile', 8 | }, 9 | ]; 10 | 11 | export { headerMenuConfig, asideMenuConfig }; 12 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/pages/Dashboard/components/Guide/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | min-height: 600px; 3 | overflow: hidden; 4 | text-align: center; 5 | background-color: $color-white; 6 | } 7 | 8 | .title { 9 | font-size: 40px; 10 | text-align: center; 11 | } 12 | 13 | .description { 14 | margin-top: 40px; 15 | } 16 | 17 | .action { 18 | margin-top: 40px; 19 | } -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/pages/Dashboard/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { ResponsiveGrid } from '@alifd/next'; 3 | import Guide from './components/Guide'; 4 | 5 | const { Cell } = ResponsiveGrid; 6 | 7 | const Dashboard = () => { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | }; 16 | 17 | export default Dashboard; 18 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/routes.ts: -------------------------------------------------------------------------------- 1 | import { IRouterConfig, lazy } from 'ice'; 2 | import BasicLayout from '@/layouts/BasicLayout'; 3 | 4 | const Dashboard = lazy(() => import('@/pages/Dashboard')); 5 | const routerConfig: IRouterConfig[] = [ 6 | { 7 | path: '/', 8 | component: BasicLayout, 9 | children: [ 10 | { 11 | path: '/', 12 | exact: true, 13 | component: Dashboard, 14 | }, 15 | ], 16 | }, 17 | ]; 18 | export default routerConfig; 19 | -------------------------------------------------------------------------------- /scaffolds/scaffold-lite/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.module.scss' { 2 | const classes: { [key: string]: string }; 3 | export default classes; 4 | } 5 | 6 | declare module '*.module.less' { 7 | const classes: { [key: string]: string }; 8 | export default classes; 9 | } 10 | 11 | declare module '*.module.css' { 12 | const classes: { [key: string]: string }; 13 | export default classes; 14 | } 15 | -------------------------------------------------------------------------------- /scripts/generate.js: -------------------------------------------------------------------------------- 1 | // node scripts/generate.js fusion-design-pro 2 | const path = require('path'); 3 | const rimraf = require('rimraf'); 4 | const Generator = require('ice-scaffold-generator'); 5 | 6 | const rootPath = path.join(__dirname, '../scaffolds/', process.argv[2]); 7 | 8 | // 清空 scaffold 的文件,除了 .template 9 | rimraf.sync(path.join(rootPath, '!(template|node_modules|tmp)')); 10 | 11 | console.log('generate scaffold in', rootPath); 12 | 13 | const generate = new Generator({ 14 | rootDir: rootPath, 15 | // configFile: configPath, 16 | template: path.join(rootPath, '.template'), 17 | useLocalBlocks: true, 18 | }); 19 | generate.init(); 20 | -------------------------------------------------------------------------------- /tsconfig.block.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "esnext", 4 | "target": "es6", 5 | "jsx": "react", 6 | "moduleResolution": "node", 7 | "allowSyntheticDefaultImports": false, 8 | "lib": ["es6", "dom"], 9 | "sourceMap": true, 10 | "allowJs": true, 11 | "noUnusedLocals": true, 12 | "noImplicitReturns": true, 13 | "noImplicitThis": true, 14 | "noImplicitAny": true, 15 | "skipLibCheck": true 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "buildOnSave": false, 4 | "compilerOptions": { 5 | "module": "esnext", 6 | "target": "esnext", 7 | "lib": ["esnext", "dom"], 8 | "sourceMap": true, 9 | "baseUrl": ".", 10 | "jsx": "react", 11 | "moduleResolution": "node", 12 | "forceConsistentCasingInFileNames": true, 13 | "allowSyntheticDefaultImports": true, 14 | "noImplicitReturns": true, 15 | "suppressImplicitAnyIndexErrors": true, 16 | "noUnusedLocals": true, 17 | "allowJs": true, 18 | "experimentalDecorators": true, 19 | "strict": true 20 | }, 21 | "exclude": [ 22 | "node_modules", 23 | "build", 24 | "scripts" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /types/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.module.scss' { 2 | const classes: { [key: string]: string }; 3 | export default classes; 4 | } 5 | 6 | declare module '*.module.less' { 7 | const classes: { [key: string]: string }; 8 | export default classes; 9 | } 10 | 11 | declare module '*.module.css' { 12 | const classes: { [key: string]: string }; 13 | export default classes; 14 | } 15 | --------------------------------------------------------------------------------