├── .gitignore ├── .vscode ├── ftp-sync.json └── settings.json ├── AFront ├── .babelrc ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── README.md ├── XBlog.jpg ├── build │ ├── build.js │ ├── check-versions.js │ ├── logo.png │ ├── utils.js │ ├── vue-loader.conf.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js ├── config │ ├── dev.env.js │ ├── index.js │ └── prod.env.js ├── index.html ├── package-lock.json ├── package.json ├── src │ ├── App.vue │ ├── api │ │ ├── api_article.js │ │ ├── api_auth.js │ │ ├── api_comment.js │ │ ├── api_doError.js │ │ ├── api_myinfo.js │ │ ├── api_statistic.js │ │ ├── api_tag.js │ │ └── api_upload.js │ ├── assets │ │ ├── blog.jpg │ │ ├── blog.webp │ │ ├── body_placeholder.png │ │ ├── employee.svg │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── node.png │ │ ├── node.svg │ │ └── wechat.png │ ├── components │ │ ├── commentReplyBox.vue │ │ ├── copyright.vue │ │ ├── doLogout.vue │ │ ├── loading.vue │ │ ├── nodata.vue │ │ └── socialInfo.vue │ ├── config.js │ ├── main.js │ ├── plugin │ │ ├── bootstrap-datetimepicker │ │ │ ├── .gitattributes │ │ │ ├── .gitignore │ │ │ ├── .jscs.json │ │ │ ├── .npmignore │ │ │ ├── .travis.yml │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── build │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-datetimepicker-standalone.css │ │ │ │ │ ├── bootstrap-datetimepicker.css │ │ │ │ │ └── bootstrap-datetimepicker.min.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-datetimepicker.min.js │ │ │ ├── component.json │ │ │ ├── composer.json │ │ │ ├── docs │ │ │ │ ├── ChangeLog.md │ │ │ │ ├── ContributorsGuide.md │ │ │ │ ├── Events.md │ │ │ │ ├── Extras.md │ │ │ │ ├── FAQ.md │ │ │ │ ├── Functions.md │ │ │ │ ├── Installing.md │ │ │ │ ├── Options.md │ │ │ │ ├── Version 4 Changelog.md │ │ │ │ ├── Version 4 Contributors guide.md │ │ │ │ └── index.md │ │ │ ├── mkdocs.yml │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── js │ │ │ │ │ └── bootstrap-datetimepicker.js │ │ │ │ ├── less │ │ │ │ │ ├── _bootstrap-datetimepicker.less │ │ │ │ │ └── bootstrap-datetimepicker-build.less │ │ │ │ ├── nuget │ │ │ │ │ ├── Bootstrap.v3.Datetimepicker.CSS.nuspec │ │ │ │ │ ├── Bootstrap.v3.Datetimepicker.nuspec │ │ │ │ │ ├── NuGet.exe │ │ │ │ │ └── install.ps1 │ │ │ │ └── sass │ │ │ │ │ ├── _bootstrap-datetimepicker.scss │ │ │ │ │ └── bootstrap-datetimepicker-build.scss │ │ │ ├── tasks │ │ │ │ └── bump_version.js │ │ │ └── test │ │ │ │ ├── publicApiSpec.js │ │ │ │ └── screen-capture │ │ │ │ ├── base.html │ │ │ │ ├── compile.js │ │ │ │ ├── index.js │ │ │ │ ├── out │ │ │ │ └── .gitignore │ │ │ │ ├── pic │ │ │ │ └── .gitignore │ │ │ │ ├── t1.html │ │ │ │ ├── t2.html │ │ │ │ ├── t3.html │ │ │ │ ├── t4.html │ │ │ │ └── t5.html │ │ ├── bootstrap │ │ │ ├── js │ │ │ │ ├── affix.js │ │ │ │ ├── alert.js │ │ │ │ ├── button.js │ │ │ │ ├── carousel.js │ │ │ │ ├── collapse.js │ │ │ │ ├── dropdown.js │ │ │ │ ├── modal.js │ │ │ │ ├── popover.js │ │ │ │ ├── scrollspy.js │ │ │ │ ├── tab.js │ │ │ │ ├── tooltip.js │ │ │ │ └── transition.js │ │ │ └── scss │ │ │ │ ├── bootstrap.slim.scss │ │ │ │ └── bootstrap │ │ │ │ ├── _alerts.scss │ │ │ │ ├── _badges.scss │ │ │ │ ├── _breadcrumbs.scss │ │ │ │ ├── _button-groups.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── _code.scss │ │ │ │ ├── _component-animations.scss │ │ │ │ ├── _dropdowns.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _glyphicons.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _input-groups.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _labels.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _modals.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _navs.scss │ │ │ │ ├── _normalize.scss │ │ │ │ ├── _pager.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _panels.scss │ │ │ │ ├── _popovers.scss │ │ │ │ ├── _print.scss │ │ │ │ ├── _progress-bars.scss │ │ │ │ ├── _responsive-embed.scss │ │ │ │ ├── _responsive-utilities.scss │ │ │ │ ├── _scaffolding.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _theme.scss │ │ │ │ ├── _thumbnails.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _type.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── _wells.scss │ │ │ │ └── mixins │ │ │ │ ├── _alerts.scss │ │ │ │ ├── _background-variant.scss │ │ │ │ ├── _border-radius.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _center-block.scss │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _gradients.scss │ │ │ │ ├── _grid-framework.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _hide-text.scss │ │ │ │ ├── _image.scss │ │ │ │ ├── _labels.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _nav-divider.scss │ │ │ │ ├── _nav-vertical-align.scss │ │ │ │ ├── _opacity.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _panels.scss │ │ │ │ ├── _progress-bar.scss │ │ │ │ ├── _reset-filter.scss │ │ │ │ ├── _reset-text.scss │ │ │ │ ├── _resize.scss │ │ │ │ ├── _responsive-visibility.scss │ │ │ │ ├── _size.scss │ │ │ │ ├── _tab-focus.scss │ │ │ │ ├── _table-row.scss │ │ │ │ ├── _text-emphasis.scss │ │ │ │ ├── _text-overflow.scss │ │ │ │ └── _vendor-prefixes.scss │ │ ├── dropzone.js │ │ ├── echarts │ │ │ ├── china.js │ │ │ └── dark.js │ │ ├── exif.js │ │ ├── fastclick.js │ │ ├── highlight.pack.js │ │ ├── imageOrientationFix.js │ │ ├── mint-ui │ │ │ ├── .npminstall.done │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib │ │ │ │ ├── actionsheet │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── badge │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── button │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── cell-swipe │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── cell │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── checklist │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── datetime-picker │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── field │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── font │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── header │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── index-list │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── index-section │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── index.js │ │ │ │ ├── indicator │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── infinite-scroll │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── lazyload │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── loadmore │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── message-box │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── mint-ui.common.js │ │ │ │ ├── navbar │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── palette-button │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── picker │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── popup │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── progress │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── radio │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── range │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── search │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── spinner │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── style.css │ │ │ │ ├── style.min.css │ │ │ │ ├── swipe-item │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── swipe │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── switch │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── tab-container-item │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── tab-container │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── tab-item │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ ├── tabbar │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ └── toast │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── README.md │ │ │ │ ├── actionsheet │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── actionsheet.vue │ │ │ │ ├── badge │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── badge.vue │ │ │ │ ├── button │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── button.vue │ │ │ │ ├── cell-swipe │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── cell-swipe.vue │ │ │ │ ├── cell │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── cell.vue │ │ │ │ ├── checklist │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── checklist.vue │ │ │ │ ├── datetime-picker │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── datetime-picker.vue │ │ │ │ ├── field │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── field.vue │ │ │ │ ├── header │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ │ └── header.vue │ │ │ │ ├── index-list │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── index-list.vue │ │ │ │ ├── index-section │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── index-section.vue │ │ │ │ ├── indicator │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── indicator.vue │ │ │ │ ├── infinite-scroll │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ │ ├── directive.js │ │ │ │ │ │ └── infinite-scroll.js │ │ │ │ ├── lazyload │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ │ └── lazyload.js │ │ │ │ ├── loadmore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── loadmore.vue │ │ │ │ ├── message-box │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ │ ├── message-box.js │ │ │ │ │ │ └── message-box.vue │ │ │ │ ├── navbar │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── navbar.vue │ │ │ │ ├── palette-button │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── palette-button.vue │ │ │ │ ├── picker │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── draggable.js │ │ │ │ │ │ ├── picker-slot.vue │ │ │ │ │ │ ├── picker.vue │ │ │ │ │ │ └── translate.js │ │ │ │ ├── popup │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── popup.vue │ │ │ │ ├── progress │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── progress.vue │ │ │ │ ├── radio │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── radio.vue │ │ │ │ ├── range │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── draggable.js │ │ │ │ │ │ └── index.vue │ │ │ │ ├── search │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── search.vue │ │ │ │ ├── spinner │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ ├── swipe-item │ │ │ │ │ ├── README.md │ │ │ │ │ └── index.js │ │ │ │ ├── swipe │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── swipe-item.vue │ │ │ │ │ │ └── swipe.vue │ │ │ │ ├── switch │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── switch.vue │ │ │ │ ├── tab-container-item │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ │ └── tab-container-item.vue │ │ │ │ ├── tab-container │ │ │ │ │ ├── README.md │ │ │ │ │ ├── _index.js │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── tab-container.vue │ │ │ │ ├── tab-item │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── tab-item.vue │ │ │ │ ├── tabbar │ │ │ │ │ ├── README.md │ │ │ │ │ ├── cooking.conf.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ │ └── tabbar.vue │ │ │ │ └── toast │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.js │ │ │ │ │ └── src │ │ │ │ │ ├── toast.js │ │ │ │ │ └── toast.vue │ │ │ └── src │ │ │ │ ├── assets │ │ │ │ ├── font │ │ │ │ │ ├── iconfont.css │ │ │ │ │ └── iconfont.ttf │ │ │ │ └── loading-spin.svg │ │ │ │ ├── index.js │ │ │ │ ├── mixins │ │ │ │ └── emitter.js │ │ │ │ ├── style │ │ │ │ ├── border.css │ │ │ │ ├── empty.css │ │ │ │ └── var.css │ │ │ │ └── utils │ │ │ │ └── clickoutside.js │ │ ├── parseUA.js │ │ ├── vue-multiselect │ │ │ ├── Multiselect.vue │ │ │ ├── multiselectMixin.js │ │ │ ├── pointerMixin.js │ │ │ └── utils.js │ │ └── vue-toast │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── main.js │ │ │ ├── manager │ │ │ │ ├── index.js │ │ │ │ ├── style.css │ │ │ │ └── template.html │ │ │ ├── polyfills.js │ │ │ ├── toast │ │ │ │ ├── index.js │ │ │ │ ├── style.css │ │ │ │ └── template.html │ │ │ └── utils.js │ │ │ └── webpack.config.js │ ├── router.js │ ├── theme │ │ ├── _include-media.scss │ │ ├── _mixins.scss │ │ ├── _variables.scss │ │ ├── cataBox.scss │ │ ├── codeHighLight.css │ │ ├── markdown.scss │ │ ├── theme.scss │ │ └── util.scss │ ├── utils │ │ ├── autoTextarea.js │ │ ├── errSrc.js │ │ ├── filters.js │ │ ├── vStorage.js │ │ ├── vStore.md │ │ ├── vToast.js │ │ ├── vToast │ │ │ ├── main.js │ │ │ ├── manager.vue │ │ │ ├── polyfills.js │ │ │ └── toast.vue │ │ └── vue-storage-bk.js │ ├── views │ │ ├── admin.article.vue │ │ ├── admin.articleList.vue │ │ ├── admin.commentList.vue │ │ ├── admin.dashboard.vue │ │ ├── admin.myInfo.vue │ │ ├── admin.tagList.vue │ │ ├── admin.vue │ │ ├── blog.article.vue │ │ ├── blog.articleList.vue │ │ ├── blog.friends.vue │ │ ├── blog.historyList.vue │ │ ├── blog.index.vue │ │ ├── blog.login.vue │ │ ├── blog.music.vue │ │ ├── blog.myInfo.vue │ │ ├── blog.nav.vue │ │ ├── blog.tagList.vue │ │ └── blog.vue │ └── vuex │ │ ├── actions.js │ │ ├── getters.js │ │ ├── mutation-types.js │ │ └── store.js ├── static │ └── .gitkeep ├── west_lake.jpg └── yarn.lock ├── README.md ├── app.js ├── bin └── www ├── cache.js ├── config ├── config.js └── mongoose.js ├── controllers ├── article.controller.js ├── comments.controller.js ├── statistic.controller.js ├── tags.controller.js └── users.controller.js ├── md └── api.md ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html ├── routes ├── api.routes.js └── web.routes.js ├── utils ├── DO_ERROE_RES.js ├── base64.utils.js ├── cdn_sync.js ├── checkToken.utils.js ├── getClientIp.utils.js └── pack.js └── views ├── error.hbs ├── error_dev.hbs ├── index.hbs └── layout.hbs /.gitignore: -------------------------------------------------------------------------------- 1 | _config.yml 2 | .idea 3 | *.zip 4 | *.txt 5 | node_modules 6 | backup 7 | .DS_Store 8 | .svn 9 | uploads 10 | config_me.js 11 | .vscode 12 | public/ -------------------------------------------------------------------------------- /.vscode/ftp-sync.json: -------------------------------------------------------------------------------- 1 | { 2 | "remotePath": "/home/blog/XBlog", 3 | "host": "118.24.61.24", 4 | "username": "root", 5 | "password": "uTBGPkdkEppzhwQ6", 6 | "port": 22, 7 | "secure": false, 8 | "protocol": "sftp", 9 | "uploadOnSave": false, 10 | "passive": false, 11 | "debug": false, 12 | "privateKeyPath": null, 13 | "passphrase": null, 14 | "ignore": [ 15 | "\\.vscode", 16 | "\\.git", 17 | "\\.DS_Store", 18 | "\\AFront" 19 | ], 20 | "generatedFiles": { 21 | "uploadOnSave": false, 22 | "extensionsToInclude": [], 23 | "path": "" 24 | } 25 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // 将设置放入此文件中以覆盖默认值和用户设置。 2 | { 3 | } -------------------------------------------------------------------------------- /AFront/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /AFront/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /AFront/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /AFront/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /AFront/README.md: -------------------------------------------------------------------------------- 1 | # XBlog 2 | 3 | > XBlog 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | ``` 20 | 21 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 22 | -------------------------------------------------------------------------------- /AFront/XBlog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/XBlog.jpg -------------------------------------------------------------------------------- /AFront/build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /AFront/build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /AFront/build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/build/logo.png -------------------------------------------------------------------------------- /AFront/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AFront/config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /AFront/config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /AFront/src/api/api_doError.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description:统一的错误处理 3 | * 统一的错误处理方法: 8-数据库查找错误;9-非admin用户;10-token错误或超时((Token 2h内有效) 4 | * 其余由api自己处理: 2~5-失败; 5 | */ 6 | import Vue from "vue"; 7 | import store from '../vuex/store'; 8 | import Toast from 'Toast'; 9 | 10 | export const doError = function (code) { 11 | code = parseInt(code); 12 | switch (code) { 13 | case 8: 14 | window.$router.back(); 15 | Toast({ 16 | message: '数据库查找错误!', iconClass: 'fa fa-warning', 17 | position: 'center', 18 | duration: 3000 19 | }); 20 | return code; 21 | break; 22 | case 9: 23 | Toast({ 24 | message: '您没有操作权限!', iconClass: 'fa fa-warning', 25 | position: 'center', 26 | duration: 3000 27 | }); 28 | return code; 29 | break; 30 | case 10: 31 | Toast({ 32 | message: 'Token超时,请再登陆!', iconClass: 'fa fa-warning', 33 | position: 'center', 34 | duration: 3000 35 | }); 36 | //清空本地数据 37 | Vue.$localStorage.$delete('authorization'); 38 | Vue.$localStorage.$delete('commentInfo'); 39 | //修改登录状态 40 | store.dispatch('setLoginState', false); 41 | // 跳转 42 | window.$router.replace({ 43 | name:'login' 44 | }); 45 | return 10; 46 | break; 47 | default: 48 | return code; 49 | break; 50 | } 51 | }; 52 | -------------------------------------------------------------------------------- /AFront/src/api/api_upload.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: 上传 3 | * 图片上传前打压缩+方向矫正操作,传入file后接受成功或失败promise 4 | */ 5 | import API from "../config.js"; 6 | import Vue from "vue"; 7 | 8 | //图片上传 9 | export const ImageUpload = function (_file) { 10 | //1. 传入filer参数 11 | return new Promise(function (resolve, reject) { 12 | // 2. 文件上传 13 | let form = new FormData(); 14 | form.append('uploadImg', _file); 15 | 16 | Vue.http.post(API.imgUpload, form).then(function (result) { 17 | let response = result.data; 18 | // console.log(response) 19 | if (parseInt(response.code) === 1) { 20 | resolve(response.data); 21 | } else { 22 | reject(response.code) 23 | } 24 | }, function (error) { 25 | reject(error) 26 | }); 27 | }) 28 | }; 29 | -------------------------------------------------------------------------------- /AFront/src/assets/blog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/blog.jpg -------------------------------------------------------------------------------- /AFront/src/assets/blog.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/blog.webp -------------------------------------------------------------------------------- /AFront/src/assets/body_placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/body_placeholder.png -------------------------------------------------------------------------------- /AFront/src/assets/employee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /AFront/src/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/favicon.ico -------------------------------------------------------------------------------- /AFront/src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/favicon.png -------------------------------------------------------------------------------- /AFront/src/assets/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/node.png -------------------------------------------------------------------------------- /AFront/src/assets/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/assets/wechat.png -------------------------------------------------------------------------------- /AFront/src/components/copyright.vue: -------------------------------------------------------------------------------- 1 | 6 | 19 | -------------------------------------------------------------------------------- /AFront/src/components/doLogout.vue: -------------------------------------------------------------------------------- 1 | 20 | 23 | 57 | -------------------------------------------------------------------------------- /AFront/src/components/socialInfo.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 26 | 27 | 78 | -------------------------------------------------------------------------------- /AFront/src/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Dsc:单页应用入口文件 3 | * @Author: billyhu 4 | * @Date: 2017-11-25 17:51:23 5 | */ 6 | 7 | 'use strict'; 8 | import Vue from 'vue'; 9 | import App from './App'; 10 | import router from './router.js'; 11 | import "./theme/util.scss"; 12 | import "bootstrap/scss/bootstrap.slim.scss"; 13 | import "bootstrap/js/tooltip.js"; 14 | import "bootstrap/js/modal.js"; 15 | import "bootstrap/js/transition.js"; 16 | import attachFastClick from "fastclick"; 17 | import moment from "moment"; 18 | import 'moment/locale/zh-cn' 19 | import ua from './plugin/parseUA'; 20 | 21 | /** 22 | * $router全局化,便于外部js调用 23 | * */ 24 | window.$router = router; 25 | 26 | /** 27 | * 浏览环境判断,保存为全局 28 | * */ 29 | window.ua = ua; 30 | 31 | moment.locale('zh-cn'); 32 | window.moment = moment; 33 | /** 34 | * 触摸配置 35 | * */ 36 | new attachFastClick(document.body); 37 | 38 | /** 39 | * 发布模式禁用console.log() 40 | * */ 41 | if (process.env.NODE_ENV === 'production') { 42 | console.log = function () { 43 | } 44 | console.warn = function () { 45 | } 46 | } 47 | 48 | new Vue({ 49 | render (h) { 50 | return h(App) 51 | }, 52 | router, 53 | components: {App}, 54 | }).$mount('#app') 55 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | .idea 4 | .vs 5 | obj 6 | bin 7 | site/ 8 | *.user 9 | *.csproj 10 | *.sln 11 | *.nupkg 12 | index.html -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/.npmignore: -------------------------------------------------------------------------------- 1 | /assets 2 | /_includes 3 | /_layouts 4 | /.gitignore 5 | /node_modules 6 | /Makefile 7 | /test 8 | *.log 9 | *.swp 10 | *~ 11 | *.tgz 12 | /site 13 | *.user 14 | *.csproj 15 | *.sln 16 | *.nupkg -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - 0.10 5 | 6 | before_script: 7 | - npm install -g grunt-cli 8 | 9 | script: grunt build:travis 10 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Submitting Issues 2 | ================= 3 | 4 | If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed. 5 | 6 | Issues that are submitted without a description (title only) will be closed with no further explanation. 7 | 8 | Contributing code 9 | ================= 10 | 11 | To contribute, fork the library and install grunt and dependencies. You need [node](http://nodejs.org/); use [nvm](https://github.com/creationix/nvm) or [nenv](https://github.com/ryuone/nenv) to install it. 12 | 13 | ```bash 14 | git clone https://github.com/Eonasdan/bootstrap-datetimepicker.git 15 | cd bootstrap-datetimepicker 16 | npm install -g grunt-cli 17 | npm install 18 | git checkout development # all patches against development branch, please! 19 | grunt # this runs tests and jshint 20 | ``` 21 | 22 | Very important notes 23 | ==================== 24 | 25 | * **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch. 26 | * **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release. 27 | * Pull requests that do not include a description (title only) and the following will be closed: 28 | * What the change does 29 | * A use case (for new features or enhancements) 30 | 31 | Grunt tasks 32 | =========== 33 | 34 | We use Grunt for managing the build. Here are some useful Grunt tasks: 35 | 36 | * `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR. 37 | * `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory. 38 | * `grunt build:travis` Compliles and runs the jasmine/travis tests. **All PR's MUST pass tests in place** -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Jonathan Peterson (@Eonasdan) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eonasdan-bootstrap-datetimepicker", 3 | "version": "4.17.37", 4 | "main": [ 5 | "build/css/bootstrap-datetimepicker.min.css", 6 | "build/js/bootstrap-datetimepicker.min.js" 7 | ], 8 | "dependencies": { 9 | "jquery": ">=1.8.3", 10 | "moment": ">=2.9.0", 11 | "moment-timezone": ">=0.4.0" 12 | }, 13 | "homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker", 14 | "authors": [ 15 | "Eonasdan" 16 | ], 17 | "description": "bootstrap3 datetimepicker", 18 | "keywords": [ 19 | "twitter-bootstrap", 20 | "bootstrap", 21 | "datepicker", 22 | "datetimepicker", 23 | "timepicker", 24 | "moment" 25 | ], 26 | "license": "MIT", 27 | "private": false, 28 | "ignore": [ 29 | "**/.*", 30 | "node_modules", 31 | "bower_components", 32 | "test", 33 | "tests" 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap-datetimepicker", 3 | "version": "4.17.37", 4 | "main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js"], 5 | "dependencies": { 6 | "jquery" : ">=1.8.3", 7 | "moment": ">=2.9.0" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eonasdan/bootstrap-datetimepicker", 3 | "type": "component", 4 | "version": "4.17.37", 5 | "description": "Date/time picker widget based on twitter bootstrap", 6 | "keywords": [ 7 | "bootstrap", 8 | "datetimepicker" 9 | ], 10 | "homepage": "http://eonasdan.github.io/bootstrap-datetimepicker/", 11 | "license": "MIT", 12 | "require": { 13 | "robloach/component-installer": "*", 14 | "components/jquery": ">=1.9.1", 15 | "moment/moment": ">=2.8" 16 | }, 17 | "extra": { 18 | "component": { 19 | "scripts": [ 20 | "src/js/bootstrap-datetimepicker.js" 21 | ], 22 | "files": [ 23 | "build/js/bootstrap-datetimepicker.min.js", 24 | "build/css/bootstrap-datetimepicker.min.css" 25 | ] 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/docs/Events.md: -------------------------------------------------------------------------------- 1 | ## Events 2 | 3 | ### dp.hide 4 | 5 | Fired when the widget is hidden. 6 | 7 | Parameters: 8 | 9 | ``` 10 | e = { 11 | date //the currently set date. Type: moment object (clone) 12 | } 13 | ``` 14 | 15 | Emitted from: 16 | 17 | * toggle() 18 | * hide() 19 | * disable() 20 | 21 | ---------------------- 22 | 23 | ### dp.show 24 | 25 | Fired when the widget is shown. 26 | 27 | Parameters: 28 | 29 | No parameters are include, listen to `dp.change` instead 30 | 31 | Emitted from: 32 | 33 | * toggle() 34 | * show() 35 | 36 | ---------------------- 37 | 38 | ### dp.change 39 | 40 | Fired when the date is changed. 41 | 42 | Parameters: 43 | 44 | ``` 45 | e = { 46 | date, //date the picker changed to. Type: moment object (clone) 47 | oldDate //previous date. Type: moment object (clone) or false in the event of a null 48 | } 49 | ``` 50 | 51 | Emitted from: 52 | 53 | * toggle() **Note**: Only fired when using `useCurrent` 54 | * show() **Note**: Only fired when using `useCurrent` or when or the date is changed to comply with date rules (min/max etc) 55 | * date(newDate) 56 | * minDate(minDate) 57 | * maxDate(maxDate) 58 | * daysOfWeekDisabled() 59 | 60 | ---------------------- 61 | 62 | ### dp.error 63 | 64 | Fired when a selected date fails to pass validation. 65 | 66 | Parameters: 67 | 68 | ``` 69 | e = { 70 | date //the invalid date. Type: moment object (clone) 71 | } 72 | ``` 73 | 74 | Emmited from: 75 | 76 | * minDate(minDate) 77 | * maxDate(maxDate) 78 | * daysOfWeekDisabled() 79 | * setValue() *private function* 80 | 81 | ---------------------- 82 | 83 | ### dp.update 84 | 85 | 4.14.30 86 | 87 | Fired (in most cases) when the `viewDate` changes. E.g. Next and Previous buttons, selecting a year. 88 | 89 | Parameters: 90 | 91 | ``` 92 | e = { 93 | change, //Change type as a momentjs format token. Type: string e.g. yyyy on year change 94 | viewDate //new viewDate. Type: moment object 95 | } 96 | ``` -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/docs/FAQ.md: -------------------------------------------------------------------------------- 1 | # FAQs 2 | 3 | # How do I disable the date or time element 4 | How do I format ...; How do I add seconds; etc. 5 | 6 | The picker uses the `format` option to decide what components to show. Set `format` to `LT`, `LTS` or another valid [MomentJs format string](http://momentjs.com/docs/#/displaying/format/) to display certain components 7 | 8 | # How do I change the language/locale 9 | 10 | The picker uses MomentJs to determine the language string. You can use `moment-with-locales` or you can include whatever local file you need. Set the picker's `locale` option to `de` or whatever the locale string is. 11 | 12 | # How do I change the styles? The picker closes. 13 | 14 | Set `debug:true` which will force the picker to stay open, even `onBlur`. You can hide the picker manually by calling `hide()` 15 | 16 | # How do I change the start of the week? 17 | 18 | Start of the week is based on the [`locale` provided](Options.md#locale). This is defined by moment's locales. If you want to change it, create your own locale file or override. [See moment's docs](http://momentjs.com/docs/#/i18n/). 19 | 20 | # How I use the picker as birthday picker? 21 | 22 | Use the [`viewMode`](Options.md#viewmode) option to `'years'` -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/docs/Version 4 Changelog.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

The page has moved to: 6 | this page

-------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/docs/Version 4 Contributors guide.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

The page has moved to: 6 | this page

-------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Bootstrap 3 Datepicker 2 | theme: bootstrap 3 | extra_javascript: ['//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js','//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/src/js/bootstrap-datetimepicker.js'] 4 | extra_css: ['//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/build/css/bootstrap-datetimepicker.css'] 5 | repo_url: https://github.com/Eonasdan/bootstrap-datetimepicker 6 | pages: 7 | - ['index.md', 'Usage'] 8 | - ['Installing.md', 'Installing'] 9 | - ['Functions.md', 'Functions'] 10 | - ['Options.md', 'Options'] 11 | - ['Events.md', 'Events'] 12 | - ['Changelog.md', 'Change Log'] 13 | - ['ContributorsGuide.md', 'Dev Guide'] 14 | - ['Extras.md', 'Extras'] 15 | - ['FAQ.md', 'FAQs'] 16 | - ['Version 4 Changelog.md', ''] 17 | - ['Version 4 Contributors guide.md', ''] -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Jonathan Peterson" 4 | }, 5 | "bugs": { 6 | "url": "https://github.com/eonasdan/bootstrap-datetimepicker/issues" 7 | }, 8 | "dependencies": { 9 | "moment": "~2.8", 10 | "moment-timezone" : "~0.4", 11 | "bootstrap": "^3.3", 12 | "jquery": ">=1.8.3 <2.2.0" 13 | }, 14 | "description": "A date/time picker component designed to work with Bootstrap 3 and Momentjs. For usage, installation and demos see Project Site on GitHub", 15 | "devDependencies": { 16 | "grunt": "latest", 17 | "grunt-contrib-jasmine": "^0.7.0", 18 | "grunt-contrib-jshint": "latest", 19 | "grunt-contrib-less": "latest", 20 | "grunt-contrib-uglify": "latest", 21 | "grunt-jscs": "latest", 22 | "grunt-string-replace": "latest", 23 | "load-grunt-tasks": "latest", 24 | "grunt-nuget": "^0.1.4" 25 | }, 26 | "homepage": "http://eonasdan.github.io/bootstrap-datetimepicker/", 27 | "keywords": [ 28 | "twitter-bootstrap", 29 | "bootstrap", 30 | "datepicker", 31 | "datetimepicker", 32 | "timepicker", 33 | "moment" 34 | ], 35 | "license": "MIT", 36 | "main": "src/js/bootstrap-datetimepicker.js", 37 | "name": "eonasdan-bootstrap-datetimepicker", 38 | "repository": { 39 | "type": "git", 40 | "url": "https://github.com/eonasdan/bootstrap-datetimepicker.git" 41 | }, 42 | "version": "4.17.37" 43 | } 44 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less: -------------------------------------------------------------------------------- 1 | // Import bootstrap variables including default color palette and fonts 2 | @import "bootstrap/less/variables.less"; 3 | 4 | // Import datepicker component 5 | @import "_bootstrap-datetimepicker.less"; 6 | 7 | //this is here so the compiler doesn't complain about a missing bootstrap mixin 8 | .sr-only { 9 | position: absolute; 10 | width: 1px; 11 | height: 1px; 12 | margin: -1px; 13 | padding: 0; 14 | overflow: hidden; 15 | clip: rect(0,0,0,0); 16 | border: 0; 17 | } 18 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Bootstrap.v3.Datetimepicker.CSS 5 | 4.0.0 6 | Bootstrap 3 Datetimepicker CSS 7 | Eonasdan 8 | Eonasdan 9 | https://github.com/Eonasdan/bootstrap-datetimepicker 10 | false 11 | A date/time picker component designed to work with Bootstrap 3 and Momentjs. 12 | 13 | For usage, installation and demos see Project Site on GitHub 14 | 15 | For LESS version install Bootstrap.v3.Datetimepicker 16 | 17 | Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log 18 | 19 | IMPORANT! The Nuget packages will be depreciated in an upcoming release. Moving forward, Asp.Net/Nuget will NOT be delivering content packages like this one and you will need to use bower. See https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1128 for more 20 | 21 | bootstrap date time picker datetimepicker datepicker jquery 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Bootstrap.v3.Datetimepicker 5 | 4.0.0 6 | Bootstrap 3 Datetimepicker 7 | Eonasdan 8 | Eonasdan 9 | https://github.com/Eonasdan/bootstrap-datetimepicker 10 | false 11 | A date/time picker component designed to work with Bootstrap 3 and Momentjs. 12 | 13 | For usage, installation and demos see Project Site on GitHub 14 | 15 | For CSS version install Bootstrap.v3.Datetimepicker.CSS 16 | 17 | Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log 18 | 19 | IMPORANT! The Nuget packages will be depreciated in an upcoming release. Moving forward, Asp.Net/Nuget will NOT be delivering content packages like this one and you will need to use bower. See https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1128 for more 20 | 21 | bootstrap date time picker datetimepicker datepicker jquery 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/nuget/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/plugin/bootstrap-datetimepicker/src/nuget/NuGet.exe -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/nuget/install.ps1: -------------------------------------------------------------------------------- 1 | # install.ps1 2 | $DTE.ItemOperations.Navigate("https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1128", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow) 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/src/sass/bootstrap-datetimepicker-build.scss: -------------------------------------------------------------------------------- 1 | // Import bootstrap variables including default color palette and fonts 2 | //@import "../../node_modules/bootstrap/less/variables.less"; 3 | 4 | .sr-only { 5 | position: absolute; 6 | width: 1px; 7 | height: 1px; 8 | margin: -1px; 9 | padding: 0; 10 | overflow: hidden; 11 | clip: rect(0,0,0,0); 12 | border: 0; 13 | } 14 | 15 | // Import datepicker component 16 | @import "_bootstrap-datetimepicker"; 17 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 34 | 35 | 36 |
37 |
38 |
39 |

{{v}} - {{h}}

40 |









41 |
42 |
43 |
44 |
45 |




46 | 47 | {{{t}}} 48 | 49 |




50 |
51 |











52 |
53 |
54 |
55 | 65 | 66 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/compile.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | 3 | var base = fs.readFileSync('base.html').toString(); 4 | 5 | ['top','bottom'].forEach(function(v){ 6 | ['left','right'].forEach(function(h){ 7 | ['1','2','3','4','5'].forEach(function(t){ 8 | var text = fs.readFileSync('t' +t+'.html').toString(); 9 | var outFile = 'out/' + t +v.charAt(0) + h.charAt(0) + '.html'; 10 | var out = base 11 | .replace(/\{\{\{t\}\}\}/g,text) 12 | .replace(/\{\{v\}\}/g,v) 13 | .replace(/\{\{h\}\}/g,h); 14 | fs.writeFileSync(outFile, out); 15 | }); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/index.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | ['top','bottom'].forEach(function(v){ 3 | ['left','right'].forEach(function(h){ 4 | ['1','2','3','4','5'].forEach(function(t){ 5 | var inFile = 'out/'+ t +v.charAt(0) + h.charAt(0) + '.html'; 6 | var outFile = 'pic/'+ t + v.charAt(0) + h.charAt(0) + '.png'; 7 | var path = 'file://' + fs.absolute(inFile) 8 | var page = require('webpage').create(); 9 | page.viewportSize = { 10 | width: 1000, 11 | height: 800 12 | };; 13 | page.open(path, function(status) { 14 | window.setTimeout(function () { 15 | console.log(status); 16 | page.render(outFile); 17 | setTimeout(function(){ 18 | phantom.exit(); 19 | }, 0); 20 | },2000); 21 | }); 22 | }); 23 | }); 24 | }); -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/out/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/pic/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/t1.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | start time 4 | 5 | 6 | 7 | end time 8 | 9 | 11 |
-------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/t2.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | end time 4 | 5 | 7 |
8 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/t3.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 |
-------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/t4.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 |
-------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap-datetimepicker/test/screen-capture/t5.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap.slim.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // Core variables and mixins 8 | //@import "bootstrap/variables"; 9 | //@import "bootstrap/mixins"; 10 | 11 | // Reset and dependencies 12 | @import "bootstrap/normalize"; 13 | //@import "bootstrap/print"; 14 | //@import "bootstrap/glyphicons"; 15 | 16 | // Core CSS 17 | @import "bootstrap/scaffolding"; 18 | @import "bootstrap/type"; 19 | @import "bootstrap/code"; 20 | @import "bootstrap/grid"; 21 | @import "bootstrap/tables"; 22 | @import "bootstrap/forms"; 23 | @import "bootstrap/buttons"; 24 | 25 | // Components 26 | @import "bootstrap/component-animations"; 27 | //@import "bootstrap/dropdowns"; 28 | @import "bootstrap/badges"; 29 | //@import "bootstrap/breadcrumbs"; 30 | @import "bootstrap/close"; 31 | // 32 | //@import "bootstrap/button-groups"; 33 | //@import "bootstrap/input-groups"; 34 | //@import "bootstrap/navs"; 35 | //@import "bootstrap/navbar"; 36 | //@import "bootstrap/pagination"; 37 | //@import "bootstrap/pager"; 38 | //@import "bootstrap/labels"; 39 | //@import "bootstrap/jumbotron"; 40 | //@import "bootstrap/thumbnails"; 41 | //@import "bootstrap/alerts"; 42 | //@import "bootstrap/progress-bars"; 43 | //@import "bootstrap/media"; 44 | //@import "bootstrap/list-group"; 45 | //@import "bootstrap/panels"; 46 | //@import "bootstrap/responsive-embed"; 47 | //@import "bootstrap/wells"; 48 | 49 | // Components w/ JavaScript 50 | @import "bootstrap/modals"; 51 | @import "bootstrap/tooltip"; 52 | // 53 | //@import "bootstrap/popovers"; 54 | //@import "bootstrap/carousel"; 55 | 56 | // Utility classes 57 | @import "bootstrap/utilities"; 58 | @import "bootstrap/responsive-utilities"; 59 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_alerts.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Base styles 8 | // ------------------------- 9 | 10 | .alert { 11 | padding: $alert-padding; 12 | margin-bottom: $line-height-computed; 13 | border: 1px solid transparent; 14 | border-radius: $alert-border-radius; 15 | 16 | // Headings for larger alerts 17 | h4 { 18 | margin-top: 0; 19 | // Specified for the h4 to prevent conflicts of changing $headings-color 20 | color: inherit; 21 | } 22 | 23 | // Provide class for links that match alerts 24 | .alert-link { 25 | font-weight: $alert-link-font-weight; 26 | } 27 | 28 | // Improve alignment and spacing of inner content 29 | > p, 30 | > ul { 31 | margin-bottom: 0; 32 | } 33 | 34 | > p + p { 35 | margin-top: 5px; 36 | } 37 | } 38 | 39 | // Dismissible alerts 40 | // 41 | // Expand the right padding and account for the close button's positioning. 42 | 43 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 44 | .alert-dismissible { 45 | padding-right: ($alert-padding + 20); 46 | 47 | // Adjust close link position 48 | .close { 49 | position: relative; 50 | top: -2px; 51 | right: -21px; 52 | color: inherit; 53 | } 54 | } 55 | 56 | // Alternate styles 57 | // 58 | // Generate contextual modifier classes for colorizing the alert. 59 | 60 | .alert-success { 61 | @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); 62 | } 63 | 64 | .alert-info { 65 | @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); 66 | } 67 | 68 | .alert-warning { 69 | @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); 70 | } 71 | 72 | .alert-danger { 73 | @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); 74 | } 75 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_badges.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Base class 8 | .badge { 9 | display: inline-block; 10 | min-width: 10px; 11 | padding: 3px 7px; 12 | font-size: $font-size-small; 13 | font-weight: $badge-font-weight; 14 | color: $badge-color; 15 | line-height: $badge-line-height; 16 | vertical-align: middle; 17 | white-space: nowrap; 18 | text-align: center; 19 | background-color: $badge-bg; 20 | border-radius: $badge-border-radius; 21 | 22 | // Empty badges collapse automatically (not available in IE8) 23 | &:empty { 24 | display: none; 25 | } 26 | 27 | // Quick fix for badges in buttons 28 | .btn & { 29 | position: relative; 30 | top: -1px; 31 | } 32 | 33 | .btn-xs &, 34 | .btn-group-xs > .btn & { 35 | top: 0; 36 | padding: 1px 5px; 37 | } 38 | 39 | // [converter] extracted a& to a.badge 40 | 41 | // Account for badges in navs 42 | .list-group-item.active > &, 43 | .nav-pills > .active > a > & { 44 | color: $badge-active-color; 45 | background-color: $badge-active-bg; 46 | } 47 | 48 | .list-group-item > & { 49 | float: right; 50 | } 51 | 52 | .list-group-item > & + & { 53 | margin-right: 5px; 54 | } 55 | 56 | .nav-pills > li > a > & { 57 | margin-left: 3px; 58 | } 59 | } 60 | 61 | // Hover state, but only for links 62 | a.badge { 63 | &:hover, 64 | &:focus { 65 | color: $badge-link-hover-color; 66 | text-decoration: none; 67 | cursor: pointer; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | .breadcrumb { 8 | padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; 9 | margin-bottom: $line-height-computed; 10 | list-style: none; 11 | background-color: $breadcrumb-bg; 12 | border-radius: $border-radius-base; 13 | 14 | > li { 15 | display: inline-block; 16 | 17 | + li:before { 18 | content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 19 | padding: 0 5px; 20 | color: $breadcrumb-color; 21 | } 22 | } 23 | 24 | > .active { 25 | color: $breadcrumb-active-color; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | .close { 8 | float: right; 9 | font-size: ($font-size-base * 1.5); 10 | font-weight: $close-font-weight; 11 | line-height: 1; 12 | color: $close-color; 13 | text-shadow: $close-text-shadow; 14 | @include opacity(.2); 15 | 16 | &:hover, 17 | &:focus { 18 | color: $close-color; 19 | text-decoration: none; 20 | cursor: pointer; 21 | @include opacity(.5); 22 | } 23 | 24 | // [converter] extracted button& to button.close 25 | } 26 | 27 | // Additional properties for button version 28 | // iOS requires the button element instead of an anchor tag. 29 | // If you want the anchor version, it requires `href="#"`. 30 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 31 | button.close { 32 | padding: 0; 33 | cursor: pointer; 34 | background: transparent; 35 | border: 0; 36 | -webkit-appearance: none; 37 | } 38 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Inline and block code styles 8 | code, 9 | kbd, 10 | pre, 11 | samp { 12 | font-family: $font-family-monospace; 13 | } 14 | 15 | // Inline code 16 | code { 17 | padding: 2px 4px; 18 | font-size: 90%; 19 | color: $code-color; 20 | background-color: $code-bg; 21 | border-radius: $border-radius-base; 22 | } 23 | 24 | // User input typically entered via keyboard 25 | kbd { 26 | padding: 2px 4px; 27 | font-size: 90%; 28 | color: $kbd-color; 29 | background-color: $kbd-bg; 30 | border-radius: $border-radius-small; 31 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 32 | 33 | kbd { 34 | padding: 0; 35 | font-size: 100%; 36 | font-weight: bold; 37 | box-shadow: none; 38 | } 39 | } 40 | 41 | // Blocks of code 42 | pre { 43 | display: block; 44 | padding: (($line-height-computed - 1) / 2); 45 | margin: 0 0 ($line-height-computed / 2); 46 | font-size: ($font-size-base - 1); // 14px to 13px 47 | line-height: $line-height-base; 48 | word-break: break-all; 49 | word-wrap: break-word; 50 | color: $pre-color; 51 | background-color: $pre-bg; 52 | border: 1px solid $pre-border-color; 53 | border-radius: $border-radius-base; 54 | 55 | // Account for some code outputs that place code tags in pre tags 56 | code { 57 | padding: 0; 58 | font-size: inherit; 59 | color: inherit; 60 | white-space: pre-wrap; 61 | background-color: transparent; 62 | border-radius: 0; 63 | } 64 | } 65 | 66 | // Enable scrollable blocks of code 67 | .pre-scrollable { 68 | max-height: $pre-scrollable-max-height; 69 | overflow-y: scroll; 70 | } 71 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_component-animations.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | // Heads up! 7 | // 8 | // We don't use the `.opacity()` mixin here since it causes a bug with text 9 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 10 | 11 | .fade { 12 | opacity: 0; 13 | @include transition(opacity .15s linear); 14 | &.in { 15 | opacity: 1; 16 | } 17 | } 18 | 19 | .collapse { 20 | display: none; 21 | 22 | &.in { display: block; } 23 | // [converter] extracted tr&.in to tr.collapse.in 24 | // [converter] extracted tbody&.in to tbody.collapse.in 25 | } 26 | 27 | tr.collapse.in { display: table-row; } 28 | 29 | tbody.collapse.in { display: table-row-group; } 30 | 31 | .collapsing { 32 | position: relative; 33 | height: 0; 34 | overflow: hidden; 35 | @include transition-property(height, visibility); 36 | @include transition-duration(.35s); 37 | @include transition-timing-function(ease); 38 | } 39 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_grid.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Container widths 8 | // 9 | // Set the container width, and override it for fixed navbars in media queries. 10 | 11 | .container { 12 | @include container-fixed; 13 | 14 | @media (min-width: $screen-sm-min) { 15 | width: $container-sm; 16 | } 17 | @media (min-width: $screen-md-min) { 18 | width: $container-md; 19 | } 20 | @media (min-width: $screen-lg-min) { 21 | width: $container-lg; 22 | } 23 | } 24 | 25 | 26 | // Fluid container 27 | // 28 | // Utilizes the mixin meant for fixed width containers, but without any defined 29 | // width for fluid, full width layouts. 30 | 31 | .container-fluid { 32 | @include container-fixed; 33 | } 34 | 35 | 36 | // Row 37 | // 38 | // Rows contain and clear the floats of your columns. 39 | 40 | .row { 41 | @include make-row; 42 | } 43 | 44 | 45 | // Columns 46 | // 47 | // Common styles for small and large grid columns 48 | 49 | @include make-grid-columns; 50 | 51 | 52 | // Extra small grid 53 | // 54 | // Columns, offsets, pushes, and pulls for extra small devices like 55 | // smartphones. 56 | 57 | @include make-grid(xs); 58 | 59 | 60 | // Small grid 61 | // 62 | // Columns, offsets, pushes, and pulls for the small device range, from phones 63 | // to tablets. 64 | 65 | @media (min-width: $screen-sm-min) { 66 | @include make-grid(sm); 67 | } 68 | 69 | 70 | // Medium grid 71 | // 72 | // Columns, offsets, pushes, and pulls for the desktop device range. 73 | 74 | @media (min-width: $screen-md-min) { 75 | @include make-grid(md); 76 | } 77 | 78 | 79 | // Large grid 80 | // 81 | // Columns, offsets, pushes, and pulls for the large desktop device range. 82 | 83 | @media (min-width: $screen-lg-min) { 84 | @include make-grid(lg); 85 | } 86 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | .jumbotron { 8 | padding-top: $jumbotron-padding; 9 | padding-bottom: $jumbotron-padding; 10 | margin-bottom: $jumbotron-padding; 11 | color: $jumbotron-color; 12 | background-color: $jumbotron-bg; 13 | 14 | h1, 15 | .h1 { 16 | color: $jumbotron-heading-color; 17 | } 18 | 19 | p { 20 | margin-bottom: ($jumbotron-padding / 2); 21 | font-size: $jumbotron-font-size; 22 | font-weight: 200; 23 | } 24 | 25 | > hr { 26 | border-top-color: darken($jumbotron-bg, 10%); 27 | } 28 | 29 | .container &, 30 | .container-fluid & { 31 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container 32 | } 33 | 34 | .container { 35 | max-width: 100%; 36 | } 37 | 38 | @media screen and (min-width: $screen-sm-min) { 39 | padding-top: ($jumbotron-padding * 1.6); 40 | padding-bottom: ($jumbotron-padding * 1.6); 41 | 42 | .container &, 43 | .container-fluid & { 44 | padding-left: ($jumbotron-padding * 2); 45 | padding-right: ($jumbotron-padding * 2); 46 | } 47 | 48 | h1, 49 | .h1 { 50 | font-size: $jumbotron-heading-font-size; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | .label { 7 | display: inline; 8 | padding: .2em .6em .3em; 9 | font-size: 75%; 10 | font-weight: bold; 11 | line-height: 1; 12 | color: $label-color; 13 | text-align: center; 14 | white-space: nowrap; 15 | vertical-align: baseline; 16 | border-radius: .25em; 17 | 18 | // [converter] extracted a& to a.label 19 | 20 | // Empty labels collapse automatically (not available in IE8) 21 | &:empty { 22 | display: none; 23 | } 24 | 25 | // Quick fix for labels in buttons 26 | .btn & { 27 | position: relative; 28 | top: -1px; 29 | } 30 | } 31 | 32 | // Add hover effects, but only for links 33 | a.label { 34 | &:hover, 35 | &:focus { 36 | color: $label-link-hover-color; 37 | text-decoration: none; 38 | cursor: pointer; 39 | } 40 | } 41 | 42 | // Colors 43 | // Contextual variations (linked labels get darker on :hover) 44 | 45 | .label-default { 46 | @include label-variant($label-default-bg); 47 | } 48 | 49 | .label-primary { 50 | @include label-variant($label-primary-bg); 51 | } 52 | 53 | .label-success { 54 | @include label-variant($label-success-bg); 55 | } 56 | 57 | .label-info { 58 | @include label-variant($label-info-bg); 59 | } 60 | 61 | .label-warning { 62 | @include label-variant($label-warning-bg); 63 | } 64 | 65 | .label-danger { 66 | @include label-variant($label-danger-bg); 67 | } 68 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | @import "mixins"; 3 | 4 | .media { 5 | // Proper spacing between instances of .media 6 | margin-top: 15px; 7 | 8 | &:first-child { 9 | margin-top: 0; 10 | } 11 | } 12 | 13 | .media, 14 | .media-body { 15 | zoom: 1; 16 | overflow: hidden; 17 | } 18 | 19 | .media-body { 20 | width: 10000px; 21 | } 22 | 23 | .media-object { 24 | display: block; 25 | 26 | // Fix collapse in webkit from max-width: 100% and display: table-cell. 27 | &.img-thumbnail { 28 | max-width: none; 29 | } 30 | } 31 | 32 | .media-right, 33 | .media > .pull-right { 34 | padding-left: 10px; 35 | } 36 | 37 | .media-left, 38 | .media > .pull-left { 39 | padding-right: 10px; 40 | } 41 | 42 | .media-left, 43 | .media-right, 44 | .media-body { 45 | display: table-cell; 46 | vertical-align: top; 47 | } 48 | 49 | .media-middle { 50 | vertical-align: middle; 51 | } 52 | 53 | .media-bottom { 54 | vertical-align: bottom; 55 | } 56 | 57 | // Reset margins on headings for tighter default spacing 58 | .media-heading { 59 | margin-top: 0; 60 | margin-bottom: 5px; 61 | } 62 | 63 | // Media list variation 64 | // 65 | // Undo default ul/ol styles 66 | .media-list { 67 | padding-left: 0; 68 | list-style: none; 69 | } 70 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text"; 6 | @import "mixins/opacity"; 7 | @import "mixins/image"; 8 | @import "mixins/labels"; 9 | @import "mixins/reset-filter"; 10 | @import "mixins/resize"; 11 | @import "mixins/responsive-visibility"; 12 | @import "mixins/size"; 13 | @import "mixins/tab-focus"; 14 | @import "mixins/reset-text"; 15 | @import "mixins/text-emphasis"; 16 | @import "mixins/text-overflow"; 17 | @import "mixins/vendor-prefixes"; 18 | 19 | // Components 20 | @import "mixins/alerts"; 21 | @import "mixins/buttons"; 22 | @import "mixins/panels"; 23 | @import "mixins/pagination"; 24 | @import "mixins/list-group"; 25 | @import "mixins/nav-divider"; 26 | @import "mixins/forms"; 27 | @import "mixins/progress-bar"; 28 | @import "mixins/table-row"; 29 | 30 | // Skins 31 | @import "mixins/background-variant"; 32 | @import "mixins/border-radius"; 33 | @import "mixins/gradients"; 34 | 35 | // Layout 36 | @import "mixins/clearfix"; 37 | @import "mixins/center-block"; 38 | @import "mixins/nav-vertical-align"; 39 | @import "mixins/grid-framework"; 40 | @import "mixins/grid"; 41 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_pager.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | .pager { 8 | padding-left: 0; 9 | margin: $line-height-computed 0; 10 | list-style: none; 11 | text-align: center; 12 | @include clearfix; 13 | li { 14 | display: inline; 15 | > a, 16 | > span { 17 | display: inline-block; 18 | padding: 5px 14px; 19 | background-color: $pager-bg; 20 | border: 1px solid $pager-border; 21 | border-radius: $pager-border-radius; 22 | } 23 | 24 | > a:hover, 25 | > a:focus { 26 | text-decoration: none; 27 | background-color: $pager-hover-bg; 28 | } 29 | } 30 | 31 | .next { 32 | > a, 33 | > span { 34 | float: right; 35 | } 36 | } 37 | 38 | .previous { 39 | > a, 40 | > span { 41 | float: left; 42 | } 43 | } 44 | 45 | .disabled { 46 | > a, 47 | > a:hover, 48 | > a:focus, 49 | > span { 50 | color: $pager-disabled-color; 51 | background-color: $pager-bg; 52 | cursor: $cursor-disabled; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_responsive-embed.scss: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | @import "variables"; 5 | @import "mixins"; 6 | .embed-responsive { 7 | position: relative; 8 | display: block; 9 | height: 0; 10 | padding: 0; 11 | overflow: hidden; 12 | 13 | .embed-responsive-item, 14 | iframe, 15 | embed, 16 | object, 17 | video { 18 | position: absolute; 19 | top: 0; 20 | left: 0; 21 | bottom: 0; 22 | height: 100%; 23 | width: 100%; 24 | border: 0; 25 | } 26 | } 27 | 28 | // Modifier class for 16:9 aspect ratio 29 | .embed-responsive-16by9 { 30 | padding-bottom: 56.25%; 31 | } 32 | 33 | // Modifier class for 4:3 aspect ratio 34 | .embed-responsive-4by3 { 35 | padding-bottom: 75%; 36 | } 37 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_thumbnails.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Mixin and adjust the regular image class 8 | .thumbnail { 9 | display: block; 10 | padding: $thumbnail-padding; 11 | margin-bottom: $line-height-computed; 12 | line-height: $line-height-base; 13 | background-color: $thumbnail-bg; 14 | border: 1px solid $thumbnail-border; 15 | border-radius: $thumbnail-border-radius; 16 | @include transition(border .2s ease-in-out); 17 | 18 | > img, 19 | a > img { 20 | @include img-responsive; 21 | margin-left: auto; 22 | margin-right: auto; 23 | } 24 | 25 | // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active 26 | 27 | // Image captions 28 | .caption { 29 | padding: $thumbnail-caption-padding; 30 | color: $thumbnail-caption-color; 31 | } 32 | } 33 | 34 | // Add a hover state for linked versions only 35 | a.thumbnail:hover, 36 | a.thumbnail:focus, 37 | a.thumbnail.active { 38 | border-color: $link-color; 39 | } 40 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_utilities.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Floats 8 | // ------------------------- 9 | 10 | .clearfix { 11 | @include clearfix; 12 | } 13 | .center-block { 14 | @include center-block; 15 | } 16 | .pull-right { 17 | float: right !important; 18 | } 19 | .pull-left { 20 | float: left !important; 21 | } 22 | 23 | 24 | // Toggling content 25 | // ------------------------- 26 | 27 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 28 | .hide { 29 | display: none !important; 30 | } 31 | .show { 32 | display: block !important; 33 | } 34 | .invisible { 35 | visibility: hidden; 36 | } 37 | .text-hide { 38 | @include text-hide; 39 | } 40 | 41 | 42 | // Hide from screenreaders and browsers 43 | // 44 | // Credit: HTML5 Boilerplate 45 | 46 | .hidden { 47 | display: none !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/_wells.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | @import "variables"; 5 | @import "mixins"; 6 | 7 | // Base class 8 | .well { 9 | min-height: 20px; 10 | padding: 19px; 11 | margin-bottom: 20px; 12 | background-color: $well-bg; 13 | border: 1px solid $well-border; 14 | border-radius: $border-radius-base; 15 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 16 | blockquote { 17 | border-color: #ddd; 18 | border-color: rgba(0,0,0,.15); 19 | } 20 | } 21 | 22 | // Sizes 23 | .well-lg { 24 | padding: 24px; 25 | border-radius: $border-radius-large; 26 | } 27 | .well-sm { 28 | padding: 9px; 29 | border-radius: $border-radius-small; 30 | } 31 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_alerts.scss: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | @mixin alert-variant($background, $border, $text-color) { 4 | background-color: $background; 5 | border-color: $border; 6 | color: $text-color; 7 | 8 | hr { 9 | border-top-color: darken($border, 5%); 10 | } 11 | .alert-link { 12 | color: darken($text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | // [converter] $parent hack 4 | @mixin bg-variant($parent, $color) { 5 | #{$parent} { 6 | background-color: $color; 7 | } 8 | a#{$parent}:hover, 9 | a#{$parent}:focus { 10 | background-color: darken($color, 10%); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | @mixin border-top-radius($radius) { 4 | border-top-right-radius: $radius; 5 | border-top-left-radius: $radius; 6 | } 7 | @mixin border-right-radius($radius) { 8 | border-bottom-right-radius: $radius; 9 | border-top-right-radius: $radius; 10 | } 11 | @mixin border-bottom-radius($radius) { 12 | border-bottom-right-radius: $radius; 13 | border-bottom-left-radius: $radius; 14 | } 15 | @mixin border-left-radius($radius) { 16 | border-bottom-left-radius: $radius; 17 | border-top-left-radius: $radius; 18 | } 19 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | @mixin button-variant($color, $background, $border) { 7 | color: $color; 8 | background-color: $background; 9 | border-color: $border; 10 | 11 | &:focus, 12 | &.focus { 13 | color: $color; 14 | background-color: darken($background, 10%); 15 | border-color: darken($border, 25%); 16 | } 17 | &:hover { 18 | color: $color; 19 | background-color: darken($background, 10%); 20 | border-color: darken($border, 12%); 21 | } 22 | &:active, 23 | &.active, 24 | .open > &.dropdown-toggle { 25 | color: $color; 26 | background-color: darken($background, 10%); 27 | border-color: darken($border, 12%); 28 | 29 | &:hover, 30 | &:focus, 31 | &.focus { 32 | color: $color; 33 | background-color: darken($background, 17%); 34 | border-color: darken($border, 25%); 35 | } 36 | } 37 | &:active, 38 | &.active, 39 | .open > &.dropdown-toggle { 40 | background-image: none; 41 | } 42 | &.disabled, 43 | &[disabled], 44 | fieldset[disabled] & { 45 | &, 46 | &:hover, 47 | &:focus, 48 | &.focus, 49 | &:active, 50 | &.active { 51 | background-color: $background; 52 | border-color: $border; 53 | } 54 | } 55 | 56 | .badge { 57 | color: $background; 58 | background-color: $color; 59 | } 60 | } 61 | 62 | // Button sizes 63 | @mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { 64 | padding: $padding-vertical $padding-horizontal; 65 | font-size: $font-size; 66 | line-height: $line-height; 67 | border-radius: $border-radius; 68 | } 69 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_center-block.scss: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | @mixin center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | @mixin clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_hide-text.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | @mixin hide-text() { 11 | font: 0/0 a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | @mixin text-hide() { 20 | @include hide-text; 21 | } 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | @mixin img-responsive($display: block) { 10 | display: $display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 21 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}")); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); 31 | background-size: $width-1x $height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_labels.scss: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | @mixin label-variant($color) { 4 | background-color: $color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken($color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state} 9 | } 10 | 11 | a.list-group-item-#{$state}, 12 | button.list-group-item-#{$state} { 13 | color: $color; 14 | 15 | .list-group-item-heading { 16 | color: inherit; 17 | } 18 | 19 | &:hover, 20 | &:focus { 21 | color: $color; 22 | background-color: darken($background, 5%); 23 | } 24 | &.active, 25 | &.active:hover, 26 | &.active:focus { 27 | color: #fff; 28 | background-color: $color; 29 | border-color: $color; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: #e5e5e5) { 6 | height: 1px; 7 | margin: (($line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: $color; 10 | } 11 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_nav-vertical-align.scss: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | @mixin navbar-vertical-align($element-height) { 7 | margin-top: (($navbar-height - $element-height) / 2); 8 | margin-bottom: (($navbar-height - $element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_opacity.scss: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | @mixin opacity($opacity) { 4 | opacity: $opacity; 5 | // IE8 filter 6 | $opacity-ie: ($opacity * 100); 7 | filter: alpha(opacity=$opacity-ie); 8 | } 9 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: $padding-vertical $padding-horizontal; 8 | font-size: $font-size; 9 | line-height: $line-height; 10 | } 11 | &:first-child { 12 | > a, 13 | > span { 14 | @include border-left-radius($border-radius); 15 | } 16 | } 17 | &:last-child { 18 | > a, 19 | > span { 20 | @include border-right-radius($border-radius); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_panels.scss: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { 4 | border-color: $border; 5 | 6 | & > .panel-heading { 7 | color: $heading-text-color; 8 | background-color: $heading-bg-color; 9 | border-color: $heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: $border; 13 | } 14 | .badge { 15 | color: $heading-bg-color; 16 | background-color: $heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: $border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_progress-bar.scss: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | @mixin progress-bar-variant($color) { 4 | background-color: $color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | @include gradient-striped; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_reset-filter.scss: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | @mixin reset-filter() { 7 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 8 | } 9 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text() { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size. 4 | font-style: normal; 5 | font-weight: normal; 6 | letter-spacing: normal; 7 | line-break: auto; 8 | line-height: $line-height-base; 9 | text-align: left; // Fallback for where `start` is not supported 10 | text-align: start; 11 | text-decoration: none; 12 | text-shadow: none; 13 | text-transform: none; 14 | white-space: normal; 15 | word-break: normal; 16 | word-spacing: normal; 17 | word-wrap: normal; 18 | } 19 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | resize: $direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_responsive-visibility.scss: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | // [converter] $parent hack 6 | @mixin responsive-visibility($parent) { 7 | #{$parent} { 8 | display: block !important; 9 | } 10 | table#{$parent} { display: table !important; } 11 | tr#{$parent} { display: table-row !important; } 12 | th#{$parent}, 13 | td#{$parent} { display: table-cell !important; } 14 | } 15 | 16 | // [converter] $parent hack 17 | @mixin responsive-invisibility($parent) { 18 | #{$parent} { 19 | display: none !important; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height) { 4 | width: $width; 5 | height: $height; 6 | } 7 | 8 | @mixin square($size) { 9 | @include size($size, $size); 10 | } 11 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_tab-focus.scss: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | @mixin tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.#{$state}, 10 | > th.#{$state}, 11 | &.#{$state} > td, 12 | &.#{$state} > th { 13 | background-color: $background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.#{$state}:hover, 21 | > th.#{$state}:hover, 22 | &.#{$state}:hover > td, 23 | &:hover > .#{$state}, 24 | &.#{$state}:hover > th { 25 | background-color: darken($background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | // [converter] $parent hack 4 | @mixin text-emphasis-variant($parent, $color) { 5 | #{$parent} { 6 | color: $color; 7 | } 8 | a#{$parent}:hover, 9 | a#{$parent}:focus { 10 | color: darken($color, 10%); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /AFront/src/plugin/bootstrap/scss/bootstrap/mixins/_text-overflow.scss: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/.npminstall.done: -------------------------------------------------------------------------------- 1 | Mon Oct 31 2016 12:49:45 GMT+0800 (CST) -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 2016.07.25 v0.1.23 2 | - fixed lost style file 3 | - fixed repeat packed font file 4 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 mint-ui 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/actionsheet/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-actionsheet { 3 | position: fixed; 4 | background: #e0e0e0; 5 | width: 100%; 6 | text-align: center; 7 | bottom: 0; 8 | left: 50%; 9 | -webkit-transform: translate3d(-50%, 0, 0); 10 | transform: translate3d(-50%, 0, 0); 11 | -webkit-backface-visibility: hidden; 12 | backface-visibility: hidden; 13 | -webkit-transition: -webkit-transform .3s ease-out; 14 | transition: -webkit-transform .3s ease-out; 15 | transition: transform .3s ease-out; 16 | transition: transform .3s ease-out, -webkit-transform .3s ease-out; 17 | } 18 | .mint-actionsheet-list { 19 | list-style: none; 20 | padding: 0; 21 | margin: 0; 22 | } 23 | .mint-actionsheet-listitem { 24 | border-bottom: solid 1px #e0e0e0; 25 | } 26 | .mint-actionsheet-listitem, .mint-actionsheet-button { 27 | display: block; 28 | width: 100%; 29 | height: 45px; 30 | line-height: 45px; 31 | font-size: 18px; 32 | color: #333; 33 | background-color: #fff; 34 | } 35 | .mint-actionsheet-listitem:active, .mint-actionsheet-button:active { 36 | background-color: #f0f0f0; 37 | } 38 | .actionsheet-float-enter, .actionsheet-float-leave-active { 39 | -webkit-transform: translate3d(-50%, 100%, 0); 40 | transform: translate3d(-50%, 100%, 0); 41 | } 42 | .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000} -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/badge/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-badge { 11 | color: #fff; 12 | text-align: center; 13 | display: inline-block 14 | } 15 | .mint-badge.is-size-large { 16 | border-radius: 14px; 17 | font-size: 18px; 18 | padding: 2px 10px 19 | } 20 | .mint-badge.is-size-small { 21 | border-radius: 8px; 22 | font-size: 12px; 23 | padding: 2px 6px 24 | } 25 | .mint-badge.is-size-normal { 26 | border-radius: 12px; 27 | font-size: 15px; 28 | padding: 2px 8px 29 | } 30 | .mint-badge.is-warning { 31 | background-color: #ffc107 32 | } 33 | .mint-badge.is-error { 34 | background-color: #f44336 35 | } 36 | .mint-badge.is-primary { 37 | background-color: #26a2ff 38 | } 39 | .mint-badge.is-success { 40 | background-color: #4caf50 41 | } 42 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/cell-swipe/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-cell-swipe .mint-cell-wrapper, .mint-cell-swipe .mint-cell-left, .mint-cell-swipe .mint-cell-right { 11 | -webkit-transition: -webkit-transform 150ms ease-in-out; 12 | transition: -webkit-transform 150ms ease-in-out; 13 | transition: transform 150ms ease-in-out; 14 | transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out; 15 | } 16 | .mint-cell-swipe-buttongroup { 17 | height: 100%; 18 | } 19 | .mint-cell-swipe-button { 20 | height: 100%; 21 | display: inline-block; 22 | padding: 0 10px; 23 | line-height: 48px; 24 | } 25 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/datetime-picker/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-datetime { 11 | width: 100%; 12 | } 13 | .mint-datetime .picker-slot-wrapper, .mint-datetime .picker-item { 14 | -webkit-backface-visibility: hidden; 15 | backface-visibility: hidden; 16 | } 17 | .mint-datetime .picker-toolbar { 18 | border-bottom: solid 1px #eaeaea; 19 | } 20 | .mint-datetime-action { 21 | display: inline-block; 22 | width: 50%; 23 | text-align: center; 24 | line-height: 40px; 25 | font-size: 16px; 26 | color: #26a2ff; 27 | } 28 | .mint-datetime-cancel { 29 | float: left; 30 | } 31 | .mint-datetime-confirm { 32 | float: right; 33 | } 34 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/header/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-header { 11 | -webkit-box-align: center; 12 | -ms-flex-align: center; 13 | align-items: center; 14 | background-color: #26a2ff; 15 | box-sizing: border-box; 16 | color: #fff; 17 | display: -webkit-box; 18 | display: -ms-flexbox; 19 | display: flex; 20 | font-size: 14px; 21 | height: 40px; 22 | line-height: 1; 23 | padding: 0 10px; 24 | position: relative; 25 | text-align: center; 26 | white-space: nowrap; 27 | } 28 | .mint-header .mint-button { 29 | background-color: transparent; 30 | border: 0; 31 | box-shadow: none; 32 | color: inherit; 33 | display: inline-block; 34 | padding: 0; 35 | font-size: inherit 36 | } 37 | .mint-header .mint-button::after { 38 | content: none; 39 | } 40 | .mint-header.is-fixed { 41 | top: 0; 42 | right: 0; 43 | left: 0; 44 | position: fixed; 45 | z-index: 1; 46 | } 47 | .mint-header-button { 48 | -webkit-box-flex: .5; 49 | -ms-flex: .5; 50 | flex: .5; 51 | } 52 | .mint-header-button > a { 53 | color: inherit; 54 | } 55 | .mint-header-button.is-right { 56 | text-align: right; 57 | } 58 | .mint-header-button.is-left { 59 | text-align: left; 60 | } 61 | .mint-header-title { 62 | overflow: hidden; 63 | text-overflow: ellipsis; 64 | white-space: nowrap; 65 | font-size: inherit; 66 | font-weight: 400; 67 | -webkit-box-flex: 1; 68 | -ms-flex: 1; 69 | flex: 1; 70 | } 71 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/index-list/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-indexlist { 11 | width: 100%; 12 | position: relative; 13 | overflow: hidden 14 | } 15 | .mint-indexlist-content { 16 | overflow: auto 17 | } 18 | .mint-indexlist-nav { 19 | position: absolute; 20 | top: 0; 21 | bottom: 0; 22 | right: 0; 23 | margin: 0; 24 | background-color: #fff; 25 | border-left: solid 1px #ddd; 26 | text-align: center; 27 | max-height: 100%; 28 | display: -webkit-box; 29 | display: -ms-flexbox; 30 | display: flex; 31 | -webkit-box-orient: vertical; 32 | -webkit-box-direction: normal; 33 | -ms-flex-direction: column; 34 | flex-direction: column; 35 | -webkit-box-pack: center; 36 | -ms-flex-pack: center; 37 | justify-content: center 38 | } 39 | .mint-indexlist-navlist { 40 | list-style: none; 41 | max-height: 100%; 42 | display: -webkit-box; 43 | display: -ms-flexbox; 44 | display: flex; 45 | -webkit-box-orient: vertical; 46 | -webkit-box-direction: normal; 47 | -ms-flex-direction: column; 48 | flex-direction: column 49 | } 50 | .mint-indexlist-navitem { 51 | padding: 2px 6px; 52 | font-size: 12px; 53 | -webkit-user-select: none; 54 | -moz-user-select: none; 55 | -ms-user-select: none; 56 | user-select: none; 57 | -webkit-touch-callout: none 58 | } 59 | .mint-indexlist-indicator { 60 | position: absolute; 61 | width: 50px; 62 | height: 50px; 63 | top: 50%; 64 | left: 50%; 65 | -webkit-transform: translate(-50%, -50%); 66 | transform: translate(-50%, -50%); 67 | text-align: center; 68 | line-height: 50px; 69 | background-color: rgba(0, 0, 0, .7); 70 | border-radius: 5px; 71 | color: #fff; 72 | font-size: 22px 73 | } 74 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/index-section/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-indexsection { 3 | padding: 0; 4 | margin: 0 5 | } 6 | .mint-indexsection-index { 7 | padding: 10px; 8 | background-color: #fafafa 9 | } 10 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/indicator/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-indicator { 3 | -webkit-transition: opacity .2s linear; 4 | transition: opacity .2s linear; 5 | } 6 | .mint-indicator-wrapper { 7 | top: 50%; 8 | left: 50%; 9 | position: fixed; 10 | -webkit-transform: translate(-50%, -50%); 11 | transform: translate(-50%, -50%); 12 | border-radius: 5px; 13 | background: rgba(0, 0, 0, 0.7); 14 | color: white; 15 | box-sizing: border-box; 16 | text-align: center; 17 | } 18 | .mint-indicator-text { 19 | display: block; 20 | color: #fff; 21 | text-align: center; 22 | margin-top: 10px; 23 | font-size: 16px; 24 | } 25 | .mint-indicator-spin { 26 | display: inline-block; 27 | text-align: center; 28 | } 29 | .mint-indicator-mask { 30 | top: 0; 31 | left: 0; 32 | position: fixed; 33 | width: 100%; 34 | height: 100%; 35 | opacity: 0; 36 | background: transparent; 37 | } 38 | .mint-indicator-enter, .mint-indicator-leave-active { 39 | opacity: 0; 40 | } 41 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/infinite-scroll/style.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/lazyload/style.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/navbar/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-navbar { 11 | background-color: #fff; 12 | display: -webkit-box; 13 | display: -ms-flexbox; 14 | display: flex; 15 | text-align: center; 16 | } 17 | .mint-navbar .mint-tab-item { 18 | padding: 17px 0; 19 | font-size: 15px 20 | } 21 | .mint-navbar .mint-tab-item:last-child { 22 | border-right: 0; 23 | } 24 | .mint-navbar .mint-tab-item.is-selected { 25 | border-bottom: 3px solid #26a2ff; 26 | color: #26a2ff; 27 | margin-bottom: -3px; 28 | } 29 | .mint-navbar.is-fixed { 30 | top: 0; 31 | right: 0; 32 | left: 0; 33 | position: fixed; 34 | z-index: 1; 35 | } 36 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/progress/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mt-progress { 3 | position: relative; 4 | display: -webkit-box; 5 | display: -ms-flexbox; 6 | display: flex; 7 | height: 30px; 8 | line-height: 30px 9 | } 10 | .mt-progress > * { 11 | display: -ms-flexbox; 12 | display: flex; 13 | display: -webkit-box 14 | } 15 | .mt-progress *[slot="start"] { 16 | margin-right: 5px 17 | } 18 | .mt-progress *[slot="end"] { 19 | margin-left: 5px 20 | } 21 | .mt-progress-content { 22 | position: relative; 23 | -webkit-box-flex: 1; 24 | -ms-flex: 1; 25 | flex: 1 26 | } 27 | .mt-progress-runway { 28 | position: absolute; 29 | -webkit-transform: translate(0, -50%); 30 | transform: translate(0, -50%); 31 | top: 50%; 32 | left: 0; 33 | right: 0; 34 | background-color: #ebebeb; 35 | height: 3px 36 | } 37 | .mt-progress-progress { 38 | position: absolute; 39 | display: block; 40 | background-color: #26a2ff; 41 | top: 50%; 42 | -webkit-transform: translate(0, -50%); 43 | transform: translate(0, -50%); 44 | width: 0 45 | } 46 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/radio/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-radiolist .mint-cell { 11 | padding: 0; 12 | } 13 | .mint-radiolist-label { 14 | display: block; 15 | padding: 0 10px; 16 | } 17 | .mint-radiolist-title { 18 | font-size: 12px; 19 | margin: 8px; 20 | display: block; 21 | color: #888; 22 | } 23 | .mint-radio {} 24 | .mint-radio.is-right { 25 | float: right; 26 | } 27 | .mint-radio-label { 28 | vertical-align: middle; 29 | margin-left: 6px; 30 | } 31 | .mint-radio-input { 32 | display: none; 33 | } 34 | .mint-radio-input:checked + .mint-radio-core { 35 | background-color: #26a2ff; 36 | border-color: #26a2ff; 37 | } 38 | .mint-radio-input:checked + .mint-radio-core::after { 39 | background-color: #fff; 40 | -webkit-transform: scale(1); 41 | transform: scale(1); 42 | } 43 | .mint-radio-input[disabled] + .mint-radio-core { 44 | background-color: #d9d9d9; 45 | border-color: #ccc; 46 | } 47 | .mint-radio-core { 48 | display: inline-block; 49 | background-color: #fff; 50 | border-radius: 100%; 51 | border: 1px solid #ccc; 52 | position: relative; 53 | width: 20px; 54 | height: 20px; 55 | vertical-align: middle; 56 | } 57 | .mint-radio-core::after { 58 | content: " "; 59 | border-radius: 100%; 60 | top: 5px; 61 | left: 5px; 62 | position: absolute; 63 | width: 8px; 64 | height: 8px; 65 | -webkit-transition: -webkit-transform .2s; 66 | transition: -webkit-transform .2s; 67 | transition: transform .2s; 68 | transition: transform .2s, -webkit-transform .2s; 69 | -webkit-transform: scale(0); 70 | transform: scale(0); 71 | } 72 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/range/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mt-range { 3 | position: relative; 4 | display: -webkit-box; 5 | display: -ms-flexbox; 6 | display: flex; 7 | height: 30px; 8 | line-height: 30px 9 | } 10 | .mt-range > * { 11 | display: -ms-flexbox; 12 | display: flex; 13 | display: -webkit-box 14 | } 15 | .mt-range *[slot=start] { 16 | margin-right: 5px 17 | } 18 | .mt-range *[slot=end] { 19 | margin-left: 5px 20 | } 21 | .mt-range-content { 22 | position: relative; 23 | -webkit-box-flex: 1; 24 | -ms-flex: 1; 25 | flex: 1; 26 | margin-right: 30px 27 | } 28 | .mt-range-runway { 29 | position: absolute; 30 | top: 50%; 31 | -webkit-transform: translateY(-50%); 32 | transform: translateY(-50%); 33 | left: 0; 34 | right: -30px; 35 | border-top-color: #a9acb1; 36 | border-top-style: solid 37 | } 38 | .mt-range-thumb { 39 | background-color: #fff; 40 | position: absolute; 41 | left: 0; 42 | top: 0; 43 | width: 30px; 44 | height: 30px; 45 | border-radius: 100%; 46 | cursor: move; 47 | box-shadow: 0 1px 3px rgba(0,0,0,.4) 48 | } 49 | .mt-range-progress { 50 | position: absolute; 51 | display: block; 52 | background-color: #26a2ff; 53 | top: 50%; 54 | -webkit-transform: translateY(-50%); 55 | transform: translateY(-50%); 56 | width: 0 57 | } 58 | .mt-range--disabled { 59 | opacity: 0.5 60 | } 61 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/swipe-item/style.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/swipe/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-swipe { 3 | overflow: hidden; 4 | position: relative; 5 | height: 100%; 6 | } 7 | .mint-swipe-items-wrap { 8 | position: relative; 9 | overflow: hidden; 10 | height: 100%; 11 | } 12 | .mint-swipe-items-wrap > div { 13 | position: absolute; 14 | -webkit-transform: translateX(-100%); 15 | transform: translateX(-100%); 16 | width: 100%; 17 | height: 100%; 18 | display: none 19 | } 20 | .mint-swipe-items-wrap > div.is-active { 21 | display: block; 22 | -webkit-transform: none; 23 | transform: none; 24 | } 25 | .mint-swipe-indicators { 26 | position: absolute; 27 | bottom: 10px; 28 | left: 50%; 29 | -webkit-transform: translateX(-50%); 30 | transform: translateX(-50%); 31 | } 32 | .mint-swipe-indicator { 33 | width: 8px; 34 | height: 8px; 35 | display: inline-block; 36 | border-radius: 100%; 37 | background: #000; 38 | opacity: 0.2; 39 | margin: 0 3px; 40 | } 41 | .mint-swipe-indicator.is-active { 42 | background: #fff; 43 | } 44 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/switch/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-switch { 11 | display: -webkit-box; 12 | display: -ms-flexbox; 13 | display: flex; 14 | -webkit-box-align: center; 15 | -ms-flex-align: center; 16 | align-items: center; 17 | position: relative 18 | } 19 | .mint-switch-label { 20 | margin-left: 10px; 21 | display: inline-block 22 | } 23 | .mint-switch-label:empty { 24 | margin-left: 0 25 | } 26 | .mint-switch-core { 27 | display: inline-block; 28 | position: relative; 29 | width: 52px; 30 | height: 32px; 31 | border: 1px solid #d9d9d9; 32 | border-radius: 16px; 33 | box-sizing: border-box; 34 | background: #d9d9d9 35 | } 36 | .mint-switch-core::after, .mint-switch-core::before { 37 | content: " "; 38 | top: 0; 39 | left: 0; 40 | position: absolute; 41 | -webkit-transition: -webkit-transform .3s; 42 | transition: -webkit-transform .3s; 43 | transition: transform .3s; 44 | transition: transform .3s, -webkit-transform .3s; 45 | border-radius: 15px 46 | } 47 | .mint-switch-core::after { 48 | width: 30px; 49 | height: 30px; 50 | background-color: #fff; 51 | box-shadow: 0 1px 3px rgba(0, 0, 0, .4) 52 | } 53 | .mint-switch-core::before { 54 | width: 50px; 55 | height: 30px; 56 | background-color: #fdfdfd 57 | } 58 | .mint-switch-input { 59 | display: none 60 | } 61 | .mint-switch-input:checked + .mint-switch-core { 62 | border-color: #26a2ff; 63 | background-color: #26a2ff 64 | } 65 | .mint-switch-input:checked + .mint-switch-core::before { 66 | -webkit-transform: scale(0); 67 | transform: scale(0) 68 | } 69 | .mint-switch-input:checked + .mint-switch-core::after { 70 | -webkit-transform: translateX(20px); 71 | transform: translateX(20px) 72 | } 73 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/tab-container-item/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-tab-container-item { 3 | -ms-flex-negative: 0; 4 | flex-shrink: 0; 5 | width: 100% 6 | } 7 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/tab-container/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-tab-container { 3 | overflow: hidden; 4 | position: relative; 5 | } 6 | .mint-tab-container .swipe-transition { 7 | -webkit-transition: -webkit-transform 150ms ease-in-out; 8 | transition: -webkit-transform 150ms ease-in-out; 9 | transition: transform 150ms ease-in-out; 10 | transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out; 11 | } 12 | .mint-tab-container-wrap { 13 | display: -webkit-box; 14 | display: -ms-flexbox; 15 | display: flex; 16 | } 17 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/tab-item/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-tab-item { 11 | display: block; 12 | padding: 7px 0; 13 | -webkit-box-flex: 1; 14 | -ms-flex: 1; 15 | flex: 1 16 | } 17 | .mint-tab-item-icon { 18 | width: 24px; 19 | height: 24px; 20 | margin: 0 auto 5px 21 | } 22 | .mint-tab-item-icon:empty { 23 | display: none 24 | } 25 | .mint-tab-item-icon > * { 26 | display: block; 27 | width: 100%; 28 | height: 100% 29 | } 30 | .mint-tab-item-label { 31 | color: inherit; 32 | font-size: 12px; 33 | line-height: 1 34 | } 35 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/tabbar/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-tabbar { 11 | position: relative; 12 | background-color: #fafafa; 13 | display: -webkit-box; 14 | display: -ms-flexbox; 15 | display: flex; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | position: absolute; 20 | text-align: center; 21 | } 22 | .mint-tabbar > .mint-tab-item.is-selected { 23 | background-color: #eaeaea; 24 | color: #26a2ff; 25 | } 26 | .mint-tabbar::after { 27 | color: #d9d9d9; 28 | content: " "; 29 | width: 100%; 30 | height: 1; 31 | border-top: 1px solid; 32 | top: 0; 33 | left: 0; 34 | position: absolute; 35 | -webkit-transform-origin: 0 0; 36 | transform-origin: 0 0; 37 | } 38 | @media screen and (-webkit-min-device-pixel-ratio: 2) { 39 | .mint-tabbar::after { 40 | -webkit-transform: scaleY(.5); 41 | transform: scaleY(.5); 42 | } 43 | } 44 | .mint-tabbar.is-fixed { 45 | right: 0; 46 | bottom: 0; 47 | left: 0; 48 | position: fixed; 49 | z-index: 1; 50 | } 51 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/lib/toast/style.css: -------------------------------------------------------------------------------- 1 | 2 | .mint-toast { 3 | position: fixed; 4 | max-width: 80%; 5 | border-radius: 5px; 6 | background: rgba(0, 0, 0, 0.7); 7 | color: #fff; 8 | box-sizing: border-box; 9 | text-align: center; 10 | z-index: 1000; 11 | -webkit-transition: opacity .3s linear; 12 | transition: opacity .3s linear 13 | } 14 | .mint-toast.is-placebottom { 15 | bottom: 50px; 16 | left: 50%; 17 | -webkit-transform: translate(-50%, 0); 18 | transform: translate(-50%, 0) 19 | } 20 | .mint-toast.is-placemiddle { 21 | left: 50%; 22 | top: 50%; 23 | -webkit-transform: translate(-50%, -50%); 24 | transform: translate(-50%, -50%) 25 | } 26 | .mint-toast.is-placetop { 27 | top: 50px; 28 | left: 50%; 29 | -webkit-transform: translate(-50%, 0); 30 | transform: translate(-50%, 0) 31 | } 32 | .mint-toast-icon { 33 | display: block; 34 | text-align: center; 35 | font-size: 56px 36 | } 37 | .mint-toast-text { 38 | font-size: 14px; 39 | display: block; 40 | text-align: center 41 | } 42 | .mint-toast-pop-enter, .mint-toast-pop-leave-active { 43 | opacity: 0 44 | } 45 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/plugin/mint-ui/packages/README.md -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/actionsheet/README.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | mint-actionsheet is an action sheet component for vue.js 3 | 4 | # Installation 5 | First, install `mint-actionsheet` from npm: 6 | ```bash 7 | $ npm install mint-actionsheet 8 | ``` 9 | 10 | Import it: 11 | ```Javascript 12 | require ('mint-actionsheet/lib/index.css'); 13 | 14 | // ES6 mudule 15 | import Actionsheet from 'mint-actionsheet'; 16 | 17 | // CommonJS 18 | const Actionsheet = require('mint-actionsheet').default; 19 | ``` 20 | 21 | Register component: 22 | ```Javascript 23 | Vue.component('actionsheet', Actionsheet); 24 | ``` 25 | 26 | Then use it: 27 | ```html 28 | 29 | ``` 30 | 31 | # Usage 32 | `actions` is an array of objects. Each object has two keys: `name` and `method`. `name` is the text showing on the sheet, and `method` (optional) is the callback when clicked. 33 | 34 | Sync `visible` with one of your vue instance variables. Toggle it to switch on/off the action sheet. 35 | 36 | # API 37 | | Option | Description | Value | Default | 38 | |--------------------|-------------------------------------------------------------------|---------|----------| 39 | | actions | array of actions | Array | | 40 | | visible | visibility of the action sheet | Boolean | 'false' | 41 | | cancelText | text of the cancel button | String | '取消' | 42 | | closeOnClickModal | determines if the action sheet turn off when the modal is clicked | Boolean | 'true' | 43 | 44 | # License 45 | MIT -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/actionsheet/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintActionsheet', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/actionsheet/index.js: -------------------------------------------------------------------------------- 1 | import Actionsheet from './src/actionsheet.vue'; 2 | module.exports = Actionsheet; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/actionsheet/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-actionsheet", 3 | "description": "An action sheet component for vue.js", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-actionsheet", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/badge/README.md: -------------------------------------------------------------------------------- 1 | # mint-badge -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/badge/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintBadge', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/badge/index.js: -------------------------------------------------------------------------------- 1 | import Badge from './src/badge.vue'; 2 | module.exports = Badge; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/badge/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-badge", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-badge", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/badge/src/badge.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 39 | 84 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/button/README.md: -------------------------------------------------------------------------------- 1 | # mint-button -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/button/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintButton', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/button/index.js: -------------------------------------------------------------------------------- 1 | import Button from './src/button.vue'; 2 | module.exports = Button; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/button/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-button", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-button", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell-swipe/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintCellSwipe', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell-swipe/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./src/cell-swipe.vue'); 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell-swipe/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-cell-swipe", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-cell-swipe", 10 | "dependencies": {} 11 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell/README.md: -------------------------------------------------------------------------------- 1 | # mint-cell -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintCell', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell/index.js: -------------------------------------------------------------------------------- 1 | import Cell from './src/cell.vue'; 2 | module.exports = Cell; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/cell/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-cell", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-cell", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/checklist/README.md: -------------------------------------------------------------------------------- 1 | # mint-checklist -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/checklist/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintChecklist', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/checklist/index.js: -------------------------------------------------------------------------------- 1 | import Checklist from './src/checklist.vue'; 2 | module.exports = Checklist; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/checklist/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-checklist", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-checklist", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/datetime-picker/README.md: -------------------------------------------------------------------------------- 1 | # mint-datetime-picker -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/datetime-picker/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintDatetimePicker', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/datetime-picker/index.js: -------------------------------------------------------------------------------- 1 | import DatetimePicker from './src/datetime-picker.vue'; 2 | module.exports = DatetimePicker; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/datetime-picker/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-datetime-picker", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-datetime-picker", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/field/README.md: -------------------------------------------------------------------------------- 1 | # mint-field -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/field/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintField', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/field/index.js: -------------------------------------------------------------------------------- 1 | import Field from './src/field.vue'; 2 | module.exports = Field; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/field/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-field", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-field", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/header/README.md: -------------------------------------------------------------------------------- 1 | # mint-header -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './src/header.vue'; 2 | module.exports = Header; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-list/README.md: -------------------------------------------------------------------------------- 1 | # mint-index-list -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-list/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintIndexlist', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-list/index.js: -------------------------------------------------------------------------------- 1 | import IndexList from './src/index-list.vue'; 2 | module.exports = IndexList; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-list/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-index-list", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-index-list", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-section/README.md: -------------------------------------------------------------------------------- 1 | # mint-index-section -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-section/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintIndexSection', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-section/index.js: -------------------------------------------------------------------------------- 1 | import IndexSection from './src/index-section.vue'; 2 | module.exports = IndexSection; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-section/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-index-section", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-index-section", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/index-section/src/index-section.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 47 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/indicator/README.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | vue-indicator is a mobile loading indicator plugin for vue.js. 3 | 4 | # Installation 5 | First, install `vue-indicator` from npm: 6 | ```bash 7 | $ npm install vue-indicator 8 | ``` 9 | 10 | Then use it: 11 | ```Javascript 12 | // ES6 mudule 13 | import Indicator from 'vue-indicator'; 14 | 15 | // CommonJS 16 | const Indicator = require('vue-indicator').default; 17 | ``` 18 | 19 | # Usage 20 | Open an indicator: 21 | ```Javascript 22 | Indicator.open(); 23 | ``` 24 | 25 | Open an indicator with a string: 26 | ```Javascript 27 | Indicator.open('Loading...'); 28 | ``` 29 | 30 | Open an indicator with an object: 31 | ```Javascript 32 | Indicator.open({ text:'Loading...', spinnerType: 'fading-circle' }); 33 | ``` 34 | 35 | Then close it: 36 | ```Javascript 37 | Indicator.close(); 38 | ``` 39 | 40 | # API 41 | | Option | Description | Value | Default | 42 | |-------------|----------------|-------------------------------------------------------------|---------| 43 | | text | indicator text | String | | 44 | | spinnerType | spinner type | 'snake', 'fading-circle', 'double-bounce', 'triple-bounce' | 'snake' | 45 | 46 | # License 47 | MIT 48 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/indicator/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintIndicator', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/indicator/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | const Indicator = Vue.extend(require('./src/indicator.vue')); 4 | let instance; 5 | let timer; 6 | 7 | module.exports = { 8 | open(options = {}) { 9 | if (!instance) { 10 | instance = new Indicator({ 11 | el: document.createElement('div') 12 | }); 13 | } 14 | if (instance.visible) return; 15 | instance.text = typeof options === 'string' ? options : options.text || ''; 16 | instance.spinnerType = options.spinnerType || 'snake'; 17 | document.body.appendChild(instance.$el); 18 | if (timer) { 19 | clearTimeout(timer); 20 | } 21 | 22 | Vue.nextTick(() => { 23 | instance.visible = true; 24 | }); 25 | }, 26 | 27 | close() { 28 | if (instance) { 29 | Vue.nextTick(() => { 30 | instance.visible = false; 31 | timer = setTimeout(() => { 32 | if (instance.$el) { 33 | instance.$el.style.display = 'none'; 34 | } 35 | }, 400); 36 | }); 37 | } 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/indicator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-indicator", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-indicator", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/infinite-scroll/README.md: -------------------------------------------------------------------------------- 1 | # mint-infinite-scroll -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/infinite-scroll/index.js: -------------------------------------------------------------------------------- 1 | import InfiniteScroll from './src/infinite-scroll.js'; 2 | import 'mint-ui/src/style/empty.css'; 3 | 4 | export default InfiniteScroll; 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/infinite-scroll/src/infinite-scroll.js: -------------------------------------------------------------------------------- 1 | import InfiniteScroll from './directive'; 2 | import 'mint-ui/src/style/empty.css'; 3 | 4 | const install = function(Vue) { 5 | Vue.directive('InfiniteScroll', InfiniteScroll); 6 | }; 7 | 8 | if (window.Vue) { 9 | window.infiniteScroll = InfiniteScroll; 10 | Vue.use(install); // eslint-disable-line 11 | } 12 | 13 | InfiniteScroll.install = install; 14 | export default InfiniteScroll; 15 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/lazyload/README.md: -------------------------------------------------------------------------------- 1 | # mint-lazyload -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/lazyload/index.js: -------------------------------------------------------------------------------- 1 | import LazyLoad from './src/lazyload.js'; 2 | import 'mint-ui/src/style/empty.css'; 3 | 4 | module.exports = LazyLoad; 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/lazyload/src/lazyload.js: -------------------------------------------------------------------------------- 1 | import Lazyload from 'vue-lazyload'; 2 | import 'mint-ui/src/style/empty.css'; 3 | 4 | export default Lazyload; 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/loadmore/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintLoadmore', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/loadmore/index.js: -------------------------------------------------------------------------------- 1 | import Loadmore from './src/loadmore.vue'; 2 | module.exports = Loadmore; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/loadmore/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-loadmore", 3 | "description": "", 4 | "version": "0.1.2", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-loadmore", 10 | "dependencies": {} 11 | } 12 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/message-box/README.md: -------------------------------------------------------------------------------- 1 | # mint-message-box -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/message-box/index.js: -------------------------------------------------------------------------------- 1 | import MessageBox from './src/message-box.js'; 2 | module.exports = MessageBox; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/navbar/README.md: -------------------------------------------------------------------------------- 1 | # mint-navbar -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/navbar/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintNavbar', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/navbar/index.js: -------------------------------------------------------------------------------- 1 | import Navbar from './src/navbar.vue'; 2 | module.exports = Navbar; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/navbar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-navbar", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-navbar", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/navbar/src/navbar.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 39 | 40 | 71 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/palette-button/README.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | palette-button is a set of buttons that can expand and collapse 3 | 4 | # Usage 5 | 6 | see example 7 | 8 | # Option 9 | - content: the text content of the main button 10 | - offset: the offset arc of the fan-shaped area 11 | - direction: the direction of the fan-shaped area, belongs to one of the ['lt', 't', 'rt', 'r', 'rb', 'b', 'lb', 'l'] 12 | - radius: the radius of the fan-shaped area 13 | - mainButtonStyle: set the style of the main button 14 | 15 | # Method 16 | - toggle: toggle between expand and collapse 17 | - expand: expand all sub buttons 18 | - collapse: collapse all sub buttons 19 | 20 | # Event 21 | - expand: begin expand sub buttons 22 | - expanded: all sub buttons has been expanded 23 | - collapse: begin collapse sub buttons -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/palette-button/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | 4 | cooking.set({ 5 | entry: { 6 | index: path.join(__dirname, 'index.js') 7 | }, 8 | dist: path.join(__dirname, 'lib'), 9 | template: false, 10 | format: 'umd', 11 | moduleName: 'MintPaletteButton', 12 | extractCSS: 'style.css', 13 | 14 | extends: ['vue', 'saladcss'] 15 | }); 16 | 17 | cooking.add('resolve.alias', { 18 | 'main': path.join(__dirname, '../../src'), 19 | 'mint-ui': path.join(__dirname, '..') 20 | }); 21 | 22 | cooking.add('externals', { 23 | vue: { 24 | root: 'Vue', 25 | commonjs: 'vue', 26 | commonjs2: 'vue', 27 | amd: 'vue' 28 | } 29 | }); 30 | 31 | module.exports = cooking.resolve(); 32 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/palette-button/index.js: -------------------------------------------------------------------------------- 1 | import PaletteButton from './src/palette-button.vue'; 2 | module.exports = PaletteButton; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/palette-button/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-palette-button", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "cia.fbi.007@hotmail.com", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/palette-button", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/picker/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintPicker', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/picker/index.js: -------------------------------------------------------------------------------- 1 | import Picker from './src/picker.vue'; 2 | module.exports = Picker; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/picker/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-picker", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "homepage": "https://github.com/ElemeFE/mint-ui", 7 | "license": "MIT", 8 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-picker", 9 | "keywords": [ 10 | "picker", 11 | "multi slots", 12 | "vue" 13 | ], 14 | "author": "long.zhang@ele.me", 15 | "dependencies": { 16 | "raf.js": "0.0.4", 17 | "wind-dom": "0.0.3" 18 | } 19 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/picker/src/draggable.js: -------------------------------------------------------------------------------- 1 | let isDragging = false; 2 | const supportTouch = 'ontouchstart' in window; 3 | 4 | export default function(element, options) { 5 | const moveFn = function(event) { 6 | if (options.drag) { 7 | options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 8 | } 9 | }; 10 | 11 | const endFn = function(event) { 12 | if (!supportTouch) { 13 | document.removeEventListener('mousemove', moveFn); 14 | document.removeEventListener('mouseup', endFn); 15 | } 16 | document.onselectstart = null; 17 | document.ondragstart = null; 18 | 19 | isDragging = false; 20 | 21 | if (options.end) { 22 | options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 23 | } 24 | }; 25 | 26 | element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function(event) { 27 | if (isDragging) return; 28 | document.onselectstart = function() { return false; }; 29 | document.ondragstart = function() { return false; }; 30 | 31 | if (!supportTouch) { 32 | document.addEventListener('mousemove', moveFn); 33 | document.addEventListener('mouseup', endFn); 34 | } 35 | isDragging = true; 36 | 37 | if (options.start) { 38 | event.preventDefault(); 39 | options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 40 | } 41 | }); 42 | 43 | if (supportTouch) { 44 | element.addEventListener('touchmove', moveFn); 45 | element.addEventListener('touchend', endFn); 46 | element.addEventListener('touchcancel', endFn); 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/popup/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintPopup', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/popup/index.js: -------------------------------------------------------------------------------- 1 | import Popup from './src/popup.vue'; 2 | module.exports = Popup; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-popup", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-popup", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/progress/README.md: -------------------------------------------------------------------------------- 1 | # mint-progress 2 | > A mint component 3 | 4 | ## Installation 5 | ```shell 6 | npm i mint-progress -D 7 | ``` 8 | 9 | ## Usage 10 | ```javascript 11 | import Vue from 'vue' 12 | import MintProgress from 'mint-progress' 13 | 14 | Vue.use(MintProgress) 15 | ``` 16 | 17 | or 18 | 19 | ```javascript 20 | import Vue from 'vue' 21 | import { MintProgress } from 'mint-progress' 22 | 23 | Vue.component('mint-progress', MintProgress) 24 | ``` 25 | 26 | ## Development 27 | 28 | ```shell 29 | make dev 30 | ``` 31 | 32 | ## Production 33 | ``` 34 | make dist 35 | ``` 36 | 37 | ## Deploy 38 | ```shell 39 | make deploy 40 | ``` 41 | 42 | ## License 43 | MIT 44 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/progress/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintProgress', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/progress/index.js: -------------------------------------------------------------------------------- 1 | import Progress from './src/progress.vue'; 2 | module.exports = Progress; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/progress/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-progress", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-progress", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/progress/src/progress.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 59 | 60 | 73 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/radio/README.md: -------------------------------------------------------------------------------- 1 | # mint-radio -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/radio/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintRadio', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/radio/index.js: -------------------------------------------------------------------------------- 1 | import Radio from './src/radio.vue'; 2 | module.exports = Radio; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/radio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-radio", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-radio", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/range/README.md: -------------------------------------------------------------------------------- 1 | # mint-range 2 | > A mint component 3 | 4 | ## Installation 5 | ```shell 6 | npm i mint-range -D 7 | ``` 8 | 9 | ## Usage 10 | ```javascript 11 | import Vue from 'vue' 12 | import MintRange from 'mint-range' 13 | 14 | Vue.use(MintRange) 15 | ``` 16 | 17 | or 18 | 19 | ```javascript 20 | import Vue from 'vue' 21 | import { MintRange } from 'mint-range' 22 | 23 | Vue.component('mint-range', MintRange) 24 | ``` 25 | 26 | ## Development 27 | 28 | ```shell 29 | make dev 30 | ``` 31 | 32 | ## Production 33 | ``` 34 | make dist 35 | ``` 36 | 37 | ## Deploy 38 | ```shell 39 | make deploy 40 | ``` 41 | 42 | ## License 43 | MIT 44 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/range/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintRange', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/range/index.js: -------------------------------------------------------------------------------- 1 | const MintRange = require('./src/index.vue'); 2 | 3 | MintRange.install = function(Vue) { 4 | Vue.component(MintRange.name, MintRange); 5 | }; 6 | 7 | module.exports = MintRange; 8 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/range/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-range", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "long.zhang@ele.me", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-range", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/range/src/draggable.js: -------------------------------------------------------------------------------- 1 | let isDragging = false; 2 | const supportTouch = 'ontouchstart' in window; 3 | 4 | export default function(element, options) { 5 | const moveFn = function(event) { 6 | if (options.drag) { 7 | options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 8 | } 9 | }; 10 | 11 | const endFn = function(event) { 12 | if (!supportTouch) { 13 | document.removeEventListener('mousemove', moveFn); 14 | document.removeEventListener('mouseup', endFn); 15 | } 16 | document.onselectstart = null; 17 | document.ondragstart = null; 18 | 19 | isDragging = false; 20 | 21 | if (options.end) { 22 | options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 23 | } 24 | }; 25 | 26 | element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function(event) { 27 | if (isDragging) return; 28 | event.preventDefault(); 29 | document.onselectstart = function() { return false; }; 30 | document.ondragstart = function() { return false; }; 31 | 32 | if (!supportTouch) { 33 | document.addEventListener('mousemove', moveFn); 34 | document.addEventListener('mouseup', endFn); 35 | } 36 | isDragging = true; 37 | 38 | if (options.start) { 39 | options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event); 40 | } 41 | }); 42 | 43 | if (supportTouch) { 44 | element.addEventListener('touchmove', moveFn); 45 | element.addEventListener('touchend', endFn); 46 | element.addEventListener('touchcancel', endFn); 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/search/README.md: -------------------------------------------------------------------------------- 1 | # mint-search -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/search/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintSearch', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/search/index.js: -------------------------------------------------------------------------------- 1 | import Search from './src/search.vue'; 2 | module.exports = Search; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/search/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-search", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-search", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/spinner/README.md: -------------------------------------------------------------------------------- 1 | # mint-spinner 2 | > spinner. 3 | 4 | ## Install 5 | ```shell 6 | npm i mint-spinner -S 7 | ``` 8 | 9 | ## Required 10 | ```shell 11 | npm i babel-plugin-component -D 12 | ``` 13 | 14 | ## Usage 15 | import all spinner 16 | ```javascript 17 | import Vue from 'vue'; 18 | import Spinner from 'mint-spinner'; 19 | 20 | Vue.use(Spinner); 21 | ``` 22 | 23 | ```html 24 | 25 | ``` 26 | 27 | import one spinner 28 | 29 | ```javascript 30 | import Vue from 'vue'; 31 | import { DoubleBounce } from 'mint-spinner'; 32 | 33 | Vue.component(DoubleBounce.name, DoubleBounce); 34 | ``` 35 | 36 | ```html 37 | 38 | ``` 39 | 40 | .babelrc 41 | ```json 42 | { 43 | "plugins": [ 44 | "xxx", 45 | ["component", [ 46 | { 47 | "libraryName": "mint-spinner", 48 | "style": true 49 | } 50 | ] 51 | ] 52 | ] 53 | } 54 | ``` 55 | 56 | **`import Spinner from 'mint-spinner'` and `import { DoubleBounce } from 'mint-spinner'` can not be used together.**. 57 | 58 | ## Spinner 59 | - snake 60 | - double-bounce 61 | - triple-bounce 62 | - fading-circle 63 | 64 | ## API 65 | 66 | ### color 67 | - type: String 68 | 69 | ### size 70 | - type: Number 71 | 72 | ### type 73 | - type: String|Number 74 | 75 | ```html 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | ``` 88 | 89 | ## Development 90 | 91 | ```shell 92 | make dev 93 | ``` 94 | 95 | ## Production 96 | ``` 97 | make dist 98 | ``` 99 | 100 | ## License 101 | MIT 102 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/spinner/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-spinner", 3 | "version": "2.0.0", 4 | "description": "A spinner component for vue.js", 5 | "main": "lib/index.js", 6 | "files": [ 7 | "lib" 8 | ], 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/mint-ui/mint-spinner.git" 12 | }, 13 | "homepage": "https://github.com/mint-ui/mint-spinner#readme", 14 | "bugs": { 15 | "url": "https://github.com/mint-ui/mint-spinner/issues" 16 | }, 17 | "author": "qingwei-li", 18 | "license": "MIT", 19 | "devDependencies": { 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe-item/README.md: -------------------------------------------------------------------------------- 1 | # mint-swipe-item -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe-item/index.js: -------------------------------------------------------------------------------- 1 | import SwipeItem from '../swipe/src/swipe-item.vue'; 2 | import 'mint-ui/src/style/empty.css'; 3 | 4 | module.exports = SwipeItem; 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe/README.md: -------------------------------------------------------------------------------- 1 | # mint-swipe -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe/index.js: -------------------------------------------------------------------------------- 1 | import Swipe from './src/swipe.vue'; 2 | module.exports = Swipe; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "wind-dom": "0.0.3" 5 | }, 6 | "name": "mint-swipe" 7 | } 8 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/swipe/src/swipe-item.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/switch/README.md: -------------------------------------------------------------------------------- 1 | # mint-switch -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/switch/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintSwitch', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/switch/index.js: -------------------------------------------------------------------------------- 1 | import TabContainer from './src/switch.vue'; 2 | module.exports = TabContainer; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/switch/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-switch", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-switch", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container-item/README.md: -------------------------------------------------------------------------------- 1 | # mint-tab-container-item -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container-item/index.js: -------------------------------------------------------------------------------- 1 | import TabContainerItem from './src/tab-container-item.vue'; 2 | module.exports = TabContainerItem; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container-item/src/tab-container-item.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 30 | 31 | 39 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container/README.md: -------------------------------------------------------------------------------- 1 | # mint-tab-container -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container/_index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | TabContainer: require('./src/tab-container.vue'), 3 | TabContainerItem: require('../tab-container-item/src/tab-container-item.vue') 4 | }; 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintTabContainer', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container/index.js: -------------------------------------------------------------------------------- 1 | import TabContainer from './src/tab-container.vue'; 2 | module.exports = TabContainer; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-container/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-tab-container", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tab-container", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-item/README.md: -------------------------------------------------------------------------------- 1 | # mint-tab-item -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-item/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintTabItem', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-item/index.js: -------------------------------------------------------------------------------- 1 | import TabItem from './src/tab-item.vue'; 2 | module.exports = TabItem; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-item/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-tab-item", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tab-item", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tab-item/src/tab-item.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 31 | 32 | 63 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tabbar/README.md: -------------------------------------------------------------------------------- 1 | # mint-tabbar -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tabbar/cooking.conf.js: -------------------------------------------------------------------------------- 1 | var cooking = require('cooking'); 2 | var path = require('path'); 3 | var config = require('../../build/config'); 4 | 5 | cooking.set({ 6 | entry: { 7 | index: path.join(__dirname, 'index.js') 8 | }, 9 | dist: path.join(__dirname, 'lib'), 10 | template: false, 11 | format: 'umd', 12 | moduleName: 'MintTabBar', 13 | extractCSS: 'style.css', 14 | extends: config.extends, 15 | alias: config.alias, 16 | externals: config.externals 17 | }); 18 | 19 | module.exports = cooking.resolve(); 20 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tabbar/index.js: -------------------------------------------------------------------------------- 1 | import Tabbar from './src/tabbar.vue'; 2 | module.exports = Tabbar; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tabbar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mint-tabbar", 3 | "description": "", 4 | "version": "0.1.0", 5 | "main": "lib/index.js", 6 | "author": "elemefe", 7 | "homepage": "https://github.com/ElemeFE/mint-ui", 8 | "license": "MIT", 9 | "repository": "https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tabbar", 10 | "dependencies": { 11 | } 12 | } -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/tabbar/src/tabbar.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 41 | 42 | 66 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/toast/README.md: -------------------------------------------------------------------------------- 1 | # mint-toast -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/toast/index.js: -------------------------------------------------------------------------------- 1 | import Toast from './src/toast.js'; 2 | export default Toast; 3 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/packages/toast/src/toast.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | const ToastConstructor = Vue.extend(require('./toast.vue')); 4 | let toastPool = []; 5 | 6 | let getAnInstance = () => { 7 | if (toastPool.length > 0) { 8 | let instance = toastPool[0]; 9 | toastPool.splice(0, 1); 10 | return instance; 11 | } 12 | return new ToastConstructor({ 13 | el: document.createElement('div') 14 | }); 15 | }; 16 | 17 | let returnAnInstance = instance => { 18 | if (instance) { 19 | toastPool.push(instance); 20 | } 21 | }; 22 | 23 | let removeDom = event => { 24 | if (event.target.parentNode) { 25 | event.target.parentNode.removeChild(event.target); 26 | } 27 | }; 28 | 29 | ToastConstructor.prototype.close = function() { 30 | this.visible = false; 31 | this.$el.addEventListener('transitionend', removeDom); 32 | this.closed = true; 33 | returnAnInstance(this); 34 | }; 35 | 36 | let Toast = (options = {}) => { 37 | let duration = options.duration || 3000; 38 | 39 | let instance = getAnInstance(); 40 | instance.closed = false; 41 | clearTimeout(instance.timer); 42 | instance.message = typeof options === 'string' ? options : options.message; 43 | instance.position = options.position || 'middle'; 44 | instance.className = options.className || ''; 45 | instance.iconClass = options.iconClass || ''; 46 | 47 | document.body.appendChild(instance.$el); 48 | Vue.nextTick(function() { 49 | instance.visible = true; 50 | instance.$el.removeEventListener('transitionend', removeDom); 51 | instance.timer = setTimeout(function() { 52 | if (instance.closed) return; 53 | instance.close(); 54 | }, duration); 55 | }); 56 | return instance; 57 | }; 58 | 59 | export default Toast; 60 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/assets/font/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "mintui"; 3 | src: url('iconfont.ttf?t=1464927413') 4 | } 5 | 6 | .mintui { 7 | font-family:"mintui" !important; 8 | font-size:16px; 9 | font-style:normal; 10 | -webkit-font-smoothing: antialiased; 11 | -webkit-text-stroke-width: 0.2px; 12 | -moz-osx-font-smoothing: grayscale; 13 | } 14 | .mintui-search:before { content: "\e604"; } 15 | .mintui-more:before { content: "\e601"; } 16 | .mintui-back:before { content: "\e600"; } 17 | .mintui-field-error:before { content: "\e605"; } 18 | .mintui-field-warning:before { content: "\e608"; } 19 | .mintui-success:before { content: "\e602"; } 20 | .mintui-field-success:before { content: "\e609"; } 21 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/assets/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/src/plugin/mint-ui/src/assets/font/iconfont.ttf -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/assets/loading-spin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/mixins/emitter.js: -------------------------------------------------------------------------------- 1 | function broadcast(componentName, eventName, params) { 2 | this.$children.forEach(child => { 3 | var name = child.$options.componentName; 4 | 5 | if (name === componentName) { 6 | child.$emit.apply(child, [eventName].concat(params)); 7 | } else { 8 | broadcast.apply(child, [componentName, eventName].concat(params)); 9 | } 10 | }); 11 | } 12 | export default { 13 | methods: { 14 | dispatch(componentName, eventName, params) { 15 | var parent = this.$parent; 16 | var name = parent.$options.componentName; 17 | 18 | while (parent && (!name || name !== componentName)) { 19 | parent = parent.$parent; 20 | 21 | if (parent) { 22 | name = parent.$options.componentName; 23 | } 24 | } 25 | if (parent) { 26 | parent.$emit.apply(parent, [eventName].concat(params)); 27 | } 28 | }, 29 | broadcast(componentName, eventName, params) { 30 | broadcast.call(this, componentName, eventName, params); 31 | } 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/style/border.css: -------------------------------------------------------------------------------- 1 | @define-mixin border $color { 2 | color: $(color); 3 | content: " "; 4 | size: 100% 1; 5 | @media screen and (-webkit-min-device-pixel-ratio: 2) { 6 | transform: scaleY(.5); 7 | } 8 | } 9 | 10 | @define-mixin border-top $color { 11 | position: relative; 12 | 13 | &::after { 14 | @mixin border $(color); 15 | border-top: 1px solid; 16 | position: absolute 0 * * 0; 17 | transform-origin: 0 0; 18 | } 19 | } 20 | 21 | @define-mixin border-bottom $color { 22 | position: relative; 23 | 24 | &::before { 25 | @mixin border $(color); 26 | border-bottom: 1px solid; 27 | position: absolute * * 0 0; 28 | transform-origin: 0 100%; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/style/empty.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/style/var.css: -------------------------------------------------------------------------------- 1 | $color-blue: #26a2ff; 2 | $color-white: #fff; 3 | $color-grey: #d9d9d9; 4 | $border-color: #c8c8cd; 5 | $success-color: #4caf50; 6 | $error-color: #f44336; 7 | $warning-color: #ffc107; 8 | 9 | /* Cell Component */ 10 | $cell-value-color: #888; 11 | 12 | /* Header Component */ 13 | $header-height: 40px; 14 | 15 | /* Button Component */ 16 | $button-default-color: #656b79; 17 | $button-default-background-color: #f6f8fa; 18 | $button-default-plain-color: #5a5a5a; 19 | $button-default-box-shadow: 0 0 1px #b8bbbf; 20 | $button-primary-color: #fff; 21 | $button-primary-background-color: #26a2ff; 22 | $button-danger-color: #fff; 23 | $button-danger-background-color: #ef4f4f; 24 | 25 | /* Tab Item Component */ 26 | $tab-item-font-size: 12px; 27 | 28 | /* Tabbar Component */ 29 | $tabbar-background-color: #fafafa; 30 | $tabbar-tab-item-selected-background-color: #eaeaea; 31 | $tabbar-tab-item-selected-color: $color-blue; 32 | 33 | /* Navbar Component */ 34 | $navbar-background-color: #fafafa; 35 | $tabbar-tab-item-selected-background-color: #eaeaea; 36 | 37 | /* Checklist Component */ 38 | $checklist-title-color: #888; 39 | 40 | /* Radio Component */ 41 | $radio-title-color: #888; 42 | 43 | /* z-index */ 44 | $z-index-normal: 1; 45 | -------------------------------------------------------------------------------- /AFront/src/plugin/mint-ui/src/utils/clickoutside.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-clickoutside 3 | * @desc 点击元素外面才会触发的事件 4 | * @example 5 | * ```vue 6 | *
7 | * ``` 8 | */ 9 | const clickoutsideContext = '@@clickoutsideContext'; 10 | 11 | export default { 12 | bind(el, binding, vnode) { 13 | const documentHandler = function(e) { 14 | if (vnode.context && !el.contains(e.target)) { 15 | vnode.context[el[clickoutsideContext].methodName](); 16 | } 17 | }; 18 | el[clickoutsideContext] = { 19 | documentHandler, 20 | methodName: binding.expression, 21 | arg: binding.arg || 'click' 22 | }; 23 | document.addEventListener(el[clickoutsideContext].arg, documentHandler); 24 | }, 25 | 26 | update(el, binding) { 27 | el[clickoutsideContext].methodName = binding.expression; 28 | }, 29 | 30 | unbind(el) { 31 | document.removeEventListener( 32 | el[clickoutsideContext].arg, 33 | el[clickoutsideContext].documentHandler); 34 | }, 35 | 36 | install(Vue) { 37 | Vue.directive('clickoutside', { 38 | bind: this.bind, 39 | unbind: this.unbind 40 | }); 41 | } 42 | }; 43 | -------------------------------------------------------------------------------- /AFront/src/plugin/parseUA.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 浏览器环境判断 3 | */ 4 | function parseUA() { 5 | var u = navigator.userAgent; 6 | var u2 = navigator.userAgent.toLowerCase(); 7 | return { //移动终端浏览器版本信息 8 | trident: u.indexOf('Trident') > -1, //IE内核 9 | presto: u.indexOf('Presto') > -1, //opera内核 10 | webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 11 | gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 12 | mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 13 | ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 14 | android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器 15 | iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 16 | iPad: u.indexOf('iPad') > -1, //是否iPad 17 | webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部 18 | iosv: u.substr(u.indexOf('iPhone OS') + 9, 3), 19 | weixin: u2.match(/MicroMessenger/i) == "micromessenger", 20 | ali: u.indexOf('AliApp') > -1, 21 | }; 22 | } 23 | module.exports = parseUA(); 24 | 25 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-multiselect/pointerMixin.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | data () { 3 | return { 4 | pointer: 0, 5 | visibleElements: this.maxHeight / 40 6 | } 7 | }, 8 | props: { 9 | /** 10 | * Enable/disable highlighting of the pointed value. 11 | * @type {Boolean} 12 | * @default true 13 | */ 14 | showPointer: { 15 | type: Boolean, 16 | default: true 17 | } 18 | }, 19 | computed: { 20 | pointerPosition () { 21 | return this.pointer * 40 22 | } 23 | }, 24 | watch: { 25 | 'filteredOptions' () { 26 | this.pointerAdjust() 27 | } 28 | }, 29 | methods: { 30 | addPointerElement () { 31 | if (this.filteredOptions.length > 0) { 32 | this.select(this.filteredOptions[this.pointer]) 33 | } 34 | this.pointerReset() 35 | }, 36 | pointerForward () { 37 | if (this.pointer < this.filteredOptions.length - 1) { 38 | this.pointer++ 39 | if (this.$refs.list.scrollTop <= this.pointerPosition - this.visibleElements * 40) { 40 | this.$refs.list.scrollTop = this.pointerPosition - (this.visibleElements - 1) * 40 41 | } 42 | } 43 | }, 44 | pointerBackward () { 45 | if (this.pointer > 0) { 46 | this.pointer-- 47 | if (this.$refs.list.scrollTop >= this.pointerPosition) { 48 | this.$refs.list.scrollTop = this.pointerPosition 49 | } 50 | } 51 | }, 52 | pointerReset () { 53 | if (!this.closeOnSelect) return 54 | this.pointer = 0 55 | if (this.$refs.list) { 56 | this.$refs.list.scrollTop = 0 57 | } 58 | }, 59 | pointerAdjust () { 60 | if (this.pointer >= this.filteredOptions.length - 1) { 61 | this.pointer = this.filteredOptions.length 62 | ? this.filteredOptions.length - 1 63 | : 0 64 | } 65 | }, 66 | pointerSet (index) { 67 | this.pointer = index 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-multiselect/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a depply cloned object without reference. 3 | * Copied from Vuex. 4 | * @type {Object} 5 | */ 6 | const deepClone = function (obj) { 7 | if (Array.isArray(obj)) { 8 | return obj.map(deepClone) 9 | } else if (obj && typeof obj === 'object') { 10 | var cloned = {} 11 | var keys = Object.keys(obj) 12 | for (var i = 0, l = keys.length; i < l; i++) { 13 | var key = keys[i] 14 | cloned[key] = deepClone(obj[key]) 15 | } 16 | return cloned 17 | } else { 18 | return obj 19 | } 20 | } 21 | 22 | export default deepClone; 23 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/README.md: -------------------------------------------------------------------------------- 1 | # vue-toast 2 | 3 | Toasts for vuejs. 4 | How does it work? Look it [here](http://astaroverov.github.io/#!/example/vue-toast). 5 | 6 | ### Usage 7 | 8 | Global 9 | ``` 10 | 11 | 12 | // it available in window.vueToast 13 | ``` 14 | 15 | Import: 16 | ``` 17 | import 'vue-toast/dist/vue-toast.min.css' 18 | import VueToast from 'vue-toast' 19 | 20 | 21 | new Vue({ 22 | template: '
', 23 | components: { 24 | VueToast: VueToast 25 | }, 26 | ready() { 27 | const toast = this.$refs.toast 28 | 29 | toast.showToast('Show me toast') 30 | toast.showToast('Show me toast again!') 31 | } 32 | }) 33 | ``` 34 | 35 | ### API 36 | 37 | * showToast(string, {}) - main function that generates toast with some settings of instance toast and shows him. 38 | * setOptions({}) - function for changing settings of component. 39 | 40 | ### Settings 41 | 42 | Funcion setOptions({}) lets to change settings of component. 43 | * position {String} position of component | default: 'left bottom' | possible '[left, right] [top, bottom]' 44 | * maxToasts {Number} max toasts number | default: 6 45 | 46 | Funcion showToast(string, {}) lets to change settings of current toast. 47 | * theme {String} style for toast | default: default | possible: info warning error success 48 | * timeLife {Number} time of life for current toast 49 | * closeBtn {Boolean} turn off|on button for close toast and disabled|enabled "timeLife" 50 | 51 | ### Example 52 | 53 | Look [here](https://github.com/AStaroverov/vue-toast/blob/master/index.html). 54 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-toast", 3 | "version": "2.0.3", 4 | "description": "toasts for vuejs", 5 | "main": "./dist/vue-toast.min.js", 6 | "dependencies": {}, 7 | "devDependencies": { 8 | "autoprefixer": "^6.1.0", 9 | "babel-core": "^5.8.33", 10 | "babel-loader": "^5.3.3", 11 | "css-loader": "^0.22.0", 12 | "extract-text-webpack-plugin": "^0.9.1", 13 | "postcss": "^5.0.10", 14 | "postcss-hexrgba": "^0.2.0", 15 | "postcss-loader": "^0.7.0", 16 | "postcss-nested": "^1.0.0", 17 | "style-loader": "^0.13.0", 18 | "vue-html-loader": "^1.0.0", 19 | "webpack": "^1.12.3", 20 | "webpack-dev-server": "^1.12.1" 21 | }, 22 | "scripts": { 23 | "build": "webpack --config webpack.config.js", 24 | "build_min": "NODE_ENV=production webpack --config webpack.config.js", 25 | "serverv": "webpack-dev-server --hot --inline" 26 | }, 27 | "repository": { 28 | "type": "git", 29 | "url": "git+https://github.com/AStaroverov/vue-toast.git" 30 | }, 31 | "keywords": [ 32 | "vuejs", 33 | "vue", 34 | "vue-component", 35 | "component" 36 | ], 37 | "author": "AStaroverov", 38 | "license": "MIT", 39 | "bugs": { 40 | "url": "https://github.com/AStaroverov/vue-toast/issues" 41 | }, 42 | "homepage": "https://github.com/AStaroverov/vue-toast#readme" 43 | } 44 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/main.js: -------------------------------------------------------------------------------- 1 | import './polyfills.js' 2 | import manager from './manager' 3 | 4 | export default manager 5 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/manager/style.css: -------------------------------------------------------------------------------- 1 | .vue-toast-manager_container { 2 | position: fixed; 3 | width: 100%; 4 | 5 | &.--top { 6 | top: 10px; 7 | } 8 | &.--bottom { 9 | bottom: 10px; 10 | } 11 | &.--left { 12 | left: 10px; 13 | } 14 | &.--right { 15 | right: 10px; 16 | } 17 | } 18 | 19 | .vue-toast-manager_toasts { 20 | position: relative; 21 | } 22 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/manager/template.html: -------------------------------------------------------------------------------- 1 |
2 | 9 |
10 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/polyfills.js: -------------------------------------------------------------------------------- 1 | if (!Object.assign) { 2 | Object.defineProperty(Object, 'assign', { 3 | enumerable: false, 4 | configurable: true, 5 | writable: true, 6 | value: function(target, firstSource) { 7 | 'use strict'; 8 | if (target === undefined || target === null) { 9 | throw new TypeError('Cannot convert first argument to object'); 10 | } 11 | 12 | var to = Object(target); 13 | for (var i = 1; i < arguments.length; i++) { 14 | var nextSource = arguments[i]; 15 | if (nextSource === undefined || nextSource === null) { 16 | continue; 17 | } 18 | 19 | var keysArray = Object.keys(Object(nextSource)); 20 | for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { 21 | var nextKey = keysArray[nextIndex]; 22 | var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 23 | if (desc !== undefined && desc.enumerable) { 24 | to[nextKey] = nextSource[nextKey]; 25 | } 26 | } 27 | } 28 | return to; 29 | } 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/toast/style.css: -------------------------------------------------------------------------------- 1 | .vue-toast_container { 2 | position: absolute; 3 | padding-bottom: 10px; 4 | transform: translateY(0); 5 | transition: transform .2s ease-out, opacity .3s ease-out; 6 | backface-visibility: hidden; 7 | 8 | &._default .vue-toast_message { 9 | background-color: rgba(#000, .9); 10 | } 11 | &._info .vue-toast_message { 12 | background-color: rgba(#31708f, .9); 13 | } 14 | &._success .vue-toast_message { 15 | background-color: rgba(#3c763d, .9); 16 | } 17 | &._warning .vue-toast_message { 18 | background-color: rgba(#8a6d3b, .9); 19 | } 20 | &._error .vue-toast_message { 21 | background-color: rgba(#a94442, .9); 22 | } 23 | 24 | } 25 | 26 | 27 | .vue-toast-manager_container { 28 | &.--top .vue-toast_container { 29 | top: 0; 30 | } 31 | &.--bottom .vue-toast_container { 32 | bottom: 0; 33 | } 34 | &.--left .vue-toast_container { 35 | left: 0; 36 | } 37 | &.--right .vue-toast_container { 38 | right: 0; 39 | } 40 | } 41 | 42 | .vue-toast_container.v-enter, 43 | .vue-toast_container.v-leave { 44 | opacity: 0; 45 | } 46 | 47 | .vue-toast_message { 48 | padding: 15px 22px 15px 10px; 49 | color: white; 50 | font-family: arial, sans-serif; 51 | } 52 | 53 | .vue-toast_close-btn { 54 | cursor: pointer; 55 | position: absolute; 56 | right: 5px; 57 | top: 5px; 58 | width: 14px; 59 | height: 14px; 60 | opacity: .7; 61 | transition: opacity .15s ease-in-out; 62 | backface-visibility: hidden; 63 | 64 | &:hover { 65 | opacity: .9; 66 | } 67 | 68 | &::before, 69 | &::after { 70 | content: ''; 71 | position: absolute; 72 | top: 6px; 73 | width: 14px; 74 | height: 2px; 75 | background-color: white; 76 | } 77 | 78 | &::before { 79 | transform: rotate(45deg); 80 | } 81 | 82 | &::after { 83 | transform: rotate(-45deg); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/toast/template.html: -------------------------------------------------------------------------------- 1 |
8 |
9 | 10 | 13 | 14 |
15 |
16 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/src/utils.js: -------------------------------------------------------------------------------- 1 | export function isNumber(value) { 2 | return typeof value === "number" && isFinite(value); 3 | } 4 | -------------------------------------------------------------------------------- /AFront/src/plugin/vue-toast/webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var ExtractTextPlugin = require("extract-text-webpack-plugin"); 3 | 4 | module.exports = { 5 | entry: "./src/main.js", 6 | output: { 7 | path: "./dist", 8 | publicPath: "/dist/", 9 | filename: "vue-toast.js", 10 | library: ["vueToasts"], 11 | libraryTarget: "umd" 12 | }, 13 | module: { 14 | loaders: [ 15 | { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!postcss-loader") }, 16 | { test: /\.html$/, loader: "vue-html" }, 17 | { test: /\.js$/, loader: "babel", exclude: /node_modules/ } 18 | ] 19 | }, 20 | postcss: function () {return [ 21 | require('autoprefixer'), 22 | require('postcss-nested'), 23 | require('postcss-hexrgba'), 24 | ]}, 25 | plugins: [ 26 | new ExtractTextPlugin("vue-toast.css") 27 | ] 28 | } 29 | 30 | if (process.env.NODE_ENV === 'production') { 31 | module.exports.output.filename = "vue-toast.min.js", 32 | module.exports.plugins = [ 33 | new webpack.DefinePlugin({ 34 | 'process.env': { 35 | NODE_ENV: '"production"' 36 | } 37 | }), 38 | new webpack.optimize.UglifyJsPlugin({ 39 | sourceMap: false, 40 | compress: { 41 | warnings: false 42 | } 43 | }), 44 | new ExtractTextPlugin("vue-toast.min.css") 45 | ]; 46 | } else { 47 | module.exports.devtool = '#source-map' 48 | } 49 | -------------------------------------------------------------------------------- /AFront/src/theme/cataBox.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | //时光机和标签库公用的分类盒子样式 4 | .cataBox { 5 | user-select: none; 6 | -webkit-user-select: none; 7 | position: relative; 8 | margin-bottom: 20px; 9 | //border-radius: 4px; 10 | overflow: hidden; 11 | 12 | &::after { 13 | /*content: '';*/ 14 | border-top: 4px solid $base-theme-color; 15 | position: absolute; 16 | top: 0; 17 | right: 0; 18 | border-top-right-radius: 3px; 19 | width: 40%; 20 | height: 0; 21 | } 22 | .cataBox__title { 23 | padding: 20px 15px 7px 43px; 24 | color: #fff; 25 | margin: 0; 26 | text-align: right; 27 | background: $base-background-color; 28 | position: relative; 29 | @include display-flex; 30 | @include justify-content(flex-end); 31 | @include align-items(center); 32 | .main { 33 | font-size: 50px; 34 | z-index: 1; 35 | margin-right: 10px; 36 | } 37 | .tag { 38 | //z-index:1; 39 | //font-size: 20px; 40 | //color: $base-theme-color; 41 | 42 | font-size: 20px; 43 | background: $base-theme-color; 44 | color: #fff; 45 | border-radius: 5px; 46 | padding: 3px 6px; 47 | position: relative; 48 | font-weight: 400; 49 | vertical-align: baseline; 50 | top: 2px; 51 | } 52 | } 53 | .cataBox__content { 54 | width: 100%; 55 | background-color: #fff; 56 | padding: 15px 0; 57 | } 58 | 59 | } 60 | 61 | @include media("<=phone") { 62 | 63 | .cataBox{ 64 | .cataBox__title{ 65 | .main{ 66 | font-size: 30px; 67 | } 68 | .tag{ 69 | top: 0; 70 | } 71 | } 72 | } 73 | 74 | } -------------------------------------------------------------------------------- /AFront/src/theme/theme.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | //自定义样式文件集合 4 | *{ 5 | //outline:1px solid #d4d4d4; 6 | } 7 | 8 | //变量 9 | @import "variables"; 10 | //响应式工具 11 | @import "include-media"; 12 | //工具函数 13 | @import "mixins"; 14 | -------------------------------------------------------------------------------- /AFront/src/utils/errSrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: 3 | */ 4 | -------------------------------------------------------------------------------- /AFront/src/utils/filters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: 3 | */ 4 | import CONFIG from "../config.js"; 5 | /** 6 | * 给图片加前缀 7 | * */ 8 | export const addImgPrefix = function (imgName) { 9 | if (!imgName) { 10 | return false; 11 | } 12 | 13 | return `https://` + imgName 14 | 15 | } 16 | 17 | /** 18 | * 将月转化为因为首字母大写简写的形式 19 | * 1 -> JUN 20 | * */ 21 | export const num2MMM = function (value) { 22 | var output = ''; 23 | switch (parseInt(value)) { 24 | case 1: 25 | output = "Jan"; 26 | break; 27 | case 2: 28 | output = "Feb"; 29 | break; 30 | case 3: 31 | output = "Mar"; 32 | break; 33 | case 4: 34 | output = "Apr"; 35 | break; 36 | case 5: 37 | output = "May"; 38 | break; 39 | case 6: 40 | output = "Jun"; 41 | break; 42 | case 7: 43 | output = "Jul"; 44 | break; 45 | case 8: 46 | output = "Aug"; 47 | break; 48 | case 9: 49 | output = "Sept"; 50 | break; 51 | case 10: 52 | output = "Oct"; 53 | break; 54 | case 11: 55 | output = "Nov"; 56 | break; 57 | case 12: 58 | output = "Dec"; 59 | break; 60 | } 61 | return output.toUpperCase(); 62 | } 63 | 64 | /** 65 | * 大写 66 | * */ 67 | export const uppercase = function (value) { 68 | return value.toUpperCase(); 69 | } 70 | 71 | 72 | 73 | 74 | /** 75 | * 音乐播放器,秒转化为03:40这种格式 76 | * */ 77 | export const secondsConvert = function (values) { 78 | let seconds = values; 79 | if (seconds === 0 || !seconds || seconds === 'undefined') { 80 | return "00:00" 81 | } else { 82 | seconds = parseInt(seconds); 83 | 84 | let minute = setZero(Math.floor(seconds / 60)) 85 | let second = setZero(Math.floor(seconds % 60)) 86 | return minute + ":" + second 87 | } 88 | 89 | function setZero(value) { 90 | value = parseInt(value) 91 | if (parseInt(value) < 10) { 92 | return "0" + value + "" 93 | } else { 94 | return value 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /AFront/src/utils/vToast/main.js: -------------------------------------------------------------------------------- 1 | import './polyfills.js' 2 | import manager from './manager' 3 | 4 | export default manager 5 | -------------------------------------------------------------------------------- /AFront/src/utils/vToast/polyfills.js: -------------------------------------------------------------------------------- 1 | if (!Object.assign) { 2 | Object.defineProperty(Object, 'assign', { 3 | enumerable: false, 4 | configurable: true, 5 | writable: true, 6 | value: function(target, firstSource) { 7 | 'use strict'; 8 | if (target === undefined || target === null) { 9 | throw new TypeError('Cannot convert first argument to object'); 10 | } 11 | 12 | var to = Object(target); 13 | for (var i = 1; i < arguments.length; i++) { 14 | var nextSource = arguments[i]; 15 | if (nextSource === undefined || nextSource === null) { 16 | continue; 17 | } 18 | 19 | var keysArray = Object.keys(Object(nextSource)); 20 | for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { 21 | var nextKey = keysArray[nextIndex]; 22 | var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 23 | if (desc !== undefined && desc.enumerable) { 24 | to[nextKey] = nextSource[nextKey]; 25 | } 26 | } 27 | } 28 | return to; 29 | } 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /AFront/src/vuex/actions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: action 是一种专门用来被 component 调用的函数。 3 | */ 4 | 5 | 6 | import * as types from "./mutation-types"; 7 | 8 | //-------------------------全局--------------------------- 9 | /** 10 | * 更改我的称述显示状态 11 | * */ 12 | export const setMyWordStatus = function ({commit}) { 13 | commit(types.SET_SHOWMYWORD_STATUS) 14 | }; 15 | /** 16 | * 更改社交的二维码图片 17 | * */ 18 | export const setSocialImgUrl = function ({commit}, url) { 19 | commit(types.SET_SOCIALIMG, url) 20 | }; 21 | /** 22 | * 设置是否登录 23 | * */ 24 | export const setLoginState = function ({commit}, status) { 25 | commit(types.SET_LOGIN_STATUS, status) 26 | }; 27 | /** 28 | * 更改后台管理页面是否展开显示 29 | * */ 30 | export const setShowBigAdminStatus = function ({commit}, status) { 31 | commit(types.SET_SHOW_BIGADMIN_STATUS, status) 32 | }; 33 | 34 | /** 35 | * 设置-文章评论是否设置了昵称和邮箱,全局性质 36 | * */ 37 | export const setCommentInfoStatus = function ({commit}, status) { 38 | commit(types.SET_COMMENT_INFO_STATUS, status) 39 | }; 40 | 41 | //-------------------------Music--------------------------- 42 | /** 43 | * 更改播放状态 44 | * */ 45 | export const setPlayingStatus = function ({commit}, status) { 46 | commit(types.SET_PLAYING_STATUS, status) 47 | }; 48 | /** 49 | * 设置当前音乐的持续时间 50 | * */ 51 | export const setMusicDuration = function ({commit}, duration) { 52 | commit(types.SET_MUSIC_DURATION, duration) 53 | }; 54 | /** 55 | * 设置当前音乐的进行时间 56 | * */ 57 | export const setMusicRightNow = function ({commit}, rightNow) { 58 | commit(types.SET_MUSIC_RIGHTNOW, rightNow) 59 | }; 60 | /** 61 | * 设置当前音乐的信息 62 | * */ 63 | export const setCurrentMusic = function ({commit}, currentMusicInfo) { 64 | commit(types.SET_CURRENT_MUSIC, currentMusicInfo) 65 | }; 66 | /** 67 | * 设置当前音乐的加载状态 68 | * */ 69 | export const setLoadingStatus = function ({commit}, status) { 70 | commit(types.SET_LOADING_STATUS, status) 71 | }; 72 | -------------------------------------------------------------------------------- /AFront/src/vuex/getters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: 3 | */ 4 | // 这个 getter 函数会返回 count 的值 5 | // 在 ES6 里你可以写成: 6 | // export const getCount = state => state.count 7 | 8 | // getters,从store的state中获取整个状态对象作为其唯一参数 9 | // export function getCount (state) { 10 | // return state.count 11 | // } -------------------------------------------------------------------------------- /AFront/src/vuex/mutation-types.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Description: Mutation事件名称集合 3 | */ 4 | //全局 5 | export const SET_SHOWMYWORD_STATUS = 'SET_SHOWMYWORD_STATUS';//控制是否显示我的个人称述 6 | export const SET_SOCIALIMG = 'SET_SOCIALIMG';//设置我的社交弹出组件的img 7 | export const SET_LOGIN_STATUS = 'SET_LOGIN_STATUS';//设置是否登录 8 | export const SET_SHOW_BIGADMIN_STATUS = 'SET_SHOW_BIGADMIN_STATUS';//设置是否展开大号的admin页面,用于文章编辑预览,受体为admin.vue 9 | export const SET_COMMENT_INFO_STATUS = 'SET_COMMENT_INFO_STATUS';//设置-文章评论是否设置了昵称和邮箱,全局性质 10 | 11 | 12 | export const SET_PLAYING_STATUS = 'SET_PLAYING_STATUS';//设置播放状态,显示是否播放 13 | export const SET_MUSIC_DURATION = 'SET_MUSIC_DURATION';//设置当前音乐的持续时间 14 | export const SET_MUSIC_RIGHTNOW = 'SET_MUSIC_RIGHTNOW';//设置当前音乐的进行时间 15 | export const SET_CURRENT_MUSIC = 'SET_CURRENT_MUSIC';//设置当前音乐的信息 16 | export const SET_LOADING_STATUS = 'SET_LOADING_STATUS';//设置当前音乐的下载状态 17 | -------------------------------------------------------------------------------- /AFront/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/static/.gitkeep -------------------------------------------------------------------------------- /AFront/west_lake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/AFront/west_lake.jpg -------------------------------------------------------------------------------- /config/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | USERNAME: 'xxx', 3 | HOST: '118.111.111.221', 4 | PASSWORD: 'xxxxx', 5 | REMOTE_PATH: '/home/blog', 6 | mongodb: "mongodb://uid:password@ip:port/path", 7 | baiduAK:"xxxxxxxx", 8 | qiniu: { 9 | accessKey:'xxxxxxxxxxxxxx', 10 | secretKey:'xxxxxxxxxxxxxxx', 11 | bucket: 'js-css', 12 | origin: 'xxxxxxxxxxxxxxxx', 13 | } 14 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "XBlog-admin", 3 | "version": "2.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "pm2 start ./bin/www --watch", 7 | "restart": "pm2 restart ./bin/www --watch; pm2 logs", 8 | "cdnsync": "node ./utils/cdn_sync.js", 9 | "pack": "node ./utils/pack.js", 10 | "stop": "pm2 stop all", 11 | "delete": "pm2 delete all" 12 | }, 13 | "dependencies": { 14 | "body-parser": "~1.13.2", 15 | "chalk": "^2.4.2", 16 | "co": "^4.6.0", 17 | "connect-history-api-fallback": "^1.5.0", 18 | "connect-multiparty": "^2.0.0", 19 | "cookie-parser": "~1.3.5", 20 | "cors": "^2.8.1", 21 | "debug": "~2.2.0", 22 | "express": "~4.13.1", 23 | "hbs": "~3.1.0", 24 | "highlight.js": "^9.5.0", 25 | "js-md5": "^0.4.1", 26 | "marked": "^0.3.6", 27 | "moment": "^2.15.1", 28 | "mongodb": "^2.2.33", 29 | "mongoose": "^4.6.2", 30 | "morgan": "~1.6.1", 31 | "multer": "^1.1.0", 32 | "qiniu": "^7.1.1", 33 | "qn": "^1.3.0", 34 | "scp2": "^0.5.0", 35 | "serve-favicon": "~2.3.0", 36 | "simple-ssh": "^1.0.0", 37 | "superagent": "^2.3.0", 38 | "superagent-jsonapify": "^1.4.2", 39 | "targz": "^1.0.1" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billyhoomm/x-blog/c501c85cc4a86d9d83f3cab9fea284890acb75b5/public/favicon.ico -------------------------------------------------------------------------------- /routes/web.routes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Dsc:访问数据统计等 3 | * @Author: billyhu 4 | * @Date: 2017-11-25 17:55:41 5 | */ 6 | var express = require('express'); 7 | var router = express.Router(); 8 | var cors = require('cors'); 9 | let getClientIp = require('../utils/getClientIp.utils.js'); 10 | 11 | let mongoose = require('mongoose'); 12 | //数据模型 13 | let Statistic = mongoose.model('Statistic'); 14 | //控制器 15 | let StatisticController = require('../controllers/statistic.controller.js'); 16 | //数据库查询同一错误处理 17 | 18 | 19 | /** 20 | * 访问数据统计 21 | * */ 22 | router.use('*', cors(), function (req, res, next) { 23 | let ip = getClientIp(req); 24 | let url = req.baseUrl.toString(); 25 | let time = new Date(); 26 | StatisticController.record(ip, url, time); 27 | next(); 28 | }); 29 | 30 | 31 | router.use(function (req, res, next) { 32 | // console.log(req.path); 33 | //对于访问api的路由,直接通过 34 | if (req.path.includes('/api')) { 35 | next(); 36 | } else { 37 | //对于访问子页面的路由,跳转到启动页 38 | // console.log('from api dir 访问了主页!!') 39 | // res.set('Cache-Control', 'no-cache'); 40 | res.set('Content-Type', 'text/html'); 41 | res.sendFile('public/index.html'); 42 | } 43 | }); 44 | /* GET 前端显示-blog home page. 前后端合并*/ 45 | router.all('/', function (req, res, next) { 46 | res.set('Cache-Control', 'no-cache'); 47 | res.set('Content-Type', 'text/html'); 48 | res.sendFile('public/index.html'); 49 | }); 50 | 51 | 52 | module.exports = router; -------------------------------------------------------------------------------- /utils/DO_ERROE_RES.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Dsc:错误控制 3 | * @Author: billyhu 4 | * @Date: 2018-04-25 17:54:21 5 | */ 6 | 7 | module.exports = function (res) { 8 | res.status(200); 9 | res.send({ 10 | "code": "8", 11 | "msg": "system error or request params error, please check out!" 12 | }); 13 | }; 14 | -------------------------------------------------------------------------------- /utils/checkToken.utils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Dsc:token检查 3 | * @Author: billyhu 4 | * @Date: 2018-04-25 17:54:52 5 | */ 6 | 7 | let $base64 = require('../utils/base64.utils.js'); 8 | let md5 = require('js-md5'); 9 | let mongoose = require('mongoose'); 10 | let Users = mongoose.model('Users'); 11 | //数据库查询同一错误处理 12 | let DO_ERROR_RES = require('../utils/DO_ERROE_RES.js'); 13 | 14 | function checkToken(token) { 15 | let [username,pswMD5,time] = $base64.decode(token).split("|"); 16 | let timeNow = new Date().getTime(); 17 | 18 | 19 | return new Promise(function (resolve, reject) { 20 | //2 hours authorize 21 | if ((timeNow - time) > 1000 * 60 * 60 * 2) { 22 | reject({ 23 | "code": "10", 24 | "msg": "token time out!" 25 | }); 26 | } else { 27 | Users.findOne({username: username}, function (err, doc) { 28 | if (err) { 29 | DO_ERROR_RES(res); 30 | reject(); 31 | return next(); 32 | } 33 | if (!!doc) { 34 | if (!!doc.is_admin) { 35 | if (pswMD5 === md5(`${doc.password}|${time}`)) { 36 | resolve(true); 37 | }else{ 38 | reject({ 39 | "code": "10", 40 | "msg": "password not right, authorization failure!" 41 | }); 42 | } 43 | } else { 44 | reject({ 45 | "code": "9", 46 | "msg": "you are visitor, authorization failure!" 47 | }); 48 | } 49 | } else { 50 | reject({ 51 | "code": "10", 52 | "msg": "token format error!" 53 | }); 54 | } 55 | }); 56 | } 57 | }); 58 | } 59 | module.exports = checkToken; 60 | -------------------------------------------------------------------------------- /utils/getClientIp.utils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Dsc:获取IP地址 3 | * @Author: billyhu 4 | * @Date: 2018-04-25 17:54:01 5 | */ 6 | 7 | module.exports = function getClientIp(req) { 8 | let ips = req.headers['x-forwarded-for'] || 9 | req.connection.remoteAddress || 10 | req.socket.remoteAddress || 11 | req.connection.socket.remoteAddress; 12 | let ipsArr = ips.match(/\d+\.\d+\.\d+\.\d+/); 13 | let ip; 14 | if(getType(ipsArr) === 'array'){ 15 | ip = ipsArr[0]; 16 | }else{ 17 | ip = "Postman";//读不出的情况是因为在postman中 18 | } 19 | function getType(value) { 20 | return Object.prototype.toString.call(value).match(/^(\[object )(\w+)\]$/i)[2].toLowerCase() 21 | } 22 | return ip 23 | } 24 | -------------------------------------------------------------------------------- /views/error.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/error_dev.hbs: -------------------------------------------------------------------------------- 1 |

{{message}}

2 |

{{error.status}}

3 |
{{error.stack}}
4 | -------------------------------------------------------------------------------- /views/index.hbs: -------------------------------------------------------------------------------- 1 |

{{title}}

2 |

Welcome to {{title}}

3 | -------------------------------------------------------------------------------- /views/layout.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{title}} 5 | 6 | 7 | 8 | {{{body}}} 9 | 10 | 11 | --------------------------------------------------------------------------------