Showing preview only (3,060K chars total). Download the full file or copy to clipboard to get everything.
Repository: youzan/vant-weapp
Branch: dev
Commit: 7a7d43757ed1
Files: 1892
Total size: 2.6 MB
Directory structure:
gitextract_stysbeow/
├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .gitee/
│ └── ISSUE_TEMPLATE.zh-CN.md
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── config.yml
│ │ ├── template-1-bug-report-vant.zh-CN.yml
│ │ └── template-3-feature-request-vant.zh-CN.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ ├── pr-labeler.yml
│ └── workflows/
│ ├── deploy-site.yml
│ ├── pr-label.yaml
│ ├── release-tag.yml
│ └── test.yml
├── .gitignore
├── .husky/
│ ├── .gitignore
│ ├── commit-msg
│ └── pre-commit
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .stylelintrc
├── LICENSE
├── README.md
├── babel.config.js
├── build/
│ ├── compiler.js
│ ├── dev.mjs
│ ├── release.sh
│ └── upload.js
├── dist/
│ ├── action-sheet/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── area/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── button/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── calendar/
│ │ ├── calendar.wxml
│ │ ├── components/
│ │ │ ├── header/
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── month/
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ ├── index.wxs
│ │ │ └── index.wxss
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── utils.d.ts
│ │ ├── utils.js
│ │ └── utils.wxs
│ ├── card/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── cascader/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── cell/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── cell-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── checkbox/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── checkbox-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── circle/
│ │ ├── canvas.d.ts
│ │ ├── canvas.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── col/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── collapse/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── collapse-item/
│ │ ├── animate.d.ts
│ │ ├── animate.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── common/
│ │ ├── color.d.ts
│ │ ├── color.js
│ │ ├── component.d.ts
│ │ ├── component.js
│ │ ├── index.wxss
│ │ ├── relation.d.ts
│ │ ├── relation.js
│ │ ├── style/
│ │ │ ├── clearfix.wxss
│ │ │ ├── ellipsis.wxss
│ │ │ ├── hairline.wxss
│ │ │ ├── mixins/
│ │ │ │ ├── clearfix.wxss
│ │ │ │ ├── ellipsis.wxss
│ │ │ │ └── hairline.wxss
│ │ │ └── var.wxss
│ │ ├── utils.d.ts
│ │ ├── utils.js
│ │ ├── validator.d.ts
│ │ ├── validator.js
│ │ ├── version.d.ts
│ │ └── version.js
│ ├── config-provider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── count-down/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── utils.d.ts
│ │ └── utils.js
│ ├── datetime-picker/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── definitions/
│ │ ├── index.d.ts
│ │ └── index.js
│ ├── dialog/
│ │ ├── dialog.d.ts
│ │ ├── dialog.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── divider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── dropdown-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ └── shared.js
│ ├── dropdown-menu/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── empty/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── field/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── input.wxml
│ │ ├── props.d.ts
│ │ ├── props.js
│ │ ├── textarea.wxml
│ │ ├── types.d.ts
│ │ └── types.js
│ ├── goods-action/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── goods-action-button/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── goods-action-icon/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── grid/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── grid-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── icon/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── image/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── index-anchor/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── index-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── info/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── loading/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── mixins/
│ │ ├── basic.d.ts
│ │ ├── basic.js
│ │ ├── button.d.ts
│ │ ├── button.js
│ │ ├── link.d.ts
│ │ ├── link.js
│ │ ├── page-scroll.d.ts
│ │ ├── page-scroll.js
│ │ ├── touch.d.ts
│ │ ├── touch.js
│ │ ├── transition.d.ts
│ │ └── transition.js
│ ├── nav-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── notice-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── notify/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── notify.d.ts
│ │ └── notify.js
│ ├── overlay/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ └── overlay.wxml
│ ├── panel/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── picker/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ ├── shared.js
│ │ └── toolbar.wxml
│ ├── picker-column/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── popup/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ └── popup.wxml
│ ├── progress/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── radio/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── radio-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── rate/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── row/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── search/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── share-sheet/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── options.d.ts
│ │ ├── options.js
│ │ ├── options.json
│ │ ├── options.wxml
│ │ ├── options.wxs
│ │ └── options.wxss
│ ├── sidebar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── sidebar-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── skeleton/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── slider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── stepper/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── steps/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── sticky/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── submit-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── swipe-cell/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── switch/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tab/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabbar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabbar-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabs/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tag/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── toast/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── toast.d.ts
│ │ └── toast.js
│ ├── transition/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tree-select/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── uploader/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ ├── shared.js
│ │ ├── utils.d.ts
│ │ └── utils.js
│ └── wxs/
│ ├── add-unit.wxs
│ ├── array.wxs
│ ├── bem.wxs
│ ├── memoize.wxs
│ ├── object.wxs
│ ├── style.wxs
│ └── utils.wxs
├── docs/
│ └── markdown/
│ ├── changelog.md
│ ├── custom-style.md
│ ├── home.md
│ ├── quickstart.md
│ └── theme.md
├── example/
│ ├── app.js
│ ├── app.json
│ ├── app.wxss
│ ├── common/
│ │ └── page.js
│ ├── components/
│ │ ├── demo-block/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── demo-home/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ └── demo-home-nav/
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── config.js
│ ├── database_area.json
│ ├── functions/
│ │ └── foo/
│ │ ├── index.js
│ │ └── package.json
│ ├── pages/
│ │ ├── action-sheet/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── area/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── button/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── calendar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── card/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── cascader/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── cell/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── checkbox/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── circle/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── col/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── collapse/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── config-provider/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── count-down/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── dashboard/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── datetime-picker/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── dialog/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── divider/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── dropdown-menu/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── empty/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── field/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── goods-action/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── grid/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── icon/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── image/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── index-bar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── loading/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── nav-bar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── notice-bar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── notify/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── overlay/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── panel/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── picker/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── popup/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── progress/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── radio/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── rate/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── search/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── share-sheet/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── sidebar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── skeleton/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── slider/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── stepper/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── steps/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── sticky/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── submit-bar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── swipe-cell/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── switch/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── tab/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── tabbar/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── tag/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── toast/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── transition/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ ├── tree-select/
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ └── index.wxml
│ │ └── uploader/
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── project.config.json
│ └── sitemap.json
├── jest.config.js
├── lib/
│ ├── action-sheet/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── area/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── button/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── calendar/
│ │ ├── calendar.wxml
│ │ ├── components/
│ │ │ ├── header/
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ ├── index.json
│ │ │ │ ├── index.wxml
│ │ │ │ └── index.wxss
│ │ │ └── month/
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ ├── index.wxs
│ │ │ └── index.wxss
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── utils.d.ts
│ │ ├── utils.js
│ │ └── utils.wxs
│ ├── card/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── cascader/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── cell/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── cell-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── checkbox/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── checkbox-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── circle/
│ │ ├── canvas.d.ts
│ │ ├── canvas.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── col/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── collapse/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── collapse-item/
│ │ ├── animate.d.ts
│ │ ├── animate.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── common/
│ │ ├── color.d.ts
│ │ ├── color.js
│ │ ├── component.d.ts
│ │ ├── component.js
│ │ ├── index.wxss
│ │ ├── relation.d.ts
│ │ ├── relation.js
│ │ ├── style/
│ │ │ ├── clearfix.wxss
│ │ │ ├── ellipsis.wxss
│ │ │ ├── hairline.wxss
│ │ │ ├── mixins/
│ │ │ │ ├── clearfix.wxss
│ │ │ │ ├── ellipsis.wxss
│ │ │ │ └── hairline.wxss
│ │ │ └── var.wxss
│ │ ├── utils.d.ts
│ │ ├── utils.js
│ │ ├── validator.d.ts
│ │ ├── validator.js
│ │ ├── version.d.ts
│ │ └── version.js
│ ├── config-provider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── count-down/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── utils.d.ts
│ │ └── utils.js
│ ├── datetime-picker/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── definitions/
│ │ ├── index.d.ts
│ │ └── index.js
│ ├── dialog/
│ │ ├── dialog.d.ts
│ │ ├── dialog.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── divider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── dropdown-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ └── shared.js
│ ├── dropdown-menu/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── empty/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── field/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── input.wxml
│ │ ├── props.d.ts
│ │ ├── props.js
│ │ ├── textarea.wxml
│ │ ├── types.d.ts
│ │ └── types.js
│ ├── goods-action/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── goods-action-button/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── goods-action-icon/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── grid/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── grid-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── icon/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── image/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── index-anchor/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── index-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── info/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── loading/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── mixins/
│ │ ├── basic.d.ts
│ │ ├── basic.js
│ │ ├── button.d.ts
│ │ ├── button.js
│ │ ├── link.d.ts
│ │ ├── link.js
│ │ ├── page-scroll.d.ts
│ │ ├── page-scroll.js
│ │ ├── touch.d.ts
│ │ ├── touch.js
│ │ ├── transition.d.ts
│ │ └── transition.js
│ ├── nav-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── notice-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── notify/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── notify.d.ts
│ │ └── notify.js
│ ├── overlay/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ └── overlay.wxml
│ ├── panel/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── picker/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ ├── shared.js
│ │ └── toolbar.wxml
│ ├── picker-column/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── popup/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ └── popup.wxml
│ ├── progress/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── radio/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── radio-group/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── rate/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── row/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── search/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── share-sheet/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── options.d.ts
│ │ ├── options.js
│ │ ├── options.json
│ │ ├── options.wxml
│ │ ├── options.wxs
│ │ └── options.wxss
│ ├── sidebar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── sidebar-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── skeleton/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── slider/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── stepper/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── steps/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── sticky/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── submit-bar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── swipe-cell/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── switch/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tab/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabbar/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabbar-item/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ ├── tabs/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tag/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── toast/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ ├── toast.d.ts
│ │ └── toast.js
│ ├── transition/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── tree-select/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── index.wxss
│ ├── uploader/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── index.wxss
│ │ ├── shared.d.ts
│ │ ├── shared.js
│ │ ├── utils.d.ts
│ │ └── utils.js
│ └── wxs/
│ ├── add-unit.wxs
│ ├── array.wxs
│ ├── bem.wxs
│ ├── memoize.wxs
│ ├── object.wxs
│ ├── style.wxs
│ └── utils.wxs
├── package.json
├── packages/
│ ├── action-sheet/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── area/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── button/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ ├── demo.spec.ts
│ │ └── index.spec.ts
│ ├── calendar/
│ │ ├── README.md
│ │ ├── calendar.wxml
│ │ ├── components/
│ │ │ ├── header/
│ │ │ │ ├── index.json
│ │ │ │ ├── index.less
│ │ │ │ ├── index.ts
│ │ │ │ └── index.wxml
│ │ │ └── month/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ ├── index.wxml
│ │ │ └── index.wxs
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ ├── index.wxml
│ │ │ └── index.wxs
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ ├── utils.ts
│ │ └── utils.wxs
│ ├── card/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── cascader/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── cell/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── cell-group/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── checkbox/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── checkbox-group/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── circle/
│ │ ├── README.md
│ │ ├── canvas.ts
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── col/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── collapse/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── collapse-item/
│ │ ├── animate.ts
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── common/
│ │ ├── README.md
│ │ ├── color.ts
│ │ ├── component.ts
│ │ ├── index.less
│ │ ├── relation.ts
│ │ ├── style/
│ │ │ ├── clearfix.less
│ │ │ ├── ellipsis.less
│ │ │ ├── hairline.less
│ │ │ ├── mixins/
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── ellipsis.less
│ │ │ │ └── hairline.less
│ │ │ └── var.less
│ │ ├── utils.ts
│ │ ├── validator.ts
│ │ └── version.ts
│ ├── config-provider/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── count-down/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ └── utils.ts
│ ├── datetime-picker/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── definitions/
│ │ └── index.ts
│ ├── dialog/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── dialog.ts
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── divider/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── dropdown-item/
│ │ ├── dropdown-item.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── shared.ts
│ ├── dropdown-menu/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── empty/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── field/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── input.wxml
│ │ ├── props.ts
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ ├── textarea.wxml
│ │ └── types.ts
│ ├── goods-action/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── goods-action-button/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── goods-action-icon/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── grid/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── grid-item/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── icon/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── image/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── index-anchor/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── index-bar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── info/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── loading/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── mixins/
│ │ ├── basic.ts
│ │ ├── button.ts
│ │ ├── link.ts
│ │ ├── page-scroll.ts
│ │ ├── touch.ts
│ │ └── transition.ts
│ ├── nav-bar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── notice-bar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── notify/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── notify.ts
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── overlay/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── overlay.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── panel/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── picker/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── shared.ts
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ └── toolbar.wxml
│ ├── picker-column/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── popup/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── popup.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── progress/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── radio/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── radio-group/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── rate/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── row/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── search/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── share-sheet/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── options.json
│ │ ├── options.less
│ │ ├── options.ts
│ │ ├── options.wxml
│ │ ├── options.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── sidebar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── sidebar-item/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── skeleton/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── slider/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── stepper/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── steps/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── sticky/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── submit-bar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── swipe-cell/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── switch/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ ├── demo.spec.ts.snap
│ │ │ └── index.spec.ts.snap
│ │ ├── demo.spec.ts
│ │ └── index.spec.ts
│ ├── tab/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── tabbar/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── tabbar-item/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ └── index.wxml
│ ├── tabs/
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ └── index.wxs
│ ├── tag/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── toast/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ └── toast.ts
│ ├── transition/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.less
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── tree-select/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ └── test/
│ │ ├── __snapshots__/
│ │ │ └── demo.spec.ts.snap
│ │ └── demo.spec.ts
│ ├── uploader/
│ │ ├── README.md
│ │ ├── demo/
│ │ │ ├── index.json
│ │ │ ├── index.ts
│ │ │ └── index.wxml
│ │ ├── index.json
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── index.wxml
│ │ ├── index.wxs
│ │ ├── shared.ts
│ │ ├── test/
│ │ │ ├── __snapshots__/
│ │ │ │ └── demo.spec.ts.snap
│ │ │ └── demo.spec.ts
│ │ └── utils.ts
│ └── wxs/
│ ├── add-unit.wxs
│ ├── array.wxs
│ ├── bem.wxs
│ ├── memoize.wxs
│ ├── object.wxs
│ ├── style.wxs
│ └── utils.wxs
├── postcss.config.js
├── rsbuild.config.ts
├── tsconfig.example.json
├── tsconfig.json
├── tsconfig.lib.json
└── vant.config.mjs
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = space
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.wxml]
indent_size = 2
[*.wxss]
indent_size = 2
[*.js]
indent_size = 2
[*.json]
indent_size = 2
================================================
FILE: .eslintignore
================================================
lib
dist
example/dist
node_modules
================================================
FILE: .eslintrc
================================================
{
"root": true,
"globals": {
"getApp": false,
"getCurrentPages": false,
"Page": false,
"Component": false,
"App": false,
"wx": false,
"Behavior": false
},
"extends": ["@vant"]
}
================================================
FILE: .gitee/ISSUE_TEMPLATE.zh-CN.md
================================================
你好,请使用下面的链接创建 issue 以帮助我们更快的排查问题,不规范的 issue 会被关闭,感谢配合。
http://vant-ui.github.io/vant-issue-generater?repo=VantWeapp
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [chenjiahan, nemo-shen]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/template-1-bug-report-vant.zh-CN.yml
================================================
name: 我要反馈 Vant Weapp 的 Bug
description: 通过标准模板进行 Bug 反馈
title: "[Bug Report] 请在此填写标题"
labels: ["bug: need confirm"]
body:
- type: markdown
attributes:
value: |
在提交 Bug 报告前,请注意:
- 确认你的问题无法通过官方文档得到解决。
- 确认你搜索过 [历史 issue](https://github.com/youzan/vant-weapp/issues),并且没有发现同样的问题。
- 如果不是反馈 Bug,请到 [Discussions 讨论区](https://github.com/youzan/vant-weapp/discussions) 发帖。
- type: textarea
id: reproduce
attributes:
label: 重现链接
description: 请提供一个尽可能简单的微信小程序代码片段协助我们排查,这可以更快的帮助我们定位问题,解决 issue。
validations:
required: true
- type: input
id: version
attributes:
label: Vant Weapp 版本
description: 你正在使用的 Vant Weapp 版本是多少?(请填写 node_modules/@vant/weapp/package.json 里实际安装的版本)
placeholder: 比如 1.10.5
validations:
required: true
- type: textarea
id: description
attributes:
label: 描述一下你遇到的问题。
placeholder: 比如:弹窗无法展示、日历组件报错
validations:
required: true
- type: textarea
id: reproduce-steps
attributes:
label: 重现步骤
description: 请提供一个最简单的操作步骤,方便我们快速重现问题。
placeholder: |
比如:
1. 点击按钮
2. 弹窗无法展示
validations:
required: true
- type: input
id: browsers
attributes:
label: 设备/浏览器
description: 在哪些设备/浏览器上能重现这个问题?
================================================
FILE: .github/ISSUE_TEMPLATE/template-3-feature-request-vant.zh-CN.yml
================================================
name: 我想要一个 Vant Weapp 的新功能
description: 通过标准模板描述一下你的功能需求。
title: "[Feature Request] 请在此填写标题"
labels: ["feature: need confirm"]
body:
- type: markdown
attributes:
value: |
在提交功能需求前,请注意:
- 确认这是一个通用功能,并且无法通过现有的 API 或 Slot 实现。
- 确认你搜索过 [历史 issue](https://github.com/youzan/vant-weapp/issues),并且没有发现同样的需求。
- 可以先到 [Discussions 讨论区](https://github.com/youzan/vant-weapp/discussions) 发帖,讨论一下需求是否合理。
- type: textarea
id: description
attributes:
label: 这个功能解决了什么问题?
description: 请尽可能详细地说明这个功能的使用场景。
validations:
required: true
- type: textarea
id: api
attributes:
label: 你期望的 API 是什么样子的?
description: 描述一下这个新功能的 API,并提供一些代码示例。
placeholder: |
```xml
<van-button some-prop="xxx" />
```
validations:
required: true
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
### Pull Request 标题规则
type(ComponentName?):commit message
示例:
- docs: fix typo in quickstart
- build: optimize build speed
- fix(Button): incorrect style
- feat(Button): add color prop
可选择的类型:
- fix
- feat
- docs
- perf
- test
- types
- build
- chore
- refactor
- breaking change
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: monthly
open-pull-requests-limit: 10
ignore:
- dependency-name: miniprogram-api-typings
versions:
- 3.3.2
================================================
FILE: .github/pr-labeler.yml
================================================
"change: feat":
- "/^(feat|types|style)/"
"change: fix":
- "/^fix/"
"change: perf":
- "/^perf/"
"change: breaking":
- "/^breaking change/"
"change: docs":
- "/^docs/"
================================================
FILE: .github/workflows/deploy-site.yml
================================================
name: Deploy Site
on:
push:
branches: [dev]
paths:
- 'docs/**/*.md'
- 'packages/**/*.md'
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2
with:
ref: 'dev'
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Build Site
run: npx --no-install vant-cli build-site
- name: Deploy for GitHub 🚀
uses: JamesIves/github-pages-deploy-action@v4.6.0
with:
branch: gh-pages
folder: site-dist
token: ${{ secrets.VANT_UI_TOKEN }}
repository-name: vant-ui/vant-ui.github.io
target-folder: vant-weapp
# enable single-commit to reduce the repo size
single-commit: true
clean: true
clean-exclude: |
0.x
================================================
FILE: .github/workflows/pr-label.yaml
================================================
name: PR Labeler
on:
pull_request_target:
types:
- opened
- edited
jobs:
change-labeling:
name: Labeling for changes
runs-on: ubuntu-latest
steps:
- uses: github/issue-labeler@v3.4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/pr-labeler.yml
enable-versioned-regex: 0
include-title: 1
sync-labels: 1
================================================
FILE: .github/workflows/release-tag.yml
================================================
name: Create Release Tag
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create Release for Tag
id: release_tag
uses: ncipollo/release-action@v1
with:
generateReleaseNotes: "true"
body: |
> 请访问 [更新日志](https://vant-ui.github.io/vant-weapp/#/changelog) 了解所有更新。
================================================
FILE: .github/workflows/test.yml
================================================
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '18.x'
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Run linter
run: npm run lint
test:
runs-on: ubuntu-latest
steps:
- uses: szenius/set-timezone@v1.0
with:
timezoneLinux: "Asia/Shanghai"
timezoneMacos: "Asia/Shanghai"
timezoneWindows: "China Standard Time"
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '18.x'
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Run test cases
run: npm test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '18.x'
- name: Install dependencies
uses: bahmutov/npm-install@v1
- name: Build
run: npm run build:lib
================================================
FILE: .gitignore
================================================
*.log*
.cache
.DS_Store
.idea
.vscode
node_modules
site-dist
docs/dist
example/dist
.history
changelog.generated.md
package-lock.json
build/private.wx1c01b35002d3ba14.key
project.private.config.json
================================================
FILE: .husky/.gitignore
================================================
_
================================================
FILE: .husky/commit-msg
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install vant-cli commit-lint $1
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install lint-staged
================================================
FILE: .npmrc
================================================
registry=https://registry.npmjs.org
================================================
FILE: .prettierignore
================================================
lib
dist
================================================
FILE: .prettierrc
================================================
{
"singleQuote": true,
"proseWrap": "never"
}
================================================
FILE: .stylelintrc
================================================
{
"extends": [
"@vant/stylelint-config"
],
"rules": {
"unit-no-unknown": [
true,
{
"ignoreUnits": "/rpx/"
}
],
"selector-type-no-unknown": [
true,
{
"ignoreTypes": [
"/page/"
]
}
]
}
}
================================================
FILE: LICENSE
================================================
Copyright 2016-present Youzan
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
<p align="center">
<img alt="logo" src="https://img.yzcdn.cn/vant/logo.png" width="120" style="margin-bottom: 10px;">
</p>
<h3 align="center">轻量、可靠的小程序 UI 组件库</h3>
<p align="center">
<img src="https://img.shields.io/npm/v/@vant/weapp.svg?style=for-the-badge" alt="npm version" />
<img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge&color=#4fc08d" />
<img src="https://img.shields.io/npm/dt/@vant/weapp.svg?style=for-the-badge&color=#4fc08d" alt="downloads" />
<img src="https://img.shields.io/npm/dm/@vant/weapp.svg?style=for-the-badge&color=#4fc08d" alt="downloads" />
</p>
<p align="center">
🔥 <a href="https://vant.pro/vant-weapp/">文档网站(国内)</a>
🔥 <a href="https://vant-ui.github.io/vant-weapp/">文档网站(GitHub)</a>
🚀 <a href="https://github.com/vant-ui/vant" target="_blank">Vue 版</a>
</p>
---
### 介绍
Vant 是一个**轻量、可靠的移动端组件库**,于 2017 年开源。
目前 Vant 官方提供了 [Vue 2 版本](https://vant-ui.github.io/vant/v2/)、[Vue 3 版本](https://vant-ui.github.io/vant/)和[微信小程序版本](http://vant-ui.github.io/vant-weapp/),并由社区团队维护 [React 版本](https://github.com/3lang3/react-vant)和[支付宝小程序版本](https://github.com/ant-move/Vant-Aliapp)。
## 预览
扫描下方小程序二维码,体验组件库示例。注意:因微信审核机制限制,目前示例小程序不是最新版本,可以 clone 代码到本地开发工具预览
<img src="https://img.yzcdn.cn/vant-weapp/qrcode-201808101114.jpg" width="200" height="200" style="margin-top: 10px;" >
## 使用之前
使用 Vant Weapp 前,请确保你已经学习过微信官方的 [小程序简易教程](https://developers.weixin.qq.com/miniprogram/dev/framework/) 和 [自定义组件介绍](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/)。
## 安装
### 方式一. 通过 npm 安装 (推荐)
小程序已经支持使用 npm 安装第三方包,详见 [npm 支持](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html?search-key=npm)
```bash
# 通过 npm 安装
npm i @vant/weapp -S --production
# 通过 yarn 安装
yarn add @vant/weapp --production
# 安装 0.x 版本
npm i vant-weapp -S --production
```
### 方式二. 下载代码
直接通过 git 下载 Vant Weapp 源代码,并将 `dist` 目录拷贝到自己的项目中。
```bash
git clone https://github.com/youzan/vant-weapp.git
```
## 使用组件
以按钮组件为例,只需要在 json 文件中引入按钮对应的自定义组件即可
```json
{
"usingComponents": {
"van-button": "/path/to/vant-weapp/dist/button/index"
}
}
```
接着就可以在 wxml 中直接使用组件
```html
<van-button type="primary">按钮</van-button>
```
## 在开发者工具中预览
```bash
# 安装项目依赖
npm install
# 执行组件编译
npm run dev
```
打开[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html),把`vant-weapp/example`目录添加进去就可以预览示例了。
PS:关于 `van-area` Area 省市区选择组件,地区数据初始化可以直接在云开发环境中导入`vant-weapp/example/database_area.JSON` 文件使用。
## 基础库版本
Vant Weapp 最低支持到小程序基础库 2.6.5 版本。
## 链接
- [文档网站(GitHub)](https://vant-ui.github.io/vant-weapp/)
- [文档网站(国内)](https://vant.pro/vant-weapp/)
- [意见反馈](https://github.com/youzan/vant-weapp/issues)
- [设计资源](https://vant-ui.github.io/vant/#/zh-CN/design)
- [更新日志](https://vant-ui.github.io/vant-weapp/#/changelog)
- [官方示例](https://github.com/vant-ui/vant-demo)
## 核心团队
以下是 Vant 和 Vant Weapp 的核心贡献者们:
| [](https://github.com/chenjiahan/) | [](https://github.com/cookfront/) | [](https://github.com/w91/) | [](https://github.com/pangxie1991/) | [](https://github.com/rex-zsd/) | [](https://github.com/nemo-shen/) |
| :-: | :-: | :-: | :-: | :-: | :-: |
| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |
| [](https://github.com/Lindysen/) | [](https://github.com/JakeLaoyu/) | [](https://github.com/landluck/) | [](https://github.com/wjw-gavin/) | [](https://github.com/inottn/) | [](https://github.com/zhousg/) |
| :-: | :-: | :-: | :-: | :-: | :-: |
| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |
## 贡献者们
感谢以下小伙伴们为 Vant Weapp 发展做出的贡献:
<a href="https://github.com/youzan/vant-weapp/graphs/contributors">
<img src="https://opencollective.com/vant-weapp/contributors.svg?width=890&button=false" alt="contributors">
</a>
## 开源协议
本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89)协议,请自由地享受和参与开源。
================================================
FILE: babel.config.js
================================================
module.exports = {
presets: [
[
'@babel/preset-env',
{
loose: true,
modules: false,
},
],
],
env: {
test: {
presets: ['@babel/preset-typescript'],
plugins: ['@babel/plugin-transform-modules-commonjs'],
},
},
};
================================================
FILE: build/compiler.js
================================================
const fs = require('fs');
const gulp = require('gulp');
const path = require('path');
const less = require('gulp-less');
const insert = require('gulp-insert');
const rename = require('gulp-rename');
const postcss = require('gulp-postcss');
const ts = require('gulp-typescript');
const util = require('util');
const merge2 = require('merge2');
const exec = util.promisify(require('child_process').exec);
const src = path.resolve(__dirname, '../packages');
const icons = path.resolve(__dirname, '../node_modules/@vant/icons');
const libConfig = path.resolve(__dirname, '../tsconfig.lib.json');
const esConfig = path.resolve(__dirname, '../tsconfig.json');
const exampleConfig = path.resolve(__dirname, '../tsconfig.example.json');
const libDir = path.resolve(__dirname, '../lib');
const esDir = path.resolve(__dirname, '../dist');
const exampleDistDir = path.resolve(__dirname, '../example/dist');
const examplePagesDir = path.resolve(__dirname, '../example/pages');
const exampleAppJsonPath = path.resolve(__dirname, '../example/app.json');
const baseCssPath = path.resolve(__dirname, '../packages/common/index.wxss');
const lessCompiler = (dist) =>
function compileLess() {
const srcPath = [`${src}/**/*.less`];
if ([esDir, libDir].indexOf(dist) !== -1) {
srcPath.push(`!${src}/**/demo/**/*.less`);
}
return gulp
.src(srcPath)
.pipe(less())
.pipe(postcss())
.pipe(
insert.transform((contents, file) => {
if (!file.path.includes('packages' + path.sep + 'common')) {
const relativePath = path
.relative(
path.normalize(`${file.path}${path.sep}..`),
baseCssPath
)
.replace(/\\/g, '/');
contents = `@import '${relativePath}';${contents}`;
}
return contents;
})
)
.pipe(rename({ extname: '.wxss' }))
.pipe(gulp.dest(dist));
};
const tsCompiler = (dist, config) =>
function compileTs() {
const tsProject = ts.createProject(config, {
declaration: true,
});
const tsResult = tsProject.src().pipe(tsProject());
return merge2(
tsResult.js
.pipe(
insert.transform((contents, file) => {
if (dist === exampleDistDir && file.path.includes(`${path.sep}demo${path.sep}`)) {
const iconConfig = '@vant/icons/src/config';
contents = contents.replace(
iconConfig,
path.relative(
path.dirname(file.path),
`${exampleDistDir}/${iconConfig}`
).replace(/\\/g, '/')
);
}
return contents;
})
)
.pipe(gulp.dest(dist)),
tsResult.dts.pipe(gulp.dest(dist))
);
};
const copier = (dist, ext) =>
function copy() {
const srcPath = [`${src}/**/*.${ext}`];
if ([esDir, libDir].indexOf(dist) !== -1) {
srcPath.push(`!${src}/**/demo/**/*.${ext}`);
}
return gulp
.src(srcPath)
.pipe(
insert.transform((contents, file) => {
if (ext === 'json' && file.path.includes(`${path.sep}demo${path.sep}`) ) {
contents = contents.replace('/example', '');
}
return contents;
})
)
.pipe(gulp.dest(dist));
};
const staticCopier = (dist) =>
gulp.parallel(
copier(dist, 'wxml'),
copier(dist, 'wxs'),
copier(dist, 'json')
);
const cleaner = (path) =>
function clean() {
return exec(`npx rimraf ${path}`);
};
const tasks = [
['buildEs', esDir, esConfig],
['buildLib', libDir, libConfig],
].reduce((prev, [name, ...args]) => {
prev[name] = gulp.series(
cleaner(...args),
gulp.parallel(
tsCompiler(...args),
lessCompiler(...args),
staticCopier(...args)
)
);
return prev;
}, {});
tasks.buildExample = gulp.series(
cleaner(exampleDistDir),
gulp.parallel(
tsCompiler(exampleDistDir, exampleConfig),
lessCompiler(exampleDistDir),
staticCopier(exampleDistDir),
() =>
gulp
.src(`${icons}/**/*`)
.pipe(gulp.dest(`${exampleDistDir}/@vant/icons`)),
() => {
const appJson = JSON.parse(fs.readFileSync(exampleAppJsonPath));
const excludePages = ['pages/dashboard/index'];
appJson.pages
.filter((page) => page.indexOf(excludePages) === -1)
.forEach((path) => {
const component = path.replace(/(pages\/|\/index)/g, '');
const writeFiles = [
{
path: `${examplePagesDir}/${component}/index.js`,
contents: "import Page from '../../common/page';\n\nPage();",
},
{
path: `${examplePagesDir}/${component}/index.wxml`,
contents: `<van-${component}-demo />`,
},
];
writeFiles.forEach((writeFile) => {
fs.access(writeFile.path, fs.constants.F_OK, (fileNotExists) => {
if (fileNotExists) {
fs.writeFile(writeFile.path, writeFile.contents, (err) => {
if (err) {
throw err;
}
});
}
});
});
});
},
() => {
gulp.watch(`${src}/**/*.less`, lessCompiler(exampleDistDir));
gulp.watch(`${src}/**/*.wxml`, copier(exampleDistDir, 'wxml'));
gulp.watch(`${src}/**/*.wxs`, copier(exampleDistDir, 'wxs'));
gulp.watch(`${src}/**/*.ts`, tsCompiler(exampleDistDir, exampleConfig));
gulp.watch(`${src}/**/*.json`, copier(exampleDistDir, 'json'));
}
)
);
module.exports = tasks;
================================================
FILE: build/dev.mjs
================================================
import { dirname, resolve } from 'path';
import { fileURLToPath } from 'url';
import { dev } from '@vant/cli/lib/commands/dev.js';
import { exec } from 'child_process';
const __dirname = dirname(fileURLToPath(import.meta.url));
const gulpConfig = resolve(__dirname, './compiler.js');
async function run() {
await dev();
const p = exec(`npx gulp -f ${gulpConfig} buildExample --color`);
p.stdout.on('data', (stdout) => console.info(stdout));
p.stderr.on('data', (stderr) => console.info(stderr));
}
run();
================================================
FILE: build/release.sh
================================================
#!/usr/bin/env sh
set -e
echo "Enter release version: "
read VERSION
read -p "Releasing $VERSION - are you sure? (y/n)" -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
# build
npm run build:lib
if [[ `git status --porcelain` ]];
then
git add -A
git commit -am "build: compile $VERSION"
fi
# commit
npm version $VERSION --message "release: $VERSION"
# publish
git push origin dev
git push origin refs/tags/v$VERSION
if [[ $VERSION =~ [beta] ]]
then
npm publish --tag beta
else
npm publish
fi
fi
================================================
FILE: build/upload.js
================================================
const ci = require('miniprogram-ci');
const path = require('path');
const config = require('../example/project.config.json');
const package = require('../package.json');
const project = new ci.Project({
appid: config.appid,
type: 'miniProgram',
projectPath: path.join(__dirname, '../example'),
privateKeyPath: path.join(__dirname, './private.wx1c01b35002d3ba14.key'),
ignores: ['node_modules/**/*'],
});
ci.upload({
project,
version: package.version,
desc: package.description,
setting: config.setting,
});
================================================
FILE: dist/action-sheet/index.d.ts
================================================
export {};
================================================
FILE: dist/action-sheet/index.js
================================================
import { VantComponent } from '../common/component';
import { button } from '../mixins/button';
VantComponent({
classes: ['list-class'],
mixins: [button],
props: {
show: Boolean,
title: String,
cancelText: String,
description: String,
round: {
type: Boolean,
value: true,
},
zIndex: {
type: Number,
value: 100,
},
actions: {
type: Array,
value: [],
},
overlay: {
type: Boolean,
value: true,
},
closeOnClickOverlay: {
type: Boolean,
value: true,
},
closeOnClickAction: {
type: Boolean,
value: true,
},
safeAreaInsetBottom: {
type: Boolean,
value: true,
},
rootPortal: {
type: Boolean,
value: false,
},
},
methods: {
onSelect(event) {
const { index } = event.currentTarget.dataset;
const { actions, closeOnClickAction, canIUseGetUserProfile } = this.data;
const item = actions[index];
if (item) {
this.$emit('select', item);
if (closeOnClickAction) {
this.onClose();
}
if (item.openType === 'getUserInfo' && canIUseGetUserProfile) {
wx.getUserProfile({
desc: item.getUserProfileDesc || ' ',
complete: (userProfile) => {
this.$emit('getuserinfo', userProfile);
},
});
}
}
},
onCancel() {
this.$emit('cancel');
},
onClose() {
this.$emit('close');
},
onClickOverlay() {
this.$emit('click-overlay');
this.onClose();
},
},
});
================================================
FILE: dist/action-sheet/index.json
================================================
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index",
"van-popup": "../popup/index",
"van-loading": "../loading/index"
}
}
================================================
FILE: dist/action-sheet/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<van-popup
show="{{ show }}"
position="bottom"
round="{{ round }}"
z-index="{{ zIndex }}"
overlay="{{ overlay }}"
custom-class="van-action-sheet custom-class"
safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
close-on-click-overlay="{{ closeOnClickOverlay }}"
root-portal="{{ rootPortal }}"
bind:close="onClickOverlay"
>
<view wx:if="{{ title }}" class="van-action-sheet__header">
{{ title }}
<van-icon
name="cross"
custom-class="van-action-sheet__close"
bind:click="onClose"
/>
</view>
<view wx:if="{{ description }}" class="van-action-sheet__description van-hairline--bottom">
{{ description }}
</view>
<view wx:if="{{ actions && actions.length }}" class="list-class">
<!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
<button
wx:for="{{ actions }}"
wx:key="index"
open-type="{{ item.disabled || item.loading || (canIUseGetUserProfile && item.openType === 'getUserInfo') ? '' : item.openType }}"
style="{{ item.color ? 'color: ' + item.color : '' }}"
class="{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} {{ item.className || '' }}"
hover-class="van-action-sheet__item--hover"
data-index="{{ index }}"
bindtap="{{ item.disabled || item.loading ? '' : 'onSelect' }}"
bindgetuserinfo="onGetUserInfo"
bindcontact="onContact"
bindgetphonenumber="onGetPhoneNumber"
binderror="onError"
bindlaunchapp="onLaunchApp"
bindopensetting="onOpenSetting"
lang="{{ lang }}"
session-from="{{ sessionFrom }}"
send-message-title="{{ sendMessageTitle }}"
send-message-path="{{ sendMessagePath }}"
send-message-img="{{ sendMessageImg }}"
show-message-card="{{ showMessageCard }}"
app-parameter="{{ appParameter }}"
>
<block wx:if="{{ !item.loading }}">
{{ item.name }}
<view wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</view>
</block>
<van-loading wx:else custom-class="van-action-sheet__loading" size="22px" />
</button>
</view>
<slot />
<block wx:if="{{ cancelText }}">
<view class="van-action-sheet__gap" />
<view
class="van-action-sheet__cancel"
hover-class="van-action-sheet__cancel--hover"
hover-stay-time="70"
bind:tap="onCancel"
>
{{ cancelText }}
</view>
</block>
</van-popup>
================================================
FILE: dist/action-sheet/index.wxss
================================================
@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--action-sheet-max-height,90%)!important}.van-action-sheet__cancel,.van-action-sheet__item{background-color:var(--action-sheet-item-background,#fff);font-size:var(--action-sheet-item-font-size,16px);line-height:var(--action-sheet-item-line-height,22px);padding:14px 16px;text-align:center}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{background-color:var(--action-sheet-cancel-padding-color,#f7f8fa);display:block;height:var(--action-sheet-cancel-padding-top,8px)}.van-action-sheet__item--disabled{color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{color:var(--action-sheet-subname-color,#969799);font-size:var(--action-sheet-subname-font-size,12px);line-height:var(--action-sheet-subname-line-height,20px);margin-top:var(--padding-xs,8px)}.van-action-sheet__header{font-size:var(--action-sheet-header-font-size,16px);font-weight:var(--font-weight-bold,500);line-height:var(--action-sheet-header-height,48px);text-align:center}.van-action-sheet__description{color:var(--action-sheet-description-color,#969799);font-size:var(--action-sheet-description-font-size,14px);line-height:var(--action-sheet-description-line-height,20px);padding:20px var(--padding-md,16px);text-align:center}.van-action-sheet__close{color:var(--action-sheet-close-icon-color,#c8c9cc);font-size:var(--action-sheet-close-icon-size,22px)!important;line-height:inherit!important;padding:var(--action-sheet-close-icon-padding,0 16px);position:absolute!important;right:0;top:0}.van-action-sheet__loading{display:flex!important}
================================================
FILE: dist/area/index.d.ts
================================================
export {};
================================================
FILE: dist/area/index.js
================================================
import { VantComponent } from '../common/component';
import { pickerProps } from '../picker/shared';
import { requestAnimationFrame } from '../common/utils';
const EMPTY_CODE = '000000';
VantComponent({
classes: ['active-class', 'toolbar-class', 'column-class'],
props: Object.assign(Object.assign({}, pickerProps), { showToolbar: {
type: Boolean,
value: true,
}, value: {
type: String,
observer(value) {
this.code = value;
this.setValues();
},
}, areaList: {
type: Object,
value: {},
observer: 'setValues',
}, columnsNum: {
type: null,
value: 3,
}, columnsPlaceholder: {
type: Array,
observer(val) {
this.setData({
typeToColumnsPlaceholder: {
province: val[0] || '',
city: val[1] || '',
county: val[2] || '',
},
});
},
} }),
data: {
columns: [{ values: [] }, { values: [] }, { values: [] }],
typeToColumnsPlaceholder: {},
},
mounted() {
requestAnimationFrame(() => {
this.setValues();
});
},
methods: {
getPicker() {
if (this.picker == null) {
this.picker = this.selectComponent('.van-area__picker');
}
return this.picker;
},
onCancel(event) {
this.emit('cancel', event.detail);
},
onConfirm(event) {
const { index } = event.detail;
let { value } = event.detail;
value = this.parseValues(value);
this.emit('confirm', { value, index });
},
emit(type, detail) {
detail.values = detail.value;
delete detail.value;
this.$emit(type, detail);
},
parseValues(values) {
const { columnsPlaceholder } = this.data;
return values.map((value, index) => {
if (value &&
(!value.code || value.name === columnsPlaceholder[index])) {
return Object.assign(Object.assign({}, value), { code: '', name: '' });
}
return value;
});
},
onChange(event) {
var _a;
const { index, picker, value } = event.detail;
this.code = value[index].code;
(_a = this.setValues()) === null || _a === void 0 ? void 0 : _a.then(() => {
this.$emit('change', {
picker,
values: this.parseValues(picker.getValues()),
index,
});
});
},
getConfig(type) {
const { areaList } = this.data;
return (areaList && areaList[`${type}_list`]) || {};
},
getList(type, code) {
if (type !== 'province' && !code) {
return [];
}
const { typeToColumnsPlaceholder } = this.data;
const list = this.getConfig(type);
let result = Object.keys(list).map((code) => ({
code,
name: list[code],
}));
if (code != null) {
// oversea code
if (code[0] === '9' && type === 'city') {
code = '9';
}
result = result.filter((item) => item.code.indexOf(code) === 0);
}
if (typeToColumnsPlaceholder[type] && result.length) {
// set columns placeholder
const codeFill = type === 'province'
? ''
: type === 'city'
? EMPTY_CODE.slice(2, 4)
: EMPTY_CODE.slice(4, 6);
result.unshift({
code: `${code}${codeFill}`,
name: typeToColumnsPlaceholder[type],
});
}
return result;
},
getIndex(type, code) {
let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
const list = this.getList(type, code.slice(0, compareNum - 2));
// oversea code
if (code[0] === '9' && type === 'province') {
compareNum = 1;
}
code = code.slice(0, compareNum);
for (let i = 0; i < list.length; i++) {
if (list[i].code.slice(0, compareNum) === code) {
return i;
}
}
return 0;
},
setValues() {
const picker = this.getPicker();
if (!picker) {
return;
}
let code = this.code || this.getDefaultCode();
const provinceList = this.getList('province');
const cityList = this.getList('city', code.slice(0, 2));
const stack = [];
const indexes = [];
const { columnsNum } = this.data;
if (columnsNum >= 1) {
stack.push(picker.setColumnValues(0, provinceList, false));
indexes.push(this.getIndex('province', code));
}
if (columnsNum >= 2) {
stack.push(picker.setColumnValues(1, cityList, false));
indexes.push(this.getIndex('city', code));
if (cityList.length && code.slice(2, 4) === '00') {
[{ code }] = cityList;
}
}
if (columnsNum === 3) {
stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
indexes.push(this.getIndex('county', code));
}
return Promise.all(stack)
.catch(() => { })
.then(() => picker.setIndexes(indexes))
.catch(() => { });
},
getDefaultCode() {
const { columnsPlaceholder } = this.data;
if (columnsPlaceholder.length) {
return EMPTY_CODE;
}
const countyCodes = Object.keys(this.getConfig('county'));
if (countyCodes[0]) {
return countyCodes[0];
}
const cityCodes = Object.keys(this.getConfig('city'));
if (cityCodes[0]) {
return cityCodes[0];
}
return '';
},
getValues() {
const picker = this.getPicker();
if (!picker) {
return [];
}
return this.parseValues(picker.getValues().filter((value) => !!value));
},
getDetail() {
const values = this.getValues();
const area = {
code: '',
country: '',
province: '',
city: '',
county: '',
};
if (!values.length) {
return area;
}
const names = values.map((item) => item.name);
area.code = values[values.length - 1].code;
if (area.code[0] === '9') {
area.country = names[1] || '';
area.province = names[2] || '';
}
else {
area.province = names[0] || '';
area.city = names[1] || '';
area.county = names[2] || '';
}
return area;
},
reset(code) {
this.code = code || '';
return this.setValues();
},
},
});
================================================
FILE: dist/area/index.json
================================================
{
"component": true,
"usingComponents": {
"van-picker": "../picker/index"
}
}
================================================
FILE: dist/area/index.wxml
================================================
<wxs src="./index.wxs" module="computed" />
<van-picker
class="van-area__picker"
active-class="active-class"
toolbar-class="toolbar-class"
column-class="column-class"
show-toolbar="{{ showToolbar }}"
value-key="name"
title="{{ title }}"
loading="{{ loading }}"
columns="{{ computed.displayColumns(columns, columnsNum) }}"
item-height="{{ itemHeight }}"
visible-item-count="{{ visibleItemCount }}"
cancel-button-text="{{ cancelButtonText }}"
confirm-button-text="{{ confirmButtonText }}"
bind:change="onChange"
bind:confirm="onConfirm"
bind:cancel="onCancel"
/>
================================================
FILE: dist/area/index.wxs
================================================
/* eslint-disable */
function displayColumns(columns, columnsNum) {
return columns.slice(0, +columnsNum);
}
module.exports = {
displayColumns: displayColumns,
};
================================================
FILE: dist/area/index.wxss
================================================
@import '../common/index.wxss';
================================================
FILE: dist/button/index.d.ts
================================================
export {};
================================================
FILE: dist/button/index.js
================================================
import { VantComponent } from '../common/component';
import { button } from '../mixins/button';
import { canIUseFormFieldButton } from '../common/version';
const mixins = [button];
if (canIUseFormFieldButton()) {
mixins.push('wx://form-field-button');
}
VantComponent({
mixins,
classes: ['hover-class', 'loading-class'],
data: {
baseStyle: '',
},
props: {
formType: String,
icon: String,
classPrefix: {
type: String,
value: 'van-icon',
},
plain: Boolean,
block: Boolean,
round: Boolean,
square: Boolean,
loading: Boolean,
hairline: Boolean,
disabled: Boolean,
loadingText: String,
customStyle: String,
loadingType: {
type: String,
value: 'circular',
},
type: {
type: String,
value: 'default',
},
dataset: null,
size: {
type: String,
value: 'normal',
},
loadingSize: {
type: String,
value: '20px',
},
color: String,
},
methods: {
onClick(event) {
this.$emit('click', event);
const { canIUseGetUserProfile, openType, getUserProfileDesc, lang, } = this.data;
if (openType === 'getUserInfo' && canIUseGetUserProfile) {
wx.getUserProfile({
desc: getUserProfileDesc || ' ',
lang: lang || 'en',
complete: (userProfile) => {
this.$emit('getuserinfo', userProfile);
},
});
}
},
},
});
================================================
FILE: dist/button/index.json
================================================
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index",
"van-loading": "../loading/index"
}
}
================================================
FILE: dist/button/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<wxs src="./index.wxs" module="computed" />
<button
id="{{ id || buttonId }}"
data-detail="{{ dataset }}"
class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}"
hover-class="{{ disabled || loading ? '' : 'van-button--active hover-class'}}"
lang="{{ lang }}"
form-type="{{ formType }}"
style="{{ computed.rootStyle({ plain, color, customStyle }) }}"
open-type="{{ disabled || loading || (canIUseGetUserProfile && openType === 'getUserInfo') ? '' : openType }}"
business-id="{{ businessId }}"
session-from="{{ sessionFrom }}"
send-message-title="{{ sendMessageTitle }}"
send-message-path="{{ sendMessagePath }}"
send-message-img="{{ sendMessageImg }}"
show-message-card="{{ showMessageCard }}"
app-parameter="{{ appParameter }}"
aria-label="{{ ariaLabel }}"
bindtap="{{ disabled || loading ? '' : 'onClick' }}"
bindgetuserinfo="onGetUserInfo"
bindcontact="onContact"
bindgetphonenumber="onGetPhoneNumber"
bindgetrealtimephonenumber="onGetRealTimePhoneNumber"
bindagreeprivacyauthorization="onAgreePrivacyAuthorization"
binderror="onError"
bindlaunchapp="onLaunchApp"
bindopensetting="onOpenSetting"
bindchooseavatar="onChooseAvatar"
>
<block wx:if="{{ loading }}">
<van-loading
custom-class="loading-class"
size="{{ loadingSize }}"
type="{{ loadingType }}"
color="{{ computed.loadingColor({ type, color, plain }) }}"
/>
<view wx:if="{{ loadingText }}" class="van-button__loading-text">
{{ loadingText }}
</view>
</block>
<block wx:else>
<van-icon
wx:if="{{ icon }}"
size="1.2em"
name="{{ icon }}"
class-prefix="{{ classPrefix }}"
class="van-button__icon"
custom-style="line-height: inherit;"
/>
<view class="van-button__text">
<slot />
</view>
</block>
</button>
================================================
FILE: dist/button/index.wxs
================================================
/* eslint-disable */
var style = require('../wxs/style.wxs');
function rootStyle(data) {
if (!data.color) {
return data.customStyle;
}
var properties = {
color: data.plain ? data.color : '#fff',
background: data.plain ? null : data.color,
};
// hide border when color is linear-gradient
if (data.color.indexOf('gradient') !== -1) {
properties.border = 0;
} else {
properties['border-color'] = data.color;
}
return style([properties, data.customStyle]);
}
function loadingColor(data) {
if (data.plain) {
return data.color ? data.color : '#c9c9c9';
}
if (data.type === 'default') {
return '#c9c9c9';
}
return '#fff';
}
module.exports = {
rootStyle: rootStyle,
loadingColor: loadingColor,
};
================================================
FILE: dist/button/index.wxss
================================================
@import '../common/index.wxss';.van-button{-webkit-text-size-adjust:100%;align-items:center;-webkit-appearance:none;border-radius:var(--button-border-radius,2px);box-sizing:border-box;display:inline-flex;font-size:var(--button-default-font-size,16px);height:var(--button-default-height,44px);justify-content:center;line-height:var(--button-line-height,20px);padding:0;position:relative;text-align:center;transition:opacity .2s;vertical-align:middle}.van-button:before{background-color:#000;border:inherit;border-color:#000;border-radius:inherit;content:" ";height:100%;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{background:var(--button-default-background-color,#fff);border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0);color:var(--button-default-color,#323233)}.van-button--primary{background:var(--button-primary-background-color,#07c160);border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160);color:var(--button-primary-color,#fff)}.van-button--info{background:var(--button-info-background-color,#1989fa);border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa);color:var(--button-info-color,#fff)}.van-button--danger{background:var(--button-danger-background-color,#ee0a24);border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24);color:var(--button-danger-color,#fff)}.van-button--warning{background:var(--button-warning-background-color,#ff976a);border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a);color:var(--button-warning-color,#fff)}.van-button--plain{background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:var(--button-warning-background-color,#ff976a)}.van-button--large{height:var(--button-large-height,50px);width:100%}.van-button--normal{font-size:var(--button-normal-font-size,14px);padding:0 15px}.van-button--small{font-size:var(--button-small-font-size,12px);height:var(--button-small-height,30px);min-width:var(--button-small-min-width,60px);padding:0 var(--padding-xs,8px)}.van-button--mini{display:inline-block;font-size:var(--button-mini-font-size,10px);height:var(--button-mini-height,22px);min-width:var(--button-mini-min-width,50px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:flex;width:100%}.van-button--round{border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{line-height:inherit!important;min-width:1em;vertical-align:top}.van-button--hairline{border-width:0;padding-top:1px}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--button-border-radius, 2px)*2);border-width:1px}.van-button--hairline.van-button--round:after{border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0}
================================================
FILE: dist/calendar/calendar.wxml
================================================
<wxs src="./index.wxs" module="computed" />
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="van-calendar">
<header
title="{{ title }}"
showTitle="{{ showTitle }}"
subtitle="{{ subtitle }}"
showSubtitle="{{ showSubtitle }}"
firstDayOfWeek="{{ firstDayOfWeek }}"
bind:click-subtitle="onClickSubtitle"
>
<slot name="title" slot="title"></slot>
</header>
<scroll-view
class="van-calendar__body"
scroll-y
scroll-into-view="{{ scrollIntoView }}"
>
<month
wx:for="{{ computed.getMonths(minDate, maxDate) }}"
wx:key="index"
id="month{{ index }}"
class="month"
data-date="{{ item }}"
date="{{ item }}"
type="{{ type }}"
color="{{ color }}"
minDate="{{ minDate }}"
maxDate="{{ maxDate }}"
showMark="{{ showMark }}"
formatter="{{ formatter }}"
rowHeight="{{ rowHeight }}"
currentDate="{{ currentDate }}"
showSubtitle="{{ showSubtitle }}"
allowSameDay="{{ allowSameDay }}"
showMonthTitle="{{ index !== 0 || !showSubtitle }}"
firstDayOfWeek="{{ firstDayOfWeek }}"
bind:click="onClickDay"
/>
</scroll-view>
<view
class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
>
<slot name="footer"></slot>
</view>
<view
class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
>
<van-button
wx:if="{{ showConfirm }}"
round
block
type="danger"
color="{{ color }}"
custom-class="van-calendar__confirm"
disabled="{{ computed.getButtonDisabled(type, currentDate, minRange) }}"
nativeType="text"
bind:click="onConfirm"
>
{{
computed.getButtonDisabled(type, currentDate, minRange)
? confirmDisabledText
: confirmText
}}
</van-button>
</view>
</view>
================================================
FILE: dist/calendar/components/header/index.d.ts
================================================
export {};
================================================
FILE: dist/calendar/components/header/index.js
================================================
import { VantComponent } from '../../../common/component';
VantComponent({
props: {
title: {
type: String,
value: '日期选择',
},
subtitle: String,
showTitle: Boolean,
showSubtitle: Boolean,
firstDayOfWeek: {
type: Number,
observer: 'initWeekDay',
},
},
data: {
weekdays: [],
},
created() {
this.initWeekDay();
},
methods: {
initWeekDay() {
const defaultWeeks = ['日', '一', '二', '三', '四', '五', '六'];
const firstDayOfWeek = this.data.firstDayOfWeek || 0;
this.setData({
weekdays: [
...defaultWeeks.slice(firstDayOfWeek, 7),
...defaultWeeks.slice(0, firstDayOfWeek),
],
});
},
onClickSubtitle(event) {
this.$emit('click-subtitle', event);
},
},
});
================================================
FILE: dist/calendar/components/header/index.json
================================================
{
"component": true
}
================================================
FILE: dist/calendar/components/header/index.wxml
================================================
<view class="van-calendar__header">
<block wx:if="{{ showTitle }}">
<view class="van-calendar__header-title"><slot name="title"></slot></view>
<view class="van-calendar__header-title">{{ title }}</view>
</block>
<view wx:if="{{ showSubtitle }}" class="van-calendar__header-subtitle" bind:tap="onClickSubtitle">
{{ subtitle }}
</view>
<view class="van-calendar__weekdays">
<view wx:for="{{ weekdays }}" wx:key="index" class="van-calendar__weekday">
{{ item }}
</view>
</view>
</view>
================================================
FILE: dist/calendar/components/header/index.wxss
================================================
@import '../../../common/index.wxss';.van-calendar__header{box-shadow:var(--calendar-header-box-shadow,0 2px 10px hsla(220,1%,50%,.16));flex-shrink:0}.van-calendar__header-subtitle,.van-calendar__header-title{font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--calendar-weekdays-font-size,12px);line-height:var(--calendar-weekdays-height,30px);text-align:center}
================================================
FILE: dist/calendar/components/month/index.d.ts
================================================
export interface Day {
date: Date;
type: string;
text: number;
bottomInfo?: string;
}
================================================
FILE: dist/calendar/components/month/index.js
================================================
import { VantComponent } from '../../../common/component';
import { getMonthEndDay, compareDay, getPrevDay, getNextDay, } from '../../utils';
VantComponent({
props: {
date: {
type: null,
observer: 'setDays',
},
type: {
type: String,
observer: 'setDays',
},
color: String,
minDate: {
type: null,
observer: 'setDays',
},
maxDate: {
type: null,
observer: 'setDays',
},
showMark: Boolean,
rowHeight: null,
formatter: {
type: null,
observer: 'setDays',
},
currentDate: {
type: null,
observer: 'setDays',
},
firstDayOfWeek: {
type: Number,
observer: 'setDays',
},
allowSameDay: Boolean,
showSubtitle: Boolean,
showMonthTitle: Boolean,
},
data: {
visible: true,
days: [],
},
methods: {
onClick(event) {
const { index } = event.currentTarget.dataset;
const item = this.data.days[index];
if (item.type !== 'disabled') {
this.$emit('click', item);
}
},
setDays() {
const days = [];
const startDate = new Date(this.data.date);
const year = startDate.getFullYear();
const month = startDate.getMonth();
const totalDay = getMonthEndDay(startDate.getFullYear(), startDate.getMonth() + 1);
for (let day = 1; day <= totalDay; day++) {
const date = new Date(year, month, day);
const type = this.getDayType(date);
let config = {
date,
type,
text: day,
bottomInfo: this.getBottomInfo(type),
};
if (this.data.formatter) {
config = this.data.formatter(config);
}
days.push(config);
}
this.setData({ days });
},
getMultipleDayType(day) {
const { currentDate } = this.data;
if (!Array.isArray(currentDate)) {
return '';
}
const isSelected = (date) => currentDate.some((item) => compareDay(item, date) === 0);
if (isSelected(day)) {
const prevDay = getPrevDay(day);
const nextDay = getNextDay(day);
const prevSelected = isSelected(prevDay);
const nextSelected = isSelected(nextDay);
if (prevSelected && nextSelected) {
return 'multiple-middle';
}
if (prevSelected) {
return 'end';
}
return nextSelected ? 'start' : 'multiple-selected';
}
return '';
},
getRangeDayType(day) {
const { currentDate, allowSameDay } = this.data;
if (!Array.isArray(currentDate)) {
return '';
}
const [startDay, endDay] = currentDate;
if (!startDay) {
return '';
}
const compareToStart = compareDay(day, startDay);
if (!endDay) {
return compareToStart === 0 ? 'start' : '';
}
const compareToEnd = compareDay(day, endDay);
if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) {
return 'start-end';
}
if (compareToStart === 0) {
return 'start';
}
if (compareToEnd === 0) {
return 'end';
}
if (compareToStart > 0 && compareToEnd < 0) {
return 'middle';
}
return '';
},
getDayType(day) {
const { type, minDate, maxDate, currentDate } = this.data;
if (compareDay(day, minDate) < 0 || compareDay(day, maxDate) > 0) {
return 'disabled';
}
if (type === 'single') {
return compareDay(day, currentDate) === 0 ? 'selected' : '';
}
if (type === 'multiple') {
return this.getMultipleDayType(day);
}
/* istanbul ignore else */
if (type === 'range') {
return this.getRangeDayType(day);
}
return '';
},
getBottomInfo(type) {
if (this.data.type === 'range') {
if (type === 'start') {
return '开始';
}
if (type === 'end') {
return '结束';
}
if (type === 'start-end') {
return '开始/结束';
}
}
},
},
});
================================================
FILE: dist/calendar/components/month/index.json
================================================
{
"component": true
}
================================================
FILE: dist/calendar/components/month/index.wxml
================================================
<wxs src="./index.wxs" module="computed"></wxs>
<wxs src="../../../wxs/utils.wxs" module="utils" />
<view class="van-calendar__month" style="{{ computed.getMonthStyle(visible, date, rowHeight) }}">
<view wx:if="{{ showMonthTitle }}" class="van-calendar__month-title">
{{ computed.formatMonthTitle(date) }}
</view>
<view wx:if="{{ visible }}" class="van-calendar__days">
<view wx:if="{{ showMark }}" class="van-calendar__month-mark">
{{ computed.getMark(date) }}
</view>
<view
wx:for="{{ days }}"
wx:key="index"
style="{{ computed.getDayStyle(item.type, index, date, rowHeight, color, firstDayOfWeek) }}"
class="{{ utils.bem('calendar__day', [item.type]) }} {{ item.className }}"
data-index="{{ index }}"
bindtap="onClick"
>
<view wx:if="{{ item.type === 'selected' }}" class="van-calendar__selected-day" style="width: {{ rowHeight }}px; height: {{ rowHeight }}px; background: {{ color }}">
<view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
{{ item.text }}
<view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
{{ item.bottomInfo }}
</view>
</view>
<view wx:else>
<view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
{{ item.text }}
<view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
{{ item.bottomInfo }}
</view>
</view>
</view>
</view>
</view>
================================================
FILE: dist/calendar/components/month/index.wxs
================================================
/* eslint-disable */
var utils = require('../../utils.wxs');
function getMark(date) {
return getDate(date).getMonth() + 1;
}
var ROW_HEIGHT = 64;
function getDayStyle(type, index, date, rowHeight, color, firstDayOfWeek) {
var style = [];
var current = getDate(date).getDay() || 7;
var offset = current < firstDayOfWeek ? (7 - firstDayOfWeek + current) :
current === 7 && firstDayOfWeek === 0 ? 0 :
(current - firstDayOfWeek);
if (index === 0) {
style.push(['margin-left', (100 * offset) / 7 + '%']);
}
if (rowHeight !== ROW_HEIGHT) {
style.push(['height', rowHeight + 'px']);
}
if (color) {
if (
type === 'start' ||
type === 'end' ||
type === 'start-end' ||
type === 'multiple-selected' ||
type === 'multiple-middle'
) {
style.push(['background', color]);
} else if (type === 'middle') {
style.push(['color', color]);
}
}
return style
.map(function(item) {
return item.join(':');
})
.join(';');
}
function formatMonthTitle(date) {
date = getDate(date);
return date.getFullYear() + '年' + (date.getMonth() + 1) + '月';
}
function getMonthStyle(visible, date, rowHeight) {
if (!visible) {
date = getDate(date);
var totalDay = utils.getMonthEndDay(
date.getFullYear(),
date.getMonth() + 1
);
var offset = getDate(date).getDay();
var padding = Math.ceil((totalDay + offset) / 7) * rowHeight;
return 'padding-bottom:' + padding + 'px';
}
}
module.exports = {
getMark: getMark,
getDayStyle: getDayStyle,
formatMonthTitle: formatMonthTitle,
getMonthStyle: getMonthStyle
};
================================================
FILE: dist/calendar/components/month/index.wxss
================================================
@import '../../../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:100%}.van-calendar__month-title{font-size:var(--calendar-month-title-font-size,14px);font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__days{display:flex;flex-wrap:wrap;position:relative;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:var(--calendar-month-mark-font-size,160px);left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:0}.van-calendar__day,.van-calendar__selected-day{align-items:center;display:flex;justify-content:center;text-align:center}.van-calendar__day{font-size:var(--calendar-day-font-size,16px);height:var(--calendar-day-height,64px);position:relative;width:14.285%}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{background-color:var(--calendar-range-edge-background-color,#ee0a24);color:var(--calendar-range-edge-color,#fff)}.van-calendar__day--start{border-radius:4px 0 0 4px}.van-calendar__day--end{border-radius:0 4px 4px 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px}.van-calendar__day--middle{color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{background-color:currentColor;bottom:0;content:"";left:0;opacity:var(--calendar-range-middle-background-opacity,.1);position:absolute;right:0;top:0}.van-calendar__day--disabled{color:var(--calendar-day-disabled-color,#c8c9cc);cursor:default}.van-calendar__bottom-info,.van-calendar__top-info{font-size:var(--calendar-info-font-size,10px);left:0;line-height:var(--calendar-info-line-height,14px);position:absolute;right:0}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;color:var(--calendar-selected-day-color,#fff);height:var(--calendar-selected-day-size,54px);width:var(--calendar-selected-day-size,54px)}
================================================
FILE: dist/calendar/index.d.ts
================================================
export {};
================================================
FILE: dist/calendar/index.js
================================================
import { VantComponent } from '../common/component';
import { ROW_HEIGHT, getPrevDay, getNextDay, getToday, compareDay, copyDates, calcDateNum, formatMonthTitle, compareMonth, getMonths, getDayByOffset, } from './utils';
import Toast from '../toast/toast';
import { requestAnimationFrame } from '../common/utils';
const initialMinDate = getToday().getTime();
const initialMaxDate = (() => {
const now = getToday();
return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate()).getTime();
})();
const getTime = (date) => date instanceof Date ? date.getTime() : date;
VantComponent({
props: {
title: {
type: String,
value: '日期选择',
},
color: String,
show: {
type: Boolean,
observer(val) {
if (val) {
this.initRect();
this.scrollIntoView();
}
},
},
formatter: null,
confirmText: {
type: String,
value: '确定',
},
confirmDisabledText: {
type: String,
value: '确定',
},
rangePrompt: String,
showRangePrompt: {
type: Boolean,
value: true,
},
defaultDate: {
type: null,
value: getToday().getTime(),
observer(val) {
this.setData({ currentDate: val });
this.scrollIntoView();
},
},
allowSameDay: Boolean,
type: {
type: String,
value: 'single',
observer: 'reset',
},
minDate: {
type: Number,
value: initialMinDate,
},
maxDate: {
type: Number,
value: initialMaxDate,
},
position: {
type: String,
value: 'bottom',
},
rowHeight: {
type: null,
value: ROW_HEIGHT,
},
round: {
type: Boolean,
value: true,
},
poppable: {
type: Boolean,
value: true,
},
showMark: {
type: Boolean,
value: true,
},
showTitle: {
type: Boolean,
value: true,
},
showConfirm: {
type: Boolean,
value: true,
},
showSubtitle: {
type: Boolean,
value: true,
},
safeAreaInsetBottom: {
type: Boolean,
value: true,
},
closeOnClickOverlay: {
type: Boolean,
value: true,
},
maxRange: {
type: null,
value: null,
},
minRange: {
type: Number,
value: 1,
},
firstDayOfWeek: {
type: Number,
value: 0,
},
readonly: Boolean,
rootPortal: {
type: Boolean,
value: false,
},
},
data: {
subtitle: '',
currentDate: null,
scrollIntoView: '',
},
watch: {
minDate() {
this.initRect();
},
maxDate() {
this.initRect();
},
},
created() {
this.setData({
currentDate: this.getInitialDate(this.data.defaultDate),
});
},
mounted() {
if (this.data.show || !this.data.poppable) {
this.initRect();
this.scrollIntoView();
}
},
methods: {
reset() {
this.setData({ currentDate: this.getInitialDate(this.data.defaultDate) });
this.scrollIntoView();
},
initRect() {
if (this.contentObserver != null) {
this.contentObserver.disconnect();
}
const contentObserver = this.createIntersectionObserver({
thresholds: [0, 0.1, 0.9, 1],
observeAll: true,
});
this.contentObserver = contentObserver;
contentObserver.relativeTo('.van-calendar__body');
contentObserver.observe('.month', (res) => {
if (res.boundingClientRect.top <= res.relativeRect.top) {
// @ts-ignore
this.setData({ subtitle: formatMonthTitle(res.dataset.date) });
}
});
},
limitDateRange(date, minDate = null, maxDate = null) {
minDate = minDate || this.data.minDate;
maxDate = maxDate || this.data.maxDate;
if (compareDay(date, minDate) === -1) {
return minDate;
}
if (compareDay(date, maxDate) === 1) {
return maxDate;
}
return date;
},
getInitialDate(defaultDate = null) {
const { type, minDate, maxDate, allowSameDay } = this.data;
if (!defaultDate)
return [];
const now = getToday().getTime();
if (type === 'range') {
if (!Array.isArray(defaultDate)) {
defaultDate = [];
}
const [startDay, endDay] = defaultDate || [];
const startDate = getTime(startDay || now);
const start = this.limitDateRange(startDate, minDate, allowSameDay ? startDate : getPrevDay(new Date(maxDate)).getTime());
const date = getTime(endDay || now);
const end = this.limitDateRange(date, allowSameDay ? date : getNextDay(new Date(minDate)).getTime());
return [start, end];
}
if (type === 'multiple') {
if (Array.isArray(defaultDate)) {
return defaultDate.map((date) => this.limitDateRange(date));
}
return [this.limitDateRange(now)];
}
if (!defaultDate || Array.isArray(defaultDate)) {
defaultDate = now;
}
return this.limitDateRange(defaultDate);
},
scrollIntoView() {
requestAnimationFrame(() => {
const { currentDate, type, show, poppable, minDate, maxDate } = this.data;
if (!currentDate)
return;
// @ts-ignore
const targetDate = type === 'single' ? currentDate : currentDate[0];
const displayed = show || !poppable;
if (!targetDate || !displayed) {
return;
}
const months = getMonths(minDate, maxDate);
months.some((month, index) => {
if (compareMonth(month, targetDate) === 0) {
this.setData({ scrollIntoView: `month${index}` });
return true;
}
return false;
});
});
},
onOpen() {
this.$emit('open');
},
onOpened() {
this.$emit('opened');
},
onClose() {
this.$emit('close');
},
onClosed() {
this.$emit('closed');
},
onClickDay(event) {
if (this.data.readonly) {
return;
}
let { date } = event.detail;
const { type, currentDate, allowSameDay } = this.data;
if (type === 'range') {
// @ts-ignore
const [startDay, endDay] = currentDate;
if (startDay && !endDay) {
const compareToStart = compareDay(date, startDay);
if (compareToStart === 1) {
const { days } = this.selectComponent('.month').data;
days.some((day, index) => {
const isDisabled = day.type === 'disabled' &&
getTime(startDay) < getTime(day.date) &&
getTime(day.date) < getTime(date);
if (isDisabled) {
({ date } = days[index - 1]);
}
return isDisabled;
});
this.select([startDay, date], true);
}
else if (compareToStart === -1) {
this.select([date, null]);
}
else if (allowSameDay) {
this.select([date, date], true);
}
}
else {
this.select([date, null]);
}
}
else if (type === 'multiple') {
let selectedIndex;
// @ts-ignore
const selected = currentDate.some((dateItem, index) => {
const equal = compareDay(dateItem, date) === 0;
if (equal) {
selectedIndex = index;
}
return equal;
});
if (selected) {
// @ts-ignore
const cancelDate = currentDate.splice(selectedIndex, 1);
this.setData({ currentDate });
this.unselect(cancelDate);
}
else {
// @ts-ignore
this.select([...currentDate, date]);
}
}
else {
this.select(date, true);
}
},
unselect(dateArray) {
const date = dateArray[0];
if (date) {
this.$emit('unselect', copyDates(date));
}
},
select(date, complete) {
if (complete && this.data.type === 'range') {
const valid = this.checkRange(date);
if (!valid) {
// auto selected to max range if showConfirm
if (this.data.showConfirm) {
this.emit([
date[0],
getDayByOffset(date[0], this.data.maxRange - 1),
]);
}
else {
this.emit(date);
}
return;
}
}
this.emit(date);
if (complete && !this.data.showConfirm) {
this.onConfirm();
}
},
emit(date) {
this.setData({
currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date),
});
this.$emit('select', copyDates(date));
},
checkRange(date) {
const { maxRange, rangePrompt, showRangePrompt } = this.data;
if (maxRange && calcDateNum(date) > maxRange) {
if (showRangePrompt) {
Toast({
context: this,
message: rangePrompt || `选择天数不能超过 ${maxRange} 天`,
});
}
this.$emit('over-range');
return false;
}
return true;
},
onConfirm() {
if (this.data.type === 'range' &&
!this.checkRange(this.data.currentDate)) {
return;
}
wx.nextTick(() => {
// @ts-ignore
this.$emit('confirm', copyDates(this.data.currentDate));
});
},
onClickSubtitle(event) {
this.$emit('click-subtitle', event);
},
},
});
================================================
FILE: dist/calendar/index.json
================================================
{
"component": true,
"usingComponents": {
"header": "./components/header/index",
"month": "./components/month/index",
"van-button": "../button/index",
"van-popup": "../popup/index",
"van-toast": "../toast/index"
}
}
================================================
FILE: dist/calendar/index.wxml
================================================
<wxs src="./index.wxs" module="computed" />
<wxs src="../wxs/utils.wxs" module="utils" />
<import src="./calendar.wxml" />
<van-popup
wx:if="{{ poppable }}"
custom-class="van-calendar__popup--{{ position }}"
close-icon-class="van-calendar__close-icon"
show="{{ show }}"
round="{{ round }}"
position="{{ position }}"
closeable="{{ showTitle || showSubtitle }}"
close-on-click-overlay="{{ closeOnClickOverlay }}"
safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
root-portal="{{ rootPortal }}"
bind:enter="onOpen"
bind:close="onClose"
bind:after-enter="onOpened"
bind:after-leave="onClosed"
>
<include src="./calendar.wxml" />
</van-popup>
<include wx:else src="./calendar.wxml" />
<van-toast id="van-toast" />
================================================
FILE: dist/calendar/index.wxs
================================================
/* eslint-disable */
var utils = require('./utils.wxs');
function getMonths(minDate, maxDate) {
var months = [];
var cursor = getDate(minDate);
cursor.setDate(1);
do {
months.push(cursor.getTime());
cursor.setMonth(cursor.getMonth() + 1);
} while (utils.compareMonth(cursor, getDate(maxDate)) !== 1);
return months;
}
function getButtonDisabled(type, currentDate, minRange) {
if (currentDate == null) {
return true;
}
if (type === 'range') {
return !currentDate[0] || !currentDate[1];
}
if (type === 'multiple') {
return currentDate.length < minRange;
}
return !currentDate;
}
module.exports = {
getMonths: getMonths,
getButtonDisabled: getButtonDisabled
};
================================================
FILE: dist/calendar/index.wxss
================================================
@import '../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:var(--calendar-height,100%)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:var(--calendar-popup-height,90%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.van-calendar__footer{flex-shrink:0;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:var(--calendar-confirm-button-height,36px)!important;line-height:var(--calendar-confirm-button-line-height,34px)!important;margin:var(--calendar-confirm-button-margin,7px 0)!important}
================================================
FILE: dist/calendar/utils.d.ts
================================================
export declare const ROW_HEIGHT = 64;
export declare function formatMonthTitle(date: Date): string;
export declare function compareMonth(date1: Date | number, date2: Date | number): 0 | 1 | -1;
export declare function compareDay(day1: Date | number, day2: Date | number): 0 | 1 | -1;
export declare function getDayByOffset(date: Date, offset: number): Date;
export declare function getPrevDay(date: Date): Date;
export declare function getNextDay(date: Date): Date;
export declare function getToday(): Date;
export declare function calcDateNum(date: [Date, Date]): number;
export declare function copyDates(dates: Date | Date[]): Date | Date[];
export declare function getMonthEndDay(year: number, month: number): number;
export declare function getMonths(minDate: number, maxDate: number): number[];
================================================
FILE: dist/calendar/utils.js
================================================
export const ROW_HEIGHT = 64;
export function formatMonthTitle(date) {
if (!(date instanceof Date)) {
date = new Date(date);
}
return `${date.getFullYear()}年${date.getMonth() + 1}月`;
}
export function compareMonth(date1, date2) {
if (!(date1 instanceof Date)) {
date1 = new Date(date1);
}
if (!(date2 instanceof Date)) {
date2 = new Date(date2);
}
const year1 = date1.getFullYear();
const year2 = date2.getFullYear();
const month1 = date1.getMonth();
const month2 = date2.getMonth();
if (year1 === year2) {
return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
}
return year1 > year2 ? 1 : -1;
}
export function compareDay(day1, day2) {
if (!(day1 instanceof Date)) {
day1 = new Date(day1);
}
if (!(day2 instanceof Date)) {
day2 = new Date(day2);
}
const compareMonthResult = compareMonth(day1, day2);
if (compareMonthResult === 0) {
const date1 = day1.getDate();
const date2 = day2.getDate();
return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
}
return compareMonthResult;
}
export function getDayByOffset(date, offset) {
date = new Date(date);
date.setDate(date.getDate() + offset);
return date;
}
export function getPrevDay(date) {
return getDayByOffset(date, -1);
}
export function getNextDay(date) {
return getDayByOffset(date, 1);
}
export function getToday() {
const today = new Date();
today.setHours(0, 0, 0, 0);
return today;
}
export function calcDateNum(date) {
const day1 = new Date(date[0]).getTime();
const day2 = new Date(date[1]).getTime();
return (day2 - day1) / (1000 * 60 * 60 * 24) + 1;
}
export function copyDates(dates) {
if (Array.isArray(dates)) {
return dates.map((date) => {
if (date === null) {
return date;
}
return new Date(date);
});
}
return new Date(dates);
}
export function getMonthEndDay(year, month) {
return 32 - new Date(year, month - 1, 32).getDate();
}
export function getMonths(minDate, maxDate) {
const months = [];
const cursor = new Date(minDate);
cursor.setDate(1);
do {
months.push(cursor.getTime());
cursor.setMonth(cursor.getMonth() + 1);
} while (compareMonth(cursor, maxDate) !== 1);
return months;
}
================================================
FILE: dist/calendar/utils.wxs
================================================
/* eslint-disable */
function getMonthEndDay(year, month) {
return 32 - getDate(year, month - 1, 32).getDate();
}
function compareMonth(date1, date2) {
date1 = getDate(date1);
date2 = getDate(date2);
var year1 = date1.getFullYear();
var year2 = date2.getFullYear();
var month1 = date1.getMonth();
var month2 = date2.getMonth();
if (year1 === year2) {
return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
}
return year1 > year2 ? 1 : -1;
}
module.exports = {
getMonthEndDay: getMonthEndDay,
compareMonth: compareMonth
};
================================================
FILE: dist/card/index.d.ts
================================================
export {};
================================================
FILE: dist/card/index.js
================================================
import { link } from '../mixins/link';
import { VantComponent } from '../common/component';
VantComponent({
classes: [
'num-class',
'desc-class',
'thumb-class',
'title-class',
'price-class',
'origin-price-class',
],
mixins: [link],
props: {
tag: String,
num: String,
desc: String,
thumb: String,
title: String,
price: {
type: String,
observer: 'updatePrice',
},
centered: Boolean,
lazyLoad: Boolean,
thumbLink: String,
originPrice: String,
thumbMode: {
type: String,
value: 'aspectFit',
},
currency: {
type: String,
value: '¥',
},
},
methods: {
updatePrice() {
const { price } = this.data;
const priceArr = price.toString().split('.');
this.setData({
integerStr: priceArr[0],
decimalStr: priceArr[1] ? `.${priceArr[1]}` : '',
});
},
onClickThumb() {
this.jumpLink('thumbLink');
},
},
});
================================================
FILE: dist/card/index.json
================================================
{
"component": true,
"usingComponents": {
"van-tag": "../tag/index"
}
}
================================================
FILE: dist/card/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="custom-class van-card">
<view class="{{ utils.bem('card__header', { center: centered }) }}">
<view class="van-card__thumb" bind:tap="onClickThumb">
<image
wx:if="{{ thumb }}"
src="{{ thumb }}"
mode="{{ thumbMode }}"
lazy-load="{{ lazyLoad }}"
class="van-card__img thumb-class"
/>
<slot wx:else name="thumb" />
<van-tag
wx:if="{{ tag }}"
mark
type="danger"
custom-class="van-card__tag"
>
{{ tag }}
</van-tag>
<slot wx:else name="tag" />
</view>
<view class="van-card__content {{ utils.bem('card__content', { center: centered }) }}">
<view>
<view wx:if="{{ title }}" class="van-card__title title-class">{{ title }}</view>
<slot wx:else name="title" />
<view wx:if="{{ desc }}" class="van-card__desc desc-class">{{ desc }}</view>
<slot wx:else name="desc" />
<slot name="tags" />
</view>
<view class="van-card__bottom">
<slot name="price-top" />
<view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">
<text>{{ currency }}</text>
<text class="van-card__price-integer">{{ integerStr }}</text>
<text class="van-card__price-decimal">{{ decimalStr }}</text>
</view>
<slot wx:else name="price" />
<view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
<slot wx:else name="origin-price" />
<view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
<slot wx:else name="num" />
<slot name="bottom" />
</view>
</view>
</view>
<view class="van-card__footer">
<slot name="footer" />
</view>
</view>
================================================
FILE: dist/card/index.wxss
================================================
@import '../common/index.wxss';.van-card{background-color:var(--card-background-color,#fafafa);box-sizing:border-box;color:var(--card-text-color,#323233);font-size:var(--card-font-size,12px);padding:var(--card-padding,8px 16px);position:relative}.van-card__header{display:flex}.van-card__header--center{align-items:center;justify-content:center}.van-card__thumb{flex:none;height:var(--card-thumb-size,88px);margin-right:var(--padding-xs,8px);position:relative;width:var(--card-thumb-size,88px)}.van-card__thumb:empty{display:none}.van-card__img{border-radius:8px;height:100%;width:100%}.van-card__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:var(--card-thumb-size,88px);min-width:0;position:relative}.van-card__content--center{justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:var(--card-title-line-height,16px)}.van-card__desc{color:var(--card-desc-color,#646566);line-height:var(--card-desc-line-height,20px)}.van-card__bottom{line-height:20px}.van-card__price{color:var(--card-price-color,#ee0a24);display:inline-block;font-size:var(--card-price-font-size,12px);font-weight:700}.van-card__price-integer{font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{color:var(--card-origin-price-color,#646566);display:inline-block;font-size:var(--card-origin-price-font-size,10px);margin-left:5px;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{left:0;position:absolute!important;top:2px}.van-card__footer{flex:none;text-align:right;width:100%}
================================================
FILE: dist/cascader/index.d.ts
================================================
export {};
================================================
FILE: dist/cascader/index.js
================================================
import { VantComponent } from '../common/component';
var FieldName;
(function (FieldName) {
FieldName["TEXT"] = "text";
FieldName["VALUE"] = "value";
FieldName["CHILDREN"] = "children";
})(FieldName || (FieldName = {}));
const defaultFieldNames = {
text: FieldName.TEXT,
value: FieldName.VALUE,
children: FieldName.CHILDREN,
};
VantComponent({
props: {
title: String,
value: {
type: String,
},
placeholder: {
type: String,
value: '请选择',
},
activeColor: {
type: String,
value: '#1989fa',
},
options: {
type: Array,
value: [],
},
swipeable: {
type: Boolean,
value: false,
},
closeable: {
type: Boolean,
value: true,
},
ellipsis: {
type: Boolean,
value: true,
},
showHeader: {
type: Boolean,
value: true,
},
closeIcon: {
type: String,
value: 'cross',
},
fieldNames: {
type: Object,
value: defaultFieldNames,
observer: 'updateFieldNames',
},
useTitleSlot: Boolean,
},
data: {
tabs: [],
activeTab: 0,
textKey: FieldName.TEXT,
valueKey: FieldName.VALUE,
childrenKey: FieldName.CHILDREN,
innerValue: '',
},
watch: {
options() {
this.updateTabs();
},
value(newVal) {
this.updateValue(newVal);
},
},
created() {
this.updateTabs();
},
methods: {
updateValue(val) {
if (val !== undefined) {
const values = this.data.tabs.map((tab) => tab.selected && tab.selected[this.data.valueKey]);
if (values.indexOf(val) > -1) {
return;
}
}
this.innerValue = val;
this.updateTabs();
},
updateFieldNames() {
const { text = 'text', value = 'value', children = 'children', } = this.data.fieldNames || defaultFieldNames;
this.setData({
textKey: text,
valueKey: value,
childrenKey: children,
});
},
getSelectedOptionsByValue(options, value) {
for (let i = 0; i < options.length; i++) {
const option = options[i];
if (option[this.data.valueKey] === value) {
return [option];
}
if (option[this.data.childrenKey]) {
const selectedOptions = this.getSelectedOptionsByValue(option[this.data.childrenKey], value);
if (selectedOptions) {
return [option, ...selectedOptions];
}
}
}
},
updateTabs() {
const { options } = this.data;
const { innerValue } = this;
if (!options.length) {
return;
}
if (innerValue !== undefined) {
const selectedOptions = this.getSelectedOptionsByValue(options, innerValue);
if (selectedOptions) {
let optionsCursor = options;
const tabs = selectedOptions.map((option) => {
const tab = {
options: optionsCursor,
selected: option,
};
const next = optionsCursor.find((item) => item[this.data.valueKey] === option[this.data.valueKey]);
if (next) {
optionsCursor = next[this.data.childrenKey];
}
return tab;
});
if (optionsCursor) {
tabs.push({
options: optionsCursor,
selected: null,
});
}
this.setData({
tabs,
});
wx.nextTick(() => {
this.setData({
activeTab: tabs.length - 1,
});
});
return;
}
}
this.setData({
tabs: [
{
options,
selected: null,
},
],
activeTab: 0,
});
},
onClose() {
this.$emit('close');
},
onClickTab(e) {
const { index: tabIndex, title } = e.detail;
this.$emit('click-tab', { title, tabIndex });
this.setData({
activeTab: tabIndex,
});
},
// 选中
onSelect(e) {
const { option, tabIndex } = e.currentTarget.dataset;
if (option && option.disabled) {
return;
}
const { valueKey, childrenKey } = this.data;
let { tabs } = this.data;
tabs[tabIndex].selected = option;
if (tabs.length > tabIndex + 1) {
tabs = tabs.slice(0, tabIndex + 1);
}
if (option[childrenKey]) {
const nextTab = {
options: option[childrenKey],
selected: null,
};
if (tabs[tabIndex + 1]) {
tabs[tabIndex + 1] = nextTab;
}
else {
tabs.push(nextTab);
}
wx.nextTick(() => {
this.setData({
activeTab: tabIndex + 1,
});
});
}
this.setData({
tabs,
});
const selectedOptions = tabs.map((tab) => tab.selected).filter(Boolean);
const value = option[valueKey];
const params = {
value,
tabIndex,
selectedOptions,
};
this.innerValue = value;
this.$emit('change', params);
if (!option[childrenKey]) {
this.$emit('finish', params);
}
},
},
});
================================================
FILE: dist/cascader/index.json
================================================
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index",
"van-tab": "../tab/index",
"van-tabs": "../tabs/index"
}
}
================================================
FILE: dist/cascader/index.wxml
================================================
<wxs src="./index.wxs" module="utils" />
<view wx:if="{{ showHeader }}" class="van-cascader__header">
<slot name="title" wx:if="{{ useTitleSlot }}"></slot>
<text class="van-cascader__title" wx:else>{{ title }}</text>
<van-icon
wx:if="{{ closeable }}"
name="{{ closeIcon }}"
class="van-cascader__close-icon"
bind:tap="onClose"
/>
</view>
<van-tabs
active="{{ activeTab }}"
custom-class="van-cascader__tabs"
wrap-class="van-cascader__tabs-wrap"
tab-class="van-cascader__tab"
color="{{ activeColor }}"
border="{{ false }}"
swipeable="{{ swipeable }}"
ellipsis="{{ ellipsis }}"
bind:click="onClickTab"
>
<van-tab
wx:for="{{ tabs }}"
wx:for-item="tab"
wx:for-index="tabIndex"
wx:key="tabIndex"
title="{{ tab.selected ? tab.selected[textKey] : placeholder }}"
style="width: 100%;"
title-style="{{ !tab.selected ? 'color: #969799;font-weight:normal;' : '' }}"
>
<!-- 暂不支持 -->
<!-- <slot name="options-top"></slot> -->
<view class="van-cascader__options">
<view
wx:for="{{ tab.options }}"
wx:for-item="option"
wx:key="index"
class="{{ option.className }} {{ utils.optionClass(tab, valueKey, option) }}"
style="{{ utils.optionStyle({ tab, valueKey, option, activeColor }) }}"
data-option="{{ option }}"
data-tab-index="{{ tabIndex }}"
bind:tap="onSelect"
>
<text>{{ option[textKey] }}</text>
<van-icon wx:if="{{ utils.isSelected(tab, valueKey, option) }}" name="success" size="18" />
</view>
</view>
<!-- 暂不支持 -->
<!-- <slot name="options-bottom"></slot> -->
</van-tab>
</van-tabs>
================================================
FILE: dist/cascader/index.wxs
================================================
var utils = require('../wxs/utils.wxs');
var style = require('../wxs/style.wxs');
function isSelected(tab, valueKey, option) {
return tab.selected && tab.selected[valueKey] === option[valueKey]
}
function optionClass(tab, valueKey, option) {
return utils.bem('cascader__option', { selected: isSelected(tab, valueKey, option), disabled: option.disabled })
}
function optionStyle(data) {
var color = data.option.color || (isSelected(data.tab, data.valueKey, data.option) ? data.activeColor : undefined);
return style({
color
});
}
module.exports = {
isSelected: isSelected,
optionClass: optionClass,
optionStyle: optionStyle,
};
================================================
FILE: dist/cascader/index.wxss
================================================
@import '../common/index.wxss';.van-cascader__header{align-items:center;display:flex;height:48px;justify-content:space-between;padding:0 16px}.van-cascader__title{font-size:16px;font-weight:600;line-height:20px}.van-cascader__close-icon{color:#c8c9cc;font-size:22px;height:22px}.van-cascader__tabs-wrap{height:48px!important;padding:0 8px}.van-cascader__tab{color:#323233!important;flex:none!important;font-weight:600!important;padding:0 8px!important}.van-cascader__tab--unselected{color:#969799!important;font-weight:400!important}.van-cascader__option{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;line-height:20px;padding:10px 16px}.van-cascader__option:active{background-color:#f2f3f5}.van-cascader__option--selected{color:#1989fa;font-weight:600}.van-cascader__option--disabled{color:#c8c9cc;cursor:not-allowed}.van-cascader__option--disabled:active{background-color:initial}.van-cascader__options{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:384px;overflow-y:auto;padding-top:6px}
================================================
FILE: dist/cell/index.d.ts
================================================
export {};
================================================
FILE: dist/cell/index.js
================================================
import { link } from '../mixins/link';
import { VantComponent } from '../common/component';
VantComponent({
classes: [
'title-class',
'label-class',
'value-class',
'right-icon-class',
'hover-class',
],
mixins: [link],
props: {
title: null,
value: null,
icon: String,
size: String,
label: String,
center: Boolean,
isLink: Boolean,
required: Boolean,
clickable: Boolean,
titleWidth: String,
customStyle: String,
arrowDirection: String,
useLabelSlot: Boolean,
border: {
type: Boolean,
value: true,
},
titleStyle: String,
},
methods: {
onClick(event) {
this.$emit('click', event.detail);
this.jumpLink();
},
},
});
================================================
FILE: dist/cell/index.json
================================================
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index"
}
}
================================================
FILE: dist/cell/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<wxs src="./index.wxs" module="computed" />
<view
class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
hover-class="van-cell--hover hover-class"
hover-stay-time="70"
style="{{ customStyle }}"
bind:tap="onClick"
>
<van-icon
wx:if="{{ icon }}"
name="{{ icon }}"
class="van-cell__left-icon-wrap"
custom-class="van-cell__left-icon"
/>
<slot wx:else name="icon" />
<view
style="{{ computed.titleStyle({ titleWidth, titleStyle }) }}"
class="van-cell__title title-class"
>
<block wx:if="{{ title }}">{{ title }}</block>
<slot wx:else name="title" />
<view wx:if="{{ label || useLabelSlot }}" class="van-cell__label label-class">
<slot wx:if="{{ useLabelSlot }}" name="label" />
<block wx:elif="{{ label }}">{{ label }}</block>
</view>
</view>
<view class="van-cell__value value-class">
<block wx:if="{{ value || value === 0 }}">{{ value }}</block>
<slot wx:else />
</view>
<van-icon
wx:if="{{ isLink }}"
name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
class="van-cell__right-icon-wrap right-icon-class"
custom-class="van-cell__right-icon"
/>
<slot wx:else name="right-icon" />
<slot name="extra" />
</view>
================================================
FILE: dist/cell/index.wxs
================================================
/* eslint-disable */
var style = require('../wxs/style.wxs');
var addUnit = require('../wxs/add-unit.wxs');
function titleStyle(data) {
return style([
{
'max-width': addUnit(data.titleWidth),
'min-width': addUnit(data.titleWidth),
},
data.titleStyle,
]);
}
module.exports = {
titleStyle: titleStyle,
};
================================================
FILE: dist/cell/index.wxss
================================================
@import '../common/index.wxss';.van-cell{background-color:var(--cell-background-color,#fff);box-sizing:border-box;color:var(--cell-text-color,#323233);display:flex;font-size:var(--cell-font-size,14px);line-height:var(--cell-line-height,24px);padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);position:relative;width:100%}.van-cell:after{border-bottom:1px solid #ebedf0;bottom:0;box-sizing:border-box;content:" ";left:16px;pointer-events:none;position:absolute;right:16px;transform:scaleY(.5);transform-origin:center}.van-cell--borderless:after{display:none}.van-cell-group{background-color:var(--cell-background-color,#fff)}.van-cell__label{color:var(--cell-label-color,#969799);font-size:var(--cell-label-font-size,12px);line-height:var(--cell-label-line-height,18px);margin-top:var(--cell-label-margin-top,3px)}.van-cell__value{color:var(--cell-value-color,#969799);overflow:hidden;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{align-items:center;display:flex;font-size:var(--cell-icon-size,16px);height:var(--cell-line-height,24px)}.van-cell__left-icon-wrap{margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{color:var(--cell-right-icon-color,#969799);margin-left:var(--padding-base,4px)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{color:var(--cell-required-color,#ee0a24);content:"*";font-size:var(--cell-font-size,14px);left:var(--padding-xs,8px);position:absolute}.van-cell--center{align-items:center}.van-cell--large{padding-bottom:var(--cell-large-vertical-padding,12px);padding-top:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:var(--cell-large-label-font-size,14px)}
================================================
FILE: dist/cell-group/index.d.ts
================================================
export {};
================================================
FILE: dist/cell-group/index.js
================================================
import { VantComponent } from '../common/component';
VantComponent({
props: {
title: String,
border: {
type: Boolean,
value: true,
},
inset: Boolean,
},
});
================================================
FILE: dist/cell-group/index.json
================================================
{
"component": true
}
================================================
FILE: dist/cell-group/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<view
wx:if="{{ title }}"
class="{{ utils.bem('cell-group__title', { inset }) }}"
>
{{ title }}
</view>
<view class="custom-class {{ utils.bem('cell-group', { inset }) }} {{ border ? 'van-hairline--top-bottom' : '' }}">
<slot />
</view>
================================================
FILE: dist/cell-group/index.wxss
================================================
@import '../common/index.wxss';.van-cell-group--inset{border-radius:var(--cell-group-inset-border-radius,8px);margin:var(--cell-group-inset-padding,0 16px);overflow:hidden}.van-cell-group__title{color:var(--cell-group-title-color,#969799);font-size:var(--cell-group-title-font-size,14px);line-height:var(--cell-group-title-line-height,16px);padding:var(--cell-group-title-padding,16px 16px 8px)}.van-cell-group__title--inset{padding:var(--cell-group-inset-title-padding,16px 16px 8px 32px)}
================================================
FILE: dist/checkbox/index.d.ts
================================================
export {};
================================================
FILE: dist/checkbox/index.js
================================================
import { useParent } from '../common/relation';
import { VantComponent } from '../common/component';
function emit(target, value) {
target.$emit('input', value);
target.$emit('change', value);
}
VantComponent({
field: true,
relation: useParent('checkbox-group'),
classes: ['icon-class', 'label-class'],
props: {
value: Boolean,
disabled: Boolean,
useIconSlot: Boolean,
checkedColor: String,
labelPosition: {
type: String,
value: 'right',
},
labelDisabled: Boolean,
shape: {
type: String,
value: 'round',
},
iconSize: {
type: null,
value: 20,
},
},
data: {
parentDisabled: false,
direction: 'vertical',
},
methods: {
emitChange(value) {
if (this.parent) {
this.setParentValue(this.parent, value);
}
else {
emit(this, value);
}
},
toggle() {
const { parentDisabled, disabled, value } = this.data;
if (!disabled && !parentDisabled) {
this.emitChange(!value);
}
},
onClickLabel() {
const { labelDisabled, parentDisabled, disabled, value } = this.data;
if (!disabled && !labelDisabled && !parentDisabled) {
this.emitChange(!value);
}
},
setParentValue(parent, value) {
const parentValue = parent.data.value.slice();
const { name } = this.data;
const { max } = parent.data;
if (value) {
if (max && parentValue.length >= max) {
return;
}
if (parentValue.indexOf(name) === -1) {
parentValue.push(name);
emit(parent, parentValue);
}
}
else {
const index = parentValue.indexOf(name);
if (index !== -1) {
parentValue.splice(index, 1);
emit(parent, parentValue);
}
}
},
},
});
================================================
FILE: dist/checkbox/index.json
================================================
{
"component": true,
"usingComponents": {
"van-icon": "../icon/index"
}
}
================================================
FILE: dist/checkbox/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<wxs src="./index.wxs" module="computed" />
<view class="{{ utils.bem('checkbox', [{ horizontal: direction === 'horizontal' }]) }} custom-class">
<view
wx:if="{{ labelPosition === 'left' }}"
class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
bindtap="onClickLabel"
>
<slot />
</view>
<view class="van-checkbox__icon-wrap" bindtap="toggle">
<slot wx:if="{{ useIconSlot }}" name="icon" />
<van-icon
wx:else
name="success"
size="0.8em"
class="{{ utils.bem('checkbox__icon', [shape, { disabled: disabled || parentDisabled, checked: value }]) }}"
style="{{ computed.iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) }}"
custom-class="icon-class"
custom-style="line-height: 1.25em;"
/>
</view>
<view
wx:if="{{ labelPosition === 'right' }}"
class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
bindtap="onClickLabel"
>
<slot />
</view>
</view>
================================================
FILE: dist/checkbox/index.wxs
================================================
/* eslint-disable */
var style = require('../wxs/style.wxs');
var addUnit = require('../wxs/add-unit.wxs');
function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) {
var styles = {
'font-size': addUnit(iconSize),
};
if (checkedColor && value && !disabled && !parentDisabled) {
styles['border-color'] = checkedColor;
styles['background-color'] = checkedColor;
}
return style(styles);
}
module.exports = {
iconStyle: iconStyle,
};
================================================
FILE: dist/checkbox/index.wxss
================================================
@import '../common/index.wxss';.van-checkbox{align-items:center;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox--horizontal{margin-right:12px}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{flex:none}.van-checkbox__icon{align-items:center;border:1px solid var(--checkbox-border-color,#c8c9cc);box-sizing:border-box;color:transparent;display:flex;font-size:var(--checkbox-size,20px);height:1em;justify-content:center;text-align:center;transition-duration:var(--checkbox-transition-duration,.2s);transition-property:color,border-color,background-color;width:1em}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:var(--checkbox-checked-icon-color,#1989fa);color:#fff}.van-checkbox__icon--disabled{background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;color:var(--checkbox-label-color,#323233);padding-left:var(--checkbox-label-margin,10px)}.van-checkbox__label--left{float:left;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}
================================================
FILE: dist/checkbox-group/index.d.ts
================================================
export {};
================================================
FILE: dist/checkbox-group/index.js
================================================
import { useChildren } from '../common/relation';
import { VantComponent } from '../common/component';
VantComponent({
field: true,
relation: useChildren('checkbox', function (target) {
this.updateChild(target);
}),
props: {
max: Number,
value: {
type: Array,
observer: 'updateChildren',
},
disabled: {
type: Boolean,
observer: 'updateChildren',
},
direction: {
type: String,
value: 'vertical',
},
},
methods: {
updateChildren() {
this.children.forEach((child) => this.updateChild(child));
},
updateChild(child) {
const { value, disabled, direction } = this.data;
child.setData({
value: value.indexOf(child.data.name) !== -1,
parentDisabled: disabled,
direction,
});
},
},
});
================================================
FILE: dist/checkbox-group/index.json
================================================
{
"component": true
}
================================================
FILE: dist/checkbox-group/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="{{ utils.bem('checkbox-group', [{ horizontal: direction === 'horizontal' }]) }}">
<slot />
</view>
================================================
FILE: dist/checkbox-group/index.wxss
================================================
@import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}
================================================
FILE: dist/circle/canvas.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
type CanvasContext = WechatMiniprogram.CanvasContext;
export declare function adaptor(ctx: CanvasContext & Record<string, unknown>): CanvasContext;
export {};
================================================
FILE: dist/circle/canvas.js
================================================
export function adaptor(ctx) {
// @ts-ignore
return Object.assign(ctx, {
setStrokeStyle(val) {
ctx.strokeStyle = val;
},
setLineWidth(val) {
ctx.lineWidth = val;
},
setLineCap(val) {
ctx.lineCap = val;
},
setFillStyle(val) {
ctx.fillStyle = val;
},
setFontSize(val) {
ctx.font = String(val);
},
setGlobalAlpha(val) {
ctx.globalAlpha = val;
},
setLineJoin(val) {
ctx.lineJoin = val;
},
setTextAlign(val) {
ctx.textAlign = val;
},
setMiterLimit(val) {
ctx.miterLimit = val;
},
setShadow(offsetX, offsetY, blur, color) {
ctx.shadowOffsetX = offsetX;
ctx.shadowOffsetY = offsetY;
ctx.shadowBlur = blur;
ctx.shadowColor = color;
},
setTextBaseline(val) {
ctx.textBaseline = val;
},
createCircularGradient() { },
draw() { },
});
}
================================================
FILE: dist/circle/index.d.ts
================================================
export {};
================================================
FILE: dist/circle/index.js
================================================
import { BLUE, WHITE } from '../common/color';
import { VantComponent } from '../common/component';
import { getSystemInfoSync } from '../common/utils';
import { isObj } from '../common/validator';
import { canIUseCanvas2d } from '../common/version';
import { adaptor } from './canvas';
function format(rate) {
return Math.min(Math.max(rate, 0), 100);
}
const PERIMETER = 2 * Math.PI;
const BEGIN_ANGLE = -Math.PI / 2;
const STEP = 1;
VantComponent({
props: {
text: String,
lineCap: {
type: String,
value: 'round',
},
value: {
type: Number,
value: 0,
observer: 'reRender',
},
speed: {
type: Number,
value: 50,
},
size: {
type: Number,
value: 100,
observer() {
this.drawCircle(this.currentValue);
},
},
fill: String,
layerColor: {
type: String,
value: WHITE,
},
color: {
type: null,
value: BLUE,
observer() {
this.setHoverColor().then(() => {
this.drawCircle(this.currentValue);
});
},
},
type: {
type: String,
value: '',
},
strokeWidth: {
type: Number,
value: 4,
},
clockwise: {
type: Boolean,
value: true,
},
},
data: {
hoverColor: BLUE,
},
methods: {
getContext() {
const { type, size } = this.data;
if (type === '' || !canIUseCanvas2d()) {
const ctx = wx.createCanvasContext('van-circle', this);
return Promise.resolve(ctx);
}
const dpr = getSystemInfoSync().pixelRatio;
return new Promise((resolve) => {
wx.createSelectorQuery()
.in(this)
.select('#van-circle')
.node()
.exec((res) => {
const canvas = res[0].node;
const ctx = canvas.getContext(type);
if (!this.inited) {
this.inited = true;
canvas.width = size * dpr;
canvas.height = size * dpr;
ctx.scale(dpr, dpr);
}
resolve(adaptor(ctx));
});
});
},
setHoverColor() {
const { color, size } = this.data;
if (isObj(color)) {
return this.getContext().then((context) => {
if (!context)
return;
const LinearColor = context.createLinearGradient(size, 0, 0, 0);
Object.keys(color)
.sort((a, b) => parseFloat(a) - parseFloat(b))
.map((key) => LinearColor.addColorStop(parseFloat(key) / 100, color[key]));
this.hoverColor = LinearColor;
});
}
this.hoverColor = color;
return Promise.resolve();
},
presetCanvas(context, strokeStyle, beginAngle, endAngle, fill) {
const { strokeWidth, lineCap, clockwise, size } = this.data;
const position = size / 2;
const radius = position - strokeWidth / 2;
context.setStrokeStyle(strokeStyle);
context.setLineWidth(strokeWidth);
context.setLineCap(lineCap);
context.beginPath();
context.arc(position, position, radius, beginAngle, endAngle, !clockwise);
context.stroke();
if (fill) {
context.setFillStyle(fill);
context.fill();
}
},
renderLayerCircle(context) {
const { layerColor, fill } = this.data;
this.presetCanvas(context, layerColor, 0, PERIMETER, fill);
},
renderHoverCircle(context, formatValue) {
const { clockwise } = this.data;
// 结束角度
const progress = PERIMETER * (formatValue / 100);
const endAngle = clockwise
? BEGIN_ANGLE + progress
: 3 * Math.PI - (BEGIN_ANGLE + progress);
this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle);
},
drawCircle(currentValue) {
const { size } = this.data;
this.getContext().then((context) => {
if (!context)
return;
context.clearRect(0, 0, size, size);
this.renderLayerCircle(context);
const formatValue = format(currentValue);
if (formatValue !== 0) {
this.renderHoverCircle(context, formatValue);
}
context.draw();
});
},
reRender() {
// tofector 动画暂时没有想到好的解决方案
const { value, speed } = this.data;
if (speed <= 0 || speed > 1000) {
this.drawCircle(value);
return;
}
this.clearMockInterval();
this.currentValue = this.currentValue || 0;
const run = () => {
this.interval = setTimeout(() => {
if (this.currentValue !== value) {
if (Math.abs(this.currentValue - value) < STEP) {
this.currentValue = value;
}
else if (this.currentValue < value) {
this.currentValue += STEP;
}
else {
this.currentValue -= STEP;
}
this.drawCircle(this.currentValue);
run();
}
else {
this.clearMockInterval();
}
}, 1000 / speed);
};
run();
},
clearMockInterval() {
if (this.interval) {
clearTimeout(this.interval);
this.interval = null;
}
},
},
mounted() {
this.currentValue = this.data.value;
this.setHoverColor().then(() => {
this.drawCircle(this.currentValue);
});
},
destroyed() {
this.clearMockInterval();
},
});
================================================
FILE: dist/circle/index.json
================================================
{
"component": true
}
================================================
FILE: dist/circle/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="van-circle">
<canvas class="van-circle__canvas" type="{{ type }}" style="width: {{ utils.addUnit(size) }};height:{{ utils.addUnit(size) }}" id="van-circle" canvas-id="van-circle"></canvas>
<view wx:if="{{ !text }}" class="van-circle__text">
<slot></slot>
</view>
<cover-view wx:else class="van-circle__text">{{ text }}</cover-view>
</view>
================================================
FILE: dist/circle/index.wxss
================================================
@import '../common/index.wxss';.van-circle{display:inline-block;position:relative;text-align:center}.van-circle__text{color:var(--circle-text-color,#323233);left:0;position:absolute;top:50%;transform:translateY(-50%);width:100%}
================================================
FILE: dist/col/index.d.ts
================================================
export {};
================================================
FILE: dist/col/index.js
================================================
import { useParent } from '../common/relation';
import { VantComponent } from '../common/component';
VantComponent({
relation: useParent('row'),
props: {
span: Number,
offset: Number,
},
});
================================================
FILE: dist/col/index.json
================================================
{
"component": true
}
================================================
FILE: dist/col/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<wxs src="./index.wxs" module="computed" />
<view
class="custom-class {{ utils.bem('col', [span]) }} {{ offset ? 'van-col--offset-' + offset : '' }}"
style="{{ computed.rootStyle({ gutter }) }}"
>
<slot />
</view>
================================================
FILE: dist/col/index.wxs
================================================
/* eslint-disable */
var style = require('../wxs/style.wxs');
var addUnit = require('../wxs/add-unit.wxs');
function rootStyle(data) {
if (!data.gutter) {
return '';
}
return style({
'padding-right': addUnit(data.gutter / 2),
'padding-left': addUnit(data.gutter / 2),
});
}
module.exports = {
rootStyle: rootStyle,
};
================================================
FILE: dist/col/index.wxss
================================================
@import '../common/index.wxss';.van-col{box-sizing:border-box;float:left}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}
================================================
FILE: dist/collapse/index.d.ts
================================================
export {};
================================================
FILE: dist/collapse/index.js
================================================
import { VantComponent } from '../common/component';
import { useChildren } from '../common/relation';
VantComponent({
relation: useChildren('collapse-item'),
props: {
value: {
type: null,
observer: 'updateExpanded',
},
accordion: {
type: Boolean,
observer: 'updateExpanded',
},
border: {
type: Boolean,
value: true,
},
},
methods: {
updateExpanded() {
this.children.forEach((child) => {
child.updateExpanded();
});
},
switch(name, expanded) {
const { accordion, value } = this.data;
const changeItem = name;
if (!accordion) {
name = expanded
? (value || []).concat(name)
: (value || []).filter((activeName) => activeName !== name);
}
else {
name = expanded ? name : '';
}
if (expanded) {
this.$emit('open', changeItem);
}
else {
this.$emit('close', changeItem);
}
this.$emit('change', name);
this.$emit('input', name);
},
},
});
================================================
FILE: dist/collapse/index.json
================================================
{
"component": true
}
================================================
FILE: dist/collapse/index.wxml
================================================
<view class="custom-class van-collapse {{ border ? 'van-hairline--top-bottom' : '' }}">
<slot />
</view>
================================================
FILE: dist/collapse/index.wxss
================================================
@import '../common/index.wxss';
================================================
FILE: dist/collapse-item/animate.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
export declare function setContentAnimate(context: WechatMiniprogram.Component.TrivialInstance, expanded: boolean, mounted: boolean): void;
================================================
FILE: dist/collapse-item/animate.js
================================================
import { getRect } from '../common/utils';
function useAnimation(context, expanded, mounted, height) {
const animation = wx.createAnimation({
duration: 0,
timingFunction: 'ease-in-out',
});
if (expanded) {
if (height === 0) {
animation.height('auto').top(1).step();
}
else {
animation
.height(height)
.top(1)
.step({
duration: mounted ? 300 : 1,
})
.height('auto')
.step();
}
context.setData({
animation: animation.export(),
});
return;
}
animation.height(height).top(0).step({ duration: 1 }).height(0).step({
duration: 300,
});
context.setData({
animation: animation.export(),
});
}
export function setContentAnimate(context, expanded, mounted) {
getRect(context, '.van-collapse-item__content')
.then((rect) => rect.height)
.then((height) => {
useAnimation(context, expanded, mounted, height);
});
}
================================================
FILE: dist/collapse-item/index.d.ts
================================================
export {};
================================================
FILE: dist/collapse-item/index.js
================================================
import { VantComponent } from '../common/component';
import { useParent } from '../common/relation';
import { setContentAnimate } from './animate';
VantComponent({
classes: ['title-class', 'content-class'],
relation: useParent('collapse'),
props: {
size: String,
name: null,
title: null,
value: null,
icon: String,
label: String,
disabled: Boolean,
clickable: Boolean,
border: {
type: Boolean,
value: true,
},
isLink: {
type: Boolean,
value: true,
},
},
data: {
expanded: false,
parentBorder: true,
},
mounted() {
this.updateExpanded();
this.mounted = true;
},
methods: {
updateExpanded() {
if (!this.parent) {
return;
}
const { value, accordion, border } = this.parent.data;
const { children = [] } = this.parent;
const { name } = this.data;
const index = children.indexOf(this);
const currentName = name == null ? index : name;
const expanded = accordion
? value === currentName
: (value || []).some((name) => name === currentName);
if (expanded !== this.data.expanded) {
setContentAnimate(this, expanded, this.mounted);
}
this.setData({ index, expanded, parentBorder: border });
},
onClick() {
if (this.data.disabled) {
return;
}
const { name, expanded } = this.data;
const index = this.parent.children.indexOf(this);
const currentName = name == null ? index : name;
this.parent.switch(currentName, !expanded);
},
},
});
================================================
FILE: dist/collapse-item/index.json
================================================
{
"component": true,
"usingComponents": {
"van-cell": "../cell/index"
}
}
================================================
FILE: dist/collapse-item/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="van-collapse-item custom-class {{ index !== 0 && parentBorder ? 'van-hairline--top' : '' }}">
<van-cell
size="{{ size }}"
title="{{ title }}"
title-class="title-class"
icon="{{ icon }}"
value="{{ value }}"
label="{{ label }}"
is-link="{{ isLink }}"
clickable="{{ clickable }}"
border="{{ border && expanded }}"
class="{{ utils.bem('collapse-item__title', { disabled, expanded }) }}"
right-icon-class="van-cell__right-icon"
custom-class="van-cell"
hover-class="van-cell--hover"
bind:click="onClick"
>
<slot
name="title"
slot="title"
/>
<slot
name="icon"
slot="icon"
/>
<slot name="value" />
<slot
name="right-icon"
slot="right-icon"
/>
</van-cell>
<view
class="{{ utils.bem('collapse-item__wrapper') }}"
style="height: 0;"
animation="{{ animation }}"
>
<view
class="van-collapse-item__content content-class"
>
<slot />
</view>
</view>
</view>
================================================
FILE: dist/collapse-item/index.wxss
================================================
@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{transform:rotate(90deg);transition:transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{background-color:var(--collapse-item-content-background-color,#fff);color:var(--collapse-item-content-text-color,#969799);font-size:var(--collapse-item-content-font-size,13px);line-height:var(--collapse-item-content-line-height,1.5);padding:var(--collapse-item-content-padding,15px)}
================================================
FILE: dist/common/color.d.ts
================================================
export declare const RED = "#ee0a24";
export declare const BLUE = "#1989fa";
export declare const WHITE = "#fff";
export declare const GREEN = "#07c160";
export declare const ORANGE = "#ff976a";
export declare const GRAY = "#323233";
export declare const GRAY_DARK = "#969799";
================================================
FILE: dist/common/color.js
================================================
export const RED = '#ee0a24';
export const BLUE = '#1989fa';
export const WHITE = '#fff';
export const GREEN = '#07c160';
export const ORANGE = '#ff976a';
export const GRAY = '#323233';
export const GRAY_DARK = '#969799';
================================================
FILE: dist/common/component.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
import { VantComponentOptions } from 'definitions/index';
declare function VantComponent<Data extends WechatMiniprogram.Component.DataOption, Props extends WechatMiniprogram.Component.PropertyOption, Methods extends WechatMiniprogram.Component.MethodOption>(vantOptions: VantComponentOptions<Data, Props, Methods>): void;
export { VantComponent };
================================================
FILE: dist/common/component.js
================================================
import { basic } from '../mixins/basic';
function mapKeys(source, target, map) {
Object.keys(map).forEach((key) => {
if (source[key]) {
target[map[key]] = source[key];
}
});
}
function VantComponent(vantOptions) {
const options = {};
mapKeys(vantOptions, options, {
data: 'data',
props: 'properties',
watch: 'observers',
mixins: 'behaviors',
methods: 'methods',
beforeCreate: 'created',
created: 'attached',
mounted: 'ready',
destroyed: 'detached',
classes: 'externalClasses',
});
// add default externalClasses
options.externalClasses = options.externalClasses || [];
options.externalClasses.push('custom-class');
// add default behaviors
options.behaviors = options.behaviors || [];
options.behaviors.push(basic);
// add relations
const { relation } = vantOptions;
if (relation) {
options.relations = relation.relations;
options.behaviors.push(relation.mixin);
}
// map field to form-field behavior
if (vantOptions.field) {
options.behaviors.push('wx://form-field');
}
// add default options
options.options = {
multipleSlots: true,
addGlobalClass: true,
};
Component(options);
}
export { VantComponent };
================================================
FILE: dist/common/index.wxss
================================================
.van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{clear:both;content:"";display:table}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}
================================================
FILE: dist/common/relation.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
export declare function useParent(name: string, onEffect?: (this: TrivialInstance) => void): {
relations: {
[x: string]: WechatMiniprogram.Component.RelationOption;
};
mixin: string;
};
export declare function useChildren(name: string, onEffect?: (this: TrivialInstance, target: TrivialInstance) => void): {
relations: {
[x: string]: WechatMiniprogram.Component.RelationOption;
};
mixin: string;
};
export {};
================================================
FILE: dist/common/relation.js
================================================
export function useParent(name, onEffect) {
const path = `../${name}/index`;
return {
relations: {
[path]: {
type: 'ancestor',
linked() {
onEffect && onEffect.call(this);
},
linkChanged() {
onEffect && onEffect.call(this);
},
unlinked() {
onEffect && onEffect.call(this);
},
},
},
mixin: Behavior({
created() {
Object.defineProperty(this, 'parent', {
get: () => this.getRelationNodes(path)[0],
});
Object.defineProperty(this, 'index', {
// @ts-ignore
get: () => { var _a, _b; return (_b = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.indexOf(this); },
});
},
}),
};
}
export function useChildren(name, onEffect) {
const path = `../${name}/index`;
return {
relations: {
[path]: {
type: 'descendant',
linked(target) {
onEffect && onEffect.call(this, target);
},
linkChanged(target) {
onEffect && onEffect.call(this, target);
},
unlinked(target) {
onEffect && onEffect.call(this, target);
},
},
},
mixin: Behavior({
created() {
Object.defineProperty(this, 'children', {
get: () => this.getRelationNodes(path) || [],
});
},
}),
};
}
================================================
FILE: dist/common/style/clearfix.wxss
================================================
.van-clearfix:after{clear:both;content:"";display:table}
================================================
FILE: dist/common/style/ellipsis.wxss
================================================
.van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3}
================================================
FILE: dist/common/style/hairline.wxss
================================================
.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}
================================================
FILE: dist/common/style/mixins/clearfix.wxss
================================================
================================================
FILE: dist/common/style/mixins/ellipsis.wxss
================================================
================================================
FILE: dist/common/style/mixins/hairline.wxss
================================================
================================================
FILE: dist/common/style/var.wxss
================================================
================================================
FILE: dist/common/utils.d.ts
================================================
/// <reference types="node" />
/// <reference types="miniprogram-api-typings" />
/// <reference types="miniprogram-api-typings" />
/// <reference types="miniprogram-api-typings" />
/// <reference types="miniprogram-api-typings" />
export { isDef } from './validator';
export { getSystemInfoSync } from './version';
export declare function range(num: number, min: number, max: number): number;
export declare function nextTick(cb: (...args: any[]) => void): void;
export declare function addUnit(value?: string | number): string | undefined;
export declare function requestAnimationFrame(cb: () => void): NodeJS.Timeout;
export declare function pickExclude(obj: unknown, keys: string[]): {};
export declare function getRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise<WechatMiniprogram.BoundingClientRectCallbackResult>;
export declare function getAllRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise<WechatMiniprogram.BoundingClientRectCallbackResult[]>;
export declare function groupSetData(context: WechatMiniprogram.Component.TrivialInstance, cb: () => void): void;
export declare function toPromise(promiseLike: Promise<unknown> | unknown): Promise<unknown>;
export declare function addNumber(num1: any, num2: any): number;
export declare const clamp: (num: any, min: any, max: any) => number;
export declare function getCurrentPage<T>(): T & WechatMiniprogram.OptionalInterface<WechatMiniprogram.Page.ILifetime> & WechatMiniprogram.Page.InstanceProperties & WechatMiniprogram.Page.InstanceMethods<WechatMiniprogram.IAnyObject> & WechatMiniprogram.Page.Data<WechatMiniprogram.IAnyObject> & WechatMiniprogram.IAnyObject;
export declare const isPC: boolean;
export declare const isWxWork: boolean;
================================================
FILE: dist/common/utils.js
================================================
import { isDef, isNumber, isPlainObject, isPromise } from './validator';
import { canIUseGroupSetData, canIUseNextTick, getSystemInfoSync, } from './version';
export { isDef } from './validator';
export { getSystemInfoSync } from './version';
export function range(num, min, max) {
return Math.min(Math.max(num, min), max);
}
export function nextTick(cb) {
if (canIUseNextTick()) {
wx.nextTick(cb);
}
else {
setTimeout(() => {
cb();
}, 1000 / 30);
}
}
export function addUnit(value) {
if (!isDef(value)) {
return undefined;
}
value = String(value);
return isNumber(value) ? `${value}px` : value;
}
export function requestAnimationFrame(cb) {
return setTimeout(() => {
cb();
}, 1000 / 30);
}
export function pickExclude(obj, keys) {
if (!isPlainObject(obj)) {
return {};
}
return Object.keys(obj).reduce((prev, key) => {
if (!keys.includes(key)) {
prev[key] = obj[key];
}
return prev;
}, {});
}
export function getRect(context, selector) {
return new Promise((resolve) => {
wx.createSelectorQuery()
.in(context)
.select(selector)
.boundingClientRect()
.exec((rect = []) => resolve(rect[0]));
});
}
export function getAllRect(context, selector) {
return new Promise((resolve) => {
wx.createSelectorQuery()
.in(context)
.selectAll(selector)
.boundingClientRect()
.exec((rect = []) => resolve(rect[0]));
});
}
export function groupSetData(context, cb) {
if (canIUseGroupSetData()) {
context.groupSetData(cb);
}
else {
cb();
}
}
export function toPromise(promiseLike) {
if (isPromise(promiseLike)) {
return promiseLike;
}
return Promise.resolve(promiseLike);
}
// 浮点数精度处理
export function addNumber(num1, num2) {
const cardinal = Math.pow(10, 10);
return Math.round((num1 + num2) * cardinal) / cardinal;
}
// 限制value在[min, max]之间
export const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
export function getCurrentPage() {
const pages = getCurrentPages();
return pages[pages.length - 1];
}
export const isPC = ['mac', 'windows'].includes(getSystemInfoSync().platform);
// 是否企业微信
export const isWxWork = getSystemInfoSync().environment === 'wxwork';
================================================
FILE: dist/common/validator.d.ts
================================================
export declare function isFunction(val: unknown): val is Function;
export declare function isPlainObject(val: unknown): val is Record<string, unknown>;
export declare function isPromise<T = unknown>(val: unknown): val is Promise<T>;
export declare function isDef(value: unknown): boolean;
export declare function isObj(x: unknown): x is Record<string, unknown>;
export declare function isNumber(value: string): boolean;
export declare function isBoolean(value: unknown): value is boolean;
export declare function isImageUrl(url: string): boolean;
export declare function isVideoUrl(url: string): boolean;
================================================
FILE: dist/common/validator.js
================================================
// eslint-disable-next-line @typescript-eslint/ban-types
export function isFunction(val) {
return typeof val === 'function';
}
export function isPlainObject(val) {
return val !== null && typeof val === 'object' && !Array.isArray(val);
}
export function isPromise(val) {
return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch);
}
export function isDef(value) {
return value !== undefined && value !== null;
}
export function isObj(x) {
const type = typeof x;
return x !== null && (type === 'object' || type === 'function');
}
export function isNumber(value) {
return /^\d+(\.\d+)?$/.test(value);
}
export function isBoolean(value) {
return typeof value === 'boolean';
}
const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i;
export function isImageUrl(url) {
return IMAGE_REGEXP.test(url);
}
export function isVideoUrl(url) {
return VIDEO_REGEXP.test(url);
}
================================================
FILE: dist/common/version.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
interface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo {
environment?: 'wxwork';
}
interface SystemInfo extends WxWorkSystemInfo, WechatMiniprogram.SystemInfo {
}
export declare function getSystemInfoSync(): SystemInfo;
export declare function canIUseModel(): boolean;
export declare function canIUseFormFieldButton(): boolean;
export declare function canIUseAnimate(): boolean;
export declare function canIUseGroupSetData(): boolean;
export declare function canIUseNextTick(): boolean;
export declare function canIUseCanvas2d(): boolean;
export declare function canIUseGetUserProfile(): boolean;
export {};
================================================
FILE: dist/common/version.js
================================================
let systemInfo;
export function getSystemInfoSync() {
if (systemInfo == null) {
systemInfo = wx.getSystemInfoSync();
}
return systemInfo;
}
function compareVersion(v1, v2) {
v1 = v1.split('.');
v2 = v2.split('.');
const len = Math.max(v1.length, v2.length);
while (v1.length < len) {
v1.push('0');
}
while (v2.length < len) {
v2.push('0');
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i], 10);
const num2 = parseInt(v2[i], 10);
if (num1 > num2) {
return 1;
}
if (num1 < num2) {
return -1;
}
}
return 0;
}
function gte(version) {
const system = getSystemInfoSync();
return compareVersion(system.SDKVersion, version) >= 0;
}
export function canIUseModel() {
return gte('2.9.3');
}
export function canIUseFormFieldButton() {
return gte('2.10.3');
}
export function canIUseAnimate() {
return gte('2.9.0');
}
export function canIUseGroupSetData() {
return gte('2.4.0');
}
export function canIUseNextTick() {
try {
return wx.canIUse('nextTick');
}
catch (e) {
return gte('2.7.1');
}
}
export function canIUseCanvas2d() {
return gte('2.9.0');
}
export function canIUseGetUserProfile() {
return !!wx.getUserProfile;
}
================================================
FILE: dist/config-provider/index.d.ts
================================================
export {};
================================================
FILE: dist/config-provider/index.js
================================================
import { VantComponent } from '../common/component';
VantComponent({
props: {
themeVars: {
type: Object,
value: {},
},
},
});
================================================
FILE: dist/config-provider/index.json
================================================
{
"component": true
}
================================================
FILE: dist/config-provider/index.wxml
================================================
<wxs src="./index.wxs" module="computed" />
<view class="van-config-provider" style="{{ computed.mapThemeVarsToCSSVars(themeVars) }}">
<slot />
</view>
================================================
FILE: dist/config-provider/index.wxs
================================================
/* eslint-disable */
var object = require('../wxs/object.wxs');
var style = require('../wxs/style.wxs');
function kebabCase(word) {
var newWord = word
.replace(getRegExp("[A-Z]", 'g'), function (i) {
return '-' + i;
})
.toLowerCase()
.replace(getRegExp("^-"), '');
return newWord;
}
function mapThemeVarsToCSSVars(themeVars) {
var cssVars = {};
object.keys(themeVars).forEach(function (key) {
var cssVarsKey = '--' + kebabCase(key);
cssVars[cssVarsKey] = themeVars[key];
});
return style(cssVars);
}
module.exports = {
kebabCase: kebabCase,
mapThemeVarsToCSSVars: mapThemeVarsToCSSVars,
};
================================================
FILE: dist/count-down/index.d.ts
================================================
export {};
================================================
FILE: dist/count-down/index.js
================================================
import { VantComponent } from '../common/component';
import { isSameSecond, parseFormat, parseTimeData } from './utils';
function simpleTick(fn) {
return setTimeout(fn, 30);
}
VantComponent({
props: {
useSlot: Boolean,
millisecond: Boolean,
time: {
type: Number,
observer: 'reset',
},
format: {
type: String,
value: 'HH:mm:ss',
},
autoStart: {
type: Boolean,
value: true,
},
},
data: {
timeData: parseTimeData(0),
formattedTime: '0',
},
destroyed() {
clearTimeout(this.tid);
this.tid = null;
},
methods: {
// 开始
start() {
if (this.counting) {
return;
}
this.counting = true;
this.endTime = Date.now() + this.remain;
this.tick();
},
// 暂停
pause() {
this.counting = false;
clearTimeout(this.tid);
},
// 重置
reset() {
this.pause();
this.remain = this.data.time;
this.setRemain(this.remain);
if (this.data.autoStart) {
this.start();
}
},
tick() {
if (this.data.millisecond) {
this.microTick();
}
else {
this.macroTick();
}
},
microTick() {
this.tid = simpleTick(() => {
this.setRemain(this.getRemain());
if (this.remain !== 0) {
this.microTick();
}
});
},
macroTick() {
this.tid = simpleTick(() => {
const remain = this.getRemain();
if (!isSameSecond(remain, this.remain) || remain === 0) {
this.setRemain(remain);
}
if (this.remain !== 0) {
this.macroTick();
}
});
},
getRemain() {
return Math.max(this.endTime - Date.now(), 0);
},
setRemain(remain) {
this.remain = remain;
const timeData = parseTimeData(remain);
if (this.data.useSlot) {
this.$emit('change', timeData);
}
this.setData({
formattedTime: parseFormat(this.data.format, timeData),
});
if (remain === 0) {
this.pause();
this.$emit('finish');
}
},
},
});
================================================
FILE: dist/count-down/index.json
================================================
{
"component": true
}
================================================
FILE: dist/count-down/index.wxml
================================================
<view class="van-count-down">
<slot wx:if="{{ useSlot }}"/>
<block wx:else>{{ formattedTime }}</block>
</view>
================================================
FILE: dist/count-down/index.wxss
================================================
@import '../common/index.wxss';.van-count-down{color:var(--count-down-text-color,#323233);font-size:var(--count-down-font-size,14px);line-height:var(--count-down-line-height,20px)}
================================================
FILE: dist/count-down/utils.d.ts
================================================
export type TimeData = {
days: number;
hours: number;
minutes: number;
seconds: number;
milliseconds: number;
};
export declare function parseTimeData(time: number): TimeData;
export declare function parseFormat(format: string, timeData: TimeData): string;
export declare function isSameSecond(time1: number, time2: number): boolean;
================================================
FILE: dist/count-down/utils.js
================================================
function padZero(num, targetLength = 2) {
let str = num + '';
while (str.length < targetLength) {
str = '0' + str;
}
return str;
}
const SECOND = 1000;
const MINUTE = 60 * SECOND;
const HOUR = 60 * MINUTE;
const DAY = 24 * HOUR;
export function parseTimeData(time) {
const days = Math.floor(time / DAY);
const hours = Math.floor((time % DAY) / HOUR);
const minutes = Math.floor((time % HOUR) / MINUTE);
const seconds = Math.floor((time % MINUTE) / SECOND);
const milliseconds = Math.floor(time % SECOND);
return {
days,
hours,
minutes,
seconds,
milliseconds,
};
}
export function parseFormat(format, timeData) {
const { days } = timeData;
let { hours, minutes, seconds, milliseconds } = timeData;
if (format.indexOf('DD') === -1) {
hours += days * 24;
}
else {
format = format.replace('DD', padZero(days));
}
if (format.indexOf('HH') === -1) {
minutes += hours * 60;
}
else {
format = format.replace('HH', padZero(hours));
}
if (format.indexOf('mm') === -1) {
seconds += minutes * 60;
}
else {
format = format.replace('mm', padZero(minutes));
}
if (format.indexOf('ss') === -1) {
milliseconds += seconds * 1000;
}
else {
format = format.replace('ss', padZero(seconds));
}
return format.replace('SSS', padZero(milliseconds, 3));
}
export function isSameSecond(time1, time2) {
return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
}
================================================
FILE: dist/datetime-picker/index.d.ts
================================================
export {};
================================================
FILE: dist/datetime-picker/index.js
================================================
import { VantComponent } from '../common/component';
import { isDef } from '../common/validator';
import { pickerProps } from '../picker/shared';
const currentYear = new Date().getFullYear();
function isValidDate(date) {
return isDef(date) && !isNaN(new Date(date).getTime());
}
function range(num, min, max) {
return Math.min(Math.max(num, min), max);
}
function padZero(val) {
return `00${val}`.slice(-2);
}
function times(n, iteratee) {
let index = -1;
const result = Array(n < 0 ? 0 : n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
function getTrueValue(formattedValue) {
if (formattedValue === undefined) {
formattedValue = '1';
}
while (isNaN(parseInt(formattedValue, 10))) {
formattedValue = formattedValue.slice(1);
}
return parseInt(formattedValue, 10);
}
function getMonthEndDay(year, month) {
return 32 - new Date(year, month - 1, 32).getDate();
}
const defaultFormatter = (type, value) => value;
VantComponent({
classes: ['active-class', 'toolbar-class', 'column-class'],
props: Object.assign(Object.assign({}, pickerProps), { value: {
type: null,
observer: 'updateValue',
}, filter: null, type: {
type: String,
value: 'datetime',
observer: 'updateValue',
}, showToolbar: {
type: Boolean,
value: true,
}, formatter: {
type: null,
value: defaultFormatter,
}, minDate: {
type: Number,
value: new Date(currentYear - 10, 0, 1).getTime(),
observer: 'updateValue',
}, maxDate: {
type: Number,
value: new Date(currentYear + 10, 11, 31).getTime(),
observer: 'updateValue',
}, minHour: {
type: Number,
value: 0,
observer: 'updateValue',
}, maxHour: {
type: Number,
value: 23,
observer: 'updateValue',
}, minMinute: {
type: Number,
value: 0,
observer: 'updateValue',
}, maxMinute: {
type: Number,
value: 59,
observer: 'updateValue',
} }),
data: {
innerValue: Date.now(),
columns: [],
},
methods: {
updateValue() {
const { data } = this;
const val = this.correctValue(data.value);
const isEqual = val === data.innerValue;
this.updateColumnValue(val).then(() => {
if (!isEqual) {
this.$emit('input', val);
}
});
},
getPicker() {
if (this.picker == null) {
this.picker = this.selectComponent('.van-datetime-picker');
const { picker } = this;
const { setColumnValues } = picker;
picker.setColumnValues = (...args) => setColumnValues.apply(picker, [...args, false]);
}
return this.picker;
},
updateColumns() {
const { formatter = defaultFormatter } = this.data;
const results = this.getOriginColumns().map((column) => ({
values: column.values.map((value) => formatter(column.type, value)),
}));
return this.set({ columns: results });
},
getOriginColumns() {
const { filter } = this.data;
const results = this.getRanges().map(({ type, range }) => {
let values = times(range[1] - range[0] + 1, (index) => {
const value = range[0] + index;
return type === 'year' ? `${value}` : padZero(value);
});
if (filter) {
values = filter(type, values);
}
return { type, values };
});
return results;
},
getRanges() {
const { data } = this;
if (data.type === 'time') {
return [
{
type: 'hour',
range: [data.minHour, data.maxHour],
},
{
type: 'minute',
range: [data.minMinute, data.maxMinute],
},
];
}
const { maxYear, maxDate, maxMonth, maxHour, maxMinute, } = this.getBoundary('max', data.innerValue);
const { minYear, minDate, minMonth, minHour, minMinute, } = this.getBoundary('min', data.innerValue);
const result = [
{
type: 'year',
range: [minYear, maxYear],
},
{
type: 'month',
range: [minMonth, maxMonth],
},
{
type: 'day',
range: [minDate, maxDate],
},
{
type: 'hour',
range: [minHour, maxHour],
},
{
type: 'minute',
range: [minMinute, maxMinute],
},
];
if (data.type === 'date')
result.splice(3, 2);
if (data.type === 'year-month')
result.splice(2, 3);
return result;
},
correctValue(value) {
const { data } = this;
// validate value
const isDateType = data.type !== 'time';
if (isDateType && !isValidDate(value)) {
value = data.minDate;
}
else if (!isDateType && !value) {
const { minHour } = data;
value = `${padZero(minHour)}:00`;
}
// time type
if (!isDateType) {
let [hour, minute] = value.split(':');
hour = padZero(range(hour, data.minHour, data.maxHour));
minute = padZero(range(minute, data.minMinute, data.maxMinute));
return `${hour}:${minute}`;
}
// date type
value = Math.max(value, data.minDate);
value = Math.min(value, data.maxDate);
return value;
},
getBoundary(type, innerValue) {
const value = new Date(innerValue);
const boundary = new Date(this.data[`${type}Date`]);
const year = boundary.getFullYear();
let month = 1;
let date = 1;
let hour = 0;
let minute = 0;
if (type === 'max') {
month = 12;
date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);
hour = 23;
minute = 59;
}
if (value.getFullYear() === year) {
month = boundary.getMonth() + 1;
if (value.getMonth() + 1 === month) {
date = boundary.getDate();
if (value.getDate() === date) {
hour = boundary.getHours();
if (value.getHours() === hour) {
minute = boundary.getMinutes();
}
}
}
}
return {
[`${type}Year`]: year,
[`${type}Month`]: month,
[`${type}Date`]: date,
[`${type}Hour`]: hour,
[`${type}Minute`]: minute,
};
},
onCancel() {
this.$emit('cancel');
},
onConfirm() {
this.$emit('confirm', this.data.innerValue);
},
onChange() {
const { data } = this;
let value;
const picker = this.getPicker();
const originColumns = this.getOriginColumns();
if (data.type === 'time') {
const indexes = picker.getIndexes();
value = `${+originColumns[0].values[indexes[0]]}:${+originColumns[1]
.values[indexes[1]]}`;
}
else {
const indexes = picker.getIndexes();
const values = indexes.map((value, index) => originColumns[index].values[value]);
const year = getTrueValue(values[0]);
const month = getTrueValue(values[1]);
const maxDate = getMonthEndDay(year, month);
let date = getTrueValue(values[2]);
if (data.type === 'year-month') {
date = 1;
}
date = date > maxDate ? maxDate : date;
let hour = 0;
let minute = 0;
if (data.type === 'datetime') {
hour = getTrueValue(values[3]);
minute = getTrueValue(values[4]);
}
value = new Date(year, month - 1, date, hour, minute);
}
value = this.correctValue(value);
this.updateColumnValue(value).then(() => {
this.$emit('input', value);
this.$emit('change', picker);
});
},
updateColumnValue(value) {
let values = [];
const { type } = this.data;
const formatter = this.data.formatter || defaultFormatter;
const picker = this.getPicker();
if (type === 'time') {
const pair = value.split(':');
values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
}
else {
const date = new Date(value);
values = [
formatter('year', `${date.getFullYear()}`),
formatter('month', padZero(date.getMonth() + 1)),
];
if (type === 'date') {
values.push(formatter('day', padZero(date.getDate())));
}
if (type === 'datetime') {
values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes())));
}
}
return this.set({ innerValue: value })
.then(() => this.updateColumns())
.then(() => picker.setValues(values));
},
},
created() {
const innerValue = this.correctValue(this.data.value);
this.updateColumnValue(innerValue).then(() => {
this.$emit('input', innerValue);
});
},
});
================================================
FILE: dist/datetime-picker/index.json
================================================
{
"component": true,
"usingComponents": {
"van-picker": "../picker/index"
}
}
================================================
FILE: dist/datetime-picker/index.wxml
================================================
<van-picker
class="van-datetime-picker"
active-class="active-class"
toolbar-class="toolbar-class"
column-class="column-class"
title="{{ title }}"
columns="{{ columns }}"
item-height="{{ itemHeight }}"
show-toolbar="{{ showToolbar }}"
visible-item-count="{{ visibleItemCount }}"
confirm-button-text="{{ confirmButtonText }}"
cancel-button-text="{{ cancelButtonText }}"
bind:change="onChange"
bind:confirm="onConfirm"
bind:cancel="onCancel"
/>
================================================
FILE: dist/datetime-picker/index.wxss
================================================
@import '../common/index.wxss';
================================================
FILE: dist/definitions/index.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
interface VantComponentInstance {
parent: WechatMiniprogram.Component.TrivialInstance;
children: WechatMiniprogram.Component.TrivialInstance[];
index: number;
$emit: (name: string, detail?: unknown, options?: WechatMiniprogram.Component.TriggerEventOption) => void;
setView: (value: Record<string, any>, callback?: () => void) => void;
}
export type VantComponentOptions<Data extends WechatMiniprogram.Component.DataOption, Props extends WechatMiniprogram.Component.PropertyOption, Methods extends WechatMiniprogram.Component.MethodOption> = {
data?: Data;
field?: boolean;
classes?: string[];
mixins?: string[];
props?: Props;
relation?: {
relations: Record<string, WechatMiniprogram.Component.RelationOption>;
mixin: string;
};
watch?: Record<string, (...args: any[]) => any>;
methods?: Methods;
beforeCreate?: () => void;
created?: () => void;
mounted?: () => void;
destroyed?: () => void;
} & ThisType<VantComponentInstance & WechatMiniprogram.Component.Instance<Data & {
name: string;
value: any;
} & Record<string, any>, Props, Methods> & Record<string, any>>;
export {};
================================================
FILE: dist/definitions/index.js
================================================
export {};
================================================
FILE: dist/dialog/dialog.d.ts
================================================
/// <reference types="miniprogram-api-typings" />
/// <reference types="miniprogram-api-typings" />
export type Action = 'confirm' | 'cancel' | 'overlay';
type DialogContext = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
interface DialogOptions {
lang?: string;
show?: boolean;
title?: string;
width?: string | number | null;
zIndex?: number;
theme?: string;
context?: (() => DialogContext) | DialogContext;
message?: string;
overlay?: boolean;
selector?: string;
ariaLabel?: string;
/**
* @deprecated use custom-class instead
*/
className?: string;
customStyle?: string;
transition?: string;
/**
* @deprecated use beforeClose instead
*/
asyncClose?: boolean;
beforeClose?: null | ((action: Action) => Promise<void | boolean> | void);
businessId?: number;
sessionFrom?: string;
overlayStyle?: string;
appParameter?: string;
messageAlign?: string;
sendMessageImg?: string;
showMessageCard?: boolean;
sendMessagePath?: string;
sendMessageTitle?: string;
confirmButtonText?: string;
cancelButtonText?: string;
showConfirmButton?: boolean;
showCancelButton?: boolean;
closeOnClickOverlay?: boolean;
confirmButtonOpenType?: string;
}
declare const Dialog: {
(options: DialogOptions): Promise<WechatMiniprogram.Component.TrivialInstance>;
alert(options: DialogOptions): Promise<WechatMiniprogram.Component.TrivialInstance>;
confirm(options: DialogOptions): Promise<WechatMiniprogram.Component.TrivialInstance>;
close(): void;
stopLoading(): void;
currentOptions: DialogOptions;
defaultOptions: DialogOptions;
setDefaultOptions(options: DialogOptions): void;
resetDefaultOptions(): void;
};
export default Dialog;
================================================
FILE: dist/dialog/dialog.js
================================================
let queue = [];
const defaultOptions = {
show: false,
title: '',
width: null,
theme: 'default',
message: '',
zIndex: 100,
overlay: true,
selector: '#van-dialog',
className: '',
asyncClose: false,
beforeClose: null,
transition: 'scale',
customStyle: '',
messageAlign: '',
overlayStyle: '',
confirmButtonText: '确认',
cancelButtonText: '取消',
showConfirmButton: true,
showCancelButton: false,
closeOnClickOverlay: false,
confirmButtonOpenType: '',
};
let currentOptions = Object.assign({}, defaultOptions);
function getContext() {
const pages = getCurrentPages();
return pages[pages.length - 1];
}
const Dialog = (options) => {
options = Object.assign(Object.assign({}, currentOptions), options);
return new Promise((resolve, reject) => {
const context = (typeof options.context === 'function'
? options.context()
: options.context) || getContext();
const dialog = context.selectComponent(options.selector);
delete options.context;
delete options.selector;
if (dialog) {
dialog.setData(Object.assign({ callback: (action, instance) => {
action === 'confirm' ? resolve(instance) : reject(instance);
} }, options));
wx.nextTick(() => {
dialog.setData({ show: true });
});
queue.push(dialog);
}
else {
console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确');
}
});
};
Dialog.alert = (options) => Dialog(options);
Dialog.confirm = (options) => Dialog(Object.assign({ showCancelButton: true }, options));
Dialog.close = () => {
queue.forEach((dialog) => {
dialog.close();
});
queue = [];
};
Dialog.stopLoading = () => {
queue.forEach((dialog) => {
dialog.stopLoading();
});
};
Dialog.currentOptions = currentOptions;
Dialog.defaultOptions = defaultOptions;
Dialog.setDefaultOptions = (options) => {
currentOptions = Object.assign(Object.assign({}, currentOptions), options);
Dialog.currentOptions = currentOptions;
};
Dialog.resetDefaultOptions = () => {
currentOptions = Object.assign({}, defaultOptions);
Dialog.currentOptions = currentOptions;
};
Dialog.resetDefaultOptions();
export default Dialog;
================================================
FILE: dist/dialog/index.d.ts
================================================
export {};
================================================
FILE: dist/dialog/index.js
================================================
import { VantComponent } from '../common/component';
import { button } from '../mixins/button';
import { GRAY, RED } from '../common/color';
import { toPromise } from '../common/utils';
VantComponent({
mixins: [button],
classes: ['cancle-button-class', 'confirm-button-class'],
props: {
show: {
type: Boolean,
observer(show) {
!show && this.stopLoading();
},
},
title: String,
message: String,
theme: {
type: String,
value: 'default',
},
confirmButtonId: String,
className: String,
customStyle: String,
asyncClose: Boolean,
messageAlign: String,
beforeClose: null,
overlayStyle: String,
useSlot: Boolean,
useTitleSlot: Boolean,
useConfirmButtonSlot: Boolean,
useCancelButtonSlot: Boolean,
showCancelButton: Boolean,
closeOnClickOverlay: Boolean,
confirmButtonOpenType: String,
width: null,
zIndex: {
type: Number,
value: 2000,
},
confirmButtonText: {
type: String,
value: '确认',
},
cancelButtonText: {
type: String,
value: '取消',
},
confirmButtonColor: {
type: String,
value: RED,
},
cancelButtonColor: {
type: String,
value: GRAY,
},
showConfirmButton: {
type: Boolean,
value: true,
},
overlay: {
type: Boolean,
value: true,
},
transition: {
type: String,
value: 'scale',
},
rootPortal: {
type: Boolean,
value: false,
},
},
data: {
loading: {
confirm: false,
cancel: false,
},
callback: (() => { }),
},
methods: {
onConfirm() {
this.handleAction('confirm');
},
onCancel() {
this.handleAction('cancel');
},
onClickOverlay() {
this.close('overlay');
},
close(action) {
this.setData({ show: false });
this.closeAction = action;
},
onAfterLeave() {
const { closeAction: action } = this;
this.$emit('close', action);
const { callback } = this.data;
if (callback) {
callback(action, this);
}
},
stopLoading() {
this.setData({
loading: {
confirm: false,
cancel: false,
},
});
},
handleAction(action) {
this.$emit(action, { dialog: this });
const { asyncClose, beforeClose } = this.data;
if (!asyncClose && !beforeClose) {
this.close(action);
return;
}
this.setData({
[`loading.${action}`]: true,
});
if (beforeClose) {
toPromise(beforeClose(action)).then((value) => {
if (value) {
this.close(action);
}
else {
this.stopLoading();
}
});
}
},
},
});
================================================
FILE: dist/dialog/index.json
================================================
{
"component": true,
"usingComponents": {
"van-popup": "../popup/index",
"van-button": "../button/index",
"van-goods-action": "../goods-action/index",
"van-goods-action-button": "../goods-action-button/index"
}
}
================================================
FILE: dist/dialog/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<van-popup
show="{{ show }}"
z-index="{{ zIndex }}"
overlay="{{ overlay }}"
transition="{{ transition }}"
custom-class="van-dialog van-dialog--{{ theme }}{{ className }} custom-class"
custom-style="width: {{ utils.addUnit(width) }};{{ customStyle }}"
overlay-style="{{ overlayStyle }}"
close-on-click-overlay="{{ closeOnClickOverlay }}"
root-portal="{{ rootPortal }}"
bind:close="onClickOverlay"
bind:after-leave="onAfterLeave"
>
<view
wx:if="{{ title || useTitleSlot }}"
class="{{ utils.bem('dialog__header', { isolated: !(message || useSlot) }) }}"
>
<slot wx:if="{{ useTitleSlot }}" name="title" />
<block wx:elif="{{ title }}">{{ title }}</block>
</view>
<slot wx:if="{{ useSlot }}" />
<view
wx:elif="{{ message }}"
class="{{ utils.bem('dialog__message', [theme, messageAlign, { hasTitle: title }]) }}"
>
<text class="van-dialog__message-text">{{ message }}</text>
</view>
<van-goods-action wx:if="{{ theme === 'round-button' }}" custom-class="van-dialog__footer--round-button">
<van-goods-action-button
wx:if="{{ showCancelButton }}"
size="large"
loading="{{ loading.cancel }}"
class="van-dialog__button van-hairline--right"
custom-class="van-dialog__cancel cancle-button-class"
custom-style="color: {{ cancelButtonColor }}"
bind:click="onCancel"
>
{{ cancelButtonText }}
</van-goods-action-button>
<van-goods-action-button
wx:if="{{ showConfirmButton }}"
size="large"
class="van-dialog__button"
loading="{{ loading.confirm }}"
custom-class="van-dialog__confirm confirm-button-class"
custom-style="color: {{ confirmButtonColor }}"
button-id="{{ confirmButtonId }}"
open-type="{{ confirmButtonOpenType }}"
lang="{{ lang }}"
business-id="{{ businessId }}"
session-from="{{ sessionFrom }}"
send-message-title="{{ sendMessageTitle }}"
send-message-path="{{ sendMessagePath }}"
send-message-img="{{ sendMessageImg }}"
show-message-card="{{ showMessageCard }}"
app-parameter="{{ appParameter }}"
bindagreeprivacyauthorization="onAgreePrivacyAuthorization"
bindgetRealTimePhoneNumber="onGetRealTimePhoneNumber"
bind:click="onConfirm"
bindgetuserinfo="onGetUserInfo"
bindcontact="onContact"
bindgetphonenumber="onGetPhoneNumber"
binderror="onError"
bindlaunchapp="onLaunchApp"
bindopensetting="onOpenSetting"
>
{{ confirmButtonText }}
</van-goods-action-button>
</van-goods-action>
<view wx:elif="{{ showCancelButton || showConfirmButton }}" class="van-hairline--top van-dialog__footer">
<block wx:if="{{ showCancelButton }}">
<slot wx:if="{{ useCancelButtonSlot }}" name="cancel-button" />
<van-button
wx:else
size="large"
loading="{{ loading.cancel }}"
class="van-dialog__button van-hairline--right"
custom-class="van-dialog__cancel cancle-button-class"
custom-style="color: {{ cancelButtonColor }}"
bind:click="onCancel"
>
{{ cancelButtonText }}
</van-button>
</block>
<block wx:if="{{ showConfirmButton }}">
<slot wx:if="{{ useConfirmButtonSlot }}" name="confirm-button" />
<van-button
wx:else
size="large"
class="van-dialog__button"
loading="{{ loading.confirm }}"
custom-class="van-dialog__confirm confirm-button-class"
custom-style="color: {{ confirmButtonColor }}"
button-id="{{ confirmButtonId }}"
open-type="{{ confirmButtonOpenType }}"
lang="{{ lang }}"
business-id="{{ businessId }}"
session-from="{{ sessionFrom }}"
send-message-title="{{ sendMessageTitle }}"
send-message-path="{{ sendMessagePath }}"
send-message-img="{{ sendMessageImg }}"
show-message-card="{{ showMessageCard }}"
app-parameter="{{ appParameter }}"
bindagreeprivacyauthorization="onAgreePrivacyAuthorization"
bindgetRealTimePhoneNumber="onGetRealTimePhoneNumber"
bind:click="onConfirm"
bindgetuserinfo="onGetUserInfo"
bindcontact="onContact"
bindgetphonenumber="onGetPhoneNumber"
binderror="onError"
bindlaunchapp="onLaunchApp"
bindopensetting="onOpenSetting"
>
{{ confirmButtonText }}
</van-button>
</block>
</view>
</van-popup>
================================================
FILE: dist/dialog/index.wxss
================================================
@import '../common/index.wxss';.van-dialog{background-color:var(--dialog-background-color,#fff);border-radius:var(--dialog-border-radius,16px);font-size:var(--dialog-font-size,16px);overflow:hidden;top:45%!important;width:var(--dialog-width,320px)}@media (max-width:321px){.van-dialog{width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{font-weight:var(--dialog-header-font-weight,500);line-height:var(--dialog-header-line-height,24px);padding-top:var(--dialog-header-padding-top,24px);text-align:center}.van-dialog__header--isolated{padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{-webkit-overflow-scrolling:touch;font-size:var(--dialog-message-font-size,14px);line-height:var(--dialog-message-line-height,20px);max-height:var(--dialog-message-max-height,60vh);overflow-y:auto;padding:var(--dialog-message-padding,24px);text-align:center}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{color:var(--dialog-has-title-message-text-color,#646566);padding-top:var(--dialog-has-title-message-padding-top,8px)}.van-dialog__message--round-button{color:#323233;padding-bottom:16px}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__message--justify{text-align:justify}.van-dialog__footer{display:flex}.van-dialog__footer--round-button{padding:8px 24px 16px!important;position:relative!important}.van-dialog__button{flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{opacity:0;transform:translate3d(-50%,-50%,0) scale(.7)}.van-dialog-bounce-leave-active{opacity:0;transform:translate3d(-50%,-50%,0) scale(.9)}
================================================
FILE: dist/divider/index.d.ts
================================================
export {};
================================================
FILE: dist/divider/index.js
================================================
import { VantComponent } from '../common/component';
VantComponent({
props: {
dashed: Boolean,
hairline: Boolean,
contentPosition: String,
fontSize: String,
borderColor: String,
textColor: String,
customStyle: String,
},
});
================================================
FILE: dist/divider/index.json
================================================
{
"component": true,
"usingComponents": {}
}
================================================
FILE: dist/divider/index.wxml
================================================
<wxs src="../wxs/utils.wxs" module="utils" />
<wxs src="./index.wxs" module="computed" />
<view
class="custom-class {{ utils.bem('divider', [{ dashed, hairline }, contentPosition]) }}"
style="{{ computed.rootStyle({ borderColor, textColor, fontSize, customStyle }) }}"
>
<slot />
</view>
================================================
FILE: dist/divider/index.wxs
================================================
/* eslint-disable */
var style = require('../wxs/style.wxs');
var addUnit = require('../wxs/add-unit.wxs');
function rootStyle(data) {
return style([
{
'border-color': data.borderColor,
color: data.textColor,
'font-size': addUnit(data.fontSize),
},
data.customStyle,
]);
}
module.exports = {
rootStyle: rootStyle,
};
================================================
FILE: dist/divider/index.wxss
================================================
@import '../common/index.wxss';.van-divider{align-items:center;border:0 solid var(--divider-border-color,#ebedf0);color:var(--divider-text-color,#969799);display:flex;font-size:var(--divider-font-size,14px);line-height:var(--divider-line-height,24px);margin:var(--divider-margin,16px 0)}.van-divider:after,.van-divider:before{border-color:inherit;border-style:inherit;border-width:1px 0 0;box-sizing:border-box;display:block;flex:1;height:1px}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:var(--divider-content-right-width,10%)}
================================================
FILE: dist/dropdown-item/index.d.ts
================================================
export {};
================================================
FILE: dist/dropdown-item/index.js
================================================
import { useParent } from '../common/relation';
import { VantComponent } from '../common/component';
VantComponent({
classes: ['item-title-class'],
field: true,
relation: useParent('dropdown-menu', function () {
this.updateDataFromParent();
}),
props: {
value: {
type: null,
observer: 'rerender',
},
title: {
type: String,
observer: 'rerender',
},
disabled: Boolean,
titleClass: {
type: String,
observer: 'rerender',
},
options: {
type: Array,
value: [],
observer: 'rerender',
},
popupStyle: String,
useBeforeToggle: {
type: Boolean,
value: false,
},
rootPortal: {
type: Boolean,
value: false,
},
},
data: {
transition: true,
showPopup: false,
showWrapper: false,
displayTitle: '',
safeAreaTabBar: false,
},
methods: {
rerender() {
wx.nextTick(() => {
var _a;
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.updateItemListData();
});
},
updateDataFromParent() {
if (this.parent) {
const { overlay, duration, activeColor, closeOnClickOverlay, direction, safeAreaTabBar, } = this.parent.data;
this.setData({
overlay,
duration,
activeColor,
closeOnClickOverlay,
direction,
safeAreaTabBar,
});
}
},
onOpen() {
this.$emit('open');
},
onOpened() {
this.$emit('opened');
},
onClose() {
this.$emit('close');
},
onClosed() {
this.$emit('closed');
this.setData({ showWrapper: false });
},
onOptionTap(event) {
const { option } = event.currentTarget.dataset;
const { value } = option;
const shouldEmitChange = this.data.value !== value;
this.setData({ showPopup: false, value });
this.$emit('close');
this.rerender();
if (shouldEmitChange) {
this.$emit('change', value);
}
},
toggle(show, options = {}) {
const { showPopup } = this.data;
if (typeof show !== 'boolean') {
show = !showPopup;
}
if (show === showPopup) {
return;
}
this.onBeforeToggle(show).then((status) => {
var _a;
if (!status) {
return;
}
this.setData({
transition: !options.immediate,
showPopup: show,
});
if (show) {
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.getChildWrapperStyle().then((wrapperStyle) => {
this.setData({ wrapperStyle, showWrapper: true });
this.rerender();
});
}
else {
this.rerender();
}
});
},
onBeforeToggle(status) {
const { useBeforeToggle } = this.data;
if (!useBeforeToggle) {
return Promise.resolve(true);
}
retur
gitextract_stysbeow/ ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitee/ │ └── ISSUE_TEMPLATE.zh-CN.md ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ ├── template-1-bug-report-vant.zh-CN.yml │ │ └── template-3-feature-request-vant.zh-CN.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── pr-labeler.yml │ └── workflows/ │ ├── deploy-site.yml │ ├── pr-label.yaml │ ├── release-tag.yml │ └── test.yml ├── .gitignore ├── .husky/ │ ├── .gitignore │ ├── commit-msg │ └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .stylelintrc ├── LICENSE ├── README.md ├── babel.config.js ├── build/ │ ├── compiler.js │ ├── dev.mjs │ ├── release.sh │ └── upload.js ├── dist/ │ ├── action-sheet/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── area/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── button/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── calendar/ │ │ ├── calendar.wxml │ │ ├── components/ │ │ │ ├── header/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── month/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ └── utils.wxs │ ├── card/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── cascader/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── cell/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── cell-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── checkbox/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── checkbox-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── circle/ │ │ ├── canvas.d.ts │ │ ├── canvas.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── col/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── collapse/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── collapse-item/ │ │ ├── animate.d.ts │ │ ├── animate.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── common/ │ │ ├── color.d.ts │ │ ├── color.js │ │ ├── component.d.ts │ │ ├── component.js │ │ ├── index.wxss │ │ ├── relation.d.ts │ │ ├── relation.js │ │ ├── style/ │ │ │ ├── clearfix.wxss │ │ │ ├── ellipsis.wxss │ │ │ ├── hairline.wxss │ │ │ ├── mixins/ │ │ │ │ ├── clearfix.wxss │ │ │ │ ├── ellipsis.wxss │ │ │ │ └── hairline.wxss │ │ │ └── var.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ ├── validator.d.ts │ │ ├── validator.js │ │ ├── version.d.ts │ │ └── version.js │ ├── config-provider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxs │ ├── count-down/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ └── utils.js │ ├── datetime-picker/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── definitions/ │ │ ├── index.d.ts │ │ └── index.js │ ├── dialog/ │ │ ├── dialog.d.ts │ │ ├── dialog.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── divider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── dropdown-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ └── shared.js │ ├── dropdown-menu/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── empty/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── field/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── input.wxml │ │ ├── props.d.ts │ │ ├── props.js │ │ ├── textarea.wxml │ │ ├── types.d.ts │ │ └── types.js │ ├── goods-action/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action-button/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action-icon/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── grid/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── grid-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── icon/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── image/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── index-anchor/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── index-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── info/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── loading/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── mixins/ │ │ ├── basic.d.ts │ │ ├── basic.js │ │ ├── button.d.ts │ │ ├── button.js │ │ ├── link.d.ts │ │ ├── link.js │ │ ├── page-scroll.d.ts │ │ ├── page-scroll.js │ │ ├── touch.d.ts │ │ ├── touch.js │ │ ├── transition.d.ts │ │ └── transition.js │ ├── nav-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notice-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notify/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── notify.d.ts │ │ └── notify.js │ ├── overlay/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ └── overlay.wxml │ ├── panel/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── picker/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ └── toolbar.wxml │ ├── picker-column/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── popup/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ └── popup.wxml │ ├── progress/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── radio/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── radio-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── rate/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── row/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── search/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── share-sheet/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── options.d.ts │ │ ├── options.js │ │ ├── options.json │ │ ├── options.wxml │ │ ├── options.wxs │ │ └── options.wxss │ ├── sidebar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sidebar-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── skeleton/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── slider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── stepper/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── steps/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sticky/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── submit-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── swipe-cell/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── switch/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tab/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabs/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tag/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── toast/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── toast.d.ts │ │ └── toast.js │ ├── transition/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tree-select/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── uploader/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ ├── utils.d.ts │ │ └── utils.js │ └── wxs/ │ ├── add-unit.wxs │ ├── array.wxs │ ├── bem.wxs │ ├── memoize.wxs │ ├── object.wxs │ ├── style.wxs │ └── utils.wxs ├── docs/ │ └── markdown/ │ ├── changelog.md │ ├── custom-style.md │ ├── home.md │ ├── quickstart.md │ └── theme.md ├── example/ │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── common/ │ │ └── page.js │ ├── components/ │ │ ├── demo-block/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── demo-home/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── demo-home-nav/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── config.js │ ├── database_area.json │ ├── functions/ │ │ └── foo/ │ │ ├── index.js │ │ └── package.json │ ├── pages/ │ │ ├── action-sheet/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── area/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── button/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── calendar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── card/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── cascader/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── cell/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── checkbox/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── circle/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── col/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── collapse/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── config-provider/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── count-down/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── dashboard/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── datetime-picker/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── dialog/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── divider/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── dropdown-menu/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── empty/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── field/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── goods-action/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── grid/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── icon/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── image/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── index-bar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── loading/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── nav-bar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── notice-bar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── notify/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── overlay/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── panel/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── picker/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── popup/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── progress/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── radio/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── rate/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── search/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── share-sheet/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── sidebar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── skeleton/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── slider/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── stepper/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── steps/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── sticky/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── submit-bar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── swipe-cell/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── switch/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── tab/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── tabbar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── tag/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── toast/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── transition/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ ├── tree-select/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ └── uploader/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── project.config.json │ └── sitemap.json ├── jest.config.js ├── lib/ │ ├── action-sheet/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── area/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── button/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── calendar/ │ │ ├── calendar.wxml │ │ ├── components/ │ │ │ ├── header/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── month/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ └── utils.wxs │ ├── card/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── cascader/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── cell/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── cell-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── checkbox/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── checkbox-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── circle/ │ │ ├── canvas.d.ts │ │ ├── canvas.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── col/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── collapse/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── collapse-item/ │ │ ├── animate.d.ts │ │ ├── animate.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── common/ │ │ ├── color.d.ts │ │ ├── color.js │ │ ├── component.d.ts │ │ ├── component.js │ │ ├── index.wxss │ │ ├── relation.d.ts │ │ ├── relation.js │ │ ├── style/ │ │ │ ├── clearfix.wxss │ │ │ ├── ellipsis.wxss │ │ │ ├── hairline.wxss │ │ │ ├── mixins/ │ │ │ │ ├── clearfix.wxss │ │ │ │ ├── ellipsis.wxss │ │ │ │ └── hairline.wxss │ │ │ └── var.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ ├── validator.d.ts │ │ ├── validator.js │ │ ├── version.d.ts │ │ └── version.js │ ├── config-provider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxs │ ├── count-down/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ └── utils.js │ ├── datetime-picker/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── definitions/ │ │ ├── index.d.ts │ │ └── index.js │ ├── dialog/ │ │ ├── dialog.d.ts │ │ ├── dialog.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── divider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── dropdown-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ └── shared.js │ ├── dropdown-menu/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── empty/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── field/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── input.wxml │ │ ├── props.d.ts │ │ ├── props.js │ │ ├── textarea.wxml │ │ ├── types.d.ts │ │ └── types.js │ ├── goods-action/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action-button/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action-icon/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── grid/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── grid-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── icon/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── image/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── index-anchor/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── index-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── info/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── loading/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── mixins/ │ │ ├── basic.d.ts │ │ ├── basic.js │ │ ├── button.d.ts │ │ ├── button.js │ │ ├── link.d.ts │ │ ├── link.js │ │ ├── page-scroll.d.ts │ │ ├── page-scroll.js │ │ ├── touch.d.ts │ │ ├── touch.js │ │ ├── transition.d.ts │ │ └── transition.js │ ├── nav-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notice-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notify/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── notify.d.ts │ │ └── notify.js │ ├── overlay/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ └── overlay.wxml │ ├── panel/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── picker/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ └── toolbar.wxml │ ├── picker-column/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── popup/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ └── popup.wxml │ ├── progress/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── radio/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── radio-group/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── rate/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── row/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── search/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── share-sheet/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── options.d.ts │ │ ├── options.js │ │ ├── options.json │ │ ├── options.wxml │ │ ├── options.wxs │ │ └── options.wxss │ ├── sidebar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sidebar-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── skeleton/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── slider/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── stepper/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── steps/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sticky/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── submit-bar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── swipe-cell/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── switch/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tab/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar-item/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabs/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tag/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── toast/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── toast.d.ts │ │ └── toast.js │ ├── transition/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tree-select/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── uploader/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ ├── utils.d.ts │ │ └── utils.js │ └── wxs/ │ ├── add-unit.wxs │ ├── array.wxs │ ├── bem.wxs │ ├── memoize.wxs │ ├── object.wxs │ ├── style.wxs │ └── utils.wxs ├── package.json ├── packages/ │ ├── action-sheet/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── area/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── button/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ ├── demo.spec.ts │ │ └── index.spec.ts │ ├── calendar/ │ │ ├── README.md │ │ ├── calendar.wxml │ │ ├── components/ │ │ │ ├── header/ │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ ├── index.ts │ │ │ │ └── index.wxml │ │ │ └── month/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── index.wxml │ │ │ └── index.wxs │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ ├── index.wxml │ │ │ └── index.wxs │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ ├── utils.ts │ │ └── utils.wxs │ ├── card/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── cascader/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── cell/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── cell-group/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── checkbox/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── checkbox-group/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── circle/ │ │ ├── README.md │ │ ├── canvas.ts │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── col/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── collapse/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── collapse-item/ │ │ ├── animate.ts │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── common/ │ │ ├── README.md │ │ ├── color.ts │ │ ├── component.ts │ │ ├── index.less │ │ ├── relation.ts │ │ ├── style/ │ │ │ ├── clearfix.less │ │ │ ├── ellipsis.less │ │ │ ├── hairline.less │ │ │ ├── mixins/ │ │ │ │ ├── clearfix.less │ │ │ │ ├── ellipsis.less │ │ │ │ └── hairline.less │ │ │ └── var.less │ │ ├── utils.ts │ │ ├── validator.ts │ │ └── version.ts │ ├── config-provider/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── count-down/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ └── utils.ts │ ├── datetime-picker/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── definitions/ │ │ └── index.ts │ ├── dialog/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── dialog.ts │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── divider/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── dropdown-item/ │ │ ├── dropdown-item.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── shared.ts │ ├── dropdown-menu/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── empty/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── field/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── input.wxml │ │ ├── props.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ ├── textarea.wxml │ │ └── types.ts │ ├── goods-action/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── goods-action-button/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── goods-action-icon/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── grid/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── grid-item/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── index.wxs │ ├── icon/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── image/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── index-anchor/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── index-bar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── info/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── loading/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── mixins/ │ │ ├── basic.ts │ │ ├── button.ts │ │ ├── link.ts │ │ ├── page-scroll.ts │ │ ├── touch.ts │ │ └── transition.ts │ ├── nav-bar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── notice-bar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── notify/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── notify.ts │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── overlay/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── overlay.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── panel/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── picker/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── shared.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ └── toolbar.wxml │ ├── picker-column/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── index.wxs │ ├── popup/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── popup.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── progress/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── radio/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── radio-group/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── rate/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── row/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── index.wxs │ ├── search/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── share-sheet/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── options.json │ │ ├── options.less │ │ ├── options.ts │ │ ├── options.wxml │ │ ├── options.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── sidebar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── sidebar-item/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── skeleton/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── slider/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── stepper/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── steps/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── sticky/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── submit-bar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── swipe-cell/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── switch/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ ├── demo.spec.ts.snap │ │ │ └── index.spec.ts.snap │ │ ├── demo.spec.ts │ │ └── index.spec.ts │ ├── tab/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── tabbar/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── tabbar-item/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ └── index.wxml │ ├── tabs/ │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ └── index.wxs │ ├── tag/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── toast/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ └── toast.ts │ ├── transition/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── tree-select/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── test/ │ │ ├── __snapshots__/ │ │ │ └── demo.spec.ts.snap │ │ └── demo.spec.ts │ ├── uploader/ │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── index.json │ │ ├── index.less │ │ ├── index.ts │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── shared.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── demo.spec.ts.snap │ │ │ └── demo.spec.ts │ │ └── utils.ts │ └── wxs/ │ ├── add-unit.wxs │ ├── array.wxs │ ├── bem.wxs │ ├── memoize.wxs │ ├── object.wxs │ ├── style.wxs │ └── utils.wxs ├── postcss.config.js ├── rsbuild.config.ts ├── tsconfig.example.json ├── tsconfig.json ├── tsconfig.lib.json └── vant.config.mjs
SYMBOL INDEX (1293 symbols across 260 files)
FILE: build/dev.mjs
function run (line 9) | async function run() {
FILE: dist/action-sheet/index.js
method onSelect (line 45) | onSelect(event) {
method onCancel (line 64) | onCancel() {
method onClose (line 67) | onClose() {
method onClickOverlay (line 70) | onClickOverlay() {
FILE: dist/area/index.js
constant EMPTY_CODE (line 4) | const EMPTY_CODE = '000000';
method observer (line 12) | observer(value) {
method observer (line 25) | observer(val) {
method mounted (line 39) | mounted() {
method getPicker (line 45) | getPicker() {
method onCancel (line 51) | onCancel(event) {
method onConfirm (line 54) | onConfirm(event) {
method emit (line 60) | emit(type, detail) {
method parseValues (line 65) | parseValues(values) {
method onChange (line 75) | onChange(event) {
method getConfig (line 87) | getConfig(type) {
method getList (line 91) | getList(type, code) {
method getIndex (line 122) | getIndex(type, code) {
method setValues (line 137) | setValues() {
method getDefaultCode (line 168) | getDefaultCode() {
method getValues (line 183) | getValues() {
method getDetail (line 190) | getDetail() {
method reset (line 215) | reset(code) {
FILE: dist/button/index.js
method onClick (line 50) | onClick(event) {
FILE: dist/calendar/components/header/index.js
method created (line 19) | created() {
method initWeekDay (line 23) | initWeekDay() {
method onClickSubtitle (line 33) | onClickSubtitle(event) {
FILE: dist/calendar/components/month/index.d.ts
type Day (line 1) | interface Day {
FILE: dist/calendar/components/month/index.js
method onClick (line 45) | onClick(event) {
method setDays (line 52) | setDays() {
method getMultipleDayType (line 74) | getMultipleDayType(day) {
method getRangeDayType (line 95) | getRangeDayType(day) {
method getDayType (line 123) | getDayType(day) {
method getBottomInfo (line 140) | getBottomInfo(type) {
FILE: dist/calendar/index.js
method observer (line 20) | observer(val) {
method observer (line 44) | observer(val) {
method minDate (line 127) | minDate() {
method maxDate (line 130) | maxDate() {
method created (line 134) | created() {
method mounted (line 139) | mounted() {
method reset (line 146) | reset() {
method initRect (line 150) | initRect() {
method limitDateRange (line 167) | limitDateRange(date, minDate = null, maxDate = null) {
method getInitialDate (line 178) | getInitialDate(defaultDate = null) {
method scrollIntoView (line 205) | scrollIntoView() {
method onOpen (line 226) | onOpen() {
method onOpened (line 229) | onOpened() {
method onClose (line 232) | onClose() {
method onClosed (line 235) | onClosed() {
method onClickDay (line 238) | onClickDay(event) {
method unselect (line 298) | unselect(dateArray) {
method select (line 304) | select(date, complete) {
method emit (line 326) | emit(date) {
method checkRange (line 332) | checkRange(date) {
method onConfirm (line 346) | onConfirm() {
method onClickSubtitle (line 356) | onClickSubtitle(event) {
FILE: dist/calendar/utils.js
constant ROW_HEIGHT (line 1) | const ROW_HEIGHT = 64;
function formatMonthTitle (line 2) | function formatMonthTitle(date) {
function compareMonth (line 8) | function compareMonth(date1, date2) {
function compareDay (line 24) | function compareDay(day1, day2) {
function getDayByOffset (line 39) | function getDayByOffset(date, offset) {
function getPrevDay (line 44) | function getPrevDay(date) {
function getNextDay (line 47) | function getNextDay(date) {
function getToday (line 50) | function getToday() {
function calcDateNum (line 55) | function calcDateNum(date) {
function copyDates (line 60) | function copyDates(dates) {
function getMonthEndDay (line 71) | function getMonthEndDay(year, month) {
function getMonths (line 74) | function getMonths(minDate, maxDate) {
FILE: dist/card/index.js
method updatePrice (line 37) | updatePrice() {
method onClickThumb (line 45) | onClickThumb() {
FILE: dist/cascader/index.js
method options (line 67) | options() {
method value (line 70) | value(newVal) {
method created (line 74) | created() {
method updateValue (line 78) | updateValue(val) {
method updateFieldNames (line 88) | updateFieldNames() {
method getSelectedOptionsByValue (line 96) | getSelectedOptionsByValue(options, value) {
method updateTabs (line 110) | updateTabs() {
method onClose (line 158) | onClose() {
method onClickTab (line 161) | onClickTab(e) {
method onSelect (line 169) | onSelect(e) {
FILE: dist/cell/index.js
method onClick (line 33) | onClick(event) {
FILE: dist/checkbox-group/index.js
method updateChildren (line 24) | updateChildren() {
method updateChild (line 27) | updateChild(child) {
FILE: dist/checkbox/index.js
function emit (line 3) | function emit(target, value) {
method emitChange (line 35) | emitChange(value) {
method toggle (line 43) | toggle() {
method onClickLabel (line 49) | onClickLabel() {
method setParentValue (line 55) | setParentValue(parent, value) {
FILE: dist/circle/canvas.d.ts
type CanvasContext (line 2) | type CanvasContext = WechatMiniprogram.CanvasContext;
FILE: dist/circle/canvas.js
function adaptor (line 1) | function adaptor(ctx) {
FILE: dist/circle/index.js
function format (line 7) | function format(rate) {
constant PERIMETER (line 10) | const PERIMETER = 2 * Math.PI;
constant BEGIN_ANGLE (line 11) | const BEGIN_ANGLE = -Math.PI / 2;
constant STEP (line 12) | const STEP = 1;
method observer (line 32) | observer() {
method observer (line 44) | observer() {
method getContext (line 67) | getContext() {
method setHoverColor (line 92) | setHoverColor() {
method presetCanvas (line 108) | presetCanvas(context, strokeStyle, beginAngle, endAngle, fill) {
method renderLayerCircle (line 123) | renderLayerCircle(context) {
method renderHoverCircle (line 127) | renderHoverCircle(context, formatValue) {
method drawCircle (line 136) | drawCircle(currentValue) {
method reRender (line 150) | reRender() {
method clearMockInterval (line 181) | clearMockInterval() {
method mounted (line 188) | mounted() {
method destroyed (line 194) | destroyed() {
FILE: dist/collapse-item/animate.js
function useAnimation (line 2) | function useAnimation(context, expanded, mounted, height) {
function setContentAnimate (line 33) | function setContentAnimate(context, expanded, mounted) {
FILE: dist/collapse-item/index.js
method mounted (line 29) | mounted() {
method updateExpanded (line 34) | updateExpanded() {
method onClick (line 51) | onClick() {
FILE: dist/collapse/index.js
method updateExpanded (line 20) | updateExpanded() {
method switch (line 25) | switch(name, expanded) {
FILE: dist/common/color.js
constant RED (line 1) | const RED = '#ee0a24';
constant BLUE (line 2) | const BLUE = '#1989fa';
constant WHITE (line 3) | const WHITE = '#fff';
constant GREEN (line 4) | const GREEN = '#07c160';
constant ORANGE (line 5) | const ORANGE = '#ff976a';
constant GRAY (line 6) | const GRAY = '#323233';
constant GRAY_DARK (line 7) | const GRAY_DARK = '#969799';
FILE: dist/common/component.js
function mapKeys (line 2) | function mapKeys(source, target, map) {
function VantComponent (line 9) | function VantComponent(vantOptions) {
FILE: dist/common/relation.d.ts
type TrivialInstance (line 2) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
FILE: dist/common/relation.js
function useParent (line 1) | function useParent(name, onEffect) {
function useChildren (line 31) | function useChildren(name, onEffect) {
FILE: dist/common/utils.js
function range (line 5) | function range(num, min, max) {
function nextTick (line 8) | function nextTick(cb) {
function addUnit (line 18) | function addUnit(value) {
function requestAnimationFrame (line 25) | function requestAnimationFrame(cb) {
function pickExclude (line 30) | function pickExclude(obj, keys) {
function getRect (line 41) | function getRect(context, selector) {
function getAllRect (line 50) | function getAllRect(context, selector) {
function groupSetData (line 59) | function groupSetData(context, cb) {
function toPromise (line 67) | function toPromise(promiseLike) {
function addNumber (line 74) | function addNumber(num1, num2) {
function getCurrentPage (line 80) | function getCurrentPage() {
FILE: dist/common/validator.js
function isFunction (line 2) | function isFunction(val) {
function isPlainObject (line 5) | function isPlainObject(val) {
function isPromise (line 8) | function isPromise(val) {
function isDef (line 11) | function isDef(value) {
function isObj (line 14) | function isObj(x) {
function isNumber (line 18) | function isNumber(value) {
function isBoolean (line 21) | function isBoolean(value) {
constant IMAGE_REGEXP (line 24) | const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
constant VIDEO_REGEXP (line 25) | const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mk...
function isImageUrl (line 26) | function isImageUrl(url) {
function isVideoUrl (line 29) | function isVideoUrl(url) {
FILE: dist/common/version.d.ts
type WxWorkSystemInfo (line 2) | interface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo {
type SystemInfo (line 5) | interface SystemInfo extends WxWorkSystemInfo, WechatMiniprogram.SystemI...
FILE: dist/common/version.js
function getSystemInfoSync (line 2) | function getSystemInfoSync() {
function compareVersion (line 8) | function compareVersion(v1, v2) {
function gte (line 30) | function gte(version) {
function canIUseModel (line 34) | function canIUseModel() {
function canIUseFormFieldButton (line 37) | function canIUseFormFieldButton() {
function canIUseAnimate (line 40) | function canIUseAnimate() {
function canIUseGroupSetData (line 43) | function canIUseGroupSetData() {
function canIUseNextTick (line 46) | function canIUseNextTick() {
function canIUseCanvas2d (line 54) | function canIUseCanvas2d() {
function canIUseGetUserProfile (line 57) | function canIUseGetUserProfile() {
FILE: dist/count-down/index.js
function simpleTick (line 3) | function simpleTick(fn) {
method destroyed (line 27) | destroyed() {
method start (line 33) | start() {
method pause (line 42) | pause() {
method reset (line 47) | reset() {
method tick (line 55) | tick() {
method microTick (line 63) | microTick() {
method macroTick (line 71) | macroTick() {
method getRemain (line 82) | getRemain() {
method setRemain (line 85) | setRemain(remain) {
FILE: dist/count-down/utils.d.ts
type TimeData (line 1) | type TimeData = {
FILE: dist/count-down/utils.js
function padZero (line 1) | function padZero(num, targetLength = 2) {
constant SECOND (line 8) | const SECOND = 1000;
constant MINUTE (line 9) | const MINUTE = 60 * SECOND;
constant HOUR (line 10) | const HOUR = 60 * MINUTE;
constant DAY (line 11) | const DAY = 24 * HOUR;
function parseTimeData (line 12) | function parseTimeData(time) {
function parseFormat (line 26) | function parseFormat(format, timeData) {
function isSameSecond (line 55) | function isSameSecond(time1, time2) {
FILE: dist/datetime-picker/index.js
function isValidDate (line 5) | function isValidDate(date) {
function range (line 8) | function range(num, min, max) {
function padZero (line 11) | function padZero(val) {
function times (line 14) | function times(n, iteratee) {
function getTrueValue (line 22) | function getTrueValue(formattedValue) {
function getMonthEndDay (line 31) | function getMonthEndDay(year, month) {
method updateValue (line 80) | updateValue() {
method getPicker (line 90) | getPicker() {
method updateColumns (line 99) | updateColumns() {
method getOriginColumns (line 106) | getOriginColumns() {
method getRanges (line 120) | getRanges() {
method correctValue (line 164) | correctValue(value) {
method getBoundary (line 187) | getBoundary(type, innerValue) {
method onCancel (line 221) | onCancel() {
method onConfirm (line 224) | onConfirm() {
method onChange (line 227) | onChange() {
method updateColumnValue (line 262) | updateColumnValue(value) {
method created (line 289) | created() {
FILE: dist/definitions/index.d.ts
type VantComponentInstance (line 2) | interface VantComponentInstance {
type VantComponentOptions (line 9) | type VantComponentOptions<Data extends WechatMiniprogram.Component.DataO...
FILE: dist/dialog/dialog.d.ts
type Action (line 3) | type Action = 'confirm' | 'cancel' | 'overlay';
type DialogContext (line 4) | type DialogContext = WechatMiniprogram.Page.TrivialInstance | WechatMini...
type DialogOptions (line 5) | interface DialogOptions {
FILE: dist/dialog/dialog.js
function getContext (line 26) | function getContext() {
FILE: dist/dialog/index.js
method observer (line 11) | observer(show) {
method onConfirm (line 81) | onConfirm() {
method onCancel (line 84) | onCancel() {
method onClickOverlay (line 87) | onClickOverlay() {
method close (line 90) | close(action) {
method onAfterLeave (line 94) | onAfterLeave() {
method stopLoading (line 102) | stopLoading() {
method handleAction (line 110) | handleAction(action) {
FILE: dist/dropdown-item/index.js
method rerender (line 46) | rerender() {
method updateDataFromParent (line 52) | updateDataFromParent() {
method onOpen (line 65) | onOpen() {
method onOpened (line 68) | onOpened() {
method onClose (line 71) | onClose() {
method onClosed (line 74) | onClosed() {
method onOptionTap (line 78) | onOptionTap(event) {
method toggle (line 89) | toggle(show, options = {}) {
method onBeforeToggle (line 117) | onBeforeToggle(status) {
FILE: dist/dropdown-item/shared.d.ts
type Option (line 1) | interface Option {
FILE: dist/dropdown-menu/index.js
constant ARRAY (line 4) | let ARRAY = [];
method beforeCreate (line 52) | beforeCreate() {
method destroyed (line 57) | destroyed() {
method updateItemListData (line 61) | updateItemListData() {
method updateChildrenData (line 66) | updateChildrenData() {
method toggleItem (line 71) | toggleItem(active) {
method close (line 82) | close() {
method getChildWrapperStyle (line 87) | getChildWrapperStyle() {
method onTitleTap (line 102) | onTitleTap(event) {
FILE: dist/field/index.js
method value (line 35) | value(value) {
method clearTrigger (line 42) | clearTrigger() {
method created (line 46) | created() {
method formatValue (line 51) | formatValue(value) {
method onInput (line 58) | onInput(event) {
method onFocus (line 65) | onFocus(event) {
method onBlur (line 70) | onBlur(event) {
method onClickIcon (line 75) | onClickIcon() {
method onClickInput (line 78) | onClickInput(event) {
method onClear (line 81) | onClear() {
method onConfirm (line 90) | onConfirm(event) {
method setValue (line 96) | setValue(value) {
method onLineChange (line 104) | onLineChange(event) {
method onKeyboardHeightChange (line 107) | onKeyboardHeightChange(event) {
method onBindNicknameReview (line 110) | onBindNicknameReview(event) {
method emitChange (line 113) | emitChange(detail) {
method setShowClear (line 125) | setShowClear() {
method noop (line 136) | noop() { }
FILE: dist/field/types.d.ts
type InputDetails (line 1) | interface InputDetails {
FILE: dist/goods-action-button/index.js
method onClick (line 28) | onClick(event) {
method updateStyle (line 32) | updateStyle() {
FILE: dist/goods-action-icon/index.js
method onClick (line 22) | onClick(event) {
FILE: dist/grid-item/index.js
method mounted (line 24) | mounted() {
method updateStyle (line 28) | updateStyle() {
method onClick (line 47) | onClick() {
FILE: dist/grid/index.js
method updateChildren (line 49) | updateChildren() {
FILE: dist/icon/index.js
method onClick (line 17) | onClick() {
FILE: dist/image/index.js
method observer (line 9) | observer() {
method onLoad (line 47) | onLoad(event) {
method onError (line 53) | onError(event) {
method onClick (line 60) | onClick(event) {
FILE: dist/index-anchor/index.js
method scrollIntoView (line 16) | scrollIntoView(scrollTop) {
FILE: dist/index-bar/index.js
method created (line 50) | created() {
method updateData (line 54) | updateData() {
method setRect (line 69) | setRect() {
method setAnchorsRect (line 76) | setAnchorsRect() {
method setListRect (line 84) | setListRect() {
method setSiderbarRect (line 95) | setSiderbarRect() {
method setDiffData (line 106) | setDiffData({ target, data }) {
method getAnchorRect (line 117) | getAnchorRect(anchor) {
method getActiveAnchorIndex (line 123) | getActiveAnchorIndex() {
method onScroll (line 135) | onScroll() {
method onClick (line 215) | onClick(event) {
method onTouchMove (line 218) | onTouchMove(event) {
method onTouchStop (line 231) | onTouchStop() {
method scrollToAnchor (line 234) | scrollToAnchor(index) {
FILE: dist/mixins/basic.js
method $emit (line 3) | $emit(name, detail, options) {
method set (line 6) | set(data) {
method setView (line 11) | setView(data, callback) {
FILE: dist/mixins/button.js
method onGetUserInfo (line 23) | onGetUserInfo(event) {
method onContact (line 26) | onContact(event) {
method onGetPhoneNumber (line 29) | onGetPhoneNumber(event) {
method onGetRealTimePhoneNumber (line 32) | onGetRealTimePhoneNumber(event) {
method onError (line 35) | onError(event) {
method onLaunchApp (line 38) | onLaunchApp(event) {
method onOpenSetting (line 41) | onOpenSetting(event) {
method onAgreePrivacyAuthorization (line 44) | onAgreePrivacyAuthorization(event) {
method onChooseAvatar (line 47) | onChooseAvatar(event) {
FILE: dist/mixins/link.js
method jumpLink (line 10) | jumpLink(urlKey = 'url') {
FILE: dist/mixins/page-scroll.d.ts
type IPageScrollOption (line 3) | type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption;
type Scroller (line 4) | type Scroller = (this: WechatMiniprogram.Component.TrivialInstance, even...
FILE: dist/mixins/page-scroll.js
function onPageScroll (line 3) | function onPageScroll(event) {
function pageScrollMixin (line 12) | function pageScrollMixin(scroller) {
FILE: dist/mixins/touch.js
constant MIN_DISTANCE (line 2) | const MIN_DISTANCE = 10;
function getDirection (line 3) | function getDirection(x, y) {
method resetTouchStatus (line 14) | resetTouchStatus() {
method touchStart (line 21) | touchStart(event) {
method touchMove (line 27) | touchMove(event) {
FILE: dist/mixins/transition.js
function transition (line 10) | function transition(showDefaultValue) {
FILE: dist/nav-bar/index.js
method created (line 35) | created() {
method mounted (line 42) | mounted() {
method onClickLeft (line 46) | onClickLeft() {
method onClickRight (line 49) | onClickRight() {
method setHeight (line 52) | setHeight() {
FILE: dist/notice-bar/index.js
method created (line 44) | created() {
method destroyed (line 50) | destroyed() {
method mounted (line 53) | mounted() {
method init (line 57) | init() {
method initAnimation (line 79) | initAnimation(warpWidth, contentWidth) {
method scroll (line 93) | scroll(isInit = false) {
method onClickIcon (line 115) | onClickIcon(event) {
method onClick (line 123) | onClick(event) {
FILE: dist/notify/index.js
method created (line 36) | created() {
method show (line 41) | show() {
method hide (line 52) | hide() {
method onTap (line 58) | onTap(event) {
FILE: dist/notify/notify.d.ts
type NotifyOptions (line 1) | interface NotifyOptions {
FILE: dist/notify/notify.js
function parseOptions (line 17) | function parseOptions(message) {
function getContext (line 23) | function getContext() {
function Notify (line 27) | function Notify(options) {
FILE: dist/overlay/index.js
method onClick (line 24) | onClick() {
method noop (line 28) | noop() { }
FILE: dist/picker-column/index.js
constant DEFAULT_DURATION (line 4) | const DEFAULT_DURATION = 200;
method observer (line 19) | observer(value) {
method created (line 32) | created() {
method getCount (line 42) | getCount() {
method onTouchStart (line 45) | onTouchStart(event) {
method onTouchMove (line 52) | onTouchMove(event) {
method onTouchEnd (line 59) | onTouchEnd() {
method onClickItem (line 67) | onClickItem(event) {
method adjustIndex (line 71) | adjustIndex(index) {
method isDisabled (line 84) | isDisabled(option) {
method getOptionText (line 87) | getOptionText(option) {
method setIndex (line 93) | setIndex(index, userAction) {
method setValue (line 104) | setValue(value) {
method getValue (line 113) | getValue() {
FILE: dist/picker/index.js
method observer (line 17) | observer(columns = []) {
method beforeCreate (line 24) | beforeCreate() {
method noop (line 30) | noop() { }
method setColumns (line 31) | setColumns() {
method emit (line 37) | emit(event) {
method onChange (line 52) | onChange(event) {
method getColumn (line 69) | getColumn(index) {
method getColumnValue (line 73) | getColumnValue(index) {
method setColumnValue (line 78) | setColumnValue(index, value) {
method getColumnIndex (line 86) | getColumnIndex(columnIndex) {
method setColumnIndex (line 90) | setColumnIndex(columnIndex, optionIndex) {
method getColumnValues (line 98) | getColumnValues(index) {
method setColumnValues (line 102) | setColumnValues(index, options, needReset = true) {
method getValues (line 118) | getValues() {
method setValues (line 122) | setValues(values) {
method getIndexes (line 127) | getIndexes() {
method setIndexes (line 131) | setIndexes(indexes) {
FILE: dist/popup/index.js
method created (line 69) | created() {
method onClickCloseIcon (line 73) | onClickCloseIcon() {
method onClickOverlay (line 76) | onClickOverlay() {
method observeClass (line 82) | observeClass() {
FILE: dist/progress/index.js
method mounted (line 34) | mounted() {
method setLeft (line 38) | setLeft() {
FILE: dist/radio-group/index.js
method updateChildren (line 18) | updateChildren() {
FILE: dist/radio/index.js
method updateFromParent (line 35) | updateFromParent() {
method emitChange (line 46) | emitChange(value) {
method onChange (line 54) | onChange() {
method onClickLabel (line 59) | onClickLabel() {
FILE: dist/rate/index.js
method observer (line 10) | observer(value) {
method observer (line 34) | observer(value) {
method onSelect (line 49) | onSelect(event) {
method onTouchMove (line 63) | onTouchMove(event) {
FILE: dist/row/index.js
method setGutter (line 17) | setGutter() {
FILE: dist/search/index.js
method onChange (line 62) | onChange(event) {
method onCancel (line 68) | onCancel() {
method onSearch (line 81) | onSearch(event) {
method onFocus (line 84) | onFocus(event) {
method onBlur (line 87) | onBlur(event) {
method onClear (line 90) | onClear(event) {
method onClickInput (line 93) | onClickInput(event) {
FILE: dist/share-sheet/index.js
method onClickOverlay (line 45) | onClickOverlay() {
method onCancel (line 48) | onCancel() {
method onSelect (line 52) | onSelect(event) {
method onClose (line 55) | onClose() {
FILE: dist/share-sheet/options.js
method onSelect (line 8) | onSelect(event) {
FILE: dist/sidebar-item/index.js
method onClick (line 14) | onClick() {
method setActive (line 25) | setActive(selected) {
FILE: dist/sidebar/index.js
method beforeCreate (line 14) | beforeCreate() {
method setActive (line 18) | setActive(activeKey) {
FILE: dist/skeleton/index.js
method observer (line 8) | observer(value) {
method observer (line 37) | observer(val) {
FILE: dist/slider/index.js
constant DRAG_STATUS (line 5) | const DRAG_STATUS = {
method observer (line 33) | observer(val) {
method created (line 42) | created() {
method onTouchStart (line 46) | onTouchStart(event) {
method onTouchMove (line 64) | onTouchMove(event) {
method onTouchEnd (line 87) | onTouchEnd() {
method onClick (line 98) | onClick(event) {
method isRange (line 125) | isRange(val) {
method handleOverlap (line 129) | handleOverlap(value) {
method updateValue (line 135) | updateValue(value, end, drag) {
method getScope (line 167) | getScope() {
method getRange (line 170) | getRange() {
method getOffsetWidth (line 174) | getOffsetWidth(current, min) {
method calcMainAxis (line 180) | calcMainAxis() {
method calcOffset (line 189) | calcOffset() {
method format (line 198) | format(value) {
FILE: dist/stepper/index.js
constant LONG_PRESS_START_TIME (line 3) | const LONG_PRESS_START_TIME = 600;
constant LONG_PRESS_INTERVAL (line 4) | const LONG_PRESS_INTERVAL = 200;
function add (line 6) | function add(num1, num2) {
function equal (line 10) | function equal(value1, value2) {
method value (line 69) | value() {
method created (line 73) | created() {
method observeValue (line 79) | observeValue() {
method check (line 83) | check() {
method isDisabled (line 89) | isDisabled(type) {
method onFocus (line 96) | onFocus(event) {
method onBlur (line 99) | onBlur(event) {
method filter (line 106) | filter(value) {
method format (line 113) | format(value) {
method onInput (line 124) | onInput(event) {
method emitChange (line 133) | emitChange(data) {
method onChange (line 141) | onChange() {
method longPressStep (line 152) | longPressStep() {
method onTap (line 158) | onTap(event) {
method onTouchStart (line 163) | onTouchStart(event) {
method onTouchEnd (line 177) | onTouchEnd() {
FILE: dist/steps/index.js
method onClick (line 28) | onClick(event) {
FILE: dist/sticky/index.js
constant ROOT_ELEMENT (line 5) | const ROOT_ELEMENT = '.van-sticky';
method observer (line 27) | observer(val) {
method mounted (line 45) | mounted() {
method onScroll (line 49) | onScroll({ scrollTop } = {}) {
method setDataAfterDiff (line 95) | setDataAfterDiff(data) {
method getContainerRect (line 112) | getContainerRect() {
FILE: dist/submit-bar/index.js
method updatePrice (line 39) | updatePrice() {
method updateTip (line 49) | updateTip() {
method onSubmit (line 52) | onSubmit(event) {
FILE: dist/swipe-cell/index.js
constant THRESHOLD (line 4) | const THRESHOLD = 0.3;
constant ARRAY (line 5) | let ARRAY = [];
method observer (line 12) | observer(leftWidth = 0) {
method observer (line 21) | observer(rightWidth = 0) {
method created (line 38) | created() {
method destroyed (line 42) | destroyed() {
method open (line 46) | open(position) {
method close (line 55) | close() {
method swipeMove (line 58) | swipeMove(offset = 0) {
method swipeLeaveTransition (line 73) | swipeLeaveTransition() {
method startDrag (line 87) | startDrag(event) {
method noop (line 94) | noop() { }
method onDrag (line 95) | onDrag(event) {
method endDrag (line 108) | endDrag() {
method onClick (line 115) | onClick(event) {
FILE: dist/switch/index.js
method onClick (line 25) | onClick() {
FILE: dist/tab/index.js
method getComputedName (line 35) | getComputedName() {
method updateRender (line 41) | updateRender(active, parent) {
method update (line 50) | update() {
FILE: dist/tabbar-item/index.js
method onClick (line 29) | onClick() {
method updateFromParent (line 44) | updateFromParent() {
FILE: dist/tabbar/index.js
method updateChildren (line 47) | updateChildren() {
method setHeight (line 54) | setHeight() {
FILE: dist/tabs/index.js
method observer (line 27) | observer() {
method observer (line 43) | observer(name) {
method observer (line 68) | observer(value) {
method mounted (line 98) | mounted() {
method updateTabs (line 109) | updateTabs() {
method trigger (line 117) | trigger(eventName, child) {
method onTap (line 125) | onTap(event) {
method setCurrentIndexByName (line 140) | setCurrentIndexByName(name) {
method setCurrentIndex (line 147) | setCurrentIndex(currentIndex) {
method getCurrentName (line 181) | getCurrentName() {
method resize (line 187) | resize() {
method scrollIntoView (line 216) | scrollIntoView() {
method onTouchScroll (line 239) | onTouchScroll(event) {
method onTouchStart (line 242) | onTouchStart(event) {
method onTouchMove (line 248) | onTouchMove(event) {
method onTouchEnd (line 254) | onTouchEnd() {
method getAvaiableTab (line 267) | getAvaiableTab(direction) {
method onBeforeChange (line 281) | onBeforeChange(index) {
method getChildData (line 290) | getChildData(index, child) {
FILE: dist/tag/index.js
method onClose (line 17) | onClose() {
FILE: dist/toast/index.js
method noop (line 27) | noop() { }
FILE: dist/toast/toast.d.ts
type ToastMessage (line 3) | type ToastMessage = string | number;
type ToastContext (line 4) | type ToastContext = WechatMiniprogram.Component.TrivialInstance | Wechat...
type ToastOptions (line 5) | interface ToastOptions {
FILE: dist/toast/toast.js
function parseOptions (line 16) | function parseOptions(message) {
function getContext (line 19) | function getContext() {
function Toast (line 23) | function Toast(toastOptions) {
FILE: dist/tree-select/index.js
method onSelectItem (line 40) | onSelectItem(event) {
method onClickNav (line 54) | onClickNav(event) {
method updateSubItems (line 62) | updateSubItems() {
FILE: dist/uploader/index.js
method formatFileList (line 52) | formatFileList() {
method getDetail (line 57) | getDetail(index) {
method startUpload (line 63) | startUpload() {
method onBeforeRead (line 75) | onBeforeRead(file) {
method onAfterRead (line 98) | onAfterRead(file) {
method deleteItem (line 112) | deleteItem(event) {
method onPreviewImage (line 116) | onPreviewImage(event) {
method onPreviewVideo (line 131) | onPreviewVideo(event) {
method onPreviewFile (line 155) | onPreviewFile(event) {
method onClickPreview (line 164) | onClickPreview(event) {
FILE: dist/uploader/utils.d.ts
type File (line 1) | interface File {
FILE: dist/uploader/utils.js
function isImageFile (line 3) | function isImageFile(item) {
function isVideoFile (line 15) | function isVideoFile(item) {
function formatImage (line 27) | function formatImage(res) {
function formatVideo (line 30) | function formatVideo(res) {
function formatMedia (line 35) | function formatMedia(res) {
function formatFile (line 38) | function formatFile(res) {
function chooseFile (line 41) | function chooseFile({ accept, multiple, capture, compressed, maxDuration...
FILE: example/app.js
method onLaunch (line 3) | onLaunch() {
FILE: example/common/page.js
method onShareAppMessage (line 3) | onShareAppMessage() {
FILE: example/components/demo-home-nav/index.js
method onClick (line 7) | onClick(event) {
FILE: lib/calendar/components/month/index.d.ts
type Day (line 1) | interface Day {
FILE: lib/calendar/utils.js
function formatMonthTitle (line 5) | function formatMonthTitle(date) {
function compareMonth (line 12) | function compareMonth(date1, date2) {
function compareDay (line 29) | function compareDay(day1, day2) {
function getDayByOffset (line 45) | function getDayByOffset(date, offset) {
function getPrevDay (line 51) | function getPrevDay(date) {
function getNextDay (line 55) | function getNextDay(date) {
function getToday (line 59) | function getToday() {
function calcDateNum (line 65) | function calcDateNum(date) {
function copyDates (line 71) | function copyDates(dates) {
function getMonthEndDay (line 83) | function getMonthEndDay(year, month) {
function getMonths (line 87) | function getMonths(minDate, maxDate) {
FILE: lib/checkbox/index.js
function emit (line 5) | function emit(target, value) {
FILE: lib/circle/canvas.d.ts
type CanvasContext (line 2) | type CanvasContext = WechatMiniprogram.CanvasContext;
FILE: lib/circle/canvas.js
function adaptor (line 4) | function adaptor(ctx) {
FILE: lib/circle/index.js
function format (line 9) | function format(rate) {
FILE: lib/collapse-item/animate.js
function useAnimation (line 5) | function useAnimation(context, expanded, mounted, height) {
function setContentAnimate (line 36) | function setContentAnimate(context, expanded, mounted) {
FILE: lib/common/component.js
function mapKeys (line 5) | function mapKeys(source, target, map) {
function VantComponent (line 12) | function VantComponent(vantOptions) {
FILE: lib/common/relation.d.ts
type TrivialInstance (line 2) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
FILE: lib/common/relation.js
function useParent (line 4) | function useParent(name, onEffect) {
function useChildren (line 37) | function useChildren(name, onEffect) {
FILE: lib/common/utils.js
function range (line 10) | function range(num, min, max) {
function nextTick (line 14) | function nextTick(cb) {
function addUnit (line 25) | function addUnit(value) {
function requestAnimationFrame (line 33) | function requestAnimationFrame(cb) {
function pickExclude (line 39) | function pickExclude(obj, keys) {
function getRect (line 51) | function getRect(context, selector) {
function getAllRect (line 64) | function getAllRect(context, selector) {
function groupSetData (line 77) | function groupSetData(context, cb) {
function toPromise (line 86) | function toPromise(promiseLike) {
function addNumber (line 94) | function addNumber(num1, num2) {
function getCurrentPage (line 102) | function getCurrentPage() {
FILE: lib/common/validator.js
function isFunction (line 5) | function isFunction(val) {
function isPlainObject (line 9) | function isPlainObject(val) {
function isPromise (line 13) | function isPromise(val) {
function isDef (line 17) | function isDef(value) {
function isObj (line 21) | function isObj(x) {
function isNumber (line 26) | function isNumber(value) {
function isBoolean (line 30) | function isBoolean(value) {
function isImageUrl (line 36) | function isImageUrl(url) {
function isVideoUrl (line 40) | function isVideoUrl(url) {
FILE: lib/common/version.d.ts
type WxWorkSystemInfo (line 2) | interface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo {
type SystemInfo (line 5) | interface SystemInfo extends WxWorkSystemInfo, WechatMiniprogram.SystemI...
FILE: lib/common/version.js
function getSystemInfoSync (line 5) | function getSystemInfoSync() {
function compareVersion (line 12) | function compareVersion(v1, v2) {
function gte (line 34) | function gte(version) {
function canIUseModel (line 38) | function canIUseModel() {
function canIUseFormFieldButton (line 42) | function canIUseFormFieldButton() {
function canIUseAnimate (line 46) | function canIUseAnimate() {
function canIUseGroupSetData (line 50) | function canIUseGroupSetData() {
function canIUseNextTick (line 54) | function canIUseNextTick() {
function canIUseCanvas2d (line 63) | function canIUseCanvas2d() {
function canIUseGetUserProfile (line 67) | function canIUseGetUserProfile() {
FILE: lib/count-down/index.js
function simpleTick (line 5) | function simpleTick(fn) {
FILE: lib/count-down/utils.d.ts
type TimeData (line 1) | type TimeData = {
FILE: lib/count-down/utils.js
function padZero (line 4) | function padZero(num, targetLength) {
function parseTimeData (line 16) | function parseTimeData(time) {
function parseFormat (line 31) | function parseFormat(format, timeData) {
function isSameSecond (line 61) | function isSameSecond(time1, time2) {
FILE: lib/datetime-picker/index.js
function isValidDate (line 27) | function isValidDate(date) {
function range (line 30) | function range(num, min, max) {
function padZero (line 33) | function padZero(val) {
function times (line 36) | function times(n, iteratee) {
function getTrueValue (line 44) | function getTrueValue(formattedValue) {
function getMonthEndDay (line 53) | function getMonthEndDay(year, month) {
FILE: lib/definitions/index.d.ts
type VantComponentInstance (line 2) | interface VantComponentInstance {
type VantComponentOptions (line 9) | type VantComponentOptions<Data extends WechatMiniprogram.Component.DataO...
FILE: lib/dialog/dialog.d.ts
type Action (line 3) | type Action = 'confirm' | 'cancel' | 'overlay';
type DialogContext (line 4) | type DialogContext = WechatMiniprogram.Page.TrivialInstance | WechatMini...
type DialogOptions (line 5) | interface DialogOptions {
FILE: lib/dialog/dialog.js
function getContext (line 39) | function getContext() {
FILE: lib/dropdown-item/shared.d.ts
type Option (line 1) | interface Option {
FILE: lib/field/types.d.ts
type InputDetails (line 1) | interface InputDetails {
FILE: lib/mixins/page-scroll.d.ts
type IPageScrollOption (line 3) | type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption;
type Scroller (line 4) | type Scroller = (this: WechatMiniprogram.Component.TrivialInstance, even...
FILE: lib/mixins/page-scroll.js
function onPageScroll (line 6) | function onPageScroll(event) {
function pageScrollMixin (line 15) | function pageScrollMixin(scroller) {
FILE: lib/mixins/touch.js
function getDirection (line 6) | function getDirection(x, y) {
FILE: lib/mixins/transition.js
function transition (line 13) | function transition(showDefaultValue) {
FILE: lib/notify/notify.d.ts
type NotifyOptions (line 1) | interface NotifyOptions {
FILE: lib/notify/notify.js
function parseOptions (line 30) | function parseOptions(message) {
function getContext (line 36) | function getContext() {
function Notify (line 40) | function Notify(options) {
FILE: lib/stepper/index.js
function add (line 19) | function add(num1, num2) {
function equal (line 23) | function equal(value1, value2) {
FILE: lib/toast/toast.d.ts
type ToastMessage (line 3) | type ToastMessage = string | number;
type ToastContext (line 4) | type ToastContext = WechatMiniprogram.Component.TrivialInstance | Wechat...
type ToastOptions (line 5) | interface ToastOptions {
FILE: lib/toast/toast.js
function parseOptions (line 29) | function parseOptions(message) {
function getContext (line 32) | function getContext() {
function Toast (line 36) | function Toast(toastOptions) {
FILE: lib/uploader/utils.d.ts
type File (line 1) | interface File {
FILE: lib/uploader/utils.js
function isImageFile (line 17) | function isImageFile(item) {
function isVideoFile (line 30) | function isVideoFile(item) {
function formatImage (line 43) | function formatImage(res) {
function formatVideo (line 46) | function formatVideo(res) {
function formatMedia (line 51) | function formatMedia(res) {
function formatFile (line 54) | function formatFile(res) {
function chooseFile (line 57) | function chooseFile(_a) {
FILE: packages/action-sheet/demo/index.ts
method toggle (line 27) | toggle(type) {
method toggleActionSheet1 (line 33) | toggleActionSheet1() {
method toggleActionSheet2 (line 37) | toggleActionSheet2() {
method toggleActionSheet3 (line 41) | toggleActionSheet3() {
method toggleActionSheet4 (line 45) | toggleActionSheet4() {
method toggleActionSheet5 (line 49) | toggleActionSheet5() {
method toggleActionSheet6 (line 53) | toggleActionSheet6() {
method onGetUserInfo (line 57) | onGetUserInfo(e) {
FILE: packages/action-sheet/index.ts
method onSelect (line 48) | onSelect(event: WechatMiniprogram.TouchEvent) {
method onCancel (line 70) | onCancel() {
method onClose (line 74) | onClose() {
method onClickOverlay (line 78) | onClickOverlay() {
FILE: packages/area/demo/index.ts
method mounted (line 13) | mounted() {
method onChange (line 34) | onChange(event) {
method onConfirm (line 43) | onConfirm(event) {
method onCancel (line 47) | onCancel(event) {
FILE: packages/area/index.ts
type AreaItem (line 5) | type AreaItem = {
constant EMPTY_CODE (line 10) | const EMPTY_CODE = '000000';
method observer (line 23) | observer(value: string) {
method observer (line 39) | observer(val) {
method mounted (line 56) | mounted() {
method getPicker (line 63) | getPicker() {
method onCancel (line 70) | onCancel(event: WechatMiniprogram.CustomEvent) {
method onConfirm (line 74) | onConfirm(event: WechatMiniprogram.CustomEvent) {
method emit (line 81) | emit(type: string, detail) {
method parseValues (line 87) | parseValues(values: AreaItem[]) {
method onChange (line 106) | onChange(event: WechatMiniprogram.CustomEvent) {
method getConfig (line 118) | getConfig(type: string) {
method getList (line 123) | getList(type: string, code?: string): AreaItem[] {
method getIndex (line 164) | getIndex(type: string, code: string) {
method setValues (line 183) | setValues() {
method getDefaultCode (line 228) | getDefaultCode() {
method getValues (line 248) | getValues() {
method getDetail (line 258) | getDetail() {
method reset (line 286) | reset(code) {
FILE: packages/button/index.ts
method onClick (line 56) | onClick(event: WechatMiniprogram.TouchEvent) {
FILE: packages/button/test/index.spec.ts
method onClick (line 24) | onClick() {
method onClick (line 52) | onClick() {
FILE: packages/calendar/components/header/index.ts
method created (line 22) | created() {
method initWeekDay (line 27) | initWeekDay() {
method onClickSubtitle (line 39) | onClickSubtitle(event: WechatMiniprogram.TouchEvent) {
FILE: packages/calendar/components/month/index.ts
type Day (line 9) | interface Day {
method onClick (line 60) | onClick(event) {
method setDays (line 68) | setDays() {
method getMultipleDayType (line 100) | getMultipleDayType(day) {
method getRangeDayType (line 129) | getRangeDayType(day) {
method getDayType (line 168) | getDayType(day) {
method getBottomInfo (line 191) | getBottomInfo(type) {
FILE: packages/calendar/demo/index.ts
type Data (line 3) | type Data = {
method onConfirm (line 59) | onConfirm(event) {
method onSelect (line 70) | onSelect(event) {
method onUnselect (line 74) | onUnselect(event) {
method onClose (line 78) | onClose() {
method onOpen (line 82) | onOpen() {
method onOpened (line 86) | onOpened() {
method onClosed (line 90) | onClosed() {
method resetSettings (line 94) | resetSettings() {
method show (line 113) | show(event) {
method dayFormatter (line 155) | dayFormatter(day) {
FILE: packages/calendar/index.ts
method observer (line 43) | observer(val) {
method observer (line 67) | observer(val) {
method minDate (line 152) | minDate() {
method maxDate (line 155) | maxDate() {
method created (line 160) | created() {
method mounted (line 166) | mounted() {
method reset (line 174) | reset() {
method initRect (line 179) | initRect() {
method limitDateRange (line 200) | limitDateRange(
method getInitialDate (line 216) | getInitialDate(defaultDate: number | number[] | null = null) {
method scrollIntoView (line 260) | scrollIntoView() {
method onOpen (line 285) | onOpen() {
method onOpened (line 289) | onOpened() {
method onClose (line 293) | onClose() {
method onClosed (line 297) | onClosed() {
method onClickDay (line 301) | onClickDay(event) {
method unselect (line 363) | unselect(dateArray) {
method select (line 370) | select(date, complete?: boolean) {
method emit (line 395) | emit(date) {
method checkRange (line 402) | checkRange(date) {
method onConfirm (line 420) | onConfirm() {
method onClickSubtitle (line 433) | onClickSubtitle(event: WechatMiniprogram.TouchEvent) {
FILE: packages/calendar/utils.ts
constant ROW_HEIGHT (line 1) | const ROW_HEIGHT = 64;
function formatMonthTitle (line 3) | function formatMonthTitle(date: Date) {
function compareMonth (line 10) | function compareMonth(date1: Date | number, date2: Date | number) {
function compareDay (line 31) | function compareDay(day1: Date | number, day2: Date | number) {
function getDayByOffset (line 52) | function getDayByOffset(date: Date, offset: number) {
function getPrevDay (line 59) | function getPrevDay(date: Date) {
function getNextDay (line 63) | function getNextDay(date: Date) {
function getToday (line 67) | function getToday() {
function calcDateNum (line 73) | function calcDateNum(date: [Date, Date]) {
function copyDates (line 79) | function copyDates(dates: Date | Date[]) {
function getMonthEndDay (line 93) | function getMonthEndDay(year: number, month: number): number {
function getMonths (line 97) | function getMonths(minDate: number, maxDate: number) {
FILE: packages/card/index.ts
method updatePrice (line 41) | updatePrice() {
method onClickThumb (line 50) | onClickThumb() {
FILE: packages/cascader/demo/index.ts
function deepClone (line 5) | function deepClone<T extends Record<string, any>>(obj: T): T {
function getCustomFieldOptions (line 162) | function getCustomFieldOptions(options) {
method onClick (line 213) | onClick(e) {
method onClose (line 219) | onClose(e) {
method onFinish (line 225) | onFinish(e) {
method loadDynamicOptions (line 238) | loadDynamicOptions(e) {
FILE: packages/cascader/index.ts
type FieldName (line 3) | enum FieldName {
type Option (line 9) | type Option = Record<string, any>;
type ITab (line 11) | interface ITab {
method options (line 78) | options() {
method value (line 81) | value(newVal) {
method created (line 86) | created() {
method updateValue (line 91) | updateValue(val: string) {
method updateFieldNames (line 105) | updateFieldNames() {
method getSelectedOptionsByValue (line 117) | getSelectedOptionsByValue(options, value) {
method updateTabs (line 136) | updateTabs() {
method onClose (line 200) | onClose() {
method onClickTab (line 203) | onClickTab(e) {
method onSelect (line 211) | onSelect(e) {
FILE: packages/cell/index.ts
method onClick (line 37) | onClick(event: WechatMiniprogram.TouchEvent) {
FILE: packages/checkbox-group/index.ts
type TrivialInstance (line 4) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
method updateChildren (line 30) | updateChildren() {
method updateChild (line 34) | updateChild(child: TrivialInstance) {
FILE: packages/checkbox/demo/index.ts
method onChange (line 21) | onChange(event) {
method toggle (line 26) | toggle(event) {
method noop (line 32) | noop() {}
FILE: packages/checkbox/index.ts
function emit (line 4) | function emit(
method emitChange (line 45) | emitChange(value: boolean) {
method toggle (line 53) | toggle() {
method onClickLabel (line 60) | onClickLabel() {
method setParentValue (line 67) | setParentValue(
FILE: packages/circle/canvas.ts
type CanvasContext (line 1) | type CanvasContext = WechatMiniprogram.CanvasContext;
function adaptor (line 3) | function adaptor(
FILE: packages/circle/demo/index.ts
method run (line 15) | run(e) {
FILE: packages/circle/index.ts
function format (line 8) | function format(rate) {
constant PERIMETER (line 11) | const PERIMETER = 2 * Math.PI;
constant BEGIN_ANGLE (line 12) | const BEGIN_ANGLE = -Math.PI / 2;
constant STEP (line 13) | const STEP = 1;
method observer (line 34) | observer() {
method observer (line 46) | observer() {
method getContext (line 71) | getContext(): Promise<WechatMiniprogram.CanvasContext> {
method setHoverColor (line 102) | setHoverColor() {
method presetCanvas (line 126) | presetCanvas(context, strokeStyle, beginAngle, endAngle, fill?: string) {
method renderLayerCircle (line 145) | renderLayerCircle(context) {
method renderHoverCircle (line 150) | renderHoverCircle(context, formatValue) {
method drawCircle (line 161) | drawCircle(currentValue) {
method reRender (line 179) | reRender() {
method clearMockInterval (line 210) | clearMockInterval() {
method mounted (line 218) | mounted() {
method destroyed (line 226) | destroyed() {
FILE: packages/collapse-item/animate.ts
function useAnimation (line 3) | function useAnimation(
function setContentAnimate (line 43) | function setContentAnimate(
FILE: packages/collapse-item/index.ts
method mounted (line 34) | mounted() {
method updateExpanded (line 40) | updateExpanded() {
method onClick (line 63) | onClick() {
FILE: packages/collapse/demo/index.ts
method onChange (line 19) | onChange(event) {
method onOpen (line 26) | onOpen(event) {
method onClose (line 33) | onClose(event) {
FILE: packages/collapse/index.ts
method updateExpanded (line 23) | updateExpanded() {
method switch (line 29) | switch(name: string | number, expanded: boolean) {
FILE: packages/common/color.ts
constant RED (line 1) | const RED = '#ee0a24';
constant BLUE (line 2) | const BLUE = '#1989fa';
constant WHITE (line 3) | const WHITE = '#fff';
constant GREEN (line 4) | const GREEN = '#07c160';
constant ORANGE (line 5) | const ORANGE = '#ff976a';
constant GRAY (line 6) | const GRAY = '#323233';
constant GRAY_DARK (line 7) | const GRAY_DARK = '#969799';
FILE: packages/common/component.ts
function mapKeys (line 4) | function mapKeys(
function VantComponent (line 16) | function VantComponent<
FILE: packages/common/relation.ts
type TrivialInstance (line 1) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
type RelationOption (line 2) | type RelationOption = WechatMiniprogram.Component.RelationOption;
function useParent (line 4) | function useParent(
function useChildren (line 41) | function useChildren(
FILE: packages/common/utils.ts
function range (line 11) | function range(num: number, min: number, max: number) {
function nextTick (line 15) | function nextTick(cb: (...args: any[]) => void) {
function addUnit (line 25) | function addUnit(value?: string | number): string | undefined {
function requestAnimationFrame (line 34) | function requestAnimationFrame(cb: () => void) {
function pickExclude (line 40) | function pickExclude(obj: unknown, keys: string[]) {
function getRect (line 54) | function getRect(
function getAllRect (line 69) | function getAllRect(
function groupSetData (line 84) | function groupSetData(
function toPromise (line 95) | function toPromise(promiseLike: Promise<unknown> | unknown) {
function addNumber (line 104) | function addNumber(num1, num2) {
function getCurrentPage (line 112) | function getCurrentPage<T>() {
FILE: packages/common/validator.ts
function isFunction (line 2) | function isFunction(val: unknown): val is Function {
function isPlainObject (line 6) | function isPlainObject(val: unknown): val is Record<string, unknown> {
function isPromise (line 10) | function isPromise<T = unknown>(val: unknown): val is Promise<T> {
function isDef (line 14) | function isDef(value: unknown): boolean {
function isObj (line 18) | function isObj(x: unknown): x is Record<string, unknown> {
function isNumber (line 23) | function isNumber(value: string) {
function isBoolean (line 27) | function isBoolean(value: unknown): value is boolean {
constant IMAGE_REGEXP (line 31) | const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
constant VIDEO_REGEXP (line 32) | const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mk...
function isImageUrl (line 34) | function isImageUrl(url: string): boolean {
function isVideoUrl (line 38) | function isVideoUrl(url: string): boolean {
FILE: packages/common/version.ts
type WxWorkSystemInfo (line 1) | interface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo {
type SystemInfo (line 5) | interface SystemInfo extends WxWorkSystemInfo, WechatMiniprogram.SystemI...
function getSystemInfoSync (line 9) | function getSystemInfoSync() {
function compareVersion (line 17) | function compareVersion(v1, v2) {
function gte (line 44) | function gte(version: string) {
function canIUseModel (line 50) | function canIUseModel() {
function canIUseFormFieldButton (line 54) | function canIUseFormFieldButton() {
function canIUseAnimate (line 58) | function canIUseAnimate() {
function canIUseGroupSetData (line 62) | function canIUseGroupSetData() {
function canIUseNextTick (line 66) | function canIUseNextTick() {
function canIUseCanvas2d (line 74) | function canIUseCanvas2d() {
function canIUseGetUserProfile (line 78) | function canIUseGetUserProfile() {
FILE: packages/config-provider/demo/index.ts
method onChange (line 19) | onChange(event) {
FILE: packages/count-down/demo/index.ts
method onChange (line 11) | onChange(e) {
method start (line 17) | start() {
method pause (line 22) | pause() {
method reset (line 27) | reset() {
method finished (line 32) | finished() {
FILE: packages/count-down/index.ts
function simpleTick (line 4) | function simpleTick(fn: WechatMiniprogram.SetTimeoutCompleteCallback) {
method destroyed (line 31) | destroyed() {
method start (line 38) | start() {
method pause (line 49) | pause() {
method reset (line 55) | reset() {
method tick (line 65) | tick() {
method microTick (line 73) | microTick() {
method macroTick (line 83) | macroTick() {
method getRemain (line 97) | getRemain() {
method setRemain (line 101) | setRemain(remain) {
FILE: packages/count-down/utils.ts
function padZero (line 1) | function padZero(num: number | string, targetLength = 2): string {
type TimeData (line 11) | type TimeData = {
constant SECOND (line 19) | const SECOND = 1000;
constant MINUTE (line 20) | const MINUTE = 60 * SECOND;
constant HOUR (line 21) | const HOUR = 60 * MINUTE;
constant DAY (line 22) | const DAY = 24 * HOUR;
function parseTimeData (line 24) | function parseTimeData(time: number): TimeData {
function parseFormat (line 40) | function parseFormat(format: string, timeData: TimeData): string {
function isSameSecond (line 71) | function isSameSecond(time1: number, time2: number): boolean {
FILE: packages/datetime-picker/demo/index.ts
method formatter (line 15) | formatter(type, value) {
method filter (line 24) | filter(type, options) {
method onInput (line 34) | onInput(event) {
method getResult (line 44) | getResult(time, type) {
FILE: packages/datetime-picker/index.ts
function isValidDate (line 7) | function isValidDate(date: number) {
function range (line 11) | function range(num: number, min: number, max: number) {
function padZero (line 15) | function padZero(val: string | number) {
function times (line 19) | function times(n: number, iteratee: (index: number) => string): string[] {
function getTrueValue (line 29) | function getTrueValue(formattedValue: string) {
function getMonthEndDay (line 39) | function getMonthEndDay(year: number, month: number): number {
method updateValue (line 109) | updateValue() {
method getPicker (line 120) | getPicker() {
method updateColumns (line 133) | updateColumns() {
method getOriginColumns (line 142) | getOriginColumns() {
method getRanges (line 160) | getRanges() {
method correctValue (line 218) | correctValue(value: any) {
method getBoundary (line 245) | getBoundary(type: string, innerValue: number) {
method onCancel (line 283) | onCancel() {
method onConfirm (line 287) | onConfirm() {
method onChange (line 291) | onChange() {
method updateColumnValue (line 331) | updateColumnValue(value) {
method created (line 364) | created() {
FILE: packages/definitions/index.ts
type VantComponentInstance (line 1) | interface VantComponentInstance {
type VantComponentOptions (line 13) | type VantComponentOptions<
FILE: packages/dialog/demo/index.ts
method showCustomDialog (line 12) | showCustomDialog() {
method getUserInfo (line 16) | getUserInfo(event) {
method onClickThemeAlert (line 20) | onClickThemeAlert() {
method onClickThemeAlert2 (line 29) | onClickThemeAlert2() {
method onClickAlert (line 37) | onClickAlert() {
method onClickAlert2 (line 45) | onClickAlert2() {
method onClickConfirm (line 52) | onClickConfirm() {
method onClickAsyncClose (line 60) | onClickAsyncClose() {
method onClose (line 81) | onClose() {
FILE: packages/dialog/dialog.ts
type Action (line 2) | type Action = 'confirm' | 'cancel' | 'overlay';
type DialogContext (line 4) | type DialogContext =
type DialogOptions (line 8) | interface DialogOptions {
function getContext (line 74) | function getContext() {
FILE: packages/dialog/index.ts
method observer (line 14) | observer(show: boolean) {
method onConfirm (line 89) | onConfirm() {
method onCancel (line 93) | onCancel() {
method onClickOverlay (line 97) | onClickOverlay() {
method close (line 101) | close(action: string) {
method onAfterLeave (line 107) | onAfterLeave() {
method stopLoading (line 119) | stopLoading() {
method handleAction (line 128) | handleAction(action: Action) {
FILE: packages/dropdown-item/index.ts
method rerender (line 52) | rerender() {
method updateDataFromParent (line 58) | updateDataFromParent() {
method onOpen (line 80) | onOpen() {
method onOpened (line 84) | onOpened() {
method onClose (line 88) | onClose() {
method onClosed (line 92) | onClosed() {
method onOptionTap (line 97) | onOptionTap(event: WechatMiniprogram.TouchEvent) {
method toggle (line 112) | toggle(show?: boolean, options: { immediate?: boolean } = {}) {
method onBeforeToggle (line 143) | onBeforeToggle(status: boolean): Promise<boolean> {
FILE: packages/dropdown-item/shared.ts
type Option (line 1) | interface Option {
FILE: packages/dropdown-menu/demo/index.ts
method onConfirm (line 25) | onConfirm() {
method onSwitch1Change (line 29) | onSwitch1Change({ detail }) {
method onSwitch2Change (line 33) | onSwitch2Change({ detail }) {
method onBeforeChange (line 36) | onBeforeChange({ detail: { status, callback } }) {
FILE: packages/dropdown-menu/index.ts
constant ARRAY (line 5) | let ARRAY: WechatMiniprogram.Component.TrivialInstance[] = [];
method beforeCreate (line 58) | beforeCreate() {
method destroyed (line 64) | destroyed() {
method updateItemListData (line 69) | updateItemListData() {
method updateChildrenData (line 75) | updateChildrenData() {
method toggleItem (line 81) | toggleItem(active: number) {
method close (line 92) | close() {
method getChildWrapperStyle (line 98) | getChildWrapperStyle() {
method onTitleTap (line 117) | onTitleTap(event: WechatMiniprogram.TouchEvent) {
FILE: packages/empty/demo/index.ts
method onChange (line 9) | onChange(event) {
FILE: packages/field/demo/index.ts
method onClickIcon (line 16) | onClickIcon() {
FILE: packages/field/index.ts
method value (line 70) | value(this: WechatMiniprogram.Component.TrivialInstance, value) {
method clearTrigger (line 78) | clearTrigger() {
method created (line 83) | created() {
method formatValue (line 89) | formatValue(value: string) {
method onInput (line 99) | onInput(event: WechatMiniprogram.Input | WechatMiniprogram.TextareaInput) {
method onFocus (line 114) | onFocus(
method onBlur (line 122) | onBlur(
method onClickIcon (line 130) | onClickIcon() {
method onClickInput (line 134) | onClickInput(event: WechatMiniprogram.TouchEvent) {
method onClear (line 138) | onClear() {
method onConfirm (line 149) | onConfirm(
method setValue (line 158) | setValue(value: string) {
method onLineChange (line 169) | onLineChange(event: WechatMiniprogram.TextareaLineChange) {
method onKeyboardHeightChange (line 173) | onKeyboardHeightChange(
method onBindNicknameReview (line 181) | onBindNicknameReview(event) {
method emitChange (line 185) | emitChange(detail: InputDetails) {
method setShowClear (line 207) | setShowClear() {
method noop (line 224) | noop() {}
FILE: packages/field/types.ts
type InputDetails (line 1) | interface InputDetails {
FILE: packages/goods-action-button/index.ts
method onClick (line 32) | onClick(event: WechatMiniprogram.CustomEvent) {
method updateStyle (line 37) | updateStyle() {
FILE: packages/goods-action-icon/index.ts
method onClick (line 26) | onClick(event: WechatMiniprogram.CustomEvent) {
FILE: packages/goods-action/demo/index.ts
method onClickIcon (line 6) | onClickIcon() {
method onClickButton (line 10) | onClickButton() {
FILE: packages/grid-item/index.ts
method mounted (line 30) | mounted() {
method updateStyle (line 35) | updateStyle() {
method onClick (line 67) | onClick() {
FILE: packages/grid/index.ts
method updateChildren (line 52) | updateChildren() {
FILE: packages/icon/demo/index.ts
method onSwitch (line 13) | onSwitch(event) {
FILE: packages/icon/index.ts
method onClick (line 19) | onClick() {
FILE: packages/image/index.ts
method observer (line 12) | observer() {
method onLoad (line 52) | onLoad(event) {
method onError (line 60) | onError(event) {
method onClick (line 69) | onClick(event) {
FILE: packages/index-anchor/index.ts
method scrollIntoView (line 20) | scrollIntoView(scrollTop) {
FILE: packages/index-bar/demo/index.ts
method onChange (line 18) | onChange(event) {
method onPageScroll (line 24) | onPageScroll(event) {
FILE: packages/index-bar/index.ts
method created (line 58) | created() {
method updateData (line 63) | updateData() {
method setRect (line 81) | setRect() {
method setAnchorsRect (line 89) | setAnchorsRect() {
method setListRect (line 102) | setListRect() {
method setSiderbarRect (line 114) | setSiderbarRect() {
method setDiffData (line 126) | setDiffData({ target, data }) {
method getAnchorRect (line 140) | getAnchorRect(anchor) {
method getActiveAnchorIndex (line 147) | getActiveAnchorIndex() {
method onScroll (line 163) | onScroll() {
method onClick (line 257) | onClick(event) {
method onTouchMove (line 261) | onTouchMove(event) {
method onTouchStop (line 276) | onTouchStop() {
method scrollToAnchor (line 280) | scrollToAnchor(index) {
FILE: packages/mixins/basic.ts
method $emit (line 3) | $emit(
method set (line 11) | set(data: Record<string, unknown>) {
method setView (line 18) | setView(
FILE: packages/mixins/button.ts
method onGetUserInfo (line 27) | onGetUserInfo(event: WechatMiniprogram.ButtonGetUserInfo) {
method onContact (line 31) | onContact(event: WechatMiniprogram.ButtonContact) {
method onGetPhoneNumber (line 35) | onGetPhoneNumber(event: WechatMiniprogram.ButtonGetPhoneNumber) {
method onGetRealTimePhoneNumber (line 39) | onGetRealTimePhoneNumber(event: WechatMiniprogram.ButtonGetPhoneNumber) {
method onError (line 43) | onError(event: WechatMiniprogram.ButtonError) {
method onLaunchApp (line 47) | onLaunchApp(event: WechatMiniprogram.ButtonLaunchApp) {
method onOpenSetting (line 51) | onOpenSetting(event: WechatMiniprogram.ButtonOpenSetting) {
method onAgreePrivacyAuthorization (line 55) | onAgreePrivacyAuthorization(event) {
method onChooseAvatar (line 59) | onChooseAvatar(
FILE: packages/mixins/link.ts
method jumpLink (line 11) | jumpLink(urlKey = 'url') {
FILE: packages/mixins/page-scroll.ts
type IPageScrollOption (line 4) | type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption;
type Scroller (line 5) | type Scroller = (
function onPageScroll (line 10) | function onPageScroll(event?: IPageScrollOption) {
function pageScrollMixin (line 23) | function pageScrollMixin(scroller: Scroller) {
FILE: packages/mixins/touch.ts
constant MIN_DISTANCE (line 2) | const MIN_DISTANCE = 10;
function getDirection (line 4) | function getDirection(x: number, y: number) {
method resetTouchStatus (line 18) | resetTouchStatus() {
method touchStart (line 26) | touchStart(event: WechatMiniprogram.TouchEvent) {
method touchMove (line 33) | touchMove(event: WechatMiniprogram.TouchEvent) {
FILE: packages/mixins/transition.ts
function transition (line 12) | function transition(showDefaultValue: boolean) {
FILE: packages/nav-bar/demo/index.ts
method onClickLeft (line 5) | onClickLeft() {
method onClickRight (line 9) | onClickRight() {
FILE: packages/nav-bar/index.ts
method created (line 39) | created() {
method mounted (line 48) | mounted() {
method onClickLeft (line 53) | onClickLeft() {
method onClickRight (line 57) | onClickRight() {
method setHeight (line 61) | setHeight() {
FILE: packages/notice-bar/index.ts
method created (line 47) | created() {
method destroyed (line 54) | destroyed() {
method mounted (line 58) | mounted() {
method init (line 63) | init() {
method initAnimation (line 92) | initAnimation(warpWidth: number, contentWidth: number) {
method reset (line 110) | reset(x = 0) {
method scroll (line 121) | scroll(isInit = false) {
method onClickIcon (line 140) | onClickIcon(event) {
method onClick (line 150) | onClick(event: WechatMiniprogram.TouchEvent) {
FILE: packages/notify/demo/index.ts
method showNotify (line 6) | showNotify() {
method showCustomColor (line 10) | showCustomColor() {
method showCustomDuration (line 21) | showCustomDuration() {
method showNotifyByType (line 29) | showNotifyByType(event) {
method showSafe (line 38) | showSafe() {
FILE: packages/notify/index.ts
method created (line 39) | created() {
method show (line 45) | show() {
method hide (line 60) | hide() {
method onTap (line 69) | onTap(event: WechatMiniprogram.TouchEvent) {
FILE: packages/notify/notify.ts
type NotifyOptions (line 3) | interface NotifyOptions {
function parseOptions (line 36) | function parseOptions(
function getContext (line 46) | function getContext() {
function Notify (line 51) | function Notify(options: NotifyOptions | string) {
FILE: packages/overlay/demo/index.ts
method onClickShow (line 10) | onClickShow() {
method onClickHide (line 14) | onClickHide() {
method onClickShowEmbedded (line 18) | onClickShowEmbedded() {
method onClickHideEmbedded (line 22) | onClickHideEmbedded() {
method noop (line 26) | noop() {}
FILE: packages/overlay/index.ts
method onClick (line 26) | onClick() {
method noop (line 31) | noop() {}
FILE: packages/picker-column/index.ts
constant DEFAULT_DURATION (line 5) | const DEFAULT_DURATION = 200;
method observer (line 22) | observer(value: number) {
method created (line 37) | created() {
method getCount (line 49) | getCount() {
method onTouchStart (line 53) | onTouchStart(event: WechatMiniprogram.TouchEvent) {
method onTouchMove (line 61) | onTouchMove(event: WechatMiniprogram.TouchEvent) {
method onTouchEnd (line 73) | onTouchEnd() {
method onClickItem (line 87) | onClickItem(event: WechatMiniprogram.TouchEvent) {
method adjustIndex (line 92) | adjustIndex(index: number) {
method isDisabled (line 105) | isDisabled(option: any) {
method getOptionText (line 109) | getOptionText(option: any) {
method setIndex (line 116) | setIndex(index: number, userAction?: boolean) {
method setValue (line 130) | setValue(value: string) {
method getValue (line 140) | getValue() {
FILE: packages/picker/demo/index.ts
method onChange1 (line 30) | onChange1(event) {
method onConfirm (line 38) | onConfirm(event) {
method onCancel (line 46) | onCancel() {
method onChange2 (line 53) | onChange2(event) {
FILE: packages/picker/index.ts
type Column (line 4) | interface Column {
method observer (line 29) | observer(columns = []) {
method beforeCreate (line 39) | beforeCreate() {
method noop (line 46) | noop() {}
method setColumns (line 48) | setColumns() {
method emit (line 57) | emit(event: WechatMiniprogram.TouchEvent) {
method onChange (line 72) | onChange(event: WechatMiniprogram.CustomEvent) {
method getColumn (line 89) | getColumn(index: number) {
method getColumnValue (line 94) | getColumnValue(index: number) {
method setColumnValue (line 100) | setColumnValue(index: number, value: any) {
method getColumnIndex (line 111) | getColumnIndex(columnIndex: number) {
method setColumnIndex (line 116) | setColumnIndex(columnIndex: number, optionIndex: number) {
method getColumnValues (line 127) | getColumnValues(index: number) {
method setColumnValues (line 132) | setColumnValues(index: number, options: any[], needReset = true) {
method getValues (line 154) | getValues() {
method setValues (line 159) | setValues(values: any[]) {
method getIndexes (line 167) | getIndexes() {
method setIndexes (line 172) | setIndexes(indexes: number[]) {
FILE: packages/popup/demo/index.ts
method toggle (line 19) | toggle(type, show) {
method showBasic (line 25) | showBasic() {
method hideBasic (line 29) | hideBasic() {
method showTop (line 33) | showTop() {
method hideTop (line 37) | hideTop() {
method showLeft (line 41) | showLeft() {
method hideLeft (line 45) | hideLeft() {
method showRight (line 49) | showRight() {
method hideRight (line 53) | hideRight() {
method showBottom (line 57) | showBottom() {
method hideBottom (line 61) | hideBottom() {
method showRound (line 65) | showRound() {
method hideRound (line 69) | hideRound() {
method showCloseIcon (line 73) | showCloseIcon() {
method hideCloseIcon (line 77) | hideCloseIcon() {
method showCustomCloseIcon (line 81) | showCustomCloseIcon() {
method hideCustomCloseIcon (line 85) | hideCustomCloseIcon() {
method showCustomIconPosition (line 89) | showCustomIconPosition() {
method hideCustomIconPosition (line 93) | hideCustomIconPosition() {
FILE: packages/popup/index.ts
method created (line 73) | created() {
method onClickCloseIcon (line 78) | onClickCloseIcon() {
method onClickOverlay (line 82) | onClickOverlay() {
method observeClass (line 90) | observeClass() {
FILE: packages/progress/index.ts
method mounted (line 37) | mounted() {
method setLeft (line 42) | setLeft() {
FILE: packages/radio-group/index.ts
method updateChildren (line 22) | updateChildren() {
FILE: packages/radio/demo/index.ts
method onChange (line 22) | onChange(event) {
method onClick (line 27) | onClick(event) {
FILE: packages/radio/index.ts
method updateFromParent (line 41) | updateFromParent() {
method emitChange (line 55) | emitChange(value: boolean) {
method onChange (line 65) | onChange() {
method onClickLabel (line 71) | onClickLabel() {
FILE: packages/rate/demo/index.ts
method onChange (line 16) | onChange(event) {
FILE: packages/rate/index.ts
method observer (line 13) | observer(value: number) {
method observer (line 37) | observer(value: number) {
method onSelect (line 54) | onSelect(event: WechatMiniprogram.CustomEvent) {
method onTouchMove (line 71) | onTouchMove(event: WechatMiniprogram.TouchEvent) {
FILE: packages/row/index.ts
method setGutter (line 21) | setGutter() {
FILE: packages/search/demo/index.ts
method onChange (line 9) | onChange(e) {
method onSearch (line 15) | onSearch() {
method onClick (line 24) | onClick() {
method onCancel (line 33) | onCancel() {
method onClear (line 40) | onClear() {
FILE: packages/search/index.ts
method onChange (line 66) | onChange(event: WechatMiniprogram.CustomEvent) {
method onCancel (line 73) | onCancel() {
method onSearch (line 87) | onSearch(event: WechatMiniprogram.CustomEvent) {
method onFocus (line 91) | onFocus(event: WechatMiniprogram.CustomEvent) {
method onBlur (line 95) | onBlur(event: WechatMiniprogram.CustomEvent) {
method onClear (line 99) | onClear(event: WechatMiniprogram.CustomEvent) {
method onClickInput (line 103) | onClickInput(event) {
FILE: packages/share-sheet/demo/index.ts
method onShowShareSheet (line 65) | onShowShareSheet(event) {
method onClose (line 71) | onClose() {
method onSelect (line 82) | onSelect(event) {
FILE: packages/share-sheet/index.ts
method onClickOverlay (line 47) | onClickOverlay() {
method onCancel (line 51) | onCancel() {
method onSelect (line 56) | onSelect(event: WechatMiniprogram.CustomEvent) {
method onClose (line 60) | onClose() {
FILE: packages/share-sheet/options.ts
method onSelect (line 10) | onSelect(event) {
FILE: packages/sidebar-item/index.ts
method onClick (line 18) | onClick() {
method setActive (line 33) | setActive(selected: boolean) {
FILE: packages/sidebar/demo/index.ts
method onChange (line 6) | onChange(event) {
FILE: packages/sidebar/index.ts
method beforeCreate (line 17) | beforeCreate() {
method setActive (line 22) | setActive(activeKey: number) {
FILE: packages/skeleton/demo/index.ts
method onChange (line 9) | onChange({ detail }) {
FILE: packages/skeleton/index.ts
method observer (line 9) | observer(value: number) {
method observer (line 38) | observer(val) {
FILE: packages/slider/demo/index.ts
method onChange (line 9) | onChange(event) {
method onDrag (line 16) | onDrag(event) {
FILE: packages/slider/index.ts
type SliderValue (line 6) | type SliderValue = number | [number, number];
constant DRAG_STATUS (line 8) | const DRAG_STATUS = {
method observer (line 38) | observer(val) {
method created (line 48) | created() {
method onTouchStart (line 53) | onTouchStart(event: WechatMiniprogram.TouchEvent) {
method onTouchMove (line 77) | onTouchMove(event: WechatMiniprogram.TouchEvent) {
method onTouchEnd (line 104) | onTouchEnd() {
method onClick (line 117) | onClick(event: WechatMiniprogram.TouchEvent) {
method isRange (line 146) | isRange(val: unknown): val is [number, number] {
method handleOverlap (line 151) | handleOverlap(value: [number, number]) {
method updateValue (line 158) | updateValue(value: SliderValue, end?: boolean, drag?: boolean) {
method getScope (line 201) | getScope() {
method getRange (line 205) | getRange() {
method getOffsetWidth (line 210) | getOffsetWidth(current: number, min: number) {
method calcMainAxis (line 218) | calcMainAxis() {
method calcOffset (line 230) | calcOffset() {
method format (line 240) | format(value: number) {
FILE: packages/stepper/demo/index.ts
method onChange (line 10) | onChange(event) {
FILE: packages/stepper/index.ts
constant LONG_PRESS_START_TIME (line 4) | const LONG_PRESS_START_TIME = 600;
constant LONG_PRESS_INTERVAL (line 5) | const LONG_PRESS_INTERVAL = 200;
function add (line 8) | function add(num1: number, num2: number) {
function equal (line 13) | function equal(value1: number | string, value2: number | string) {
method value (line 77) | value() {
method created (line 82) | created() {
method observeValue (line 89) | observeValue() {
method check (line 94) | check() {
method isDisabled (line 102) | isDisabled(type: string) {
method onFocus (line 113) | onFocus(event: WechatMiniprogram.InputFocus) {
method onBlur (line 117) | onBlur(event: WechatMiniprogram.InputBlur) {
method filter (line 131) | filter(value: string): string {
method format (line 141) | format(value: string) {
method onInput (line 159) | onInput(event: WechatMiniprogram.Input) {
method emitChange (line 172) | emitChange(data: { value: string; newValue: string }) {
method onChange (line 183) | onChange() {
method longPressStep (line 199) | longPressStep() {
method onTap (line 206) | onTap(event: WechatMiniprogram.TouchEvent) {
method onTouchStart (line 212) | onTouchStart(event: WechatMiniprogram.TouchEvent) {
method onTouchEnd (line 229) | onTouchEnd() {
FILE: packages/steps/demo/index.ts
method nextStep (line 36) | nextStep() {
method onClick (line 42) | onClick(event) {
FILE: packages/steps/index.ts
method onClick (line 31) | onClick(event: WechatMiniprogram.TouchEvent) {
FILE: packages/sticky/demo/index.ts
method mounted (line 10) | mounted() {
method onScroll (line 17) | onScroll(event) {
FILE: packages/sticky/index.ts
constant ROOT_ELEMENT (line 6) | const ROOT_ELEMENT = '.van-sticky';
method observer (line 29) | observer(val) {
method mounted (line 50) | mounted() {
method onScroll (line 55) | onScroll({ scrollTop }: { scrollTop?: number } = {}) {
method setDataAfterDiff (line 104) | setDataAfterDiff(data) {
method getContainerRect (line 125) | getContainerRect() {
FILE: packages/submit-bar/demo/index.ts
method onClickButton (line 6) | onClickButton() {
method onClickLink (line 12) | onClickLink() {
FILE: packages/submit-bar/index.ts
method updatePrice (line 42) | updatePrice() {
method updateTip (line 54) | updateTip() {
method onSubmit (line 58) | onSubmit(event: WechatMiniprogram.CustomEvent) {
FILE: packages/swipe-cell/demo/index.ts
method onClose (line 7) | onClose(event) {
method onOpen (line 25) | onOpen(event) {
FILE: packages/swipe-cell/index.ts
constant THRESHOLD (line 5) | const THRESHOLD = 0.3;
constant ARRAY (line 6) | let ARRAY: WechatMiniprogram.Component.TrivialInstance[] = [];
method observer (line 14) | observer(leftWidth = 0) {
method observer (line 23) | observer(rightWidth = 0) {
method created (line 43) | created() {
method destroyed (line 48) | destroyed() {
method open (line 53) | open(position: 'left' | 'right') {
method close (line 64) | close() {
method swipeMove (line 68) | swipeMove(offset = 0) {
method swipeLeaveTransition (line 86) | swipeLeaveTransition() {
method startDrag (line 100) | startDrag(event: WechatMiniprogram.TouchEvent) {
method noop (line 109) | noop() {}
method onDrag (line 111) | onDrag(event: WechatMiniprogram.TouchEvent) {
method endDrag (line 132) | endDrag() {
method onClick (line 141) | onClick(event: WechatMiniprogram.TouchEvent) {
FILE: packages/switch/demo/index.ts
method onChange (line 11) | onChange({ detail }) {
method onChange2 (line 15) | onChange2({ detail }) {
FILE: packages/switch/index.ts
method onClick (line 29) | onClick() {
FILE: packages/switch/test/index.spec.ts
method onChange (line 34) | onChange({ detail }) {
FILE: packages/tab/demo/index.ts
method onClickDisabled (line 17) | onClickDisabled(event) {
method onChange (line 24) | onChange(event) {
method onClickNavRight (line 31) | onClickNavRight() {
method onClick (line 38) | onClick(event) {
method onBeforeChange (line 44) | onBeforeChange(event) {
FILE: packages/tab/index.ts
method getComputedName (line 39) | getComputedName() {
method updateRender (line 46) | updateRender(active, parent) {
method update (line 57) | update() {
FILE: packages/tabbar-item/index.ts
method onClick (line 33) | onClick() {
method updateFromParent (line 54) | updateFromParent() {
FILE: packages/tabbar/demo/index.ts
method onChange (line 18) | onChange(event) {
method handleChange (line 23) | handleChange(event) {
FILE: packages/tabbar/index.ts
type TrivialInstance (line 5) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
method updateChildren (line 53) | updateChildren() {
method setHeight (line 62) | setHeight() {
FILE: packages/tabs/index.ts
type TrivialInstance (line 13) | type TrivialInstance = WechatMiniprogram.Component.TrivialInstance;
method observer (line 39) | observer() {
method observer (line 57) | observer(name) {
method observer (line 82) | observer(value) {
method mounted (line 114) | mounted() {
method updateTabs (line 127) | updateTabs() {
method trigger (line 138) | trigger(eventName: string, child?: TrivialInstance) {
method onTap (line 150) | onTap(event: WechatMiniprogram.TouchEvent) {
method setCurrentIndexByName (line 168) | setCurrentIndexByName(name) {
method setCurrentIndex (line 179) | setCurrentIndex(currentIndex) {
method getCurrentName (line 222) | getCurrentName() {
method resize (line 230) | resize() {
method scrollIntoView (line 267) | scrollIntoView() {
method onTouchScroll (line 295) | onTouchScroll(event: WechatMiniprogram.CustomEvent) {
method onTouchStart (line 299) | onTouchStart(event: WechatMiniprogram.TouchEvent) {
method onTouchMove (line 306) | onTouchMove(event: WechatMiniprogram.TouchEvent) {
method onTouchEnd (line 313) | onTouchEnd() {
method getAvaiableTab (line 329) | getAvaiableTab(direction: number) {
method onBeforeChange (line 352) | onBeforeChange(index: number): Promise<void> {
method getChildData (line 366) | getChildData(index: number, child?: TrivialInstance) {
FILE: packages/tag/demo/index.ts
method onClose (line 12) | onClose(event) {
FILE: packages/tag/index.ts
method onClose (line 19) | onClose() {
FILE: packages/toast/demo/index.ts
method showToast (line 6) | showToast() {
method showLongToast (line 10) | showLongToast() {
method showLoadingToast (line 17) | showLoadingToast() {
method showCustomLoadingToast (line 21) | showCustomLoadingToast() {
method showSuccessToast (line 30) | showSuccessToast() {
method showFailToast (line 34) | showFailToast() {
method showCustomizedToast (line 38) | showCustomizedToast() {
FILE: packages/toast/index.ts
method noop (line 29) | noop() {}
FILE: packages/toast/toast.ts
type ToastMessage (line 3) | type ToastMessage = string | number;
type ToastContext (line 4) | type ToastContext =
type ToastOptions (line 8) | interface ToastOptions {
function parseOptions (line 39) | function parseOptions(message): ToastOptions {
function getContext (line 43) | function getContext() {
function Toast (line 48) | function Toast(toastOptions: ToastOptions | ToastMessage) {
FILE: packages/transition/demo/index.ts
method onClickFade (line 11) | onClickFade() {
method onClickFadeUp (line 15) | onClickFadeUp() {
method onClickFadeDown (line 19) | onClickFadeDown() {
method onClickFadeLeft (line 23) | onClickFadeLeft() {
method onClickFadeRight (line 27) | onClickFadeRight() {
method onClickSlideUp (line 31) | onClickSlideUp() {
method onClickSlideDown (line 35) | onClickSlideDown() {
method onClickSlideLeft (line 39) | onClickSlideLeft() {
method onClickSlideRight (line 43) | onClickSlideRight() {
method trigger (line 47) | trigger(name) {
method onClickCustom (line 54) | onClickCustom() {
method onBeforeEnter (line 62) | onBeforeEnter() {
method onEnter (line 66) | onEnter() {
method onAfterEnter (line 70) | onAfterEnter() {
method onBeforeLeave (line 74) | onBeforeLeave() {
method onLeave (line 78) | onLeave() {
method onAfterLeave (line 82) | onAfterLeave() {
FILE: packages/tree-select/demo/index.ts
method onClickNav (line 91) | onClickNav({ detail }) {
method onClickItem (line 97) | onClickItem({ detail }) {
method onClickNavMulti (line 103) | onClickNavMulti({ detail }) {
method onClickItemMulti (line 109) | onClickItemMulti({ detail }) {
FILE: packages/tree-select/index.ts
method onSelectItem (line 44) | onSelectItem(event: WechatMiniprogram.TouchEvent) {
method onClickNav (line 60) | onClickNav(event: WechatMiniprogram.CustomEvent) {
method updateSubItems (line 69) | updateSubItems() {
FILE: packages/uploader/demo/index.ts
method beforeRead (line 31) | beforeRead(event) {
method afterRead (line 41) | afterRead(event) {
method oversize (line 49) | oversize() {
method delete (line 53) | delete(event) {
method clickPreview (line 60) | clickPreview() {}
method uploadToCloud (line 62) | uploadToCloud() {
method uploadFilePromise (line 87) | uploadFilePromise(fileName, chooseResult) {
FILE: packages/uploader/index.ts
method formatFileList (line 79) | formatFileList() {
method getDetail (line 91) | getDetail(index?: number) {
method startUpload (line 98) | startUpload() {
method onBeforeRead (line 115) | onBeforeRead(file: File) {
method onAfterRead (line 146) | onAfterRead(file) {
method deleteItem (line 164) | deleteItem(event) {
method onPreviewImage (line 173) | onPreviewImage(event) {
method onPreviewVideo (line 190) | onPreviewVideo(event) {
method onPreviewFile (line 220) | onPreviewFile(event: WechatMiniprogram.TouchEvent) {
method onClickPreview (line 231) | onClickPreview(event) {
FILE: packages/uploader/utils.ts
type File (line 4) | interface File {
function isImageFile (line 15) | function isImageFile(item: File): boolean {
function isVideoFile (line 31) | function isVideoFile(item: File): boolean {
function formatImage (line 47) | function formatImage(
function formatVideo (line 60) | function formatVideo(
function formatMedia (line 73) | function formatMedia(res: WechatMiniprogram.ChooseMediaSuccessCallbackRe...
function formatFile (line 83) | function formatFile(
function chooseFile (line 92) | function chooseFile({
Condensed preview — 1892 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,018K chars).
[
{
"path": ".editorconfig",
"chars": 233,
"preview": "root = true\n\n[*]\nindent_style = space\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newl"
},
{
"path": ".eslintignore",
"chars": 35,
"preview": "lib\ndist\nexample/dist\nnode_modules\n"
},
{
"path": ".eslintrc",
"chars": 214,
"preview": "{\n \"root\": true,\n \"globals\": {\n \"getApp\": false,\n \"getCurrentPages\": false,\n \"Page\": false,\n \"Component\": "
},
{
"path": ".gitee/ISSUE_TEMPLATE.zh-CN.md",
"chars": 117,
"preview": "你好,请使用下面的链接创建 issue 以帮助我们更快的排查问题,不规范的 issue 会被关闭,感谢配合。\n\nhttp://vant-ui.github.io/vant-issue-generater?repo=VantWeapp\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 657,
"preview": "# These are supported funding model platforms\n\ngithub: [chenjiahan, nemo-shen]\npatreon: # Replace with a single Patreon "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 27,
"preview": "blank_issues_enabled: false"
},
{
"path": ".github/ISSUE_TEMPLATE/template-1-bug-report-vant.zh-CN.yml",
"chars": 1321,
"preview": "name: 我要反馈 Vant Weapp 的 Bug\ndescription: 通过标准模板进行 Bug 反馈\ntitle: \"[Bug Report] 请在此填写标题\"\nlabels: [\"bug: need confirm\"]\nbod"
},
{
"path": ".github/ISSUE_TEMPLATE/template-3-feature-request-vant.zh-CN.yml",
"chars": 843,
"preview": "name: 我想要一个 Vant Weapp 的新功能\ndescription: 通过标准模板描述一下你的功能需求。\ntitle: \"[Feature Request] 请在此填写标题\"\nlabels: [\"feature: need co"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 285,
"preview": "### Pull Request 标题规则\n\ntype(ComponentName?):commit message\n\n示例:\n\n- docs: fix typo in quickstart\n- build: optimize build "
},
{
"path": ".github/dependabot.yml",
"chars": 208,
"preview": "version: 2\nupdates:\n- package-ecosystem: npm\n directory: \"/\"\n schedule:\n interval: monthly\n open-pull-requests-lim"
},
{
"path": ".github/pr-labeler.yml",
"chars": 177,
"preview": "\"change: feat\":\n - \"/^(feat|types|style)/\"\n\"change: fix\":\n - \"/^fix/\"\n\"change: perf\":\n - \"/^perf/\"\n\"change: breaking\""
},
{
"path": ".github/workflows/deploy-site.yml",
"chars": 893,
"preview": "name: Deploy Site\n\non:\n push:\n branches: [dev]\n paths:\n - 'docs/**/*.md'\n - 'packages/**/*.md'\n\n workf"
},
{
"path": ".github/workflows/pr-label.yaml",
"chars": 428,
"preview": "name: PR Labeler\n\non:\n pull_request_target:\n types:\n - opened\n - edited\n\njobs:\n change-labeling:\n name"
},
{
"path": ".github/workflows/release-tag.yml",
"chars": 510,
"preview": "name: Create Release Tag\n\non:\n push:\n tags:\n - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10\n\njobs:\n "
},
{
"path": ".github/workflows/test.yml",
"chars": 1167,
"preview": "name: CI\n\non: [push, pull_request]\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v1\n"
},
{
"path": ".gitignore",
"chars": 199,
"preview": "*.log*\n.cache\n.DS_Store\n.idea\n.vscode\nnode_modules\nsite-dist\ndocs/dist\nexample/dist\n.history\nchangelog.generated.md\npack"
},
{
"path": ".husky/.gitignore",
"chars": 2,
"preview": "_\n"
},
{
"path": ".husky/commit-msg",
"chars": 83,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx --no-install vant-cli commit-lint $1\n"
},
{
"path": ".husky/pre-commit",
"chars": 71,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx --no-install lint-staged\n"
},
{
"path": ".npmrc",
"chars": 36,
"preview": "registry=https://registry.npmjs.org\n"
},
{
"path": ".prettierignore",
"chars": 9,
"preview": "lib\ndist\n"
},
{
"path": ".prettierrc",
"chars": 50,
"preview": "{\n \"singleQuote\": true,\n \"proseWrap\": \"never\"\n}\n"
},
{
"path": ".stylelintrc",
"chars": 283,
"preview": "{\n \"extends\": [\n \"@vant/stylelint-config\"\n ],\n \"rules\": {\n \"unit-no-unknown\": [\n true,\n {\n \"ig"
},
{
"path": "LICENSE",
"chars": 1053,
"preview": "Copyright 2016-present Youzan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this soft"
},
{
"path": "README.md",
"chars": 5103,
"preview": "<p align=\"center\">\n <img alt=\"logo\" src=\"https://img.yzcdn.cn/vant/logo.png\" width=\"120\" style=\"margin-bottom: 10px;\">\n"
},
{
"path": "babel.config.js",
"chars": 281,
"preview": "module.exports = {\n presets: [\n [\n '@babel/preset-env',\n {\n loose: true,\n modules: false,\n "
},
{
"path": "build/compiler.js",
"chars": 5648,
"preview": "const fs = require('fs');\nconst gulp = require('gulp');\nconst path = require('path');\nconst less = require('gulp-less');"
},
{
"path": "build/dev.mjs",
"chars": 517,
"preview": "import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { dev } from '@vant/cli/lib/command"
},
{
"path": "build/release.sh",
"chars": 575,
"preview": "#!/usr/bin/env sh\nset -e\necho \"Enter release version: \"\nread VERSION\n\nread -p \"Releasing $VERSION - are you sure? (y/n)\""
},
{
"path": "build/upload.js",
"chars": 527,
"preview": "const ci = require('miniprogram-ci');\nconst path = require('path');\nconst config = require('../example/project.config.js"
},
{
"path": "dist/action-sheet/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/action-sheet/index.js",
"chars": 2009,
"preview": "import { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nVantComponent({\n clas"
},
{
"path": "dist/action-sheet/index.json",
"chars": 158,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-icon\": \"../icon/index\",\n \"van-popup\": \"../popup/index\",\n \"v"
},
{
"path": "dist/action-sheet/index.wxml",
"chars": 2485,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<van-popup\n show=\"{{ show }}\"\n position=\"bottom\"\n round=\"{{ round }}\"\n"
},
{
"path": "dist/action-sheet/index.wxss",
"chars": 1988,
"preview": "@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--acti"
},
{
"path": "dist/area/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/area/index.js",
"chars": 7711,
"preview": "import { VantComponent } from '../common/component';\nimport { pickerProps } from '../picker/shared';\nimport { requestAni"
},
{
"path": "dist/area/index.json",
"chars": 88,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-picker\": \"../picker/index\"\n }\n}\n"
},
{
"path": "dist/area/index.wxml",
"chars": 594,
"preview": "<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<van-picker\n class=\"van-area__picker\"\n active-class=\"active-class\"\n tool"
},
{
"path": "dist/area/index.wxs",
"chars": 167,
"preview": "/* eslint-disable */\nfunction displayColumns(columns, columnsNum) {\n return columns.slice(0, +columnsNum);\n}\n\nmodule.ex"
},
{
"path": "dist/area/index.wxss",
"chars": 31,
"preview": "@import '../common/index.wxss';"
},
{
"path": "dist/button/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/button/index.js",
"chars": 1725,
"preview": "import { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nimport { canIUseFormFiel"
},
{
"path": "dist/button/index.json",
"chars": 123,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-icon\": \"../icon/index\",\n \"van-loading\": \"../loading/index\"\n }"
},
{
"path": "dist/button/index.wxml",
"chars": 2021,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<button\n id=\"{{ id || button"
},
{
"path": "dist/button/index.wxs",
"chars": 757,
"preview": "/* eslint-disable */\nvar style = require('../wxs/style.wxs');\n\nfunction rootStyle(data) {\n if (!data.color) {\n retur"
},
{
"path": "dist/button/index.wxss",
"chars": 3517,
"preview": "@import '../common/index.wxss';.van-button{-webkit-text-size-adjust:100%;align-items:center;-webkit-appearance:none;bord"
},
{
"path": "dist/calendar/calendar.wxml",
"chars": 1866,
"preview": "<wxs src=\"./index.wxs\" module=\"computed\" />\n<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<view class=\"van-calendar\">\n "
},
{
"path": "dist/calendar/components/header/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/calendar/components/header/index.js",
"chars": 957,
"preview": "import { VantComponent } from '../../../common/component';\nVantComponent({\n props: {\n title: {\n typ"
},
{
"path": "dist/calendar/components/header/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/calendar/components/header/index.wxml",
"chars": 523,
"preview": "<view class=\"van-calendar__header\">\n <block wx:if=\"{{ showTitle }}\">\n <view class=\"van-calendar__header-title\"><slot"
},
{
"path": "dist/calendar/components/header/index.wxss",
"chars": 741,
"preview": "@import '../../../common/index.wxss';.van-calendar__header{box-shadow:var(--calendar-header-box-shadow,0 2px 10px hsla(2"
},
{
"path": "dist/calendar/components/month/index.d.ts",
"chars": 102,
"preview": "export interface Day {\n date: Date;\n type: string;\n text: number;\n bottomInfo?: string;\n}\n"
},
{
"path": "dist/calendar/components/month/index.js",
"chars": 4976,
"preview": "import { VantComponent } from '../../../common/component';\nimport { getMonthEndDay, compareDay, getPrevDay, getNextDay, "
},
{
"path": "dist/calendar/components/month/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/calendar/components/month/index.wxml",
"chars": 1545,
"preview": "<wxs src=\"./index.wxs\" module=\"computed\"></wxs>\n<wxs src=\"../../../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-ca"
},
{
"path": "dist/calendar/components/month/index.wxs",
"chars": 1664,
"preview": "/* eslint-disable */\nvar utils = require('../../utils.wxs');\n\nfunction getMark(date) {\n return getDate(date).getMonth()"
},
{
"path": "dist/calendar/components/month/index.wxss",
"chars": 2390,
"preview": "@import '../../../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;f"
},
{
"path": "dist/calendar/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/calendar/index.js",
"chars": 11743,
"preview": "import { VantComponent } from '../common/component';\nimport { ROW_HEIGHT, getPrevDay, getNextDay, getToday, compareDay, "
},
{
"path": "dist/calendar/index.json",
"chars": 242,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"header\": \"./components/header/index\",\n \"month\": \"./components/mont"
},
{
"path": "dist/calendar/index.wxml",
"chars": 744,
"preview": "<wxs src=\"./index.wxs\" module=\"computed\" />\n<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<import src=\"./calendar.wxml\""
},
{
"path": "dist/calendar/index.wxs",
"chars": 717,
"preview": "/* eslint-disable */\nvar utils = require('./utils.wxs');\n\nfunction getMonths(minDate, maxDate) {\n var months = [];\n va"
},
{
"path": "dist/calendar/index.wxss",
"chars": 972,
"preview": "@import '../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-di"
},
{
"path": "dist/calendar/utils.d.ts",
"chars": 801,
"preview": "export declare const ROW_HEIGHT = 64;\nexport declare function formatMonthTitle(date: Date): string;\nexport declare funct"
},
{
"path": "dist/calendar/utils.js",
"chars": 2385,
"preview": "export const ROW_HEIGHT = 64;\nexport function formatMonthTitle(date) {\n if (!(date instanceof Date)) {\n date ="
},
{
"path": "dist/calendar/utils.wxs",
"chars": 558,
"preview": "/* eslint-disable */\nfunction getMonthEndDay(year, month) {\n return 32 - getDate(year, month - 1, 32).getDate();\n}\n\nfu"
},
{
"path": "dist/card/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/card/index.js",
"chars": 1180,
"preview": "import { link } from '../mixins/link';\nimport { VantComponent } from '../common/component';\nVantComponent({\n classes:"
},
{
"path": "dist/card/index.json",
"chars": 82,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-tag\": \"../tag/index\"\n }\n}\n"
},
{
"path": "dist/card/index.wxml",
"chars": 1894,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"custom-class van-card\">\n <view class=\"{{ utils.bem('card__h"
},
{
"path": "dist/card/index.wxss",
"chars": 1750,
"preview": "@import '../common/index.wxss';.van-card{background-color:var(--card-background-color,#fafafa);box-sizing:border-box;col"
},
{
"path": "dist/cascader/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/cascader/index.js",
"chars": 6550,
"preview": "import { VantComponent } from '../common/component';\nvar FieldName;\n(function (FieldName) {\n FieldName[\"TEXT\"] = \"tex"
},
{
"path": "dist/cascader/index.json",
"chars": 148,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-icon\": \"../icon/index\",\n \"van-tab\": \"../tab/index\",\n \"van-"
},
{
"path": "dist/cascader/index.wxml",
"chars": 1674,
"preview": "<wxs src=\"./index.wxs\" module=\"utils\" />\n\n<view wx:if=\"{{ showHeader }}\" class=\"van-cascader__header\">\n <slot name=\"tit"
},
{
"path": "dist/cascader/index.wxs",
"chars": 651,
"preview": "var utils = require('../wxs/utils.wxs');\nvar style = require('../wxs/style.wxs');\n\nfunction isSelected(tab, valueKey, op"
},
{
"path": "dist/cascader/index.wxss",
"chars": 1050,
"preview": "@import '../common/index.wxss';.van-cascader__header{align-items:center;display:flex;height:48px;justify-content:space-b"
},
{
"path": "dist/cell/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/cell/index.js",
"chars": 871,
"preview": "import { link } from '../mixins/link';\nimport { VantComponent } from '../common/component';\nVantComponent({\n classes:"
},
{
"path": "dist/cell/index.json",
"chars": 84,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-icon\": \"../icon/index\"\n }\n}\n"
},
{
"path": "dist/cell/index.wxml",
"chars": 1361,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view\n class=\"custom-class {"
},
{
"path": "dist/cell/index.wxs",
"chars": 335,
"preview": "/* eslint-disable */\nvar style = require('../wxs/style.wxs');\nvar addUnit = require('../wxs/add-unit.wxs');\n\nfunction ti"
},
{
"path": "dist/cell/index.wxss",
"chars": 2201,
"preview": "@import '../common/index.wxss';.van-cell{background-color:var(--cell-background-color,#fff);box-sizing:border-box;color:"
},
{
"path": "dist/cell-group/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/cell-group/index.js",
"chars": 221,
"preview": "import { VantComponent } from '../common/component';\nVantComponent({\n props: {\n title: String,\n border:"
},
{
"path": "dist/cell-group/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/cell-group/index.wxml",
"chars": 292,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n wx:if=\"{{ title }}\"\n class=\"{{ utils.bem('cell-group__title', { "
},
{
"path": "dist/cell-group/index.wxss",
"chars": 490,
"preview": "@import '../common/index.wxss';.van-cell-group--inset{border-radius:var(--cell-group-inset-border-radius,8px);margin:var"
},
{
"path": "dist/checkbox/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/checkbox/index.js",
"chars": 2229,
"preview": "import { useParent } from '../common/relation';\nimport { VantComponent } from '../common/component';\nfunction emit(targe"
},
{
"path": "dist/checkbox/index.json",
"chars": 84,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-icon\": \"../icon/index\"\n }\n}\n"
},
{
"path": "dist/checkbox/index.wxml",
"chars": 1127,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view class=\"{{ utils.bem('ch"
},
{
"path": "dist/checkbox/index.wxs",
"chars": 477,
"preview": "/* eslint-disable */\nvar style = require('../wxs/style.wxs');\nvar addUnit = require('../wxs/add-unit.wxs');\n\nfunction ic"
},
{
"path": "dist/checkbox/index.wxss",
"chars": 1456,
"preview": "@import '../common/index.wxss';.van-checkbox{align-items:center;display:flex;overflow:hidden;-webkit-user-select:none;us"
},
{
"path": "dist/checkbox-group/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/checkbox-group/index.js",
"chars": 969,
"preview": "import { useChildren } from '../common/relation';\nimport { VantComponent } from '../common/component';\nVantComponent({\n "
},
{
"path": "dist/checkbox-group/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/checkbox-group/index.wxml",
"chars": 161,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"{{ utils.bem('checkbox-group', [{ horizontal: direction === "
},
{
"path": "dist/checkbox-group/index.wxss",
"chars": 91,
"preview": "@import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}"
},
{
"path": "dist/circle/canvas.d.ts",
"chars": 209,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\ntype CanvasContext = WechatMiniprogram.CanvasContext;\nexport declare f"
},
{
"path": "dist/circle/canvas.js",
"chars": 1097,
"preview": "export function adaptor(ctx) {\n // @ts-ignore\n return Object.assign(ctx, {\n setStrokeStyle(val) {\n "
},
{
"path": "dist/circle/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/circle/index.js",
"chars": 6603,
"preview": "import { BLUE, WHITE } from '../common/color';\nimport { VantComponent } from '../common/component';\nimport { getSystemIn"
},
{
"path": "dist/circle/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/circle/index.wxml",
"chars": 412,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-circle\">\n <canvas class=\"van-circle__canvas\" type=\"{{ t"
},
{
"path": "dist/circle/index.wxss",
"chars": 228,
"preview": "@import '../common/index.wxss';.van-circle{display:inline-block;position:relative;text-align:center}.van-circle__text{co"
},
{
"path": "dist/col/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/col/index.js",
"chars": 219,
"preview": "import { useParent } from '../common/relation';\nimport { VantComponent } from '../common/component';\nVantComponent({\n "
},
{
"path": "dist/col/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/col/index.wxml",
"chars": 267,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view\n class=\"custom-class {"
},
{
"path": "dist/col/index.wxs",
"chars": 343,
"preview": "/* eslint-disable */\nvar style = require('../wxs/style.wxs');\nvar addUnit = require('../wxs/add-unit.wxs');\n\nfunction ro"
},
{
"path": "dist/col/index.wxss",
"chars": 1773,
"preview": "@import '../common/index.wxss';.van-col{box-sizing:border-box;float:left}.van-col--1{width:4.16666667%}.van-col--offset-"
},
{
"path": "dist/collapse/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/collapse/index.js",
"chars": 1290,
"preview": "import { VantComponent } from '../common/component';\nimport { useChildren } from '../common/relation';\nVantComponent({\n "
},
{
"path": "dist/collapse/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/collapse/index.wxml",
"chars": 107,
"preview": "<view class=\"custom-class van-collapse {{ border ? 'van-hairline--top-bottom' : '' }}\">\n <slot />\n</view>\n"
},
{
"path": "dist/collapse/index.wxss",
"chars": 31,
"preview": "@import '../common/index.wxss';"
},
{
"path": "dist/collapse-item/animate.d.ts",
"chars": 190,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\nexport declare function setContentAnimate(context: WechatMiniprogram.C"
},
{
"path": "dist/collapse-item/animate.js",
"chars": 1097,
"preview": "import { getRect } from '../common/utils';\nfunction useAnimation(context, expanded, mounted, height) {\n const animati"
},
{
"path": "dist/collapse-item/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/collapse-item/index.js",
"chars": 1856,
"preview": "import { VantComponent } from '../common/component';\nimport { useParent } from '../common/relation';\nimport { setContent"
},
{
"path": "dist/collapse-item/index.json",
"chars": 84,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-cell\": \"../cell/index\"\n }\n}\n"
},
{
"path": "dist/collapse-item/index.wxml",
"chars": 1070,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-collapse-item custom-class {{ index !== 0 && parentBorde"
},
{
"path": "dist/collapse-item/index.wxss",
"chars": 862,
"preview": "@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{transform:rotate(90deg);transition:transf"
},
{
"path": "dist/common/color.d.ts",
"chars": 278,
"preview": "export declare const RED = \"#ee0a24\";\nexport declare const BLUE = \"#1989fa\";\nexport declare const WHITE = \"#fff\";\nexport"
},
{
"path": "dist/common/color.js",
"chars": 222,
"preview": "export const RED = '#ee0a24';\nexport const BLUE = '#1989fa';\nexport const WHITE = '#fff';\nexport const GREEN = '#07c160'"
},
{
"path": "dist/common/component.d.ts",
"chars": 398,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\nimport { VantComponentOptions } from 'definitions/index';\ndeclare func"
},
{
"path": "dist/common/component.js",
"chars": 1344,
"preview": "import { basic } from '../mixins/basic';\nfunction mapKeys(source, target, map) {\n Object.keys(map).forEach((key) => {"
},
{
"path": "dist/common/index.wxss",
"chars": 1180,
"preview": ".van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.va"
},
{
"path": "dist/common/relation.d.ts",
"chars": 568,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\ntype TrivialInstance = WechatMiniprogram.Component.TrivialInstance;\nex"
},
{
"path": "dist/common/relation.js",
"chars": 1797,
"preview": "export function useParent(name, onEffect) {\n const path = `../${name}/index`;\n return {\n relations: {\n "
},
{
"path": "dist/common/style/clearfix.wxss",
"chars": 56,
"preview": ".van-clearfix:after{clear:both;content:\"\";display:table}"
},
{
"path": "dist/common/style/ellipsis.wxss",
"chars": 297,
"preview": ".van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.va"
},
{
"path": "dist/common/style/hairline.wxss",
"chars": 827,
"preview": ".van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,"
},
{
"path": "dist/common/style/mixins/clearfix.wxss",
"chars": 0,
"preview": ""
},
{
"path": "dist/common/style/mixins/ellipsis.wxss",
"chars": 0,
"preview": ""
},
{
"path": "dist/common/style/mixins/hairline.wxss",
"chars": 0,
"preview": ""
},
{
"path": "dist/common/style/var.wxss",
"chars": 0,
"preview": ""
},
{
"path": "dist/common/utils.d.ts",
"chars": 1773,
"preview": "/// <reference types=\"node\" />\n/// <reference types=\"miniprogram-api-typings\" />\n/// <reference types=\"miniprogram-api-t"
},
{
"path": "dist/common/utils.js",
"chars": 2412,
"preview": "import { isDef, isNumber, isPlainObject, isPromise } from './validator';\nimport { canIUseGroupSetData, canIUseNextTick, "
},
{
"path": "dist/common/validator.d.ts",
"chars": 605,
"preview": "export declare function isFunction(val: unknown): val is Function;\nexport declare function isPlainObject(val: unknown): "
},
{
"path": "dist/common/validator.js",
"chars": 1008,
"preview": "// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isFunction(val) {\n return typeof val === 'fu"
},
{
"path": "dist/common/version.d.ts",
"chars": 671,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\ninterface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo {\n "
},
{
"path": "dist/common/version.js",
"chars": 1336,
"preview": "let systemInfo;\nexport function getSystemInfoSync() {\n if (systemInfo == null) {\n systemInfo = wx.getSystemInf"
},
{
"path": "dist/config-provider/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/config-provider/index.js",
"chars": 174,
"preview": "import { VantComponent } from '../common/component';\nVantComponent({\n props: {\n themeVars: {\n type:"
},
{
"path": "dist/config-provider/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/config-provider/index.wxml",
"chars": 155,
"preview": "<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view class=\"van-config-provider\" style=\"{{ computed.mapThemeVarsToCSSVars("
},
{
"path": "dist/config-provider/index.wxs",
"chars": 641,
"preview": "/* eslint-disable */\nvar object = require('../wxs/object.wxs');\nvar style = require('../wxs/style.wxs');\n\nfunction kebab"
},
{
"path": "dist/count-down/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/count-down/index.js",
"chars": 2632,
"preview": "import { VantComponent } from '../common/component';\nimport { isSameSecond, parseFormat, parseTimeData } from './utils';"
},
{
"path": "dist/count-down/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/count-down/index.wxml",
"chars": 115,
"preview": "<view class=\"van-count-down\">\n <slot wx:if=\"{{ useSlot }}\"/>\n <block wx:else>{{ formattedTime }}</block>\n</view>\n"
},
{
"path": "dist/count-down/index.wxss",
"chars": 180,
"preview": "@import '../common/index.wxss';.van-count-down{color:var(--count-down-text-color,#323233);font-size:var(--count-down-fon"
},
{
"path": "dist/count-down/utils.d.ts",
"chars": 354,
"preview": "export type TimeData = {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds"
},
{
"path": "dist/count-down/utils.js",
"chars": 1575,
"preview": "function padZero(num, targetLength = 2) {\n let str = num + '';\n while (str.length < targetLength) {\n str = "
},
{
"path": "dist/datetime-picker/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/datetime-picker/index.js",
"chars": 10699,
"preview": "import { VantComponent } from '../common/component';\nimport { isDef } from '../common/validator';\nimport { pickerProps }"
},
{
"path": "dist/datetime-picker/index.json",
"chars": 88,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-picker\": \"../picker/index\"\n }\n}\n"
},
{
"path": "dist/datetime-picker/index.wxml",
"chars": 470,
"preview": "<van-picker\n class=\"van-datetime-picker\"\n active-class=\"active-class\"\n toolbar-class=\"toolbar-class\"\n column-class=\""
},
{
"path": "dist/datetime-picker/index.wxss",
"chars": 31,
"preview": "@import '../common/index.wxss';"
},
{
"path": "dist/definitions/index.d.ts",
"chars": 1224,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\ninterface VantComponentInstance {\n parent: WechatMiniprogram.Compon"
},
{
"path": "dist/definitions/index.js",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/dialog/dialog.d.ts",
"chars": 1836,
"preview": "/// <reference types=\"miniprogram-api-typings\" />\n/// <reference types=\"miniprogram-api-typings\" />\nexport type Action ="
},
{
"path": "dist/dialog/dialog.js",
"chars": 2354,
"preview": "let queue = [];\nconst defaultOptions = {\n show: false,\n title: '',\n width: null,\n theme: 'default',\n mess"
},
{
"path": "dist/dialog/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/dialog/index.js",
"chars": 3472,
"preview": "import { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nimport { GRAY, RED } fro"
},
{
"path": "dist/dialog/index.json",
"chars": 235,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-popup\": \"../popup/index\",\n \"van-button\": \"../button/index\",\n "
},
{
"path": "dist/dialog/index.wxml",
"chars": 4500,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<van-popup\n show=\"{{ show }}\"\n z-index=\"{{ zIndex }}\"\n overlay=\"{{ ove"
},
{
"path": "dist/dialog/index.wxss",
"chars": 1659,
"preview": "@import '../common/index.wxss';.van-dialog{background-color:var(--dialog-background-color,#fff);border-radius:var(--dial"
},
{
"path": "dist/divider/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/divider/index.js",
"chars": 289,
"preview": "import { VantComponent } from '../common/component';\nVantComponent({\n props: {\n dashed: Boolean,\n hairl"
},
{
"path": "dist/divider/index.json",
"chars": 49,
"preview": "{\n \"component\": true,\n \"usingComponents\": {}\n}\n"
},
{
"path": "dist/divider/index.wxml",
"chars": 295,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view\n class=\"custom-class {"
},
{
"path": "dist/divider/index.wxs",
"chars": 355,
"preview": "/* eslint-disable */\nvar style = require('../wxs/style.wxs');\nvar addUnit = require('../wxs/add-unit.wxs');\n\nfunction ro"
},
{
"path": "dist/divider/index.wxss",
"chars": 1011,
"preview": "@import '../common/index.wxss';.van-divider{align-items:center;border:0 solid var(--divider-border-color,#ebedf0);color:"
},
{
"path": "dist/dropdown-item/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/dropdown-item/index.js",
"chars": 3843,
"preview": "import { useParent } from '../common/relation';\nimport { VantComponent } from '../common/component';\nVantComponent({\n "
},
{
"path": "dist/dropdown-item/index.json",
"chars": 152,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-popup\": \"../popup/index\",\n \"van-cell\": \"../cell/index\",\n \"v"
},
{
"path": "dist/dropdown-item/index.wxml",
"chars": 1419,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n wx:if=\"{{ showWrapper }}\"\n class=\"{{ utils.bem('dropdown-item', "
},
{
"path": "dist/dropdown-item/index.wxss",
"chars": 437,
"preview": "@import '../common/index.wxss';.van-dropdown-item{left:0;overflow:hidden;position:fixed;right:0}.van-dropdown-item__opti"
},
{
"path": "dist/dropdown-item/shared.d.ts",
"chars": 92,
"preview": "export interface Option {\n text: string;\n value: string | number;\n icon: string;\n}\n"
},
{
"path": "dist/dropdown-item/shared.js",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/dropdown-menu/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/dropdown-menu/index.js",
"chars": 3552,
"preview": "import { VantComponent } from '../common/component';\nimport { useChildren } from '../common/relation';\nimport { addUnit,"
},
{
"path": "dist/dropdown-menu/index.json",
"chars": 24,
"preview": "{\n \"component\": true\n}\n"
},
{
"path": "dist/dropdown-menu/index.wxml",
"chars": 743,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view class=\"van-dropdown-men"
},
{
"path": "dist/dropdown-menu/index.wxs",
"chars": 331,
"preview": "/* eslint-disable */\nfunction displayTitle(item) {\n if (item.title) {\n return item.title;\n }\n\n var match = item.op"
},
{
"path": "dist/dropdown-menu/index.wxss",
"chars": 1296,
"preview": "@import '../common/index.wxss';.van-dropdown-menu{background-color:var(--dropdown-menu-background-color,#fff);box-shadow"
},
{
"path": "dist/empty/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/empty/index.js",
"chars": 206,
"preview": "import { VantComponent } from '../common/component';\nVantComponent({\n props: {\n description: String,\n i"
},
{
"path": "dist/empty/index.json",
"chars": 49,
"preview": "{\n \"component\": true,\n \"usingComponents\": {}\n}\n"
},
{
"path": "dist/empty/index.wxml",
"chars": 581,
"preview": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view class=\"custom-class van"
},
{
"path": "dist/empty/index.wxs",
"chars": 284,
"preview": "/* eslint-disable */\nvar PRESETS = ['error', 'search', 'default', 'network'];\n\nfunction imageUrl(image) {\n if (PRESETS."
},
{
"path": "dist/empty/index.wxss",
"chars": 582,
"preview": "@import '../common/index.wxss';.van-empty{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;ju"
},
{
"path": "dist/field/index.d.ts",
"chars": 11,
"preview": "export {};\n"
},
{
"path": "dist/field/index.js",
"chars": 4850,
"preview": "import { nextTick } from '../common/utils';\nimport { VantComponent } from '../common/component';\nimport { commonProps, i"
},
{
"path": "dist/field/index.json",
"chars": 117,
"preview": "{\n \"component\": true,\n \"usingComponents\": {\n \"van-cell\": \"../cell/index\",\n \"van-icon\": \"../icon/index\"\n }\n}\n"
}
]
// ... and 1692 more files (download for full content)
About this extraction
This page contains the full source code of the youzan/vant-weapp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1892 files (2.6 MB), approximately 776.0k tokens, and a symbol index with 1293 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.