luna-mobile-weapp 0.0.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.
- package/miniprogram_dist/action-sheet/index.js +59 -0
- package/miniprogram_dist/action-sheet/index.json +4 -0
- package/miniprogram_dist/action-sheet/index.wxml +18 -0
- package/miniprogram_dist/action-sheet/index.wxss +1 -0
- package/miniprogram_dist/address-edit/index.js +130 -0
- package/miniprogram_dist/address-edit/index.json +4 -0
- package/miniprogram_dist/address-edit/index.wxml +63 -0
- package/miniprogram_dist/address-edit/index.wxss +1 -0
- package/miniprogram_dist/address-list/index.js +57 -0
- package/miniprogram_dist/address-list/index.json +4 -0
- package/miniprogram_dist/address-list/index.wxml +37 -0
- package/miniprogram_dist/address-list/index.wxss +1 -0
- package/miniprogram_dist/aside/index.js +17 -0
- package/miniprogram_dist/aside/index.json +4 -0
- package/miniprogram_dist/aside/index.wxml +5 -0
- package/miniprogram_dist/aside/index.wxss +1 -0
- package/miniprogram_dist/avatar/index.js +35 -0
- package/miniprogram_dist/avatar/index.json +4 -0
- package/miniprogram_dist/avatar/index.wxml +13 -0
- package/miniprogram_dist/avatar/index.wxss +1 -0
- package/miniprogram_dist/back-top/index.js +38 -0
- package/miniprogram_dist/back-top/index.json +7 -0
- package/miniprogram_dist/back-top/index.wxml +5 -0
- package/miniprogram_dist/back-top/index.wxss +1 -0
- package/miniprogram_dist/badge/index.js +35 -0
- package/miniprogram_dist/badge/index.json +4 -0
- package/miniprogram_dist/badge/index.wxml +9 -0
- package/miniprogram_dist/badge/index.wxss +1 -0
- package/miniprogram_dist/button/index.js +39 -0
- package/miniprogram_dist/button/index.json +4 -0
- package/miniprogram_dist/button/index.wxml +5 -0
- package/miniprogram_dist/button/index.wxss +1 -0
- package/miniprogram_dist/captcha/index.js +37 -0
- package/miniprogram_dist/captcha/index.json +8 -0
- package/miniprogram_dist/captcha/index.wxml +38 -0
- package/miniprogram_dist/captcha/index.wxss +1 -0
- package/miniprogram_dist/card/index.js +30 -0
- package/miniprogram_dist/card/index.json +4 -0
- package/miniprogram_dist/card/index.wxml +27 -0
- package/miniprogram_dist/card/index.wxss +1 -0
- package/miniprogram_dist/category-menu/index.js +42 -0
- package/miniprogram_dist/category-menu/index.json +4 -0
- package/miniprogram_dist/category-menu/index.wxml +23 -0
- package/miniprogram_dist/category-menu/index.wxss +1 -0
- package/miniprogram_dist/cell/index.js +48 -0
- package/miniprogram_dist/cell/index.json +7 -0
- package/miniprogram_dist/cell/index.wxml +35 -0
- package/miniprogram_dist/cell/index.wxss +1 -0
- package/miniprogram_dist/cell-group/index.js +13 -0
- package/miniprogram_dist/cell-group/index.json +4 -0
- package/miniprogram_dist/cell-group/index.wxml +9 -0
- package/miniprogram_dist/cell-group/index.wxss +1 -0
- package/miniprogram_dist/checkbox/index.js +50 -0
- package/miniprogram_dist/checkbox/index.json +4 -0
- package/miniprogram_dist/checkbox/index.wxml +17 -0
- package/miniprogram_dist/checkbox/index.wxss +1 -0
- package/miniprogram_dist/circle-progress/index.js +52 -0
- package/miniprogram_dist/circle-progress/index.json +4 -0
- package/miniprogram_dist/circle-progress/index.wxml +13 -0
- package/miniprogram_dist/circle-progress/index.wxss +1 -0
- package/miniprogram_dist/collapse/index.js +31 -0
- package/miniprogram_dist/collapse/index.json +4 -0
- package/miniprogram_dist/collapse/index.wxml +5 -0
- package/miniprogram_dist/collapse/index.wxss +1 -0
- package/miniprogram_dist/collapse-item/index.js +42 -0
- package/miniprogram_dist/collapse-item/index.json +7 -0
- package/miniprogram_dist/collapse-item/index.wxml +18 -0
- package/miniprogram_dist/collapse-item/index.wxss +1 -0
- package/miniprogram_dist/common/runtime.js +234 -0
- package/miniprogram_dist/container/index.js +18 -0
- package/miniprogram_dist/container/index.json +4 -0
- package/miniprogram_dist/container/index.wxml +5 -0
- package/miniprogram_dist/container/index.wxss +1 -0
- package/miniprogram_dist/count-down/index.js +58 -0
- package/miniprogram_dist/count-down/index.json +4 -0
- package/miniprogram_dist/count-down/index.wxml +14 -0
- package/miniprogram_dist/count-down/index.wxss +1 -0
- package/miniprogram_dist/count-up/index.js +56 -0
- package/miniprogram_dist/count-up/index.json +4 -0
- package/miniprogram_dist/count-up/index.wxml +2 -0
- package/miniprogram_dist/count-up/index.wxss +1 -0
- package/miniprogram_dist/date-time-picker/index.js +134 -0
- package/miniprogram_dist/date-time-picker/index.json +4 -0
- package/miniprogram_dist/date-time-picker/index.wxml +77 -0
- package/miniprogram_dist/date-time-picker/index.wxss +1 -0
- package/miniprogram_dist/divider/index.js +22 -0
- package/miniprogram_dist/divider/index.json +4 -0
- package/miniprogram_dist/divider/index.wxml +13 -0
- package/miniprogram_dist/divider/index.wxss +1 -0
- package/miniprogram_dist/drop-down-menu/index.js +33 -0
- package/miniprogram_dist/drop-down-menu/index.json +7 -0
- package/miniprogram_dist/drop-down-menu/index.wxml +19 -0
- package/miniprogram_dist/drop-down-menu/index.wxss +1 -0
- package/miniprogram_dist/empty/index.js +21 -0
- package/miniprogram_dist/empty/index.json +7 -0
- package/miniprogram_dist/empty/index.wxml +17 -0
- package/miniprogram_dist/empty/index.wxss +1 -0
- package/miniprogram_dist/fixed-view/index.js +36 -0
- package/miniprogram_dist/fixed-view/index.json +4 -0
- package/miniprogram_dist/fixed-view/index.wxml +9 -0
- package/miniprogram_dist/fixed-view/index.wxss +1 -0
- package/miniprogram_dist/flex/index.js +31 -0
- package/miniprogram_dist/flex/index.json +4 -0
- package/miniprogram_dist/flex/index.wxml +5 -0
- package/miniprogram_dist/flex/index.wxss +1 -0
- package/miniprogram_dist/float-button/index.js +35 -0
- package/miniprogram_dist/float-button/index.json +7 -0
- package/miniprogram_dist/float-button/index.wxml +8 -0
- package/miniprogram_dist/float-button/index.wxss +1 -0
- package/miniprogram_dist/footer/index.js +17 -0
- package/miniprogram_dist/footer/index.json +4 -0
- package/miniprogram_dist/footer/index.wxml +5 -0
- package/miniprogram_dist/footer/index.wxss +1 -0
- package/miniprogram_dist/form/index.js +41 -0
- package/miniprogram_dist/form/index.json +4 -0
- package/miniprogram_dist/form/index.wxml +5 -0
- package/miniprogram_dist/form/index.wxss +1 -0
- package/miniprogram_dist/form-item/index.js +30 -0
- package/miniprogram_dist/form-item/index.json +4 -0
- package/miniprogram_dist/form-item/index.wxml +20 -0
- package/miniprogram_dist/form-item/index.wxss +1 -0
- package/miniprogram_dist/grid/index.js +22 -0
- package/miniprogram_dist/grid/index.json +4 -0
- package/miniprogram_dist/grid/index.wxml +5 -0
- package/miniprogram_dist/grid/index.wxss +1 -0
- package/miniprogram_dist/grid-item/index.js +41 -0
- package/miniprogram_dist/grid-item/index.json +7 -0
- package/miniprogram_dist/grid-item/index.wxml +21 -0
- package/miniprogram_dist/grid-item/index.wxss +1 -0
- package/miniprogram_dist/guide/index.js +93 -0
- package/miniprogram_dist/guide/index.json +4 -0
- package/miniprogram_dist/guide/index.wxml +28 -0
- package/miniprogram_dist/guide/index.wxss +1 -0
- package/miniprogram_dist/header/index.js +17 -0
- package/miniprogram_dist/header/index.json +4 -0
- package/miniprogram_dist/header/index.wxml +5 -0
- package/miniprogram_dist/header/index.wxss +1 -0
- package/miniprogram_dist/highlight/index.js +42 -0
- package/miniprogram_dist/highlight/index.json +4 -0
- package/miniprogram_dist/highlight/index.wxml +10 -0
- package/miniprogram_dist/highlight/index.wxss +1 -0
- package/miniprogram_dist/icon/index.js +26 -0
- package/miniprogram_dist/icon/index.json +4 -0
- package/miniprogram_dist/icon/index.wxml +5 -0
- package/miniprogram_dist/icon/index.wxss +1 -0
- package/miniprogram_dist/image/index.js +51 -0
- package/miniprogram_dist/image/index.json +4 -0
- package/miniprogram_dist/image/index.wxml +13 -0
- package/miniprogram_dist/image/index.wxss +1 -0
- package/miniprogram_dist/input/index.js +121 -0
- package/miniprogram_dist/input/index.json +7 -0
- package/miniprogram_dist/input/index.wxml +35 -0
- package/miniprogram_dist/input/index.wxss +1 -0
- package/miniprogram_dist/input-number/index.js +71 -0
- package/miniprogram_dist/input-number/index.json +7 -0
- package/miniprogram_dist/input-number/index.wxml +9 -0
- package/miniprogram_dist/input-number/index.wxss +1 -0
- package/miniprogram_dist/keyboard/index.js +84 -0
- package/miniprogram_dist/keyboard/index.json +7 -0
- package/miniprogram_dist/keyboard/index.wxml +27 -0
- package/miniprogram_dist/keyboard/index.wxss +1 -0
- package/miniprogram_dist/lazy-image/index.js +53 -0
- package/miniprogram_dist/lazy-image/index.json +4 -0
- package/miniprogram_dist/lazy-image/index.wxml +16 -0
- package/miniprogram_dist/lazy-image/index.wxss +1 -0
- package/miniprogram_dist/line-progress/index.js +45 -0
- package/miniprogram_dist/line-progress/index.json +4 -0
- package/miniprogram_dist/line-progress/index.wxml +14 -0
- package/miniprogram_dist/line-progress/index.wxss +1 -0
- package/miniprogram_dist/load-more/index.js +23 -0
- package/miniprogram_dist/load-more/index.json +7 -0
- package/miniprogram_dist/load-more/index.wxml +21 -0
- package/miniprogram_dist/load-more/index.wxss +1 -0
- package/miniprogram_dist/loading/index.js +28 -0
- package/miniprogram_dist/loading/index.json +4 -0
- package/miniprogram_dist/loading/index.wxml +12 -0
- package/miniprogram_dist/loading/index.wxss +1 -0
- package/miniprogram_dist/main/index.js +63 -0
- package/miniprogram_dist/main/index.json +4 -0
- package/miniprogram_dist/main/index.wxml +5 -0
- package/miniprogram_dist/main/index.wxss +1 -0
- package/miniprogram_dist/navbar/index.js +37 -0
- package/miniprogram_dist/navbar/index.json +7 -0
- package/miniprogram_dist/navbar/index.wxml +23 -0
- package/miniprogram_dist/navbar/index.wxss +1 -0
- package/miniprogram_dist/notice-bar/index.js +79 -0
- package/miniprogram_dist/notice-bar/index.json +7 -0
- package/miniprogram_dist/notice-bar/index.wxml +18 -0
- package/miniprogram_dist/notice-bar/index.wxss +1 -0
- package/miniprogram_dist/page/index.js +14 -0
- package/miniprogram_dist/page/index.json +4 -0
- package/miniprogram_dist/page/index.wxml +7 -0
- package/miniprogram_dist/page/index.wxss +0 -0
- package/miniprogram_dist/pin-input/index.js +32 -0
- package/miniprogram_dist/pin-input/index.json +4 -0
- package/miniprogram_dist/pin-input/index.wxml +5 -0
- package/miniprogram_dist/pin-input/index.wxss +1 -0
- package/miniprogram_dist/popup/index.js +60 -0
- package/miniprogram_dist/popup/index.json +4 -0
- package/miniprogram_dist/popup/index.wxml +9 -0
- package/miniprogram_dist/popup/index.wxss +1 -0
- package/miniprogram_dist/pull-refresh/index.js +56 -0
- package/miniprogram_dist/pull-refresh/index.json +4 -0
- package/miniprogram_dist/pull-refresh/index.wxml +10 -0
- package/miniprogram_dist/pull-refresh/index.wxss +1 -0
- package/miniprogram_dist/radio/index.js +35 -0
- package/miniprogram_dist/radio/index.json +4 -0
- package/miniprogram_dist/radio/index.wxml +9 -0
- package/miniprogram_dist/radio/index.wxss +1 -0
- package/miniprogram_dist/radio-group/index.js +14 -0
- package/miniprogram_dist/radio-group/index.json +4 -0
- package/miniprogram_dist/radio-group/index.wxml +5 -0
- package/miniprogram_dist/radio-group/index.wxss +1 -0
- package/miniprogram_dist/rate/index.js +88 -0
- package/miniprogram_dist/rate/index.json +4 -0
- package/miniprogram_dist/rate/index.wxml +16 -0
- package/miniprogram_dist/rate/index.wxss +1 -0
- package/miniprogram_dist/safe-area/index.js +14 -0
- package/miniprogram_dist/safe-area/index.json +4 -0
- package/miniprogram_dist/safe-area/index.wxml +5 -0
- package/miniprogram_dist/safe-area/index.wxss +1 -0
- package/miniprogram_dist/scroll-list/index.js +54 -0
- package/miniprogram_dist/scroll-list/index.json +4 -0
- package/miniprogram_dist/scroll-list/index.wxml +13 -0
- package/miniprogram_dist/scroll-list/index.wxss +1 -0
- package/miniprogram_dist/search/index.js +59 -0
- package/miniprogram_dist/search/index.json +7 -0
- package/miniprogram_dist/search/index.wxml +17 -0
- package/miniprogram_dist/search/index.wxss +1 -0
- package/miniprogram_dist/share-panel/index.js +70 -0
- package/miniprogram_dist/share-panel/index.json +7 -0
- package/miniprogram_dist/share-panel/index.wxml +25 -0
- package/miniprogram_dist/share-panel/index.wxss +1 -0
- package/miniprogram_dist/skeleton/index.js +27 -0
- package/miniprogram_dist/skeleton/index.json +4 -0
- package/miniprogram_dist/skeleton/index.wxml +30 -0
- package/miniprogram_dist/skeleton/index.wxss +1 -0
- package/miniprogram_dist/slider/index.js +78 -0
- package/miniprogram_dist/slider/index.json +4 -0
- package/miniprogram_dist/slider/index.wxml +13 -0
- package/miniprogram_dist/slider/index.wxss +1 -0
- package/miniprogram_dist/steps/index.js +19 -0
- package/miniprogram_dist/steps/index.json +7 -0
- package/miniprogram_dist/steps/index.wxml +27 -0
- package/miniprogram_dist/steps/index.wxss +1 -0
- package/miniprogram_dist/sticky/index.js +18 -0
- package/miniprogram_dist/sticky/index.json +4 -0
- package/miniprogram_dist/sticky/index.wxml +5 -0
- package/miniprogram_dist/sticky/index.wxss +0 -0
- package/miniprogram_dist/swipe-action/index.js +38 -0
- package/miniprogram_dist/swipe-action/index.json +4 -0
- package/miniprogram_dist/swipe-action/index.wxml +14 -0
- package/miniprogram_dist/swipe-action/index.wxss +1 -0
- package/miniprogram_dist/switch/index.js +86 -0
- package/miniprogram_dist/switch/index.json +7 -0
- package/miniprogram_dist/switch/index.wxml +31 -0
- package/miniprogram_dist/switch/index.wxss +1 -0
- package/miniprogram_dist/tabbar/index.js +41 -0
- package/miniprogram_dist/tabbar/index.json +4 -0
- package/miniprogram_dist/tabbar/index.wxml +5 -0
- package/miniprogram_dist/tabbar/index.wxss +1 -0
- package/miniprogram_dist/tabbar-item/index.js +47 -0
- package/miniprogram_dist/tabbar-item/index.json +8 -0
- package/miniprogram_dist/tabbar-item/index.wxml +18 -0
- package/miniprogram_dist/tabbar-item/index.wxss +1 -0
- package/miniprogram_dist/tabs/index.js +54 -0
- package/miniprogram_dist/tabs/index.json +4 -0
- package/miniprogram_dist/tabs/index.wxml +17 -0
- package/miniprogram_dist/tabs/index.wxss +1 -0
- package/miniprogram_dist/tag/index.js +22 -0
- package/miniprogram_dist/tag/index.json +4 -0
- package/miniprogram_dist/tag/index.wxml +5 -0
- package/miniprogram_dist/tag/index.wxss +1 -0
- package/miniprogram_dist/text/index.js +56 -0
- package/miniprogram_dist/text/index.json +4 -0
- package/miniprogram_dist/text/index.wxml +5 -0
- package/miniprogram_dist/text/index.wxss +1 -0
- package/miniprogram_dist/textarea/index.js +60 -0
- package/miniprogram_dist/textarea/index.json +4 -0
- package/miniprogram_dist/textarea/index.wxml +8 -0
- package/miniprogram_dist/textarea/index.wxss +1 -0
- package/miniprogram_dist/toast/index.js +46 -0
- package/miniprogram_dist/toast/index.json +8 -0
- package/miniprogram_dist/toast/index.wxml +16 -0
- package/miniprogram_dist/toast/index.wxss +1 -0
- package/miniprogram_dist/upload/index.js +79 -0
- package/miniprogram_dist/upload/index.json +7 -0
- package/miniprogram_dist/upload/index.wxml +38 -0
- package/miniprogram_dist/upload/index.wxss +1 -0
- package/package.json +16 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// import from 'svelte/transition'
|
|
2
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
3
|
+
|
|
4
|
+
Component({
|
|
5
|
+
properties: {
|
|
6
|
+
steps: {
|
|
7
|
+
type: Array,
|
|
8
|
+
value: [],
|
|
9
|
+
},
|
|
10
|
+
visible: {
|
|
11
|
+
type: Boolean,
|
|
12
|
+
value: false,
|
|
13
|
+
},
|
|
14
|
+
current: {
|
|
15
|
+
type: Number,
|
|
16
|
+
value: 0,
|
|
17
|
+
},
|
|
18
|
+
onchange: {
|
|
19
|
+
type: null,
|
|
20
|
+
},
|
|
21
|
+
onfinish: {
|
|
22
|
+
type: null,
|
|
23
|
+
},
|
|
24
|
+
onclose: {
|
|
25
|
+
type: null,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
data: {
|
|
30
|
+
targetRect: { top: 0, left: 0, width: 0, height: 0 },
|
|
31
|
+
placement: undefined,
|
|
32
|
+
popoverTop: undefined,
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
observers: {
|
|
36
|
+
'current, placement, steps': function() {
|
|
37
|
+
this.setData({ placement: steps[current]?.placement ?? 'bottom' });
|
|
38
|
+
},
|
|
39
|
+
'targetRect, placement': function() {
|
|
40
|
+
this.setData({ popoverTop: (() => {
|
|
41
|
+
const POPOVER_H = 140;
|
|
42
|
+
const preferred = placement === 'top'
|
|
43
|
+
? targetRect.top - GAP - POPOVER_H
|
|
44
|
+
: targetRect.top + targetRect.height + GAP;
|
|
45
|
+
return Math.min(preferred, window.innerHeight - POPOVER_H - 16);
|
|
46
|
+
})() });
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
lifetimes: {
|
|
51
|
+
attached() {
|
|
52
|
+
const self = this;
|
|
53
|
+
// $bindable: visible
|
|
54
|
+
this.__bind_visible = function(e) {
|
|
55
|
+
self.setData({ visible: e.detail.value });
|
|
56
|
+
self.triggerEvent('update:visible', e.detail.value);
|
|
57
|
+
};
|
|
58
|
+
// $bindable: current
|
|
59
|
+
this.__bind_current = function(e) {
|
|
60
|
+
self.setData({ current: e.detail.value });
|
|
61
|
+
self.triggerEvent('update:current', e.detail.value);
|
|
62
|
+
};
|
|
63
|
+
// $effect #1
|
|
64
|
+
if (visible) updateRect();;
|
|
65
|
+
// $effect #2
|
|
66
|
+
current; if (visible) updateRect();;
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
methods: {
|
|
71
|
+
__handler_click(e) {
|
|
72
|
+
(() => { current--; onchange?.(current); }).call(this, e);
|
|
73
|
+
},
|
|
74
|
+
__handler_click(e) {
|
|
75
|
+
(() => {
|
|
76
|
+
if (isLast) { visible = false; onfinish?.(); }
|
|
77
|
+
else { current++; onchange?.(current); }
|
|
78
|
+
}).call(this, e);
|
|
79
|
+
},
|
|
80
|
+
__handler_click(e) {
|
|
81
|
+
(() => { visible = false; onclose?.(); }).call(this, e);
|
|
82
|
+
},
|
|
83
|
+
__bind_visible(e) {
|
|
84
|
+
this.setData({ visible: e.detail.value });
|
|
85
|
+
this.triggerEvent('update:visible', e.detail.value);
|
|
86
|
+
},
|
|
87
|
+
__bind_current(e) {
|
|
88
|
+
this.setData({ current: e.detail.value });
|
|
89
|
+
this.triggerEvent('update:current', e.detail.value);
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<block wx:if="{{visible && steps[current]}}">
|
|
2
|
+
{{@const step = steps[current]}}{{@const isLast = current === steps.length - 1}} <view class="ln-guide">
|
|
3
|
+
<view class="ln-guide__highlight" style="top:{targetRect.top - 4}px;left:{targetRect.left - 4}px;width:{targetRect.width + 8}px;height:{targetRect.height + 8}px">
|
|
4
|
+
</view>
|
|
5
|
+
<view class="ln-guide__popover ln-guide__popover--{placement}" style="top:{popoverTop}px;left:{Math.max(16, Math.min(targetRect.left, window.innerWidth - 280))}px">
|
|
6
|
+
<block wx:if="{{step.title}}">
|
|
7
|
+
<view class="ln-guide__title">
|
|
8
|
+
{{step.title}} </view>
|
|
9
|
+
{{/if}} <view class="ln-guide__content">
|
|
10
|
+
{{step.content}} </view>
|
|
11
|
+
<view class="ln-guide__footer">
|
|
12
|
+
<text class="ln-guide__progress">
|
|
13
|
+
{{current + 1}}/{{steps.length}} </text>
|
|
14
|
+
<view class="ln-guide__actions">
|
|
15
|
+
<block wx:if="{{current > 0}}">
|
|
16
|
+
<button type="button" class="ln-guide__btn" bindtap="__handler_1">
|
|
17
|
+
上一步 </button>
|
|
18
|
+
{{/if}} <button type="button" class="ln-guide__btn ln-guide__btn--primary" bindtap="__handler_2">
|
|
19
|
+
{{isLast ? '完成' : '下一步'}} </button>
|
|
20
|
+
</block>
|
|
21
|
+
</view>
|
|
22
|
+
</view>
|
|
23
|
+
</block>
|
|
24
|
+
</view>
|
|
25
|
+
<button type="button" class="ln-guide__skip" bindtap="__handler_3">
|
|
26
|
+
跳过 </button>
|
|
27
|
+
</view>
|
|
28
|
+
{{/if}}</block>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-guide{position:fixed;inset:0;z-index:2011}.ln-guide__highlight{position:fixed;border-radius:12rpx;box-shadow:0 0 0 8000rpx rgba(0,0,0,.5);z-index:1;pointer-events:none}.ln-guide__popover{position:fixed;z-index:2;background:#fff;border-radius:16rpx;padding:32rpx;width:520rpx;max-width:calc(100vw - 64rpx);box-shadow:0 4rpx 8rpx rgba(0,0,0,.12),0 0 12rpx rgba(0,0,0,.04)}.ln-guide__popover--top{transform:translateY(-100%)}.ln-guide__title{font-size:32rpx;font-weight:500;color:#303133;margin-bottom:8rpx}.ln-guide__content{font-size:28rpx;color:#606266;line-height:1.5}.ln-guide__footer{display:flex;align-items:center;justify-content:space-between;margin-top:32rpx}.ln-guide__progress{font-size:24rpx;color:#909399}.ln-guide__actions{display:flex;gap:16rpx}.ln-guide__btn{padding:12rpx 28rpx;border:1px solid #dcdfe6;background:#fff;border-radius:12rpx;font-size:26rpx;color:#303133;cursor:pointer}.ln-guide__btn--primary{background:#0062ff;border-color:#0062ff;color:#fff}.ln-guide__skip{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 48rpx);left:50%;transform:translateX(-50%);z-index:2;border:none;background:hsla(0,0%,100%,.2);color:#fff;font-size:28rpx;padding:16rpx 48rpx;border-radius:40rpx;cursor:pointer}.dark .ln-guide .ln-guide__popover{background:#1d1e1f;box-shadow:0 4rpx 24rpx rgba(0,0,0,.3)}.dark .ln-guide .ln-guide__title{color:#e5eaf3}.dark .ln-guide .ln-guide__content{color:#cfd3dc}.dark .ln-guide .ln-guide__progress{color:#a3a6ad}.dark .ln-guide .ln-guide__btn{background:#2c2d2e;border-color:hsla(0,0%,100%,.08);color:#e5eaf3}.dark .ln-guide .ln-guide__btn--primary{background:#0062ff;border-color:#0062ff;color:#fff}.dark .ln-guide .ln-guide__skip{background:hsla(0,0%,100%,.15)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-container{display:flex;flex-direction:column;box-sizing:border-box;min-height:100vh;min-height:100dvh;max-width:1500rpx;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;transition:background-color .3s,color .3s}.dark .ln-container{background-color:#141415;color:#e5eaf3}.ln-header{position:fixed;top:0;left:0;right:0;max-width:1500rpx;margin:0 auto;flex-shrink:0;z-index:100;background-color:#fff;will-change:transform;transform:translateZ(0)}.dark .ln-header{background-color:#1d1e1f}.ln-main{display:block;flex:1;box-sizing:border-box;min-width:0;overflow-x:clip;padding:32rpx;padding-top:120rpx;background-color:#f2f3f5}.dark .ln-main{background-color:#141415}.ln-main--slide-right{animation:ln-slide-right 300ms ease both}.ln-main--slide-left{animation:ln-slide-left 300ms ease both}@keyframes ln-slide-right{from{transform:translateX(120rpx)}to{transform:translateX(0)}}@keyframes ln-slide-left{from{transform:translateX(-120rpx)}to{transform:translateX(0)}}.ln-footer{display:flex;align-items:center;box-sizing:border-box;flex-shrink:0;height:100rpx;padding:0 32rpx;background-color:#fff;border-top:.10rpx solid #e4e7ed}.dark .ln-footer{background-color:#1d1e1f;border-top-color:hsla(0,0%,100%,.08);color:#e5eaf3}.ln-aside{display:flex;flex-direction:column;box-sizing:border-box;flex-shrink:0;width:var(--ln-aside-width, 400rpx);overflow:hidden;background-color:#fff;border-right:.10rpx solid #e4e7ed}.dark .ln-aside{background-color:#1d1e1f;border-right-color:hsla(0,0%,100%,.08);color:#e5eaf3}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
text: {
|
|
6
|
+
type: String,
|
|
7
|
+
value: '',
|
|
8
|
+
},
|
|
9
|
+
keywords: {
|
|
10
|
+
type: String,
|
|
11
|
+
value: '',
|
|
12
|
+
},
|
|
13
|
+
highlightColor: {
|
|
14
|
+
type: String,
|
|
15
|
+
value: '',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
data: {
|
|
20
|
+
parts: undefined,
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
observers: {
|
|
24
|
+
'keywords, text': function() {
|
|
25
|
+
this.setData({ parts: const kws = Array.isArray(keywords) ? keywords : [keywords];
|
|
26
|
+
const valid = kws.filter(Boolean);
|
|
27
|
+
if (!valid.length || !text) return [{ text, highlight: false }];
|
|
28
|
+
const escaped = valid.map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
|
29
|
+
const re = new RegExp(`(${escaped.join('|')})`, 'gi');
|
|
30
|
+
const result: { text: string; highlight: boolean }[] = [];
|
|
31
|
+
let last = 0;
|
|
32
|
+
for (const m of text.matchAll(re)) {
|
|
33
|
+
if (m.index! > last) result.push({ text: text.slice(last, m.index!), highlight: false });
|
|
34
|
+
result.push({ text: m[0], highlight: true });
|
|
35
|
+
last = m.index! + m[0].length;
|
|
36
|
+
}
|
|
37
|
+
if (last < text.length) result.push({ text: text.slice(last), highlight: false });
|
|
38
|
+
return result; });
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<text class="ln-highlight">
|
|
2
|
+
<block wx:for="{{parts}}" wx:for-item="p">
|
|
3
|
+
<block wx:if="{{p.highlight}}">
|
|
4
|
+
<text class="ln-highlight__tag" style="{{highlightColor ? `color:${highlightColor}` : ''}}">
|
|
5
|
+
{{p.text}} </text>
|
|
6
|
+
</block>
|
|
7
|
+
<block wx:else>
|
|
8
|
+
{{p.text}} </block>
|
|
9
|
+
</block>
|
|
10
|
+
</text>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-highlight{display:inline;color:#303133}.ln-highlight__tag{display:inline;color:#0062ff}.dark .ln-highlight{color:#e5eaf3}.dark .ln-highlight .ln-highlight__tag{color:#66a0ff}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
icon: {
|
|
6
|
+
type: null,
|
|
7
|
+
},
|
|
8
|
+
size: {
|
|
9
|
+
type: Number,
|
|
10
|
+
value: 24,
|
|
11
|
+
},
|
|
12
|
+
color: {
|
|
13
|
+
type: String,
|
|
14
|
+
value: 'currentColor',
|
|
15
|
+
},
|
|
16
|
+
strokeWidth: {
|
|
17
|
+
type: Number,
|
|
18
|
+
value: 2,
|
|
19
|
+
},
|
|
20
|
+
class: className: {
|
|
21
|
+
type: null,
|
|
22
|
+
value: '',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg class="ln-icon {className}" xmlns="http://www.w3.org/2000/svg" width="{{size}}" height="{{size}}" viewBox="0 0 24 24" fill="none" stroke="{{color}}" stroke-width="{{strokeWidth}}" stroke-linecap="round" stroke-linejoin="round" role="img">
|
|
2
|
+
<block wx:for="{{icon}}" wx:for-item="[tag" wx:for-index="attrs]">
|
|
3
|
+
<svelte:element this="{{tag}}" />
|
|
4
|
+
</block>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.dark .ln-icon{color:#e5eaf3}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
src: {
|
|
6
|
+
type: null,
|
|
7
|
+
},
|
|
8
|
+
alt: {
|
|
9
|
+
type: String,
|
|
10
|
+
value: '',
|
|
11
|
+
},
|
|
12
|
+
width: {
|
|
13
|
+
type: String,
|
|
14
|
+
value: '100%',
|
|
15
|
+
},
|
|
16
|
+
height: {
|
|
17
|
+
type: null,
|
|
18
|
+
},
|
|
19
|
+
round: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
value: false,
|
|
22
|
+
},
|
|
23
|
+
circle: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
value: false,
|
|
26
|
+
},
|
|
27
|
+
lazy: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
value: false,
|
|
30
|
+
},
|
|
31
|
+
fit: {
|
|
32
|
+
type: String,
|
|
33
|
+
value: 'cover',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
data: {
|
|
38
|
+
loaded: false,
|
|
39
|
+
error: false,
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
methods: {
|
|
43
|
+
__handler_load(e) {
|
|
44
|
+
(() => loaded = true).call(this, e);
|
|
45
|
+
},
|
|
46
|
+
__handler_error(e) {
|
|
47
|
+
(() => error = true).call(this, e);
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<view class="ln-image" class="{{round? 'is-round' : ''}}" class="{{circle? 'is-circle' : ''}}" style="width: {{width}}" style="height: {{height}}">
|
|
2
|
+
<block wx:if="{{!error}}">
|
|
3
|
+
<image class="ln-image__inner" src="{{src}}" alt="{{alt}}" loading="{{lazy ? 'lazy' : 'eager'}}" style="object-fit: {{fit}}" bindload="__handler_1" binderror="__handler_2" />
|
|
4
|
+
</block>
|
|
5
|
+
<block wx:else>
|
|
6
|
+
<view class="ln-image__error">
|
|
7
|
+
加载失败 </view>
|
|
8
|
+
</block>
|
|
9
|
+
<block wx:if="{{!loaded && !error}}">
|
|
10
|
+
<view class="ln-image__placeholder">
|
|
11
|
+
加载中 </view>
|
|
12
|
+
{{/if}} </block>
|
|
13
|
+
</view>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-image{position:relative;display:inline-block;overflow:hidden}.ln-image__inner{width:100%;height:100%;object-fit:cover;display:block}.ln-image__placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#f5f7fa;color:#a8abb2;font-size:26rpx}.ln-image__error{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#f5f7fa;color:#a8abb2;font-size:26rpx}.ln-image.is-round{border-radius:16rpx}.ln-image.is-circle{border-radius:50%}.dark .ln-image .ln-image__placeholder,.dark .ln-image .ln-image__error{background-color:#2c2d2e;color:#6b6f76}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
value: {
|
|
6
|
+
type: String,
|
|
7
|
+
value: '',
|
|
8
|
+
},
|
|
9
|
+
type: {
|
|
10
|
+
type: String,
|
|
11
|
+
value: 'text',
|
|
12
|
+
},
|
|
13
|
+
placeholder: {
|
|
14
|
+
type: String,
|
|
15
|
+
value: '',
|
|
16
|
+
},
|
|
17
|
+
label: {
|
|
18
|
+
type: null,
|
|
19
|
+
},
|
|
20
|
+
maxlength: {
|
|
21
|
+
type: null,
|
|
22
|
+
},
|
|
23
|
+
clearable: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
value: false,
|
|
26
|
+
},
|
|
27
|
+
disabled: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
value: false,
|
|
30
|
+
},
|
|
31
|
+
size: {
|
|
32
|
+
type: String,
|
|
33
|
+
value: 'default',
|
|
34
|
+
},
|
|
35
|
+
showPasswordToggle: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
value: false,
|
|
38
|
+
},
|
|
39
|
+
showStrength: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
value: false,
|
|
42
|
+
},
|
|
43
|
+
oninput: {
|
|
44
|
+
type: null,
|
|
45
|
+
},
|
|
46
|
+
onchange: {
|
|
47
|
+
type: null,
|
|
48
|
+
},
|
|
49
|
+
onclear: {
|
|
50
|
+
type: null,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
data: {
|
|
55
|
+
focused: false,
|
|
56
|
+
pwdVisible: false,
|
|
57
|
+
isPassword: undefined,
|
|
58
|
+
inputType: undefined,
|
|
59
|
+
strength: undefined,
|
|
60
|
+
strengthLabel: undefined,
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
observers: {
|
|
64
|
+
'type': function() {
|
|
65
|
+
this.setData({ isPassword: type === 'password' });
|
|
66
|
+
},
|
|
67
|
+
'isPassword, pwdVisible, type': function() {
|
|
68
|
+
this.setData({ inputType: isPassword && pwdVisible ? 'text' : type });
|
|
69
|
+
},
|
|
70
|
+
'isPassword, value, showStrength': function() {
|
|
71
|
+
this.setData({ strength: if (!isPassword || !showStrength || !value) return 0;
|
|
72
|
+
let s = 0;
|
|
73
|
+
if (value.length >= 6) s++;
|
|
74
|
+
if (value.length >= 10) s++;
|
|
75
|
+
if (/[A-Z]/.test(value) && /[a-z]/.test(value)) s++;
|
|
76
|
+
if (/\d/.test(value)) s++;
|
|
77
|
+
if (/[^A-Za-z0-9]/.test(value)) s++;
|
|
78
|
+
return s <= 1 ? 1 : s <= 3 ? 2 : 3; });
|
|
79
|
+
},
|
|
80
|
+
'strength': function() {
|
|
81
|
+
this.setData({ strengthLabel: ['', '弱', '中', '强'][strength] });
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
lifetimes: {
|
|
86
|
+
attached() {
|
|
87
|
+
const self = this;
|
|
88
|
+
// $bindable: value
|
|
89
|
+
this.__bind_value = function(e) {
|
|
90
|
+
self.setData({ value: e.detail.value });
|
|
91
|
+
self.triggerEvent('update:value', e.detail.value);
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
methods: {
|
|
97
|
+
__handler_focus(e) {
|
|
98
|
+
(() => focused = true).call(this, e);
|
|
99
|
+
},
|
|
100
|
+
__handler_blur(e) {
|
|
101
|
+
(() => focused = false).call(this, e);
|
|
102
|
+
},
|
|
103
|
+
oninput(e) {
|
|
104
|
+
// 用户定义的处理函数
|
|
105
|
+
},
|
|
106
|
+
onchange(e) {
|
|
107
|
+
// 用户定义的处理函数
|
|
108
|
+
},
|
|
109
|
+
handleClear(e) {
|
|
110
|
+
// 用户定义的处理函数
|
|
111
|
+
},
|
|
112
|
+
__handler_click(e) {
|
|
113
|
+
(() => pwdVisible = !pwdVisible).call(this, e);
|
|
114
|
+
},
|
|
115
|
+
__bind_value(e) {
|
|
116
|
+
this.setData({ value: e.detail.value });
|
|
117
|
+
this.triggerEvent('update:value', e.detail.value);
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<view class="ln-input" class="{{size === 'large'? 'ln-input--large' : ''}}" class="{{size === 'small'? 'ln-input--small' : ''}}" class="{{focused? 'is-focus' : ''}}" class="{{disabled? 'is-disabled' : ''}}">
|
|
2
|
+
<block wx:if="{{label}}">
|
|
3
|
+
<text class="ln-input__label">
|
|
4
|
+
{{label}} </text>
|
|
5
|
+
{{/if}} <input class="ln-input__inner" type="{{inputType}}" placeholder="{{placeholder}}" disabled="{{disabled}}" maxlength="{{maxlength}}" bindfocus="__handler_1" bindblur="__handler_2" bindinput="oninput" bindchange="onchange" />
|
|
6
|
+
<block wx:if="{{clearable && value && !isPassword}}">
|
|
7
|
+
<button type="button" class="ln-input__clear" bindtap="handleClear">
|
|
8
|
+
<icon icon="{{X}}" size="{{14}}" />
|
|
9
|
+
</button>
|
|
10
|
+
{{/if}} <block wx:if="{{isPassword && showPasswordToggle}}">
|
|
11
|
+
<button type="button" class="ln-input__eye" tabindex="-1" bindtap="__handler_3">
|
|
12
|
+
<icon icon="{{pwdVisible ? EyeOff : Eye}}" size="{{16}}" />
|
|
13
|
+
</button>
|
|
14
|
+
{{/if}} <block wx:if="{{maxlength}}">
|
|
15
|
+
<text class="ln-input__count">
|
|
16
|
+
{{value.length}}/{{maxlength}} </text>
|
|
17
|
+
{{/if}} </block>
|
|
18
|
+
</block>
|
|
19
|
+
</block>
|
|
20
|
+
</block>
|
|
21
|
+
</view>
|
|
22
|
+
<block wx:if="{{isPassword && showStrength && value}}">
|
|
23
|
+
<view class="ln-input__strength">
|
|
24
|
+
<view class="ln-input__strength-bar" class="{{strength >= 1? 'is-weak' : ''}}" class="{{strength >= 2? 'is-medium' : ''}}" class="{{strength >= 3? 'is-strong' : ''}}">
|
|
25
|
+
<text>
|
|
26
|
+
</text>
|
|
27
|
+
<text>
|
|
28
|
+
</text>
|
|
29
|
+
<text>
|
|
30
|
+
</text>
|
|
31
|
+
</view>
|
|
32
|
+
<text class="ln-input__strength-text">
|
|
33
|
+
{{strengthLabel}} </text>
|
|
34
|
+
</view>
|
|
35
|
+
{{/if}}</block>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-input{position:relative;display:inline-flex;align-items:center;width:100%;height:80rpx;padding:0 24rpx;font-size:28rpx;background-color:#fff;border:1px solid #dcdfe6;border-radius:12rpx;transition:border-color .2s;box-sizing:border-box}.ln-input__inner{flex:1;width:100%;height:100%;border:none;outline:none;background:rgba(0,0,0,0);color:#303133;font-size:inherit;font-family:inherit;padding:0}.ln-input__inner::placeholder{color:#a8abb2}.ln-input__label{flex-shrink:0;margin-right:16rpx;font-size:28rpx;color:#303133}.ln-input__clear{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:40rpx;height:40rpx;color:#a8abb2;cursor:pointer;padding:0;border:none;background:none}.ln-input__count{flex-shrink:0;margin-left:8rpx;font-size:24rpx;color:#909399}.ln-input.is-focus{border-color:#0062ff}.ln-input.is-disabled{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed;opacity:.5}.ln-input--large{height:96rpx;font-size:32rpx}.ln-input--small{height:64rpx;font-size:26rpx}.dark .ln-input{background-color:#1d1e1f;border-color:hsla(0,0%,100%,.08)}.dark .ln-input .ln-input__inner{color:#e5eaf3}.dark .ln-input .ln-input__inner::placeholder{color:#6b6f76}.dark .ln-input .ln-input__label{color:#e5eaf3}.dark .ln-input .ln-input__clear{color:#6b6f76}.dark .ln-input .ln-input__count{color:#a3a6ad}.dark .ln-input.is-focus{border-color:#0062ff}.dark .ln-input.is-disabled{background-color:#141415}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const { createReactiveProxy, batchSetData } = require('../common/runtime');
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
value: {
|
|
6
|
+
type: Number,
|
|
7
|
+
value: 0,
|
|
8
|
+
},
|
|
9
|
+
min: {
|
|
10
|
+
type: Number,
|
|
11
|
+
value: 0,
|
|
12
|
+
},
|
|
13
|
+
max: {
|
|
14
|
+
type: Number,
|
|
15
|
+
value: Infinity,
|
|
16
|
+
},
|
|
17
|
+
step: {
|
|
18
|
+
type: Number,
|
|
19
|
+
value: 1,
|
|
20
|
+
},
|
|
21
|
+
disabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
value: false,
|
|
24
|
+
},
|
|
25
|
+
onchange: {
|
|
26
|
+
type: null,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
data: {
|
|
31
|
+
canDecrease: undefined,
|
|
32
|
+
canIncrease: undefined,
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
observers: {
|
|
36
|
+
'value, disabled, min': function() {
|
|
37
|
+
this.setData({ canDecrease: !disabled && value > min });
|
|
38
|
+
},
|
|
39
|
+
'value, disabled, max': function() {
|
|
40
|
+
this.setData({ canIncrease: !disabled && value < max });
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
lifetimes: {
|
|
45
|
+
attached() {
|
|
46
|
+
const self = this;
|
|
47
|
+
// $bindable: value
|
|
48
|
+
this.__bind_value = function(e) {
|
|
49
|
+
self.setData({ value: e.detail.value });
|
|
50
|
+
self.triggerEvent('update:value', e.detail.value);
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
methods: {
|
|
56
|
+
decrease(e) {
|
|
57
|
+
// 用户定义的处理函数
|
|
58
|
+
},
|
|
59
|
+
onInput(e) {
|
|
60
|
+
// 用户定义的处理函数
|
|
61
|
+
},
|
|
62
|
+
increase(e) {
|
|
63
|
+
// 用户定义的处理函数
|
|
64
|
+
},
|
|
65
|
+
__bind_value(e) {
|
|
66
|
+
this.setData({ value: e.detail.value });
|
|
67
|
+
this.triggerEvent('update:value', e.detail.value);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<view class="ln-input-number" class="{{disabled? 'is-disabled' : ''}}">
|
|
2
|
+
<button class="ln-input-number__btn" type="button" aria-label="减少" class="{{!canDecrease? 'is-disabled' : ''}}" bindtap="decrease">
|
|
3
|
+
<icon icon="{{Minus}}" size="{{14}}" />
|
|
4
|
+
</button>
|
|
5
|
+
<input class="ln-input-number__input" type="number" value="{{value}}" disabled="{{disabled}}" bindinput="onInput" />
|
|
6
|
+
<button class="ln-input-number__btn" type="button" aria-label="增加" class="{{!canIncrease? 'is-disabled' : ''}}" bindtap="increase">
|
|
7
|
+
<icon icon="{{Plus}}" size="{{14}}" />
|
|
8
|
+
</button>
|
|
9
|
+
</view>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ln-input-number{display:inline-flex;align-items:stretch;border:1px solid #e4e7ed;border-radius:16rpx;overflow:hidden;background:#fff}.ln-input-number__btn{display:inline-flex;align-items:center;justify-content:center;width:64rpx;padding:0;border:none;background-color:#f2f3f5;color:#909399;cursor:pointer;flex-shrink:0}.ln-input-number__btn:first-child{border-right:1px solid #e4e7ed}.ln-input-number__btn:last-child{border-left:1px solid #e4e7ed}.ln-input-number__btn:active{color:#0062ff}.ln-input-number__btn.is-disabled{color:#c0c4cc;cursor:not-allowed}.ln-input-number__btn.is-disabled:active{color:#c0c4cc}.ln-input-number__input{width:96rpx;height:64rpx;text-align:center;border:none;outline:none;font-size:28rpx;color:#303133;background:rgba(0,0,0,0);-moz-appearance:textfield}.ln-input-number__input::-webkit-inner-spin-button,.ln-input-number__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ln-input-number.is-disabled{opacity:.5}.dark .ln-input-number{border-color:hsla(0,0%,100%,.08);background:#1d1e1f}.dark .ln-input-number .ln-input-number__btn{background-color:#2c2d2e;color:#a3a6ad;border-color:hsla(0,0%,100%,.08)}.dark .ln-input-number .ln-input-number__btn:active{color:#0062ff}.dark .ln-input-number .ln-input-number__btn.is-disabled{color:#6b6f76}.dark .ln-input-number .ln-input-number__input{color:#e5eaf3}
|