diff --git a/package.json b/package.json
index 9d1968926..f0b6cd3d1 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,8 @@
"@tarojs/taro-h5": "latest",
"@tarojs/taro-weapp": "latest",
"lodash": "^4.17.10",
- "nervjs": "^1.3.0"
+ "nervjs": "^1.3.0",
+ "prop-types": "^15.6.2"
},
"devDependencies": {
"@tarojs/cli": "latest",
diff --git a/src/app.js b/src/app.js
index 276d33e7c..5b6f0b58d 100644
--- a/src/app.js
+++ b/src/app.js
@@ -12,8 +12,13 @@ class App extends Component {
'pages/action/progress/index',
'pages/action/action-sheet/index',
'pages/action/activity-indicator/index',
- 'pages/view/icon/index',
- 'pages/view/button/index',
+ 'pages/basic/icon/index',
+ 'pages/basic/button/index',
+ 'pages/view/noticebar/index',
+ 'pages/view/badge/index',
+ 'pages/view/tag/index',
+ 'pages/view/avatar/index',
+ 'pages/view/article/index',
],
window: {
backgroundTextStyle: 'light',
diff --git a/src/components/article/index.js b/src/components/article/index.js
new file mode 100644
index 000000000..9c6c85312
--- /dev/null
+++ b/src/components/article/index.js
@@ -0,0 +1,81 @@
+import Taro from "@tarojs/taro"
+import { View, Image, Text } from "@tarojs/components"
+import PropTypes from 'prop-types';
+
+import './index.scss'
+
+const SIZE_CLASS = {
+ large: 'large',
+ normal: 'normal',
+ small: 'small',
+}
+
+// const TYPE_CLASS = {
+// primary: 'primary',
+// }
+
+
+export default class Atarticle extends Taro.Component {
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onClick() {
+ }
+
+ render(){
+ let {
+ } = this.props
+ let rootClassName = ['at-article']
+ let sizeClass = SIZE_CLASS[size] || ''
+ let circleClass = circle? 'at-article--circle': ''
+
+ rootClassName.push(`at-article--${sizeClass}`, circleClass)
+ rootClassName = rootClassName.filter(str => str != '')
+console.log('=====', this.props.children)
+
+ let {children} = this.props
+ let letter;
+ if (typeof children == 'string') {
+ letter = children[0]
+ }
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+}
+
+Atarticle.defaultProps = {
+ size: 'normal',
+ circle: false,
+ image: '',
+}
+
+Atarticle.propTypes = {
+ size: PropTypes.oneOf(['large', 'normal', 'small']),
+ circle: PropTypes.bool,
+ image: PropTypes.string,
+};
diff --git a/src/components/article/index.scss b/src/components/article/index.scss
new file mode 100644
index 000000000..d434c299e
--- /dev/null
+++ b/src/components/article/index.scss
@@ -0,0 +1,33 @@
+
+.at-avatar {
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ box-shadow: 0 0 50px 0 rgba(0,0,0,0.05);
+ border-radius: 8px;
+ font-size: 40px;
+ line-height: 100px;
+ color: #fff;
+ background: #D8D8D8;
+ &__img {
+ width: 100%;
+ height: 100%;
+ }
+ &--large {
+ width: 120px;
+ height: 120px;
+ font-size: 48px;
+ line-height: 120px;
+ }
+ &--small {
+ height: 80px;
+ width: 80px;
+ font-size: 32px;
+ line-height: 80px;
+ }
+ &--circle {
+ border-radius: 100px;
+ overflow: hidden;
+ background-clip: border-box;
+ }
+}
\ No newline at end of file
diff --git a/src/components/avatar/index.js b/src/components/avatar/index.js
new file mode 100644
index 000000000..1877163f0
--- /dev/null
+++ b/src/components/avatar/index.js
@@ -0,0 +1,67 @@
+import Taro from "@tarojs/taro"
+import { View, Image, Text } from "@tarojs/components"
+import PropTypes from 'prop-types';
+
+import './index.scss'
+
+const SIZE_CLASS = {
+ large: 'large',
+ normal: 'normal',
+ small: 'small',
+}
+
+// const TYPE_CLASS = {
+// primary: 'primary',
+// }
+
+
+export default class AtAvatar extends Taro.Component {
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onClick() {
+ }
+
+ render(){
+ let {
+ size,
+ circle,
+ image,
+ } = this.props
+ let rootClassName = ['at-avatar']
+ let sizeClass = SIZE_CLASS[size] || ''
+ let circleClass = circle? 'at-avatar--circle': ''
+
+ rootClassName.push(`at-avatar--${sizeClass}`, circleClass)
+ rootClassName = rootClassName.filter(str => str != '')
+console.log('=====', this.props.children)
+
+ let {children} = this.props
+ let letter;
+ if (typeof children == 'string') {
+ letter = children[0]
+ }
+ return (
+
+ {letter ? {letter}: }
+
+
+ )
+ }
+}
+
+AtAvatar.defaultProps = {
+ size: 'normal',
+ circle: false,
+ image: '',
+}
+
+AtAvatar.propTypes = {
+ size: PropTypes.oneOf(['large', 'normal', 'small']),
+ circle: PropTypes.bool,
+ image: PropTypes.string,
+};
diff --git a/src/components/avatar/index.scss b/src/components/avatar/index.scss
new file mode 100644
index 000000000..d434c299e
--- /dev/null
+++ b/src/components/avatar/index.scss
@@ -0,0 +1,33 @@
+
+.at-avatar {
+ height: 100px;
+ width: 100px;
+ overflow: hidden;
+ box-shadow: 0 0 50px 0 rgba(0,0,0,0.05);
+ border-radius: 8px;
+ font-size: 40px;
+ line-height: 100px;
+ color: #fff;
+ background: #D8D8D8;
+ &__img {
+ width: 100%;
+ height: 100%;
+ }
+ &--large {
+ width: 120px;
+ height: 120px;
+ font-size: 48px;
+ line-height: 120px;
+ }
+ &--small {
+ height: 80px;
+ width: 80px;
+ font-size: 32px;
+ line-height: 80px;
+ }
+ &--circle {
+ border-radius: 100px;
+ overflow: hidden;
+ background-clip: border-box;
+ }
+}
\ No newline at end of file
diff --git a/src/components/badge/index.js b/src/components/badge/index.js
new file mode 100644
index 000000000..a8b45ba81
--- /dev/null
+++ b/src/components/badge/index.js
@@ -0,0 +1,50 @@
+
+import PropTypes from 'prop-types';
+import Taro from "@tarojs/taro"
+import { View, Text } from "@tarojs/components"
+
+import './index.scss'
+
+
+export default class AtBadge extends Taro.Component {
+ constructor() {
+ super(...arguments)
+ this.state = {}
+ }
+
+ formatValue(value, maxValue) {
+ if (isNaN(value)) {
+ return value
+ } else {
+ let numValue = +value
+ return numValue > maxValue? `${maxValue}+`: numValue
+ }
+ }
+
+ render(){
+ let {
+ dot,
+ value,
+ maxValue,
+ } = this.props
+ let rootClassName = ['at-badge']
+
+ return (
+
+ {this.props.children}
+ {dot ? : {this.formatValue(value, maxValue)}}
+
+ )
+ }
+}
+
+AtBadge.defaultProps = {
+ dot: false,
+ value: '',
+ maxValue: 99,
+}
+
+AtBadge.propTypes = {
+ dot: PropTypes.bool,
+ maxValue: PropTypes.number,
+};
\ No newline at end of file
diff --git a/src/components/badge/index.scss b/src/components/badge/index.scss
new file mode 100644
index 000000000..8390b24f6
--- /dev/null
+++ b/src/components/badge/index.scss
@@ -0,0 +1,35 @@
+
+@import "../../style/mixins.scss";
+
+.at-badge {
+ position: relative;
+ display: inline-block;
+ font-size: 0;
+ vertical-align: middle;
+ &__dot {
+ position: absolute;
+ right: -10px;
+ top: -10px;
+ width: 20px;
+ height: 20px;
+ border-radius: 20px;
+ overflow: hidden;
+ background: #FF4949;
+ box-shadow: 0 4px 8px 0 rgba(233,59,61,0.20);
+ }
+ &__num {
+ font-size: 20px;
+ color: #fff;
+ height: 28px;
+ line-height: 28px;
+ position: absolute;
+ right: 0;
+ top: -14px;
+ transform: translate(50%, 0);
+ padding: 0 10px;
+ border-radius: 20px 20px 20px 0;
+ overflow: hidden;
+ background: #FF4949;
+ box-shadow: 0 4px 8px 0 rgba(233,59,61,0.20);
+ }
+}
\ No newline at end of file
diff --git a/src/components/button/index.js b/src/components/button/index.js
index 92c028d4f..fc6b9e9c1 100644
--- a/src/components/button/index.js
+++ b/src/components/button/index.js
@@ -6,7 +6,7 @@ import './index.scss'
const SIZE_CLASS = {
normal: 'normal',
- large: 'large',
+ // large: 'large',
small: 'small',
}
@@ -24,9 +24,9 @@ export default class AtButton extends Taro.Component {
}
}
- onClick(e) {
+ onClick() {
if (!this.props.disabled && this.props.onClick) {
- this.props.onClick(e)
+ this.props.onClick(...arguments)
}
}
@@ -35,6 +35,7 @@ export default class AtButton extends Taro.Component {
size = 'normal',
type = '',
icon = '',
+ circle = false,
active = false,
loading = false,
disabled = false,
@@ -44,10 +45,11 @@ export default class AtButton extends Taro.Component {
let disabledClass = disabled? 'at-button--disabled': ''
let typeClass = TYPE_CLASS[type]? `at-button--${type}`: ''
let activeClass = active? 'at-button--active': ''
+ let circleClass = circle? 'at-button--circle': ''
// let loadingClass = loading? 'at-button--loading': ''
// let iconClass = loading? 'at-button--icon': ''
- rootClassName.push(`at-button--${sizeClass}`, disabledClass, typeClass, activeClass)
+ rootClassName.push(`at-button--${sizeClass}`, typeClass, activeClass, circleClass, disabledClass)
rootClassName = rootClassName.filter(str => str != '')
console.log('loading====', loading)
return (
diff --git a/src/components/button/index.scss b/src/components/button/index.scss
index ebf16b270..5d9f69f33 100644
--- a/src/components/button/index.scss
+++ b/src/components/button/index.scss
@@ -28,4 +28,16 @@
color: rgba(92, 137, 228, 1);
border: 2px solid rgba(92, 137, 228, 1);
}
+ &--small {
+ width: 120px;
+ height: 60px;
+ line-height: 60px;
+ display: inline-block;
+ font-size: 28px;
+ }
+ &--circle {
+ border-radius: 100px;
+ overflow: hidden;
+ background-clip: border-box;
+ }
}
\ No newline at end of file
diff --git a/src/components/icon/index.js b/src/components/icon/index.js
index b6c8f7637..69f081a4b 100644
--- a/src/components/icon/index.js
+++ b/src/components/icon/index.js
@@ -1,5 +1,5 @@
import Taro from '@tarojs/taro'
-import { View } from '@tarojs/components'
+import { View, Text } from '@tarojs/components'
import './index.scss'
@@ -21,7 +21,7 @@ export default class AtIcon extends Taro.Component {
let rootClassName = ['at-icon', `at-icon-${value}`]
console.log('value====',value)
return (
-
+
)
}
}
diff --git a/src/components/icon/index.scss b/src/components/icon/index.scss
index 63297dc81..204fc59e3 100644
--- a/src/components/icon/index.scss
+++ b/src/components/icon/index.scss
@@ -1,31 +1,156 @@
@font-face {
- font-family: 'fontello';
- src: url('https://wq.360buyimg.com/data/ppms/others/fontello.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;
+ font-family:iconfont;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')
}
.at-icon {
- display: inline-block;
- font-size: 24px;
- color: #000;
- &::after {
- font-family: fontello;
- color: currentColor;
- text-transform: none;
- }
+ display:inline-block;
+ font-family:iconfont;
+ speak:none;
+ font-style:normal;
+ font-weight:400;
+ font-variant:normal;
+ text-transform:none;
+ text-rendering:auto;
+ line-height:1;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale;
+ vertical-align:middle
}
-
-.at-icon-arrow-left {
- &::after {
- content: '\e801';
- }
-}
-
-.at-icon-arrow-down-left {
- &::after {
- content: '\e800';
- }
-}
-
+.at-icon-accessory:before{content:"\e6dd"}
+.at-icon-activity:before{content:"\e6de"}
+.at-icon-activity_fill:before{content:"\e6df"}
+.at-icon-add:before{content:"\e6e0"}
+.at-icon-addressbook_fill:before{content:"\e6e2"}
+.at-icon-addressbook:before{content:"\e6e3"}
+.at-icon-barrage_fill:before{content:"\e6e4"}
+.at-icon-barrage:before{content:"\e6e5"}
+.at-icon-browse_fill:before{content:"\e6e6"}
+.at-icon-browse:before{content:"\e6e7"}
+.at-icon-brush:before{content:"\e6e8"}
+.at-icon-brush_fill:before{content:"\e6e9"}
+.at-icon-businesscard_fill:before{content:"\e6ea"}
+.at-icon-businesscard:before{content:"\e6eb"}
+.at-icon-camera_fill:before{content:"\e6ec"}
+.at-icon-camera:before{content:"\e6ed"}
+.at-icon-clock_fill:before{content:"\e6ee"}
+.at-icon-clock:before{content:"\e6ef"}
+.at-icon-close:before{content:"\e6f0"}
+.at-icon-collection_fill:before{content:"\e6f1"}
+.at-icon-collection:before{content:"\e6f2"}
+.at-icon-computer_fill:before{content:"\e6f3"}
+.at-icon-computer:before{content:"\e6f4"}
+.at-icon-coordinates_fill:before{content:"\e6f5"}
+.at-icon-coordinates:before{content:"\e6f6"}
+.at-icon-coupons_fill:before{content:"\e6f7"}
+.at-icon-coupons:before{content:"\e6f8"}
+.at-icon-createtask_fill:before{content:"\e6f9"}
+.at-icon-createtask:before{content:"\e6fa"}
+.at-icon-customerservice_fill:before{content:"\e6fb"}
+.at-icon-customerservice:before{content:"\e6fc"}
+.at-icon-delete_fill:before{content:"\e6fd"}
+.at-icon-delete:before{content:"\e6fe"}
+.at-icon-document:before{content:"\e6ff"}
+.at-icon-document_fill:before{content:"\e700"}
+.at-icon-dynamic_fill:before{content:"\e701"}
+.at-icon-dynamic:before{content:"\e702"}
+.at-icon-editor:before{content:"\e703"}
+.at-icon-eit:before{content:"\e704"}
+.at-icon-emoji_fill:before{content:"\e705"}
+.at-icon-emoji:before{content:"\e706"}
+.at-icon-enter:before{content:"\e707"}
+.at-icon-enterinto:before{content:"\e708"}
+.at-icon-enterinto_fill:before{content:"\e709"}
+.at-icon-feedback_fill:before{content:"\e70a"}
+.at-icon-feedback:before{content:"\e70b"}
+.at-icon-flag_fill:before{content:"\e70c"}
+.at-icon-flag:before{content:"\e70d"}
+.at-icon-flashlight:before{content:"\e70e"}
+.at-icon-flashlight_fill:before{content:"\e70f"}
+.at-icon-fullscreen:before{content:"\e710"}
+.at-icon-group:before{content:"\e711"}
+.at-icon-group_fill:before{content:"\e712"}
+.at-icon-homepage_fill:before{content:"\e713"}
+.at-icon-homepage:before{content:"\e714"}
+.at-icon-integral_fill:before{content:"\e715"}
+.at-icon-integral:before{content:"\e716"}
+.at-icon-interactive_fill:before{content:"\e717"}
+.at-icon-interactive:before{content:"\e718"}
+.at-icon-keyboard:before{content:"\e719"}
+.at-icon-label:before{content:"\e71a"}
+.at-icon-label_fill:before{content:"\e71b"}
+.at-icon-like_fill:before{content:"\e71c"}
+.at-icon-like:before{content:"\e71d"}
+.at-icon-live_fill:before{content:"\e71e"}
+.at-icon-live:before{content:"\e71f"}
+.at-icon-lock_fill:before{content:"\e720"}
+.at-icon-lock:before{content:"\e721"}
+.at-icon-mail:before{content:"\e722"}
+.at-icon-mail_fill:before{content:"\e723"}
+.at-icon-message:before{content:"\e724"}
+.at-icon-message_fill:before{content:"\e725"}
+.at-icon-mine:before{content:"\e726"}
+.at-icon-mine_fill:before{content:"\e727"}
+.at-icon-mobilephone_fill:before{content:"\e728"}
+.at-icon-mobilephone:before{content:"\e729"}
+.at-icon-more:before{content:"\e72a"}
+.at-icon-narrow:before{content:"\e72b"}
+.at-icon-offline_fill:before{content:"\e72c"}
+.at-icon-offline:before{content:"\e72d"}
+.at-icon-other:before{content:"\e72e"}
+.at-icon-picture_fill:before{content:"\e72f"}
+.at-icon-picture:before{content:"\e730"}
+.at-icon-play:before{content:"\e731"}
+.at-icon-play_fill:before{content:"\e732"}
+.at-icon-playon_fill:before{content:"\e733"}
+.at-icon-playon:before{content:"\e734"}
+.at-icon-praise_fill:before{content:"\e735"}
+.at-icon-praise:before{content:"\e736"}
+.at-icon-prompt_fill:before{content:"\e737"}
+.at-icon-prompt:before{content:"\e738"}
+.at-icon-redpacket_fill:before{content:"\e739"}
+.at-icon-redpacket:before{content:"\e73a"}
+.at-icon-refresh:before{content:"\e73b"}
+.at-icon-remind_fill:before{content:"\e73c"}
+.at-icon-remind:before{content:"\e73d"}
+.at-icon-return:before{content:"\e73e"}
+.at-icon-right:before{content:"\e73f"}
+.at-icon-scan:before{content:"\e740"}
+.at-icon-send:before{content:"\e741"}
+.at-icon-service_fill:before{content:"\e742"}
+.at-icon-service:before{content:"\e743"}
+.at-icon-setup_fill:before{content:"\e744"}
+.at-icon-setup:before{content:"\e745"}
+.at-icon-share_fill:before{content:"\e746"}
+.at-icon-share:before{content:"\e747"}
+.at-icon-success_fill:before{content:"\e748"}
+.at-icon-success:before{content:"\e749"}
+.at-icon-suspend:before{content:"\e74a"}
+.at-icon-switch:before{content:"\e74b"}
+.at-icon-systemprompt_fill:before{content:"\e74c"}
+.at-icon-systemprompt:before{content:"\e74d"}
+.at-icon-tailor:before{content:"\e74e"}
+.at-icon-task:before{content:"\e74f"}
+.at-icon-task_fill:before{content:"\e750"}
+.at-icon-tasklist_fill:before{content:"\e751"}
+.at-icon-tasklist:before{content:"\e752"}
+.at-icon-time_fill:before{content:"\e753"}
+.at-icon-time:before{content:"\e754"}
+.at-icon-translation_fill:before{content:"\e755"}
+.at-icon-translation:before{content:"\e756"}
+.at-icon-trash:before{content:"\e757"}
+.at-icon-trash_fill:before{content:"\e758"}
+.at-icon-undo:before{content:"\e759"}
+.at-icon-video:before{content:"\e75a"}
+.at-icon-video_fill:before{content:"\e75b"}
+.at-icon-warning_fill:before{content:"\e75c"}
+.at-icon-warning:before{content:"\e75d"}
+.at-icon-search:before{content:"\e75e"}
+.at-icon-searchfill:before{content:"\e75f"}
+.at-icon-publishgoods_fill:before{content:"\e760"}
+.at-icon-shop_fill:before{content:"\e761"}
+.at-icon-transaction_fill:before{content:"\e762"}
+.at-icon-packup:before{content:"\e763"}
+.at-icon-unfold:before{content:"\e764"}
+.at-icon-financial_fill:before{content:"\e765"}
+.at-icon-commodity:before{content:"\e766"}
diff --git a/src/components/noticebar/index.js b/src/components/noticebar/index.js
new file mode 100644
index 000000000..4b73822ef
--- /dev/null
+++ b/src/components/noticebar/index.js
@@ -0,0 +1,72 @@
+
+import PropTypes from 'prop-types';
+import Taro from "@tarojs/taro"
+import { View, Text } from "@tarojs/components"
+
+import './index.scss'
+
+
+export default class AtNoticebar extends Taro.Component {
+ constructor() {
+ super(...arguments)
+ this.state = {
+ show: true,
+ }
+ }
+
+ onClose(e) {
+ this.setState({
+ show: false,
+ })
+ }
+
+ onGotoMore() {
+ if (Taro.getEnv() == "WEAPP") {
+ Taro.navigateTo({
+ url: this.props.moreUrl,
+ })
+ } else {
+ alert('该环境尚未实现此API')
+ }
+ }
+
+ render(){
+ let {
+ close,
+ moreUrl,
+ moreText,
+ single,
+ icon,
+ } = this.props
+ let rootClassName = ['at-noticebar']
+ if (moreUrl) rootClassName.push('at-noticebar--more')
+ if (single) rootClassName.push('at-noticebar--single')
+
+ return (
+ this.state.show &&
+
+ {close && }
+
+ {icon && }{this.props.children}
+
+ {moreUrl && {moreText}}
+
+ )
+ }
+}
+
+AtNoticebar.defaultProps = {
+ close: false,
+ single: false,
+ moreText: '查看详情',
+ moreUrl: '',
+ icon: '',
+}
+
+AtNoticebar.propTypes = {
+ close: PropTypes.bool,
+ single: PropTypes.bool,
+ moreText: PropTypes.string,
+ moreUrl: PropTypes.string,
+ icon: PropTypes.string,
+};
\ No newline at end of file
diff --git a/src/components/noticebar/index.scss b/src/components/noticebar/index.scss
new file mode 100644
index 000000000..d76a92ffb
--- /dev/null
+++ b/src/components/noticebar/index.scss
@@ -0,0 +1,38 @@
+
+@import "../../style/mixins.scss";
+
+.at-noticebar {
+ background: #FCF6ED;
+ padding: 14px;
+ font-size: 24px;
+ color: #DE8C17;
+ position: relative;
+ &__close {
+ width: 26px;
+ height: 26px;
+ background-color: #fff;
+ position: absolute;
+ left: 22px;
+ top: 50%;
+ transform: translateY(-50%);
+ + .at-noticebar__content {
+ margin-left: 68px;
+ }
+ }
+ &--single {
+ .at-noticebar__content {
+ @include line(1);
+ }
+ }
+ &--more {
+ .at-noticebar__content {
+ max-width: 520px;
+ }
+ }
+ &__more {
+ color: #999;
+ position: absolute;
+ right: 18px;
+ top: 15px;
+ }
+}
\ No newline at end of file
diff --git a/src/components/tag/index.js b/src/components/tag/index.js
new file mode 100644
index 000000000..4d1c23da4
--- /dev/null
+++ b/src/components/tag/index.js
@@ -0,0 +1,77 @@
+import Taro from "@tarojs/taro"
+import { View } from "@tarojs/components"
+import PropTypes from 'prop-types';
+
+import './index.scss'
+
+const SIZE_CLASS = {
+ normal: 'normal',
+ small: 'small',
+}
+
+const TYPE_CLASS = {
+ primary: 'primary',
+}
+
+
+export default class AtTag extends Taro.Component {
+ constructor() {
+ super(...arguments)
+ this.state = {
+ active: this.props.active,
+ }
+ }
+
+ onClick() {
+ if (!this.props.disabled) {
+ let active = !this.state.active
+ this.setState({
+ active,
+ })
+ this.props.onClick(...arguments, {active})
+ }
+ }
+
+ render(){
+ let {
+ size = 'normal',
+ type = '',
+ circle = false,
+ // active = false,
+ disabled = false,
+ } = this.props
+ let rootClassName = ['at-tag']
+ let sizeClass = SIZE_CLASS[size] || ''
+ let disabledClass = disabled? 'at-tag--disabled': ''
+ let typeClass = TYPE_CLASS[type]? `at-tag--${type}`: ''
+ let activeClass = this.state.active? 'at-tag--active': ''
+ let circleClass = circle? 'at-tag--circle': ''
+ // let loadingClass = loading? 'at-tag--loading': ''
+ // let iconClass = loading? 'at-tag--icon': ''
+
+ rootClassName.push(`at-tag--${sizeClass}`, typeClass, activeClass, circleClass, disabledClass)
+ rootClassName = rootClassName.filter(str => str != '')
+
+ return (
+
+ {this.props.children}
+
+ )
+ }
+}
+
+AtTag.defaultProps = {
+ size: 'normal',
+ type: '',
+ circle: false,
+ active: false,
+ disabled: false,
+}
+
+AtTag.propTypes = {
+ size: PropTypes.oneOf(['normal', 'small']),
+ type: PropTypes.oneOf(['', 'primary']),
+ circle: PropTypes.bool,
+ active: PropTypes.bool,
+ disabled: PropTypes.bool,
+};
diff --git a/src/components/tag/index.scss b/src/components/tag/index.scss
new file mode 100644
index 000000000..d44a72e8e
--- /dev/null
+++ b/src/components/tag/index.scss
@@ -0,0 +1,40 @@
+
+.at-tag {
+ height: 60px;
+ line-height: 60px;
+ padding: 0 30px;
+ text-align: center;
+ border-radius: 8px;
+ font-size: 28px;
+ display: inline-block;
+
+ border: 2px solid #F7F7F7;
+ background-color: #F7F7F7;
+ color: #666;
+ box-sizing: border-box;
+ vertical-align: middle;
+ &--active {
+ border: 2px solid #77A1F7;
+ background-color: #fff;
+ color: #77A1F7;
+ &.at-tag--primary {
+ background-color: #769EFA;
+ color: #fff;
+ border: 2px solid #769EFA;;
+ }
+ }
+ &--disabled {
+ opacity: .3;
+ }
+ &--small {
+ height: 40px;
+ line-height: 40px;
+ padding: 0 15px;
+ font-size: 20px;
+ }
+ &--circle {
+ border-radius: 100px;
+ overflow: hidden;
+ background-clip: border-box;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/basic/button/index.js b/src/pages/basic/button/index.js
new file mode 100644
index 000000000..abba4ecda
--- /dev/null
+++ b/src/pages/basic/button/index.js
@@ -0,0 +1,118 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+
+import AtButton from '../../../components/button/index'
+
+import './index.scss'
+
+export default class ButtonPage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Button Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onButtonClick() {
+ alert('点击了!')
+ }
+
+ render() {
+ // let {icons} = this.state
+ return (
+
+
+ 页面主操作
+
+
+ 带loading
+
+
+ 带icon
+
+
+ 点击态
+
+
+ 不可操作
+
+
+
+
+ 页面次操作
+
+
+ 带icon
+
+
+ 点击态
+
+
+ 不可操作
+
+
+
+ 页面次要操作
+
+
+ 带icon
+
+
+ 点击态
+
+
+ 不可操作
+
+
+
+ 按钮
+ 按钮
+ 按钮
+
+
+
+
+
+
+
+ 按钮
+ 按钮
+ 按钮
+
+
+ 按钮
+ 按钮
+ 按钮
+
+
+ {/* 带圆角 */}
+
+ 按钮
+ 按钮
+ 按钮
+
+
+
+
+
+
+
+ 按钮
+ 按钮
+ 按钮
+
+
+ 按钮
+ 按钮
+ 按钮
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/basic/button/index.scss b/src/pages/basic/button/index.scss
new file mode 100644
index 000000000..b7c4a63f6
--- /dev/null
+++ b/src/pages/basic/button/index.scss
@@ -0,0 +1,16 @@
+@import "../../../style/variables";
+
+.page {
+ background-color: #fff;
+}
+
+
+.example {
+ margin-bottom: 15px;
+ &.small {
+ text-align: center;
+ > * {
+ margin: 0 20px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/pages/view/icon/index.js b/src/pages/basic/icon/index.js
similarity index 100%
rename from src/pages/view/icon/index.js
rename to src/pages/basic/icon/index.js
diff --git a/src/pages/view/icon/index.scss b/src/pages/basic/icon/index.scss
similarity index 100%
rename from src/pages/view/icon/index.scss
rename to src/pages/basic/icon/index.scss
diff --git a/src/pages/index/index.js b/src/pages/index/index.js
index f49023181..eba425155 100644
--- a/src/pages/index/index.js
+++ b/src/pages/index/index.js
@@ -14,8 +14,8 @@ export default class Index extends Taro.Component {
this.state = {
list: [
{
- id: 'View',
- name: '视图',
+ id: 'Basic',
+ name: '基础',
open: false,
childrens: [
{
@@ -37,13 +37,13 @@ export default class Index extends Taro.Component {
]
},
{
- id: 'Content',
- name: '基础组件',
+ id: 'View',
+ name: '视图组件',
open: false,
childrens: [
{
title: '通告栏',
- name: 'Notice-Bar'
+ name: 'NoticeBar'
},
{
title: '徽章',
diff --git a/src/pages/view/article/index.js b/src/pages/view/article/index.js
new file mode 100644
index 000000000..2533c1b3b
--- /dev/null
+++ b/src/pages/view/article/index.js
@@ -0,0 +1,82 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+import AtAvatar from '../../../components/avatar/index'
+
+import './index.scss'
+
+export default class AvatarPage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Avatar Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onClick() {
+ // alert('点击了!')
+ console.log(arguments)
+ }
+
+ render() {
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 凹
+
+
+ 凹
+
+
+ 凹
+
+
+
+
+
+ 凹
+
+
+ 凹
+
+
+ 凹
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/view/article/index.scss b/src/pages/view/article/index.scss
new file mode 100644
index 000000000..5fb321d2e
--- /dev/null
+++ b/src/pages/view/article/index.scss
@@ -0,0 +1,16 @@
+@import "../../../style/variables";
+
+.page {
+ background-color: #fff;
+}
+
+
+.example {
+ margin-bottom: 15px;
+ text-align: center;
+ &-item {
+ vertical-align: middle;
+ display: inline-block;
+ margin: 0 20px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/view/avatar/index.js b/src/pages/view/avatar/index.js
new file mode 100644
index 000000000..2533c1b3b
--- /dev/null
+++ b/src/pages/view/avatar/index.js
@@ -0,0 +1,82 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+import AtAvatar from '../../../components/avatar/index'
+
+import './index.scss'
+
+export default class AvatarPage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Avatar Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onClick() {
+ // alert('点击了!')
+ console.log(arguments)
+ }
+
+ render() {
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 凹
+
+
+ 凹
+
+
+ 凹
+
+
+
+
+
+ 凹
+
+
+ 凹
+
+
+ 凹
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/view/avatar/index.scss b/src/pages/view/avatar/index.scss
new file mode 100644
index 000000000..5fb321d2e
--- /dev/null
+++ b/src/pages/view/avatar/index.scss
@@ -0,0 +1,16 @@
+@import "../../../style/variables";
+
+.page {
+ background-color: #fff;
+}
+
+
+.example {
+ margin-bottom: 15px;
+ text-align: center;
+ &-item {
+ vertical-align: middle;
+ display: inline-block;
+ margin: 0 20px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/view/badge/index.js b/src/pages/view/badge/index.js
new file mode 100644
index 000000000..0c0ef318c
--- /dev/null
+++ b/src/pages/view/badge/index.js
@@ -0,0 +1,85 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+
+import AtBadge from '../../../components/badge/index'
+import AtButton from '../../../components/button/index'
+
+import './index.scss'
+
+export default class BadgePage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Badge Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ // onButtonClick() {
+ // alert('点击了!')
+ // }
+
+ render() {
+ // let {icons} = this.state
+ return (
+
+
+
+
+
+ 按钮
+
+
+
+
+ 按钮
+
+
+
+
+
+
+
+ 按钮
+
+
+
+
+ 按钮
+
+
+
+
+
+
+
+ 按钮
+
+
+
+
+ 按钮
+
+
+
+
+
+
+
+ 按钮
+
+
+
+
+ 按钮
+
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/view/badge/index.scss b/src/pages/view/badge/index.scss
new file mode 100644
index 000000000..5fb321d2e
--- /dev/null
+++ b/src/pages/view/badge/index.scss
@@ -0,0 +1,16 @@
+@import "../../../style/variables";
+
+.page {
+ background-color: #fff;
+}
+
+
+.example {
+ margin-bottom: 15px;
+ text-align: center;
+ &-item {
+ vertical-align: middle;
+ display: inline-block;
+ margin: 0 20px;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/view/button/index.js b/src/pages/view/button/index.js
deleted file mode 100644
index e0116b74b..000000000
--- a/src/pages/view/button/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import Taro from '@tarojs/taro'
-import { View, Text } from '@tarojs/components'
-
-import AtButton from '../../../components/button/index'
-
-import './index.scss'
-
-export default class ButtonPage extends Taro.Component {
- config = {
- navigationBarTitleText: 'Button Page'
- }
-
- constructor() {
- super(...arguments)
- this.state = {
-
- }
- }
-
- onButtonClick() {
- alert('点击了!')
- }
-
- render() {
- // let {icons} = this.state
- return (
-
-
- 页面主操作
-
-
- 带loading
-
-
- 带icon
-
-
- 点击态
-
-
- 不可操作
-
-
-
-
- 页面次操作
-
-
- 带icon
-
-
- 点击态
-
-
- 不可操作
-
-
-
- 页面次要操作
-
-
- 带icon
-
-
- 点击态
-
-
- 不可操作
-
-
- )
- }
-}
diff --git a/src/pages/view/noticebar/index.js b/src/pages/view/noticebar/index.js
new file mode 100644
index 000000000..b0060abe5
--- /dev/null
+++ b/src/pages/view/noticebar/index.js
@@ -0,0 +1,49 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+
+import AtNoticebar from '../../../components/noticebar/index'
+
+import './index.scss'
+
+export default class NoticebarPage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Noticebar Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ // onButtonClick() {
+ // alert('点击了!')
+ // }
+
+ render() {
+ // let {icons} = this.state
+ return (
+
+
+ 这是 NoticeBar 通告栏。带关闭按钮、查看更多链接、单行
+
+
+ 这是 NoticeBar 通告栏。带关闭按钮、单行
+
+
+ 这是 NoticeBar 通告栏。这是 NoticeBar 通告栏。这是 NoticeBar 通告栏。这是 NoticeBar 通告栏。这是 NoticeBar 通告栏。带关闭按钮、多行
+
+
+
+ 这是 NoticeBar 通告栏。单行
+
+
+ 这是 NoticeBar 通告栏。单行、带 icon
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/view/button/index.scss b/src/pages/view/noticebar/index.scss
similarity index 100%
rename from src/pages/view/button/index.scss
rename to src/pages/view/noticebar/index.scss
diff --git a/src/pages/view/tag/index.js b/src/pages/view/tag/index.js
new file mode 100644
index 000000000..77ad1d97c
--- /dev/null
+++ b/src/pages/view/tag/index.js
@@ -0,0 +1,113 @@
+import Taro from '@tarojs/taro'
+import { View, Text } from '@tarojs/components'
+
+import AtTag from '../../../components/tag/index'
+
+import './index.scss'
+
+export default class TagPage extends Taro.Component {
+ config = {
+ navigationBarTitleText: 'Tag Page'
+ }
+
+ constructor() {
+ super(...arguments)
+ this.state = {
+
+ }
+ }
+
+ onClick() {
+ // alert('点击了!')
+ console.log(arguments)
+ }
+
+ render() {
+ // let {icons} = this.state
+ return (
+
+
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+
+
+
+ 标签
+
+
+ 标签
+
+
+
+ {/* 小尺寸 */}
+
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+ 标签
+
+
+
+
+
+ 标签
+
+
+ 标签
+
+
+
+
+ )
+ }
+}
diff --git a/src/pages/view/tag/index.scss b/src/pages/view/tag/index.scss
new file mode 100644
index 000000000..5fb321d2e
--- /dev/null
+++ b/src/pages/view/tag/index.scss
@@ -0,0 +1,16 @@
+@import "../../../style/variables";
+
+.page {
+ background-color: #fff;
+}
+
+
+.example {
+ margin-bottom: 15px;
+ text-align: center;
+ &-item {
+ vertical-align: middle;
+ display: inline-block;
+ margin: 0 20px;
+ }
+}
\ No newline at end of file
diff --git a/src/style/mixins.scss b/src/style/mixins.scss
index b77b55cd5..b14f4ff7c 100644
--- a/src/style/mixins.scss
+++ b/src/style/mixins.scss
@@ -1,3 +1,16 @@
@mixin fontSize($num) {
font-size: $num;
+}
+
+@mixin line($num: 1) {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ @if ($num == 1) {
+ white-space: nowrap;
+ }
+ @else {
+ display: -webkit-box;
+ -webkit-line-clamp: $num;
+ -webkit-box-orient: vertical;
+ }
}
\ No newline at end of file