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