bulade-ui 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +2 -0
  2. package/miniprogram_dist/bld-action-sheet/index.js +196 -0
  3. package/miniprogram_dist/bld-action-sheet/index.js.map +1 -0
  4. package/miniprogram_dist/bld-action-sheet/index.json +8 -0
  5. package/miniprogram_dist/bld-action-sheet/index.wxml +57 -0
  6. package/miniprogram_dist/bld-action-sheet/index.wxss +160 -0
  7. package/miniprogram_dist/bld-badge/index.js +156 -0
  8. package/miniprogram_dist/bld-badge/index.js.map +1 -0
  9. package/miniprogram_dist/bld-badge/index.json +4 -0
  10. package/miniprogram_dist/bld-badge/index.wxml +14 -0
  11. package/miniprogram_dist/bld-badge/index.wxss +43 -0
  12. package/miniprogram_dist/bld-drawer/index.js +2 -2
  13. package/miniprogram_dist/bld-drawer/index.js.map +1 -1
  14. package/miniprogram_dist/bld-drawer/index.wxss +4 -3
  15. package/miniprogram_dist/bld-empty-page/index.js +123 -0
  16. package/miniprogram_dist/bld-empty-page/index.js.map +1 -0
  17. package/miniprogram_dist/bld-empty-page/index.json +3 -0
  18. package/miniprogram_dist/bld-empty-page/index.wxml +11 -0
  19. package/miniprogram_dist/bld-empty-page/index.wxss +14 -0
  20. package/miniprogram_dist/bld-message/index.js +2 -2
  21. package/miniprogram_dist/bld-message/index.js.map +1 -1
  22. package/miniprogram_dist/bld-message/message.js +2 -2
  23. package/miniprogram_dist/bld-message/message.js.map +1 -1
  24. package/miniprogram_dist/bld-modal/index.js +223 -0
  25. package/miniprogram_dist/bld-modal/index.js.map +1 -0
  26. package/miniprogram_dist/bld-modal/index.json +6 -0
  27. package/miniprogram_dist/bld-modal/index.wxml +23 -0
  28. package/miniprogram_dist/bld-modal/index.wxss +97 -0
  29. package/miniprogram_dist/bld-modal/modal.js +147 -0
  30. package/miniprogram_dist/bld-modal/modal.js.map +1 -0
  31. package/miniprogram_dist/bld-navbar/index.js +167 -0
  32. package/miniprogram_dist/bld-navbar/index.js.map +1 -0
  33. package/miniprogram_dist/bld-navbar/index.json +6 -0
  34. package/miniprogram_dist/bld-navbar/index.wxml +8 -0
  35. package/miniprogram_dist/bld-navbar/index.wxss +31 -0
  36. package/miniprogram_dist/bld-navbar-group/index.js +243 -0
  37. package/miniprogram_dist/bld-navbar-group/index.js.map +1 -0
  38. package/miniprogram_dist/bld-navbar-group/index.json +4 -0
  39. package/miniprogram_dist/bld-navbar-group/index.wxml +37 -0
  40. package/miniprogram_dist/bld-navbar-group/index.wxss +30 -0
  41. package/miniprogram_dist/bld-pop-up/index.js +129 -0
  42. package/miniprogram_dist/bld-pop-up/index.js.map +1 -0
  43. package/miniprogram_dist/bld-pop-up/index.json +6 -0
  44. package/miniprogram_dist/bld-pop-up/index.wxml +18 -0
  45. package/miniprogram_dist/bld-pop-up/index.wxss +27 -0
  46. package/miniprogram_dist/bld-tag/index.js +134 -0
  47. package/miniprogram_dist/bld-tag/index.js.map +1 -0
  48. package/miniprogram_dist/bld-tag/index.json +3 -0
  49. package/miniprogram_dist/bld-tag/index.wxml +3 -0
  50. package/miniprogram_dist/bld-tag/index.wxss +108 -0
  51. package/miniprogram_dist/bld-toast/index.js +2 -2
  52. package/miniprogram_dist/bld-toast/index.js.map +1 -1
  53. package/miniprogram_dist/bld-toast/toast.js +2 -2
  54. package/miniprogram_dist/bld-toast/toast.js.map +1 -1
  55. package/miniprogram_dist/cell/index.js +2 -2
  56. package/miniprogram_dist/cell/index.js.map +1 -1
  57. package/miniprogram_dist/cell-group/index.js +2 -2
  58. package/miniprogram_dist/cell-group/index.js.map +1 -1
  59. package/miniprogram_dist/grid/index.js +2 -2
  60. package/miniprogram_dist/grid/index.js.map +1 -1
  61. package/miniprogram_dist/grid-item/index.js +2 -2
  62. package/miniprogram_dist/grid-item/index.js.map +1 -1
  63. package/miniprogram_dist/icon/index.js +2 -2
  64. package/miniprogram_dist/icon/index.js.map +1 -1
  65. package/miniprogram_dist/timeline/index.js +2 -2
  66. package/miniprogram_dist/timeline/index.js.map +1 -1
  67. package/miniprogram_dist/timeline-item/index.js +2 -2
  68. package/miniprogram_dist/timeline-item/index.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/bld-action-sheet/index.js +83 -0
  71. package/src/bld-action-sheet/index.json +8 -0
  72. package/src/bld-action-sheet/index.scss +180 -0
  73. package/src/bld-action-sheet/index.wxml +57 -0
  74. package/src/bld-action-sheet/index.wxss +160 -0
  75. package/src/bld-badge/index.js +53 -0
  76. package/src/bld-badge/index.json +4 -0
  77. package/src/bld-badge/index.scss +46 -0
  78. package/src/bld-badge/index.wxml +14 -0
  79. package/src/bld-badge/index.wxss +43 -0
  80. package/src/bld-content-container/index.js +46 -0
  81. package/src/bld-content-container/index.json +3 -0
  82. package/src/bld-content-container/index.scss +0 -0
  83. package/src/bld-content-container/index.wxml +5 -0
  84. package/src/bld-content-container/index.wxss +0 -0
  85. package/src/bld-drawer/index.scss +8 -3
  86. package/src/bld-drawer/index.wxss +4 -3
  87. package/src/bld-empty-page/index.js +23 -0
  88. package/src/bld-empty-page/index.json +3 -0
  89. package/src/bld-empty-page/index.scss +15 -0
  90. package/src/bld-empty-page/index.wxml +11 -0
  91. package/src/bld-empty-page/index.wxss +14 -0
  92. package/src/bld-modal/index.js +123 -0
  93. package/src/bld-modal/index.json +6 -0
  94. package/src/bld-modal/index.scss +108 -0
  95. package/src/bld-modal/index.wxml +23 -0
  96. package/src/bld-modal/index.wxss +97 -0
  97. package/src/bld-modal/modal.js +38 -0
  98. package/src/bld-navbar/index.js +63 -0
  99. package/src/bld-navbar/index.json +6 -0
  100. package/src/bld-navbar/index.scss +35 -0
  101. package/src/bld-navbar/index.wxml +8 -0
  102. package/src/bld-navbar/index.wxss +31 -0
  103. package/src/bld-navbar-group/index.js +139 -0
  104. package/src/bld-navbar-group/index.json +4 -0
  105. package/src/bld-navbar-group/index.scss +33 -0
  106. package/src/bld-navbar-group/index.wxml +37 -0
  107. package/src/bld-navbar-group/index.wxss +30 -0
  108. package/src/bld-pop-up/index.js +29 -0
  109. package/src/bld-pop-up/index.json +6 -0
  110. package/src/bld-pop-up/index.scss +27 -0
  111. package/src/bld-pop-up/index.wxml +18 -0
  112. package/src/bld-pop-up/index.wxss +27 -0
  113. package/src/bld-tag/index.js +34 -0
  114. package/src/bld-tag/index.json +3 -0
  115. package/src/bld-tag/index.scss +127 -0
  116. package/src/bld-tag/index.wxml +3 -0
  117. package/src/bld-tag/index.wxss +108 -0
