From 0af90a5245872d7a8b27fad8efb08487df464b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=99=93=E9=A3=9E?= Date: Thu, 8 Nov 2018 11:17:17 +0800 Subject: [PATCH] Master (#1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Button: circle button supports size (#11275) 让circle button也支持size属性控制,padding的大小根据size属性的```button-padding-vertical```确定 * Upload: fix Error when `beforeUpload` hook return promise of file object (#11297) * Upload: fix beforeUpload hook bug * Upload: add ElUploadInternalRawFile interface * Radio: prevent changing value when radio is disabled. resolves #11296 (#11303) * InputNumber: add precision attribute (#11281) * ColorPicker: prevent active-change event when picker is closed (#11304) * add support of tab penl lazy render(#11022) (#11167) * add support of tab penl lazy render * add docs * fix test * Tabs: update tab-pane.d.ts * Docs: update Tabs docs * Table: fix oversized filter list. Resolves #11314 (#11320) * Radio: support switching radio with keyborard in ff. Fixes #8198 (#11325) * Docs: fix docs of Tab-pane * Radio: support switching radio with keyborard in ff. Fixes #8198 * Table: support manually sorting. Resolves #9495 (#11311) * Table: support manually sorting. Resolves #9495 * Table: add parameters for sort api * Docs: improve docs * Autocomplete: fix suggestions data bug (#11323) * Radio & Checkbox: replace cubic-bezier with ease-in (#11331) * Tooltip: add min-width (#11335) * Table: retain currently selected row when sorting the table. (#11348) * MessageBox: remove hidden class when using MessageBox twice (#11371) * Tree: fix markNodeData error when data is falsy (#11376) * Changelog: update for 2.4.0 (#11378) * Chore: fix deploy-ci.sh (#11379) * [build] 2.4.0 * [release] 2.4.0 * Chore: update donation QR codes * Docs: update es changelog for 2.4.0 (#11382) * Tabs: remove focus state when before-leave return a resolved promise (#11386) * Autocomplete: remove duplicate prop in types (#11388) * Pagination: update translation for tr-TR (#11399) Added forgotten translation for page * Tree: when tree nodes filtered, don't expand node in lazy mode (#11395) * form-item sizeClass (#11408) * form-item sizeClass * Update form.spec.js * Popover: not emit event or create popper when disabled (#11426) * Select: fix arrow align in FireFox (#11427) * Update node.js * Update node.js * Update node.js * improve the test coverage (#11447) * Test: add some test cases (#11453) * Select: hide clear icon when value is null (#11460) * Radio: remove box-shadow when disabled (#11462) * Tabs: fix lazy loading (#11461) * Tabs: fix lazy tab-pane order * Tabs: fix lazy loading * Update node.js this.data可能为undefined,需要判断一下 * Update node.js * Table: retain currently selected row when expanding row (#11464) * DateTimePicker: fix incorrect date on time pick (#11474) * date-time-picker: fix incorrect date on time pick * date-time-picker: fix incorrect date on confirm * Test: add some test cases (#11485) * Chore: retire lerna and remove redundant files (#11493) * Chore: retire lerna and delete redundant files * Chore: update Makefile * MessageBox: add iconClass (#11499) * Dialog: trigger closed event when closing animation ends (#11490) * Dialog: trigger closed event when close animation ends * Update dialog.md * Update dialog.md * Tabs: add stretch attribute (#11476) * Tabs: add stretch attribute * Update tabs.scss * Table: improve performance of summary-method (#11521) * Changelog: update for 2.4.1 (#11538) * Chore: update yarn.lock (#11539) * [build] 2.4.1 * [release] 2.4.1 * Tabs: fix tabs style (#11536) * Test: add more test cases (#11541) * Tabs: improve test case * Container: improve test case * Radio: improve test case * Popover: fix reference error in the loop (#11503) * Popover: fix reference error in the loop * Update directive.js * Docs: update es changelog for 2.4.1 (#11546) * Table: fix highlightCurrentRow regression (#11563) * Cascader: not focus when outside clicked (#11588) * i18n: update Slovak translation (#11597) * Button: fix style of single round/circle button in a group (#11605) * Chore: update sponsor, optimize suggestJump (#11614) * Pagination: add size to nested select (#11622) * Table: fix class-name & label-class-name prop not reactive (#11626) * Cascader: close when option clicked (#11623) * Cascader: close when option clicked in hover mode * update menu.vue * Tree: optimize not-allowed dropping cursor (#11631) * Pagination: use setCurrentValue when reassigning input value (#11608) * Pagination: input bug currentValue in input component's data object didn't refresh when changeHandle emited * Update pagination.js * Chore: delete unused file (#11641) * Autocomplete: passes id to nested native input (#11643) * Menu: fix open method error when collapse is changed (#11646) * Chore: add missing file when create new component (#11663) * Select: fix form change validation (#11672) * Table: fix highlightCurrentRow regression (#11691) * Docs: fix link of element react (#11718) * Select: remove empty option item when default value is null in single mode (#11731) * i18n: update ee.js (#11709) Add missing Estonian translations * Tabs: add activeName and oldActiveName parameters to before-leave hook (#11713) * Tabs: add activeName and oldActiveName parameters to before-leave hook * Tabs: fix docs * Chore: eslint ignore font files (#11696) * DatePicker: guards common but incorrect usage (#11673) * Loading: add missing definition of directive (#11749) * Changelog: update for 2.4.2 * [release] 2.4.2 * Docs: update es changelog for 2.4.2 (#11758) * Form: fix a typo in docs (#11765) line 412: `...并 Form-Item 的...` -->> `...并将 Form-Item 的...` * Table: fix params on docs (#11774) * Table: fix params on docs * Table: add missing definitions * Table: fix row style definitions * Update table.d.ts * Chore: update id and key for algolia (#11783) * Cascader: hide label when user inputs (#11738) * Cascader: hide label when user input * Cascader: update main.vue * Update main.vue * Cascader: not set readonly in IE * InputNumber: remove undocumented slots (#11794) * Tree: fix TreeNode dragged to wrong position (#11797) * i18n: update lv.js (#11814) * Form: clearValidate supports prop names (#11821) * MessageBox: add distinguishCancelAndClose (#11831) * Notification: remove vm attribute (#11830) * Changelog: update for 2.4.3 (#11832) * [build] 2.4.3 * [release] 2.4.3 * Chore: use rimraf when deploying (#11834) * Select: revert #10105 (#11837) * Table: update getRowClass (#11839) * Table: setCurrentRow only when highlight-current-row is true * Table: trigger current-change * Table: update getRowClass * Tree: not check node when it's disabled (#11847) * Docs: update TimePicker doc (#11845) * Time-Picker: Add missing translation * Time-Picker: Add missing translation * Docs: update es changelog for 2.4.3 (#11850) * update spanish Doc 2.4.3 * update spanish Doc 2.4.3 * MessageBox: add missing declaration (#11861) * Table: disable filter when filters is an empty array (#11864) * Table: changing current-row-key when current-row-key is assigned to null (#11866) * Button: optimize scss(#11900) * Radio: stop event propagation on radio label (#11912) * Chore: add missing style (#11953) * Chore: provide a key with v-for (#11891) * Radio: change component name (#11957) * Table: fix empty slot position (#11965) * Input: fix style error when suffix exists with append (#11951) * Fix - [Bug Report] Localization #11961 (#11968) * Input: add missing readonly prop (#11967) * Tree: fix defaultCheckedKeys and emptyText bug (#11971) * Changelog: update for 2.4.4 (#11981) * [build] 2.4.4 * [release] 2.4.4 * Docs: update es changelog for 2.4.4 (#11991) * Spinner: v-bind:style -> :style (#11997) * FormItem: v-bind:style -> :style (#11996) * Tree: fix keydown event in Tree (#12008) * Table: support class-name when type=expand (#12006) * TimeSelect: fix fieldReset when initialValue is empty string (#12010) * Message: fix type definition of ElMessageOptions, support VNode as message type (#12018) * Input: fix style error - border-spacing should not depend on default value (#11990) (#12016) * Docs: add slot doc for el-upload (#12041) * Table: allow filterable without filter-method (#12045) * MessageBox: fix type definition (#12058) * Use methods instead of inline expressions (#12059) * Docs: update Cascader doc (#12074) * Chore: add es doc for new component (#12098) * Table: add toggleAllSelection method (#12047) * MessageBox: add missing type (#12118) * Tree: not check node when check-strictly is true (#12106) * Select: remove redundant style (#12120) * date-picker: fix #11152 (#12114) * Input: fix wrong style of Input suffix (#12108) * Input: fix wrong style of Input * update input.vue * add test case * Tree: add includeHalfChecked flag to getCheckedNodes (#12014) * Changelog: update for 2.4.5 (#12134) * [build] 2.4.5 * [release] 2.4.5 * Docs: update Spanish doc 2.4.5 (#12138) * Chore: optimize entry script (#12192) * Dialog: ignore width when fullscreen is true (#12203) * Docs: improve quickstart doc (#12205) * Menu: save menu state when change collapse and expand menu(#10622) (#12178) * Docs: improve docs (#12208) * Table: fix async filters (#12165) * Select: debounce query (#12181) * Tree & MessageBox: fix type definition (#12214) * MessageBox: fix ElMessageBoxOptions.message * Tree: fix type definition * Main: fix IE compatibility issues (#12237) * Menu: make font-size constant into variable (#12239) * Autocomplete: add `popper-append-to-body` attribute (#12241) * Cascader: escape special characters for regexp (#12248) * Slider: avoid NaN when min and max values ​​are equal (#12256) * Radio: fix focus style (#12262) * Input: not trigger form validation when input (#12260) * Input: not trigger validation when input * InputNumber: update docs * Tree: register node after dragging (#12279) * Tree: register node after dragging * update Tree docs * Popover: show popper when InputNumber focused (#12284) * Pagination: make page-size attribute supports .sync (#12281) * Pagination: make page-size attribute supports .sync * Update pagination.js * Menu: fix docs (#12299) * Select: not clear text when filtering (#12304) * Select & Cascader: add default value for query string (#12322) * Tree: fix add node bug in lazy mode (#12265) * Changelog: update for 2.4.6 (#12325) * Changelog: update for 2.4.6 * update changelog * [build] 2.4.6 * [release] 2.4.6 * Docs: update Spanish doc for 2.4.6 (#12331) * date-picker: fix form change validation (#12328) * Cascader: highlight input when menu clicked (#12341) * Tabs: fixed tab-pane's incorrect order (#12346) * Date picker refactor dates selection: fix 12323 (#12347) * date-picker: refactor type='dates' fix issue #12323 {month, year} table highlights all selected dates nuke selectedDates to provide cleaner data flow * doc: correct date-picker's array usage empty value must be falsy (empty array should not be used) * DatePicker: improve form change validation (#12348) watch.value will keep firing during time picker selection it now detects whether panel is closed before firing el.form.change * Chore: update license year (#12419) * TimePicker: dynamic scroll position of time-spinner items (#12415) Makes it possible to style the height of ".el-time-spinner__item". Removed the fixed values associated to a height and line-height: 32px. It's now possible to set whichever height a user wants and the scrollbar will adjust itself accordingly. * Menu: fix submenu style (#12457) * MessageBox: update doc (#12465) * Menu: submenu is-active bug (#12479) 选中submenu下的菜单,submenu没有激活样式式象错误 * ColorPicker: fix the position of cursor (#12376) * DatePicker: turn off autocomplete for date picker range (#12521) * Input: fix autocomplete property is not compatible with native #12513 (#12514) * fix #12513 * fix: fallback for autoComplete and print deprecated warning * fix: fix auto-complete property in select component * fix default complete value * Docs: Update document for autocomplete property change * Docs: remove redundant documents * remove unnecessary console log message\ * Update select.md * fix: add missing declaration in select.d.ts * Pagination: assign 1 to default page count (#12525) * Pagination: fix emit order of page size (#12530) * Cascader: prevent value changing when menu is closing (#12507) * Table: fix table filter (#12539) * Chore: update donation qrcode (#12553) * i18n: add Persian translation of the remaining items (#12581) * i18n: add Vietnamese translation of remaining items (#12609) * Fix invalid link (#12667) Current link is https://element.eleme.io/nuxtjs.org instead of https://nuxtjs.org/. * Upload: create blob URL when picture displays (#12402) * Upload: create blob URL when picture displays * Update index.vue * Tree: fix tree node not deleted (#12684) * Pagination: update doc (#12685) * Form: fix style of form label in nested form (#12748) * FormItem: using slot-scope to display validation message (#12715) * Updated el-form-item to accept custom error message via slot * FormItem: updated slot name in docs * updated spanish and chinese translations * Update form.md * Update form.md * Update form.md * Update form.md * doc: add missing info in quickstart (#12574) * Select: use initial height to reset height of input (#12719) * Select: use initial height to reset height of input * Update select.vue * docs: improved documentation for el-form (#12635) * Docs: Document el-form label-position attribute Adds improved documentation to the el-form `label-position` attribute, which behaves differently when used with and without `label-width`. This has been a source of confusion for myself and others: https://github.com/ElemeFE/element/issues/8477 Thanks! * Document el-form label-position attribute (zh-CN, needs translation) * Document el-form label-position attribute (es) * Update form.md * Changelog: update for 2.4.7 (#12765) * [build] 2.4.7 * [release] 2.4.7 * docs: update Spanish doc for 2.4.7 (#12770) * update Spanish Doc * update Spanish Doc * update Spanish Doc * Switch: not display outline when focused (#12771) * FormItem: adding hide-required-asterisk attribute(#12744) * Form: adds prop to make asterisk optional on required fields * Form: adds prop to make asterisk optional on required fields * ElForm: Reverses attribute name to hide-required-asterisk, which defaults to false * Update form-item.vue * Update form.scss * Update form.md * Dialog: add opened event (#12828) * Dialog: add opened event * Docs: update es dialog doc * Update dialog.md * i18n: update Greek translation (#12830) Translate missing text * Upload: add missing definition (#12839) * Tree: show indicator in drop node (#12854) * i18n: add Serbian translation (#12863) Added Serbian translation. * Tabs: fix order of TabNav when array is sorted (#12846) * Tabs: fix order of TabNav when array is sorted * update tabs.vue * update test cases * doc: update i18n doc for Serbian language (#12867) * Form: emits error message on validate event (#12860) * Form: Emits error message on validate events * Update form.md * ButtonGroup: fix Dropdown style in ButtonGroup(#12815) (#12819) * [Button]Support Dropdown in ButtonGroup(#12815) * [Button]Support Dropdown in ButtonGroup(#12815) * [Button]Support Dropdown in ButtonGroup(#12815) * test: update test case for form (#12886) * chore: update date-picker comment notes (#12899) * DatePicker: validate input date (#12898) * date-picker: fix confirm() ignoring date validity make date-range panel's confirm validate date before confirming. 1. disable confirm button if picked date is invalid 2. reset highlight date on picker open (resetView) * test: date-time-range confirm honors disabledDate * Input: s autocomplete on textarea (#12917) A textarea element can also have an autocomplete attribute. Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea * Table: called render header in index column (#12914) * Table: fix table column default alignment (#12578) * Tree: fix type definition (#12941) * Tabs: scroll to active tab (#12948) * Tabs: fix not scrolling to active tab * update tabs.vue * changelog for 2.4.8 (#12950) * changelog for 2.4.8 * Update CHANGELOG.en-US.md * Update CHANGELOG.es.md * [build] 2.4.8 * [release] 2.4.8 * docs: Changelog for 2.4.8 Spanish update (#12952) * i18n: update Hungarian translation (#12963) * Dropdown: Added slots to documentation (#12985) * Dropdown: Added slots to documentation Added slots section in english to documentation for dropdown component. Chinese and Spanish missing. * Update dropdown.md * Badge: add type attribute (#12991) * badge: add type attribute * Update badge.md * i18n: update Uyghur translation (#13004) 年前面加上“-”, 在维语中年前面要写“-”表示第几年 * select: refactoring icon reverse (#12353) * select: refactoring icon reverse * select: disable clear icon when select popup is visible * select: refactoring clear icon * i18n: fix typo (#13032) 校对有些错误字 * TimePicker: selectable range will affect to column minutes in spinner (#12312) * Tabs: fixed last TabNav unable to be deleted (#13039) * InputNumber: fix style when `controls-position` is right (#13052) * Form: clearValidate supports string type param (#12990) * Select: make clearable work for multi select (#13049) * Select: make clearable work for multi select (#6399) * Select: chore * Select: fix bug and update docs (#13049) * Upload: use uid as upload-list key (#13054) * Upload: use uid as upload-list key * chore: fix code style * i18n: Add missing Slovenian translations (#13059) Date-picker: set year to '', add missing translations. Pagination: translate /page * NavMenu: fix typo (#13060) * Select: fix size attribute not working (#13070) * Select: fix readonly problem in edge (#13034) Cascader select readonly 添加 edge 浏览器判断; src/utils/util.js 添加 isIE, isEdge方法; * Tag: optimize code (#13069) * Tag: optimize code * update tag.vue * Select: fix option wrap in multiple mode (#12329) * Select: Fix (#11392 & #12327) Writing space become small when collapse-tags prop is added & input takes new line even if space is available when filterable & multiple props are true * Changes as IE & Edge dosen't support display: contents * Revert "Changes as IE & Edge dosen't support display: contents" This reverts commit 21475c6daac3e0ca364b4a9889e899316e553839. * Fixed issue - input going in new line even if there is space (collapse-tags) * Made calculating with dynamic (replaced static 208 with el-select__tags dynamic width) * Select: Fixed Bug - Extra Height Fixed bug - getting extra height whenever last options width is most of same as select's width * aria: add role dialog (#13084) * Alert: add support for title slot (#13082) * Alert: add support for title slot * update documents * Table: Adds header rendering slot (#13012) * Table: Adds header rendering slot Fixes #4909 and #4908 * Add translation to spanish * Include render-header deprecation warning * Add chinese translation and scoped slot description at bottom * Fix documentation and warnings. Fix custom-header docs * Fix redundant columns and cleanup example * Prevent scopedSlot from working on selection column * Typo * Table: tooltip content prefer innerText instead of textContent (#13159) * Table: update Chinese doc (#13177) * Tabs: set TabNav key (#13178) * changelog for 2.4.9 (#13182) * changelog for 2.4.9 * update changelog * update changelog * update * update * [build] 2.4.9 * [release] 2.4.9 --- .eslintignore | 5 + .eslintrc | 7 +- .github/CONTRIBUTING.en-US.md | 16 +- .github/CONTRIBUTING.es.md | 65 + .github/CONTRIBUTING.zh-CN.md | 16 +- .github/ISSUE_TEMPLATE.md | 8 + .github/PULL_REQUEST_TEMPLATE.md | 2 +- .gitignore | 4 + .travis.yml | 5 +- CHANGELOG.en-US.md | 1233 ++++--- CHANGELOG.es.md | 724 ++++ CHANGELOG.zh-CN.md | 1384 ++++---- FAQ.md | 288 +- LICENSE | 4 +- Makefile | 8 - README.md | 129 +- build/bin/build-all.js | 26 - build/bin/build-entry.js | 16 +- build/bin/build-locale.js | 32 +- build/bin/gen-cssfile.js | 9 +- build/bin/gen-indices.js | 57 + build/bin/iconInit.js | 4 +- build/bin/new-lang.js | 6 +- build/bin/new.js | 58 +- build/bin/template.js | 16 + build/bin/version.js | 4 +- build/config.js | 2 +- build/cooking.common.js | 18 - build/cooking.component.js | 19 - build/cooking.conf.js | 18 - build/cooking.demo.js | 127 - build/cooking.test.js | 52 - build/deploy-ci.sh | 20 +- build/deploy-faas.sh | 18 + build/release.sh | 4 +- .../theme-default => build}/salad.config.json | 0 build/webpack.common.js | 90 + build/webpack.component.js | 91 + build/webpack.conf.js | 102 + build/webpack.demo.js | 251 ++ build/webpack.test.js | 98 + components.json | 7 +- examples/app.vue | 179 +- examples/assets/images/banner-bg.svg | 556 --- examples/assets/images/button-d-cn.png | Bin 0 -> 7812 bytes examples/assets/images/button-d-en.png | Bin 0 -> 8097 bytes examples/assets/images/button-l-cn.png | Bin 0 -> 10965 bytes examples/assets/images/button-l-en.png | Bin 0 -> 11359 bytes examples/assets/images/cloud-1.png | Bin 0 -> 2979 bytes examples/assets/images/cloud-2.png | Bin 0 -> 2007 bytes examples/assets/images/compo-1.png | Bin 0 -> 2176 bytes examples/assets/images/compo-2.png | Bin 0 -> 3356 bytes examples/assets/images/compo-3.png | Bin 0 -> 2275 bytes examples/assets/images/dialog-close.png | Bin 0 -> 1259 bytes examples/assets/images/duohui.svg | 24 + examples/assets/images/duotai.svg | 16 + examples/assets/images/element-logo-small.svg | 2 +- examples/assets/images/element-logo.svg | 2 +- examples/assets/images/figure-1.png | Bin 0 -> 6537 bytes examples/assets/images/figure-2.png | Bin 0 -> 6994 bytes examples/assets/images/plant-1.png | Bin 0 -> 15712 bytes examples/assets/images/plant-2.png | Bin 0 -> 4855 bytes .../assets/images/resource-placeholder.svg | 23 + examples/assets/images/search-by-algolia.svg | 1 + examples/assets/images/stars.png | Bin 4341 -> 0 bytes examples/assets/images/tipe.svg | 175 + examples/assets/images/web.png | Bin 0 -> 10035 bytes examples/bus.js | 2 + examples/components/demo-block.vue | 116 +- examples/components/footer-nav.vue | 14 +- examples/components/footer.vue | 117 +- examples/components/header.vue | 334 +- examples/components/search.vue | 216 ++ examples/components/side-nav.vue | 213 +- examples/components/theme-picker.vue | 156 + examples/docs/en-US/alert.md | 414 ++- examples/docs/en-US/badge.md | 21 +- examples/docs/en-US/breadcrumb.md | 15 + examples/docs/en-US/button.md | 194 +- examples/docs/en-US/card.md | 43 +- examples/docs/en-US/carousel.md | 10 +- examples/docs/en-US/cascader.md | 13 +- examples/docs/en-US/checkbox.md | 143 +- examples/docs/en-US/collapse.md | 7 +- examples/docs/en-US/color-picker.md | 93 +- examples/docs/en-US/color.md | 119 +- examples/docs/en-US/container.md | 299 ++ examples/docs/en-US/custom-theme.md | 98 +- examples/docs/en-US/date-picker.md | 291 +- examples/docs/en-US/datetime-picker.md | 114 +- examples/docs/en-US/dialog.md | 94 +- examples/docs/en-US/dropdown.md | 153 +- examples/docs/en-US/form.md | 151 +- examples/docs/en-US/home.md | 11 - examples/docs/en-US/i18n.md | 17 +- examples/docs/en-US/icon.md | 25 +- examples/docs/en-US/input-number.md | 82 +- examples/docs/en-US/input.md | 262 +- examples/docs/en-US/installation.md | 45 +- examples/docs/en-US/layout.md | 50 +- examples/docs/en-US/loading.md | 51 +- examples/docs/en-US/menu.md | 163 +- examples/docs/en-US/message-box.md | 192 +- examples/docs/en-US/message.md | 75 +- examples/docs/en-US/notification.md | 201 +- examples/docs/en-US/pagination.md | 41 +- examples/docs/en-US/popover.md | 513 +-- examples/docs/en-US/progress.md | 16 +- examples/docs/en-US/quickstart.md | 367 +- examples/docs/en-US/radio.md | 152 +- examples/docs/en-US/rate.md | 11 +- examples/docs/en-US/select.md | 45 +- examples/docs/en-US/slider.md | 35 +- examples/docs/en-US/steps.md | 73 +- examples/docs/en-US/switch.md | 98 +- examples/docs/en-US/table.md | 490 ++- examples/docs/en-US/tabs.md | 42 +- examples/docs/en-US/tag.md | 101 +- examples/docs/en-US/time-picker.md | 70 +- examples/docs/en-US/tooltip.md | 31 +- examples/docs/en-US/transfer.md | 86 +- examples/docs/en-US/transition.md | 10 +- examples/docs/en-US/tree.md | 520 ++- examples/docs/en-US/upload.md | 78 +- examples/docs/es/alert.md | 230 ++ examples/docs/es/badge.md | 145 + examples/docs/es/breadcrumb.md | 49 + examples/docs/es/button.md | 189 + examples/docs/es/card.md | 220 ++ examples/docs/es/carousel.md | 244 ++ examples/docs/es/cascader.md | 1705 ++++++++++ examples/docs/es/checkbox.md | 327 ++ examples/docs/es/collapse.md | 157 + examples/docs/es/color-picker.md | 182 + examples/docs/es/color.md | 130 + examples/docs/es/container.md | 300 ++ examples/docs/es/custom-theme.md | 122 + examples/docs/es/date-picker.md | 528 +++ examples/docs/es/datetime-picker.md | 329 ++ examples/docs/es/dialog.md | 323 ++ examples/docs/es/dropdown.md | 355 ++ examples/docs/es/form.md | 910 +++++ examples/docs/es/i18n.md | 221 ++ examples/docs/es/icon.md | 102 + examples/docs/es/input-number.md | 206 ++ examples/docs/es/input.md | 733 ++++ examples/docs/es/installation.md | 31 + examples/docs/es/layout.md | 390 +++ examples/docs/es/loading.md | 260 ++ examples/docs/es/menu.md | 353 ++ examples/docs/es/message-box.md | 476 +++ examples/docs/es/message.md | 301 ++ examples/docs/es/notification.md | 430 +++ examples/docs/es/pagination.md | 237 ++ examples/docs/es/popover.md | 264 ++ examples/docs/es/progress.md | 62 + examples/docs/es/quickstart.md | 268 ++ examples/docs/es/radio.md | 231 ++ examples/docs/es/rate.md | 178 + examples/docs/es/select.md | 730 ++++ examples/docs/es/slider.md | 254 ++ examples/docs/es/steps.md | 176 + examples/docs/es/switch.md | 167 + examples/docs/es/table.md | 2146 ++++++++++++ examples/docs/es/tabs.md | 397 +++ examples/docs/es/tag.md | 215 ++ examples/docs/es/time-picker.md | 223 ++ examples/docs/es/tooltip.md | 243 ++ examples/docs/es/transfer.md | 325 ++ examples/docs/es/transition.md | 178 + examples/docs/es/tree.md | 1241 +++++++ examples/docs/es/typography.md | 151 + examples/docs/es/upload.md | 426 +++ examples/docs/zh-CN/alert.md | 51 +- examples/docs/zh-CN/badge.md | 19 +- examples/docs/zh-CN/breadcrumb.md | 15 + examples/docs/zh-CN/button.md | 193 +- examples/docs/zh-CN/card.md | 41 +- examples/docs/zh-CN/carousel.md | 10 +- examples/docs/zh-CN/cascader.md | 9 +- examples/docs/zh-CN/checkbox.md | 153 +- examples/docs/zh-CN/collapse.md | 7 +- examples/docs/zh-CN/color-picker.md | 92 +- examples/docs/zh-CN/color.md | 123 +- examples/docs/zh-CN/container.md | 299 ++ examples/docs/zh-CN/custom-theme.md | 97 +- examples/docs/zh-CN/date-picker.md | 261 +- examples/docs/zh-CN/datetime-picker.md | 115 +- examples/docs/zh-CN/dialog.md | 99 +- examples/docs/zh-CN/dropdown.md | 155 +- examples/docs/zh-CN/form.md | 160 +- examples/docs/zh-CN/home.md | 11 - examples/docs/zh-CN/i18n.md | 17 +- examples/docs/zh-CN/icon.md | 26 +- examples/docs/zh-CN/input-number.md | 81 +- examples/docs/zh-CN/input.md | 245 +- examples/docs/zh-CN/installation.md | 45 +- examples/docs/zh-CN/layout.md | 50 +- examples/docs/zh-CN/loading.md | 51 +- examples/docs/zh-CN/menu.md | 162 +- examples/docs/zh-CN/message-box.md | 193 +- examples/docs/zh-CN/message.md | 75 +- examples/docs/zh-CN/notification.md | 207 +- examples/docs/zh-CN/pagination.md | 51 +- examples/docs/zh-CN/popover.md | 107 +- examples/docs/zh-CN/progress.md | 6 +- examples/docs/zh-CN/quickstart.md | 368 +- examples/docs/zh-CN/radio.md | 133 +- examples/docs/zh-CN/rate.md | 13 +- examples/docs/zh-CN/select.md | 52 +- examples/docs/zh-CN/slider.md | 12 +- examples/docs/zh-CN/steps.md | 76 +- examples/docs/zh-CN/switch.md | 98 +- examples/docs/zh-CN/table.md | 490 ++- examples/docs/zh-CN/tabs.md | 42 +- examples/docs/zh-CN/tag.md | 97 +- examples/docs/zh-CN/time-picker.md | 73 +- examples/docs/zh-CN/tooltip.md | 1 + examples/docs/zh-CN/transfer.md | 86 +- examples/docs/zh-CN/transition.md | 10 +- examples/docs/zh-CN/tree.md | 568 +++- examples/docs/zh-CN/upload.md | 104 +- examples/entry.js | 4 +- examples/i18n/component.json | 49 + examples/i18n/page.json | 134 +- examples/i18n/route.json | 3 + examples/i18n/title.json | 6 + examples/icon.json | 2 +- examples/index.tpl | 13 +- examples/nav.config.json | 286 +- examples/pages/template/changelog.tpl | 123 +- examples/pages/template/component.tpl | 229 +- examples/pages/template/index.tpl | 272 +- examples/pages/template/resource.tpl | 67 +- examples/play.js | 2 +- examples/play/component.vue | 27 - examples/play/index.vue | 6 - examples/route.config.js | 14 +- examples/versions.json | 2 +- lerna.json | 11 - package.json | 108 +- packages/alert/src/main.vue | 27 +- packages/aside/index.js | 8 + packages/aside/src/main.vue | 20 + .../src/autocomplete-suggestions.vue | 41 +- packages/autocomplete/src/autocomplete.vue | 167 +- packages/badge/src/main.vue | 18 +- packages/breadcrumb/src/breadcrumb-item.vue | 34 +- packages/breadcrumb/src/breadcrumb.vue | 19 +- packages/button/src/button-group.vue | 6 - packages/button/src/button.vue | 39 +- packages/card/src/main.vue | 11 +- packages/carousel/_index.js | 10 - packages/carousel/cooking.conf.js | 6 - packages/carousel/package.json | 17 - packages/carousel/src/item.vue | 11 +- packages/carousel/src/main.vue | 12 +- packages/cascader/cooking.conf.js | 18 - packages/cascader/package.json | 15 - packages/cascader/src/main.vue | 119 +- packages/cascader/src/menu.vue | 215 +- packages/checkbox/src/checkbox-button.vue | 60 +- packages/checkbox/src/checkbox-group.vue | 18 +- packages/checkbox/src/checkbox.vue | 96 +- packages/col/src/col.js | 15 +- packages/collapse/src/collapse-item.vue | 72 +- packages/collapse/src/collapse.vue | 10 +- packages/color-picker/cooking.conf.js | 6 - packages/color-picker/package.json | 15 - packages/color-picker/src/color.js | 29 +- .../src/components/picker-dropdown.vue | 51 +- .../color-picker/src/components/predefine.vue | 61 + .../color-picker/src/components/sv-panel.vue | 4 +- packages/color-picker/src/main.vue | 84 +- packages/container/index.js | 8 + packages/container/src/main.vue | 33 + packages/date-picker/README.md | 64 - packages/date-picker/_index.js | 12 - packages/date-picker/cooking.conf.js | 6 - packages/date-picker/package.json | 15 - packages/date-picker/src/basic/date-table.vue | 156 +- .../date-picker/src/basic/month-table.vue | 53 +- .../date-picker/src/basic/time-spinner.vue | 361 +- packages/date-picker/src/basic/year-table.vue | 57 +- packages/date-picker/src/panel/date-range.vue | 492 ++- packages/date-picker/src/panel/date.vue | 484 ++- packages/date-picker/src/panel/time-range.vue | 246 +- .../date-picker/src/panel/time-select.vue | 50 +- packages/date-picker/src/panel/time.vue | 153 +- packages/date-picker/src/picker.vue | 640 +++- .../date-picker/src/picker/date-picker.js | 3 +- .../date-picker/src/picker/time-picker.js | 3 +- .../date-picker/src/picker/time-select.js | 10 +- packages/date-picker/src/util/index.js | 236 +- packages/dialog/src/component.vue | 96 +- packages/dropdown/src/dropdown-item.vue | 4 +- packages/dropdown/src/dropdown-menu.vue | 25 +- packages/dropdown/src/dropdown.vue | 199 +- packages/footer/index.js | 8 + packages/footer/src/main.vue | 20 + packages/form/src/form-item.vue | 187 +- packages/form/src/form.vue | 63 +- packages/header/index.js | 8 + packages/header/src/main.vue | 20 + packages/input-number/src/input-number.vue | 213 +- packages/input/src/calcTextareaHeight.js | 20 +- packages/input/src/input.vue | 283 +- packages/loading/README.md | 66 - packages/loading/cooking.conf.js | 6 - packages/loading/package.json | 15 - packages/loading/src/directive.js | 95 +- packages/loading/src/index.js | 41 +- packages/loading/src/loading.vue | 6 +- packages/main/index.js | 8 + packages/main/src/main.vue | 12 + packages/menu/src/menu-item-group.vue | 3 +- packages/menu/src/menu-item.vue | 75 +- packages/menu/src/menu-mixin.js | 15 +- packages/menu/src/menu.vue | 297 +- packages/menu/src/submenu.vue | 299 +- packages/message-box/src/main.js | 29 +- packages/message-box/src/main.vue | 182 +- packages/message/assets/error.svg | 19 - packages/message/assets/info.svg | 19 - packages/message/assets/success.svg | 19 - packages/message/assets/warning.svg | 19 - packages/message/src/main.js | 5 +- packages/message/src/main.vue | 53 +- packages/notification/src/main.js | 73 +- packages/notification/src/main.vue | 65 +- packages/pagination/README.md | 59 - packages/pagination/cooking.conf.js | 6 - packages/pagination/package.json | 15 - packages/pagination/src/pager.vue | 44 +- packages/pagination/src/pagination.js | 195 +- packages/popover/src/directive.js | 17 +- packages/popover/src/main.vue | 110 +- packages/progress/src/progress.vue | 43 +- packages/radio/index.js | 2 +- packages/radio/src/radio-button.vue | 56 +- packages/radio/src/radio-group.vue | 80 +- packages/radio/src/radio.vue | 70 +- packages/rate/src/main.vue | 137 +- packages/row/src/row.js | 2 +- packages/select/src/navigation-mixin.js | 54 + packages/select/src/option-group.vue | 4 +- packages/select/src/option.vue | 76 +- packages/select/src/select-dropdown.vue | 12 +- packages/select/src/select.vue | 502 ++- packages/slider/src/button.vue | 64 +- packages/slider/src/main.vue | 94 +- packages/spinner/src/spinner.vue | 2 +- packages/steps/README.md | 2 +- packages/steps/src/step.vue | 96 +- packages/steps/src/steps.vue | 29 +- packages/switch/src/component.vue | 135 +- packages/table/README.md | 105 - packages/table/_index.js | 10 - packages/table/cooking.conf.js | 6 - packages/table/package.json | 17 - packages/table/src/filter-panel.vue | 33 +- packages/table/src/layout-observer.js | 68 + packages/table/src/table-body.js | 211 +- packages/table/src/table-column.js | 183 +- packages/table/src/table-footer.js | 121 +- packages/table/src/table-header.js | 247 +- packages/table/src/table-layout.js | 119 +- packages/table/src/table-store.js | 296 +- packages/table/src/table.vue | 443 ++- packages/table/src/util.js | 74 +- packages/tabs/src/tab-bar.vue | 26 +- packages/tabs/src/tab-nav.vue | 194 +- packages/tabs/src/tab-pane.vue | 36 +- packages/tabs/src/tabs.vue | 117 +- packages/tag/src/tag.vue | 38 +- .../{theme-default => theme-chalk}/.gitignore | 0 packages/theme-chalk/README.md | 33 + .../gulpfile.js | 12 +- packages/theme-chalk/package.json | 35 + packages/theme-chalk/src/alert.scss | 105 + packages/theme-chalk/src/aside.scss | 7 + packages/theme-chalk/src/autocomplete.scss | 81 + packages/theme-chalk/src/badge.scss | 57 + packages/theme-chalk/src/base.scss | 2 + .../src/breadcrumb-item.scss} | 0 packages/theme-chalk/src/breadcrumb.scss | 55 + .../src/button-group.scss} | 0 packages/theme-chalk/src/button.scss | 258 ++ packages/theme-chalk/src/card.scss | 32 + packages/theme-chalk/src/carousel-item.scss | 50 + packages/theme-chalk/src/carousel.scss | 134 + packages/theme-chalk/src/cascader.scss | 180 + .../src/checkbox-button.scss} | 0 .../src/checkbox-group.scss} | 0 packages/theme-chalk/src/checkbox.scss | 358 ++ packages/theme-chalk/src/col.scss | 156 + .../src/collapse-item.scss} | 0 packages/theme-chalk/src/collapse.scss | 57 + packages/theme-chalk/src/color-picker.scss | 384 +++ .../src/common/popup.scss} | 8 + .../src/common/transition.scss} | 15 +- packages/theme-chalk/src/common/var.scss | 713 ++++ packages/theme-chalk/src/container.scss | 14 + packages/theme-chalk/src/date-picker.scss | 12 + .../src/date-picker/date-picker.scss | 97 + .../src/date-picker/date-range-picker.scss | 104 + .../src/date-picker/date-table.scss | 151 + .../src/date-picker/month-table.scss | 40 + .../src/date-picker/picker-panel.scss | 117 + .../theme-chalk/src/date-picker/picker.scss | 190 ++ .../src/date-picker/time-picker.scss | 84 + .../src/date-picker/time-range-picker.scss | 31 + .../src/date-picker/time-spinner.scss | 110 + .../src/date-picker/year-table.scss | 44 + packages/theme-chalk/src/dialog.scss | 122 + packages/theme-chalk/src/display.scss | 12 + .../src/dropdown-item.scss} | 0 .../src/dropdown-menu.scss} | 0 packages/theme-chalk/src/dropdown.scss | 169 + .../theme-chalk/src/fonts/element-icons.ttf | Bin 0 -> 11040 bytes .../theme-chalk/src/fonts/element-icons.woff | Bin 0 -> 6164 bytes packages/theme-chalk/src/footer.scss | 8 + .../src/form-item.scss} | 0 packages/theme-chalk/src/form.scss | 174 + packages/theme-chalk/src/header.scss | 8 + packages/theme-chalk/src/icon.scss | 186 + packages/theme-chalk/src/index.scss | 67 + packages/theme-chalk/src/input-number.scss | 180 + packages/theme-chalk/src/input.scss | 310 ++ packages/theme-chalk/src/loading.scss | 96 + packages/theme-chalk/src/main.scss | 12 + .../src/menu-item-group.scss} | 0 .../src/menu-item.scss} | 0 packages/theme-chalk/src/menu.scss | 289 ++ packages/theme-chalk/src/message-box.scss | 223 ++ packages/theme-chalk/src/message.scss | 120 + packages/theme-chalk/src/mixins/_button.scss | 81 + packages/theme-chalk/src/mixins/config.scss | 4 + packages/theme-chalk/src/mixins/function.scss | 44 + packages/theme-chalk/src/mixins/mixins.scss | 190 ++ packages/theme-chalk/src/mixins/utils.scss | 39 + packages/theme-chalk/src/notification.scss | 98 + packages/theme-chalk/src/option-group.scss | 42 + packages/theme-chalk/src/option.scss | 36 + packages/theme-chalk/src/pagination.scss | 295 ++ packages/theme-chalk/src/popover.scss | 39 + packages/theme-chalk/src/popper.scss | 101 + packages/theme-chalk/src/progress.scss | 129 + packages/theme-chalk/src/radio-button.scss | 113 + packages/theme-chalk/src/radio-group.scss | 9 + packages/theme-chalk/src/radio.scss | 198 ++ packages/theme-chalk/src/rate.scss | 49 + .../reset.css => theme-chalk/src/reset.scss} | 28 +- packages/theme-chalk/src/row.scss | 39 + packages/theme-chalk/src/scrollbar.scss | 71 + packages/theme-chalk/src/select-dropdown.scss | 59 + packages/theme-chalk/src/select.scss | 148 + packages/theme-chalk/src/slider.scss | 228 ++ packages/theme-chalk/src/spinner.scss | 44 + packages/theme-chalk/src/step.scss | 317 ++ packages/theme-chalk/src/steps.scss | 20 + .../src/submenu.scss} | 0 packages/theme-chalk/src/switch.scss | 116 + .../src/tab-pane.scss} | 0 packages/theme-chalk/src/table-column.scss | 97 + packages/theme-chalk/src/table.scss | 552 +++ packages/theme-chalk/src/tabs.scss | 587 ++++ packages/theme-chalk/src/tag.scss | 146 + packages/theme-chalk/src/time-picker.scss | 8 + packages/theme-chalk/src/time-select.scss | 37 + packages/theme-chalk/src/tooltip.scss | 140 + packages/theme-chalk/src/transfer.scss | 227 ++ packages/theme-chalk/src/tree.scss | 122 + packages/theme-chalk/src/upload.scss | 602 ++++ packages/theme-default/README.md | 33 - packages/theme-default/package.json | 35 - packages/theme-default/src/alert.css | 86 - packages/theme-default/src/autocomplete.css | 80 - packages/theme-default/src/badge.css | 40 - packages/theme-default/src/base.css | 2 - packages/theme-default/src/breadcrumb.css | 45 - packages/theme-default/src/button.css | 206 -- packages/theme-default/src/card.css | 23 - packages/theme-default/src/carousel-item.css | 48 - packages/theme-default/src/carousel.css | 134 - packages/theme-default/src/cascader.css | 175 - packages/theme-default/src/checkbox.css | 254 -- packages/theme-default/src/col.css | 101 - packages/theme-default/src/collapse.css | 53 - packages/theme-default/src/color-picker.css | 266 -- packages/theme-default/src/common/var.css | 605 ---- packages/theme-default/src/core/dropdown.css | 45 - packages/theme-default/src/core/input.css | 55 - packages/theme-default/src/core/option.css | 72 - packages/theme-default/src/core/tag.css | 29 - packages/theme-default/src/date-picker.css | 11 - .../src/date-picker/date-picker.css | 86 - .../src/date-picker/date-range-picker.css | 112 - .../src/date-picker/date-table.css | 85 - .../src/date-picker/month-table.css | 38 - .../src/date-picker/picker-panel.css | 114 - .../theme-default/src/date-picker/picker.css | 35 - .../src/date-picker/time-picker.css | 87 - .../src/date-picker/time-range-picker.css | 33 - .../src/date-picker/time-spinner.css | 63 - .../src/date-picker/year-table.css | 42 - packages/theme-default/src/dialog.css | 115 - packages/theme-default/src/dropdown.css | 74 - .../theme-default/src/fonts/element-icons.ttf | Bin 13248 -> 0 bytes .../src/fonts/element-icons.woff | Bin 8004 -> 0 bytes packages/theme-default/src/form.css | 93 - packages/theme-default/src/icon.css | 84 - packages/theme-default/src/index.css | 62 - packages/theme-default/src/input-number.css | 98 - packages/theme-default/src/input.css | 232 -- packages/theme-default/src/loading.css | 82 - packages/theme-default/src/menu.css | 259 -- packages/theme-default/src/message-box.css | 170 - packages/theme-default/src/message.css | 86 - packages/theme-default/src/mixins/_button.css | 51 - packages/theme-default/src/notification.css | 84 - packages/theme-default/src/option-group.css | 28 - packages/theme-default/src/option.css | 47 - packages/theme-default/src/pagination.css | 208 -- packages/theme-default/src/popover.css | 120 - packages/theme-default/src/progress.css | 119 - packages/theme-default/src/radio-button.css | 106 - packages/theme-default/src/radio-group.css | 16 - packages/theme-default/src/radio.css | 116 - packages/theme-default/src/rate.css | 48 - packages/theme-default/src/row.css | 39 - packages/theme-default/src/scrollbar.css | 71 - .../theme-default/src/select-dropdown.css | 60 - packages/theme-default/src/select.css | 141 - packages/theme-default/src/slider.css | 207 -- packages/theme-default/src/spinner.css | 46 - packages/theme-default/src/step.css | 210 -- packages/theme-default/src/steps.css | 20 - packages/theme-default/src/switch.css | 117 - packages/theme-default/src/table-column.css | 92 - packages/theme-default/src/table.css | 466 --- packages/theme-default/src/tabs.css | 289 -- packages/theme-default/src/tag.css | 105 - packages/theme-default/src/time-picker.css | 5 - packages/theme-default/src/time-select.css | 38 - packages/theme-default/src/tooltip.css | 138 - packages/theme-default/src/transfer.css | 168 - packages/theme-default/src/tree.css | 103 - packages/theme-default/src/upload.css | 532 --- packages/tooltip/src/main.js | 110 +- packages/transfer/src/main.vue | 67 +- packages/transfer/src/transfer-panel.vue | 69 +- packages/tree/src/model/node.js | 191 +- packages/tree/src/model/tree-store.js | 78 +- packages/tree/src/model/util.js | 13 +- packages/tree/src/tree-node.vue | 107 +- packages/tree/src/tree.vue | 355 +- packages/upload/README.md | 67 - packages/upload/cooking.conf.js | 6 - packages/upload/package.json | 16 - packages/upload/src/ajax.js | 8 +- packages/upload/src/iframe-upload.vue | 160 - packages/upload/src/index.vue | 107 +- packages/upload/src/upload-dragger.vue | 34 +- packages/upload/src/upload-list.vue | 24 +- packages/upload/src/upload.vue | 47 +- postcss.config.js | 20 + src/directives/mousewheel.js | 18 + src/directives/repeat-click.js | 24 + src/index.js | 35 +- src/locale/lang/af-ZA.js | 5 + src/locale/lang/ar.js | 108 + src/locale/lang/bg.js | 5 + src/locale/lang/ca.js | 5 + src/locale/lang/{cz.js => cs-CZ.js} | 25 +- src/locale/lang/da.js | 17 +- src/locale/lang/de.js | 7 +- src/locale/lang/ee.js | 5 + src/locale/lang/el.js | 21 +- src/locale/lang/en.js | 27 +- src/locale/lang/es.js | 93 +- src/locale/lang/fa.js | 25 +- src/locale/lang/fi.js | 5 + src/locale/lang/fr.js | 17 +- src/locale/lang/he.js | 109 + src/locale/lang/hu.js | 108 + src/locale/lang/id.js | 5 + src/locale/lang/it.js | 17 +- src/locale/lang/ja.js | 19 +- src/locale/lang/km.js | 109 + src/locale/lang/ko.js | 5 + src/locale/lang/ku.js | 109 + src/locale/lang/kz.js | 109 + src/locale/lang/lt.js | 109 + src/locale/lang/lv.js | 9 +- src/locale/lang/mn.js | 109 + src/locale/lang/nb-NO.js | 5 + src/locale/lang/nl.js | 19 +- src/locale/lang/pl.js | 15 +- src/locale/lang/pt-br.js | 5 + src/locale/lang/pt.js | 5 + src/locale/lang/ro.js | 109 + src/locale/lang/ru-RU.js | 17 +- src/locale/lang/sk.js | 5 + src/locale/lang/sl.js | 9 +- src/locale/lang/sr.js | 109 + src/locale/lang/sv-SE.js | 5 + src/locale/lang/ta.js | 9 +- src/locale/lang/th.js | 5 + src/locale/lang/tk.js | 21 +- src/locale/lang/tr-TR.js | 7 +- src/locale/lang/ua.js | 23 +- src/locale/lang/ug-CN.js | 109 + src/locale/lang/vi.js | 5 + src/locale/lang/zh-CN.js | 5 + src/locale/lang/zh-TW.js | 5 + src/mixins/focus.js | 9 + src/mixins/migrating.js | 6 +- src/utils/after-leave.js | 27 + src/utils/aria-dialog.js | 90 + src/utils/aria-utils.js | 121 + src/utils/clickoutside.js | 53 +- src/utils/dom.js | 12 +- src/utils/menu/aria-menubar.js | 14 + src/utils/menu/aria-menuitem.js | 49 + src/utils/menu/aria-submenu.js | 59 + src/utils/popper.js | 37 +- src/utils/popup/index.js | 100 +- src/utils/popup/popup-manager.js | 19 +- src/utils/resize-event.js | 188 +- src/utils/scroll-into-view.js | 10 +- src/utils/shared.js | 4 + src/utils/sync.js | 54 - src/utils/util.js | 83 + src/utils/vdom.js | 2 +- src/utils/vue-popper.js | 34 +- test/unit/index.js | 2 +- test/unit/karma.conf.js | 27 +- test/unit/specs/alert.spec.js | 11 +- test/unit/specs/autocomplete.spec.js | 206 +- test/unit/specs/button.spec.js | 60 +- test/unit/specs/card.spec.js | 21 + test/unit/specs/carousel.spec.js | 20 +- test/unit/specs/cascader.spec.js | 187 +- test/unit/specs/checkbox.spec.js | 120 + test/unit/specs/color-picker.spec.js | 100 +- test/unit/specs/container.spec.js | 128 + test/unit/specs/date-picker.spec.js | 1805 ++++++++-- test/unit/specs/dialog.spec.js | 159 +- test/unit/specs/dropdown.spec.js | 111 +- test/unit/specs/form.spec.js | 363 +- test/unit/specs/input-number.spec.js | 135 +- test/unit/specs/input.spec.js | 125 +- test/unit/specs/loading.spec.js | 40 +- test/unit/specs/menu.spec.js | 170 +- test/unit/specs/message-box.spec.js | 73 +- test/unit/specs/message.spec.js | 32 +- test/unit/specs/mixin.vue-popup.spec.js | 4 +- test/unit/specs/notification.spec.js | 24 +- test/unit/specs/pagination.spec.js | 139 +- test/unit/specs/popover.spec.js | 73 +- test/unit/specs/progress.spec.js | 18 +- test/unit/specs/radio.spec.js | 260 +- test/unit/specs/rate.spec.js | 34 + test/unit/specs/select.spec.js | 265 +- test/unit/specs/slider.spec.js | 75 +- test/unit/specs/steps.spec.js | 25 +- test/unit/specs/switch.spec.js | 51 +- test/unit/specs/sync.spec.js | 163 - test/unit/specs/table.spec.js | 343 +- test/unit/specs/tabs.spec.js | 278 +- test/unit/specs/time-picker.spec.js | 289 +- test/unit/specs/time-select.spec.js | 60 +- test/unit/specs/tooltip.spec.js | 55 + test/unit/specs/transfer.spec.js | 70 +- test/unit/specs/tree.spec.js | 371 +- test/unit/specs/upload.spec.js | 144 +- test/unit/util.js | 13 + types/alert.d.ts | 27 + types/aside.d.ts | 7 + types/autocomplete.d.ts | 75 + types/badge.d.ts | 16 + types/breadcrumb-item.d.ts | 10 + types/breadcrumb.d.ts | 10 + types/button-group.d.ts | 4 + types/button.d.ts | 37 + types/card.d.ts | 26 + types/carousel-item.d.ts | 10 + types/carousel.d.ts | 53 + types/cascader.d.ts | 57 + types/checkbox-button.d.ts | 22 + types/checkbox-group.d.ts | 22 + types/checkbox.d.ts | 34 + types/col.d.ts | 46 + types/collapse-item.d.ts | 23 + types/collapse.d.ts | 10 + types/color-picker.d.ts | 21 + types/component.d.ts | 13 + types/container.d.ts | 7 + types/date-picker.d.ts | 124 + types/dialog.d.ts | 59 + types/dropdown-item.d.ts | 13 + types/dropdown-menu.d.ts | 4 + types/dropdown.d.ts | 26 + types/element-ui.d.ts | 294 ++ types/footer.d.ts | 7 + types/form-item.d.ts | 37 + types/form.d.ts | 82 + types/header.d.ts | 7 + types/index.d.ts | 4 + types/input-number.d.ts | 44 + types/input.d.ts | 95 + types/loading.d.ts | 62 + types/main.d.ts | 4 + types/menu-item-group.d.ts | 7 + types/menu-item.d.ts | 10 + types/menu.d.ts | 46 + types/message-box.d.ts | 176 + types/message.d.ts | 75 + types/notification.d.ts | 84 + types/option-group.d.ts | 10 + types/option.d.ts | 13 + types/pagination.d.ts | 40 + types/popover.d.ts | 65 + types/progress.d.ts | 31 + types/radio-button.d.ts | 16 + types/radio-group.d.ts | 18 + types/radio.d.ts | 19 + types/rate.d.ts | 52 + types/row.d.ts | 25 + types/select.d.ts | 90 + types/slider.d.ts | 62 + types/step.d.ts | 34 + types/steps.d.ts | 28 + types/submenu.d.ts | 22 + types/switch.d.ts | 40 + types/tab-pane.d.ts | 19 + types/table-column.d.ts | 117 + types/table.d.ts | 157 + types/tabs.d.ts | 31 + types/tag.d.ts | 24 + types/time-picker.d.ts | 63 + types/time-select.d.ts | 56 + types/tooltip.d.ts | 49 + types/transfer.d.ts | 73 + types/tree.d.ts | 260 ++ types/upload.d.ts | 124 + yarn.lock | 3026 +++++++++++------ 748 files changed, 64879 insertions(+), 20834 deletions(-) create mode 100644 .github/CONTRIBUTING.es.md create mode 100644 CHANGELOG.es.md delete mode 100644 build/bin/build-all.js create mode 100644 build/bin/gen-indices.js create mode 100644 build/bin/template.js delete mode 100644 build/cooking.common.js delete mode 100644 build/cooking.component.js delete mode 100644 build/cooking.conf.js delete mode 100644 build/cooking.demo.js delete mode 100644 build/cooking.test.js create mode 100644 build/deploy-faas.sh rename {packages/theme-default => build}/salad.config.json (100%) create mode 100644 build/webpack.common.js create mode 100644 build/webpack.component.js create mode 100644 build/webpack.conf.js create mode 100644 build/webpack.demo.js create mode 100644 build/webpack.test.js delete mode 100755 examples/assets/images/banner-bg.svg create mode 100644 examples/assets/images/button-d-cn.png create mode 100644 examples/assets/images/button-d-en.png create mode 100644 examples/assets/images/button-l-cn.png create mode 100644 examples/assets/images/button-l-en.png create mode 100644 examples/assets/images/cloud-1.png create mode 100644 examples/assets/images/cloud-2.png create mode 100644 examples/assets/images/compo-1.png create mode 100644 examples/assets/images/compo-2.png create mode 100644 examples/assets/images/compo-3.png create mode 100644 examples/assets/images/dialog-close.png create mode 100644 examples/assets/images/duohui.svg create mode 100644 examples/assets/images/duotai.svg create mode 100644 examples/assets/images/figure-1.png create mode 100644 examples/assets/images/figure-2.png create mode 100644 examples/assets/images/plant-1.png create mode 100644 examples/assets/images/plant-2.png create mode 100755 examples/assets/images/resource-placeholder.svg create mode 100644 examples/assets/images/search-by-algolia.svg delete mode 100644 examples/assets/images/stars.png create mode 100644 examples/assets/images/tipe.svg create mode 100644 examples/assets/images/web.png create mode 100644 examples/bus.js create mode 100644 examples/components/search.vue create mode 100644 examples/components/theme-picker.vue create mode 100644 examples/docs/en-US/container.md delete mode 100644 examples/docs/en-US/home.md create mode 100644 examples/docs/es/alert.md create mode 100644 examples/docs/es/badge.md create mode 100644 examples/docs/es/breadcrumb.md create mode 100644 examples/docs/es/button.md create mode 100644 examples/docs/es/card.md create mode 100644 examples/docs/es/carousel.md create mode 100644 examples/docs/es/cascader.md create mode 100644 examples/docs/es/checkbox.md create mode 100644 examples/docs/es/collapse.md create mode 100644 examples/docs/es/color-picker.md create mode 100644 examples/docs/es/color.md create mode 100644 examples/docs/es/container.md create mode 100644 examples/docs/es/custom-theme.md create mode 100644 examples/docs/es/date-picker.md create mode 100644 examples/docs/es/datetime-picker.md create mode 100644 examples/docs/es/dialog.md create mode 100644 examples/docs/es/dropdown.md create mode 100644 examples/docs/es/form.md create mode 100644 examples/docs/es/i18n.md create mode 100644 examples/docs/es/icon.md create mode 100644 examples/docs/es/input-number.md create mode 100644 examples/docs/es/input.md create mode 100644 examples/docs/es/installation.md create mode 100644 examples/docs/es/layout.md create mode 100644 examples/docs/es/loading.md create mode 100644 examples/docs/es/menu.md create mode 100644 examples/docs/es/message-box.md create mode 100644 examples/docs/es/message.md create mode 100644 examples/docs/es/notification.md create mode 100644 examples/docs/es/pagination.md create mode 100644 examples/docs/es/popover.md create mode 100644 examples/docs/es/progress.md create mode 100644 examples/docs/es/quickstart.md create mode 100644 examples/docs/es/radio.md create mode 100644 examples/docs/es/rate.md create mode 100644 examples/docs/es/select.md create mode 100644 examples/docs/es/slider.md create mode 100644 examples/docs/es/steps.md create mode 100644 examples/docs/es/switch.md create mode 100644 examples/docs/es/table.md create mode 100644 examples/docs/es/tabs.md create mode 100644 examples/docs/es/tag.md create mode 100644 examples/docs/es/time-picker.md create mode 100644 examples/docs/es/tooltip.md create mode 100644 examples/docs/es/transfer.md create mode 100644 examples/docs/es/transition.md create mode 100644 examples/docs/es/tree.md create mode 100644 examples/docs/es/typography.md create mode 100644 examples/docs/es/upload.md create mode 100644 examples/docs/zh-CN/container.md delete mode 100644 examples/docs/zh-CN/home.md delete mode 100644 examples/play/component.vue delete mode 100644 lerna.json create mode 100644 packages/aside/index.js create mode 100644 packages/aside/src/main.vue delete mode 100644 packages/carousel/_index.js delete mode 100644 packages/carousel/cooking.conf.js delete mode 100644 packages/carousel/package.json delete mode 100644 packages/cascader/cooking.conf.js delete mode 100644 packages/cascader/package.json delete mode 100644 packages/color-picker/cooking.conf.js delete mode 100644 packages/color-picker/package.json create mode 100644 packages/color-picker/src/components/predefine.vue create mode 100644 packages/container/index.js create mode 100644 packages/container/src/main.vue delete mode 100644 packages/date-picker/README.md delete mode 100644 packages/date-picker/_index.js delete mode 100644 packages/date-picker/cooking.conf.js delete mode 100644 packages/date-picker/package.json create mode 100644 packages/footer/index.js create mode 100644 packages/footer/src/main.vue create mode 100644 packages/header/index.js create mode 100644 packages/header/src/main.vue delete mode 100644 packages/loading/README.md delete mode 100644 packages/loading/cooking.conf.js delete mode 100644 packages/loading/package.json create mode 100644 packages/main/index.js create mode 100644 packages/main/src/main.vue delete mode 100644 packages/message/assets/error.svg delete mode 100644 packages/message/assets/info.svg delete mode 100644 packages/message/assets/success.svg delete mode 100644 packages/message/assets/warning.svg delete mode 100644 packages/pagination/README.md delete mode 100644 packages/pagination/cooking.conf.js delete mode 100644 packages/pagination/package.json create mode 100644 packages/select/src/navigation-mixin.js delete mode 100644 packages/table/README.md delete mode 100644 packages/table/_index.js delete mode 100644 packages/table/cooking.conf.js delete mode 100644 packages/table/package.json create mode 100644 packages/table/src/layout-observer.js rename packages/{theme-default => theme-chalk}/.gitignore (100%) create mode 100644 packages/theme-chalk/README.md rename packages/{theme-default => theme-chalk}/gulpfile.js (59%) create mode 100644 packages/theme-chalk/package.json create mode 100644 packages/theme-chalk/src/alert.scss create mode 100644 packages/theme-chalk/src/aside.scss create mode 100644 packages/theme-chalk/src/autocomplete.scss create mode 100644 packages/theme-chalk/src/badge.scss create mode 100644 packages/theme-chalk/src/base.scss rename packages/{theme-default/src/breadcrumb-item.css => theme-chalk/src/breadcrumb-item.scss} (100%) create mode 100644 packages/theme-chalk/src/breadcrumb.scss rename packages/{theme-default/src/button-group.css => theme-chalk/src/button-group.scss} (100%) create mode 100644 packages/theme-chalk/src/button.scss create mode 100644 packages/theme-chalk/src/card.scss create mode 100644 packages/theme-chalk/src/carousel-item.scss create mode 100644 packages/theme-chalk/src/carousel.scss create mode 100644 packages/theme-chalk/src/cascader.scss rename packages/{theme-default/src/checkbox-button.css => theme-chalk/src/checkbox-button.scss} (100%) rename packages/{theme-default/src/checkbox-group.css => theme-chalk/src/checkbox-group.scss} (100%) create mode 100644 packages/theme-chalk/src/checkbox.scss create mode 100644 packages/theme-chalk/src/col.scss rename packages/{theme-default/src/collapse-item.css => theme-chalk/src/collapse-item.scss} (100%) create mode 100644 packages/theme-chalk/src/collapse.scss create mode 100644 packages/theme-chalk/src/color-picker.scss rename packages/{theme-default/src/common/popup.css => theme-chalk/src/common/popup.scss} (77%) rename packages/{theme-default/src/common/transition.css => theme-chalk/src/common/transition.scss} (87%) create mode 100644 packages/theme-chalk/src/common/var.scss create mode 100644 packages/theme-chalk/src/container.scss create mode 100644 packages/theme-chalk/src/date-picker.scss create mode 100644 packages/theme-chalk/src/date-picker/date-picker.scss create mode 100644 packages/theme-chalk/src/date-picker/date-range-picker.scss create mode 100644 packages/theme-chalk/src/date-picker/date-table.scss create mode 100644 packages/theme-chalk/src/date-picker/month-table.scss create mode 100644 packages/theme-chalk/src/date-picker/picker-panel.scss create mode 100644 packages/theme-chalk/src/date-picker/picker.scss create mode 100644 packages/theme-chalk/src/date-picker/time-picker.scss create mode 100644 packages/theme-chalk/src/date-picker/time-range-picker.scss create mode 100644 packages/theme-chalk/src/date-picker/time-spinner.scss create mode 100644 packages/theme-chalk/src/date-picker/year-table.scss create mode 100644 packages/theme-chalk/src/dialog.scss create mode 100644 packages/theme-chalk/src/display.scss rename packages/{theme-default/src/dropdown-item.css => theme-chalk/src/dropdown-item.scss} (100%) rename packages/{theme-default/src/dropdown-menu.css => theme-chalk/src/dropdown-menu.scss} (100%) create mode 100644 packages/theme-chalk/src/dropdown.scss create mode 100644 packages/theme-chalk/src/fonts/element-icons.ttf create mode 100644 packages/theme-chalk/src/fonts/element-icons.woff create mode 100644 packages/theme-chalk/src/footer.scss rename packages/{theme-default/src/form-item.css => theme-chalk/src/form-item.scss} (100%) create mode 100644 packages/theme-chalk/src/form.scss create mode 100644 packages/theme-chalk/src/header.scss create mode 100644 packages/theme-chalk/src/icon.scss create mode 100644 packages/theme-chalk/src/index.scss create mode 100644 packages/theme-chalk/src/input-number.scss create mode 100644 packages/theme-chalk/src/input.scss create mode 100644 packages/theme-chalk/src/loading.scss create mode 100644 packages/theme-chalk/src/main.scss rename packages/{theme-default/src/menu-item-group.css => theme-chalk/src/menu-item-group.scss} (100%) rename packages/{theme-default/src/menu-item.css => theme-chalk/src/menu-item.scss} (100%) create mode 100644 packages/theme-chalk/src/menu.scss create mode 100644 packages/theme-chalk/src/message-box.scss create mode 100644 packages/theme-chalk/src/message.scss create mode 100644 packages/theme-chalk/src/mixins/_button.scss create mode 100644 packages/theme-chalk/src/mixins/config.scss create mode 100644 packages/theme-chalk/src/mixins/function.scss create mode 100644 packages/theme-chalk/src/mixins/mixins.scss create mode 100644 packages/theme-chalk/src/mixins/utils.scss create mode 100644 packages/theme-chalk/src/notification.scss create mode 100644 packages/theme-chalk/src/option-group.scss create mode 100644 packages/theme-chalk/src/option.scss create mode 100644 packages/theme-chalk/src/pagination.scss create mode 100644 packages/theme-chalk/src/popover.scss create mode 100644 packages/theme-chalk/src/popper.scss create mode 100644 packages/theme-chalk/src/progress.scss create mode 100644 packages/theme-chalk/src/radio-button.scss create mode 100644 packages/theme-chalk/src/radio-group.scss create mode 100644 packages/theme-chalk/src/radio.scss create mode 100644 packages/theme-chalk/src/rate.scss rename packages/{theme-default/src/reset.css => theme-chalk/src/reset.scss} (54%) create mode 100644 packages/theme-chalk/src/row.scss create mode 100644 packages/theme-chalk/src/scrollbar.scss create mode 100644 packages/theme-chalk/src/select-dropdown.scss create mode 100644 packages/theme-chalk/src/select.scss create mode 100644 packages/theme-chalk/src/slider.scss create mode 100644 packages/theme-chalk/src/spinner.scss create mode 100644 packages/theme-chalk/src/step.scss create mode 100644 packages/theme-chalk/src/steps.scss rename packages/{theme-default/src/submenu.css => theme-chalk/src/submenu.scss} (100%) create mode 100644 packages/theme-chalk/src/switch.scss rename packages/{theme-default/src/tab-pane.css => theme-chalk/src/tab-pane.scss} (100%) create mode 100644 packages/theme-chalk/src/table-column.scss create mode 100644 packages/theme-chalk/src/table.scss create mode 100644 packages/theme-chalk/src/tabs.scss create mode 100644 packages/theme-chalk/src/tag.scss create mode 100644 packages/theme-chalk/src/time-picker.scss create mode 100644 packages/theme-chalk/src/time-select.scss create mode 100644 packages/theme-chalk/src/tooltip.scss create mode 100644 packages/theme-chalk/src/transfer.scss create mode 100644 packages/theme-chalk/src/tree.scss create mode 100644 packages/theme-chalk/src/upload.scss delete mode 100644 packages/theme-default/README.md delete mode 100644 packages/theme-default/package.json delete mode 100644 packages/theme-default/src/alert.css delete mode 100644 packages/theme-default/src/autocomplete.css delete mode 100644 packages/theme-default/src/badge.css delete mode 100644 packages/theme-default/src/base.css delete mode 100644 packages/theme-default/src/breadcrumb.css delete mode 100644 packages/theme-default/src/button.css delete mode 100644 packages/theme-default/src/card.css delete mode 100644 packages/theme-default/src/carousel-item.css delete mode 100644 packages/theme-default/src/carousel.css delete mode 100644 packages/theme-default/src/cascader.css delete mode 100644 packages/theme-default/src/checkbox.css delete mode 100644 packages/theme-default/src/col.css delete mode 100644 packages/theme-default/src/collapse.css delete mode 100644 packages/theme-default/src/color-picker.css delete mode 100644 packages/theme-default/src/common/var.css delete mode 100644 packages/theme-default/src/core/dropdown.css delete mode 100644 packages/theme-default/src/core/input.css delete mode 100644 packages/theme-default/src/core/option.css delete mode 100644 packages/theme-default/src/core/tag.css delete mode 100644 packages/theme-default/src/date-picker.css delete mode 100644 packages/theme-default/src/date-picker/date-picker.css delete mode 100644 packages/theme-default/src/date-picker/date-range-picker.css delete mode 100644 packages/theme-default/src/date-picker/date-table.css delete mode 100644 packages/theme-default/src/date-picker/month-table.css delete mode 100644 packages/theme-default/src/date-picker/picker-panel.css delete mode 100644 packages/theme-default/src/date-picker/picker.css delete mode 100644 packages/theme-default/src/date-picker/time-picker.css delete mode 100644 packages/theme-default/src/date-picker/time-range-picker.css delete mode 100644 packages/theme-default/src/date-picker/time-spinner.css delete mode 100644 packages/theme-default/src/date-picker/year-table.css delete mode 100755 packages/theme-default/src/dialog.css delete mode 100644 packages/theme-default/src/dropdown.css delete mode 100644 packages/theme-default/src/fonts/element-icons.ttf delete mode 100644 packages/theme-default/src/fonts/element-icons.woff delete mode 100644 packages/theme-default/src/form.css delete mode 100644 packages/theme-default/src/icon.css delete mode 100644 packages/theme-default/src/index.css delete mode 100644 packages/theme-default/src/input-number.css delete mode 100644 packages/theme-default/src/input.css delete mode 100644 packages/theme-default/src/loading.css delete mode 100644 packages/theme-default/src/menu.css delete mode 100644 packages/theme-default/src/message-box.css delete mode 100644 packages/theme-default/src/message.css delete mode 100644 packages/theme-default/src/mixins/_button.css delete mode 100644 packages/theme-default/src/notification.css delete mode 100644 packages/theme-default/src/option-group.css delete mode 100644 packages/theme-default/src/option.css delete mode 100644 packages/theme-default/src/pagination.css delete mode 100644 packages/theme-default/src/popover.css delete mode 100644 packages/theme-default/src/progress.css delete mode 100644 packages/theme-default/src/radio-button.css delete mode 100644 packages/theme-default/src/radio-group.css delete mode 100644 packages/theme-default/src/radio.css delete mode 100644 packages/theme-default/src/rate.css delete mode 100644 packages/theme-default/src/row.css delete mode 100644 packages/theme-default/src/scrollbar.css delete mode 100644 packages/theme-default/src/select-dropdown.css delete mode 100644 packages/theme-default/src/select.css delete mode 100644 packages/theme-default/src/slider.css delete mode 100644 packages/theme-default/src/spinner.css delete mode 100644 packages/theme-default/src/step.css delete mode 100644 packages/theme-default/src/steps.css delete mode 100644 packages/theme-default/src/switch.css delete mode 100644 packages/theme-default/src/table-column.css delete mode 100644 packages/theme-default/src/table.css delete mode 100644 packages/theme-default/src/tabs.css delete mode 100644 packages/theme-default/src/tag.css delete mode 100644 packages/theme-default/src/time-picker.css delete mode 100644 packages/theme-default/src/time-select.css delete mode 100644 packages/theme-default/src/tooltip.css delete mode 100644 packages/theme-default/src/transfer.css delete mode 100644 packages/theme-default/src/tree.css delete mode 100644 packages/theme-default/src/upload.css delete mode 100644 packages/upload/README.md delete mode 100644 packages/upload/cooking.conf.js delete mode 100644 packages/upload/package.json delete mode 100644 packages/upload/src/iframe-upload.vue create mode 100644 postcss.config.js create mode 100644 src/directives/mousewheel.js create mode 100644 src/directives/repeat-click.js create mode 100644 src/locale/lang/ar.js rename src/locale/lang/{cz.js => cs-CZ.js} (78%) create mode 100644 src/locale/lang/he.js create mode 100644 src/locale/lang/hu.js create mode 100644 src/locale/lang/km.js create mode 100644 src/locale/lang/ku.js create mode 100644 src/locale/lang/kz.js create mode 100644 src/locale/lang/lt.js create mode 100644 src/locale/lang/mn.js create mode 100644 src/locale/lang/ro.js create mode 100644 src/locale/lang/sr.js create mode 100644 src/locale/lang/ug-CN.js create mode 100644 src/mixins/focus.js create mode 100644 src/utils/after-leave.js create mode 100644 src/utils/aria-dialog.js create mode 100644 src/utils/aria-utils.js create mode 100644 src/utils/menu/aria-menubar.js create mode 100644 src/utils/menu/aria-menuitem.js create mode 100644 src/utils/menu/aria-submenu.js delete mode 100644 src/utils/sync.js create mode 100644 test/unit/specs/container.spec.js delete mode 100644 test/unit/specs/sync.spec.js create mode 100644 types/alert.d.ts create mode 100644 types/aside.d.ts create mode 100644 types/autocomplete.d.ts create mode 100644 types/badge.d.ts create mode 100644 types/breadcrumb-item.d.ts create mode 100644 types/breadcrumb.d.ts create mode 100644 types/button-group.d.ts create mode 100644 types/button.d.ts create mode 100644 types/card.d.ts create mode 100644 types/carousel-item.d.ts create mode 100644 types/carousel.d.ts create mode 100644 types/cascader.d.ts create mode 100644 types/checkbox-button.d.ts create mode 100644 types/checkbox-group.d.ts create mode 100644 types/checkbox.d.ts create mode 100644 types/col.d.ts create mode 100644 types/collapse-item.d.ts create mode 100644 types/collapse.d.ts create mode 100644 types/color-picker.d.ts create mode 100644 types/component.d.ts create mode 100644 types/container.d.ts create mode 100644 types/date-picker.d.ts create mode 100644 types/dialog.d.ts create mode 100644 types/dropdown-item.d.ts create mode 100644 types/dropdown-menu.d.ts create mode 100644 types/dropdown.d.ts create mode 100644 types/element-ui.d.ts create mode 100644 types/footer.d.ts create mode 100644 types/form-item.d.ts create mode 100644 types/form.d.ts create mode 100644 types/header.d.ts create mode 100644 types/index.d.ts create mode 100644 types/input-number.d.ts create mode 100644 types/input.d.ts create mode 100644 types/loading.d.ts create mode 100644 types/main.d.ts create mode 100644 types/menu-item-group.d.ts create mode 100644 types/menu-item.d.ts create mode 100644 types/menu.d.ts create mode 100644 types/message-box.d.ts create mode 100644 types/message.d.ts create mode 100644 types/notification.d.ts create mode 100644 types/option-group.d.ts create mode 100644 types/option.d.ts create mode 100644 types/pagination.d.ts create mode 100644 types/popover.d.ts create mode 100644 types/progress.d.ts create mode 100644 types/radio-button.d.ts create mode 100644 types/radio-group.d.ts create mode 100644 types/radio.d.ts create mode 100644 types/rate.d.ts create mode 100644 types/row.d.ts create mode 100644 types/select.d.ts create mode 100644 types/slider.d.ts create mode 100644 types/step.d.ts create mode 100644 types/steps.d.ts create mode 100644 types/submenu.d.ts create mode 100644 types/switch.d.ts create mode 100644 types/tab-pane.d.ts create mode 100644 types/table-column.d.ts create mode 100644 types/table.d.ts create mode 100644 types/tabs.d.ts create mode 100644 types/tag.d.ts create mode 100644 types/time-picker.d.ts create mode 100644 types/time-select.d.ts create mode 100644 types/tooltip.d.ts create mode 100644 types/transfer.d.ts create mode 100644 types/tree.d.ts create mode 100644 types/upload.d.ts diff --git a/.eslintignore b/.eslintignore index f3b51f5c5f..aa95173977 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,11 @@ src/utils/popper.js src/utils/date.js +examples/play *.sh node_modules lib coverage +*.md +*.scss +*.woff +*.ttf diff --git a/.eslintrc b/.eslintrc index ba8a1b1887..2a84035cf0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,8 +6,11 @@ "expect": true, "sinon": true }, - "plugins": ['vue'], - "extends": 'elemefe', + "plugins": ["html", "json"], + "extends": "elemefe", + "rules": { + "no-restricted-globals": ["error", "event", "fdescribe"] + }, "parserOptions": { "ecmaFeatures": { "experimentalObjectRestSpread": true, diff --git a/.github/CONTRIBUTING.en-US.md b/.github/CONTRIBUTING.en-US.md index e527744db9..0a8c357e64 100644 --- a/.github/CONTRIBUTING.en-US.md +++ b/.github/CONTRIBUTING.en-US.md @@ -8,7 +8,7 @@ We are excited that you are interested in contributing to Element. Before submit ## Issue Guidelines -- Issues are exclusively for bug reports, feature requests and design-related topics. Other questions may be closed directly. If any questions come up when you are using Element, please hit [Gitter](https://gitter.im/ElemeFE/element) for help. +- Issues are exclusively for bug reports, feature requests and design-related topics. Other questions may be closed directly. If any questions come up when you are using Element, please hit [Gitter](https://gitter.im/element-en/Lobby) for help. - Before submitting an issue, please check if similar problems have already been issued. @@ -35,7 +35,7 @@ We are excited that you are interested in contributing to Element. Before submit - Merging a PR takes two maintainers: one approves the changes after reviewing, and then the other reviews and merges. ## Prerequisites -`Node.js 4+` and `NPM 3+` are required. +`Node.js 4+`, `yarn` and `npm 3+` are required. Note: we use yarn to lock dependency versions, so you should install dependencies using `yarn` instead of `npm install`. ```shell git clone git@github.com:ElemeFE/element.git npm run dev @@ -43,16 +43,6 @@ npm run dev # open http://localhost:8085 ``` -For Chinese users, [yarn](https://github.com/yarnpkg/yarn) with taobao registry is recommended if the dependency installation is slow. -```shell -npm i yarn -g -yarn config set registry https://registry.npm.taobao.org -yarn -npm run dev - -# open http://localhost:8085 -``` - To build: ```shell @@ -60,7 +50,7 @@ npm run dist ``` ## Component Developing Guidelines -- Run `make new ` to create project directory for a new component. Test codes, entry file, cooking config, documentation and `package.json` are included. +- Run `make new ` to create project directory for a new component. Test codes, entry file and documentation are included. - Refer to `Button` for nested components. - Refer to `Select` for components that depend on other components. diff --git a/.github/CONTRIBUTING.es.md b/.github/CONTRIBUTING.es.md new file mode 100644 index 0000000000..177e0ca091 --- /dev/null +++ b/.github/CONTRIBUTING.es.md @@ -0,0 +1,65 @@ +# Guía para Contribuidores a `Element UI` + +¡Hola! Gracias por elegir [Element UI](http://element.eleme.io/#/en-US). + +`Element UI` es un archivo de componentes para desarrolladores y para gerentes de productos ‘web’ basado en [Vue 2.0](https://vuejs.org/) + +Estamos orgullosos de que usted esta interesado en contribuir al proyecto `Element`. Antes de someter sus contribuciones, por favor tome un momentito para leer estas simples guías para contribuidores. + + +## Guía Para Reportar Problemas (“Issues”) + +- [“Issues”]( https://elementui.github.io/issue-generator) son exclusivamente para informar de errores, sugerencias o solicitaciones para funcionalidad adicional referente a diseño. Preguntas de otro tipo corren el riesgo de ser cerradas inmediatamente. Sí tiene preguntas sobre el uso de `Element`, vea [Gitter](https://gitter.im/element-en/Lobby) para más ayuda. + +- Antes de someter un informe sobre algún problema, sírvase de revisar sí ya hubo un informe. + +- Por favor especifique que versión de `Element` y `Vue` que esta utilizando, y que versión de sistema operativo y que versión de navegador web que está utilizando. [JSFiddle](https://jsfiddle.net/) esta recomendado para crear un entorno para reproducir el problema claramente. + + +## Guías para un “Pull Request (PR)” + +- Crea una bifurcación (“fork”) del repositorio a su propia cuenta en github.com. Por favor no crea ramas nuevas aquí. + +- Cuando cometa su cambio, formatea en esta forma: `[Nombre de componente]: Datos sobre el “commit”.` (por ejemplo. `Button: Reparación de xxx error`) + +- **DE NINGUNA MANERA** incluya archivos dentro del directorio `lib`. + +- Asegúrese de que el comando `npm run dist` produzca los archivos correctos. + +- Para asegurar compatibilidad y reducir tamaño de los archivos, nuestra configuración de `babel` solo importa `preset-2015`, así que IPAs como Array.prototype.find` y `Object.assign` en `ES2015` no son recomendados. Puede importar “polyfills” terceros, sí es necesario. + +- “Rebase” antes de crear un “pull request (PR)” para mantener la historia de “commits” limpia. + +- Asegúrese que sus PRs se refrieran a la rama `dev` y no a la rama `master`. + +- Si su PR arregla un error técnico, por favor, haga referencia al error especifico. + +- Fusión de un PR requiere dos mantenedores: el primero aprueba los cambios después de revisar, y entonces el segundo mantenedor revisa los cambios y hace la fusión. + + +## Requerimientos Técnicos +`Node.js 4+`, `yarn` y `npm 3+` son requisitos. Nota: Usamos yarn para bloquear versiones de dependencias, por lo que debería instalar dependencias usando `yarn` en lugar de `npm install`. +. +```shell +git clone git@github.com:ElemeFE/element.git +npm run dev + +# abra http://localhost:8085 +``` + +Para armar: + +``` +shell +npm run dist +``` + +## Guía Para Desarrollo de Componentes +- Corra el comando `make new ` para crear el directorio de su proyecto para un componente nuevo. Verifique su código fuente test, archivo de entrada y documentación están incluidos. +- Refiérase al `Button` para componentes anidados. +- Refiérase al `Select` para componentes que dependen de otros componentes. + + +## Estilo de Desarrollo +Por favor acate a este estilo [ESLint](https://github.com/ElemeFE/eslint-config-elemefe) configuración de [ElemeFE](https://github.com/elemefe). + diff --git a/.github/CONTRIBUTING.zh-CN.md b/.github/CONTRIBUTING.zh-CN.md index 79dbb3dd7c..ce07fd8ea0 100644 --- a/.github/CONTRIBUTING.zh-CN.md +++ b/.github/CONTRIBUTING.zh-CN.md @@ -33,7 +33,7 @@ Element UI 的成长离不开大家的支持,如果你愿意为 Element UI 贡 - 合并代码需要两名维护人员参与:一人进行 review 后 approve,另一人再次 review,通过后即可合并。 ## 开发环境搭建 -首先你需要 Node.js 4+ 和 NPM 3+ +首先你需要 Node.js 4+,yarn 和 npm 3+。注意:我们使用 yarn 进行依赖版本的锁定,所以请不要使用 `npm install` 安装依赖。 ```shell git clone git@github.com:ElemeFE/element.git npm run dev @@ -41,24 +41,14 @@ npm run dev # open http://localhost:8085 ``` -如果国内用户觉得安装慢可以使用 [yarn](https://github.com/yarnpkg/yarn) 搭配 taobao registry -```shell -npm i yarn -g -yarn config set registry https://registry.npm.taobao.org -yarn -npm run dev - -# open http://localhost:8085 -``` - -To build: +打包代码: ```shell npm run dist ``` ## 组件开发规范 -- 通过 `make new` 创建组件目录结构,包含测试代码、入口文件、cooking 配置、package.json、文档 +- 通过 `make new` 创建组件目录结构,包含测试代码、入口文件、文档 - 如果包含父子组件,需要更改目录结构,参考 `Button` - 组件内如果依赖了其他组件,需要在当前组件内引入,参考 `Select` diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index fe1e339e6c..cc7784513c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,4 +1,12 @@ - landingpage_illustration - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/assets/images/button-d-cn.png b/examples/assets/images/button-d-cn.png new file mode 100644 index 0000000000000000000000000000000000000000..a3afa111a85744f7548341ee321d5ff0fca83e69 GIT binary patch literal 7812 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/button-d-en.png b/examples/assets/images/button-d-en.png new file mode 100644 index 0000000000000000000000000000000000000000..5210474187f884d6024804f726590c553f40b936 GIT binary patch literal 8097 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 S)?EB$nk&ky$(70c;rn0O8PY=l literal 0 HcmV?d00001 diff --git a/examples/assets/images/button-l-cn.png b/examples/assets/images/button-l-cn.png new file mode 100644 index 0000000000000000000000000000000000000000..e334448d8664074652d76819fe04578c9a968195 GIT binary patch literal 10965 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/button-l-en.png b/examples/assets/images/button-l-en.png new file mode 100644 index 0000000000000000000000000000000000000000..d368df9ddf533f82f67d959dd8b6bd57c1c9d6de GIT binary patch literal 11359 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 TXHbs#WBCQktIAc$Ktlc(RgX)3 literal 0 HcmV?d00001 diff --git a/examples/assets/images/cloud-1.png b/examples/assets/images/cloud-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f221b5d62da412b3af3c82a2882dd827a5ad995 GIT binary patch literal 2979 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 Z@PA<8nWIUZ1*iZ3002ovPDHLkV1m6(*Q)>k literal 0 HcmV?d00001 diff --git a/examples/assets/images/cloud-2.png b/examples/assets/images/cloud-2.png new file mode 100644 index 0000000000000000000000000000000000000000..651f30ef73776021c8e0297686e72e61ccb4ea99 GIT binary patch literal 2007 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/compo-1.png b/examples/assets/images/compo-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6264c030f91c8d504e92c380b256c21cb38d6af2 GIT binary patch literal 2176 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/compo-3.png b/examples/assets/images/compo-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c018f4f87f9de3b75a91a54b109c90fc046283a0 GIT binary patch literal 2275 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 FO#mnOQJnw) literal 0 HcmV?d00001 diff --git a/examples/assets/images/duohui.svg b/examples/assets/images/duohui.svg new file mode 100644 index 0000000000..f395bfa965 --- /dev/null +++ b/examples/assets/images/duohui.svg @@ -0,0 +1,24 @@ + +duohui-element +Created using Figma + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/assets/images/duotai.svg b/examples/assets/images/duotai.svg new file mode 100644 index 0000000000..e8735a0f91 --- /dev/null +++ b/examples/assets/images/duotai.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/examples/assets/images/element-logo-small.svg b/examples/assets/images/element-logo-small.svg index 6319a87e9b..9e185f5747 100644 --- a/examples/assets/images/element-logo-small.svg +++ b/examples/assets/images/element-logo-small.svg @@ -5,7 +5,7 @@ Created with Sketch. - + diff --git a/examples/assets/images/element-logo.svg b/examples/assets/images/element-logo.svg index 825acba02b..8cd2c6d38b 100644 --- a/examples/assets/images/element-logo.svg +++ b/examples/assets/images/element-logo.svg @@ -5,7 +5,7 @@ Created with Sketch. - + diff --git a/examples/assets/images/figure-1.png b/examples/assets/images/figure-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8041570da43b3948efcdebcb091199f622b05c GIT binary patch literal 6537 zcmV;48FuE0P) zd3>BzxyQfnY}sa#Su)wvHf@16wWWo!gCgL9AXUHxiwjx-6_G-kI;`GoLmy@4V-k z%rDP5=Q+=LjwH)6*~-=re^PG~X5s{{0j>ZVfjU3}T7l<)UjR=68U4~9y8j2tSg8Rv zy$vu4Zr}^RCjjppudkbUd>l9c+zR}UX4dI|MQ;PL92@XS;3)7V<`&gV-T?d_co1-@ zXPUm`g_SuM0WSdm0hDL({_BCi0IQTV$|&T8l|D7V1HeJOvZ~FGhH$)xg<^v5{K%fk%MN zKvczcG$U7pwHA0YuxaA|D-fQ-NS}WLV%C^FF@*&%(l1tNoQN6Q4Zs?mZAq0+kr$Ss z*$R9csMgz%G-*Wq5ggXrkfmbA!TWcBpOSr|n&cwA4NwBJ3F~&?^LiVxMAqwVfD)KV zSnGkW=xu}o)aq@35|~L?UjwXq8=(Mxy$w(Tvk0pKxKeK;6hf)MtFD+uSZ~D~-U=Y0 zw*g9E7GZ7H+W-X_(AxkdFpIEO>TQ66^y+PZ5|~9;KD`Z4kWRe~Py(|E%S;J#$MrTq z3CtoaGjT+31C+olYlShr4JaV{LLZu9qLZ?R!4wAHEh(Hd{?*xtX7HlzGDqH zzJKF1QBC43c5w4`8@cezx>RrZtfB_$h*>;VTTU8j)%hzzU;7x2u3v%RG3>3UQV=uq@zR>~<>-n*~XdC@!+$EOt=pbl~?EVYMnZ3_WjC4NvcF zrKxq6xd4wT){p@(i?F5*Uao!nX}slvXbG`g~t?f}0v&;&U z%ODqRuH&s2t}vXaCRw}M%j)HxnNNp-Cv-4JHOwNcW&o>2N?diR@%Mec?ZSqcPdx^V z>R^g$m_=Ae08VZ2wwJjI^tNSDHmoVfH+>TDOTBDS3$qC8IMCNnSJt7oA*moq66bA7 zrnZML*}xslBP@X5mV1hN^fn?@&f8cs83+3%Fs83H%9FLT!r|84-2L^pC4av0_Q$_n z;IM7i(WJES`-<_F6}I<<#_pN=IVQRB_Q!RwN;$GtSW~b9pS}C*Z@USYH7YhT-~9X= zt0YOfANUdQeRNowQj2UCmIOQuT&uSsnIK7$6*v|67vMbLy<}LQ)M!ZATHJQHbvM9A zfP3||L{UBh+z(JvzeQh5mPob_-an?d0SfbRy$w)`Y!}uhy$w(p(|n$67gipFlI_CU zueSjTvrlgWlp@=OwM%aU6vi~4C)6Os6td=>bz#-=R9mw<21d@|dk>~mpej|HN;Y0=w=363Jx1aktj z3u^?i?4!3^mVujrah>hZ46_Rh#3qIB=xoEcfj{bOgQnzyut3y**XxV@E$~I1+SZL+ z5mp4a8klz*vP$d+uERtLe5sNv!U9n=_7dPljoRA-T#6Xy+j$z3)VS(^mS0GNZP`ZnX0e1jb0YeJkJFCb=VSy0T9f*@t_b7DF=MeSgzlKQ; z0ayxVSS!q!9ecMNvs)6kTvmVJn$z6f?<;eRtVs7BEn#2c*{;>YNBgU)WVi?D0s=r2 zVuASpaOlpncIzEW(-gBW=_J{)cZ&r$12LdJA8}gPwC!T6N;}xP;t3>c0azU%&Ee4H z1jHi{ALGbC1wT7+c`D`w5!Gbwz4NTyPtJVNj7vJE_gFjjZm|NN06qt-TIkxQ!5ZRY zLs+GW`c;w@NwOeI5|S(<%L$OD49nsRmx-K$7jf$A)*XAdJap$-yRT3CgJc=H3v2tY zmATKIXU+T4Ex`9uxrYpl#0zlQCL#oK9C<=WbNO|*J)=T`TX*c;a_gOE?M{|nQtEdA zu=8r=?zI$j7nV}&*gJ1`lGbr^V~IjsDTbcB_CX{vT8NYvu-6pi!mO|@or~jg>IK`Z zQXH2(?L^gX#Ngi4n8sr*z!!nFz&Z0>V7Ed=DR@i3SCC$y{4J}3yguqAI1GJZ7+Sn; z%!7zOXj6wI%r2~AL@;z#b$^Qlr`N;g<+6Q1>i#nf!&RXDkV?FtX-iK_y57%vmQ~W|y0OMUxr`=F| zYV$)zy}dt;9JadaJSzDYb&QeCr5{f z4>hITU}Aj!<-qeBL|Y4BL1bOL0Q@IVowfl6#Z1Clj!5czfJMHbx>-ewL9#os6nN8a z)LwSlg0I)7c1sD7UULZeXxc^?5VHvDYQ%ADm!xuWY0+HIN)*;zj%2Z?+^Ds<8oO`f zg4cM8Q@$O58~6#rdzGa1PJ@x{!jgb*Aa)U#ruwFWd8RCuLLWs9*J5#$EqV`2p`XHK z@0@$tCxx~a;X2?cvbbx^W?@-@`w-!Tv`!0H=*zYg`YBqq6-UK+NVeJTMzT1tm!C;d z!+Vgdi=V4wv!-L&G|mM645WM}osr1aaDx?i2zXy6Z;mW-9;;-r;qae@qkJ>*(QXoB zJ%EhGQHG_s8p$&IY{K~%U+}Q6ML8At6JpUkYbruRb_z>Ej6*UK6+krA(4-_`Ev~{^ zT$O24j4l08;nl#Si1A}u=K$+THg<)#0Uut<4PqK@ZHOw<)&;;nDRL)`$TnfU9g(5A zB+@(oduc3u?qyp19U_lDE665cRUzs}E!k!*g*B*LSrQ3Rm@T~khE8OYuzrYG3RyCP z8XhnbQg-v#a*SD;X%^Wctg8XV5}1ZHte~Kv$C~6;pmNcxbS4{wRfxj17s48OtkI}q zgZHTvBQhimO*RPYGbnsUPBac-4ZK#5dc`VlMpP^`EJhcW3*q_|C#b>3cNK-@MC5cC z7NZO6CZJr68~1Aok+5-_r`-VH2U z^r{RA4y$$Nlk})xz2O?wTgVV23rkg3ud+8GAw#eF!g`nLEo6vhi_ixS9GLU@51l&u zxd)ECp&pf&FZxs#R$vHX>hHr@57b>-w62Y}JjKir(1`4qzoSvL#oP z4t!uBQlP3gl@bshma(eTN>@L43e!px6UdN|Q&*(NK70f4yNMr15XDGzFQThiQIHuP zs}|USNPTf?Vn7xk%Q9nQV=VDI89}7k+>Y3#1ZeNE^cZ7pMwDy(7)a@l}$pi5yRt%arNVsf^VNF<0vRL?qGt#$)*p|!A5 z-wkSVCI{;pP@qL4Gcj`H-Lxn;12imoVd;PhGeE0w}CVA1!)VliT|rPnaZR`SAHfTE%zDk>^)xlWcouCK4h?RFCg z1Q;Eid;ff{%>d^jFRVGR+wD|TRN!{Ik))I9#j-3TNfIuX3#ZdbC=?Cx* zF7m>fg2iINK@!)c~2m}IzLLuVuxarpb zQzb8~3ChaKsHmu*px|UO!06~G-QC@U!zZ`&w6wI~bULZ5tfZ)@2%F7DO-&6xpO5zT z_IbO}H843Xtg5Oid_G@t9F<5U2nK`n^z&}p%7lL7q8cg-EPO@ z@!)p5>Fn&Jtu3t+?My{Z$FaO#FOno7%QB%*h^D3{y1Kg3iakXl5!%|?rgfK+BvDb3 z+xtaw+G9<2bK!6}Bkz((ByhQ0)YaADa5!eYmdoU{uqMew1Vu$f_NYA7r$oc3BSk{4DQl$DiHSy?%)+Y5)o zw70h>mw7CfoF29&$qOq*tX3;EH8ohR;?$*BEJjC12i@J>$+4Ql;lSz4R}Fx?uu?{n zq@<{NdV1*S=tyqgk|c@B%1WxLs%8!1bCtZXQbd+z1_uY}=;&Z@a4`A2%jII(vSpN% zWc9g~ijx;s3dpj|@bEB)4T*{dmV2#CMd9OuYSO5zy8c%L6oeW7#20v?S zYiBJ~x3sk2_xp1`I0|`TEy~o?VwcNBeSQ730eU17p}oDG-rinhSaM%F4>7-8)ywX<_yE_a_&k-EKFfrKR-t_7VsLW@Uj&lEnD< zI9**`$)rCJo~*L6lIrT}X=AQnFsRw*Fd{iEtj^9(LZMJHuiav?P*G7qX=y2)ot^ab zoIKw<7K?H4;K6B`4?drdnwlDlii(oY4Gj&^-rhbfB$12cw6H*AiJmxd0=L^uMMVV; zhl9exLK+$xC@(LkwY8OSI6Q5kx}>Cp`uh55$$^nbgpQ7mY2GZC$$4Q-5(?$6Q)7jZcAP~su?Orp<3u}T%Btk3}qqDP<{{DVy zYipAN^7(vtJfisU)J5iCFqqGCpNG7#n7z4lY;26<$B)z9-A!Fx9i^qE(*!j%G(=ll z8$(0tAC{A?Xnit82!ovrI=N+QA^d(nRaI30baizlgQ3~NgOBdhJob^(9xK(&r9C}8 z(`JZy7RUDK+kT{3V>fNRK(n?MBNqzHPN5R0Mx0U+0fvDNK(#4s&U!4f)~p(j#OVo! z>FpmO7#g8hoKf60&*g)_tH57?KLSr64tZKKS_;cE9*Ic>4*j)kw(>EaKd4$$5; zNMC3qoj;gT#6eEy0G|a$fyaUS5J%NzTrgF-3ip69dH3~F3<>^0(hrhP+a7o z)LDqvU5wXVOqIVBue(^2^|e?mW{RR6;o)(bTKj2g4Kfr~ZGRF<)<#>4VjFD1pwC(ETW12i(xSc2DEgEX}S>Cxg)Yrzn3*Tf@~ z>YJ7#tYY9Jz|DvwWEG{d+{Mae<*Z&&PI1xFMV3e;vUac@8XV)u>pdKA2@=!bJm7f< z0JkB!$wiIGL|9JX?}1MP<>|gTT_j1Orm~F2Qz}_r=f#@A_9}%=F4YuShPJK&UOg6| zTkVt4)8k3t2B3AJi_#fM+kj61cc6iwCXr>C_O1}^T_Fk!?5tT`$+}ajaF(Qg_E0u? zs(3=?_0}KyC_v*T>$(5*syfFGG}Z&%Kn3GymY9YhI$_x z8*B0V7T(8~Eme!7u>?n6@8#8F0Y=9Re|m)nco=vK@JU2$Y#NIRs{r^a@C6K1nMRgn znp%2kYU!o6%FXGGwbWO;XI&SKMh%~F5RD~xt*M7Y#{!Ix8{5`7_!wf=zl9kC`-Ozn z0Q?d-Q$4$u&SW=P?kVBS4a-F3%&W%&L?Y%{N}7Z9Kojut)Zg|w zz|Sz*xy`K|A=7&y z(m|Gm*ErVPhs|ci>n>7tT{0R=u>Vj8&%SVi{(+oJTXq7?lOAg)qK`B+>35=%{H1=9zG*_3R6;Tn5~Wf#OtZGaiX0$6w{1VjK#L zzXpcJcxG=ihmHo!I51C_LL2ZQax~$uwIf7F_aN)nRIzS#1r|&C-D5PC;N`XIM{<5!y&Om>l zzrz%G#0LBqBDdL8fl(z$gibIv^m8OvHS$0!$T>gTONG~f$1RAY`G<8j#<;{I$e|N? zQKimyAU-*8zYVd+EKi=La3AnnI5{J12X4~Knmnf9ufV4!f0!C-co_Jy=H}!v1N(q0 zn6is{W(@1=z*jUhC{G$#EKp!KT+!U$0~a%6Q|nwyIXi$h#7xncX_z^Lt5{+~gPnED zZLFxYV6(zQe;nhbCf(DSW57QHcLKA5dh@Lj{sh<${1jNDnrV6F#A1Q9^)}8~W9QU5 zD>IicOG|WLEO`a7kz((B7c8{+`~o7E`K!R^7P&T$0@U~{oOz0!O{;7;i{|h0f#Khyxh)t|-C!ZaW6Jl+s4!9n%X)!00y}d3A4x4&0 zrj|gQ$6rv~Tg4H(n71Knl)e*qlqHG^l$+^|A^PHn5IcRY0j@)Azt(QQm5x+-)f*9X zhZ5ZThcOf?LotFF&ipqbvt_>eq)S4L5JC|6@x;T6*wcUI#J_$O+A{>zDa`0H;g#k% zzj$hF!3n`4L=mB*rxEo4tY01X&4q)}j(c+&<4Z$8~l1{Ev;Xzq^lo9D*q=$ltaV~7~i>%ifO$E(1ho!gv! z+jkkNjARm{Ez<-L^~HZT<+&2XdgU5mjk8EP!)BG%jYs9`(Q#Ri;w5n)vT3!w;N9mt zEQOBDXM+2i;v*0LdGvT9K|A8J2M`&(?TA=X^UiI~P9==i8lwqoE`||q{sn;WsLZ6N z|M)wKPqj$$x1urL6&{tPff1STsLbF`2b?^ z^)L{-?&5+nS>}0QZHAxgo{cN5H*Q?%H05?5H4YHaoSoa8*8mS7N`%i#G!C(t%)p3z z<98n!+0Dtx!(=&_7^1Fus_ps_0mWHG#uni_i1^=<$3jN!3Jp1SNtf-r!jB-n+y!Sp zb}JMWNWZG`SSFV$nkF9o6OXiZpl;t4?%BR8{7%FK#k`v6-_OyRL6 z*}2X6CPdJ0t}-$agr~S;`>wER-Oq#-L4@Zk1c;bx6&(4rZ@xWf8>cGe9OE#mq{00000NkvXXu0mjf=}mn5 literal 0 HcmV?d00001 diff --git a/examples/assets/images/figure-2.png b/examples/assets/images/figure-2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7e4821357094aa523e395cffddf68a349ee25c GIT binary patch literal 6994 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/plant-2.png b/examples/assets/images/plant-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f58ed6992be720aec3f4fc84ddce29375a46677 GIT binary patch literal 4855 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 literal 0 HcmV?d00001 diff --git a/examples/assets/images/resource-placeholder.svg b/examples/assets/images/resource-placeholder.svg new file mode 100755 index 0000000000..dd335ee231 --- /dev/null +++ b/examples/assets/images/resource-placeholder.svg @@ -0,0 +1,23 @@ + + + + 整理中-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/assets/images/search-by-algolia.svg b/examples/assets/images/search-by-algolia.svg new file mode 100644 index 0000000000..989ed6ab8f --- /dev/null +++ b/examples/assets/images/search-by-algolia.svg @@ -0,0 +1 @@ +search-by-algolia \ No newline at end of file diff --git a/examples/assets/images/stars.png b/examples/assets/images/stars.png deleted file mode 100644 index 19a245bb944527b1329f127d2accce24038a6516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4341 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Asset 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/assets/images/web.png b/examples/assets/images/web.png new file mode 100644 index 0000000000000000000000000000000000000000..8f85521d5922a9986cd57054d6ada3dea9cdc097 GIT binary patch literal 10035 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 literal 0 HcmV?d00001 diff --git a/examples/bus.js b/examples/bus.js new file mode 100644 index 0000000000..c17d88ac58 --- /dev/null +++ b/examples/bus.js @@ -0,0 +1,2 @@ +import Vue from 'vue'; +export default new Vue(); diff --git a/examples/components/demo-block.vue b/examples/components/demo-block.vue index 35bd7992b3..ae29f29c5b 100644 --- a/examples/components/demo-block.vue +++ b/examples/components/demo-block.vue @@ -5,30 +5,43 @@ @mouseenter="hovering = true" @mouseleave="hovering = false"> -
-
+
+
- - {{ langConfig['button-text'] }} -
-
+
{{ controlText }} + + + + {{ langConfig['button-text'] }} + + +
@@ -159,7 +184,9 @@ data() { return { hovering: false, - isExpanded: false + isExpanded: false, + fixedControl: false, + scrollParent: null }; }, @@ -177,7 +204,7 @@ '\n'; let jsTpl = (script || '').replace(/export default/, 'var Main =').trim(); let htmlTpl = `${resourcesTpl}\n
\n${html.trim()}\n
`; - let cssTpl = `@import url("//unpkg.com/element-ui@${ version }/lib/theme-default/index.css");\n${(style || '').trim()}\n`; + let cssTpl = `@import url("//unpkg.com/element-ui@${ version }/lib/theme-chalk/index.css");\n${(style || '').trim()}\n`; jsTpl = jsTpl ? jsTpl + '\nvar Ctor = Vue.extend(Main)\nnew Ctor().$mount(\'#app\')' : 'new Vue().$mount(\'#app\')'; @@ -206,6 +233,17 @@ document.body.appendChild(form); form.submit(); + }, + + scrollHandler() { + const { top, bottom, left } = this.$refs.meta.getBoundingClientRect(); + this.fixedControl = bottom > document.documentElement.clientHeight && + top + 44 <= document.documentElement.clientHeight; + this.$refs.control.style.left = this.fixedControl ? `${ left }px` : '0'; + }, + + removeScrollHandler() { + this.scrollParent && this.scrollParent.removeEventListener('scroll', this.scrollHandler); } }, @@ -236,7 +274,8 @@ codeAreaHeight() { if (this.$el.getElementsByClassName('description').length > 0) { - return Math.max(this.$el.getElementsByClassName('description')[0].clientHeight, this.$el.getElementsByClassName('highlight')[0].clientHeight); + return this.$el.getElementsByClassName('description')[0].clientHeight + + this.$el.getElementsByClassName('highlight')[0].clientHeight + 20; } return this.$el.getElementsByClassName('highlight')[0].clientHeight; } @@ -245,6 +284,17 @@ watch: { isExpanded(val) { this.codeArea.style.height = val ? `${ this.codeAreaHeight + 1 }px` : '0'; + if (!val) { + this.fixedControl = false; + this.$refs.control.style.left = '0'; + this.removeScrollHandler(); + return; + } + setTimeout(() => { + this.scrollParent = document.querySelector('.page-component__scroll > .el-scrollbar__wrap'); + this.scrollParent && this.scrollParent.addEventListener('scroll', this.scrollHandler); + this.scrollHandler(); + }, 200); } }, @@ -256,6 +306,10 @@ highlight.borderRight = 'none'; } }); + }, + + beforeDestroy() { + this.removeScrollHandler(); } }; diff --git a/examples/components/footer-nav.vue b/examples/components/footer-nav.vue index f43214a68c..45e58123ea 100644 --- a/examples/components/footer-nav.vue +++ b/examples/components/footer-nav.vue @@ -19,8 +19,8 @@ diff --git a/examples/components/search.vue b/examples/components/search.vue new file mode 100644 index 0000000000..0060b0cc98 --- /dev/null +++ b/examples/components/search.vue @@ -0,0 +1,216 @@ + + + + + \ No newline at end of file diff --git a/examples/components/side-nav.vue b/examples/components/side-nav.vue index 11a9f4b519..f2d30a09b0 100644 --- a/examples/components/side-nav.vue +++ b/examples/components/side-nav.vue @@ -3,56 +3,33 @@ width: 100%; box-sizing: border-box; padding-right: 30px; + transition: opacity .3s; + &.is-fade { + transition: opacity 3s; + } li { list-style: none; } + ul { padding: 0; margin: 0; overflow: hidden; } + + > ul > .nav-item > a { + margin-top: 15px; + } - .nav-dropdown { - margin-bottom: 6px; - width: 100%; - span { - display: block; - width: 100%; - font-size: 16px; - color: #5e6d82; - line-height: 40px; - transition: .2s; - padding-bottom: 6px; - border-bottom: 1px solid #eaeefb; - &:hover { - cursor: pointer; - } - } - i { - transition: .2s; - font-size: 12px; - color: #d3dce6; - } - @when active { - span, i { - color: #20a0ff; - } - i { - transform: rotateZ(180deg) translateY(2px); - } - } - &:hover { - span, i { - color: #20a0ff; - } - } + > ul > .nav-item:nth-child(-n + 4) > a { + margin-top: 0; } .nav-item { a { font-size: 16px; - color: #5e6d82; + color: #333; line-height: 40px; height: 40px; margin: 0; @@ -60,36 +37,74 @@ text-decoration: none; display: block; position: relative; - transition: all .3s; + transition: .15s ease-out; + font-weight: bold; &.active { - color: #20a0ff; + color: #409EFF; } } + .nav-item { a { display: block; height: 40px; + color: #444; line-height: 40px; - font-size: 13px; - padding-left: 24px; + font-size: 14px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; + font-weight: normal; + + &:hover, + &.active { + color: #409EFF; + } + } + } + + &.sponsors { + & > .sub-nav { + margin-top: -10px; + } + + & > a { + color: #777; + font-weight: 300; + font-size: 14px; + } + + .nav-item { + display: inline-block; + + a { + height: auto; + display: inline-block; + vertical-align: middle; + margin: 8px 12px 12px 0; + img { + width: 42px; + } + } - &:hover { - color: #20a0ff; + &:first-child a img { + width: 36px; } } } } + .nav-group__title { font-size: 12px; - color: #99a9bf; - padding-left: 8px; + color: #999; line-height: 26px; - margin-top: 10px; + margin-top: 15px; + } + + #code-sponsor-widget { + margin: 0 0 0 -20px; } } .nav-dropdown-list { @@ -101,31 +116,36 @@ }