├── docs
├── static
│ ├── demo-js
│ │ └── demo.js
│ └── image
│ │ ├── slider
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 11.jpg
│ │ ├── 12.jpg
│ │ ├── 13.jpg
│ │ ├── 14.jpg
│ │ ├── 15.jpg
│ │ ├── 16.jpg
│ │ ├── 17.jpg
│ │ ├── 18.jpg
│ │ ├── 19.jpg
│ │ ├── 20.jpg
│ │ ├── 21.jpg
│ │ ├── 22.jpg
│ │ ├── 23.jpg
│ │ ├── 24.jpg
│ │ └── 25.jpg
│ │ └── box
│ │ └── 700×300.png
├── index.html
└── demo.html
├── src
├── install.js
├── components
│ ├── box
│ │ ├── index.js
│ │ └── README.md
│ ├── card
│ │ └── index.js
│ ├── grid
│ │ └── index.js
│ ├── row
│ │ ├── index.js
│ │ ├── row.vue
│ │ └── README.md
│ ├── alert
│ │ ├── index.js
│ │ ├── README.md
│ │ └── install.js
│ ├── cell
│ │ ├── index.js
│ │ ├── README.md
│ │ └── cell.vue
│ ├── confirm
│ │ ├── index.js
│ │ └── README.md
│ ├── justify
│ │ ├── index.js
│ │ ├── justify.vue
│ │ └── README.md
│ ├── marquee
│ │ └── index.js
│ ├── number
│ │ └── index.js
│ ├── picker
│ │ └── index.js
│ ├── popup
│ │ └── index.js
│ ├── prompt
│ │ └── index.js
│ ├── radio
│ │ └── index.js
│ ├── rater
│ │ └── index.js
│ ├── slider
│ │ └── index.js
│ ├── submit
│ │ ├── index.js
│ │ └── README.md
│ ├── toast
│ │ ├── index.js
│ │ └── install.js
│ ├── toggle
│ │ ├── index.js
│ │ └── toggle.vue
│ ├── upload
│ │ └── index.js
│ ├── button
│ │ └── index.js
│ ├── checkbox
│ │ └── index.js
│ ├── dropload
│ │ └── index.js
│ ├── overlay
│ │ ├── index.js
│ │ ├── overlay.vue
│ │ └── README.md
│ ├── spinner
│ │ ├── index.js
│ │ └── spinner
│ │ │ ├── spinner.js
│ │ │ ├── blade.vue
│ │ │ ├── double-bounce.vue
│ │ │ ├── snake.vue
│ │ │ ├── fading-circle.vue
│ │ │ └── triple-bounce.vue
│ ├── tabbar
│ │ └── index.js
│ ├── textarea
│ │ ├── index.js
│ │ └── README.md
│ ├── actionsheet
│ │ └── index.js
│ ├── dialogbox
│ │ └── index.js
│ ├── popup-picker
│ │ └── index.js
│ ├── progressbar
│ │ └── index.js
│ ├── tabcontrol
│ │ └── index.js
│ ├── popup-date-picker
│ │ ├── index.js
│ │ └── popup-date-picker.vue
│ ├── navbar
│ │ ├── topbar.vue
│ │ └── index.js
│ └── input
│ │ └── index.js
├── scss
│ ├── icono
│ │ ├── icons
│ │ │ ├── rewind.scss
│ │ │ ├── stop.scss
│ │ │ ├── cross.scss
│ │ │ ├── pause.scss
│ │ │ ├── previous.scss
│ │ │ ├── ellipsis.scss
│ │ │ ├── circle.scss
│ │ │ ├── nexus.scss
│ │ │ ├── outdent.scss
│ │ │ ├── tiles.scss
│ │ │ ├── bars.scss
│ │ │ ├── play.scss
│ │ │ ├── filter.scss
│ │ │ ├── frown.scss
│ │ │ ├── spinner.scss
│ │ │ ├── meh.scss
│ │ │ ├── sun.scss
│ │ │ ├── list.scss
│ │ │ ├── forbidden.scss
│ │ │ ├── moon.scss
│ │ │ ├── mail.scss
│ │ │ ├── next.scss
│ │ │ ├── power.scss
│ │ │ ├── forward.scss
│ │ │ ├── search.scss
│ │ │ ├── pin.scss
│ │ │ ├── eye.scss
│ │ │ ├── user.scss
│ │ │ ├── gear.scss
│ │ │ ├── trash.scss
│ │ │ ├── chain.scss
│ │ │ ├── asterisk.scss
│ │ │ ├── headphone.scss
│ │ │ ├── infinity.scss
│ │ │ ├── display.scss
│ │ │ ├── file.scss
│ │ │ ├── indent.scss
│ │ │ ├── cart.scss
│ │ │ ├── sitemap.scss
│ │ │ ├── creditCard.scss
│ │ │ ├── rss.scss
│ │ │ ├── signin.scss
│ │ │ ├── signout.scss
│ │ │ ├── piano.scss
│ │ │ ├── plus.scss
│ │ │ ├── share.scss
│ │ │ ├── rename.scss
│ │ │ ├── clock.scss
│ │ │ ├── bluetooth.scss
│ │ │ ├── camera.scss
│ │ │ ├── ruler.scss
│ │ │ ├── sliders.scss
│ │ │ ├── reset.scss
│ │ │ ├── cup.scss
│ │ │ ├── keyboard.scss
│ │ │ ├── flag.scss
│ │ │ ├── terminal.scss
│ │ │ ├── document.scss
│ │ │ ├── video.scss
│ │ │ ├── image.scss
│ │ │ ├── market.scss
│ │ │ ├── music.scss
│ │ │ ├── dropper.scss
│ │ │ ├── locationArrow.scss
│ │ │ ├── icono.scss
│ │ │ ├── mouse.scss
│ │ │ ├── microphone.scss
│ │ │ ├── textAlign.scss
│ │ │ ├── crop.scss
│ │ │ ├── support.scss
│ │ │ ├── home.scss
│ │ │ ├── tag.scss
│ │ │ ├── folder.scss
│ │ │ ├── sync.scss
│ │ │ ├── paperclip.scss
│ │ │ ├── bookmark.scss
│ │ │ ├── smile.scss
│ │ │ ├── calendar.scss
│ │ │ ├── arrow.scss
│ │ │ ├── iphone.scss
│ │ │ ├── book.scss
│ │ │ ├── youtube.scss
│ │ │ ├── heart.scss
│ │ │ ├── check.scss
│ │ │ ├── macbook.scss
│ │ │ ├── exclamation.scss
│ │ │ └── comment.scss
│ │ ├── generals.scss
│ │ ├── functions.scss
│ │ ├── variables.scss
│ │ └── icono.scss
│ ├── components
│ │ ├── grid.scss
│ │ ├── overlay.scss
│ │ ├── actionsheet.scss
│ │ ├── box.scss
│ │ ├── number.scss
│ │ ├── row.scss
│ │ ├── alert.scss
│ │ ├── popup-picker.scss
│ │ ├── confirm.scss
│ │ ├── progressbar.scss
│ │ ├── textarea.scss
│ │ ├── cell.scss
│ │ ├── upload.scss
│ │ ├── navbar.scss
│ │ ├── rater.scss
│ │ ├── prompt.scss
│ │ ├── tabbar.scss
│ │ ├── dialog.scss
│ │ └── marquee.scss
│ └── util
│ │ ├── justify.scss
│ │ ├── reddot.scss
│ │ ├── badge.scss
│ │ └── nowrap.scss
├── styles
│ ├── icono
│ │ ├── icons
│ │ │ ├── stop.less
│ │ │ ├── rewind.less
│ │ │ ├── cross.less
│ │ │ ├── pause.less
│ │ │ ├── ellipsis.less
│ │ │ ├── circle.less
│ │ │ ├── previous.less
│ │ │ ├── nexus.less
│ │ │ ├── tiles.less
│ │ │ ├── outdent.less
│ │ │ ├── play.less
│ │ │ ├── bars.less
│ │ │ ├── next.less
│ │ │ ├── spinner.less
│ │ │ ├── filter.less
│ │ │ ├── sun.less
│ │ │ ├── frown.less
│ │ │ ├── meh.less
│ │ │ ├── list.less
│ │ │ ├── forbidden.less
│ │ │ ├── moon.less
│ │ │ ├── mail.less
│ │ │ ├── power.less
│ │ │ ├── search.less
│ │ │ ├── forward.less
│ │ │ ├── user.less
│ │ │ ├── pin.less
│ │ │ ├── eye.less
│ │ │ ├── gear.less
│ │ │ ├── trash.less
│ │ │ ├── chain.less
│ │ │ ├── headphone.less
│ │ │ ├── infinity.less
│ │ │ ├── cart.less
│ │ │ ├── display.less
│ │ │ ├── indent.less
│ │ │ ├── asterisk.less
│ │ │ ├── file.less
│ │ │ ├── sitemap.less
│ │ │ ├── rss.less
│ │ │ ├── creditCard.less
│ │ │ ├── signin.less
│ │ │ ├── piano.less
│ │ │ ├── share.less
│ │ │ ├── plus.less
│ │ │ ├── signout.less
│ │ │ ├── keyboard.less
│ │ │ ├── rename.less
│ │ │ ├── bluetooth.less
│ │ │ ├── clock.less
│ │ │ ├── ruler.less
│ │ │ ├── camera.less
│ │ │ ├── sliders.less
│ │ │ ├── cup.less
│ │ │ ├── reset.less
│ │ │ ├── flag.less
│ │ │ ├── terminal.less
│ │ │ ├── dropper.less
│ │ │ ├── document.less
│ │ │ ├── image.less
│ │ │ ├── video.less
│ │ │ ├── market.less
│ │ │ ├── music.less
│ │ │ ├── icono.less
│ │ │ ├── microphone.less
│ │ │ ├── crop.less
│ │ │ ├── locationArrow.less
│ │ │ ├── mouse.less
│ │ │ ├── textAlign.less
│ │ │ ├── home.less
│ │ │ ├── support.less
│ │ │ ├── tag.less
│ │ │ ├── folder.less
│ │ │ ├── calendar.less
│ │ │ ├── paperclip.less
│ │ │ ├── sync.less
│ │ │ ├── bookmark.less
│ │ │ ├── smile.less
│ │ │ ├── arrow.less
│ │ │ ├── iphone.less
│ │ │ ├── book.less
│ │ │ ├── youtube.less
│ │ │ ├── check.less
│ │ │ ├── heart.less
│ │ │ ├── macbook.less
│ │ │ ├── exclamation.less
│ │ │ └── comment.less
│ │ ├── variables.less
│ │ ├── generals.less
│ │ ├── mixins.less
│ │ └── icono.less
│ ├── components
│ │ ├── grid.less
│ │ ├── overlay.less
│ │ ├── actionsheet.less
│ │ ├── box.less
│ │ ├── number.less
│ │ ├── row.less
│ │ ├── popup-picker.less
│ │ ├── alert.less
│ │ ├── confirm.less
│ │ ├── progressbar.less
│ │ ├── cell.less
│ │ ├── textarea.less
│ │ ├── navbar.less
│ │ ├── upload.less
│ │ ├── rater.less
│ │ ├── prompt.less
│ │ ├── tabbar.less
│ │ ├── dialog.less
│ │ └── marquee.less
│ └── util
│ │ ├── justify.less
│ │ ├── reddot.less
│ │ ├── badge.less
│ │ └── nowrap.less
├── utils
│ ├── filter.js
│ ├── env.js
│ └── index.js
└── vmc.js
├── examples
├── static
│ ├── demo-js
│ │ └── demo.js
│ └── image
│ │ ├── slider
│ │ ├── 1.jpg
│ │ ├── 11.jpg
│ │ ├── 12.jpg
│ │ ├── 13.jpg
│ │ ├── 14.jpg
│ │ ├── 15.jpg
│ │ ├── 16.jpg
│ │ ├── 17.jpg
│ │ ├── 18.jpg
│ │ ├── 19.jpg
│ │ ├── 2.jpg
│ │ ├── 20.jpg
│ │ ├── 21.jpg
│ │ ├── 22.jpg
│ │ ├── 23.jpg
│ │ ├── 24.jpg
│ │ ├── 25.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ └── 7.jpg
│ │ └── box
│ │ └── 700×300.png
├── pages
│ ├── components
│ │ ├── reddot.vue
│ │ ├── justify.vue
│ │ ├── badge.vue
│ │ ├── textarea.vue
│ │ ├── shake.vue
│ │ ├── tabbar.vue
│ │ └── box.vue
│ └── extends
│ │ └── popup-address-picker.vue
├── index.html
├── demo.html
├── main.js
└── assets
│ └── css
│ └── transition.css
├── .gitignore
├── .postcssrc.js
└── .babelrc
/docs/static/demo-js/demo.js:
--------------------------------------------------------------------------------
1 | new Vue({
2 | el: '#app'
3 | });
--------------------------------------------------------------------------------
/src/install.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./components/install');
--------------------------------------------------------------------------------
/examples/static/demo-js/demo.js:
--------------------------------------------------------------------------------
1 | new Vue({
2 | el: '#app'
3 | });
--------------------------------------------------------------------------------
/src/components/box/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./box.vue');
--------------------------------------------------------------------------------
/src/components/card/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./card.vue');
--------------------------------------------------------------------------------
/src/components/grid/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./grid.vue');
--------------------------------------------------------------------------------
/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./row.vue');
--------------------------------------------------------------------------------
/src/components/alert/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./alert.vue');
--------------------------------------------------------------------------------
/src/components/cell/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./cell.vue');
2 |
--------------------------------------------------------------------------------
/src/components/confirm/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./confirm.vue');
--------------------------------------------------------------------------------
/src/components/justify/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./justify.vue');
--------------------------------------------------------------------------------
/src/components/marquee/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./marquee.vue');
--------------------------------------------------------------------------------
/src/components/number/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./number.vue');
--------------------------------------------------------------------------------
/src/components/picker/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./picker.vue');
--------------------------------------------------------------------------------
/src/components/popup/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./popup.vue');
--------------------------------------------------------------------------------
/src/components/prompt/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./prompt.vue');
--------------------------------------------------------------------------------
/src/components/radio/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./radio.vue');
--------------------------------------------------------------------------------
/src/components/rater/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./rater.vue');
--------------------------------------------------------------------------------
/src/components/slider/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./slider.vue');
--------------------------------------------------------------------------------
/src/components/submit/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./submit.vue');
--------------------------------------------------------------------------------
/src/components/toast/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./toast.vue');
--------------------------------------------------------------------------------
/src/components/toggle/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./toggle.vue');
--------------------------------------------------------------------------------
/src/components/upload/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./upload.vue');
--------------------------------------------------------------------------------
/src/components/button/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./v-button.vue');
2 |
--------------------------------------------------------------------------------
/src/components/checkbox/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./checkbox.vue');
--------------------------------------------------------------------------------
/src/components/dropload/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./dropload.vue');
--------------------------------------------------------------------------------
/src/components/overlay/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./overlay.vue');
2 |
--------------------------------------------------------------------------------
/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./spinner.vue');
2 |
--------------------------------------------------------------------------------
/src/components/tabbar/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./tabbar.vue');
2 |
--------------------------------------------------------------------------------
/src/components/textarea/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./v-textarea.vue');
--------------------------------------------------------------------------------
/src/components/actionsheet/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./actionsheet.vue');
--------------------------------------------------------------------------------
/src/components/dialogbox/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./dialogbox.vue');
2 |
--------------------------------------------------------------------------------
/src/components/popup-picker/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./popup-picker.vue');
--------------------------------------------------------------------------------
/src/components/progressbar/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./progressbar.vue');
--------------------------------------------------------------------------------
/src/components/tabcontrol/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./tabcontrol.vue');
--------------------------------------------------------------------------------
/src/components/popup-date-picker/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./popup-date-picker.vue');
--------------------------------------------------------------------------------
/docs/static/image/slider/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/1.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/2.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/3.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/4.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/5.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/6.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/7.jpg
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | npm-debug.log
4 | yarn-error.log
5 | uploads/
6 | .idea
7 | .git/
8 |
--------------------------------------------------------------------------------
/docs/static/image/slider/11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/11.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/12.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/13.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/14.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/15.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/16.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/17.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/18.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/19.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/20.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/21.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/22.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/23.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/24.jpg
--------------------------------------------------------------------------------
/docs/static/image/slider/25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/slider/25.jpg
--------------------------------------------------------------------------------
/docs/static/image/box/700×300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/docs/static/image/box/700×300.png
--------------------------------------------------------------------------------
/examples/static/image/slider/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/1.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/11.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/12.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/13.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/14.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/15.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/16.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/17.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/18.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/19.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/2.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/20.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/21.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/22.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/23.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/24.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/25.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/3.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/4.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/5.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/6.jpg
--------------------------------------------------------------------------------
/examples/static/image/slider/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/slider/7.jpg
--------------------------------------------------------------------------------
/examples/static/image/box/700×300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Spikef/vmc/master/examples/static/image/box/700×300.png
--------------------------------------------------------------------------------
/src/components/navbar/topbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/components/input/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mInput: require('./m-input.vue'),
3 | vInput: require('./v-input.vue')
4 | };
--------------------------------------------------------------------------------
/src/components/navbar/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | Topbar: require('./topbar.vue'),
3 | Navbar: require('./navbar.vue')
4 | };
5 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/rewind.scss:
--------------------------------------------------------------------------------
1 | //*-- Rewind --*\\
2 | .icono-rewind{
3 | @extend .icono-forward;
4 | transform: rotate(180deg);
5 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/stop.scss:
--------------------------------------------------------------------------------
1 | //*-- Stop --*\\
2 | .icono-stop{
3 | width: 0;
4 | height: 0;
5 | border: solid $U10;
6 | margin: $U7;
7 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/stop.less:
--------------------------------------------------------------------------------
1 | //*-- Stop --*\\
2 | .icono-stop{
3 | width: 0;
4 | height: 0;
5 | border: solid @10;
6 | margin: @7;
7 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/rewind.less:
--------------------------------------------------------------------------------
1 | //*-- Rewind --*\\
2 | .icono-rewind{
3 | &:extend(.icono-forward all);
4 | transform: rotate(180deg);
5 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/cross.scss:
--------------------------------------------------------------------------------
1 | //*-- Cross --*\\
2 | //Cross is 45degree rotated plus :)
3 | .icono-cross, .icono-crossCircle{
4 | transform: rotate(45deg);
5 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/cross.less:
--------------------------------------------------------------------------------
1 | //*-- Cross --*\\
2 | //Cross is 45degree rotated plus :)
3 | .icono-cross, .icono-crossCircle{
4 | transform: rotate(45deg);
5 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/pause.less:
--------------------------------------------------------------------------------
1 | .icono-pause{
2 | width: @6;
3 | height: @20;
4 | margin: @7 @20 @7 @8;
5 | box-shadow: inset 0 0 0 @32, @12 0 0 0;
6 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/pause.scss:
--------------------------------------------------------------------------------
1 | .icono-pause{
2 | width: $U6;
3 | height: $U20;
4 | margin: $U7 $U20 $U7 $U8;
5 | box-shadow: inset 0 0 0 $U32, $U12 0 0 0;
6 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/previous.scss:
--------------------------------------------------------------------------------
1 | //*-- Previous --*\\
2 | .icono-previous{
3 | @extend .icono-next;
4 | transform: rotate(180deg);
5 | margin: $U7 $U10 $U7 $U14;
6 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/ellipsis.less:
--------------------------------------------------------------------------------
1 | //*-- Ellipsis --*\\
2 | .icono-ellipsis{
3 | .square(@4);
4 | box-shadow: 0 -1*@8 0, 0 0 0 @32 inset, 0 @8 0;
5 | margin: @15;
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/src/utils/filter.js:
--------------------------------------------------------------------------------
1 | export default function() {
2 | return {
3 | spaceText(val) {
4 | return String(val).split('').join(' ');
5 | }
6 | };
7 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/ellipsis.scss:
--------------------------------------------------------------------------------
1 | //*-- Ellipsis --*\\
2 | .icono-ellipsis{
3 | @include square($U4);
4 | box-shadow: 0 -1*$U8 0, 0 0 0 $U32 inset, 0 $U8 0;
5 | margin: $U15;
6 | }
7 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/circle.less:
--------------------------------------------------------------------------------
1 | //*-- Circle --*\\
2 | .icono-circle{
3 | width: @22;
4 | height: @22;
5 | border: @2 solid;
6 | border-radius: 50%;
7 | margin: @6;
8 | }
9 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/previous.less:
--------------------------------------------------------------------------------
1 | //*-- Previous --*\\
2 | .icono-previous{
3 | &:extend(.icono-next all);
4 | transform: rotate(180deg);
5 | margin: @7 @10 @7 @14;
6 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/circle.scss:
--------------------------------------------------------------------------------
1 | //*-- Circle --*\\
2 | .icono-circle{
3 | width: $U22;
4 | height: $U22;
5 | border: $U2 solid;
6 | border-radius: 50%;
7 | margin: $U6;
8 | }
9 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/nexus.less:
--------------------------------------------------------------------------------
1 | //*-- Nexus --*\\
2 | .icono-nexus{
3 | width: @21;
4 | height: @32;
5 | &:extend(.icono-stroke);
6 | border-width: @3 @1;
7 | border-radius: @16 ~'/' @3;
8 | margin: @1 @7 @1 @6;
9 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/tiles.less:
--------------------------------------------------------------------------------
1 | //*-- Tiles --*\\
2 | .icono-tiles{
3 | .square(@4);
4 | box-shadow: 0 -1*@8 0, -1*@8 -1*@8 0, @8 -1*@8 0,
5 | 0 0 0 @32 inset, -1*@8 0 0, @8 0 0,
6 | 0 @8 0, -1*@8 @8 0, @8 @8 0;
7 | margin: @15;
8 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/nexus.scss:
--------------------------------------------------------------------------------
1 | //*-- Nexus --*\\
2 | .icono-nexus{
3 | width: $U21;
4 | height: $U32;
5 | @extend .icono-stroke;
6 | border-width: $U3 $U1;
7 | border-radius: $U16 #{'/'} $U3;
8 | margin: $U1 $U7 $U1 $U6;
9 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/outdent.scss:
--------------------------------------------------------------------------------
1 | //*-- Outdent --*\\
2 | .icono-outdent{
3 | @extend .icono-indent;
4 | &:before{
5 | @extend .icono-indent:before;
6 | border-left-width: 0;
7 | border-right-width: $U5;
8 | }
9 | }
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserlist" field in package.json
6 | "autoprefixer": {}
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/outdent.less:
--------------------------------------------------------------------------------
1 | //*-- Outdent --*\\
2 | .icono-outdent{
3 | &:extend(.icono-indent);
4 | &:before{
5 | &:extend(.icono-indent:before);
6 | border-left-width: 0;
7 | border-right-width: @5;
8 | }
9 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/tiles.scss:
--------------------------------------------------------------------------------
1 | //*-- Tiles --*\\
2 | .icono-tiles{
3 | @include square($U4);
4 | box-shadow: 0 -1*$U8 0, -1*$U8 -1*$U8 0, $U8 -1*$U8 0,
5 | 0 0 0 $U32 inset, -1*$U8 0 0, $U8 0 0,
6 | 0 $U8 0, -1*$U8 $U8 0, $U8 $U8 0;
7 | margin: $U15;
8 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/play.less:
--------------------------------------------------------------------------------
1 | .icono-play {
2 | width: 0;
3 | height: 0;
4 | border-width: @10 0 @10 @16;
5 | border-style: solid;
6 | border-top-color: transparent;
7 | border-bottom-color: transparent;
8 | margin: @7 @9;
9 | }
10 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/bars.scss:
--------------------------------------------------------------------------------
1 | //*-- bars --*\\
2 | .icono-bars{
3 | width: $U20;
4 | height: $U2;
5 | box-shadow: inset 0 0 0 $U32, 0 -1*$U6, 0 $U6;
6 | margin: $U16 $U7;
7 | }
8 | .icono-hamburger{
9 | @extend .icono-bars;//will be deprecate
10 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/play.scss:
--------------------------------------------------------------------------------
1 | .icono-play {
2 | width: 0;
3 | height: 0;
4 | border-width: $U10 0 $U10 $U16;
5 | border-style: solid;
6 | border-top-color: transparent;
7 | border-bottom-color: transparent;
8 | margin: $U7 $U9;
9 | }
10 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/bars.less:
--------------------------------------------------------------------------------
1 | //*-- bars --*\\
2 | .icono-bars{
3 | width: @20;
4 | height: @2;
5 | box-shadow: inset 0 0 0 @32, 0 -1*@6, 0 @6;
6 | margin: @16 @7;
7 | }
8 | .icono-hamburger{
9 | &:extend(.icono-bars);//will be deprecate
10 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/next.less:
--------------------------------------------------------------------------------
1 | //*-- Next --*\\
2 | .icono-next{
3 | width: 0;
4 | height: 0;
5 | border: @10 solid transparent;
6 | border-left: @10 solid;
7 | border-right: none;
8 | margin: @7 @14 @7 @10;
9 | box-shadow: @4 0;
10 | }
--------------------------------------------------------------------------------
/src/scss/components/grid.scss:
--------------------------------------------------------------------------------
1 | .vmc-grid {
2 | ul.justify {
3 | display: flex;
4 | justify-content: space-between;
5 | }
6 |
7 | li {
8 | display: inline-block;
9 | box-sizing: border-box;
10 | vertical-align: middle;
11 | }
12 | }
--------------------------------------------------------------------------------
/src/styles/components/grid.less:
--------------------------------------------------------------------------------
1 | .vmc-grid {
2 | ul.justify {
3 | display: flex;
4 | justify-content: space-between;
5 | }
6 |
7 | li {
8 | display: inline-block;
9 | box-sizing: border-box;
10 | vertical-align: middle;
11 | }
12 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/spinner.less:
--------------------------------------------------------------------------------
1 | //*-- Spinner --*\\
2 | .icono-spinner{
3 | width: @20;
4 | height: @20;
5 | border-radius: 50%;
6 | box-shadow: -@16 0 0 -@9,-@11 -@11 0 -@9,0 -@16 0 -@9,@11 -@11 0 -@8,@16 0 0 -@7,@11 @11 0 -@7,0 @16 0 -@7,-@11 @11 0 -@7;
7 | margin: @7;
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/justify/justify.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{text | spaceText}}
4 |
5 |
6 |
7 |
14 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/filter.scss:
--------------------------------------------------------------------------------
1 | //*-- Filter --*\\
2 | .icono-filter{
3 | width: 0;
4 | height: 0;
5 | border: $U10 solid;
6 | border-bottom: none;
7 | border-left-color: transparent;
8 | border-right-color: transparent;
9 | padding: $U3;
10 | box-shadow: inset 0 $U7;
11 | margin: $U9 $U4;
12 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/filter.less:
--------------------------------------------------------------------------------
1 | //*-- Filter --*\\
2 | .icono-filter{
3 | width: 0;
4 | height: 0;
5 | border: @10 solid;
6 | border-bottom: none;
7 | border-left-color: transparent;
8 | border-right-color: transparent;
9 | padding: @3;
10 | box-shadow: inset 0 @7;
11 | margin: @9 @4;
12 | }
--------------------------------------------------------------------------------
/src/scss/components/overlay.scss:
--------------------------------------------------------------------------------
1 | .vmc-mask {
2 | position: absolute;
3 | top: 0;
4 | left: 0;
5 | right: 0;
6 | bottom: 0;
7 | z-index: 200;
8 |
9 | &.transparent {
10 | background-color: transparent;
11 | }
12 |
13 | &.black {
14 | background-color: $MaskBackColor;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/frown.scss:
--------------------------------------------------------------------------------
1 | //*-- Frown --*\\
2 | .icono-frown{
3 | @extend .icono-smile;
4 | &:before{
5 | @extend .icono-smile:before;
6 | }
7 | &:after{
8 | @extend .icono-smile:after;
9 | transform: translateX(-50%) rotate(180deg);
10 | transform-origin: center 85%;
11 | }
12 | }
--------------------------------------------------------------------------------
/src/scss/util/justify.scss:
--------------------------------------------------------------------------------
1 | .vmc-justify {
2 | text-align: justify;
3 | font-size: 0;
4 |
5 | &:after {
6 | content: '';
7 | display: inline-block;
8 | width: 100%;
9 | height: 0;
10 | overflow: hidden;
11 | }
12 |
13 | >* {
14 | font-size: initial;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/components/overlay.less:
--------------------------------------------------------------------------------
1 | .vmc-mask {
2 | position: absolute;
3 | top: 0;
4 | left: 0;
5 | right: 0;
6 | bottom: 0;
7 | z-index: 200;
8 |
9 | &.transparent {
10 | background-color: transparent;
11 | }
12 |
13 | &.black {
14 | background-color: @MaskBackColor;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/util/justify.less:
--------------------------------------------------------------------------------
1 | .vmc-justify {
2 | text-align: justify;
3 | font-size: 0;
4 |
5 | &:after {
6 | content: '';
7 | display: inline-block;
8 | width: 100%;
9 | height: 0;
10 | overflow: hidden;
11 | }
12 |
13 | >* {
14 | font-size: initial;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/sun.less:
--------------------------------------------------------------------------------
1 | //*-- Sun --*\\
2 | .icono-sun{
3 | width: @22;
4 | height: @22;
5 | border: @2 solid;
6 | border-radius: 50%;
7 | box-shadow: -@15 0 0 -@9, @15 0 0 -@9, 0 -@15 0 -@9, 0 @15 0 -@9,
8 | @11 @11 0 -@9, -@11 -@11 0 -@9, @11 -@11 0 -@9, -@11 @11 0 -@9;
9 | margin: @6;
10 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/frown.less:
--------------------------------------------------------------------------------
1 | //*-- Frown --*\\
2 | .icono-frown{
3 | &:extend(.icono-smile);
4 | &:before{
5 | &:extend(.icono-smile:before);
6 | }
7 | &:after{
8 | &:extend(.icono-smile:after);
9 | transform: translateX(-50%) rotate(180deg);
10 | transform-origin: center 85%;
11 | }
12 | }
--------------------------------------------------------------------------------
/src/scss/components/actionsheet.scss:
--------------------------------------------------------------------------------
1 | .vmc-action-sheet {
2 | .vmc-popup {
3 | background: $ActionSheetBackColor;
4 | }
5 |
6 | .vmc-button {
7 | height: $ActionSheetButtonHeight;
8 | background: $ActionSheetButtonBackColor;
9 |
10 | &.cancel {
11 | margin-top: 5px;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/spinner.scss:
--------------------------------------------------------------------------------
1 | //*-- Spinner --*\\
2 | .icono-spinner{
3 | width: $U22;
4 | height: $U22;
5 | border-radius: 50%;
6 | box-shadow: -1*$U16 0 0 -1*$U9,-1*$U11 -1*$U11 0 -1*$U9,0 -1*$U16 0 -1*$U9,1*$U11 -1*$U11 0 -1*$U8,1*$U16 0 0 -1*$U7,1*$U11 1*$U11 0 -1*$U7,0 1*$U16 0 -1*$U7,-1*$U11 1*$U11 0 -1*$U7;
7 | margin: $U7;
8 | }
9 |
--------------------------------------------------------------------------------
/src/styles/components/actionsheet.less:
--------------------------------------------------------------------------------
1 | .vmc-action-sheet {
2 | .vmc-popup {
3 | background: @ActionSheetBackColor;
4 | }
5 |
6 | .vmc-button {
7 | height: @ActionSheetButtonHeight;
8 | background: @ActionSheetButtonBackColor;
9 |
10 | &.cancel {
11 | margin-top: 5px;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["latest", {
4 | "es2015": { "modules": false }
5 | }],
6 | "stage-2"
7 | ],
8 | "plugins": ["transform-runtime", "transform-vue-jsx"],
9 | "comments": false,
10 | "env": {
11 | "test": {
12 | "presets": ["latest", "stage-2"],
13 | "plugins": [ "istanbul" ]
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/meh.scss:
--------------------------------------------------------------------------------
1 | //*-- Meh --*\\
2 | .icono-meh{
3 | @extend .icono-smile;
4 | &:before{
5 | @extend .icono-smile:before;
6 | }
7 | &:after{
8 | @extend .icono-smile:after;
9 | top: 0;
10 | width: $U12;
11 | border-left-width: 0;
12 | border-right-width: 0;
13 | border-radius: 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/meh.less:
--------------------------------------------------------------------------------
1 | //*-- Meh --*\\
2 | .icono-meh{
3 | &:extend(.icono-smile);
4 | &:before{
5 | &:extend(.icono-smile:before);
6 | }
7 | &:after{
8 | &:extend(.icono-smile:after);
9 | top: 0;
10 | width: @12;
11 | border-left-width: 0;
12 | border-right-width: 0;
13 | border-radius: 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/sun.scss:
--------------------------------------------------------------------------------
1 | //*-- Sun --*\\
2 | .icono-sun{
3 | width: $U22;
4 | height: $U22;
5 | border: $U2 solid;
6 | border-radius: 50%;
7 | box-shadow: -1*$U15 0 0 -1*$U9, $U15 0 0 -1*$U9, 0 -1*$U15 0 -1*$U9, 0 $U15 0 -1*$U9,
8 | $U11 $U11 0 -1*$U9, -1*$U11 -1*$U11 0 -1*$U9, $U11 -1*$U11 0 -1*$U9, -1*$U11 $U11 0 -1*$U9;
9 | margin: $U6;
10 | }
--------------------------------------------------------------------------------
/src/scss/util/reddot.scss:
--------------------------------------------------------------------------------
1 | .vmc-red-dot {
2 | position: relative;
3 |
4 | &:before {
5 | content: '';
6 | display: block;
7 | height: $RedDotSize;
8 | width: $RedDotSize;
9 | border-radius: 50%;
10 | background-color: $RedDotColor;
11 | position: absolute;
12 | top: 0;
13 | right: -$RedDotSize;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/list.less:
--------------------------------------------------------------------------------
1 | //*-- List --*\\
2 | .icono-list{
3 | .square(@4);
4 | box-shadow: inset 0 0 0 @32, 0 -1*@8 0 0, 0 1*@8 0 0;
5 | margin: @15 @26 @15 @4;
6 | &:before{
7 | &:extend(.stickCenterV);
8 | width: @18;
9 | height: @4;
10 | left: @8;
11 | box-shadow: inset 0 0 0 @32, 0 -1*@8 0 0, 0 1*@8 0 0;
12 | }
13 | }
--------------------------------------------------------------------------------
/src/styles/util/reddot.less:
--------------------------------------------------------------------------------
1 | .vmc-red-dot {
2 | position: relative;
3 |
4 | &:before {
5 | content: '';
6 | display: block;
7 | height: @RedDotSize;
8 | width: @RedDotSize;
9 | border-radius: 50%;
10 | background-color: @RedDotColor;
11 | position: absolute;
12 | top: 0;
13 | right: -@RedDotSize;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/components/box.scss:
--------------------------------------------------------------------------------
1 | .vmc-box {
2 | height: 0;
3 | position: relative;
4 |
5 | .vmc-box-content {
6 | position: absolute;
7 | width: 100%;
8 | height: 100%;
9 | left: 0;
10 | top: 0;
11 | background-size: 100% 100%;
12 |
13 | img {
14 | width: 100%;
15 | height: 100%;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/styles/components/box.less:
--------------------------------------------------------------------------------
1 | .vmc-box {
2 | height: 0;
3 | position: relative;
4 |
5 | .vmc-box-content {
6 | position: absolute;
7 | width: 100%;
8 | height: 100%;
9 | left: 0;
10 | top: 0;
11 | background-size: 100% 100%;
12 |
13 | img {
14 | width: 100%;
15 | height: 100%;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/list.scss:
--------------------------------------------------------------------------------
1 | //*-- List --*\\
2 | .icono-list{
3 | @include square($U4);
4 | box-shadow: inset 0 0 0 $U32, 0 -1*$U8 0 0, 0 1*$U8 0 0;
5 | margin: $U15 $U26 $U15 $U4;
6 | &:before{
7 | @extend .stickCenterV;
8 | width: $U18;
9 | height: $U4;
10 | left: $U8;
11 | box-shadow: inset 0 0 0 $U32, 0 -1*$U8 0 0, 0 1*$U8 0 0;
12 | }
13 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/forbidden.less:
--------------------------------------------------------------------------------
1 | //*-- Forbidden --*\\
2 | .icono-forbidden{
3 | .square(@28);
4 | &:extend(.icono-stroke);
5 | border-width: @3;
6 | border-radius: 50%;
7 | margin: @3;
8 | transform: rotate(45deg);
9 | &:before{
10 | &:extend(.stickCenter);
11 | width: @24;
12 | height: @4;
13 | box-shadow: inset 0 0 0 @32;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/moon.less:
--------------------------------------------------------------------------------
1 | //*-- Moon --*\\
2 | .icono-moon{
3 | width: @22;
4 | height: @22;
5 | border-radius: 50%;
6 | overflow: hidden;
7 | margin: @6;
8 | &:before{
9 | position: absolute;
10 | width: @20;
11 | height: @20;
12 | top: -@2;
13 | left: @6;
14 | border-radius: 50%;
15 | box-shadow: 0 0 0 @32;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/forbidden.scss:
--------------------------------------------------------------------------------
1 | //*-- Forbidden --*\\
2 | .icono-forbidden{
3 | @include square($U28);
4 | @extend .icono-stroke;
5 | border-width: $U3;
6 | border-radius: 50%;
7 | margin: $U3;
8 | transform: rotate(45deg);
9 | &:before{
10 | @extend .stickCenter;
11 | width: $U24;
12 | height: $U4;
13 | box-shadow: inset 0 0 0 $U32;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/moon.scss:
--------------------------------------------------------------------------------
1 | //*-- Moon --*\\
2 | .icono-moon{
3 | width: $U22;
4 | height: $U22;
5 | border-radius: 50%;
6 | overflow: hidden;
7 | margin: $U6;
8 | &:before{
9 | position: absolute;
10 | width: $U20;
11 | height: $U20;
12 | top: -$U2;
13 | left: $U6;
14 | border-radius: 50%;
15 | box-shadow: 0 0 0 $U32;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/mail.less:
--------------------------------------------------------------------------------
1 | //*-- Mail --*\\
2 | .icono-mail{
3 | .goldenRectL(@28);
4 | &:extend(.icono-stroke);
5 | overflow: hidden;
6 | margin: @8 @3;
7 | &:before{
8 | position: absolute;
9 | .square(@32/1.3);
10 | &:extend(.icono-stroke);
11 | transform: rotate(50deg) skew(-10deg, -20deg);
12 | top: -1*@20;
13 | left: -1*@3;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/util/badge.scss:
--------------------------------------------------------------------------------
1 | .vmc-badge {
2 | display: inline-block;
3 | text-align: center;
4 | background: $BadgeBackColor;
5 | color: $BadgeTextColor;
6 | font-size: $BadgeTextSize;
7 | height: $BadgeHeight;
8 | line-height: $BadgeHeight;
9 | min-width: $BadgeHeight;
10 | border-radius: $BadgeHeight / 2;
11 | padding: 0 ($BadgeHeight - $BadgeTextSize);
12 | box-sizing: border-box;
13 | }
--------------------------------------------------------------------------------
/src/styles/util/badge.less:
--------------------------------------------------------------------------------
1 | .vmc-badge {
2 | display: inline-block;
3 | text-align: center;
4 | background: @BadgeBackColor;
5 | color: @BadgeTextColor;
6 | font-size: @BadgeTextSize;
7 | height: @BadgeHeight;
8 | line-height: @BadgeHeight;
9 | min-width: @BadgeHeight;
10 | border-radius: @BadgeHeight / 2;
11 | padding: 0 (@BadgeHeight - @BadgeTextSize);
12 | box-sizing: border-box;
13 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/mail.scss:
--------------------------------------------------------------------------------
1 | //*-- Mail --*\\
2 | .icono-mail{
3 | @include goldenRectL($U28);
4 | @extend .icono-stroke;
5 | overflow: hidden;
6 | margin: $U8 $U3;
7 | &:before{
8 | position: absolute;
9 | @include square($U32/1.3);
10 | @extend .icono-stroke;
11 | transform: rotate(50deg) skew(-10deg, -20deg);
12 | top: -1*$U20;
13 | left: -1*$U3;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/next.scss:
--------------------------------------------------------------------------------
1 | //*-- Next --*\\
2 | .icono-next{
3 | width: 0;
4 | height: 0;
5 | border: $U10 solid transparent;
6 | border-left: $U10 solid;
7 | margin: $U7;
8 | &:before{
9 | position: absolute;
10 | left: 0;
11 | top: -$U10;
12 | width: 0;
13 | height: 0;
14 | border-width: $U10 $U3 $U10 $U3;
15 | border-style: solid;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/power.scss:
--------------------------------------------------------------------------------
1 | //*-- Power --*\\
2 | .icono-power{
3 | width: $U22;
4 | height: $U22;
5 | @extend .icono-stroke;
6 | border-radius: 50%;
7 | border-top-color: transparent;
8 | margin: $U6;
9 | &:before{
10 | position: absolute;
11 | top: -15%;
12 | left: $U8;
13 | width: $U2;
14 | height:60%;
15 | box-shadow: inset 0 0 0 $U32;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/util/nowrap.scss:
--------------------------------------------------------------------------------
1 | .vmc-nowrap {
2 | max-width: 100%;
3 | overflow: hidden;
4 | white-space: nowrap;
5 | text-overflow: ellipsis;
6 | }
7 |
8 | // mixin
9 | @for $i from 1 through 5 {
10 | .vmc-nowrap-#{$i} {
11 | display: -webkit-box;
12 | overflow: hidden;
13 | text-overflow: ellipsis;
14 | -webkit-box-orient: vertical;
15 | -webkit-line-clamp: $i;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/power.less:
--------------------------------------------------------------------------------
1 | //*-- Power --*\\
2 | .icono-power{
3 | width: @22;
4 | height: @22;
5 | &:extend(.icono-stroke);
6 | border-radius: 50%;
7 | border-top-color: transparent;
8 | margin: @6;
9 | &:before{
10 | position: absolute;
11 | top: -15%;
12 | left: @8;
13 | width: @2;
14 | height:60%;
15 | box-shadow: inset 0 0 0 @32;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/search.less:
--------------------------------------------------------------------------------
1 | //*-- Search --*\\
2 | .icono-search{
3 | .square(@22);
4 | border-radius: 50%;
5 | &:extend(.icono-stroke);
6 | transform: rotate(45deg);
7 | margin: @4 @4 @8 @8;
8 | &:before{
9 | width: @4;
10 | height: @11;
11 | &:extend(.stickCenterH);
12 | box-shadow: inset 0 0 0 @32;
13 | top: @19;
14 | border-radius: 0 0 @1 @1;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/forward.less:
--------------------------------------------------------------------------------
1 | //*-- Fast Forward --*\\
2 | .icono-forward{
3 | width: 0;
4 | height: 0;
5 | border: @10 solid transparent;
6 | border-left: @10 solid;
7 | margin: @7;
8 | &:before{
9 | position: absolute;
10 | left: 0;
11 | top: -@10;
12 | width: 0;
13 | height: 0;
14 | border: @10 solid transparent;
15 | border-left: @10 solid;
16 | }
17 | }
--------------------------------------------------------------------------------
/examples/pages/components/reddot.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
小红点
4 |
5 |
6 | 一些有趣的文字
7 |
8 |
9 |
10 |
11 |
20 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/forward.scss:
--------------------------------------------------------------------------------
1 | //*-- Fast Forward --*\\
2 | .icono-forward{
3 | width: 0;
4 | height: 0;
5 | border: $U10 solid transparent;
6 | border-left: $U10 solid;
7 | margin: $U7;
8 | &:before{
9 | position: absolute;
10 | left: 0;
11 | top: -$U10;
12 | width: 0;
13 | height: 0;
14 | border: $U10 solid transparent;
15 | border-left: $U10 solid;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/search.scss:
--------------------------------------------------------------------------------
1 | //*-- Search --*\\
2 | .icono-search{
3 | @include square($U22);
4 | border-radius: 50%;
5 | @extend .icono-stroke;
6 | transform: rotate(45deg);
7 | margin: $U4 $U4 $U8 $U8;
8 | &:before{
9 | width: $U4;
10 | height: $U11;
11 | @extend .stickCenterH;
12 | box-shadow: inset 0 0 0 $U32;
13 | top: $U19;
14 | border-radius: 0 0 $U1 $U1;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/user.less:
--------------------------------------------------------------------------------
1 | //*-- User --*\\
2 | .icono-user{
3 | width: @32;
4 | height: @14;
5 | &:extend(.icono-stroke);
6 | border-radius: 2*@32 2*@32 0 0 ~'/' 2*@32;
7 | margin: @18 @1 @2;
8 | &:before{
9 | .square(@12);
10 | &:extend(.stickCenterH);
11 | top: -1*@20;
12 | &:extend(.icono-stroke);
13 | border-radius: 50%;
14 | }
15 | &:after{
16 |
17 | }
18 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/pin.scss:
--------------------------------------------------------------------------------
1 | //*-- Pin --*\\
2 | .icono-pin{
3 | width: $U26;
4 | height: $U26;
5 | @extend .icono-stroke;
6 | border-radius: 50% 50% 50% 0;
7 | transform: rotate(-45deg);
8 | margin: $U1 $U4 $U7;
9 | &:before{
10 | position: absolute;
11 | width: $U6;
12 | height: $U6;
13 | @extend .icono-stroke;
14 | border-radius: 50%;
15 | @extend .stickCenter;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/pin.less:
--------------------------------------------------------------------------------
1 | //*-- Pin --*\\
2 | .icono-pin{
3 | width: @26;
4 | height: @26;
5 | &:extend(.icono-stroke);
6 | border-radius: 50% 50% 50% 0;
7 | transform: rotate(-45deg);
8 | margin: @1 @4 @7;
9 | &:before{
10 | position: absolute;
11 | width: @6;
12 | height: @6;
13 | &:extend(.icono-stroke);
14 | border-radius: 50%;
15 | &:extend(.stickCenter);
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/eye.scss:
--------------------------------------------------------------------------------
1 | //*-- Eye --*\\
2 | .icono-eye{
3 | border-radius: 80% 20%;
4 | transform: rotate(45deg);
5 | @extend .icono-stroke;
6 | border-width: $U2 $U1 $U1 $U2;
7 | height: $U28;
8 | width: $U28;
9 | margin: $U3 $U3;
10 | &:before{
11 | border-radius: 50%;
12 | box-shadow: 0 -1*$U3 0 $U3 inset;
13 | height: $U11;
14 | width: $U11;
15 | @extend .stickCenter;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/user.scss:
--------------------------------------------------------------------------------
1 | //*-- User --*\\
2 | .icono-user{
3 | width: $U32;
4 | height: $U14;
5 | @extend .icono-stroke;
6 | border-radius: 2*$U32 2*$U32 0 0 #{'/'} 2*$U32;
7 | margin: $U18 $U1 $U2;
8 | &:before{
9 | @include square($U12);
10 | @extend .stickCenterH;
11 | top: -1*$U20;
12 | @extend .icono-stroke;
13 | border-radius: 50%;
14 | }
15 | &:after{
16 |
17 | }
18 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/eye.less:
--------------------------------------------------------------------------------
1 | //*-- Eye --*\\
2 | .icono-eye{
3 | border-radius: 80% 20%;
4 | transform: rotate(45deg);
5 | &:extend(.icono-stroke);
6 | border-width: @2 @1 @1 @2;
7 | height: @28;
8 | width: @28;
9 | margin: @3 @3;
10 | &:before{
11 | border-radius: 50%;
12 | box-shadow: 0px -1*@3 0 @3 inset;
13 | height: @11;
14 | width: @11;
15 | &:extend(.stickCenter);
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/gear.less:
--------------------------------------------------------------------------------
1 | //*-- Gear --*\\
2 | .icono-gear{
3 | width: @32;
4 | height: @32;
5 | border: @3 dotted;
6 | border-radius: 50%;
7 | margin: @1;
8 | &:before{
9 | &:extend(.stickCenter);
10 | width: @22;
11 | height: @22;
12 | box-shadow: 0 0 0 @3, 0 0 0 @2 inset;
13 | border-radius: 50%;
14 | border: @6 solid transparent;
15 | box-sizing: border-box;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/gear.scss:
--------------------------------------------------------------------------------
1 | //*-- Gear --*\\
2 | .icono-gear{
3 | width: $U32;
4 | height: $U32;
5 | border: $U3 dotted;
6 | border-radius: 50%;
7 | margin: $U1;
8 | &:before{
9 | @extend .stickCenter;
10 | width: $U22;
11 | height: $U22;
12 | box-shadow: 0 0 0 $U3, 0 0 0 $U2 inset;
13 | border-radius: 50%;
14 | border: $U6 solid transparent;
15 | box-sizing: border-box;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/trash.less:
--------------------------------------------------------------------------------
1 | //*-- Trash --*\\
2 | .icono-trash{
3 | width: @22;
4 | height: @22;
5 | border-radius: 0 0 @3 @3;
6 | &:extend(.icono-stroke);
7 | border-top: none;
8 | margin: @9 @6 @3;
9 | &:before{
10 | width: @8;
11 | height: @2;
12 | &:extend(.stickCenterH);
13 | top: -1*@6;
14 | box-shadow: inset 0 0 0 @32, -1*@10 1*@2 0 0, -1*@6 1*@2 0 0, 0 @2 0 0, @6 @2 0 0, @10 @2 0 0;
15 | }
16 | }
--------------------------------------------------------------------------------
/examples/pages/components/justify.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
文字对齐
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
21 |
--------------------------------------------------------------------------------
/src/components/justify/README.md:
--------------------------------------------------------------------------------
1 | # Justify
2 |
3 | ## Overview
4 |
5 | 文本两端对齐,用于将一串文字两端对齐显示。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```html
12 |
13 | ```
14 |
15 | ## Slots
16 |
17 | | Name | Description | Default |
18 | | ----- | ----- | ----- |
19 | | default | 显示的文本内容 | {{text}} |
20 |
21 | ## Props
22 |
23 | | Property | Type | Description | Default |
24 | | ----- | ----- | ----- | ----- |
25 | | text | String | 显示的文本内容 | "" |
--------------------------------------------------------------------------------
/src/scss/icono/generals.scss:
--------------------------------------------------------------------------------
1 | .icono-stroke{
2 | border: $U2 solid;
3 | }
4 |
5 | .stickCenterV{
6 | @include stickCenterV;
7 | }
8 |
9 | .stickCenterH{
10 | @include stickCenterH;
11 | }
12 |
13 | .stickCenter{
14 | @include stickCenter;
15 | }
16 |
17 | .spin[class*="spin"]{
18 | animation: loading-spinner 2s infinite linear;
19 | }
20 | @keyframes loading-spinner {
21 | 0% { transform: rotate(0deg); }
22 | 100% { transform: rotate(360deg); }
23 | }
24 |
--------------------------------------------------------------------------------
/examples/pages/components/badge.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
徽标
4 |
5 |
6 | 5
7 | 2017
8 |
9 |
10 |
11 |
12 |
21 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/trash.scss:
--------------------------------------------------------------------------------
1 | //*-- Trash --*\\
2 | .icono-trash{
3 | width: $U22;
4 | height: $U22;
5 | border-radius: 0 0 $U3 $U3;
6 | @extend .icono-stroke;
7 | border-top: none;
8 | margin: $U9 $U6 $U3;
9 | &:before{
10 | width: $U8;
11 | height: $U2;
12 | @extend .stickCenterH;
13 | top: -1*$U6;
14 | box-shadow: inset 0 0 0 $U32, -1*$U10 1*$U2 0 0, -1*$U6 1*$U2 0 0, 0 $U2 0 0, $U6 $U2 0 0, $U10 $U2 0 0;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/chain.less:
--------------------------------------------------------------------------------
1 | //*-- Chain --*\\
2 | .icono-chain{
3 | width: @16;
4 | height: @2;
5 | box-shadow: inset 0 0 0 @32;
6 | transform: rotate(-45deg);
7 | margin: @16 @9;
8 | &:before, &:after{
9 | .goldenRectL(@12);
10 | &:extend(.stickCenterV);
11 | &:extend(.icono-stroke);
12 | border-radius: @4;
13 | }
14 | &:before{
15 | right: -1*@10;
16 | }
17 | &:after{
18 | left: -1*@10;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/components/overlay/overlay.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/chain.scss:
--------------------------------------------------------------------------------
1 | //*-- Chain --*\\
2 | .icono-chain{
3 | width: $U16;
4 | height: $U2;
5 | box-shadow: inset 0 0 0 $U32;
6 | transform: rotate(-45deg);
7 | margin: $U16 $U9;
8 | &:before, &:after{
9 | @include goldenRectL($U12);
10 | @extend .stickCenterV;
11 | @extend .icono-stroke;
12 | border-radius: $U4;
13 | }
14 | &:before{
15 | right: -1*$U10;
16 | }
17 | &:after{
18 | left: -1*$U10;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/headphone.less:
--------------------------------------------------------------------------------
1 | //*-- Headphone --*\\
2 | .icono-headphone{
3 | width: @30;
4 | height: @27;
5 | &:extend(.icono-stroke);
6 | border-bottom-color: transparent;
7 | border-radius: @32~'/'@32 @32 @16 @16;
8 | margin: @2 @2 @5;
9 | &:before{
10 | position: absolute;
11 | width: @4;
12 | height: @12;
13 | left: @1;
14 | bottom: -1*@4;
15 | border-radius: @5;
16 | box-shadow: inset 0 0 0 @32, @20 0 0 0;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/styles/util/nowrap.less:
--------------------------------------------------------------------------------
1 | .vmc-nowrap {
2 | max-width: 100%;
3 | overflow: hidden;
4 | white-space: nowrap;
5 | text-overflow: ellipsis;
6 | }
7 |
8 | .vmc-nowrap(5);
9 |
10 | // mixin
11 | .vmc-nowrap(@n, @i: 1) when (@i =< @n) {
12 | .vmc-nowrap-@{i} {
13 | display: -webkit-box;
14 | overflow: hidden;
15 | text-overflow: ellipsis;
16 | -webkit-box-orient: vertical;
17 | -webkit-line-clamp: @i;
18 | }
19 |
20 | .vmc-nowrap(@n, (@i + 1));
21 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/asterisk.scss:
--------------------------------------------------------------------------------
1 | //*-- Asterisk --*\\
2 | .icono-asterisk{
3 | width: $U4;
4 | height: $U20;
5 | box-shadow: inset 0 0 0 $U32;
6 | border-radius: $U1;
7 | margin: $U7 $U15;
8 | &:before, &:after{
9 | position: absolute;
10 | @extend .icono-asterisk;
11 | margin: 0;
12 | left: 0;
13 | top: 0;
14 | }
15 | &:before{
16 | transform: rotate(-58deg);
17 | }
18 | &:after{
19 | transform: rotate(58deg);
20 | }
21 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/headphone.scss:
--------------------------------------------------------------------------------
1 | //*-- Headphone --*\\
2 | .icono-headphone{
3 | width: $U30;
4 | height: $U27;
5 | @extend .icono-stroke;
6 | border-bottom-color: transparent;
7 | border-radius: $U32#{'/'}$U32 $U32 $U16 $U16;
8 | margin: $U2 $U2 $U5;
9 | &:before{
10 | position: absolute;
11 | width: $U4;
12 | height: $U12;
13 | left: $U1;
14 | bottom: -1*$U4;
15 | border-radius: $U5;
16 | box-shadow: inset 0 0 0 $U32, $U20 0 0 0;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/infinity.less:
--------------------------------------------------------------------------------
1 | //*-- Infinity --*\\
2 | .icono-infinity{
3 | width: @32;
4 | height: @16;
5 | margin: @9 @1;
6 | &:before, &:after{
7 | width: @10;
8 | height: @10;
9 | position: absolute;
10 | &:extend(.icono-stroke);
11 | transform: rotate(45deg);
12 | }
13 | &:before{
14 | left: 0;
15 | border-radius: @32 0 @32 @32;
16 | }
17 | &:after{
18 | right: 1px;
19 | border-radius: @32 @32 @32 0;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/scss/components/number.scss:
--------------------------------------------------------------------------------
1 | .vmc-number {
2 | display: flex;
3 | height: $NumberHeight;
4 | line-height: $NumberHeight;
5 |
6 | span {
7 | display: block;
8 | text-align: center;
9 | min-width: $NumberWidth;
10 | font-size: 12px;
11 | }
12 |
13 | input {
14 | text-align: center;
15 | }
16 |
17 | label {
18 | width: $NumberWidth;
19 | }
20 |
21 | .vmc-input:before {
22 | border-left: none;
23 | border-right: none;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/infinity.scss:
--------------------------------------------------------------------------------
1 | //*-- Infinity --*\\
2 | .icono-infinity{
3 | width: $U32;
4 | height: $U16;
5 | margin: $U9 $U1;
6 | &:before, &:after{
7 | width: $U10;
8 | height: $U10;
9 | position: absolute;
10 | @extend .icono-stroke;
11 | transform: rotate(45deg);
12 | }
13 | &:before{
14 | left: 0;
15 | border-radius: $U32 0 $U32 $U32;
16 | }
17 | &:after{
18 | right: 1px;
19 | border-radius: $U32 $U32 $U32 0;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/styles/components/number.less:
--------------------------------------------------------------------------------
1 | .vmc-number {
2 | display: flex;
3 | height: @NumberHeight;
4 | line-height: @NumberHeight;
5 |
6 | span {
7 | display: block;
8 | text-align: center;
9 | min-width: @NumberWidth;
10 | font-size: 12px;
11 | }
12 |
13 | input {
14 | text-align: center;
15 | }
16 |
17 | label {
18 | width: @NumberWidth;
19 | }
20 |
21 | .vmc-input:before {
22 | border-left: none;
23 | border-right: none;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/cart.less:
--------------------------------------------------------------------------------
1 | //*-- Cart --*\\
2 | .icono-cart{
3 | width: @22;
4 | height: 0;
5 | border-width: @14 @6 0 @2;
6 | border-style: solid;
7 | border-right-color: transparent;
8 | border-left-color: transparent;
9 | margin: @9 @3 @11 @9;
10 | &:before{
11 | position: absolute;
12 | width: @4;
13 | height: @4;
14 | border-radius: 50%;
15 | box-shadow: inset 0 0 0 @32,@13 0,-@4 -@20 0 @1;
16 | top: @2;
17 | left: -@3;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/spinner/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | export default {
2 | props: {
3 | size: {
4 | type: [Number, String],
5 | coerce: Number
6 | },
7 | color: {
8 | type: String
9 | }
10 | },
11 | computed: {
12 | spinnerStyle() {
13 | if (this.size) {
14 | return {
15 | height: this.size + 'px',
16 | width: this.size + 'px'
17 | };
18 | }
19 | }
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/display.less:
--------------------------------------------------------------------------------
1 | //*-- Display --*\\
2 | .icono-display{
3 | width: @26;
4 | height: @22;
5 | &:extend(.icono-stroke);
6 | margin: @4 @4 @8;
7 | &:before{
8 | width: @4;
9 | height: @3;
10 | &:extend(.stickCenterH);
11 | bottom: -1*@5;
12 | box-shadow: inset 0 0 0 @32;
13 | }
14 | &:after{
15 | width: @14;
16 | height: @2;
17 | &:extend(.stickCenterH);
18 | bottom: -1*@6;
19 | box-shadow: inset 0 0 0 @32;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/indent.less:
--------------------------------------------------------------------------------
1 | //*-- Indent --*\\
2 | .icono-indent{
3 | width: @20;
4 | height: @16;
5 | border-width: @4 0 @4 @8;
6 | border-style: solid;
7 | border-color: transparent;
8 | box-shadow: 0 -1*@2, 0 @2, inset 0 @2, inset 0 -1*@2;
9 | margin: @9 @7;
10 | &:before{
11 | &:extend(.stickCenterV);
12 | left: -1*@8;
13 | border: @5 solid;
14 | border-top-color: transparent;
15 | border-bottom-color: transparent;
16 | border-right-width: 0;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/display.scss:
--------------------------------------------------------------------------------
1 | //*-- Display --*\\
2 | .icono-display{
3 | width: $U26;
4 | height: $U22;
5 | @extend .icono-stroke;
6 | margin: $U4 $U4 $U8;
7 | &:before{
8 | width: $U4;
9 | height: $U3;
10 | @extend .stickCenterH;
11 | bottom: -1*$U5;
12 | box-shadow: inset 0 0 0 $U32;
13 | }
14 | &:after{
15 | width: $U14;
16 | height: $U2;
17 | @extend .stickCenterH;
18 | bottom: -1*$U6;
19 | box-shadow: inset 0 0 0 $U32;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/asterisk.less:
--------------------------------------------------------------------------------
1 | //*-- Asterisk --*\\
2 | .icono-asterisk{
3 | &, &:before, &:after{
4 | width: @4;
5 | height: @20;
6 | box-shadow: inset 0 0 0 @32;
7 | border-radius: @1;
8 | margin: @7 @15;
9 | }
10 | &:before, &:after{
11 | position: absolute;
12 | margin: 0;
13 | left: 0;
14 | top: 0;
15 | }
16 | &:before{
17 | transform: rotate(-58deg);
18 | }
19 | &:after{
20 | transform: rotate(58deg);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/file.less:
--------------------------------------------------------------------------------
1 | //*-- File --*\\
2 | .icono-file{
3 | width: @26;
4 | height: @32;
5 | &:extend(.icono-stroke);
6 | border-radius: 0 @12 0 0;
7 | margin: @1 @4;
8 | &:before{
9 | position:absolute;
10 | top: -1*@2;
11 | right:-1*@2;
12 | border-style: solid;
13 | width: 0;
14 | height: 0;
15 | border-width: @5;
16 | border-top-color: transparent;
17 | border-right-color: transparent;
18 | }
19 | &:after{
20 |
21 | }
22 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/sitemap.less:
--------------------------------------------------------------------------------
1 | //* Sitemap *\\
2 | .icono-sitemap {
3 | width: @24;
4 | height: @2;
5 | box-shadow: 0 -@5;
6 | margin: @21 @5 @11;
7 | &:before {
8 | &:extend(.stickCenterH);
9 | width: @6;
10 | height: @6;
11 | border-radius: @2;
12 | box-shadow: inset 0 0 0 @32, @11 0, -@11 0, 0 -@14 0 @1;
13 | }
14 | &:after {
15 | &:extend(.stickCenterH);
16 | width: @2;
17 | height: @10;
18 | box-shadow: 0 -@7, @11 -@5, -@11 -@5;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/file.scss:
--------------------------------------------------------------------------------
1 | //*-- File --*\\
2 | .icono-file{
3 | width: $U26;
4 | height: $U32;
5 | @extend .icono-stroke;
6 | border-radius: 0 $U12 0 0;
7 | margin: $U1 $U4;
8 | &:before{
9 | position:absolute;
10 | top: -1*$U2;
11 | right:-1*$U2;
12 | border-style: solid;
13 | width: 0;
14 | height: 0;
15 | border-width: $U5;
16 | border-top-color: transparent;
17 | border-right-color: transparent;
18 | }
19 | &:after{
20 |
21 | }
22 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/indent.scss:
--------------------------------------------------------------------------------
1 | //*-- Indent --*\\
2 | .icono-indent{
3 | width: $U20;
4 | height: $U16;
5 | border-width: $U4 0 $U4 $U8;
6 | border-style: solid;
7 | border-color: transparent;
8 | box-shadow: 0 -1*$U2, 0 $U2, inset 0 $U2, inset 0 -1*$U2;
9 | margin: $U9 $U7;
10 | &:before{
11 | @extend .stickCenterV;
12 | left: -1*$U8;
13 | border: $U5 solid;
14 | border-top-color: transparent;
15 | border-bottom-color: transparent;
16 | border-right-width: 0;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/cart.scss:
--------------------------------------------------------------------------------
1 | //*-- Cart --*\\
2 | .icono-cart{
3 | width: $U22;
4 | height: 0;
5 | border-width: $U14 $U6 0 $U2;
6 | border-style: solid;
7 | border-right-color: transparent;
8 | border-left-color: transparent;
9 | margin: $U9 $U3 $U11 $U9;
10 | &:before{
11 | position: absolute;
12 | width: $U4;
13 | height: $U4;
14 | border-radius: 50%;
15 | box-shadow: inset 0 0 0 $U32, $U13 0, -1*$U4 -1*$U20 0 $U1;
16 | top: $U2;
17 | left: -$U3;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/rss.less:
--------------------------------------------------------------------------------
1 | //*-- RSS --*\\
2 | .icono-rss{
3 | .square(@22);
4 | overflow: hidden;
5 | margin: @6;
6 | &:before, &:after{
7 | position: absolute;
8 | border-radius: 50%;
9 | }
10 | &:before{
11 | .square(@6);
12 | box-shadow: 0 0 @32 inset;
13 | left: 0;
14 | bottom: 0;
15 | }
16 | &:after{
17 | .square(@27);
18 | right: 15%;
19 | top: 15%;
20 | border: @4 solid transparent;
21 | box-shadow: inset 0 0 0 @2, 0 0 0 @2;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/sitemap.scss:
--------------------------------------------------------------------------------
1 | //* Sitemap *\\
2 | .icono-sitemap {
3 | width: $U24;
4 | height: $U2;
5 | box-shadow: 0 -1*$U5;
6 | margin: $U21 $U5 $U11;
7 | &:before {
8 | @extend .stickCenterH;
9 | width: $U6;
10 | height: $U6;
11 | border-radius: $U2;
12 | box-shadow: inset 0 0 0 $U32, $U11 0, -1*$U11 0, 0 -1*$U14 0 $U1;
13 | }
14 | &:after {
15 | @extend .stickCenterH;
16 | width: $U2;
17 | height: $U10;
18 | box-shadow: 0 -1*$U7, $U11 -1*$U5, -1*$U11 -1*$U5;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/creditCard.less:
--------------------------------------------------------------------------------
1 | //*-- Credit Card --*\\
2 | .icono-creditCard{
3 | width: @32;
4 | height: @24;
5 | &:extend(.icono-stroke);
6 | border-radius: @3;
7 | margin: @5 @1;
8 | &:before{
9 | position: absolute;
10 | top: @4;
11 | width: 100%;
12 | height: @6;
13 | box-shadow: inset 0 0 0 @32;
14 | }
15 | &:after{
16 | left: @3;
17 | bottom: @3;
18 | position: absolute;
19 | width: @4;
20 | height: @2;
21 | box-shadow: inset 0 0 0 @32, @6 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/signin.less:
--------------------------------------------------------------------------------
1 | //*-- Sign in --*\\
2 | .icono-signIn{
3 | width: @18;
4 | height: @32;
5 | &:extend(.icono-stroke);
6 | border-left: none;
7 | margin-left: @5;
8 | border-radius: 0 @3 @3 0;
9 | margin: @1 @8;
10 | &:before{
11 | position: absolute;
12 | width: @11;
13 | height: @11;
14 | left:-1*@10;
15 | top:@7;
16 | &:extend(.icono-stroke);
17 | border-bottom: none;
18 | border-left: none;
19 | transform: rotate(45deg);
20 | border-radius: 0 @4 0 0;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/scss/components/row.scss:
--------------------------------------------------------------------------------
1 | .vmc-row {
2 | padding: 0 $RowHorizontalPadding;
3 | background: $RowBackColor;
4 | min-height: $RowMinHeight;
5 | font-size: $RowTextSize;
6 | display: flex;
7 | justify-content: space-between;
8 | align-items: center;
9 |
10 | &.left {
11 | justify-content: flex-start;
12 |
13 | > div {
14 | flex: 1;
15 | }
16 | }
17 |
18 | &:first-child:before {
19 | border: none;
20 | }
21 |
22 | label {
23 | display: block;
24 | min-width: $RowTitleWidth;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/creditCard.scss:
--------------------------------------------------------------------------------
1 | //*-- Credit Card --*\\
2 | .icono-creditCard{
3 | width: $U32;
4 | height: $U24;
5 | @extend .icono-stroke;
6 | border-radius: $U3;
7 | margin: $U5 $U1;
8 | &:before{
9 | position: absolute;
10 | top: $U4;
11 | width: 100%;
12 | height: $U6;
13 | box-shadow: inset 0 0 0 $U32;
14 | }
15 | &:after{
16 | left: $U3;
17 | bottom: $U3;
18 | position: absolute;
19 | width: $U4;
20 | height: $U2;
21 | box-shadow: inset 0 0 0 $U32, $U6 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/rss.scss:
--------------------------------------------------------------------------------
1 | //*-- RSS --*\\
2 | .icono-rss{
3 | @include square($U22);
4 | overflow: hidden;
5 | margin: $U6;
6 | &:before, &:after{
7 | position: absolute;
8 | border-radius: 50%;
9 | }
10 | &:before{
11 | @include square($U6);
12 | box-shadow: 0 0 $U32 inset;
13 | left: 0;
14 | bottom: 0;
15 | }
16 | &:after{
17 | @include square($U27);
18 | right: 15%;
19 | top: 15%;
20 | border: $U4 solid transparent;
21 | box-shadow: inset 0 0 0 $U2, 0 0 0 $U2;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/components/row.less:
--------------------------------------------------------------------------------
1 | .vmc-row {
2 | padding: 0 @RowHorizontalPadding;
3 | background: @RowBackColor;
4 | min-height: @RowMinHeight;
5 | font-size: @RowTextSize;
6 | display: flex;
7 | justify-content: space-between;
8 | align-items: center;
9 |
10 | &.left {
11 | justify-content: flex-start;
12 |
13 | > div {
14 | flex: 1;
15 | }
16 | }
17 |
18 | &:first-child:before {
19 | border: none;
20 | }
21 |
22 | label {
23 | display: block;
24 | min-width: @RowTitleWidth;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/piano.less:
--------------------------------------------------------------------------------
1 | //*-- piano --*\\
2 | .icono-piano{
3 | width: @28;
4 | height: @22;
5 | &:extend(.icono-stroke);
6 | margin: @6 @3;
7 | &:before{
8 | position: absolute;
9 | left: @4;
10 | top: 0;
11 | width: @1;
12 | height: 100%;
13 | box-shadow: inset 0 0 0 @32, @5 0, @10 0, @15 0;
14 | }
15 | &:after{
16 | position: absolute;
17 | width: @3;
18 | height: @12;
19 | left: @3;
20 | top: 0;
21 | box-shadow: inset 0 0 0 @32, @5 0, @10 0, @15 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/share.less:
--------------------------------------------------------------------------------
1 | //*-- Share --*\\
2 | .icono-share{
3 | height: @9;
4 | width: @9;
5 | border-radius: 50%;
6 | box-shadow: inset 0 0 0 @32, @22 -1*@11 0 0, @22 1*@11 0 0;
7 | margin: @12 @24 @13 @1;
8 | &:before, &:after{
9 | position: absolute;
10 | width: @24;
11 | height: @2;
12 | box-shadow: inset 0 0 0 @32;
13 | left: 0;
14 | }
15 | &:before{
16 | top:-1*@2;
17 | transform: rotate(-25deg);
18 | }
19 | &:after{
20 | top:@9;
21 | transform: rotate(25deg);
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/signin.scss:
--------------------------------------------------------------------------------
1 | //*-- Sign in --*\\
2 | .icono-signIn{
3 | width: $U18;
4 | height: $U32;
5 | @extend .icono-stroke;
6 | border-left: none;
7 | margin-left: $U5;
8 | border-radius: 0 $U3 $U3 0;
9 | margin: $U1 $U8;
10 | &:before{
11 | position: absolute;
12 | width: $U11;
13 | height: $U11;
14 | left:-1*$U10;
15 | top:$U7;
16 | @extend .icono-stroke;
17 | border-bottom: none;
18 | border-left: none;
19 | transform: rotate(45deg);
20 | border-radius: 0 $U4 0 0;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/plus.less:
--------------------------------------------------------------------------------
1 | //*-- Plus --*\\
2 | [class*="icono-plus"], [class*="icono-cross"]{
3 | width: @30;
4 | height: @30;
5 | margin: @2;
6 | &:before, &:after{
7 | &:extend(.stickCenter);
8 | box-shadow: inset 0 0 0 @32;
9 | }
10 | &:before{
11 | width: @20;
12 | height: @2;
13 | }
14 | &:after{
15 | height: @20;
16 | width: @2;
17 | }
18 | &[class*="Circle"]{
19 | &:before{
20 | width: @18;
21 | }
22 | &:after{
23 | height: @18;
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/signout.less:
--------------------------------------------------------------------------------
1 | //*-- Sign out --*\\
2 | .icono-signOut{
3 | width: @18;
4 | height: @32;
5 | &:extend(.icono-stroke);
6 | border-right: none;
7 | margin-right: @5;
8 | border-radius: @3 0 0 @3;
9 | margin: @1 @8;
10 | &:before{
11 | position: absolute;
12 | width: @11;
13 | height: @11;
14 | right:-1*@2;
15 | top:@7;
16 | &:extend(.icono-stroke);
17 | border-bottom: none;
18 | border-left: none;
19 | transform: rotate(45deg);
20 | border-radius: 0 @4 0 0;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/scss/components/alert.scss:
--------------------------------------------------------------------------------
1 | .vmc-alert {
2 | &.no-content {
3 | .dialog-head {
4 | display: flex;
5 | align-items: center;
6 | min-height: $AlertTitleHeight;
7 | padding-bottom: $AlertTitlePadding;
8 |
9 | div {
10 | flex: 1;
11 | text-align: center;
12 | }
13 |
14 | p {
15 | display: inline-block;
16 | text-align: left;
17 | }
18 | }
19 |
20 | .dialog-body {
21 | display: none;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/components/popup-picker.scss:
--------------------------------------------------------------------------------
1 | .vmc-popup-picker{
2 | .header{
3 | background-color: $PopupPickerHeaderBackColor;
4 | height: $PopupPickerHeaderHeight;
5 | line-height: $PopupPickerHeaderHeight;
6 | overflow: hidden;
7 | text-align: center;
8 | font-size: $PopupPickerHeaderTextSize;
9 | display: flex;
10 |
11 | .left, .right{
12 | padding: 0 $PopupPickerHeaderButtonPadding;
13 | color: $PopupPickerHeaderButtonTextColor;
14 | }
15 | .title{
16 | flex: 1;
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/signout.scss:
--------------------------------------------------------------------------------
1 | //*-- Sign out --*\\
2 | .icono-signOut{
3 | width: $U18;
4 | height: $U32;
5 | @extend .icono-stroke;
6 | border-right: none;
7 | margin-right: $U5;
8 | border-radius: $U3 0 0 $U3;
9 | margin: $U1 $U8;
10 | &:before{
11 | position: absolute;
12 | width: $U11;
13 | height: $U11;
14 | right:-1*$U2;
15 | top:$U7;
16 | @extend .icono-stroke;
17 | border-bottom: none;
18 | border-left: none;
19 | transform: rotate(45deg);
20 | border-radius: 0 $U4 0 0;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/styles/components/popup-picker.less:
--------------------------------------------------------------------------------
1 | .vmc-popup-picker{
2 | .header{
3 | background-color: @PopupPickerHeaderBackColor;
4 | height: @PopupPickerHeaderHeight;
5 | line-height: @PopupPickerHeaderHeight;
6 | overflow: hidden;
7 | text-align: center;
8 | font-size: @PopupPickerHeaderTextSize;
9 | display: flex;
10 |
11 | .left, .right{
12 | padding: 0 @PopupPickerHeaderButtonPadding;
13 | color: @PopupPickerHeaderButtonTextColor;
14 | }
15 | .title{
16 | flex: 1;
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/piano.scss:
--------------------------------------------------------------------------------
1 | //*-- piano --*\\
2 | .icono-piano{
3 | width: $U28;
4 | height: $U22;
5 | @extend .icono-stroke;
6 | margin: $U6 $U3;
7 | &:before{
8 | position: absolute;
9 | left: $U4;
10 | top: 0;
11 | width: $U1;
12 | height: 100%;
13 | box-shadow: inset 0 0 0 $U32, $U5 0, $U10 0, $U15 0;
14 | }
15 | &:after{
16 | position: absolute;
17 | width: $U3;
18 | height: $U12;
19 | left: $U3;
20 | top: 0;
21 | box-shadow: inset 0 0 0 $U32, $U5 0, $U10 0, $U15 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/plus.scss:
--------------------------------------------------------------------------------
1 | //*-- Plus --*\\
2 | [class*="icono-plus"], [class*="icono-cross"]{
3 | width: $U30;
4 | height: $U30;
5 | margin: $U2;
6 | &:before, &:after{
7 | @extend .stickCenter;
8 | box-shadow: inset 0 0 0 $U32;
9 | }
10 | &:before{
11 | width: $U20;
12 | height: $U2;
13 | }
14 | &:after{
15 | height: $U20;
16 | width: $U2;
17 | }
18 | &[class*="Circle"]{
19 | &:before{
20 | width: $U18;
21 | }
22 | &:after{
23 | height: $U18;
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/share.scss:
--------------------------------------------------------------------------------
1 | //*-- Share --*\\
2 | .icono-share{
3 | height: $U9;
4 | width: $U9;
5 | border-radius: 50%;
6 | box-shadow: inset 0 0 0 $U32, $U22 -1*$U11 0 0, $U22 $U11 0 0;
7 | margin: $U12 $U24 $U13 $U1;
8 | &:before, &:after{
9 | position: absolute;
10 | width: $U24;
11 | height: $U2;
12 | box-shadow: inset 0 0 0 $U32;
13 | left: 0;
14 | }
15 | &:before{
16 | top:-1*$U2;
17 | transform: rotate(-25deg);
18 | }
19 | &:after{
20 | top:$U9;
21 | transform: rotate(25deg);
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/components/alert.less:
--------------------------------------------------------------------------------
1 | .vmc-alert {
2 | &.no-content {
3 | .dialog-head {
4 | display: flex;
5 | align-items: center;
6 | min-height: @AlertTitleHeight;
7 | padding-bottom: @AlertTitlePadding;
8 |
9 | div {
10 | flex: 1;
11 | text-align: center;
12 | }
13 |
14 | p {
15 | display: inline-block;
16 | text-align: left;
17 | }
18 | }
19 |
20 | .dialog-body {
21 | display: none;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/components/confirm.scss:
--------------------------------------------------------------------------------
1 | .vmc-confirm {
2 | &.no-content {
3 | .dialog-head {
4 | display: flex;
5 | align-items: center;
6 | min-height: $ConfirmTitleHeight;
7 | padding-bottom: $ConfirmTitlePadding;
8 |
9 | div {
10 | flex: 1;
11 | text-align: center;
12 | }
13 |
14 | p {
15 | display: inline-block;
16 | text-align: left;
17 | }
18 | }
19 |
20 | .dialog-body {
21 | display: none;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/styles/components/confirm.less:
--------------------------------------------------------------------------------
1 | .vmc-confirm {
2 | &.no-content {
3 | .dialog-head {
4 | display: flex;
5 | align-items: center;
6 | min-height: @ConfirmTitleHeight;
7 | padding-bottom: @ConfirmTitlePadding;
8 |
9 | div {
10 | flex: 1;
11 | text-align: center;
12 | }
13 |
14 | p {
15 | display: inline-block;
16 | text-align: left;
17 | }
18 | }
19 |
20 | .dialog-body {
21 | display: none;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/keyboard.less:
--------------------------------------------------------------------------------
1 | //*-- Keyboard --*\\
2 | .icono-keyboard{
3 | width: @32;
4 | height: @22;
5 | border-radius: @3;
6 | &:extend(.icono-stroke);
7 | margin: @6 @1;
8 | &:before{
9 | .square(@2);
10 | &:extend(.stickCenter);
11 | box-shadow: -1*@2 -1*@4 0, -1*@6 -1*@4 0, -1*@10 -1*@4 0, @2 -1*@4 0, @6 -1*@4 0, @8 -1*@4 0, @10 -1*@4 0,
12 | -1*@4 0 0, -1*@8 0 0, -1*@10 0 0, inset 0 0 0 @32, @4 0 0, @8 0 0, @10 0 0,
13 | @4 @4 0, @2 @4 0, 0 @4 0, -1*@2 @4 0, -1*@6 @4 0, -1*@10 @4 0, @6 @4 0, @10 @4 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/rename.less:
--------------------------------------------------------------------------------
1 | //*-- Rename --*\\
2 | .icono-rename{
3 | width: @26;
4 | height: @10;
5 | &:extend(.icono-stroke);
6 | border-color: transparent;
7 | border-width: @3;
8 | box-shadow: 0 0 0 @1, @11 0 0 0 inset;
9 | margin: @12 @4;
10 | &:before{
11 | width: @1;
12 | height: @18;
13 | &:extend(.stickCenterV);
14 | left: @9;
15 | border-width: @2 @4;
16 | border-style: solid;
17 | border-right-color: transparent;
18 | border-left-color: transparent;
19 | box-shadow: 0 0 0 @1 inset;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/rename.scss:
--------------------------------------------------------------------------------
1 | //*-- Rename --*\\
2 | .icono-rename{
3 | width: $U26;
4 | height: $U10;
5 | @extend .icono-stroke;
6 | border-color: transparent;
7 | border-width: $U3;
8 | box-shadow: 0 0 0 $U1, $U11 0 0 0 inset;
9 | margin: $U12 $U4;
10 | &:before{
11 | width: $U1;
12 | height: $U18;
13 | @extend .stickCenterV;
14 | left: $U9;
15 | border-width: $U2 $U4;
16 | border-style: solid;
17 | border-right-color: transparent;
18 | border-left-color: transparent;
19 | box-shadow: 0 0 0 $U1 inset;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/bluetooth.less:
--------------------------------------------------------------------------------
1 | //*-- Bluetooth --*\\
2 | .icono-bluetooth{
3 | width: @3;
4 | height: @26;
5 | box-shadow: inset 0 0 0 @32;
6 | margin: @4 @15 @4 @16;
7 | &:before, &:after{
8 | position: absolute;
9 | width: @18;
10 | height: @8;
11 | border-width: @3 @3 @3 0;
12 | border-style: solid;
13 | border-top-color: transparent;
14 | top: @2;
15 | left: -@13;
16 | transform: rotate(-45deg);
17 | }
18 | &:after{
19 | top: @9;
20 | transform: rotate(45deg) rotateX(180deg);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/clock.less:
--------------------------------------------------------------------------------
1 | //*-- Clock --*\\
2 | .icono-clock{
3 | width: @26;
4 | height: @26;
5 | border-radius: 50%;
6 | &:extend(.icono-stroke);
7 | margin: @4;
8 | &:before, &:after{
9 | &:extend(.stickCenter);
10 | top: 35%;
11 | box-shadow: inset 0 0 0 @32;
12 | border-radius: @2;
13 | }
14 | &:before{
15 | width: @2;
16 | height: @9;
17 | }
18 | &:after{
19 | width: @6;
20 | height: @2;
21 | transform-origin: left center;
22 | transform: rotate(45deg) translate(@1, @2);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/ruler.less:
--------------------------------------------------------------------------------
1 | //*-- Ruler --*\\
2 | .icono-ruler{
3 | width: @27;
4 | height: @12;
5 | &:extend(.icono-stroke);
6 | margin: @11 @4 @11 @3;
7 | &:before{
8 | position: absolute;
9 | width: @1;
10 | height: @4;
11 | box-shadow: inset 0 0 0 @32, @6 0, @12 0;
12 | left: @5;
13 | top: 0;
14 | }
15 | &:after{
16 | position: absolute;
17 | width: @1;
18 | height: @2;
19 | box-shadow: inset 0 0 0 @32, @2 0, @6 0, @8 0, @12 0, @14 0, @18 0, @20 0;
20 | left: @1;
21 | top: 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/clock.scss:
--------------------------------------------------------------------------------
1 | //*-- Clock --*\\
2 | .icono-clock{
3 | width: $U26;
4 | height: $U26;
5 | border-radius: 50%;
6 | @extend .icono-stroke;
7 | margin: $U4;
8 | &:before, &:after{
9 | @extend .stickCenter;
10 | top: 35%;
11 | box-shadow: inset 0 0 0 $U32;
12 | border-radius: $U2;
13 | }
14 | &:before{
15 | width: $U2;
16 | height: $U9;
17 | }
18 | &:after{
19 | width: $U6;
20 | height: $U2;
21 | transform-origin: left center;
22 | transform: rotate(45deg) translate($U1, $U2);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/submit/README.md:
--------------------------------------------------------------------------------
1 | # Submit
2 |
3 | ## Overview
4 |
5 | 提交按钮,继承自[按钮](../button)组件。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```html
12 | 保存
13 | 不可点击的提交按钮
14 | ```
15 |
16 | ```javascript
17 | export default {
18 | methods: {
19 | onSubmit() {
20 | this.$Toast('正在提交数据...');
21 | setTimeout(() => {
22 | this.$refs.submit.done();
23 | }, 5000);
24 | }
25 | }
26 | }
27 | ```
28 | ## Methods
29 |
30 | ### done
31 |
32 | 提交结束时必需手动执行此方法。
--------------------------------------------------------------------------------
/src/scss/components/progressbar.scss:
--------------------------------------------------------------------------------
1 | .vmc-progressbar {
2 | .bar-outer {
3 | position: relative;
4 | width: 100%;
5 | height: $ProgressbarHeight;
6 | border-radius: 100px;
7 | background: $ProgressbarBackColor;
8 |
9 | .bar-inner {
10 | position: absolute;
11 | left: -1px;
12 | right: -1px;
13 | top: 0;
14 | bottom: 0;
15 |
16 | div {
17 | height: 100%;
18 | border-radius: 100px;
19 | background: $ProgressbarColor;
20 | }
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/camera.less:
--------------------------------------------------------------------------------
1 | //*-- camera --*\\
2 | .icono-camera{
3 | width: @32;
4 | height: @24;
5 | border-radius: @4;
6 | &:extend(.icono-stroke);
7 | margin: @5 @1;
8 | &:before{
9 | &:extend(.stickCenter);
10 | width: @10;
11 | height: @10;
12 | border: @1 solid transparent;
13 | box-shadow: inset 0 0 0 @1, 0 0 0 @2;
14 | border-radius: 50%;
15 | }
16 | &:after{
17 | position: absolute;
18 | width: @4;
19 | height: @2;
20 | right: @2;
21 | top: @2;
22 | box-shadow: inset 0 0 0 @32;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/bluetooth.scss:
--------------------------------------------------------------------------------
1 | //*-- Bluetooth --*\\
2 | .icono-bluetooth{
3 | width: $U3;
4 | height: $U26;
5 | box-shadow: inset 0 0 0 $U32;
6 | margin: $U4 $U15 $U4 $U16;
7 | &:before, &:after{
8 | position: absolute;
9 | width: $U18;
10 | height: $U8;
11 | border-width: $U3 $U3 $U3 0;
12 | border-style: solid;
13 | border-top-color: transparent;
14 | top: $U2;
15 | left: -$U13;
16 | transform: rotate(-45deg);
17 | }
18 | &:after{
19 | top: $U10;
20 | transform: rotate(45deg) rotateX(180deg);
21 | }
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/src/styles/components/progressbar.less:
--------------------------------------------------------------------------------
1 | .vmc-progressbar {
2 | .bar-outer {
3 | position: relative;
4 | width: 100%;
5 | height: @ProgressbarHeight;
6 | border-radius: 100px;
7 | background: @ProgressbarBackColor;
8 |
9 | .bar-inner {
10 | position: absolute;
11 | left: -1px;
12 | right: -1px;
13 | top: 0;
14 | bottom: 0;
15 |
16 | div {
17 | height: 100%;
18 | border-radius: 100px;
19 | background: @ProgressbarColor;
20 | }
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/camera.scss:
--------------------------------------------------------------------------------
1 | //*-- camera --*\\
2 | .icono-camera{
3 | width: $U32;
4 | height: $U24;
5 | border-radius: $U4;
6 | @extend .icono-stroke;
7 | margin: $U5 $U1;
8 | &:before{
9 | @extend .stickCenter;
10 | width: $U10;
11 | height: $U10;
12 | border: $U1 solid transparent;
13 | box-shadow: inset 0 0 0 $U1, 0 0 0 $U2;
14 | border-radius: 50%;
15 | }
16 | &:after{
17 | position: absolute;
18 | width: $U4;
19 | height: $U2;
20 | right: $U2;
21 | top: $U2;
22 | box-shadow: inset 0 0 0 $U32;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/ruler.scss:
--------------------------------------------------------------------------------
1 | //*-- Ruler --*\\
2 | .icono-ruler{
3 | width: $U27;
4 | height: $U12;
5 | @extend .icono-stroke;
6 | margin: $U11 $U4 $U11 $U3;
7 | &:before{
8 | position: absolute;
9 | width: $U1;
10 | height: $U4;
11 | box-shadow: inset 0 0 0 $U32, $U6 0, $U12 0;
12 | left: $U5;
13 | top: 0;
14 | }
15 | &:after{
16 | position: absolute;
17 | width: $U1;
18 | height: $U2;
19 | box-shadow: inset 0 0 0 $U32, $U2 0, $U6 0, $U8 0, $U12 0, $U14 0, $U18 0, $U20 0;
20 | left: $U1;
21 | top: 0;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/sliders.less:
--------------------------------------------------------------------------------
1 | //*-- Sliders --*\\
2 | .icono-sliders{
3 | height: @30;
4 | width: @30;
5 | margin: @2;
6 | &:before, &:after{
7 | transform: translateX(-50%);
8 | left: 50%;
9 | position: absolute;
10 | }
11 | &:before{
12 | width: @8;
13 | height: @7;
14 | border-radius: @2;
15 | top: 67%;
16 | box-shadow: inset 0 0 0 @32, @10 -1*@10, -1*@10 -1*@14;
17 | }
18 | &:after{
19 | position: absolute;
20 | width: @2;
21 | height:100%;
22 | box-shadow: inset 0 0 0 @32, @10 0, -1*@10 0;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/cup.less:
--------------------------------------------------------------------------------
1 | //*-- Cup --*\\
2 | .icono-cup{
3 | width: @22;
4 | height: @16;
5 | box-shadow: inset 0 0 0 @32;
6 | border-radius: 0 0 @5 @5;
7 | margin: @6 @6 @12;
8 | &:before{
9 | position: absolute;
10 | right: -1*@3;
11 | top: @4;
12 | width: @5;
13 | height: @5;
14 | border-radius: 50%;
15 | box-shadow: 0 0 0 @2;
16 | }
17 | &:after{
18 | &:extend(.stickCenterH);
19 | bottom: -1*@5;
20 | width: @26;
21 | height: @3;
22 | border-radius: 0 0 @3 @3;
23 | box-shadow: inset 0 0 0 @32;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/sliders.scss:
--------------------------------------------------------------------------------
1 | //*-- Sliders --*\\
2 | .icono-sliders{
3 | height: $U30;
4 | width: $U30;
5 | margin: $U2;
6 | &:before, &:after{
7 | transform: translateX(-50%);
8 | left: 50%;
9 | position: absolute;
10 | }
11 | &:before{
12 | width: $U8;
13 | height: $U7;
14 | border-radius: $U2;
15 | top: 67%;
16 | box-shadow: inset 0 0 0 $U32, $U10 -1*$U10, -1*$U10 -1*$U14;
17 | }
18 | &:after{
19 | position: absolute;
20 | width: $U2;
21 | height:100%;
22 | box-shadow: inset 0 0 0 $U32, $U10 0, -1*$U10 0;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/reset.less:
--------------------------------------------------------------------------------
1 | //*-- Reset --*\\
2 | .icono-reset{
3 | width: @26;
4 | height: @26;
5 | border-radius: 50%;
6 | border-width: @2;
7 | border-style: solid;
8 | border-left-color: transparent;
9 | margin: @4;
10 | &:before{
11 | position: absolute;
12 | width: 0;
13 | height: 0;
14 | left: -1*@7;
15 | bottom: 0;
16 | border-width: @6;
17 | border-style: solid;
18 | border-right-color: transparent;
19 | border-left-color: transparent;
20 | border-bottom-color: transparent;
21 | transform: rotate(135deg);
22 | }
23 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/reset.scss:
--------------------------------------------------------------------------------
1 | //*-- Reset --*\\
2 | .icono-reset{
3 | width: $U26;
4 | height: $U26;
5 | border-radius: 50%;
6 | border-width: $U2;
7 | border-style: solid;
8 | border-left-color: transparent;
9 | margin: $U4;
10 | &:before{
11 | position: absolute;
12 | width: 0;
13 | height: 0;
14 | left: -1*$U7;
15 | bottom: 0;
16 | border-width: $U6;
17 | border-style: solid;
18 | border-right-color: transparent;
19 | border-left-color: transparent;
20 | border-bottom-color: transparent;
21 | transform: rotate(135deg);
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/flag.less:
--------------------------------------------------------------------------------
1 | //*-- Flag --*\\
2 | .icono-flag{
3 | width: @22;
4 | height: @25;
5 | border-left: @3 solid;
6 | margin: @5 @6 @4;
7 | &:before, &:after{
8 | position:absolute;
9 | width: @9;
10 | height: @8;
11 | &:extend(.icono-stroke);
12 | }
13 | &:before{
14 | left: -1*@2;
15 | top: 1px;
16 | border-radius: 0 2px 0 0;
17 | border-right-width: @2 + 1;
18 | }
19 | &:after{
20 | width: @5;
21 | left: @9;
22 | top: @4;
23 | border-left-width: @2 + 1;
24 | border-radius: 2px 2px 0 2px;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/terminal.less:
--------------------------------------------------------------------------------
1 | //*-- Terminal --*\\
2 | .icono-terminal{
3 | width: @28;
4 | height: @24;
5 | &:extend(.icono-stroke);
6 | margin: @5 @3;
7 | &:before{
8 | width: @5;
9 | height: @5;
10 | position: absolute;
11 | top: 50%;
12 | transform: translateY(-50%) rotate(45deg);
13 | left: @3;
14 | border-width: @2 @2 0 0;
15 | border-style: solid;
16 | }
17 | &:after{
18 | position: absolute;
19 | width: @5;
20 | height: 0;
21 | border-bottom: @2 solid;
22 | right: @6;
23 | bottom: @4;
24 |
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/cup.scss:
--------------------------------------------------------------------------------
1 | //*-- Cup --*\\
2 | .icono-cup{
3 | width: $U22;
4 | height: $U16;
5 | box-shadow: inset 0 0 0 $U32;
6 | border-radius: 0 0 $U5 $U5;
7 | margin: $U6 $U6 $U12;
8 | &:before{
9 | position: absolute;
10 | right: -1*$U3;
11 | top: $U4;
12 | width: $U5;
13 | height: $U5;
14 | border-radius: 50%;
15 | box-shadow: 0 0 0 $U2;
16 | }
17 | &:after{
18 | @extend .stickCenterH;
19 | bottom: -1*$U5;
20 | width: $U26;
21 | height: $U3;
22 | border-radius: 0 0 $U3 $U3;
23 | box-shadow: inset 0 0 0 $U32;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/keyboard.scss:
--------------------------------------------------------------------------------
1 | //*-- Keyboard --*\\
2 | .icono-keyboard{
3 | width: $U32;
4 | height: $U22;
5 | border-radius: $U3;
6 | @extend .icono-stroke;
7 | margin: $U6 $U1;
8 | &:before{
9 | @include square($U2);
10 | @extend .stickCenter;
11 | box-shadow: -1*$U2 -1*$U4 0, -1*$U6 -1*$U4 0, -1*$U10 -1*$U4 0, $U2 -1*$U4 0, $U6 -1*$U4 0, $U8 -1*$U4 0, $U10 -1*$U4 0,
12 | -1*$U4 0 0, -1*$U8 0 0, -1*$U10 0 0, inset 0 0 0 $U32, $U4 0 0, $U8 0 0, $U10 0 0,
13 | $U4 $U4 0, $U2 $U4 0, 0 $U4 0, -1*$U2 $U4 0, -1*$U6 $U4 0, -1*$U10 $U4 0, $U6 $U4 0, $U10 $U4 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/flag.scss:
--------------------------------------------------------------------------------
1 | //*-- Flag --*\\
2 | .icono-flag{
3 | width: $U22;
4 | height: $U25;
5 | border-left: $U3 solid;
6 | margin: $U5 $U6 $U4;
7 | &:before, &:after{
8 | position:absolute;
9 | width: $U9;
10 | height: $U8;
11 | @extend .icono-stroke;
12 | }
13 | &:before{
14 | left: -1*$U2;
15 | top: 1px;
16 | border-radius: 0 2px 0 0;
17 | border-right-width: $U2 + 1;
18 | }
19 | &:after{
20 | width: $U5;
21 | left: $U9;
22 | top: $U4;
23 | border-left-width: $U2 + 1;
24 | border-radius: 2px 2px 0 2px;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/terminal.scss:
--------------------------------------------------------------------------------
1 | //*-- Terminal --*\\
2 | .icono-terminal{
3 | width: $U28;
4 | height: $U24;
5 | @extend .icono-stroke;
6 | margin: $U5 $U3;
7 | &:before{
8 | width: $U5;
9 | height: $U5;
10 | position: absolute;
11 | top: 50%;
12 | transform: translateY(-50%) rotate(45deg);
13 | left: $U3;
14 | border-width: $U2 $U2 0 0;
15 | border-style: solid;
16 | }
17 | &:after{
18 | position: absolute;
19 | width: $U5;
20 | height: 0;
21 | border-bottom: $U2 solid;
22 | right: $U6;
23 | bottom: $U4;
24 |
25 | }
26 | }
--------------------------------------------------------------------------------
/src/components/spinner/spinner/blade.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/src/components/spinner/spinner/double-bounce.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/dropper.less:
--------------------------------------------------------------------------------
1 | //*-- Dropper --*\\
2 | .icono-dropper{
3 | .wDiagonal(@28);
4 | height: @14;
5 | border-width: @3;
6 | border-style: solid;
7 | border-right: none;
8 | border-top-color: transparent;
9 | border-bottom-color: transparent;
10 | border-left-color: transparent;
11 | box-shadow: -1*@9 0 0 @2 inset, 0 0 0 @2 inset;
12 | border-radius: 50% @6 @6 50%;
13 | transform: rotate(-45deg);
14 | margin: @12 -1*@2 @8 -1*@4;
15 | &:before{
16 | width: @4;
17 | height: @14;
18 | right: @10;
19 | box-shadow: inset 0 0 0 @32;
20 | &:extend(.stickCenterV);
21 | }
22 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/document.less:
--------------------------------------------------------------------------------
1 | //*-- Document --*\\
2 | .icono-document{
3 | width: @26;
4 | height: @32;
5 | border-radius: 0 0 0 @10;
6 | &:extend(.icono-stroke);
7 | margin: @1 @4;
8 | &:before{
9 | position: absolute;
10 | .square(0);
11 | left: -1*@3;
12 | bottom: -1*@3;
13 | border-width: @5;
14 | border-style: solid;
15 | border-bottom-color: transparent;
16 | border-left-color: transparent;
17 | }
18 | &:after{
19 | width: @13;
20 | height: @2;
21 | &:extend(.stickCenter);
22 | box-shadow: inset 0 0 0 @32, 0 -1*@5 0 0, 0 @5 0 0;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/image.less:
--------------------------------------------------------------------------------
1 | //*-- Image --*\\
2 | .icono-image{
3 | width: @30;
4 | height: @26;
5 | &:extend(.icono-stroke);
6 | border-radius: @3;
7 | overflow: hidden;
8 | margin: @4 @2;
9 | &:before{
10 | position: absolute;
11 | width: @20;
12 | height: @20;
13 | left: -1*@2;
14 | top: @14;
15 | transform: rotate(45deg);
16 | box-shadow: inset 0 0 0 @32, @10 -1*@6 0 0;
17 | }
18 | &:after{
19 | position: absolute;
20 | .square(@4);
21 | border-radius: 50%;
22 | box-shadow: inset 0 0 0 @32;
23 | top: @5;
24 | right: @5;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/video.less:
--------------------------------------------------------------------------------
1 | //*-- Video --*\\
2 | .icono-video{
3 | width: @20;
4 | height: @20;
5 | &:extend(.icono-stroke);
6 | margin: @7 @7;
7 | &:before{
8 | &:extend(.stickCenterV);
9 | width: @3;
10 | height: @3;
11 | left: -1*@8;
12 | box-shadow: inset 0 0 0 @32, 0 -1*@8 0 0, 0 @8 0 0, @29 0 0 0,@29 -1*@8 0 0, @29 @8 0 0;
13 | }
14 | &:after{
15 | &:extend(.stickCenter);
16 | width: 0;
17 | height: 0;
18 | border-width: @4 0 @4 @6;
19 | border-style: solid;
20 | border-top-color: transparent;
21 | border-bottom-color: transparent;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/market.less:
--------------------------------------------------------------------------------
1 | //*-- Market --*\\
2 | .icono-market{
3 | width: @32;
4 | height: @12;
5 | &:extend(.icono-stroke);
6 | border-top: none;
7 | margin: @19 @1 @3;
8 | &:before{
9 | width: @6;
10 | height: @13;
11 | position: absolute;
12 | top: -1*@15;
13 | left: -1*@5;
14 | border-radius: 0 0 @10 @10;
15 | border-left: none;
16 | box-shadow: inset 0 0 0 @32, @8 0 0, @16 0 0, @24 0 0, @32 0 0;
17 | }
18 | &:after{
19 | width: @6;
20 | height: @6;
21 | bottom: -1*@2;
22 | &:extend(.stickCenterH);
23 | &:extend(.icono-stroke);
24 | }
25 | }
--------------------------------------------------------------------------------
/src/scss/components/textarea.scss:
--------------------------------------------------------------------------------
1 | .vmc-text-area {
2 | position: relative;
3 | .vmc-1px {
4 | padding: 1px;
5 | }
6 |
7 | textarea {
8 | width: 100%;
9 | height: 100%;
10 | appearance: none;
11 | outline: none;
12 | box-sizing: border-box;
13 | font-size: $TextAreaTextSize;
14 | padding: $TextAreaPadding;
15 | border: none;
16 | resize: none;
17 | display: block;
18 | }
19 |
20 | .vmc-textarea-number {
21 | position: absolute;
22 | bottom: 4px;
23 | right: 6px;
24 | font-size: $TextAreaTipTextSize;
25 | color: $TextAreaTipTextColor;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/document.scss:
--------------------------------------------------------------------------------
1 | //*-- Document --*\\
2 | .icono-document{
3 | width: $U26;
4 | height: $U32;
5 | border-radius: 0 0 0 $U10;
6 | @extend .icono-stroke;
7 | margin: $U1 $U4;
8 | &:before{
9 | position: absolute;
10 | @include square(0);
11 | left: -1*$U3;
12 | bottom: -1*$U3;
13 | border-width: $U5;
14 | border-style: solid;
15 | border-bottom-color: transparent;
16 | border-left-color: transparent;
17 | }
18 | &:after{
19 | width: $U13;
20 | height: $U2;
21 | @extend .stickCenter;
22 | box-shadow: inset 0 0 0 $U32, 0 -1*$U5 0 0, 0 $U5 0 0;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/video.scss:
--------------------------------------------------------------------------------
1 | //*-- Video --*\\
2 | .icono-video{
3 | width: $U20;
4 | height: $U20;
5 | @extend .icono-stroke;
6 | margin: $U7 $U7;
7 | &:before{
8 | @extend .stickCenterV;
9 | width: $U3;
10 | height: $U3;
11 | left: -1*$U8;
12 | box-shadow: inset 0 0 0 $U32, 0 -1*$U8 0 0, 0 $U8 0 0, $U29 0 0 0,$U29 -1*$U8 0 0, $U29 $U8 0 0;
13 | }
14 | &:after{
15 | @extend .stickCenter;
16 | width: 0;
17 | height: 0;
18 | border-width: $U4 0 $U4 $U6;
19 | border-style: solid;
20 | border-top-color: transparent;
21 | border-bottom-color: transparent;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/music.less:
--------------------------------------------------------------------------------
1 | //*-- Music --*\\
2 | .icono-music{
3 | width: @18;
4 | height: @6;
5 | transform: skewY(-15deg);
6 | box-shadow: inset 0 0 0 @32;
7 | border-radius: @2 @2 0 0;
8 | margin: @4 @5 @24 @11;
9 | &:before{
10 | position: absolute;
11 | width: @2;
12 | height: @16;
13 | left: 0;
14 | top: @4;
15 | box-shadow: inset 0 0 0 @32, @16 0 0 0;
16 | }
17 | &:after{
18 | position: absolute;
19 | width: @10;
20 | height: @8;
21 | left: -1*@8;
22 | top: @17;
23 | border-radius: 50%;
24 | box-shadow: inset 0 0 0 @32, @16 0 0 0;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/components/cell.scss:
--------------------------------------------------------------------------------
1 | .vmc-cell {
2 | padding: 0 $CellHorizontalPadding;
3 | min-height: $CellMinHeight;
4 | display: flex;
5 | align-items: center;
6 | background: $CellBackColor;
7 |
8 | + .vmc-cell:before {
9 | border: none;
10 | }
11 |
12 | .cell-icon {
13 | margin-right: $CellIconTextSpace;
14 | }
15 |
16 | .cell-title {
17 | flex: 1;
18 | font-size: $CellTextSize;
19 | }
20 |
21 | .cell-arrow {
22 | margin-right: -$CellHorizontalPadding;
23 |
24 | .icono-caretRight {
25 | color: $CellArrowColor;
26 | transform: scale($CellArrowScale);
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/image.scss:
--------------------------------------------------------------------------------
1 | //*-- Image --*\\
2 | .icono-image{
3 | width: $U30;
4 | height: $U26;
5 | @extend .icono-stroke;
6 | border-radius: $U3;
7 | overflow: hidden;
8 | margin: $U4 $U2;
9 | &:before{
10 | position: absolute;
11 | width: $U20;
12 | height: $U20;
13 | left: -1*$U2;
14 | top: $U14;
15 | transform: rotate(45deg);
16 | box-shadow: inset 0 0 0 $U32, $U10 -1*$U6 0 0;
17 | }
18 | &:after{
19 | position: absolute;
20 | @include square($U4);
21 | border-radius: 50%;
22 | box-shadow: inset 0 0 0 $U32;
23 | top: $U5;
24 | right: $U5;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/market.scss:
--------------------------------------------------------------------------------
1 | //*-- Market --*\\
2 | .icono-market{
3 | width: $U32;
4 | height: $U12;
5 | @extend .icono-stroke;
6 | border-top: none;
7 | margin: $U19 $U1 $U3;
8 | &:before{
9 | width: $U6;
10 | height: $U13;
11 | position: absolute;
12 | top: -1*$U15;
13 | left: -1*$U5;
14 | border-radius: 0 0 $U10 $U10;
15 | border-left: none;
16 | box-shadow: inset 0 0 0 $U32, $U8 0 0, $U16 0 0, $U24 0 0, $U32 0 0;
17 | }
18 | &:after{
19 | width: $U6;
20 | height: $U6;
21 | bottom: -1*$U2;
22 | @extend .stickCenterH;
23 | @extend .icono-stroke;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/styles/components/cell.less:
--------------------------------------------------------------------------------
1 | .vmc-cell {
2 | padding: 0 @CellHorizontalPadding;
3 | min-height: @CellMinHeight;
4 | display: flex;
5 | align-items: center;
6 | background: @CellBackColor;
7 |
8 | + .vmc-cell:before {
9 | border: none;
10 | }
11 |
12 | .cell-icon {
13 | margin-right: @CellIconTextSpace;
14 | }
15 |
16 | .cell-title {
17 | flex: 1;
18 | font-size: @CellTextSize;
19 | }
20 |
21 | .cell-arrow {
22 | margin-right: -@CellHorizontalPadding;
23 |
24 | .icono-caretRight {
25 | color: @CellArrowColor;
26 | transform: scale(@CellArrowScale);
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/src/styles/components/textarea.less:
--------------------------------------------------------------------------------
1 | .vmc-text-area {
2 | position: relative;
3 | .vmc-1px {
4 | padding: 1px;
5 | }
6 |
7 | textarea {
8 | width: 100%;
9 | height: 100%;
10 | appearance: none;
11 | outline: none;
12 | box-sizing: border-box;
13 | font-size: @TextAreaTextSize;
14 | padding: @TextAreaPadding;
15 | border: none;
16 | resize: none;
17 | display: block;
18 | }
19 |
20 | .vmc-textarea-number {
21 | position: absolute;
22 | bottom: 4px;
23 | right: 6px;
24 | font-size: @TextAreaTipTextSize;
25 | color: @TextAreaTipTextColor;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/scss/components/upload.scss:
--------------------------------------------------------------------------------
1 | .vmc-upload {
2 | height: $UploadWidth;
3 | width: $UploadWidth;
4 | border: $UploadBorderWidth $UploadBorderStyle $UploadBorderColor;
5 | border-radius: $UploadBorderRadius;
6 | position: relative;
7 |
8 | input[type=file] {
9 | position: absolute;
10 | top: 0;
11 | left: 0;
12 | opacity: 0;
13 | width: 100%;
14 | height: 100%;
15 | }
16 |
17 | .vmc-upload-button {
18 | display: flex;
19 | justify-content: center;
20 | align-items: center;
21 | height: 100%;
22 | width: 100%;
23 |
24 | i {
25 | color: #cccccc;
26 | display: block;
27 | transform: scale($UploadWidth / 32);
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/music.scss:
--------------------------------------------------------------------------------
1 | //*-- Music --*\\
2 | .icono-music{
3 | width: $U18;
4 | height: $U6;
5 | transform: skewY(-15deg);
6 | box-shadow: inset 0 0 0 $U32;
7 | border-radius: $U2 $U2 0 0;
8 | margin: $U4 $U5 $U24 $U11;
9 | &:before{
10 | position: absolute;
11 | width: $U2;
12 | height: $U16;
13 | left: 0;
14 | top: $U4;
15 | box-shadow: inset 0 0 0 $U32, $U16 0 0 0;
16 | }
17 | &:after{
18 | position: absolute;
19 | width: $U10;
20 | height: $U8;
21 | left: -1*$U8;
22 | top: $U17;
23 | border-radius: 50%;
24 | box-shadow: inset 0 0 0 $U32, $U16 0 0 0;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/icono.less:
--------------------------------------------------------------------------------
1 | .icono-icono{
2 | width: @13;
3 | height: @4;
4 | box-shadow: inset 0 0 0 @32, 0 @16, @17 -1*@18;
5 | transform: skew(0, 30deg);
6 | margin: @11 @19 @19 @2;
7 | &:before{
8 | position: absolute;
9 | width: @13;
10 | height: @4;
11 | box-shadow: inset 0 0 0 @32, 0 @16, -1*@17 -1*@17;
12 | right: -1*@17;
13 | top: -1*@10;
14 | transform: skew(0, -48deg);
15 | }
16 | &:after{
17 | position: absolute;
18 | width: @22;
19 | height: @15;
20 | left: 0;
21 | top: -1*@5;
22 | border: @4 solid;
23 | border-top-color: transparent;
24 | border-bottom: none;
25 | transform: skew(0, -30deg) scaleY(0.6);
26 | }
27 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/microphone.less:
--------------------------------------------------------------------------------
1 | //*-- Microphone --*\\
2 | .icono-microphone{
3 | width: @22;
4 | height: @15;
5 | &:extend(.icono-stroke);
6 | border-width: 0 @2 @2;
7 | border-radius: @20~'/'0 0 @20 @20;
8 | margin: @12 @6 @7;
9 | &:before{
10 | width: @10;
11 | height: @18;
12 | &:extend(.stickCenterH);
13 | top: -1*@11;
14 | border-radius: @20;
15 | &:extend(.icono-stroke);
16 | }
17 | &:after{
18 | width: @2;
19 | height: @2;
20 | bottom: -1*@4;
21 | &:extend(.stickCenterH);
22 | box-shadow: inset 0 0 0 @32, 0 @2, 0 @4, -1*@2 @4, -1*@4 @4, -1*@6 @4, @2 @4, @4 @4, @6 @4;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/dropper.scss:
--------------------------------------------------------------------------------
1 | //*-- Dropper --*\\
2 | .icono-dropper{
3 | // @include wDiagonal($U28);
4 | width: 2*$U20;
5 | height: $U14;
6 | border-width: $U3;
7 | border-style: solid;
8 | border-right: none;
9 | border-top-color: transparent;
10 | border-bottom-color: transparent;
11 | border-left-color: transparent;
12 | box-shadow: -1*$U9 0 0 $U2 inset, 0 0 0 $U2 inset;
13 | border-radius: 50% $U6 $U6 50%;
14 | transform: rotate(-45deg);
15 | margin: $U12 -1*$U2 $U8 -1*$U4;
16 | &:before{
17 | width: $U4;
18 | height: $U14;
19 | right: $U10;
20 | box-shadow: inset 0 0 0 $U32;
21 | @extend .stickCenterV;
22 | }
23 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/crop.less:
--------------------------------------------------------------------------------
1 | //*-- Crop --*\\
2 | .icono-crop{
3 | .square(@21);
4 | &:extend(.icono-stroke);
5 | border-left: none;
6 | border-bottom: none;
7 | margin: @9 @9 @4 @4;
8 | &:before{
9 | position: absolute;
10 | .square(@21);
11 | &:extend(.icono-stroke);
12 | top: -1*@7;
13 | right: -1*@7;
14 | border-top: none;
15 | border-right: none;
16 | box-sizing: border-box;
17 | }
18 | &:after{
19 | position: absolute;
20 | width: @27;
21 | height: @1;
22 | left: @2;
23 | top: @3;
24 | box-shadow: inset 0 0 0 @32;
25 | transform: rotate(-45deg);
26 | }
27 | }
--------------------------------------------------------------------------------
/src/components/alert/README.md:
--------------------------------------------------------------------------------
1 | # Alert
2 |
3 | ## Overview
4 |
5 | 弹出提示框,显示指定内容。
6 |
7 | 是否全局组件:是。
8 |
9 | ## Usage
10 |
11 | ```javascript
12 | export default {
13 | ready() {
14 | this.$Alert('请点击确定', () => {});
15 | }
16 | }
17 | ```
18 |
19 | ## Arguments
20 |
21 | | Name | Type | Description | Default |
22 | | ----- | ----- | ----- | ----- |
23 | | title | String | 弹框提示内容(可省) | "" |
24 | | callback | Function | 点击确定时的回调函数(可省) | null |
25 | | options | Object | 其它配置参数 | {title: "", content: "", callback: null, button: "确定"} |
26 |
27 | ## LESS
28 |
29 | | Name | Description | Default |
30 | | ----- | ----- | ----- |
31 | | @AlertTitleHeight | 标题栏最小高度 | 50px |
32 | | @AlertTitlePadding | 标题底边距 | 15px |
--------------------------------------------------------------------------------
/src/styles/icono/icons/locationArrow.less:
--------------------------------------------------------------------------------
1 | //*-- LocationArrow --*\\
2 | .icono-locationArrow{
3 | width: @32;
4 | height: @32;
5 | margin: @1;
6 | &:before{
7 | position: absolute;
8 | left: @7;
9 | top: @16;
10 | border-width: @6 0 @6 @6;
11 | border-style: solid;
12 | border-left-color: transparent;
13 | transform: rotate(-45deg);
14 | }
15 | &:after{
16 | position: absolute;
17 | top: @10;
18 | left: @2;
19 | border-width: @10;
20 | border-style: solid;
21 | border-bottom-color: transparent;
22 | border-left-color: transparent;
23 | transform: skew(-30deg, -30deg);
24 | }
25 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/mouse.less:
--------------------------------------------------------------------------------
1 | //*-- Mouse --*\\
2 | .icono-mouse{
3 | width: @23;
4 | height: @32;
5 | border-radius: @11 @11 @12 @12;
6 | &:extend(.icono-stroke);
7 | margin: @1 @5 @1 @6;
8 | &:before{
9 | width: @1;
10 | height: @6;
11 | border-radius: @2;
12 | &:extend(.stickCenterH);
13 | &:extend(.icono-stroke);
14 | border-color: transparent;
15 | border-width: @1;
16 | top: @5;
17 | box-shadow: 0 0 0 @1, 0 0 0 @2 inset;
18 | }
19 | &:after{
20 | width: @1;
21 | height: @4;
22 | &:extend(.stickCenterH);
23 | top: 0;
24 | box-shadow: inset 0 0 0 @32, 0 @13 0 0;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/vmc.js:
--------------------------------------------------------------------------------
1 | // 样式,对于webpack方式引用,需要手动引用样式,这样可以方便地覆盖vmc的变量名
2 | require('./styles/vmc.less');
3 |
4 | (function() {
5 | var vmc = require('./index');
6 | var install = require('./components/install').default;
7 |
8 | if (window.Vue) {
9 | var Vue = window.Vue;
10 | Vue.use(install);
11 |
12 | Object.keys(vmc)
13 | .forEach(key => {
14 | if (key !== 'Utils') {
15 | Vue.component(key, vmc[key]);
16 | }
17 | })
18 | }
19 |
20 | vmc.version = process.env.VERSION;
21 |
22 | if (module && module.exports) {
23 | module.exports = vmc;
24 | } else {
25 | window.VMC = vmc;
26 | }
27 | }());
--------------------------------------------------------------------------------
/src/scss/icono/icons/locationArrow.scss:
--------------------------------------------------------------------------------
1 | //*-- LocationArrow --*\\
2 | .icono-locationArrow{
3 | width: $U32;
4 | height: $U32;
5 | margin: $U1;
6 | &:before{
7 | position: absolute;
8 | left: $U7;
9 | top: $U16;
10 | border-width: $U6 0 $U6 $U6;
11 | border-style: solid;
12 | border-left-color: transparent;
13 | transform: rotate(-45deg);
14 | }
15 | &:after{
16 | position: absolute;
17 | top: $U10;
18 | left: $U2;
19 | border-width: $U10;
20 | border-style: solid;
21 | border-bottom-color: transparent;
22 | border-left-color: transparent;
23 | transform: skew(-30deg, -30deg);
24 | }
25 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/icono.scss:
--------------------------------------------------------------------------------
1 | .icono-icono{
2 | width: $U13;
3 | height: $U4;
4 | box-shadow: inset 0 0 0 $U32, 0 $U16, $U17 -1*$U18;
5 | transform: skew(0, 30deg);
6 | margin: $U11 $U19 $U19 $U2;
7 | &:before{
8 | position: absolute;
9 | width: $U13;
10 | height: $U4;
11 | box-shadow: inset 0 0 0 $U32, 0 $U16, -1*$U17 -1*$U17;
12 | right: -1*$U17;
13 | top: -1*$U10;
14 | transform: skew(0, -48deg);
15 | }
16 | &:after{
17 | position: absolute;
18 | width: $U22;
19 | height: $U15;
20 | left: 0;
21 | top: -1*$U5;
22 | border: $U4 solid;
23 | border-top-color: transparent;
24 | border-bottom: none;
25 | transform: skew(0, -30deg) scaleY(0.6);
26 | }
27 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/mouse.scss:
--------------------------------------------------------------------------------
1 | //*-- Mouse --*\\
2 | .icono-mouse{
3 | width: $U23;
4 | height: $U32;
5 | border-radius: $U11 $U11 $U12 $U12;
6 | @extend .icono-stroke;
7 | margin: $U1 $U5 $U1 $U6;
8 | &:before{
9 | width: $U1;
10 | height: $U6;
11 | border-radius: $U2;
12 | @extend .stickCenterH;
13 | @extend .icono-stroke;
14 | border-color: transparent;
15 | border-width: $U1;
16 | top: $U5;
17 | box-shadow: 0 0 0 $U1, 0 0 0 $U2 inset;
18 | }
19 | &:after{
20 | width: $U1;
21 | height: $U4;
22 | @extend .stickCenterH;
23 | top: 0;
24 | box-shadow: inset 0 0 0 $U32, 0 $U13 0 0;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/textAlign.less:
--------------------------------------------------------------------------------
1 | //*-- Text align --*\\
2 | [class*="icono-textAlign"]{
3 | width: @28;
4 | height: @22;
5 | margin: @6 @3;
6 | &:before, &:after{
7 | position: absolute;
8 | height: @2;
9 | box-shadow: inset 0 0 0 @32, 0 @8 0 0, 0 @16 0 0;
10 | right: 0;
11 | }
12 | &:before{
13 | width: @28;
14 | top: 0;
15 | }
16 | &:after{
17 | width: @18;
18 | top: @4;
19 | }
20 | &.icono-textAlignCenter{
21 | &:before, &:after{
22 | &:extend(.stickCenterH);
23 | }
24 | }
25 | &.icono-textAlignLeft{
26 | &:before, &:after{
27 | left: 0;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/microphone.scss:
--------------------------------------------------------------------------------
1 | //*-- Microphone --*\\
2 | .icono-microphone{
3 | width: $U22;
4 | height: $U15;
5 | @extend .icono-stroke;
6 | border-width: 0 $U2 $U2;
7 | border-radius: $U20#{'/'}0 0 $U20 $U20;
8 | margin: $U12 $U6 $U7;
9 | &:before{
10 | width: $U10;
11 | height: $U18;
12 | @extend .stickCenterH;
13 | top: -1*$U11;
14 | border-radius: $U20;
15 | @extend .icono-stroke;
16 | }
17 | &:after{
18 | width: $U2;
19 | height: $U2;
20 | bottom: -1*$U4;
21 | @extend .stickCenterH;
22 | box-shadow: inset 0 0 0 $U32, 0 $U2, 0 $U4, -1*$U2 $U4, -1*$U4 $U4, -1*$U6 $U4, $U2 $U4, $U4 $U4, $U6 $U4;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/textAlign.scss:
--------------------------------------------------------------------------------
1 | //*-- Text align --*\\
2 | [class*="icono-textAlign"]{
3 | width: $U28;
4 | height: $U22;
5 | margin: $U6 $U3;
6 | &:before, &:after{
7 | position: absolute;
8 | height: $U2;
9 | box-shadow: inset 0 0 0 $U32, 0 $U8 0 0, 0 $U16 0 0;
10 | right: 0;
11 | }
12 | &:before{
13 | width: $U28;
14 | top: 0;
15 | }
16 | &:after{
17 | width: $U18;
18 | top: $U4;
19 | }
20 | &.icono-textAlignCenter{
21 | &:before, &:after{
22 | @extend .stickCenterH;
23 | }
24 | }
25 | &.icono-textAlignLeft{
26 | &:before, &:after{
27 | left: 0;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/home.less:
--------------------------------------------------------------------------------
1 | //*-- Home --*\\
2 | .icono-home{
3 | width: @22;
4 | height: @16;
5 | &:extend(.icono-stroke);
6 | border-top: none;
7 | margin: @15 @6 @3;
8 | &:before{
9 | .square(@18);
10 | transform: rotate(45deg);
11 | position: absolute;
12 | left: -1*@2;
13 | top: -1*@7;
14 | &:extend(.icono-stroke);
15 | border-right-color: transparent;
16 | border-bottom-color: transparent;
17 | }
18 | &:after{
19 | position: absolute;
20 | .goldenRectP(@6);
21 | bottom: 0;
22 | .stickCenterH();
23 | &:extend(.icono-stroke);
24 | border-width: @1;
25 | border-bottom: none;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/support.less:
--------------------------------------------------------------------------------
1 | //*-- Support --*\\
2 | .icono-support{
3 | width: @26;
4 | height: @26;
5 | border: @5 solid transparent;
6 | box-shadow: 0 0 0 @2 inset, 0 0 0 @2;
7 | border-radius: 50%;
8 | margin: @4;
9 | &:before{
10 | position:absolute;
11 | width: @7;
12 | height: @7;
13 | top: -1*@3;
14 | left: -1*@3;
15 | transform: rotate(45deg);
16 | box-shadow: inset 0 0 0 @32, @21 0 0 0;
17 | }
18 | &:after{
19 | position:absolute;
20 | width: @7;
21 | height: @7;
22 | top: -1*@3;
23 | right: -1*@3;
24 | transform: rotate(135deg);
25 | box-shadow: inset 0 0 0 @32, @21 0 0 0;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/crop.scss:
--------------------------------------------------------------------------------
1 | //*-- Crop --*\\
2 | .icono-crop{
3 | @include square($U21);
4 | @extend .icono-stroke;
5 | border-left: none;
6 | border-bottom: none;
7 | margin: $U9 $U9 $U4 $U4;
8 | &:before{
9 | position: absolute;
10 | @include square($U21);
11 | @extend .icono-stroke;
12 | top: -1*$U7;
13 | right: -1*$U7;
14 | border-top: none;
15 | border-right: none;
16 | box-sizing: border-box;
17 | }
18 | &:after{
19 | //@include wDiagonal($U19);
20 | width: $U27;
21 | height: $U1;
22 | @include stickCenter(0, 0, $U12, $U2);
23 | box-shadow: inset 0 0 0 $U32;
24 | transform: rotate(-45deg);
25 | }
26 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/support.scss:
--------------------------------------------------------------------------------
1 | //*-- Support --*\\
2 | .icono-support{
3 | width: $U26;
4 | height: $U26;
5 | border: $U5 solid transparent;
6 | box-shadow: 0 0 0 $U2 inset, 0 0 0 $U2;
7 | border-radius: 50%;
8 | margin: $U4;
9 | &:before{
10 | position:absolute;
11 | width: $U7;
12 | height: $U7;
13 | top: -1*$U3;
14 | left: -1*$U3;
15 | transform: rotate(45deg);
16 | box-shadow: inset 0 0 0 $U32, $U21 0 0 0;
17 | }
18 | &:after{
19 | position:absolute;
20 | width: $U7;
21 | height: $U7;
22 | top: -1*$U3;
23 | right: -1*$U3;
24 | transform: rotate(135deg);
25 | box-shadow: inset 0 0 0 $U32, $U21 0 0 0;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/components/box/README.md:
--------------------------------------------------------------------------------
1 | # Box
2 |
3 | ## Overview
4 |
5 | 占位框是一个用于占据指定高宽比的盒子。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```HTML
12 | 高宽比为0.4的盒子
13 |
14 |
15 |
16 |
17 |
18 | 高宽比为0.4的盒子,带背景色
19 |
20 |
21 | ```
22 |
23 | ## Slots
24 |
25 | | Name | Description | Default |
26 | | ----- | ----- | ----- |
27 | | default | 在组件中插入的文字、图片或其它内容 | undefined |
28 |
29 | ## Props
30 |
31 | | Property | Type | Description | Default |
32 | | ----- | ----- | ----- | ----- |
33 | | ratio | Number, String | 高宽比 | 1 |
34 | | background | String | 背景图或者背景颜色 | undefined |
--------------------------------------------------------------------------------
/src/scss/icono/icons/home.scss:
--------------------------------------------------------------------------------
1 | //*-- Home --*\\
2 | .icono-home{
3 | width: $U22;
4 | height: $U16;
5 | @extend .icono-stroke;
6 | border-top: none;
7 | margin: $U15 $U6 $U3;
8 | &:before{
9 | @include square($U18);
10 | transform: rotate(45deg);
11 | position: absolute;
12 | left: -1*$U2;
13 | top: -1*$U7;
14 | @extend .icono-stroke;
15 | border-right-color: transparent;
16 | border-bottom-color: transparent;
17 | }
18 | &:after{
19 | position: absolute;
20 | @include goldenRectP($U6);
21 | bottom: 0;
22 | @include stickCenterH();
23 | @extend .icono-stroke;
24 | border-width: $U1;
25 | border-bottom: none;
26 | }
27 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/tag.less:
--------------------------------------------------------------------------------
1 | //*-- Tag --*\\
2 | .icono-tag{
3 | width: @18;
4 | height: @24;
5 | &:extend(.icono-stroke);
6 | border-radius: @6 @6 @4 @4;
7 | border-top: none;
8 | transform: rotate(45deg);
9 | margin: @5 @8;
10 | &:before{
11 | position: absolute;
12 | top: -1*@4;
13 | left: @1;
14 | width: @10;
15 | height: @10;
16 | border-width: @2 0 0 @2;
17 | border-style: solid;
18 | transform: rotate(45deg);
19 | border-radius: @5 0 0 0;
20 | }
21 | &:after{
22 | &:extend(.stickCenterH);
23 | top: @1;
24 | width: @3;
25 | height: @3;
26 | &:extend(.icono-stroke);
27 | border-radius: 50%;
28 | }
29 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/tag.scss:
--------------------------------------------------------------------------------
1 | //*-- Tag --*\\
2 | .icono-tag{
3 | width: $U18;
4 | height: $U24;
5 | @extend .icono-stroke;
6 | border-radius: $U6 $U6 $U4 $U4;
7 | border-top: none;
8 | transform: rotate(45deg);
9 | margin: $U5 $U8;
10 | &:before{
11 | position: absolute;
12 | top: -1*$U4;
13 | left: $U1;
14 | width: $U10;
15 | height: $U10;
16 | border-width: $U2 0 0 $U2;
17 | border-style: solid;
18 | transform: rotate(45deg);
19 | border-radius: $U5 0 0 0;
20 | }
21 | &:after{
22 | @extend .stickCenterH;
23 | top: $U1;
24 | width: $U3;
25 | height: $U3;
26 | @extend .icono-stroke;
27 | border-radius: 50%;
28 | }
29 | }
--------------------------------------------------------------------------------
/src/scss/components/navbar.scss:
--------------------------------------------------------------------------------
1 | .vmc-topbar {
2 | position: absolute;
3 | top: 0;
4 | width: 100%;
5 | height: $NavbarHeight;
6 | z-index: 50;
7 | display: flex;
8 | justify-content: center;
9 | align-items: center;
10 | }
11 |
12 | .vmc-navbar {
13 | color: $NavbarTextColor;
14 | background-color: $NavbarBackColor;
15 | font-size: $NavbarTextSize;
16 |
17 | .left {
18 | width: $NavbarIconWidth;
19 | padding: ($NavbarHeight - 32px) / 2 0;
20 | }
21 |
22 | .center {
23 | flex: 1;
24 | text-align: center;
25 | }
26 |
27 | .right {
28 | width: $NavbarIconWidth;
29 | height: 100%;
30 | }
31 |
32 | +div {
33 | padding-top: $NavbarHeight !important;
34 | }
35 | }
--------------------------------------------------------------------------------
/src/styles/components/navbar.less:
--------------------------------------------------------------------------------
1 | .vmc-topbar {
2 | position: absolute;
3 | top: 0;
4 | width: 100%;
5 | height: @NavbarHeight;
6 | z-index: 50;
7 | display: flex;
8 | justify-content: center;
9 | align-items: center;
10 | }
11 |
12 | .vmc-navbar {
13 | color: @NavbarTextColor;
14 | background-color: @NavbarBackColor;
15 | font-size: @NavbarTextSize;
16 |
17 | .left {
18 | width: @NavbarIconWidth;
19 | padding: (@NavbarHeight - 32px) / 2 0;
20 | }
21 |
22 | .center {
23 | flex: 1;
24 | text-align: center;
25 | }
26 |
27 | .right {
28 | width: @NavbarIconWidth;
29 | height: 100%;
30 | }
31 |
32 | +div {
33 | padding-top: @NavbarHeight !important;
34 | }
35 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/folder.less:
--------------------------------------------------------------------------------
1 | //*-- Folder --*\\
2 | .icono-folder{
3 | width: @18;
4 | height: @22;
5 | &:extend(.icono-stroke);
6 | border-left-width: 0;
7 | border-radius: 0 @3 @3 0;
8 | margin: @8 @2 @4 @14;
9 | &:before{
10 | position: absolute;
11 | width: @12;
12 | height: @20;
13 | left: -1*@12;
14 | bottom: -1*@2;
15 | border-width: 0 0 @2 @2;
16 | border-style: solid;
17 | border-radius: 0 0 0 @3;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: @10;
22 | height: @5;
23 | left: -1*@12;
24 | top: -1*@7;
25 | border-width: @2 @2 0 @2;
26 | border-style: solid;
27 | border-radius: @3 @3 0 0;
28 | }
29 | }
--------------------------------------------------------------------------------
/src/styles/components/upload.less:
--------------------------------------------------------------------------------
1 | .vmc-upload {
2 | height: @UploadWidth;
3 | width: @UploadWidth;
4 | border: @UploadBorderWidth @UploadBorderStyle @UploadBorderColor;
5 | border-radius: @UploadBorderRadius;
6 | position: relative;
7 |
8 | input[type=file] {
9 | position: absolute;
10 | top: 0;
11 | left: 0;
12 | opacity: 0;
13 | width: 100%;
14 | height: 100%;
15 | }
16 |
17 | .vmc-upload-button {
18 | display: flex;
19 | justify-content: center;
20 | align-items: center;
21 | height: 100%;
22 | width: 100%;
23 |
24 | i {
25 | color: #cccccc;
26 | display: block;
27 | transform: scale(@UploadWidth / 32);
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/scss/components/rater.scss:
--------------------------------------------------------------------------------
1 | .vmc-rater {
2 | font-size: 0;
3 |
4 | .vmc-rater-outer {
5 | display: inline-block;
6 | position: relative;
7 | color: $RaterColor;
8 | font-size: $RaterStarSize;
9 |
10 | &:not(:first-child) {
11 | margin-left: $RaterGutter / 2;
12 | }
13 |
14 | &:not(:last-child) {
15 | margin-right: $RaterGutter / 2;
16 | }
17 |
18 | &.active {
19 | color: $RaterActiveColor;
20 | }
21 |
22 | .vmc-rater-inner {
23 | position: absolute;
24 | left: 0;
25 | top: 0;
26 | overflow: hidden;
27 |
28 | &.active {
29 | color: $RaterActiveColor;
30 | }
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/folder.scss:
--------------------------------------------------------------------------------
1 | //*-- Folder --*\\
2 | .icono-folder{
3 | width: $U18;
4 | height: $U22;
5 | @extend .icono-stroke;
6 | border-left-width: 0;
7 | border-radius: 0 $U3 $U3 0;
8 | margin: $U8 $U2 $U4 $U14;
9 | &:before{
10 | position: absolute;
11 | width: $U12;
12 | height: $U20;
13 | left: -1*$U12;
14 | bottom: -1*$U2;
15 | border-width: 0 0 $U2 $U2;
16 | border-style: solid;
17 | border-radius: 0 0 0 $U3;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: $U10;
22 | height: $U5;
23 | left: -1*$U12;
24 | top: -1*$U7;
25 | border-width: $U2 $U2 0 $U2;
26 | border-style: solid;
27 | border-radius: $U3 $U3 0 0;
28 | }
29 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/sync.scss:
--------------------------------------------------------------------------------
1 | //*-- Sync --*\\
2 | .icono-sync{
3 | width: $U26;
4 | height: $U26;
5 | border-radius: 50%;
6 | @extend .icono-stroke;
7 | border-right-color: transparent;
8 | border-left-color: transparent;
9 | margin: $U4;
10 | &:before, &:after{
11 | position: absolute;
12 | width: 0;height: 0;
13 | border-width: $U6;
14 | border-style: solid;
15 | border-right-color: transparent;
16 | border-bottom-color: transparent;
17 | border-left-color: transparent;
18 | }
19 | &:before{
20 | transform: rotate(-45deg);
21 | right: -1*$U7;
22 | top:0;
23 | }
24 | &:after{
25 | transform: rotate(135deg);
26 | left: -1*$U7;
27 | bottom: 0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/styles/components/rater.less:
--------------------------------------------------------------------------------
1 | .vmc-rater {
2 | font-size: 0;
3 |
4 | .vmc-rater-outer {
5 | display: inline-block;
6 | position: relative;
7 | color: @RaterColor;
8 | font-size: @RaterStarSize;
9 |
10 | &:not(:first-child) {
11 | margin-left: @RaterGutter / 2;
12 | }
13 |
14 | &:not(:last-child) {
15 | margin-right: @RaterGutter / 2;
16 | }
17 |
18 | &.active {
19 | color: @RaterActiveColor;
20 | }
21 |
22 | .vmc-rater-inner {
23 | position: absolute;
24 | left: 0;
25 | top: 0;
26 | overflow: hidden;
27 |
28 | &.active {
29 | color: @RaterActiveColor;
30 | }
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/calendar.less:
--------------------------------------------------------------------------------
1 | //*-- Calendar --*\\
2 | .icono-calendar{
3 | width: @32;
4 | height: @28;
5 | border-width: @4 @2 @2;
6 | border-style: solid;
7 | border-radius: @4;
8 | margin: @5 @1 @1;
9 | &:before{
10 | position: absolute;
11 | width: @4;
12 | height: @4;
13 | top: @3;
14 | left: @3;
15 | box-shadow: inset 0 0 0 @32, @6 0, @12 0, @18 0,
16 | 0 @6, @6 @6, @12 @6, @18 @6,
17 | 0 @12, @6 @12, @12 @12, @18 @12;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: @4;
22 | height: @8;
23 | box-shadow: inset 0 0 0 @32, @16 0;
24 | border-radius: @4;
25 | top: -1*@8;
26 | left: @4;
27 | }
28 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/paperclip.less:
--------------------------------------------------------------------------------
1 | //*-- Paper clip --*\\
2 | .icono-paperClip{
3 | width: @24;
4 | height: @18;
5 | &:extend(.icono-stroke);
6 | border-left: none;
7 | border-radius: 0 @16 @16 0;
8 | transform: rotate(-45deg);
9 | margin: @5 0 @11 @10;
10 | &:before{
11 | width: @18;
12 | height: @6;
13 | right: @2;
14 | &:extend(.stickCenterV);
15 | &:extend(.icono-stroke);
16 | border-radius: 0 @16 @16 0;
17 | border-left: none;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: @12;
22 | height: @10;
23 | left: -1*@12;
24 | top: -1*@2;
25 | &:extend(.icono-stroke);
26 | border-right: none;
27 | border-radius: @16 0 0 @16;
28 |
29 | }
30 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/sync.less:
--------------------------------------------------------------------------------
1 | //*-- Sync --*\\
2 | .icono-sync{
3 | width: @26;
4 | height: @26;
5 | border-radius: 50%;
6 | &:extend(.icono-stroke);
7 | border-right-color: transparent;
8 | border-left-color: transparent;
9 | margin: @4;
10 | &:before, &:after{
11 | position: absolute;
12 | width: 0;height: 0;
13 | border-width: @6;
14 | border-style: solid;
15 | border-right-color: transparent;
16 | border-bottom-color: transparent;
17 | border-left-color: transparent;
18 | }
19 | &:before{
20 | transform: rotate(-45deg);
21 | right: -1*@7;
22 | top:0;
23 | }
24 | &:after{
25 | transform: rotate(135deg);
26 | left: -1*@7;
27 | bottom: 0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 首页
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/paperclip.scss:
--------------------------------------------------------------------------------
1 | //*-- Paper clip --*\\
2 | .icono-paperClip{
3 | width: $U24;
4 | height: $U18;
5 | @extend .icono-stroke;
6 | border-left: none;
7 | border-radius: 0 $U16 $U16 0;
8 | transform: rotate(-45deg);
9 | margin: $U5 0 $U11 $U10;
10 | &:before{
11 | width: $U18;
12 | height: $U6;
13 | right: $U2;
14 | @extend .stickCenterV;
15 | @extend .icono-stroke;
16 | border-radius: 0 $U16 $U16 0;
17 | border-left: none;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: $U12;
22 | height: $U10;
23 | left: -1*$U12;
24 | top: -1*$U2;
25 | @extend .icono-stroke;
26 | border-right: none;
27 | border-radius: $U16 0 0 $U16;
28 |
29 | }
30 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/bookmark.less:
--------------------------------------------------------------------------------
1 | //*-- Bookmark --*\\
2 | .icono-bookmark{
3 | width: 0;
4 | height: 0;
5 | border: @9 solid;
6 | border-bottom-color: transparent;
7 | box-shadow: 0 -1*@4;
8 | border-radius: @3 @3 0 0;
9 | margin: @10 @8 @6;
10 | }
11 | .icono-bookmarkEmpty{
12 | width: @18;
13 | height: @22;
14 | &:extend(.icono-stroke);
15 | border-bottom: none;
16 | border-radius: @3 @3 @2 @2;
17 | overflow: hidden;
18 | margin: @6 @8;
19 | &:before{
20 | position: absolute;
21 | width: @12;
22 | height: @12;
23 | bottom: 0;
24 | left: 0;
25 | &:extend(.icono-stroke);
26 | border-right: none;
27 | border-bottom: none;
28 | transform: rotate(45deg) translate(35%, 35%);
29 | }
30 | }
--------------------------------------------------------------------------------
/examples/pages/extends/popup-address-picker.vue:
--------------------------------------------------------------------------------
1 |
29 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/bookmark.scss:
--------------------------------------------------------------------------------
1 | //*-- Bookmark --*\\
2 | .icono-bookmark{
3 | width: 0;
4 | height: 0;
5 | border: $U9 solid;
6 | border-bottom-color: transparent;
7 | box-shadow: 0 -1*$U4;
8 | border-radius: $U3 $U3 0 0;
9 | margin: $U10 $U8 $U6;
10 | }
11 | .icono-bookmarkEmpty{
12 | width: $U18;
13 | height: $U22;
14 | @extend .icono-stroke;
15 | border-bottom: none;
16 | border-radius: $U3 $U3 $U2 $U2;
17 | overflow: hidden;
18 | margin: $U6 $U8;
19 | &:before{
20 | position: absolute;
21 | width: $U12;
22 | height: $U12;
23 | bottom: 0;
24 | left: 0;
25 | @extend .icono-stroke;
26 | border-right: none;
27 | border-bottom: none;
28 | transform: rotate(45deg) translate(35%, 35%);
29 | }
30 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/smile.less:
--------------------------------------------------------------------------------
1 | //*-- Smile --*\\
2 | .icono-smile{
3 | border-radius: 50%;
4 | &:extend(.icono-stroke);
5 | height: @30;
6 | width: @30;
7 | margin: @2;
8 | &:before{
9 | border-radius: 50%;
10 | box-shadow: @8 0 0 0, 0 0 0 @2 inset;
11 | height: @4;
12 | width: @4;
13 | left: @7;
14 | position: absolute;
15 | top: 27%;
16 | }
17 | &:after{
18 | border-radius: 50%;
19 | transform: translateX(-50%);
20 | &:extend(.icono-stroke);
21 | border-top-color: transparent;
22 | border-left-color: transparent;
23 | border-right-color: transparent;
24 | height: @16;
25 | left:50%;
26 | position: absolute;
27 | top: 6%;
28 | width: @16;
29 | }
30 | }
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 | 首页
--------------------------------------------------------------------------------
/src/scss/icono/icons/smile.scss:
--------------------------------------------------------------------------------
1 | //*-- Smile --*\\
2 | .icono-smile{
3 | border-radius: 50%;
4 | @extend .icono-stroke;
5 | height: $U30;
6 | width: $U30;
7 | margin: $U2;
8 | &:before{
9 | border-radius: 50%;
10 | box-shadow: $U8 0 0 0, 0 0 0 $U2 inset;
11 | height: $U4;
12 | width: $U4;
13 | left: $U7;
14 | position: absolute;
15 | top: 27%;
16 | }
17 | &:after{
18 | border-radius: 50%;
19 | transform: translateX(-50%);
20 | @extend .icono-stroke;
21 | border-top-color: transparent;
22 | border-left-color: transparent;
23 | border-right-color: transparent;
24 | height: $U16;
25 | left:50%;
26 | position: absolute;
27 | top: 6%;
28 | width: $U16;
29 | }
30 | }
--------------------------------------------------------------------------------
/src/scss/components/prompt.scss:
--------------------------------------------------------------------------------
1 | .vmc-prompt {
2 | .prompt-input{
3 | padding-top: $PromptInputPadding;
4 |
5 | .error-message {
6 | color: $PromptMessageTextColor;
7 | font-size: $PromptMessageTextSize;
8 | margin-top: $PromptMessageInputSpace;
9 | }
10 |
11 | label {
12 | display: block;
13 | }
14 |
15 | input {
16 | box-sizing: border-box;
17 | border: none;
18 | padding: $PromptInputPadding;
19 | font-size: $PromptInputTextSize;
20 | height: $PromptInputHeight;
21 | width: 100%;
22 | appearance: none;
23 | outline: none;
24 | }
25 | .invalid {
26 | border-color: $PromptInputInvalidColor;
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/src/styles/components/prompt.less:
--------------------------------------------------------------------------------
1 | .vmc-prompt {
2 | .prompt-input{
3 | padding-top: @PromptInputPadding;
4 |
5 | .error-message {
6 | color: @PromptMessageTextColor;
7 | font-size: @PromptMessageTextSize;
8 | margin-top: @PromptMessageInputSpace;
9 | }
10 |
11 | label {
12 | display: block;
13 | }
14 |
15 | input {
16 | box-sizing: border-box;
17 | border: none;
18 | padding: @PromptInputPadding;
19 | font-size: @PromptInputTextSize;
20 | height: @PromptInputHeight;
21 | width: 100%;
22 | appearance: none;
23 | outline: none;
24 | }
25 | .invalid {
26 | border-color: @PromptInputInvalidColor;
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/calendar.scss:
--------------------------------------------------------------------------------
1 | //*-- Calendar --*\\
2 | .icono-calendar{
3 | width: $U32;
4 | height: $U28;
5 | border-width: $U4 $U2 $U2;
6 | border-style: solid;
7 | border-radius: $U4;
8 | margin: $U5 $U1 $U1;
9 | &:before{
10 | position: absolute;
11 | width: $U4;
12 | height: $U4;
13 | top: $U3;
14 | left: $U3;
15 | box-shadow: inset 0 0 0 $U32, $U6 0, $U12 0, $U18 0,
16 | 0 $U6, $U6 $U6, $U12 $U6, $U18 $U6,
17 | 0 $U12, $U6 $U12, $U12 $U12, $U18 $U12;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: $U4;
22 | height: $U8;
23 | box-shadow: inset 0 0 0 $U32, $U16 0;
24 | border-radius: $U4;
25 | top: -1*$U8;
26 | left: $U4;
27 | }
28 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/arrow.scss:
--------------------------------------------------------------------------------
1 | //* Arrows *\\
2 | .icono-rightArrow {
3 | width: $U16;
4 | height: $U4;
5 | margin: $U15 $U9;
6 | box-shadow: inset 0 0 0 $U2;
7 | transform: translateX(-1*$U3);
8 | &:before {
9 | @extend .stickCenterV;
10 | border-style: solid;
11 | border-width: $U8 0 $U8 $U8;
12 | border-color: transparent;
13 | border-left-color: inherit;
14 | left: 100%;
15 | right: auto;
16 | }
17 | }
18 |
19 | .icono-leftArrow {
20 | @extend .icono-rightArrow;
21 | transform: translateX($U3) rotate(180deg);
22 | }
23 |
24 | .icono-upArrow {
25 | @extend .icono-rightArrow;
26 | transform: translateY($U3) rotate(-90deg);
27 | }
28 |
29 | .icono-downArrow {
30 | @extend .icono-rightArrow;
31 | transform: translateY(-1*$U3) rotate(90deg);
32 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/arrow.less:
--------------------------------------------------------------------------------
1 | //* Arrows *\\
2 | .icono-rightArrow {
3 | width: @16;
4 | height: @4;
5 | margin: @15 @9;
6 | box-shadow: inset 0 0 0 @2;
7 | transform: translateX(-@3);
8 | &:before {
9 | &:extend(.stickCenterV);
10 | border-style: solid;
11 | border-width: @8 0 @8 @8;
12 | border-color: transparent;
13 | border-left-color: inherit;
14 | left: 100%;
15 | right: auto;
16 | }
17 | }
18 |
19 | .icono-leftArrow {
20 | &:extend(.icono-rightArrow all);
21 | transform: translateX(@3) rotate(180deg);
22 | }
23 |
24 | .icono-upArrow {
25 | &:extend(.icono-rightArrow all);
26 | transform: translateY(@3) rotate(-90deg);
27 | }
28 |
29 | .icono-downArrow {
30 | &:extend(.icono-rightArrow all);
31 | transform: translateY(-@3) rotate(90deg);
32 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/iphone.less:
--------------------------------------------------------------------------------
1 | //*-- iPhone --*\\
2 | .icono-iphone{
3 | width: @19;
4 | height: @31;
5 | &:extend(.icono-stroke);
6 | border-radius: @3;
7 | border-width: @5 @1;
8 | border-color: transparent;
9 | box-shadow: 0 0 0 @1, 0 0 0 @1 inset;
10 | margin: @2 @8 @1 @7;
11 | &:before, &:after{
12 | &:extend(.stickCenterH);
13 | box-shadow: inset 0 0 0 @32;
14 | }
15 | &:before{
16 | width: @3;
17 | height: @1;
18 | top: -1*@3;
19 | }
20 | &:after{
21 | width: @3;
22 | height: @3;
23 | bottom: -1*@4;
24 | border-radius: 50%;
25 | }
26 | }
27 | .icono-iphoneBold{
28 | width: @20;
29 | height: @32;
30 | margin: @1 @7;
31 | border-radius: @4;
32 | &:extend(.icono-stroke);
33 | border-width: @5 @2;
34 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/book.less:
--------------------------------------------------------------------------------
1 | //*-- Book --*\\
2 | .icono-book{
3 | width: @26;
4 | height: @22;
5 | border-radius: 0 0 0 @6;
6 | &:extend(.icono-stroke);
7 | border-top: none;
8 | margin: @10 @4 @2;
9 | &:before{
10 | position: absolute;
11 | width: @24;
12 | height: @7;
13 | box-sizing: border-box;
14 | &:extend(.icono-stroke);
15 | border-top: none;
16 | border-right: none;
17 | left: -1*@2;
18 | top: -1*@5;
19 | border-radius: 0 0 0 @6;
20 | }
21 | &:after{
22 | position: absolute;
23 | width: @24;
24 | height: @8;
25 | box-sizing: border-box;
26 | left: -1*@2;
27 | top: -1*@8;
28 | &:extend(.icono-stroke);
29 | border-bottom: none;
30 | border-radius: @6 0 0 0;
31 | }
32 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/iphone.scss:
--------------------------------------------------------------------------------
1 | //*-- iPhone --*\\
2 | .icono-iphone{
3 | width: $U19;
4 | height: $U31;
5 | @extend .icono-stroke;
6 | border-radius: $U3;
7 | border-width: $U5 $U1;
8 | border-color: transparent;
9 | box-shadow: 0 0 0 $U1, 0 0 0 $U1 inset;
10 | margin: $U2 $U8 $U1 $U7;
11 | &:before, &:after{
12 | @extend .stickCenterH;
13 | box-shadow: inset 0 0 0 $U32;
14 | }
15 | &:before{
16 | width: $U3;
17 | height: $U1;
18 | top: -1*$U3;
19 | }
20 | &:after{
21 | width: $U3;
22 | height: $U3;
23 | bottom: -1*$U4;
24 | border-radius: 50%;
25 | }
26 | }
27 | .icono-iphoneBold{
28 | width: $U20;
29 | height: $U32;
30 | margin: $U1 $U7;
31 | border-radius: $U4;
32 | @extend .icono-stroke;
33 | border-width: $U5 $U2;
34 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/youtube.less:
--------------------------------------------------------------------------------
1 | //*-- Youtube --*\\
2 | .icono-youtube{
3 | &, &:before{
4 | border-right-color: transparent;
5 | border-left-color: transparent;
6 | border-radius: @10;
7 | width: @32;
8 | height: @32 / 1.4357;
9 | margin: @6 @1;
10 | }
11 | &:before{
12 | position: absolute;
13 | top: 0;
14 | right: 0;
15 | bottom: 0;
16 | left: 0;
17 | border-top-color: transparent;
18 | border-bottom-color: transparent;
19 | border-radius: @6 ~'/' @3;
20 | }
21 | &:after{
22 | width: 0;
23 | height: 0;
24 | &:extend(.stickCenter);
25 | border-width: @4 0 @4 @8;
26 | border-style: solid;
27 | border-top-color: transparent;
28 | border-bottom-color: transparent;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/components/row/row.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
31 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/book.scss:
--------------------------------------------------------------------------------
1 | //*-- Book --*\\
2 | .icono-book{
3 | width: $U26;
4 | height: $U22;
5 | border-radius: 0 0 0 $U6;
6 | @extend .icono-stroke;
7 | border-top: none;
8 | margin: $U10 $U4 $U2;
9 | &:before{
10 | position: absolute;
11 | width: $U24;
12 | height: $U7;
13 | box-sizing: border-box;
14 | @extend .icono-stroke;
15 | border-top: none;
16 | border-right: none;
17 | left: -1*$U2;
18 | top: -1*$U5;
19 | border-radius: 0 0 0 $U6;
20 | }
21 | &:after{
22 | position: absolute;
23 | width: $U24;
24 | height: $U8;
25 | box-sizing: border-box;
26 | left: -1*$U2;
27 | top: -1*$U8;
28 | @extend .icono-stroke;
29 | border-bottom: none;
30 | border-radius: $U6 0 0 0;
31 | }
32 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/youtube.scss:
--------------------------------------------------------------------------------
1 | //*-- Youtube --*\\
2 | .icono-youtube{
3 | border-right-color: transparent;
4 | border-left-color: transparent;
5 | border-radius: $U10;
6 | width: $U32;
7 | height: $U32 / 1.4357;
8 | margin: $U6 $U1;
9 | &, &:before{
10 | @extend .icono-stroke;
11 | }
12 | &:before{
13 | position: absolute;
14 | top: 0;
15 | right: 0;
16 | bottom: 0;
17 | left: 0;
18 | border-top-color: transparent;
19 | border-bottom-color: transparent;
20 | border-radius: $U6 #{'/'} $U3;
21 | }
22 | &:after{
23 | width: 0;
24 | height: 0;
25 | @extend .stickCenter;
26 | border-width: $U4 0 $U4 $U8;
27 | border-style: solid;
28 | border-top-color: transparent;
29 | border-bottom-color: transparent;
30 | }
31 | }
--------------------------------------------------------------------------------
/src/components/row/README.md:
--------------------------------------------------------------------------------
1 | # Row
2 |
3 | ## Overview
4 |
5 | 带标题的内容行。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```html
12 |
13 |
14 |
15 | ```
16 |
17 | ## Slots
18 |
19 | | Name | Description | Default |
20 | | ----- | ----- | ----- |
21 | | default | 在行内显示的内容 | undefined |
22 |
23 | ## Props
24 |
25 | | Property | Type | Description | Default |
26 | | ----- | ----- | ----- | ----- |
27 | | title | String | 标题文本内容 | "" |
28 | | width | Number, String | 标题栏宽度 | 由LESS变量定义 |
29 | | align | String | 对齐方式,如果为left则为左对齐 | 两端对齐 |
30 |
31 | ## LESS
32 |
33 | | Name | Description | Default |
34 | | ----- | ----- | ----- |
35 | | @RowHorizontalPadding | 水平内边距 | @HorizontalPadding |
36 | | @RowBackColor | 背景色 | \#fff |
37 | | @RowMinHeight | 最小高度 | 45px |
38 | | @RowTextSize | 文字大小 | 15px |
39 | | @RowTitleWidth | 标题栏最小宽度 | 80px |
--------------------------------------------------------------------------------
/src/styles/icono/variables.less:
--------------------------------------------------------------------------------
1 | @maincolor: #ddd;
2 | @size: 32px;
3 | @stroke: @2 solid;
4 |
5 | @1: ceil(@size/32);
6 | @2: ceil(@size/16);
7 | @3: ceil(@size/12);
8 | @4: ceil(@size/8);
9 | @5: ceil(@size/7);
10 | @6: ceil(@size/5.4);
11 | @7: ceil(@size/4.9);
12 | @8: ceil(@size/4);
13 | @9: ceil(@size/3.7);
14 | @10: ceil(@size/3.2);
15 | @11: ceil(@size/3.1);
16 | @12: ceil(@size/2.7);
17 | @13: ceil(@size/2.5);
18 | @14: ceil(@size/2.3);
19 | @15: ceil(@size/2.2);
20 | @16: ceil(@size/2);
21 | @17: ceil(@size/1.9);
22 | @18: ceil(@size/1.8);
23 | @19: ceil(@size/1.7);
24 | @20: ceil(@size/1.6);
25 | @21: ceil(@size/1.55);
26 | @22: ceil(@size/1.5);
27 | @23: ceil(@size/1.4);
28 | @24: ceil(@size/1.34);
29 | @25: ceil(@size/1.3);
30 | @26: ceil(@size/1.25);
31 | @27: ceil(@size/1.2);
32 | @28: ceil(@size/1.15);
33 | @29: ceil(@size/1.12);
34 | @30: ceil(@size/1.1);
35 | @31: ceil(@size/1.05);
36 | @32: @size;
--------------------------------------------------------------------------------
/src/components/textarea/README.md:
--------------------------------------------------------------------------------
1 | # Textarea
2 |
3 | ## Overview
4 |
5 | 增强型文本框,带限制输入字数功能,并实时显示已输入字数。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```html
12 |
13 | ```
14 |
15 | ## Props
16 |
17 | | Property | Type | Description | Default |
18 | | ----- | ----- | ----- | ----- |
19 | | value | String | 文本框的值 | "" |
20 | | placeholder | String | 占位字符串 | "" |
21 | | min | Number, String | 最少输入字符数 | 0 |
22 | | max | Number, String | 最多输入字符数 | 99999 |
23 | | rows | Number, String | 文本框显示的行数 | 5 |
24 | | border | Boolean | 是否显示边框 | true |
25 |
26 | ## LESS
27 |
28 | | Name | Description | Default |
29 | | ----- | ----- | ----- |
30 | | @TextAreaPadding | 文本框内边距 | @InputPadding |
31 | | @TextAreaTextSize | 文本框文字大小 | @InputTextSize |
32 | | @TextAreaTipTextSize | 文本框提示区文字大小 | @InputMessageTextSize |
33 | | @TextAreaTipTextColor | 文本框提示区文字颜色 | \#e0e0e0 |
--------------------------------------------------------------------------------
/src/styles/icono/generals.less:
--------------------------------------------------------------------------------
1 | .icono-stroke{
2 | border: @stroke;
3 | }
4 |
5 | .stickCenterV{
6 | .stickCenterV();
7 | }
8 |
9 | .stickCenterH{
10 | .stickCenterH();
11 | }
12 |
13 | .stickCenter{
14 | position: absolute;
15 | left: 50%;
16 | top: 50%;
17 | transform: translate(-50%, -50%);
18 | }
19 |
20 | .spin{
21 | animation: loading-spinner 2s infinite linear;
22 | &.step{
23 | -webkit-animation: loading-spinner 0.5s steps(8, end) infinite; /* Safari 4+ */
24 | -moz-animation: loading-spinner 0.5s steps(8, end) infinite; /* Fx 5+ */
25 | -o-animation: loading-spinner 0.5s steps(8, end) infinite; /* Opera 12+ */
26 | animation: loading-spinner 0.5s steps(8, end) infinite; /* IE 10+, Fx 29+ */
27 | }
28 | }
29 |
30 | @keyframes loading-spinner {
31 | 0% { transform: rotate(0deg); }
32 | 100% { transform: rotate(360deg); }
33 | }
34 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/check.less:
--------------------------------------------------------------------------------
1 | //*-- Check --*\\
2 | [class*="icono-check"]{
3 | width: @28;
4 | height: @28;
5 | margin: @3 0 @3 @6;
6 | transform: rotate(-45deg);
7 | &:before, &:after{
8 | box-shadow: inset 0 0 0 @32;
9 | }
10 | &:before{
11 | &:extend([class*="icono-plus"]:before);
12 | }
13 | &:after{
14 | position: absolute;
15 | height: @12;
16 | width: @2;
17 | left: @4;
18 | bottom: @14;
19 | }
20 | &[class*="Circle"]{
21 | &:extend(.icono-stroke);
22 | border-radius: 50%;
23 | width: @30;
24 | height: @30;
25 | margin: @2;
26 | &:before{
27 | width: @14;
28 | top: @15;
29 | left: @14;
30 | }
31 | &:after{
32 | height: @8;
33 | left: @7;
34 | bottom: @10;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/styles/icono/icons/heart.less:
--------------------------------------------------------------------------------
1 | //*-- Heart --*\\
2 | .icono-heart{
3 | width: @20;
4 | height: @20;
5 | &:extend(.icono-stroke);
6 | border-top-color: transparent;
7 | border-left-color: transparent;
8 | transform: rotate(45deg);
9 | border-radius: @4 0;
10 | margin: @9 @7 @5;
11 | &:before, &:after{
12 | position: absolute;
13 | &:extend(.icono-stroke);
14 | }
15 | &:before{
16 | width: ceil(@20/2.5);
17 | height: ceil(@20*0.69);
18 | left: -1*ceil(@20/2.5)-@2;
19 | bottom: -1*@2;
20 | border-radius: @20 0 0 @20;
21 | border-right-color: transparent;
22 | }
23 | &:after{
24 | width: ceil(@20*0.69);
25 | height: ceil(@20/2.5);
26 | right: -1*@2;
27 | top: -1*ceil(@20/2.5)-@2;
28 | border-radius: @20 @20 0 0;
29 | border-bottom-color: transparent;
30 | }
31 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/heart.scss:
--------------------------------------------------------------------------------
1 | //*-- Heart --*\\
2 | .icono-heart{
3 | width: $U20;
4 | height: $U20;
5 | @extend .icono-stroke;
6 | border-top-color: transparent;
7 | border-left-color: transparent;
8 | transform: rotate(45deg);
9 | border-radius: $U4 0;
10 | margin: $U9 $U7 $U5;
11 | &:before, &:after{
12 | position: absolute;
13 | @extend .icono-stroke;
14 | }
15 | &:before{
16 | width: ceil($U20/2.5);
17 | height: ceil($U20*0.69);
18 | left: -1*ceil($U20/2.5)-$U2;
19 | bottom: -1*$U2;
20 | border-radius: $U20 0 0 $U20;
21 | border-right-color: transparent;
22 | }
23 | &:after{
24 | width: ceil($U20*0.69);
25 | height: ceil($U20/2.5);
26 | right: -1*$U2;
27 | top: -1*ceil($U20/2.5)-$U2;
28 | border-radius: $U20 $U20 0 0;
29 | border-bottom-color: transparent;
30 | }
31 | }
--------------------------------------------------------------------------------
/src/styles/icono/mixins.less:
--------------------------------------------------------------------------------
1 | .stickCenter(){
2 | position: absolute;
3 | left: 50%;
4 | top: 50%;
5 | transform: translate(-50%, -50%);
6 | }
7 | .stickCenterH(){
8 | position: absolute;
9 | left: 50%;
10 | transform: translateX(-50%);
11 | }
12 | .stickCenterV(){
13 | position: absolute;
14 | top: 50%;
15 | transform: translateY(-50%);
16 | }
17 | .stickCenter(@top, @right, @bottom, @left){
18 | position: absolute;
19 | top: @top;
20 | right: @right;
21 | bottom: @bottom;
22 | left: @left;
23 | margin: auto;
24 | }
25 | .square(@length){
26 | width: @length; height: @length;
27 | }
28 | .goldenRectL(@width){
29 | width: @width;
30 | height: ceil(@width/1.61803398875);
31 | }
32 | .goldenRectP(@width){
33 | width: @width;
34 | height: ceil(@width*1.61803398875);
35 | }
36 | .wDiagonal(@length){
37 | width: ceil(sqrt(2*@length*@length));
38 | }
39 | .hDiagonal(@length){
40 | height: ceil(sqrt(2*@length*@length));
41 | }
--------------------------------------------------------------------------------
/src/scss/icono/functions.scss:
--------------------------------------------------------------------------------
1 | //Math functions given from https://github.com/terkel/mathsass
2 | @function sqrt ($x) {
3 | @if $x < 0 {
4 | @warn "Argument for `sqrt()` must be a positive number.";
5 | @return null;
6 | }
7 | $ret: 1;
8 | @for $i from 1 through 24 {
9 | $ret: $ret - (pow($ret, 2) - $x) / (2 * $ret);
10 | }
11 | @return $ret;
12 | }
13 | @function pow ($base, $exp) {
14 | @if $exp == floor($exp) {
15 | $r: 1;
16 | $s: 0;
17 | @if $exp < 0 {
18 | $exp: $exp * -1;
19 | $s: 1;
20 | }
21 | @while $exp > 0 {
22 | @if $exp % 2 == 1 {
23 | $r: $r * $base;
24 | }
25 | $exp: floor($exp * 0.5);
26 | $base: $base * $base;
27 | }
28 | @return if($s != 0, 1 / $r, $r);
29 | } @else {
30 | @return exp(log($base) * $exp);
31 | }
32 | }
--------------------------------------------------------------------------------
/src/scss/icono/icons/check.scss:
--------------------------------------------------------------------------------
1 | //*-- Check --*\\
2 | [class*="icono-check"]{
3 | width: $U28;
4 | height: $U28;
5 | margin: $U3 0 $U3 $U6;
6 | transform: rotate(-45deg);
7 | &:before, &:after{
8 | box-shadow: inset 0 0 0 $U32;
9 | }
10 | &:before{
11 | @extend [class*="icono-plus"]:before;
12 | }
13 | &:after{
14 | position: absolute;
15 | height: $U12;
16 | width: $U2;
17 | left: $U4;
18 | bottom: $U14;
19 | }
20 | &[class*="Circle"]{
21 | @extend .icono-stroke;
22 | border-radius: 50%;
23 | width: $U30;
24 | height: $U30;
25 | margin: $U2;
26 | &:before{
27 | width: $U14;
28 | top: $U15;
29 | left: $U14;
30 | }
31 | &:after{
32 | height: $U8;
33 | left: $U7;
34 | bottom: $U10;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/utils/env.js:
--------------------------------------------------------------------------------
1 | const ua = window.navigator.userAgent;
2 | const env = {};
3 | Object.defineProperties(env, {
4 | isAndroid: {
5 | get() {
6 | return /Android/i.test(ua);
7 | }
8 | },
9 | isIphone: {
10 | get() {
11 | return /iphone/i.test(ua);
12 | }
13 | },
14 | isIPad: {
15 | get() {
16 | return /ipad/i.test(ua)
17 | }
18 | },
19 | isIOS: {
20 | get() {
21 | return /iphone|ipad|ipod/i.test(ua);
22 | }
23 | },
24 | isWechat: {
25 | get() {
26 | return /MicroMessenger/i.test(ua);
27 | }
28 | },
29 | isAlipay: {
30 | get() {
31 | return /Alipay/i.test(ua);
32 | }
33 | },
34 | isUCBrowser: {
35 | get() {
36 | return /UCWEB|UCBrowser/i.test(ua);
37 | }
38 | }
39 | });
40 |
41 | export default env;
--------------------------------------------------------------------------------
/src/components/cell/README.md:
--------------------------------------------------------------------------------
1 | # Cell
2 |
3 | ## Overview
4 |
5 | 带箭头指示的内容行。
6 |
7 | 是否全局组件:否。
8 |
9 | ## Usage
10 |
11 | ```html
12 | dialog |
13 | ```
14 |
15 | ## Slots
16 |
17 | | Name | Description | Default |
18 | | ----- | ----- | ----- |
19 | | default | 显示的文本内容 | {{title}} |
20 | | arrow | 箭头图标 | <i class="icono-caretRight"></i> |
21 |
22 | ## Props
23 |
24 | | Property | Type | Description | Default |
25 | | ----- | ----- | ----- | ----- |
26 | | title | String | 显示的文本内容 | "" |
27 | | arrow | Boolean | 是否显示箭头 | true |
28 |
29 | ## LESS
30 |
31 | | Name | Description | Default |
32 | | ----- | ----- | ----- |
33 | | @CellBackColor | 背景颜色 | \#fff |
34 | | @CellMinHeight | 最小高度 | 45px |
35 | | @CellHorizontalPadding | 水平内边距 | @HorizontalPadding |
36 | | @CellIconTextSpace | 左图标与文字之间的距离 | 15px |
37 | | @CellArrowColor | 右箭头的颜色 | \#cecece |
38 | | @CellArrowScale | 右箭头的缩放比例 | 0.8 |
39 | | @CellTextSize | 文字大小 | 15px |
--------------------------------------------------------------------------------
/src/components/popup-date-picker/popup-date-picker.vue:
--------------------------------------------------------------------------------
1 |
32 |
--------------------------------------------------------------------------------
/src/components/confirm/README.md:
--------------------------------------------------------------------------------
1 | # Confirm
2 |
3 | ## Overview
4 |
5 | 弹出确认框,显示指定内容。
6 |
7 | 是否全局组件:是。
8 |
9 | ## Usage
10 |
11 | ```javascript
12 | export default {
13 | ready() {
14 | this.$Confirm('confirm提示框', () => {
15 | this.$Alert('你点击了确定按钮');
16 | }, () => {
17 | this.$Alert('你点击了取消按钮');
18 | });
19 | }
20 | }
21 | ```
22 |
23 | ## Arguments
24 |
25 | | Name | Type | Description | Default |
26 | | ----- | ----- | ----- | ----- |
27 | | title | String | 弹框提示内容(可省) | "" |
28 | | confirm | Function | 点击确定时的回调函数(可省) | null |
29 | | cancel | Function | 点击取消时的回调函数(可省) | null |
30 | | options | Object | 其它配置参数 | {title: "", content: "", confirm: null, cancel: null, btn1: "取消", btn2: "确定"} |
31 |
32 | ## LESS
33 |
34 | | Name | Description | Default |
35 | | ----- | ----- | ----- |
36 | | @ConfirmTitleHeight | 标题栏最小高度 | @AlertTitleHeight |
37 | | @ConfirmTitlePadding | 标题底边距 | @AlertTitlePadding |
--------------------------------------------------------------------------------
/src/styles/icono/icons/macbook.less:
--------------------------------------------------------------------------------
1 | //*-- Macbook --*\\
2 | .icono-macbook{
3 | width: @32;
4 | height: @2;
5 | box-shadow: inset 0 0 0 @32;
6 | border-radius: 0 0 @32 @32 ~'/' @3;
7 | margin: @25 @1 @7 @1;
8 | &:before{
9 | width: @20;
10 | height: @14;
11 | &:extend(.icono-stroke);
12 | &:extend(.stickCenterH);
13 | bottom: @2;
14 | border-width: @3 @1 @1 @1;
15 | border-color: transparent;
16 | border-radius: @3 @3 0 0;
17 | box-shadow: 0 0 0 @1, 0 0 0 @1 inset;
18 | }
19 | }
20 | .icono-macbookBold{
21 | width: @32;
22 | height: @2;
23 | box-shadow: inset 0 0 0 @32;
24 | margin: @25 @1 @7 @1;
25 | &:before{
26 | width: @20;
27 | height: @14;
28 | &:extend(.stickCenterH);
29 | bottom: @2;
30 | &:extend(.icono-stroke);
31 | border-width: @3 @2 @1;
32 | border-radius: @3 @3 0 0;
33 | }
34 | }
--------------------------------------------------------------------------------
/examples/pages/components/textarea.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
文本框
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
26 |
27 |
38 |
--------------------------------------------------------------------------------
/src/scss/icono/variables.scss:
--------------------------------------------------------------------------------
1 | $maincolor: #ddd;
2 | $size: 32px;//pixel for this version
3 |
4 |
5 | $U1: ceil($size/32);
6 | $U2: ceil($size/16);
7 | $U3: ceil($size/12);
8 | $U4: ceil($size/8);
9 | $U5: ceil($size/7);
10 | $U6: ceil($size/5.4);
11 | $U7: ceil($size/4.9);
12 | $U8: ceil($size/4);
13 | $U9: ceil($size/3.7);
14 | $U10: ceil($size/3.2);
15 | $U11: ceil($size/3.1);
16 | $U12: ceil($size/2.7);
17 | $U13: ceil($size/2.5);
18 | $U14: ceil($size/2.3);
19 | $U15: ceil($size/2.2);
20 | $U16: ceil($size/2);
21 | $U17: ceil($size/1.9);
22 | $U18: ceil($size/1.8);
23 | $U19: ceil($size/1.7);
24 | $U20: ceil($size/1.6);
25 | $U21: ceil($size/1.55);
26 | $U22: ceil($size/1.5);
27 | $U23: ceil($size/1.4);
28 | $U24: ceil($size/1.34);
29 | $U25: ceil($size/1.3);
30 | $U26: ceil($size/1.25);
31 | $U27: ceil($size/1.2);
32 | $U28: ceil($size/1.15);
33 | $U29: ceil($size/1.12);
34 | $U30: ceil($size/1.1);
35 | $U31: ceil($size/1.05);
36 | $U32: $size;
37 |
38 | $stroke: $U2 solid;
--------------------------------------------------------------------------------
/src/components/spinner/spinner/snake.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/macbook.scss:
--------------------------------------------------------------------------------
1 | //*-- Macbook --*\\
2 | .icono-macbook{
3 | width: $U32;
4 | height: $U2;
5 | box-shadow: inset 0 0 0 $U32;
6 | border-radius: 0 0 $U32 $U32 #{'/'} $U3;
7 | margin: $U25 $U1 $U7 $U1;
8 | &:before{
9 | width: $U20;
10 | height: $U14;
11 | @extend .icono-stroke;
12 | @extend .stickCenterH;
13 | bottom: $U2;
14 | border-width: $U3 $U1 $U1 $U1;
15 | border-color: transparent;
16 | border-radius: $U3 $U3 0 0;
17 | box-shadow: 0 0 0 $U1, 0 0 0 $U1 inset;
18 | }
19 | }
20 | .icono-macbookBold{
21 | width: $U32;
22 | height: $U2;
23 | box-shadow: inset 0 0 0 $U32;
24 | margin: $U25 $U1 $U7 $U1;
25 | &:before{
26 | width: $U20;
27 | height: $U14;
28 | @extend .stickCenterH;
29 | bottom: $U2;
30 | @extend .icono-stroke;
31 | border-width: $U3 $U2 $U1;
32 | border-radius: $U3 $U3 0 0;
33 | }
34 | }
--------------------------------------------------------------------------------
/src/scss/components/tabbar.scss:
--------------------------------------------------------------------------------
1 | .vmc-tab-bar {
2 | position: absolute;
3 | bottom: 0;
4 | width: 100%;
5 | z-index: 50;
6 | height: $TabbarHeight;
7 |
8 | .tab-bar {
9 | display: flex;
10 | width: 100%;
11 | height: 100%;
12 | color: $TabbarTextColor;
13 | background-color: $TabbarBackColor;
14 | font-size: $TabbarTextSize;
15 | }
16 |
17 | .tab-item {
18 | flex: 1;
19 | width: 0%;
20 | display: flex;
21 | flex-direction: column;
22 | justify-content: center;
23 | align-items: center;
24 |
25 | &.active {
26 | color: $TabbarTextActiveColor;
27 | }
28 |
29 | * {
30 | display: block;
31 | }
32 | }
33 |
34 | &-up-enter-active, &-up-leave-active {
35 | transition: transform .2s linear;
36 | }
37 |
38 | &-up-enter, &-up-leave-active {
39 | transform: translate3d(0, 100%, 0);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/styles/components/tabbar.less:
--------------------------------------------------------------------------------
1 | .vmc-tab-bar {
2 | position: absolute;
3 | bottom: 0;
4 | width: 100%;
5 | z-index: 50;
6 | height: @TabbarHeight;
7 |
8 | .tab-bar {
9 | display: flex;
10 | width: 100%;
11 | height: 100%;
12 | color: @TabbarTextColor;
13 | background-color: @TabbarBackColor;
14 | font-size: @TabbarTextSize;
15 | }
16 |
17 | .tab-item {
18 | flex: 1;
19 | width: 0%;
20 | display: flex;
21 | flex-direction: column;
22 | justify-content: center;
23 | align-items: center;
24 |
25 | &.active {
26 | color: @TabbarTextActiveColor;
27 | }
28 |
29 | * {
30 | display: block;
31 | }
32 | }
33 |
34 | &-up-enter-active, &-up-leave-active {
35 | transition: transform .2s linear;
36 | }
37 |
38 | &-up-enter, &-up-leave-active {
39 | transform: translate3d(0, 100%, 0);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/exclamation.less:
--------------------------------------------------------------------------------
1 | //*-- Exclamation --*\\
2 | [class*="icono-exclamation"]{
3 | overflow: visible;
4 | width: @30;
5 | border-bottom: @2 solid;
6 | border-radius: 0 0 @4 @4;
7 | margin: @26 @2 @6;
8 | &:before{
9 | position: absolute;
10 | width: @26;
11 | height: @26;
12 | left: @1;
13 | top: -1*@14;
14 | border-width: @2 0 0 @2;
15 | border-style: solid;
16 | border-radius: @4 0;
17 | transform: rotate(45deg) skew(12deg, 12deg);
18 | }
19 | &:after{
20 | width: @4;
21 | height: @3;
22 | top: -1*@14;
23 | &:extend(.stickCenterH);
24 | box-shadow: inset 0 0 0 @32, 0 @3, 0 @8;
25 | }
26 | &[class*="Circle"]{
27 | margin: @2;
28 | &:before{
29 | display: none;
30 | }
31 | &:after{
32 | box-shadow: inset 0 0 0 @32, 0 @3, 0 @5, 0 @10;
33 | top: @6;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/examples/pages/components/shake.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
摇一摇
4 |
5 |
6 | 开始监听摇一摇操作
7 |
8 | 停止监听摇一摇操作
9 |
10 |
11 |
12 |
13 |
33 |
34 |
41 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/exclamation.scss:
--------------------------------------------------------------------------------
1 | //*-- Exclamation --*\\
2 | [class*="icono-exclamation"]{
3 | overflow: visible;
4 | width: $U30;
5 | border-bottom: $U2 solid;
6 | border-radius: 0 0 $U4 $U4;
7 | margin: $U26 $U2 $U6;
8 | &:before{
9 | position: absolute;
10 | width: $U26;
11 | height: $U26;
12 | left: $U1;
13 | top: -1*$U14;
14 | border-width: $U2 0 0 $U2;
15 | border-style: solid;
16 | border-radius: $U4 0;
17 | transform: rotate(45deg) skew(12deg, 12deg);
18 | }
19 | &:after{
20 | width: $U4;
21 | height: $U3;
22 | top: -1*$U14;
23 | @extend .stickCenterH;
24 | box-shadow: inset 0 0 0 $U32, 0 $U3, 0 $U8;
25 | }
26 | &[class*="Circle"]{
27 | height: $U30;
28 | margin: $U2;
29 | &:before{
30 | display: none;
31 | }
32 | &:after{
33 | box-shadow: inset 0 0 0 $U32, 0 $U3, 0 $U5, 0 $U10;
34 | top: $U6;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/styles/icono/icono.less:
--------------------------------------------------------------------------------
1 | // Welcome to Iconode
2 | // You can use this file in your project instead of .css file, and build it with other your less files.
3 |
4 | @import "variables";
5 | @import "mixins";
6 | @import "generals";
7 | @import "icons";
8 |
9 | [class*="icono-"] {
10 | display: inline-block;
11 | vertical-align: middle;
12 | position: relative;
13 | font-style: normal;
14 | //color: @maincolor; // No default color
15 | text-align: left;
16 | text-indent: -9999px;
17 | direction: ltr;
18 | &:before, &:after{
19 | content:'';
20 | pointer-events: none;
21 | }
22 | &[class*="Circle"]{
23 | &:extend(.icono-stroke);
24 | border-radius: 50%;
25 | width: @30;
26 | height: @30;
27 | margin: @2;
28 | }
29 | &[class*="Square"]{
30 | &:extend(.icono-stroke);
31 | border-radius: @4;
32 | width: @30;
33 | height: @30;
34 | margin: @2;
35 | }
36 | &, & *{
37 | box-sizing: border-box;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/cell/cell.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{title}}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
38 |
--------------------------------------------------------------------------------
/src/components/overlay/README.md:
--------------------------------------------------------------------------------
1 | # Overlay
2 |
3 | ## Overview
4 |
5 | 遮罩层,用于阻挡一切用户操作。
6 |
7 | > 因为vue2.0版本会对mask标签报警告,所以改名为overlay,其它并未变化。
8 |
9 | 是否全局组件:否。
10 |
11 | ## Usage
12 |
13 | ```html
14 |
15 | ```
16 |
17 | ```javascript
18 | export default {
19 | props: {
20 | show: Boolean,
21 | hideOnMask: {
22 | default: true
23 | }
24 | },
25 | methods: {
26 | _onMaskClick() {
27 | if (this.hideOnMask) {
28 | this.show = false;
29 | }
30 | }
31 | }
32 | }
33 | ```
34 |
35 | ## Props
36 |
37 | | Property | Type | Description | Default |
38 | | ----- | ----- | ----- | ----- |
39 | | transparent | Boolean | 是否透明 | false |
40 |
41 | ## Events
42 |
43 | | Name | Description | Arguments |
44 | | ----- | ----- | ----- |
45 | | on-click | 当点击时触发 | undefined |
46 |
47 | ## LESS
48 |
49 | | Name | Description | Default |
50 | | ----- | ----- | ----- |
51 | | @MaskBackColor | 背景色 | rgba(0, 0, 0, .4) |
52 |
--------------------------------------------------------------------------------
/src/components/alert/install.js:
--------------------------------------------------------------------------------
1 | import Alert from './';
2 |
3 | export default configs => {
4 | configs.children.push('alert');
5 | configs.components.Alert = Alert;
6 |
7 | return (Vue, vm) => {
8 | var opts = {
9 | title: '',
10 | content: '',
11 | callback: null,
12 | button: '确定'
13 | };
14 |
15 | Vue.prototype.$Alert = (title, callback, options) => {
16 | if (typeof title === 'string') {
17 | options = options || {};
18 | options.title = title;
19 | } else if (typeof title === 'object') {
20 | options = title;
21 | }
22 |
23 | if (typeof callback === 'function') {
24 | options = options || {};
25 | options.callback = callback;
26 | } else if (typeof callback === 'object') {
27 | options = Object.assign(options, callback);
28 | }
29 |
30 | vm.$refs.alert._show(Object.assign({}, opts, options));
31 | };
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/scss/icono/icono.scss:
--------------------------------------------------------------------------------
1 | // Welcome to Iconode
2 | // You can use this file in your project instead of .css file, and build it with other your less files.
3 |
4 | @import "variables";
5 | @import "mixins";
6 | @import "functions";
7 | @import "generals";
8 | @import "icons";
9 |
10 | [class*="icono-"] {
11 | display: inline-block;
12 | vertical-align: middle;
13 | position: relative;
14 | font-style: normal;
15 | //color: $maincolor; // No default color
16 | text-align: left;
17 | text-indent: -9999px;
18 | direction: ltr;
19 | &:before, &:after{
20 | content:'';
21 | pointer-events: none;
22 | }
23 | &[class*="Circle"]{
24 | @extend .icono-stroke;
25 | border-radius: 50%;
26 | width: $U30;
27 | height: $U30;
28 | margin: $U2;
29 | }
30 | &[class*="Square"]{
31 | @extend .icono-stroke;
32 | border-radius: $U4;
33 | width: $U30;
34 | height: $U30;
35 | margin: $U2;
36 | }
37 | &, & *{
38 | box-sizing: border-box;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/docs/demo.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 演示
17 |
18 |
19 |
20 | 按钮
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/examples/demo.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 演示
17 |
18 |
19 |
20 | 按钮
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/styles/icono/icons/comment.less:
--------------------------------------------------------------------------------
1 | //*-- Comment --*\\
2 | .icono-commentEmpty{
3 | width: @30;
4 | height: @22;
5 | &:extend(.icono-stroke);
6 | border-radius: @4 @4 @7 @7;
7 | border-bottom-color: transparent;
8 | margin: @5 @2 @7;
9 | &:before{
10 | position: absolute;
11 | width: @6;
12 | height: @6;
13 | border-width: 0 0 @2 @2;
14 | border-style: solid;
15 | transform: rotate(-45deg);
16 | bottom: -1*@4;
17 | left: @6;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: @8;
22 | height: @2;
23 | border-width: 0 @12 0 @6;
24 | border-style: solid;
25 | bottom: 0;
26 | left: 0;
27 | }
28 | }
29 | .icono-comment{
30 | width: @30;
31 | height: @20;
32 | box-shadow: inset 0 0 0 @32;
33 | border-radius: @4;
34 | margin: @5 @2 @9;
35 | &:before{
36 | position: absolute;
37 | width: @8;
38 | height: @8;
39 | box-shadow: inset 0 0 0 @32;
40 | transform: rotate(-45deg);
41 | bottom: -1*@4;
42 | left: @6;
43 | }
44 | }
--------------------------------------------------------------------------------
/examples/pages/components/tabbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
TabBar
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
40 |
--------------------------------------------------------------------------------
/src/scss/icono/icons/comment.scss:
--------------------------------------------------------------------------------
1 | //*-- Comment --*\\
2 | .icono-commentEmpty{
3 | width: $U30;
4 | height: $U22;
5 | @extend .icono-stroke;
6 | border-radius: $U4 $U4 $U7 $U7;
7 | border-bottom-color: transparent;
8 | margin: $U5 $U2 $U7;
9 | &:before{
10 | position: absolute;
11 | width: $U6;
12 | height: $U6;
13 | border-width: 0 0 $U2 $U2;
14 | border-style: solid;
15 | transform: rotate(-45deg);
16 | bottom: -1*$U4;
17 | left: $U6;
18 | }
19 | &:after{
20 | position: absolute;
21 | width: $U8;
22 | height: $U2;
23 | border-width: 0 $U12 0 $U6;
24 | border-style: solid;
25 | bottom: 0;
26 | left: 0;
27 | }
28 | }
29 | .icono-comment{
30 | width: $U30;
31 | height: $U20;
32 | box-shadow: inset 0 0 0 $U32;
33 | border-radius: $U4;
34 | margin: $U5 $U2 $U9;
35 | &:before{
36 | position: absolute;
37 | width: $U8;
38 | height: $U8;
39 | box-shadow: inset 0 0 0 $U32;
40 | transform: rotate(-45deg);
41 | bottom: -1*$U4;
42 | left: $U6;
43 | }
44 | }
--------------------------------------------------------------------------------
/src/components/toggle/toggle.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
40 |
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | require('./polyfill');
2 |
3 | export const url = require('./url');
4 | export const env = require('./env').default;
5 | export const device = require('./device');
6 | export const script = require('./script');
7 |
8 | export const getType = function(obj) {
9 | if (obj === null || obj === undefined) return String(obj);
10 |
11 | var type = typeof obj;
12 | if (type !== 'object') return type;
13 |
14 | type = Object.prototype.toString.call(obj);
15 | type = type.substring(8, type.length - 1);
16 | return type.toLowerCase();
17 | };
18 |
19 | export const isType = function(obj, type) {
20 | return getType(obj) === type;
21 | };
22 |
23 | export const isNumeric = function(n) {
24 | return !Array.isArray(n) && !isNaN(parseFloat(n)) && isFinite(n);
25 | };
26 |
27 | export const isCSSSize = function(value) {
28 | return /[0-9.]+\s*(px|in|cm|mm|em|rem|pt|pc|ex|ch|vw|vh|vmin|vmax|%)\s*$/.test(value);
29 | };
30 |
31 | export const getCSSSize = function(value) {
32 | if (isCSSSize(value)) {
33 | return value;
34 | } else if (isNumeric(value)) {
35 | return value + 'px';
36 | } else {
37 | return value;
38 | }
39 | };
40 |
--------------------------------------------------------------------------------
/src/scss/components/dialog.scss:
--------------------------------------------------------------------------------
1 | .vmc-dialog {
2 | position: absolute;
3 | z-index: 500;
4 | width: $DialogWidth;
5 | top: 50%;
6 | left: 50%;
7 | transform: translate(-50%, -50%);
8 | background-color: $DialogBackColor;
9 | text-align: center;
10 | border-radius: $DialogRadius;
11 | overflow: hidden;
12 |
13 | .dialog-head {
14 | padding: $DialogHeaderPadding;
15 | font-weight: 400;
16 | font-size: $DialogHeaderTextSize;
17 | }
18 |
19 | .dialog-body {
20 | padding: $DialogContentPadding;
21 | font-size: $DialogContentTextSize;
22 | word-wrap: break-word;
23 | word-break: break-all;
24 | text-align: left;
25 | }
26 |
27 | .dialog-foot {
28 | line-height: $DialogFooterHeight;
29 | font-size: $DialogFooterTextSize;
30 | display: flex;
31 |
32 | span {
33 | display: block;
34 | flex: 1;
35 | width: 0%;
36 |
37 | &.primary {
38 | color: $DialogPrimaryColor;
39 | }
40 |
41 | &.default {
42 | color: $DialogDefaultColor;
43 | }
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/src/components/spinner/spinner/fading-circle.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
38 |
--------------------------------------------------------------------------------
/src/styles/components/dialog.less:
--------------------------------------------------------------------------------
1 | .vmc-dialog {
2 | position: absolute;
3 | z-index: 500;
4 | width: @DialogWidth;
5 | top: 50%;
6 | left: 50%;
7 | transform: translate(-50%, -50%);
8 | background-color: @DialogBackColor;
9 | text-align: center;
10 | border-radius: @DialogRadius;
11 | overflow: hidden;
12 |
13 | .dialog-head {
14 | padding: @DialogHeaderPadding;
15 | font-weight: 400;
16 | font-size: @DialogHeaderTextSize;
17 | }
18 |
19 | .dialog-body {
20 | padding: @DialogContentPadding;
21 | font-size: @DialogContentTextSize;
22 | word-wrap: break-word;
23 | word-break: break-all;
24 | text-align: left;
25 | }
26 |
27 | .dialog-foot {
28 | line-height: @DialogFooterHeight;
29 | font-size: @DialogFooterTextSize;
30 | display: flex;
31 |
32 | span {
33 | display: block;
34 | flex: 1;
35 | width: 0%;
36 |
37 | &.primary {
38 | color: @DialogPrimaryColor;
39 | }
40 |
41 | &.default {
42 | color: @DialogDefaultColor;
43 | }
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/examples/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './App';
3 | import Router from 'vue-router';
4 | import VMC from 'vmc/install';
5 |
6 | if (process.env.NODE_ENV === 'development') {
7 | Vue.config.productionTip = false; // 关闭生产提示
8 |
9 | var log = console.log;
10 | console.log = function() {
11 | var args = Array.from(arguments);
12 | args = args.map(arg => {
13 | try{
14 | return JSON.parse(JSON.stringify(arg));
15 | } catch (e) {
16 | return arg;
17 | }
18 | });
19 |
20 | log.apply(console, args);
21 | };
22 |
23 | console.print = log;
24 |
25 | // 比vConsole功能略牛的调试工具
26 | require('eruda').init();
27 | }
28 |
29 | Vue.use(Router);
30 | Vue.use(VMC);
31 |
32 | import routes from './pages/routes';
33 | var router = new Router({ routes });
34 |
35 | router.beforeEach((t, f, next) => {
36 | if (t.meta.doc_title) {
37 | window.document.title = t.meta.doc_title;
38 | }
39 |
40 | next();
41 | });
42 |
43 | new Vue({
44 | el: '#app',
45 | router,
46 | render: h => h(App)
47 | });
48 |
49 |
50 | var attachFastClick = require('fastclick');
51 | attachFastClick.attach(document.body);
52 |
--------------------------------------------------------------------------------
/src/scss/components/marquee.scss:
--------------------------------------------------------------------------------
1 | .vmc-marquee {
2 | height: $MarqueeHeight;
3 | background: $MarqueeBackColor;
4 | color: $MarqueeTextColor;
5 | position: relative;
6 | overflow-y: hidden;
7 |
8 | .marquee-line {
9 | position: absolute;
10 | top: 0;
11 | left: 0;
12 | right: 0;
13 | bottom: 0;
14 | display: flex;
15 | align-items: center;
16 | font-size: $MarqueeTextSize;
17 |
18 | [class*="icono-"] {
19 | transform: scale($MarqueeIconScale);
20 | }
21 |
22 | > p, > i {
23 | display: block;
24 | }
25 |
26 | &.left {
27 | justify-content: flex-start;
28 | }
29 |
30 | &.center {
31 | justify-content: center;
32 | }
33 |
34 | &.right {
35 | justify-content: flex-end;
36 | }
37 | }
38 |
39 | &-up-enter-active, &-up-leave-active, &-down-enter-active, &-down-leave-active {
40 | transition: all $MarqueeTransitionDuration ease;
41 | }
42 |
43 | &-up-enter, &-down-leave-active {
44 | transform: translate3d(0, 100%, 0);
45 | }
46 |
47 | &-up-leave-active, &-down-enter {
48 | transform: translate3d(0, -100%, 0);
49 | }
50 | }
--------------------------------------------------------------------------------
/src/styles/components/marquee.less:
--------------------------------------------------------------------------------
1 | .vmc-marquee {
2 | height: @MarqueeHeight;
3 | background: @MarqueeBackColor;
4 | color: @MarqueeTextColor;
5 | position: relative;
6 | overflow-y: hidden;
7 |
8 | .marquee-line {
9 | position: absolute;
10 | top: 0;
11 | left: 0;
12 | right: 0;
13 | bottom: 0;
14 | display: flex;
15 | align-items: center;
16 | font-size: @MarqueeTextSize;
17 |
18 | [class*="icono-"] {
19 | transform: scale(@MarqueeIconScale);
20 | }
21 |
22 | > p, > i {
23 | display: block;
24 | }
25 |
26 | &.left {
27 | justify-content: flex-start;
28 | }
29 |
30 | &.center {
31 | justify-content: center;
32 | }
33 |
34 | &.right {
35 | justify-content: flex-end;
36 | }
37 | }
38 |
39 | &-up-enter-active, &-up-leave-active, &-down-enter-active, &-down-leave-active {
40 | transition: all @MarqueeTransitionDuration ease;
41 | }
42 |
43 | &-up-enter, &-down-leave-active {
44 | transform: translate3d(0, 100%, 0);
45 | }
46 |
47 | &-up-leave-active, &-down-enter {
48 | transform: translate3d(0, -100%, 0);
49 | }
50 | }
--------------------------------------------------------------------------------
/src/components/spinner/spinner/triple-bounce.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
42 |
--------------------------------------------------------------------------------
/examples/assets/css/transition.css:
--------------------------------------------------------------------------------
1 | /*翻页*/
2 | @keyframes slideRightToCenter {
3 | from {
4 | transform: translate3d(100%, 0, 0);
5 | }
6 | to {
7 | transform: translate3d(0%, 0, 0);
8 | }
9 | }
10 | @keyframes slideCenterToLeft {
11 | from {
12 | transform: translate3d(0, 0, 0);
13 | }
14 | to {
15 | transform: translate3d(-60%, 0, 0);
16 | }
17 | }
18 |
19 | @keyframes slideLeftToCenter {
20 | from {
21 | transform: translate3d(-60%, 0, 0);
22 | }
23 | to {
24 | transform: translate3d(0, 0, 0);
25 | }
26 | }
27 | @keyframes slideCenterToRight {
28 | from {
29 | transform: translate3d(0, 0, 0);
30 | }
31 | to {
32 | transform: translate3d(100%, 0, 0);
33 | }
34 | }
35 |
36 | .forward-enter,
37 | .back-enter {
38 | will-change: transform;
39 | }
40 |
41 | .forward-enter-active {
42 | animation: slideRightToCenter .4s forwards;
43 | }
44 | .forward-leave-active {
45 | animation: slideCenterToLeft .4s forwards;
46 | }
47 |
48 | .back-enter-active {
49 | animation: slideLeftToCenter .4s forwards;
50 | }
51 | .back-leave-active {
52 | animation: slideCenterToRight .4s forwards;
53 | }
54 |
55 | .forward-enter-active,
56 | .back-leave-active {
57 | z-index: 1 !important;
58 | }
59 |
--------------------------------------------------------------------------------
/examples/pages/components/box.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
占位框
4 |
5 |
6 |
高宽比为0.4的盒子
7 |
8 |
9 |
10 |
11 |
12 |
高宽比为0.4的盒子,带背景色
13 |
14 |
15 |
16 |
17 |
18 |
19 |
29 |
30 |
51 |
--------------------------------------------------------------------------------
/src/components/toast/install.js:
--------------------------------------------------------------------------------
1 | import Toast from './';
2 |
3 | export default configs => {
4 | configs.children.push('toast');
5 | configs.components.Toast = Toast;
6 |
7 | return (Vue, vm) => {
8 | Vue.prototype.$Loading = (text, second) => {
9 | var options = {
10 | type: 'loading',
11 | content: text || '',
12 | second: second
13 | };
14 |
15 | vm.$refs.toast._show(options);
16 | };
17 |
18 | Vue.prototype.$Loading.done = () => {
19 | vm.$refs.toast._hide();
20 | };
21 |
22 | ['success', 'error', 'info', 'toast'].forEach(key => {
23 | var name = '$' + key.replace(/^([a-z])/, $1 => $1.toUpperCase());
24 |
25 | Vue.prototype[name] = (text, second, position) => {
26 | if (typeof second === 'string') {
27 | position = second;
28 | second = 2;
29 | }
30 |
31 | var options = {
32 | type: key,
33 | content: text || '',
34 | second: second || 2,
35 | position: position
36 | };
37 |
38 | vm.$refs.toast._show(options);
39 | }
40 | });
41 | }
42 | }
--------------------------------------------------------------------------------