@@ -0,0 +1,83 @@
1
+ Component({
2
+ externalClasses: ['custom-class', 'custom-mask-class', 'custom-header-class'],
3
+
4
+ options: {
5
+ addGlobalClass: true,
6
+ multipleSlots: true
7
+ },
8
+
9
+ properties: {
10
+ visible: {
11
+ type: Boolean,
12
+ value: false
13
+ },
14
+ zIndex: {
15
+ type: Number,
16
+ value: 9
17
+ },
18
+ maskClosable: {
19
+ type: Boolean,
20
+ value: true
21
+ },
22
+ showCancel: {
23
+ type: Boolean,
24
+ value: false
25
+ },
26
+ cancelText: {
27
+ type: String,
28
+ value: '取消'
29
+ },
30
+ actions: {
31
+ type: Array,
32
+ value: []
33
+ }
34
+ },
35
+
36
+ methods: {
37
+ // 点击遮罩
38
+ handleMaskClick() {
39
+ if (!this.data.maskClosable) return
40
+ this.handleCancelClick()
41
+ },
42
+
43
+ // 点击事件
44
+ handleItemClick({ currentTarget = {} }) {
45
+ const dataset = currentTarget.dataset || {}
46
+ const { index } = dataset
47
+
48
+ const item = this.data.actions[index]
49
+
50
+ if (item.loading || item.disabled) return
51
+
52
+ this.triggerEvent('click', {
53
+ index
54
+ })
55
+ },
56
+
57
+ // 取消
58
+ handleCancelClick() {
59
+ this.triggerEvent('cancel')
60
+ },
61
+
62
+ getuserinfo({
63
+ detail = {}
64
+ } = {}) {
65
+ this.triggerEvent('getuserinfo', detail)
66
+ },
67
+ contact({
68
+ detail = {}
69
+ } = {}) {
70
+ this.triggerEvent('contact', detail)
71
+ },
72
+ getphonenumber({
73
+ detail = {}
74
+ } = {}) {
75
+ this.triggerEvent('getphonenumber', detail)
76
+ },
77
+ error({
78
+ detail = {}
79
+ } = {}) {
80
+ this.triggerEvent('error', detail)
81
+ }
82
+ }
83
+ })
@@ -0,0 +1,8 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents":
4
+ {
5
+ "m-button": "../button/index",
6
+ "m-icon": "../icon/index"
7
+ }
8
+ }
@@ -0,0 +1,180 @@
1
+ .m-mask {
2
+ z-index: 1998;
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ opacity: 1;
9
+ visibility: visible;
10
+ background: var(--color-mask, rgba(0, 0, 0, 0.55));
11
+ transition: all 0.25s ease-in-out;
12
+
13
+ &.is-hidden {
14
+ opacity: 0;
15
+ visibility: hidden;
16
+ }
17
+ }
18
+
19
+ .m-sheet {
20
+ z-index: 1999;
21
+ position: fixed;
22
+ width: 100%;
23
+ left: 0;
24
+ right: 0;
25
+ bottom: 0;
26
+ visibility: visible;
27
+ background: #fff;
28
+ transform: translate3d(0, 0, 0);
29
+ transform-origin: center;
30
+ transition: all 0.25s ease-in-out;
31
+ box-sizing: border-box;
32
+ padding-bottom: constant(safe-area-inset-bottom);
33
+ padding-bottom: env(safe-area-inset-bottom);
34
+
35
+ &.is-hidden {
36
+ transform: translate3d(0, 100%, 0);
37
+ visibility: hidden;
38
+ }
39
+
40
+ .m-sheet__header {
41
+ background: #fff;
42
+ text-align: center;
43
+ position: relative;
44
+ font-size: 24rpx;
45
+ color: #80848f;
46
+
47
+ &::after {
48
+ content: '';
49
+ position: absolute;
50
+ top: 0;
51
+ left: 0;
52
+ width: 200%;
53
+ height: 200%;
54
+ transform: scale(0.5);
55
+ transform-origin: 0 0;
56
+ pointer-events: none;
57
+ box-sizing: border-box;
58
+ border: 0 solid var(--color-border, #dcdee2);
59
+ border-bottom-width: 1px;
60
+ }
61
+ }
62
+
63
+ .m-sheet__item {
64
+ position: relative;
65
+
66
+ &::after {
67
+ content: '';
68
+ position: absolute;
69
+ top: 0;
70
+ left: 0;
71
+ width: 200%;
72
+ height: 200%;
73
+ transform: scale(0.5);
74
+ transform-origin: 0 0;
75
+ pointer-events: none;
76
+ box-sizing: border-box;
77
+ border: 0 solid var(--color-border, #dcdee2);
78
+ border-bottom-width: 1px;
79
+ }
80
+
81
+ &:nth-last-child(1)::after {
82
+ display: none;
83
+ }
84
+ }
85
+
86
+ .m-sheet__cancel {
87
+ border-top: 24rpx solid #e3e3e3;
88
+ }
89
+
90
+ .m-sheet__loading {
91
+ display: inline-block;
92
+ vertical-align: middle;
93
+ margin-right: 20rpx;
94
+ width: 24rpx;
95
+ height: 24rpx;
96
+ background: 0 0;
97
+ border-radius: 50%;
98
+ border: 4rpx solid #e5e5e5;
99
+ border-left-color: #666;
100
+ animation: btn-spin 0.6s linear infinite;
101
+ }
102
+
103
+ .m-sheet__text {
104
+ display: inline-block;
105
+ vertical-align: middle;
106
+ }
107
+
108
+ .m-sheet__btn-icon {
109
+ margin-right: 8rpx;
110
+ }
111
+
112
+ @keyframes btn-spin {
113
+ 0% {
114
+ transform: rotate(0);
115
+ }
116
+
117
+ 100% {
118
+ transform: rotate(360deg);
119
+ }
120
+ }
121
+
122
+ .m-button {
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: center;
126
+ position: relative;
127
+ white-space: nowrap;
128
+ letter-spacing: 4rpx;
129
+ height: 96rpx;
130
+ font-size: 32rpx;
131
+ border: 0 !important;
132
+ border-radius: 0;
133
+ color: #495060;
134
+ overflow: visible;
135
+ background-color: #fff;
136
+ box-sizing: border-box;
137
+ transition: opacity .16s, background-color .16s;
138
+
139
+ &.is-hover {
140
+ background-color: #f9f9f9;
141
+ }
142
+
143
+ &.is-disabled {
144
+ color: #c8c9cc;
145
+ }
146
+
147
+ &::after {
148
+ border: none;
149
+ content: " ";
150
+ height: 1px;
151
+ position: absolute;
152
+ bottom: 0;
153
+ left: 0;
154
+ transform: scaleY(.5);
155
+ -webkit-transform-origin: 0 0;
156
+ transform-origin: 0 0;
157
+ box-sizing: border-box;
158
+ }
159
+
160
+ .m-sheet__btn-icon {
161
+ display: inline-block;
162
+ font-size: 28rpx;
163
+ width: 24rpx;
164
+ height: 24rpx;
165
+ }
166
+
167
+ .m-button__loading {
168
+ display: inline-block;
169
+ vertical-align: middle;
170
+ width: 32rpx;
171
+ height: 32rpx;
172
+ background-color: 0 0;
173
+ border-radius: 50%;
174
+ border: 4rpx solid currentColor;
175
+ border-left-color: transparent;
176
+ animation: btn-spinner 0.8s linear;
177
+ animation-iteration-count: infinite;
178
+ }
179
+ }
180
+ }
@@ -0,0 +1,57 @@
1
+ <view
2
+ class="custom-mask-class m-mask {{ visible ? '' : 'is-hidden' }}"
3
+ style="{{ 'z-index: ' + zIndex }}"
4
+ bindtap="handleMaskClick"
5
+ ></view>
6
+
7
+ <view
8
+ class="custom-class m-sheet {{ visible ? '' : 'is-hidden' }}"
9
+ style="{{ 'z-index: ' + zIndex }}"
10
+ >
11
+ <view class="m-sheet__header custom-class__header">
12
+ <slot name="header" />
13
+ </view>
14
+
15
+ <view class="m-sheet__content">
16
+
17
+ <view class="m-sheet__item" wx:for="{{ actions }}" wx:key="name">
18
+
19
+ <button
20
+ class="m-button {{ item.loading ? 'is-loading' : '' }} {{ item.disabled ? 'is-disabled' : ''}}"
21
+ hover-class="{{ !item.loading && !item.disabled ? 'is-hover' : '' }}"
22
+ bindtap="handleItemClick"
23
+ data-index="{{ index }}"
24
+ open-type="{{ item.openType }}"
25
+ send-message-title="{{ sendMessageTitle }}"
26
+ send-message-path="{{ sendMessagePath }}"
27
+ send-message-img="{{ sendMessageImg }}"
28
+ show-message-card="{{ showMessageCard }}"
29
+ bindcontact="contact"
30
+ bindgetuserinfo="getuserinfo"
31
+ bindgetphonenumber="getphonenumber"
32
+ binderror="error"
33
+ plain="true"
34
+ style="{{ item.color ? 'color:' + item.color : '' }}"
35
+ >
36
+ <view wx:if="{{ item.loading }}" class="m-button__loading"></view>
37
+ <view wx:else class="m-sheet__text">
38
+ <m-icon
39
+ wx:if="{{ item.icon }}"
40
+ name="{{ item.icon }}"
41
+ color="{{ item.color }}"
42
+ size="36"
43
+ class="m-sheet__btn-icon"
44
+ />
45
+ {{ item.name }}
46
+ </view>
47
+
48
+ </button>
49
+
50
+ </view>
51
+
52
+ </view>
53
+
54
+ <view class="m-sheet__cancel" wx:if="{{ showCancel }}">
55
+ <m-button m-class="m-sheet__button" size="large" type="ghost" full bind:click="handleCancelClick">{{ cancelText }}</m-button>
56
+ </view>
57
+ </view>
@@ -0,0 +1,160 @@
1
+ .m-mask {
2
+ z-index: 1998;
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ opacity: 1;
9
+ visibility: visible;
10
+ background: var(--color-mask, rgba(0, 0, 0, 0.55));
11
+ transition: all 0.25s ease-in-out;
12
+ }
13
+ .m-mask.is-hidden {
14
+ opacity: 0;
15
+ visibility: hidden;
16
+ }
17
+
18
+ .m-sheet {
19
+ z-index: 1999;
20
+ position: fixed;
21
+ width: 100%;
22
+ left: 0;
23
+ right: 0;
24
+ bottom: 0;
25
+ visibility: visible;
26
+ background: #fff;
27
+ transform: translate3d(0, 0, 0);
28
+ transform-origin: center;
29
+ transition: all 0.25s ease-in-out;
30
+ box-sizing: border-box;
31
+ padding-bottom: constant(safe-area-inset-bottom);
32
+ padding-bottom: env(safe-area-inset-bottom);
33
+ }
34
+ .m-sheet.is-hidden {
35
+ transform: translate3d(0, 100%, 0);
36
+ visibility: hidden;
37
+ }
38
+ .m-sheet .m-sheet__header {
39
+ background: #fff;
40
+ text-align: center;
41
+ position: relative;
42
+ font-size: 24rpx;
43
+ color: #80848f;
44
+ }
45
+ .m-sheet .m-sheet__header::after {
46
+ content: "";
47
+ position: absolute;
48
+ top: 0;
49
+ left: 0;
50
+ width: 200%;
51
+ height: 200%;
52
+ transform: scale(0.5);
53
+ transform-origin: 0 0;
54
+ pointer-events: none;
55
+ box-sizing: border-box;
56
+ border: 0 solid var(--color-border, #dcdee2);
57
+ border-bottom-width: 1px;
58
+ }
59
+ .m-sheet .m-sheet__item {
60
+ position: relative;
61
+ }
62
+ .m-sheet .m-sheet__item::after {
63
+ content: "";
64
+ position: absolute;
65
+ top: 0;
66
+ left: 0;
67
+ width: 200%;
68
+ height: 200%;
69
+ transform: scale(0.5);
70
+ transform-origin: 0 0;
71
+ pointer-events: none;
72
+ box-sizing: border-box;
73
+ border: 0 solid var(--color-border, #dcdee2);
74
+ border-bottom-width: 1px;
75
+ }
76
+ .m-sheet .m-sheet__item:nth-last-child(1)::after {
77
+ display: none;
78
+ }
79
+ .m-sheet .m-sheet__cancel {
80
+ border-top: 24rpx solid #e3e3e3;
81
+ }
82
+ .m-sheet .m-sheet__loading {
83
+ display: inline-block;
84
+ vertical-align: middle;
85
+ margin-right: 20rpx;
86
+ width: 24rpx;
87
+ height: 24rpx;
88
+ background: 0 0;
89
+ border-radius: 50%;
90
+ border: 4rpx solid #e5e5e5;
91
+ border-left-color: #666;
92
+ animation: btn-spin 0.6s linear infinite;
93
+ }
94
+ .m-sheet .m-sheet__text {
95
+ display: inline-block;
96
+ vertical-align: middle;
97
+ }
98
+ .m-sheet .m-sheet__btn-icon {
99
+ margin-right: 8rpx;
100
+ }
101
+ @keyframes btn-spin {
102
+ 0% {
103
+ transform: rotate(0);
104
+ }
105
+ 100% {
106
+ transform: rotate(360deg);
107
+ }
108
+ }
109
+ .m-sheet .m-button {
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ position: relative;
114
+ white-space: nowrap;
115
+ letter-spacing: 4rpx;
116
+ height: 96rpx;
117
+ font-size: 32rpx;
118
+ border: 0 !important;
119
+ border-radius: 0;
120
+ color: #495060;
121
+ overflow: visible;
122
+ background-color: #fff;
123
+ box-sizing: border-box;
124
+ transition: opacity 0.16s, background-color 0.16s;
125
+ }
126
+ .m-sheet .m-button.is-hover {
127
+ background-color: #f9f9f9;
128
+ }
129
+ .m-sheet .m-button.is-disabled {
130
+ color: #c8c9cc;
131
+ }
132
+ .m-sheet .m-button::after {
133
+ border: none;
134
+ content: " ";
135
+ height: 1px;
136
+ position: absolute;
137
+ bottom: 0;
138
+ left: 0;
139
+ transform: scaleY(0.5);
140
+ transform-origin: 0 0;
141
+ box-sizing: border-box;
142
+ }
143
+ .m-sheet .m-button .m-sheet__btn-icon {
144
+ display: inline-block;
145
+ font-size: 28rpx;
146
+ width: 24rpx;
147
+ height: 24rpx;
148
+ }
149
+ .m-sheet .m-button .m-button__loading {
150
+ display: inline-block;
151
+ vertical-align: middle;
152
+ width: 32rpx;
153
+ height: 32rpx;
154
+ background-color: 0 0;
155
+ border-radius: 50%;
156
+ border: 4rpx solid currentColor;
157
+ border-left-color: transparent;
158
+ animation: btn-spinner 0.8s linear;
159
+ animation-iteration-count: infinite;
160
+ }
@@ -0,0 +1,53 @@
1
+ Component({
2
+ externalClasses: ['custom-class'],
3
+
4
+ options: {
5
+ addGlobalClass: true,
6
+ },
7
+
8
+ properties: {
9
+ value: {
10
+ type: Number,
11
+ optionalTypes: [Number, String],
12
+ value: '',
13
+ observer: '_valueObserver'
14
+ },
15
+ max: {
16
+ type: Number,
17
+ value: 99
18
+ },
19
+ bgcolor: {
20
+ type: String,
21
+ value: ''
22
+ },
23
+ isDot: {
24
+ type: Boolean,
25
+ value: false
26
+ },
27
+ static: {
28
+ type: Boolean,
29
+ value: false
30
+ }
31
+ },
32
+
33
+ data: {
34
+ _value: 0
35
+ },
36
+
37
+ methods: {
38
+ _valueObserver() {
39
+ const { value, max } = this.data
40
+
41
+ let _value = ''
42
+ if (!isNaN(value)) {
43
+ _value = parseInt(value) > parseInt(max) ? `${max}+` : value
44
+ } else {
45
+ _value = value
46
+ }
47
+
48
+ this.setData({
49
+ _value
50
+ })
51
+ }
52
+ }
53
+ })
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents": {}
4
+ }
@@ -0,0 +1,46 @@
1
+ .m-badge {
2
+ position: relative;
3
+ display: inline-block;
4
+ line-height: 1;
5
+
6
+ .m-badge-dot {
7
+ z-index: 1;
8
+ position: absolute;
9
+ top: 0;
10
+ right: 0;
11
+ height: 18rpx;
12
+ width: 18rpx;
13
+ transform: translate(50%, -50%);
14
+ transform-origin: 0;
15
+ border-radius: 50%;
16
+ background-color: var(--color-danger, #F56C6C);
17
+ box-shadow: 0 0 0 1px #fff;
18
+ }
19
+
20
+ .m-badge-count {
21
+ z-index: 1;
22
+ position: absolute;
23
+ top: 0;
24
+ right: 0;
25
+ padding: 0 6rpx;
26
+ min-width: 20rpx;
27
+ height: 28rpx;
28
+ line-height: 28rpx;
29
+ color: #fff;
30
+ font-size: 24rpx;
31
+ border-radius: 40rpx;
32
+ border: 1px solid transparent;
33
+ text-align: center;
34
+ white-space: nowrap;
35
+ transform: translate(80%, -50%);
36
+ background-color: var(--color-danger, #F56C6C);
37
+ box-shadow: 0 0 0 4rpx #fff;
38
+ box-sizing: content-box;
39
+
40
+ &.m-badge-count__static {
41
+ display: inline-block;
42
+ position: static;
43
+ transform: translateX(0);
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,14 @@
1
+ <view class="m-badge custom-class">
2
+ <slot />
3
+ <view
4
+ wx:if="{{ isDot }}"
5
+ class="m-badge-dot"
6
+ style="{{ bgcolor ? 'background-color: ' + bgcolor : '' }}"
7
+ ></view>
8
+
9
+ <view
10
+ wx:elif="{{ value }}"
11
+ class="m-badge-count {{ static ? 'm-badge-count__static':'' }}"
12
+ style="{{ bgcolor ? 'background-color: ' + bgcolor : '' }}"
13
+ >{{ _value }}</view>
14
+ </view>
@@ -0,0 +1,43 @@
1
+ .m-badge {
2
+ position: relative;
3
+ display: inline-block;
4
+ line-height: 1;
5
+ }
6
+ .m-badge .m-badge-dot {
7
+ z-index: 1;
8
+ position: absolute;
9
+ top: 0;
10
+ right: 0;
11
+ height: 18rpx;
12
+ width: 18rpx;
13
+ transform: translate(50%, -50%);
14
+ transform-origin: 0;
15
+ border-radius: 50%;
16
+ background-color: var(--color-danger, #F56C6C);
17
+ box-shadow: 0 0 0 1px #fff;
18
+ }
19
+ .m-badge .m-badge-count {
20
+ z-index: 1;
21
+ position: absolute;
22
+ top: 0;
23
+ right: 0;
24
+ padding: 0 6rpx;
25
+ min-width: 20rpx;
26
+ height: 28rpx;
27
+ line-height: 28rpx;
28
+ color: #fff;
29
+ font-size: 24rpx;
30
+ border-radius: 40rpx;
31
+ border: 1px solid transparent;
32
+ text-align: center;
33
+ white-space: nowrap;
34
+ transform: translate(80%, -50%);
35
+ background-color: var(--color-danger, #F56C6C);
36
+ box-shadow: 0 0 0 4rpx #fff;
37
+ box-sizing: content-box;
38
+ }
39
+ .m-badge .m-badge-count.m-badge-count__static {
40
+ display: inline-block;
41
+ position: static;
42
+ transform: translateX(0);
43
+ }
@@ -0,0 +1,46 @@
1
+ const app = getApp();
2
+
3
+ const menuButtonInfo = app.globalData.menuButtonDistance;
4
+ const systemInfo = app.globalData.systemInfo;
5
+ const paddingBottomUnit = 40;
6
+ const statusBarHeight = app.globalData.systemInfo.statusBarHeight;
7
+ const gap = menuButtonInfo.top - statusBarHeight;
8
+ const navBarHeight = statusBarHeight + menuButtonInfo.height + gap * 2;
9
+
10
+ Component({
11
+ externalClasses: ["iclass"],
12
+ options: {
13
+ styleIsolation: 'apply-shared'
14
+ },
15
+ properties: {
16
+ navBarPosition: {
17
+ type: String,
18
+ value: "",
19
+ },
20
+ top: {
21
+ type: Number,
22
+ value: 1,
23
+ },
24
+ bottom: {
25
+ type: Number,
26
+ value: 1,
27
+ },
28
+ },
29
+ data: {
30
+ style: `padding-top: ${gap}px;padding-bottom: ${paddingBottomUnit}px`,
31
+ },
32
+
33
+ observers: {
34
+ "navBarPosition, top, bottom": function (navBarPosition, top, bottom) {
35
+ if (navBarPosition === "fixed") {
36
+ this.setData({
37
+ style: `padding-top: ${navBarHeight + gap * this.data.top}px;padding-bottom: ${bottom * paddingBottomUnit}px`,
38
+ });
39
+ } else {
40
+ this.setData({
41
+ style: `padding-top: ${gap * this.data.top}px;padding-bottom: ${bottom * paddingBottomUnit}px`,
42
+ });
43
+ }
44
+ },
45
+ },
46
+ });
@@ -0,0 +1,3 @@
1
+ {
2
+ "component": true
3
+ }
File without changes
@@ -0,0 +1,5 @@
1
+ <view
2
+ class="content-container iclass"
3
+ style="{{ style }}">
4
+ <slot />
5
+ </view>