maooo-skyline-ui-system 0.1.1

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 +157 -0
  2. package/miniprogram_dist/button/button.js +43 -0
  3. package/miniprogram_dist/button/button.json +5 -0
  4. package/miniprogram_dist/button/button.wxml +12 -0
  5. package/miniprogram_dist/button/button.wxs +23 -0
  6. package/miniprogram_dist/button/button.wxss +133 -0
  7. package/miniprogram_dist/calendar/calendar.js +549 -0
  8. package/miniprogram_dist/calendar/calendar.json +8 -0
  9. package/miniprogram_dist/calendar/calendar.wxml +79 -0
  10. package/miniprogram_dist/calendar/calendar.wxss +265 -0
  11. package/miniprogram_dist/card/card.js +22 -0
  12. package/miniprogram_dist/card/card.json +5 -0
  13. package/miniprogram_dist/card/card.wxml +9 -0
  14. package/miniprogram_dist/card/card.wxss +34 -0
  15. package/miniprogram_dist/countdown/countdown.js +213 -0
  16. package/miniprogram_dist/countdown/countdown.json +3 -0
  17. package/miniprogram_dist/countdown/countdown.wxml +9 -0
  18. package/miniprogram_dist/countdown/countdown.wxss +33 -0
  19. package/miniprogram_dist/form/form.js +12 -0
  20. package/miniprogram_dist/form/form.json +5 -0
  21. package/miniprogram_dist/form/form.wxml +12 -0
  22. package/miniprogram_dist/form/form.wxss +35 -0
  23. package/miniprogram_dist/form-group/form-group.js +53 -0
  24. package/miniprogram_dist/form-group/form-group.json +5 -0
  25. package/miniprogram_dist/form-group/form-group.wxml +11 -0
  26. package/miniprogram_dist/form-group/form-group.wxss +50 -0
  27. package/miniprogram_dist/form-input/form-input.js +48 -0
  28. package/miniprogram_dist/form-input/form-input.json +8 -0
  29. package/miniprogram_dist/form-input/form-input.wxml +28 -0
  30. package/miniprogram_dist/form-input/form-input.wxss +3 -0
  31. package/miniprogram_dist/form-textarea/form-textarea.js +34 -0
  32. package/miniprogram_dist/form-textarea/form-textarea.json +8 -0
  33. package/miniprogram_dist/form-textarea/form-textarea.wxml +20 -0
  34. package/miniprogram_dist/form-textarea/form-textarea.wxss +3 -0
  35. package/miniprogram_dist/icon/_iconfont/iconfont.js +63 -0
  36. package/miniprogram_dist/icon/_iconfont/iconfont.json +4 -0
  37. package/miniprogram_dist/icon/_iconfont/iconfont.wxml +8 -0
  38. package/miniprogram_dist/icon/_iconfont/iconfont.wxss +3 -0
  39. package/miniprogram_dist/icon/icon.js +41 -0
  40. package/miniprogram_dist/icon/icon.json +7 -0
  41. package/miniprogram_dist/icon/icon.wxml +3 -0
  42. package/miniprogram_dist/icon/icon.wxss +13 -0
  43. package/miniprogram_dist/image-cropper/image-cropper.js +703 -0
  44. package/miniprogram_dist/image-cropper/image-cropper.json +3 -0
  45. package/miniprogram_dist/image-cropper/image-cropper.wxml +58 -0
  46. package/miniprogram_dist/image-cropper/image-cropper.wxss +195 -0
  47. package/miniprogram_dist/index.js +4 -0
  48. package/miniprogram_dist/input/input.js +119 -0
  49. package/miniprogram_dist/input/input.json +7 -0
  50. package/miniprogram_dist/input/input.wxml +38 -0
  51. package/miniprogram_dist/input/input.wxss +52 -0
  52. package/miniprogram_dist/media-upload/media-upload.js +1108 -0
  53. package/miniprogram_dist/media-upload/media-upload.json +7 -0
  54. package/miniprogram_dist/media-upload/media-upload.wxml +98 -0
  55. package/miniprogram_dist/media-upload/media-upload.wxss +149 -0
  56. package/miniprogram_dist/navbar/navbar.js +191 -0
  57. package/miniprogram_dist/navbar/navbar.json +6 -0
  58. package/miniprogram_dist/navbar/navbar.wxml +25 -0
  59. package/miniprogram_dist/navbar/navbar.wxss +60 -0
  60. package/miniprogram_dist/notify/notify.js +342 -0
  61. package/miniprogram_dist/notify/notify.json +5 -0
  62. package/miniprogram_dist/notify/notify.wxml +27 -0
  63. package/miniprogram_dist/notify/notify.wxss +246 -0
  64. package/miniprogram_dist/notify/service.js +69 -0
  65. package/miniprogram_dist/oss-upload/oss-upload.js +505 -0
  66. package/miniprogram_dist/oss-upload/oss-upload.json +6 -0
  67. package/miniprogram_dist/oss-upload/oss-upload.wxml +20 -0
  68. package/miniprogram_dist/oss-upload/oss-upload.wxss +5 -0
  69. package/miniprogram_dist/popup/popup.js +36 -0
  70. package/miniprogram_dist/popup/popup.json +5 -0
  71. package/miniprogram_dist/popup/popup.wxml +14 -0
  72. package/miniprogram_dist/popup/popup.wxss +138 -0
  73. package/miniprogram_dist/popup-page/popup-page.js +341 -0
  74. package/miniprogram_dist/popup-page/popup-page.json +8 -0
  75. package/miniprogram_dist/popup-page/popup-page.wxml +65 -0
  76. package/miniprogram_dist/popup-page/popup-page.wxss +92 -0
  77. package/miniprogram_dist/progress/progress.js +161 -0
  78. package/miniprogram_dist/progress/progress.json +5 -0
  79. package/miniprogram_dist/progress/progress.wxml +16 -0
  80. package/miniprogram_dist/progress/progress.wxss +81 -0
  81. package/miniprogram_dist/rate/rate.js +127 -0
  82. package/miniprogram_dist/rate/rate.json +5 -0
  83. package/miniprogram_dist/rate/rate.wxml +32 -0
  84. package/miniprogram_dist/rate/rate.wxs +21 -0
  85. package/miniprogram_dist/rate/rate.wxss +126 -0
  86. package/miniprogram_dist/stepper/stepper.js +153 -0
  87. package/miniprogram_dist/stepper/stepper.json +5 -0
  88. package/miniprogram_dist/stepper/stepper.wxml +19 -0
  89. package/miniprogram_dist/stepper/stepper.wxss +66 -0
  90. package/miniprogram_dist/switch/switch.js +29 -0
  91. package/miniprogram_dist/switch/switch.json +3 -0
  92. package/miniprogram_dist/switch/switch.wxml +10 -0
  93. package/miniprogram_dist/switch/switch.wxss +71 -0
  94. package/miniprogram_dist/textarea/textarea.js +83 -0
  95. package/miniprogram_dist/textarea/textarea.json +5 -0
  96. package/miniprogram_dist/textarea/textarea.wxml +14 -0
  97. package/miniprogram_dist/textarea/textarea.wxss +33 -0
  98. package/miniprogram_dist/theme/theme.wxss +64 -0
  99. package/miniprogram_dist/toast/toast.js +51 -0
  100. package/miniprogram_dist/toast/toast.json +5 -0
  101. package/miniprogram_dist/toast/toast.wxml +13 -0
  102. package/miniprogram_dist/toast/toast.wxss +143 -0
  103. package/miniprogram_dist/upload/upload.js +276 -0
  104. package/miniprogram_dist/upload/upload.json +3 -0
  105. package/miniprogram_dist/upload/upload.wxml +36 -0
  106. package/miniprogram_dist/upload/upload.wxss +136 -0
  107. package/miniprogram_dist/utils/class.js +37 -0
  108. package/miniprogram_dist/utils/device.js +67 -0
  109. package/miniprogram_dist/utils/dom.js +51 -0
  110. package/miniprogram_dist/utils/event.js +28 -0
  111. package/miniprogram_dist/utils/form.js +39 -0
  112. package/miniprogram_dist/utils/function.js +63 -0
  113. package/miniprogram_dist/utils/index.js +21 -0
  114. package/miniprogram_dist/utils/props.js +51 -0
  115. package/miniprogram_dist/utils/style.js +52 -0
  116. package/miniprogram_dist/utils/theme.js +30 -0
  117. package/package.json +31 -0
