From e1b51e9c7852133668dc3fe3739ef69b61e8f27c Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Sun, 15 Mar 2020 13:12:47 +0800 Subject: [PATCH] feat: add new form support v-model * chore: update site * chore: update submodule * docs: update * docs: update doc * docs: update * test: update snap * docs: update * feat: add new form support v-model * feat: add new form * docs: update changelog * chore: update webpack * test: update snap --- .jest.js | 3 +- CHANGELOG.en-US.md | 3 +- CHANGELOG.zh-CN.md | 5 +- antd-tools/gulpfile.js | 2 +- antdv-demo | 2 +- build/config.js | 5 - build/dev.js | 213 ------ build/webpack.base.conf.js | 210 ------ build/webpack.dev.conf.js | 54 -- build/webpack.site.conf.js | 67 -- .../__tests__/__snapshots__/demo.test.js.snap | 6 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- .../__tests__/__snapshots__/demo.test.js.snap | 4 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 10 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- components/calendar/__tests__/index.test.js | 3 - .../__tests__/__snapshots__/demo.test.js.snap | 20 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 24 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 14 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- .../__tests__/__snapshots__/demo.test.js.snap | 26 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 10 +- components/form/Form.jsx | 2 +- components/form/FormItem.jsx | 22 +- .../__tests__/__snapshots__/demo.test.js.snap | 94 ++- .../__tests__/__snapshots__/demo.test.js.snap | 20 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- components/index.js | 3 + .../__tests__/__snapshots__/demo.test.js.snap | 10 +- components/input/Input.jsx | 1 + .../__tests__/__snapshots__/demo.test.js.snap | 26 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 16 +- .../__tests__/__snapshots__/demo.test.js.snap | 4 +- .../__test__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 16 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 22 +- components/n-form/Form.jsx | 184 +++++ components/n-form/FormItem.jsx | 260 +++++++ .../__tests__/__snapshots__/demo.test.js.snap | 282 ++++++++ components/n-form/__tests__/demo.test.js | 3 + components/n-form/index.jsx | 20 + components/n-form/style/index.js | 5 + components/n-form/style/index.less | 653 ++++++++++++++++++ components/n-form/style/mixin.less | 126 ++++ .../__tests__/__snapshots__/demo.test.js.snap | 16 +- .../__tests__/__snapshots__/demo.test.js.snap | 10 +- .../__tests__/__snapshots__/demo.test.js.snap | 20 +- .../__tests__/__snapshots__/demo.test.js.snap | 10 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 22 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 16 +- .../__tests__/__snapshots__/demo.test.js.snap | 32 +- .../__tests__/__snapshots__/demo.test.js.snap | 10 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 14 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- .../__tests__/__snapshots__/demo.test.js.snap | 22 +- components/style.js | 1 + .../__tests__/__snapshots__/demo.test.js.snap | 10 +- .../__tests__/__snapshots__/demo.test.js.snap | 44 +- .../__tests__/__snapshots__/demo.test.js.snap | 26 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 18 +- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 8 +- .../__tests__/__snapshots__/demo.test.js.snap | 161 ++--- .../__tests__/__snapshots__/demo.test.js.snap | 12 +- .../__tests__/__snapshots__/demo.test.js.snap | 20 +- .../__tests__/__snapshots__/demo.test.js.snap | 24 +- components/vc-form/src/createFieldsStore.jsx | 2 +- docs/vue/customize-theme.en-US.md | 152 ---- docs/vue/customize-theme.zh-CN.md | 130 ---- docs/vue/download.en-US.md | 89 --- docs/vue/download.zh-CN.md | 77 --- docs/vue/faq.en-US.md | 58 -- docs/vue/faq.zh-CN.md | 55 -- docs/vue/getting-started.en-US.md | 143 ---- docs/vue/getting-started.zh-CN.md | 145 ---- docs/vue/i18n.en-US.md | 70 -- docs/vue/i18n.zh-CN.md | 70 -- docs/vue/introduce.en-US.md | 140 ---- docs/vue/introduce.zh-CN.md | 142 ---- docs/vue/sponsor.en-US.md | 70 -- docs/vue/sponsor.zh-CN.md | 70 -- docs/vue/use-with-vue-cli.en-US.md | 170 ----- docs/vue/use-with-vue-cli.zh-CN.md | 169 ----- package.json | 4 +- site/404.html | 97 --- site/ant-design-vue.svg | 11 - site/components.js | 236 ------- site/components/CarbonAds.vue | 125 ---- site/components/GoogleAds.vue | 36 - site/components/GoogleAdsTop.vue | 34 - site/components/api.vue | 28 - site/components/demoBox.vue | 224 ------ site/components/demoContainer.vue | 80 --- site/components/demoSort.jsx | 49 -- site/components/footer.vue | 131 ---- site/components/geektime.vue | 41 -- site/components/geektime_ads.vue | 60 -- site/components/header.vue | 150 ---- site/components/iframe.vue | 30 - site/components/layout.vue | 367 ---------- site/components/md.vue | 51 -- site/components/sponsors.vue | 61 -- site/demo.js | 386 ----------- site/demoRoutes.js | 488 ------------- site/index.html | 83 --- site/index.js | 79 --- site/index.less | 194 ------ site/logo.svg | 29 - site/routes.js | 110 --- site/theme/en-US.js | 111 --- site/theme/static/colors.less | 180 ----- site/theme/static/common.less | 144 ---- site/theme/static/demo.less | 283 -------- site/theme/static/docsearch.less | 22 - site/theme/static/footer.less | 80 --- site/theme/static/header.less | 144 ---- site/theme/static/highlight.less | 153 ---- site/theme/static/home.less | 408 ----------- site/theme/static/icons.less | 79 --- site/theme/static/index.less | 23 - site/theme/static/markdown.less | 392 ----------- site/theme/static/mock-browser.less | 53 -- site/theme/static/motion.less | 39 -- site/theme/static/new-version-info-modal.less | 23 - site/theme/static/not-found.less | 35 - site/theme/static/nprogress.less | 14 - site/theme/static/page-nav.less | 63 -- site/theme/static/preview-img.less | 199 ------ site/theme/static/resource.less | 83 --- site/theme/static/responsive.less | 348 ---------- site/theme/static/theme.less | 4 - site/theme/static/toc.less | 64 -- site/theme/template/IconDisplay/Category.jsx | 48 -- .../template/IconDisplay/CopyableIcon.vue | 38 - site/theme/template/IconDisplay/fields.js | 208 ------ site/theme/template/IconDisplay/index.jsx | 184 ----- .../theme/template/IconDisplay/themeIcons.jsx | 44 -- site/theme/zh-CN.js | 108 --- site/util.js | 3 - tests/__snapshots__/index.test.js.snap | 1 + tests/shared/demoTest.js | 2 +- types/n-form/form-item.d.ts | 69 ++ types/n-form/form.d.ts | 115 +++ ...ack.build.conf.js => webpack.build.conf.js | 2 +- 162 files changed, 2305 insertions(+), 9661 deletions(-) delete mode 100644 build/config.js delete mode 100644 build/dev.js delete mode 100644 build/webpack.base.conf.js delete mode 100644 build/webpack.dev.conf.js delete mode 100644 build/webpack.site.conf.js create mode 100755 components/n-form/Form.jsx create mode 100644 components/n-form/FormItem.jsx create mode 100644 components/n-form/__tests__/__snapshots__/demo.test.js.snap create mode 100644 components/n-form/__tests__/demo.test.js create mode 100644 components/n-form/index.jsx create mode 100644 components/n-form/style/index.js create mode 100644 components/n-form/style/index.less create mode 100644 components/n-form/style/mixin.less delete mode 100644 docs/vue/customize-theme.en-US.md delete mode 100644 docs/vue/customize-theme.zh-CN.md delete mode 100644 docs/vue/download.en-US.md delete mode 100644 docs/vue/download.zh-CN.md delete mode 100644 docs/vue/faq.en-US.md delete mode 100644 docs/vue/faq.zh-CN.md delete mode 100644 docs/vue/getting-started.en-US.md delete mode 100644 docs/vue/getting-started.zh-CN.md delete mode 100644 docs/vue/i18n.en-US.md delete mode 100644 docs/vue/i18n.zh-CN.md delete mode 100644 docs/vue/introduce.en-US.md delete mode 100644 docs/vue/introduce.zh-CN.md delete mode 100644 docs/vue/sponsor.en-US.md delete mode 100644 docs/vue/sponsor.zh-CN.md delete mode 100644 docs/vue/use-with-vue-cli.en-US.md delete mode 100644 docs/vue/use-with-vue-cli.zh-CN.md delete mode 100644 site/404.html delete mode 100644 site/ant-design-vue.svg delete mode 100644 site/components.js delete mode 100644 site/components/CarbonAds.vue delete mode 100644 site/components/GoogleAds.vue delete mode 100644 site/components/GoogleAdsTop.vue delete mode 100644 site/components/api.vue delete mode 100644 site/components/demoBox.vue delete mode 100644 site/components/demoContainer.vue delete mode 100644 site/components/demoSort.jsx delete mode 100644 site/components/footer.vue delete mode 100644 site/components/geektime.vue delete mode 100644 site/components/geektime_ads.vue delete mode 100644 site/components/header.vue delete mode 100644 site/components/iframe.vue delete mode 100644 site/components/layout.vue delete mode 100644 site/components/md.vue delete mode 100644 site/components/sponsors.vue delete mode 100644 site/demo.js delete mode 100644 site/demoRoutes.js delete mode 100644 site/index.html delete mode 100644 site/index.js delete mode 100644 site/index.less delete mode 100644 site/logo.svg delete mode 100644 site/routes.js delete mode 100644 site/theme/en-US.js delete mode 100644 site/theme/static/colors.less delete mode 100644 site/theme/static/common.less delete mode 100644 site/theme/static/demo.less delete mode 100644 site/theme/static/docsearch.less delete mode 100644 site/theme/static/footer.less delete mode 100644 site/theme/static/header.less delete mode 100644 site/theme/static/highlight.less delete mode 100644 site/theme/static/home.less delete mode 100644 site/theme/static/icons.less delete mode 100644 site/theme/static/index.less delete mode 100644 site/theme/static/markdown.less delete mode 100644 site/theme/static/mock-browser.less delete mode 100644 site/theme/static/motion.less delete mode 100644 site/theme/static/new-version-info-modal.less delete mode 100644 site/theme/static/not-found.less delete mode 100644 site/theme/static/nprogress.less delete mode 100644 site/theme/static/page-nav.less delete mode 100644 site/theme/static/preview-img.less delete mode 100644 site/theme/static/resource.less delete mode 100644 site/theme/static/responsive.less delete mode 100644 site/theme/static/theme.less delete mode 100644 site/theme/static/toc.less delete mode 100644 site/theme/template/IconDisplay/Category.jsx delete mode 100644 site/theme/template/IconDisplay/CopyableIcon.vue delete mode 100644 site/theme/template/IconDisplay/fields.js delete mode 100644 site/theme/template/IconDisplay/index.jsx delete mode 100644 site/theme/template/IconDisplay/themeIcons.jsx delete mode 100644 site/theme/zh-CN.js delete mode 100644 site/util.js create mode 100644 types/n-form/form-item.d.ts create mode 100644 types/n-form/form.d.ts rename build/webpack.build.conf.js => webpack.build.conf.js (93%) diff --git a/.jest.js b/.jest.js index b0b49069f..a26640e66 100644 --- a/.jest.js +++ b/.jest.js @@ -19,7 +19,8 @@ module.exports = { testRegex: libDir === 'dist' ? 'demo\\.test\\.js$' : '.*\\.test\\.js$', moduleNameMapper: { '^@/(.*)$': '/$1', - 'ant-design-vue': '/components/index.js', + 'ant-design-vue$': '/components/index.js', + 'ant-design-vue/es': '/components', '^vue$': 'vue/dist/vue.common.js', }, snapshotSerializers: ['/node_modules/jest-serializer-vue'], diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index 28762c48d..4d903b285 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -19,6 +19,7 @@ - 🔥🔥🔥 [Descriptions](https://antdv.com/components/descriptions/) Display multiple read-only fields in groups. - 🔥🔥🔥 [PageHeader](https://antdv.com/components/page-header/) can be used to declare the topic of the page, display important information about the page that the user is concerned about, and carry the operation items related to the current page. - 🔥🔥🔥 [Result](https://antdv.com/components/result) is used to feedback the processing results of a series of operation tasks. + - 🔥🔥🔥 [NewForm](https://antdv.com/components/n-form) Form components that use v-model for automatic validation are more concise than v-decorator forms. - 🔥 Descriptions supports vertical layout. - 🔥 Progress.Circle supports gradient colors. - 🔥 Progress.Line supports gradient colors. @@ -550,8 +551,6 @@ Component Fixes / Enhancements: `2018-12-16` -### Synchronize with antd 3.10.x - - 🔥🔥🔥 replaced font icons with svg icons which bring benefits below:: - Complete offline usage of icon, no dependency of alipay cdn font icon file and no more empty square during downloading than no need to deploy icon font files locally either. - Much more display accuracy in lower-level screens. diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index 1639a4c9b..7cb698fba 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -14,11 +14,12 @@ `2020-03-06` -- 新增了四个组件: +- 新增了五个组件: - 🔥🔥🔥 [Mentions](https://antdv.com/components/mentions-cn/) 新增提及组件并废弃原有 Mention 组件。 - 🔥🔥🔥 [Descriptions](https://antdv.com/components/descriptions-cn/) 成组展示多个只读字段。 - 🔥🔥🔥 [PageHeader](https://antdv.com/components/page-header-cn/) 可用于声明页面主题、展示用户所关注的页面重要信息,以及承载与当前页相关的操作项。 - 🔥🔥🔥 [Result](https://antdv.com/components/result) 用于反馈一系列操作任务的处理结果。 + - 🔥🔥🔥 [NewForm](https://antdv.com/components/n-form) 使用 v-model 进行自动校验的表单组件,相较于 v-decorator 形式的表单,更加简洁。 - 🔥 Descriptions 支持垂直布局。 - 🔥 Progress.Circle 支持渐变色。 - 🔥 Progress.Line 支持渐变色。 @@ -553,8 +554,6 @@ `2018-12-16` -### 与 antd 3.10.x 同步 - - 🔥🔥🔥 使用了 svg 图标替换了原先的 font 图标,从而带来了以下优势: - 可以离线化使用,不需要从支付宝 cdn 下载字体文件,图标不会因为网络问题呈现方块,也无需字体文件本地部署。 - 在低端设备上 svg 有更好的清晰度。 diff --git a/antd-tools/gulpfile.js b/antd-tools/gulpfile.js index 63ff5971f..7f161c750 100644 --- a/antd-tools/gulpfile.js +++ b/antd-tools/gulpfile.js @@ -34,7 +34,7 @@ const esDir = path.join(cwd, 'es'); function dist(done) { rimraf.sync(path.join(cwd, 'dist')); process.env.RUN_ENV = 'PRODUCTION'; - const webpackConfig = require(path.join(cwd, 'build/webpack.build.conf.js')); + const webpackConfig = require(path.join(cwd, 'webpack.build.conf.js')); webpack(webpackConfig, (err, stats) => { if (err) { console.error(err.stack || err); diff --git a/antdv-demo b/antdv-demo index 6cb6deed5..4e957c28b 160000 --- a/antdv-demo +++ b/antdv-demo @@ -1 +1 @@ -Subproject commit 6cb6deed574c408cddcf6c9271132e36f8975168 +Subproject commit 4e957c28ba982dd34894e72f9b00e513e26f1b5d diff --git a/build/config.js b/build/config.js deleted file mode 100644 index ddbb5d3d1..000000000 --- a/build/config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - dev: { - componentName: 'badge', // dev components - }, -}; diff --git a/build/dev.js b/build/dev.js deleted file mode 100644 index b1e8a4b86..000000000 --- a/build/dev.js +++ /dev/null @@ -1,213 +0,0 @@ -process.env.ENTRY_INDEX = 'dev'; - -const fs = require('fs'); -const path = require('path'); -const chokidar = require('chokidar'); -const importFresh = require('import-fresh'); -const replace = require('json-templater/string'); -const webpack = require('webpack'); -const WebpackDevServer = require('webpack-dev-server'); -const devWebpack = require('./webpack.dev.conf'); - -const configPath = path.join(__dirname, './config.js'); - -/** - * a-bc-d --> aBcD - * @param {string} s - */ -const camelize = s => s.replace(/-(\w)/g, ($, $1) => $1.toUpperCase()); - -/** - * radio-group --> radio - * @param {string} s - */ -const getUpper = s => s.replace(/(-[a-z]*)/g, ''); - -let { componentName } = require('./config').dev; - -const componentsInPrototype = ['Modal', 'message', 'notification']; - -const MAIN_TEMPLATE = `import 'babel-polyfill'; -import Vue from 'vue'; -import Vuex from 'vuex'; -import VueI18n from 'vue-i18n'; -import VueRouter from 'vue-router'; -import VueClipboard from 'vue-clipboard2'; -import Md from './components/md'; -import Api from './components/api'; -import demoBox from './components/demoBox'; -import demoSort from './components/demoSort'; -import demoContainer from './components/demoContainer'; -import Modal from '../components/modal'; -import message from '../components/message'; -import notification from '../components/notification'; -{{importComponents}} -{{importStyles}} -import '../components/modal/style'; -import '../components/message/style'; -import '../components/notification/style'; -import Test from '../antdv-demo/{{name}}/demo/index.vue'; -import zhCN from './theme/zh-CN'; -import enUS from './theme/en-US'; -import './index.less'; - -Vue.use(Vuex); -Vue.use(VueClipboard); -Vue.use(VueRouter); -Vue.use(VueI18n); -Vue.component(Md.name, Md); -Vue.component(Api.name, Api); -Vue.component('demo-box', demoBox); -Vue.component('demo-sort', demoSort); -Vue.component('demo-container', demoContainer); - -Vue.prototype.$message = message; -Vue.prototype.$notification = notification; -Vue.prototype.$info = Modal.info; -Vue.prototype.$success = Modal.success; -Vue.prototype.$error = Modal.error; -Vue.prototype.$warning = Modal.warning; -Vue.prototype.$confirm = Modal.confirm; -Vue.prototype.$destroyAll = Modal.destroyAll; - -Vue.use(Modal); -{{install}} - -const i18n = new VueI18n({ - locale: enUS.locale, - messages: { - [enUS.locale]: { message: enUS.messages }, - [zhCN.locale]: { message: zhCN.messages }, - }, -}); - -const router = new VueRouter({ - mode: 'history', - routes: [{ - path: '/test', - component: () => import('../components/test/index.vue'), - }, { - path: '/*', component: Test - }], -}); - -const store = new Vuex.Store({ - state: { - username: 'zeka', - }, - mutations: { - update(state, payload) { - state.username = payload.username; - }, - }, -}); -new Vue({ - el: '#app', - i18n, - router, - store, -}); -`; - -const OUTPUT_PATH = path.join(__dirname, '../site/dev.js'); - -const generateEntry = components => - Object.keys(components) - .map(component => `import ${component} from '../components/${components[component]}';`) - .join('\n'); - -const generateStyles = components => - Object.keys(components) - .map(component => `import '../components/${components[component]}/style';`) - .join('\n'); - -const generateInstall = components => - Object.keys(components) - .map(component => `Vue.use(${component});`) - .join('\n'); - -const renderTemplate = name => { - const components = { - Tooltip: 'tooltip', // for DemoBox - Icon: 'icon', // Basic - }; - - const demoPaths = fs - .readdirSync(path.join(__dirname, `../antdv-demo/${name}/demo`)) - .map(p => `../antdv-demo/${name}/demo/${p}`); - const testPaths = fs - .readdirSync(path.join(__dirname, `../components/test`)) - .map(p => `../components/test/${p}`); - [...demoPaths, ...testPaths].forEach(demoPath => { - const demo = fs.readFileSync(path.join(__dirname, demoPath)).toString(); - - const componentsInDemo = demo.match(/a-(\w+(-\w+)*)/g) || []; - componentsInDemo.forEach(name => { - const dirName = name.replace(/^a-/, ''); - const componentName = camelize(name).replace(/^a/, ''); - const upperComponentDir = getUpper(dirName); - const upperComponentName = upperComponentDir.replace(/^[a-z]/, $ => $.toUpperCase()); - - const componentPath = path.join(__dirname, `../components/${dirName}`); - if (fs.existsSync(componentPath)) { - if (componentsInPrototype.includes(componentName)) { - return; - } - components[componentName] = dirName; - } else if (fs.existsSync(path.join(__dirname, `../components/${upperComponentDir}`))) { - components[upperComponentName] = upperComponentDir; - } - }); - }); - - const importComponents = generateEntry(components); - const importStyles = generateStyles(components); - const install = generateInstall(components); - const template = replace(MAIN_TEMPLATE, { - importComponents, - importStyles, - install, - name, - }); - fs.writeFileSync(OUTPUT_PATH, template); -}; - -function fsExistsSync(path) { - try { - fs.accessSync(path, fs.F_OK); - } catch (e) { - return false; - } - return true; -} - -if (!fsExistsSync(path.join(__dirname, '../components/test/index.vue'))) { - if (!fsExistsSync(path.join(__dirname, '../components/test'))) { - fs.mkdirSync(path.join(__dirname, '../components/test')); - } - fs.writeFileSync(path.join(__dirname, '../components/test/index.vue'), ``); -} - -let demoWatcher; - -chokidar.watch(configPath, { ignoreInitial: true }).on('change', async () => { - ({ componentName } = importFresh(configPath).dev); - - demoWatcher && (await demoWatcher.close()); - - demoWatcher = chokidar.watch(path.join(__dirname, `../antdv-demo/${componentName}/demo`)); - demoWatcher.on('change', () => { - renderTemplate(componentName); - }); - - renderTemplate(componentName); -}); - -renderTemplate(componentName); - -const compiler = webpack(devWebpack); - -const configuration = devWebpack.devServer; - -const server = new WebpackDevServer(compiler, configuration); -server.listen(configuration.port); diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js deleted file mode 100644 index 0292ba864..000000000 --- a/build/webpack.base.conf.js +++ /dev/null @@ -1,210 +0,0 @@ -const path = require('path'); -const Prism = require('prismjs'); -const Token = require('markdown-it/lib/token'); -const cheerio = require('cheerio'); -const WebpackBar = require('webpackbar'); -const VueLoaderPlugin = require('vue-loader/lib/plugin'); -const getBabelCommonConfig = require('../antd-tools/getBabelCommonConfig'); -const babelConfig = getBabelCommonConfig(false); - -babelConfig.plugins.push(require.resolve('babel-plugin-syntax-dynamic-import')); - -const fetch = (str, tag, scoped) => { - const $ = cheerio.load(str, { - decodeEntities: false, - xmlMode: true, - }); - if (!tag) { - return str; - } - if (tag === 'style') { - return scoped - ? $(`${tag}[scoped]`).html() - : $(`${tag}`) - .not(`${tag}[scoped]`) - .html(); - } - return $(tag).html(); -}; - -/** - * `{{ }}` => `{{ }}` - * @param {string} str - * @return {string} - */ -const replaceDelimiters = function(str) { - return str.replace(/({{|}})/g, '$1'); -}; - -/** - * renderHighlight - * @param {string} str - * @param {string} lang - */ - -const renderHighlight = function(str, lang) { - if (!(lang && Prism.languages[lang])) { - return ''; - } - - try { - return replaceDelimiters(Prism.highlight(str, Prism.languages[lang], lang)); - } catch (err) {} -}; - -const md = require('markdown-it')('default', { - html: true, - breaks: true, - highlight: renderHighlight, -}).use(require('markdown-it-anchor'), { - level: 2, - slugify: string => - string - .trim() - .split(' ') - .join('-'), - permalink: true, - // renderPermalink: (slug, opts, state, permalink) => {}, - permalinkClass: 'anchor', - permalinkSymbol: '#', - permalinkBefore: false, -}); -// md.renderer.rules.fence = wrap(md.renderer.rules.fence) -const cnReg = new RegExp('<(cn)(?:[^<]|<)+', 'g'); -const usReg = new RegExp('<(us)(?:[^<]|<)+', 'g'); -md.core.ruler.push('update_template', function replace({ tokens }) { - let cn = ''; - let us = ''; - let template = ''; - let script = ''; - let style = ''; - let scopedStyle = ''; - let code = ''; - let sourceCode = ''; - tokens.forEach(token => { - if (token.type === 'html_block') { - if (token.content.match(cnReg)) { - cn = fetch(token.content, 'cn'); - token.content = ''; - } - if (token.content.match(usReg)) { - us = fetch(token.content, 'us'); - token.content = ''; - } - } - if (token.type === 'fence' && token.info === 'tpl' && token.markup === '```') { - sourceCode = token.content; - code = '````html\n' + token.content + '````'; - template = fetch(token.content, 'template'); - script = fetch(token.content, 'script'); - style = fetch(token.content, 'style'); - scopedStyle = fetch(token.content, 'style', true); - token.content = ''; - token.type = 'html_block'; - } - }); - if (template) { - let jsfiddle = { - html: template, - script, - style, - us, - cn, - sourceCode, - }; - jsfiddle = md.utils.escapeHtml(JSON.stringify(jsfiddle)); - const codeHtml = code ? md.render(code) : ''; - const cnHtml = cn ? md.render(cn) : ''; - let newContent = ` - `; - newContent += script - ? ` - - ` - : ''; - newContent += style ? `` : ''; - newContent += scopedStyle ? `` : ''; - const t = new Token('html_block', '', 0); - t.content = newContent; - tokens.push(t); - } -}); -const vueLoaderOptions = { - loaders: { - js: [ - { - loader: 'babel-loader', - options: { - presets: ['env'], - plugins: ['transform-vue-jsx', 'transform-object-rest-spread'], - }, - }, - ], - }, -}; -module.exports = { - mode: 'production', - entry: { - index: [`./site/${process.env.ENTRY_INDEX || 'index'}.js`], - }, - module: { - rules: [ - { - test: /\.md$/, - use: [ - { - loader: 'vue-loader', - options: vueLoaderOptions, - }, - { - loader: 'vue-antd-md-loader', - options: Object.assign(md, { - wrapper: 'div', - raw: true, - }), - }, - ], - }, - { - test: /\.vue$/, - loader: 'vue-loader', - options: vueLoaderOptions, - }, - { - test: /\.(js|jsx)$/, - loader: 'babel-loader', - exclude: /node_modules/, - options: babelConfig, - }, - { - test: /\.(png|jpg|gif|svg)$/, - loader: 'file-loader', - options: { - name: '[name].[ext]?[hash]', - }, - }, - ], - }, - resolve: { - modules: ['node_modules', path.join(__dirname, '../node_modules')], - extensions: ['.js', '.jsx', '.vue', '.md'], - alias: { - vue$: 'vue/dist/vue.esm.js', - antd: path.join(__dirname, '../components'), - 'ant-design-vue': path.join(__dirname, '../components'), - 'ant-design-vue/es': path.join(__dirname, '../components'), - 'ant-design-vue/lib': path.join(__dirname, '../components'), - '@': path.join(__dirname, '../'), - }, - }, - plugins: [new VueLoaderPlugin(), new WebpackBar()], -}; diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js deleted file mode 100644 index 6f9ec46ed..000000000 --- a/build/webpack.dev.conf.js +++ /dev/null @@ -1,54 +0,0 @@ -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const merge = require('webpack-merge'); -const baseWebpackConfig = require('./webpack.base.conf'); - -module.exports = merge(baseWebpackConfig, { - mode: 'development', - output: { - path: path.resolve(__dirname, '../dist'), - publicPath: '/', - filename: 'build.js', - }, - module: { - rules: [ - { - test: /\.less$/, - use: [ - { loader: 'vue-style-loader' }, - { - loader: 'css-loader', - options: { sourceMap: true }, - }, - { loader: 'less-loader', options: { sourceMap: true, javascriptEnabled: true } }, - ], - }, - { - test: /\.css$/, - use: ['vue-style-loader', 'css-loader'], - }, - ], - }, - devServer: { - port: process.env.PORT || 3000, - host: '0.0.0.0', - historyApiFallback: { - rewrites: [{ from: /./, to: '/index.html' }], - }, - disableHostCheck: true, - hot: true, - open: true, - headers: { 'Access-Control-Allow-Origin': '*' }, - }, - performance: { - hints: false, - }, - devtool: '#source-map', - plugins: [ - new HtmlWebpackPlugin({ - template: 'site/index.html', - filename: 'index.html', - inject: true, - }), - ], -}); diff --git a/build/webpack.site.conf.js b/build/webpack.site.conf.js deleted file mode 100644 index b95cfa651..000000000 --- a/build/webpack.site.conf.js +++ /dev/null @@ -1,67 +0,0 @@ -const path = require('path'); -const webpack = require('webpack'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const merge = require('webpack-merge'); -const baseWebpackConfig = require('./webpack.base.conf'); - -module.exports = merge(baseWebpackConfig, { - output: { - path: path.resolve(__dirname, '../_site'), - publicPath: '/', - filename: '[name].[contenthash:8].js', - chunkFilename: '[contenthash:8].async.js', - }, - module: { - rules: [ - { - test: /\.less$/, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader', - 'postcss-loader', - { loader: 'less-loader', options: { javascriptEnabled: true } }, - ], - }, - { - test: /\.css$/, - use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'], - }, - ], - }, - optimization: { - splitChunks: { - cacheGroups: { - vendors: { - name: `chunk-vendors`, - test: /[\\/]node_modules[\\/]/, - priority: -10, - chunks: 'initial', - }, - common: { - name: `chunk-common`, - minChunks: 2, - priority: -20, - chunks: 'initial', - reuseExistingChunk: true, - }, - }, - }, - }, - plugins: [ - new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: '"production"', - }, - }), - new HtmlWebpackPlugin({ - template: './site/index.html', - inject: true, - production: true, - }), - new MiniCssExtractPlugin({ - filename: '[name].[contenthash:8].css', - chunkFilename: '[id].[contenthash:8].css', - }), - ], -}); diff --git a/components/affix/__tests__/__snapshots__/demo.test.js.snap b/components/affix/__tests__/__snapshots__/demo.test.js.snap index 02a9f45fa..7dfb3849f 100644 --- a/components/affix/__tests__/__snapshots__/demo.test.js.snap +++ b/components/affix/__tests__/__snapshots__/demo.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders ./antdv-demo/affix/demo/basic.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/affix/demo/basic.md correctly 1`] = `
@@ -11,13 +11,13 @@ exports[`renders ./antdv-demo/affix/demo/basic.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/affix/demo/on-change.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/affix/demo/on-change.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/affix/demo/target.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/affix/demo/target.md correctly 1`] = `
diff --git a/components/alert/__tests__/__snapshots__/demo.test.js.snap b/components/alert/__tests__/__snapshots__/demo.test.js.snap index 10440e19c..43f07c28d 100644 --- a/components/alert/__tests__/__snapshots__/demo.test.js.snap +++ b/components/alert/__tests__/__snapshots__/demo.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders ./antdv-demo/alert/demo/banner.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/banner.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/alert/demo/basic.md correctly 1`] = `
Success Text
`; +exports[`renders ./antdv-demo/docs/alert/demo/basic.md correctly 1`] = `
Success Text
`; -exports[`renders ./antdv-demo/alert/demo/closable.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/closable.md correctly 1`] = `
Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text
`; -exports[`renders ./antdv-demo/alert/demo/close-text.md correctly 1`] = ``; +exports[`renders ./antdv-demo/docs/alert/demo/close-text.md correctly 1`] = `
Info TextClose Now
`; -exports[`renders ./antdv-demo/alert/demo/custom-icon.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/custom-icon.md correctly 1`] = `
showIcon = false
Success Tips
@@ -46,7 +46,7 @@ exports[`renders ./antdv-demo/alert/demo/custom-icon.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/alert/demo/description.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/description.md correctly 1`] = `
Success Text

Success Description Success Description Success Description @@ -57,7 +57,7 @@ exports[`renders ./antdv-demo/alert/demo/description.md correctly 1`] = `

`; -exports[`renders ./antdv-demo/alert/demo/icon.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/icon.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/alert/demo/smooth-closed.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/smooth-closed.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/alert/demo/style.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/alert/demo/style.md correctly 1`] = `
Success Text
Info Text
diff --git a/components/anchor/__tests__/__snapshots__/demo.test.js.snap b/components/anchor/__tests__/__snapshots__/demo.test.js.snap index 760d453bc..5183569ab 100644 --- a/components/anchor/__tests__/__snapshots__/demo.test.js.snap +++ b/components/anchor/__tests__/__snapshots__/demo.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders ./antdv-demo/anchor/demo/basic.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/basic.md correctly 1`] = `
@@ -19,7 +19,7 @@ exports[`renders ./antdv-demo/anchor/demo/basic.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/anchor/demo/customizeHighlight.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/customizeHighlight.md correctly 1`] = `
@@ -33,7 +33,7 @@ exports[`renders ./antdv-demo/anchor/demo/customizeHighlight.md correctly 1`] =
`; -exports[`renders ./antdv-demo/anchor/demo/onChange.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/onChange.md correctly 1`] = `
@@ -47,7 +47,7 @@ exports[`renders ./antdv-demo/anchor/demo/onChange.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/anchor/demo/onClick.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/onClick.md correctly 1`] = `
@@ -61,7 +61,7 @@ exports[`renders ./antdv-demo/anchor/demo/onClick.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/anchor/demo/static.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/static.md correctly 1`] = `
@@ -75,7 +75,7 @@ exports[`renders ./antdv-demo/anchor/demo/static.md correctly 1`] = `
`; -exports[`renders ./antdv-demo/anchor/demo/targetOffset.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/anchor/demo/targetOffset.md correctly 1`] = `
diff --git a/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap b/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap index b3cd389ba..6a9007cd3 100644 --- a/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap +++ b/components/auto-complete/__tests__/__snapshots__/demo.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders ./antdv-demo/auto-complete/demo/basic.md correctly 1`] = ` +exports[`renders ./antdv-demo/docs/auto-complete/demo/basic.md correctly 1`] = `