├── .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 |

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 |

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 |

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 |

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 |

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 |

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 |

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 |

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 |
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 &&

}
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 |
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 |

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 |

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 |

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 |

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 |

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 |

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 |

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 |

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 |

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 &&

}
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 |

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 |

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 |

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 |

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 |

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 |

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 &&

}
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 &&

}
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 |
--------------------------------------------------------------------------------