@@ -0,0 +1,53 @@
1
+ function normalizeSize(size) {
2
+ return size === "small" ? "small" : "medium";
3
+ }
4
+
5
+ Component({
6
+ behaviors: ["wx://form-field-group"],
7
+ properties: {
8
+ label: {
9
+ type: String,
10
+ value: ""
11
+ },
12
+ required: {
13
+ type: Boolean,
14
+ value: false
15
+ },
16
+ requiredMark: {
17
+ type: String,
18
+ value: "*"
19
+ },
20
+ help: {
21
+ type: String,
22
+ value: ""
23
+ },
24
+ error: {
25
+ type: String,
26
+ value: ""
27
+ },
28
+ size: {
29
+ type: String,
30
+ value: "medium",
31
+ observer: "syncState"
32
+ },
33
+ customClass: {
34
+ type: String,
35
+ value: ""
36
+ }
37
+ },
38
+ data: {
39
+ sizeClass: "mo-form-group--medium"
40
+ },
41
+ lifetimes: {
42
+ attached() {
43
+ this.syncState();
44
+ }
45
+ },
46
+ methods: {
47
+ syncState() {
48
+ this.setData({
49
+ sizeClass: `mo-form-group--${normalizeSize(this.data.size)}`
50
+ });
51
+ }
52
+ }
53
+ });
@@ -0,0 +1,5 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "apply-shared",
4
+ "usingComponents": {}
5
+ }
@@ -0,0 +1,11 @@
1
+ <view class="mo-form-group {{sizeClass}} {{error ? 'is-error' : ''}} {{customClass}}">
2
+ <view wx:if="{{label || required}}" class="mo-form-group__label-row">
3
+ <text wx:if="{{label}}" class="mo-form-group__label">{{label}}</text>
4
+ <text wx:if="{{required}}" class="mo-form-group__required">{{requiredMark}}</text>
5
+ </view>
6
+ <view class="mo-form-group__body">
7
+ <slot></slot>
8
+ </view>
9
+ <text wx:if="{{error}}" class="mo-form-group__message mo-form-group__message--error">{{error}}</text>
10
+ <text wx:elif="{{help}}" class="mo-form-group__message">{{help}}</text>
11
+ </view>
@@ -0,0 +1,50 @@
1
+ .mo-form-group {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ }
6
+
7
+ .mo-form-group__label-row {
8
+ display: flex;
9
+ align-items: center;
10
+ min-height: 44rpx;
11
+ margin-bottom: 12rpx;
12
+ }
13
+
14
+ .mo-form-group__label {
15
+ color: var(--mo-color-text-primary, #111111);
16
+ font-size: 30rpx;
17
+ font-weight: 600;
18
+ line-height: 42rpx;
19
+ }
20
+
21
+ .mo-form-group__required {
22
+ margin-left: 6rpx;
23
+ color: var(--mo-color-brand-primary, #FECBE7);
24
+ font-size: 30rpx;
25
+ font-weight: 600;
26
+ line-height: 42rpx;
27
+ }
28
+
29
+ .mo-form-group__body {
30
+ display: flex;
31
+ flex-direction: column;
32
+ width: 100%;
33
+ }
34
+
35
+ .mo-form-group__message {
36
+ margin-top: 10rpx;
37
+ color: var(--mo-color-text-secondary, #666666);
38
+ font-size: 24rpx;
39
+ line-height: 34rpx;
40
+ }
41
+
42
+ .mo-form-group__message--error {
43
+ color: var(--mo-color-status-danger, #FA5051);
44
+ }
45
+
46
+ .mo-form-group--small .mo-form-group__label,
47
+ .mo-form-group--small .mo-form-group__required {
48
+ font-size: 26rpx;
49
+ line-height: 38rpx;
50
+ }
@@ -0,0 +1,48 @@
1
+ Component({
2
+ behaviors: ["wx://form-field-group"],
3
+ properties: {
4
+ label: { type: String, value: "" },
5
+ required: { type: Boolean, value: false },
6
+ requiredMark: { type: String, value: "*" },
7
+ help: { type: String, value: "" },
8
+ error: { type: String, value: "" },
9
+ size: { type: String, value: "medium" },
10
+ name: { type: String, value: "" },
11
+ value: { type: String, value: "" },
12
+ placeholder: { type: String, value: "请输入" },
13
+ type: { type: String, value: "text" },
14
+ focus: { type: Boolean, value: false },
15
+ maxlength: { type: Number, value: 140 },
16
+ confirmType: { type: String, value: "done" },
17
+ disabled: { type: Boolean, value: false },
18
+ allowClear: { type: Boolean, value: false },
19
+ prefixIcon: { type: String, value: "" },
20
+ suffixIcon: { type: String, value: "" },
21
+ customClass: { type: String, value: "" }
22
+ },
23
+ methods: {
24
+ emitValueEvent(type, event) {
25
+ const detail = event.detail || {};
26
+
27
+ this.triggerEvent(type, {
28
+ name: detail.name || this.data.name,
29
+ value: detail.value == null ? "" : detail.value
30
+ });
31
+ },
32
+ handleInput(event) {
33
+ this.emitValueEvent("input", event);
34
+ },
35
+ handleChange(event) {
36
+ this.emitValueEvent("change", event);
37
+ },
38
+ handleConfirm(event) {
39
+ this.emitValueEvent("confirm", event);
40
+ },
41
+ handleClear(event) {
42
+ this.emitValueEvent("clear", event);
43
+ },
44
+ handleSearch(event) {
45
+ this.emitValueEvent("search", event);
46
+ }
47
+ }
48
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "apply-shared",
4
+ "usingComponents": {
5
+ "mo-form-group": "../form-group/form-group",
6
+ "mo-input": "../input/input"
7
+ }
8
+ }
@@ -0,0 +1,28 @@
1
+ <mo-form-group
2
+ label="{{label}}"
3
+ required="{{required}}"
4
+ required-mark="{{requiredMark}}"
5
+ help="{{help}}"
6
+ error="{{error}}"
7
+ size="{{size}}"
8
+ custom-class="{{customClass}}"
9
+ >
10
+ <mo-input
11
+ name="{{name}}"
12
+ value="{{value}}"
13
+ placeholder="{{placeholder}}"
14
+ type="{{type}}"
15
+ focus="{{focus}}"
16
+ maxlength="{{maxlength}}"
17
+ confirm-type="{{confirmType}}"
18
+ disabled="{{disabled}}"
19
+ allow-clear="{{allowClear}}"
20
+ prefix-icon="{{prefixIcon}}"
21
+ suffix-icon="{{suffixIcon}}"
22
+ bind:input="handleInput"
23
+ bind:change="handleChange"
24
+ bind:confirm="handleConfirm"
25
+ bind:clear="handleClear"
26
+ bind:search="handleSearch"
27
+ />
28
+ </mo-form-group>
@@ -0,0 +1,3 @@
1
+ .mo-form-input {
2
+ width: 100%;
3
+ }
@@ -0,0 +1,34 @@
1
+ Component({
2
+ behaviors: ["wx://form-field-group"],
3
+ properties: {
4
+ label: { type: String, value: "" },
5
+ required: { type: Boolean, value: false },
6
+ requiredMark: { type: String, value: "*" },
7
+ help: { type: String, value: "" },
8
+ error: { type: String, value: "" },
9
+ size: { type: String, value: "medium" },
10
+ name: { type: String, value: "" },
11
+ value: { type: String, value: "" },
12
+ placeholder: { type: String, value: "请输入" },
13
+ height: { type: Number, value: 200 },
14
+ maxlength: { type: Number, value: 500 },
15
+ disabled: { type: Boolean, value: false },
16
+ customClass: { type: String, value: "" }
17
+ },
18
+ methods: {
19
+ emitValueEvent(type, event) {
20
+ const detail = event.detail || {};
21
+
22
+ this.triggerEvent(type, {
23
+ name: detail.name || this.data.name,
24
+ value: detail.value == null ? "" : detail.value
25
+ });
26
+ },
27
+ handleInput(event) {
28
+ this.emitValueEvent("input", event);
29
+ },
30
+ handleConfirm(event) {
31
+ this.emitValueEvent("confirm", event);
32
+ }
33
+ }
34
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "apply-shared",
4
+ "usingComponents": {
5
+ "mo-form-group": "../form-group/form-group",
6
+ "mo-textarea": "../textarea/textarea"
7
+ }
8
+ }
@@ -0,0 +1,20 @@
1
+ <mo-form-group
2
+ label="{{label}}"
3
+ required="{{required}}"
4
+ required-mark="{{requiredMark}}"
5
+ help="{{help}}"
6
+ error="{{error}}"
7
+ size="{{size}}"
8
+ custom-class="{{customClass}}"
9
+ >
10
+ <mo-textarea
11
+ name="{{name}}"
12
+ value="{{value}}"
13
+ placeholder="{{placeholder}}"
14
+ height="{{height}}"
15
+ maxlength="{{maxlength}}"
16
+ disabled="{{disabled}}"
17
+ bind:input="handleInput"
18
+ bind:confirm="handleConfirm"
19
+ />
20
+ </mo-form-group>
@@ -0,0 +1,3 @@
1
+ .mo-form-textarea {
2
+ width: 100%;
3
+ }
@@ -0,0 +1,63 @@
1
+ Component({
2
+ properties: {
3
+ // close | arrow-left | walking-dog
4
+ name: {
5
+ type: String,
6
+ },
7
+ // string | string[]
8
+ color: {
9
+ type: null,
10
+ observer: function(color) {
11
+ this.setData({
12
+ colors: this.fixColor(),
13
+ isStr: typeof color === 'string',
14
+ });
15
+ }
16
+ },
17
+ size: {
18
+ type: Number,
19
+ value: 88,
20
+ observer: function(size) {
21
+ this.setData({
22
+ svgSize: size / 750 * wx.getSystemInfoSync().windowWidth,
23
+ });
24
+ },
25
+ },
26
+ },
27
+ data: {
28
+ colors: '',
29
+ svgSize: 88 / 750 * wx.getSystemInfoSync().windowWidth,
30
+ quot: '"',
31
+ isStr: true,
32
+ },
33
+ methods: {
34
+ fixColor: function() {
35
+ var color = this.data.color;
36
+ var hex2rgb = this.hex2rgb;
37
+
38
+ if (typeof color === 'string') {
39
+ return color.indexOf('#') === 0 ? hex2rgb(color) : color;
40
+ }
41
+
42
+ return color.map(function (item) {
43
+ return item.indexOf('#') === 0 ? hex2rgb(item) : item;
44
+ });
45
+ },
46
+ hex2rgb: function(hex) {
47
+ var rgb = [];
48
+
49
+ hex = hex.substr(1);
50
+
51
+ if (hex.length === 3) {
52
+ hex = hex.replace(/(.)/g, '$1$1');
53
+ }
54
+
55
+ hex.replace(/../g, function(color) {
56
+ rgb.push(parseInt(color, 0x10));
57
+ return color;
58
+ });
59
+
60
+ return 'rgb(' + rgb.join(',') + ')';
61
+ }
62
+ }
63
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents": {}
4
+ }
@@ -0,0 +1,8 @@
1
+ <!--close-->
2
+ <view wx:if="{{name === 'close'}}" style="background-image: url({{quot}}data:image/svg+xml, %3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='{{svgSize}}px' height='{{svgSize}}px'%3E%3Cpath d='M861 916.7L110.9 166.6c-15.6-15.6-15.6-40.9 0-56.5 15.6-15.6 40.9-15.6 56.5 0l750.1 750.1c15.6 15.6 15.6 40.9 0 56.5-15.6 15.6-40.9 15.6-56.5 0z' fill='{{(isStr ? colors : colors[0]) || 'rgb(74,56,58)'}}' /%3E%3Cpath d='M917.5 166.6L167.4 916.7c-15.6 15.6-40.9 15.6-56.5 0-15.6-15.6-15.6-40.9 0-56.5L861 110.1c15.6-15.6 40.9-15.6 56.5 0 15.6 15.6 15.6 40.9 0 56.5z' fill='{{(isStr ? colors : colors[1]) || 'rgb(74,56,58)'}}' /%3E%3C/svg%3E{{quot}}); width: {{svgSize}}px; height: {{svgSize}}px; " class="icon" />
3
+
4
+ <!--arrow-left-->
5
+ <view wx:if="{{name === 'arrow-left'}}" style="background-image: url({{quot}}data:image/svg+xml, %3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='{{svgSize}}px' height='{{svgSize}}px'%3E%3Cpath d='M304.56666667 568.00000001L651.36666667 914.8c15.6 15.6 40.9 15.6 56.5 0 15.6-15.6 15.6-40.9 0-56.5l-346.8-346.8 346.8-346.8c15.6-15.6 15.6-40.9 0-56.5-15.6-15.6-40.9-15.6-56.5 0L304.56666667 455l-21.1 21.1c-19.5 19.5-19.5 51.2 0 70.7L304.56666667 568.00000001z' fill='{{(isStr ? colors : colors[0]) || 'rgb(0,0,0)'}}' /%3E%3C/svg%3E{{quot}}); width: {{svgSize}}px; height: {{svgSize}}px; " class="icon" />
6
+
7
+ <!--walking-dog-->
8
+ <view wx:if="{{name === 'walking-dog'}}" style="background-image: url({{quot}}data:image/svg+xml, %3Csvg viewBox='0 0 1117 1024' xmlns='http://www.w3.org/2000/svg' width='{{svgSize}}px' height='{{svgSize}}px'%3E%3Cpath d='M924.049455 781.824q4.266667-2.944 7.722666-6.826667 3.434667-3.882667 5.866667-8.469333 2.410667-4.586667 3.648-9.642667Q942.545455 751.850667 942.545455 746.666667q0-2.090667-0.213334-4.181334t-0.618666-4.138666q-0.405333-2.048-1.024-4.053334-0.597333-2.005333-1.408-3.946666-0.789333-1.941333-1.792-3.797334-0.981333-1.834667-2.133334-3.584-1.173333-1.749333-2.496-3.370666-1.344-1.6-2.816-3.093334-1.493333-1.493333-3.093333-2.816-1.621333-1.322667-3.370667-2.496-1.749333-1.152-3.584-2.133333-1.856-1.002667-3.797333-1.792-1.92-0.810667-3.946667-1.408-2.005333-0.618667-4.053333-1.024-2.048-0.426667-4.138667-0.618667Q901.969455 704 899.878788 704q-6.464 0-12.650667 1.92t-11.52 5.589333q-156.096 107.306667-426.730666 57.194667Q445.137455 768 441.212121 768q-2.090667 0-4.181333 0.213333t-4.138667 0.618667q-2.048 0.405333-4.053333 1.024-2.005333 0.597333-3.946667 1.408-1.941333 0.789333-3.797333 1.792-1.834667 0.981333-3.584 2.133333-1.749333 1.173333-3.370667 2.496-1.6 1.344-3.093333 2.816-1.493333 1.493333-2.816 3.093334-1.322667 1.621333-2.496 3.370666-1.152 1.749333-2.133333 3.584-1.002667 1.856-1.792 3.797334-0.810667 1.92-1.408 3.946666-0.618667 2.005333-1.024 4.053334-0.426667 2.048-0.618667 4.138666-0.213333 2.090667-0.213333 4.181334 0 1.856 0.170666 3.690666 0.149333 1.856 0.469334 3.669334 0.32 1.834667 0.810666 3.626666 0.469333 1.770667 1.109334 3.52 0.618667 1.728 1.386666 3.413334 0.789333 1.685333 1.706667 3.285333 0.917333 1.621333 1.984 3.136t2.24 2.944q1.173333 1.408 2.474667 2.730667 1.301333 1.322667 2.709333 2.517333 1.429333 1.194667 2.922667 2.261333 1.514667 1.066667 3.114666 2.005334t3.264 1.728q1.685333 0.810667 3.413334 1.450666 1.728 0.64 3.52 1.130667t3.605333 0.853333q305.365333 56.533333 490.602667-70.805333z' fill='{{(isStr ? colors : colors[0]) || 'rgb(17,17,17)'}}' /%3E%3Cpath d='M673.681455 583.850667q-17.386667-52.224 11.584-168.170667 1.28-5.098667 1.28-10.346667 0-2.090667-0.213334-4.181333t-0.618666-4.138667q-0.405333-2.069333-1.024-4.053333-0.597333-2.026667-1.408-3.946667-0.789333-1.941333-1.792-3.797333-0.981333-1.834667-2.133334-3.584-1.173333-1.749333-2.496-3.370667-1.344-1.621333-2.816-3.093333-1.493333-1.493333-3.093333-2.816-1.621333-1.322667-3.370667-2.496-1.749333-1.152-3.584-2.133333-1.856-1.002667-3.797333-1.813334-1.92-0.789333-3.946667-1.408-2.005333-0.597333-4.053333-1.002666-2.048-0.426667-4.138667-0.64Q645.969455 362.666667 643.878788 362.666667q-3.541333 0-7.04 0.597333-3.498667 0.576-6.826667 1.728-3.370667 1.152-6.485333 2.837333-3.114667 1.706667-5.909333 3.882667-2.773333 2.176-5.184 4.778667-2.389333 2.624-4.309334 5.589333-1.941333 2.986667-3.349333 6.208-1.429333 3.264-2.282667 6.698667-35.029333 140.053333-9.749333 215.829333Q623.782788 704 729.212121 704q80.213333 0 118.037334-83.733333 27.221333-60.309333 25.450666-153.429334-3.925333-205.653333-93.845333-285.418666-73.365333-65.109333-195.264-74.282667-105.514667-7.936-172.117333 25.365333-74.368 37.162667-121.6 156.8l-143.253334 71.616q-38.122667 19.072-35.114666 61.397334Q127.868121 652.8 275.857455 652.8q77.717333 0 135.872-24.469333 0.490667 142.997333-65.28 218.24v0.021333q-2.517333 2.901333-4.48 6.186667-1.984 3.306667-3.328 6.890666-1.344 3.605333-2.026667 7.381334-0.682667 3.776-0.682667 7.616 0 2.090667 0.213334 4.181333 0.192 2.090667 0.597333 4.138667 0.426667 2.048 1.024 4.053333t1.408 3.946667q0.789333 1.92 1.792 3.776 0.981333 1.856 2.133333 3.605333 1.173333 1.728 2.496 3.349333 1.344 1.621333 2.816 3.114667 1.493333 1.493333 3.114667 2.816 1.621333 1.322667 3.349333 2.474667 1.749333 1.173333 3.605334 2.154666 1.834667 1.002667 3.776 1.792 1.92 0.810667 3.946666 1.408 2.005333 0.618667 4.053334 1.024 2.048 0.426667 4.138666 0.618667 2.090667 0.213333 4.181334 0.213333 4.565333 0 9.024-0.981333 4.48-0.96 8.618666-2.858667 4.16-1.877333 7.808-4.608 3.669333-2.709333 6.677334-6.144 95.232-109.013333 85.44-308.970666-1.92-39.125333-38.528-55.296-31.786667-14.016-61.994667 2.922666-46.528 26.069333-119.765333 26.069334-65.130667 0-78.037334-136.746667l137.536-68.757333q22.421333-11.221333 31.402667-34.858667 35.989333-94.848 82.858667-118.272 45.546667-22.784 127.573333-16.597333 93.205333 7.018667 145.045333 53.013333 61.930667 54.954667 65.152 223.210667 1.408 73.898667-17.92 116.693333Q754.321455 618.666667 729.212121 618.666667q-43.904 0-55.530666-34.816z' fill='{{(isStr ? colors : colors[1]) || 'rgb(17,17,17)'}}' /%3E%3Cpath d='M430.545455 320a42.666667 42.666667 0 1 0 85.333333 0 42.666667 42.666667 0 1 0-85.333333 0Z' fill='{{(isStr ? colors : colors[2]) || 'rgb(17,17,17)'}}' /%3E%3C/svg%3E{{quot}}); width: {{svgSize}}px; height: {{svgSize}}px; " class="icon" />
@@ -0,0 +1,3 @@
1
+ .icon {
2
+ background-repeat: no-repeat;
3
+ }
@@ -0,0 +1,41 @@
1
+ function normalizeIconSize(size) {
2
+ const value = Number(size);
3
+ return Number.isFinite(value) && value > 0 ? value : 88;
4
+ }
5
+
6
+ Component({
7
+ properties: {
8
+ name: {
9
+ type: String,
10
+ value: ""
11
+ },
12
+ size: {
13
+ type: Number,
14
+ value: 88,
15
+ observer: "syncSize"
16
+ },
17
+ color: {
18
+ type: String,
19
+ value: "#111111"
20
+ },
21
+ customStyle: {
22
+ type: String,
23
+ value: ""
24
+ }
25
+ },
26
+ data: {
27
+ iconSize: 88
28
+ },
29
+ lifetimes: {
30
+ attached() {
31
+ this.syncSize(this.data.size);
32
+ }
33
+ },
34
+ methods: {
35
+ syncSize(size) {
36
+ this.setData({
37
+ iconSize: normalizeIconSize(size)
38
+ });
39
+ }
40
+ }
41
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "apply-shared",
4
+ "usingComponents": {
5
+ "mo-iconfont": "./_iconfont/iconfont"
6
+ }
7
+ }
@@ -0,0 +1,3 @@
1
+ <view wx:if="{{name}}" class="mo-icon" style="width: {{iconSize}}rpx; height: {{iconSize}}rpx; {{customStyle}}">
2
+ <mo-iconfont name="{{name}}" color="{{color}}" size="{{iconSize}}" />
3
+ </view>
@@ -0,0 +1,13 @@
1
+ .mo-icon {
2
+ box-sizing: border-box;
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ flex: none;
7
+ line-height: 1;
8
+ vertical-align: middle;
9
+ }
10
+
11
+ .mo-icon mo-iconfont {
12
+ display: block;
13
+ }