renusify 2.5.2 → 3.0.0
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/components/app/index.vue +74 -22
- package/components/app/toast/index.vue +76 -71
- package/components/app/toast/toast.vue +62 -44
- package/components/avatar/index.vue +208 -84
- package/components/button/buttonConfirm.vue +53 -26
- package/components/button/buttonGroup.js +0 -2
- package/components/button/buttonGroup.vue +310 -62
- package/components/button/index.vue +584 -100
- package/components/calendar/index.js +0 -2
- package/components/calendar/index.vue +326 -262
- package/components/calendar/month.vue +64 -55
- package/components/calendar/year.vue +30 -25
- package/components/card/index.vue +139 -59
- package/components/codeEditor/highlightCss.vue +38 -39
- package/components/codeEditor/highlightHtml.vue +64 -64
- package/components/codeEditor/highlightJs.vue +37 -38
- package/components/codeEditor/index.vue +129 -79
- package/components/codeEditor/run.vue +225 -39
- package/components/codeEditor/useCodeFormatter.js +150 -0
- package/components/confirm/index.vue +139 -80
- package/components/container/col.vue +5 -4
- package/components/container/divider.vue +28 -19
- package/components/container/index.vue +34 -15
- package/components/container/row.vue +26 -9
- package/components/container/spacer.vue +2 -4
- package/components/container/style.scss +3 -0
- package/components/content/index.vue +49 -32
- package/components/cropper/index.vue +401 -244
- package/components/float/index.vue +542 -415
- package/components/form/addressInput/index.vue +184 -109
- package/components/form/camInput/index.vue +370 -244
- package/components/form/checkInput/index.vue +138 -71
- package/components/form/checkboxInput/index.vue +87 -47
- package/components/form/colorInput/Alpha.vue +81 -83
- package/components/form/colorInput/Hue.vue +91 -68
- package/components/form/colorInput/Preview.vue +43 -47
- package/components/form/colorInput/Saturation.vue +101 -86
- package/components/form/colorInput/index.vue +71 -39
- package/components/form/colorInput/picker.vue +111 -106
- package/components/form/colorInput/useColor.js +153 -0
- package/components/form/dateInput/index.vue +691 -356
- package/components/form/dateInput/month.vue +63 -54
- package/components/form/dateInput/year.vue +35 -25
- package/components/form/fileInput/index.js +0 -1
- package/components/form/fileInput/index.vue +263 -106
- package/components/form/fileInput/single.vue +323 -164
- package/components/form/groupInput/index.vue +199 -101
- package/components/form/index.vue +189 -83
- package/components/form/input/index.vue +416 -377
- package/components/form/jsonInput/JsonView.vue +54 -56
- package/components/form/jsonInput/index.vue +247 -165
- package/components/form/maskInput/index.vue +252 -132
- package/components/form/numberInput/index.js +0 -1
- package/components/form/numberInput/index.vue +226 -117
- package/components/form/passwordInput/index.js +2 -1
- package/components/form/passwordInput/index.vue +269 -102
- package/components/form/radioInput/index.vue +143 -72
- package/components/form/rangeInput/index.vue +280 -167
- package/components/form/ratingInput/index.vue +57 -57
- package/components/form/selectInput/index.js +1 -3
- package/components/form/selectInput/index.vue +584 -296
- package/components/form/switchInput/index.vue +73 -59
- package/components/form/telInput/index.js +0 -1
- package/components/form/telInput/index.vue +238 -135
- package/components/form/textArea/index.vue +72 -35
- package/components/form/textEditor/index.vue +739 -0
- package/components/form/{text-editor → textEditor}/style.scss +8 -16
- package/components/form/textInput/index.vue +54 -32
- package/components/form/timeInput/index.vue +82 -55
- package/components/form/timeInput/range.vue +115 -94
- package/components/form/timeInput/timepicker.vue +382 -449
- package/components/form/uniqueInput/index.vue +105 -48
- package/components/form/unitInput/index.vue +139 -84
- package/components/formCreator/index.js +0 -1
- package/components/formCreator/index.vue +314 -148
- package/components/highlight/index.vue +41 -25
- package/components/highlight/style.scss +2 -2
- package/components/highlight/{mixin.js → useHighlight.js} +181 -160
- package/components/icon/index.vue +79 -33
- package/components/img/index.vue +249 -147
- package/components/img/preview.vue +180 -198
- package/components/img/svgImg.vue +42 -39
- package/components/index.js +5 -20
- package/components/infinite/index.js +1 -2
- package/components/infinite/index.vue +248 -66
- package/components/map/index.vue +428 -261
- package/components/map/route.vue +794 -487
- package/components/map/select.vue +118 -58
- package/components/menu/index.vue +201 -91
- package/components/meta/meta.js +26 -3
- package/components/modal/index.vue +382 -156
- package/components/notify/index.vue +204 -86
- package/components/notify/notification.vue +38 -55
- package/components/progress/circle.vue +189 -70
- package/components/progress/line.vue +266 -46
- package/components/searchBox/index.js +1 -3
- package/components/searchBox/index.vue +194 -101
- package/components/skeleton/index.vue +45 -20
- package/components/slider/index.vue +318 -156
- package/components/swiper/index.vue +254 -106
- package/components/table/crud/footer.vue +77 -53
- package/components/table/crud/header.vue +71 -72
- package/components/table/crud/index.vue +629 -399
- package/components/table/index.vue +721 -278
- package/components/timeAgo/index.vue +145 -96
- package/components/tour/index.vue +338 -235
- package/components/tree/index.vue +235 -89
- package/components/tree/tree-element.vue +106 -106
- package/directive/animate/index.js +77 -0
- package/directive/clickOutSide/index.js +98 -0
- package/directive/drag/index.js +153 -0
- package/directive/index.js +11 -13
- package/directive/intersect/index.js +263 -0
- package/directive/mask/index.js +67 -0
- package/directive/parallax/index.js +78 -0
- package/directive/ripple/index.js +14 -0
- package/directive/scroll/index.js +244 -0
- package/directive/sortable/index.js +274 -0
- package/directive/title/index.js +75 -0
- package/directive/touch/index.js +268 -0
- package/index.js +10 -8
- package/package.json +5 -2
- package/plugins/validation/Validate.js +88 -79
- package/scripts/generate-docs.mjs +226 -0
- package/scripts/menu.mjs +240 -0
- package/scripts/parser.mjs +1086 -0
- package/style/_index.scss +7 -0
- package/style/app.scss +13 -65
- package/style/colors.scss +5 -22
- package/style/functions/index.scss +8 -0
- package/style/mixins/index.scss +17 -5
- package/style/variables/base.scss +154 -175
- package/style/variables/color.scss +0 -12
- package/style/variables/utilities.scss +0 -180
- package/tools/helper.js +0 -8
- package/tools/icons.js +6 -1
- package/tools/root.js +71 -0
- package/components/app/style.scss +0 -41
- package/components/app/toast/style.scss +0 -20
- package/components/avatar/style.scss +0 -32
- package/components/bar/bottomNav.js +0 -1
- package/components/bar/bottomNav.vue +0 -28
- package/components/bar/bottomNavigationCircle.js +0 -2
- package/components/bar/bottomNavigationCircle.vue +0 -99
- package/components/bar/scss/bottomNav.scss +0 -67
- package/components/bar/scss/toolbar.scss +0 -174
- package/components/bar/toolbar/index.js +0 -8
- package/components/bar/toolbar/index.vue +0 -35
- package/components/bar/toolbar/laptop.vue +0 -33
- package/components/bar/toolbar/menuChilds.vue +0 -41
- package/components/bar/toolbar/menuLaptop.vue +0 -41
- package/components/bar/toolbar/menuMob.vue +0 -39
- package/components/bar/toolbar/mixin.js +0 -43
- package/components/bar/toolbar/mobile.vue +0 -34
- package/components/breadcrumb/bredcrumbItem.vue +0 -39
- package/components/breadcrumb/index.js +0 -3
- package/components/breadcrumb/index.vue +0 -71
- package/components/breadcrumb/style.scss +0 -51
- package/components/button/style.scss +0 -411
- package/components/card/style.scss +0 -86
- package/components/chart/chart.js +0 -1
- package/components/chart/chart.vue +0 -69
- package/components/chart/worldMap.js +0 -2
- package/components/chart/worldMap.vue +0 -1112
- package/components/chat/MessageList.vue +0 -163
- package/components/chat/chatInput.vue +0 -150
- package/components/chat/chatMsg.vue +0 -276
- package/components/chat/index.js +0 -11
- package/components/chat/index.vue +0 -113
- package/components/chip/index.js +0 -3
- package/components/chip/index.vue +0 -77
- package/components/chip/style.scss +0 -199
- package/components/codeEditor/mixin.js +0 -145
- package/components/countdown/index.js +0 -1
- package/components/countdown/index.vue +0 -105
- package/components/form/colorInput/mixin.js +0 -132
- package/components/form/fileInput/file.js +0 -148
- package/components/form/telInput/assets/flags.png +0 -0
- package/components/form/telInput/assets/flags@2x.png +0 -0
- package/components/form/text-editor/index.vue +0 -705
- package/components/icon/style.scss +0 -17
- package/components/infinite/div.js +0 -6
- package/components/infinite/div.vue +0 -193
- package/components/infinite/page.js +0 -3
- package/components/infinite/page.vue +0 -105
- package/components/list/index.js +0 -3
- package/components/list/index.vue +0 -122
- package/components/list/style.scss +0 -66
- package/components/message/index.js +0 -4
- package/components/message/index.vue +0 -40
- package/components/modal/style.scss +0 -146
- package/components/nestable/NestableItem.vue +0 -307
- package/components/nestable/editable.js +0 -44
- package/components/nestable/index.js +0 -1
- package/components/nestable/index.vue +0 -226
- package/components/nestable/methods.js +0 -416
- package/components/progress/style.scss +0 -229
- package/components/table/style.scss +0 -338
- package/components/tabs/index.js +0 -3
- package/components/tabs/index.vue +0 -151
- package/components/timeline/index.js +0 -6
- package/components/timeline/index.vue +0 -76
- package/directive/resize/index.js +0 -30
- package/directive/skeleton/index.js +0 -27
- package/directive/skeleton/style.scss +0 -37
- package/plugins/request/Request.js +0 -68
- package/style/animation.scss +0 -94
- package/style/style.scss +0 -8
- package/tools/rootable.js +0 -75
- /package/components/form/{text-editor → textEditor}/index.js +0 -0
- /package/components/form/{text-editor → textEditor}/preview.js +0 -0
- /package/components/form/{text-editor → textEditor}/preview.vue +0 -0
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
@use "../../style/variables/base";
|
|
2
|
-
@use "../../style/mixins";
|
|
3
|
-
|
|
4
|
-
.#{base.$prefix}icon {
|
|
5
|
-
display: inline-flex;
|
|
6
|
-
vertical-align: -.5rem;
|
|
7
|
-
|
|
8
|
-
&.icon-disabled {
|
|
9
|
-
@include mixins.disable-states();
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@include mixins.rtl() {
|
|
13
|
-
&:not(.exact-icon) {
|
|
14
|
-
transform: scale(-1, 1);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * as rInfiniteDiv from './div.vue'
|
|
2
|
-
export * as l_container from '../container/index.js'
|
|
3
|
-
export * as l_row from '../container/row.js'
|
|
4
|
-
export * as l_col from '../container/col.js'
|
|
5
|
-
export * as l_line from '../progress/line.js'
|
|
6
|
-
export * as d_scroll from '../../directive/scroll/index.js'
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<r-container class="container-fluid">
|
|
3
|
-
<r-row>
|
|
4
|
-
<r-col class="pa-0">
|
|
5
|
-
<div :style="{'max-height': height,'height': height,}"
|
|
6
|
-
v-scroll="onScroll"
|
|
7
|
-
ref="chat"
|
|
8
|
-
class="infinite-container">
|
|
9
|
-
<transition-group :name="isChat?'slide-up':'slide-down'"
|
|
10
|
-
:class="{'flex-column-reverse':isChat}"
|
|
11
|
-
tag="div" class="row no-gutters">
|
|
12
|
-
<r-col class="col-12" v-for="(item,i) in datacollection" :key="item._id||i">
|
|
13
|
-
<slot v-bind:item="item">{{item}}</slot>
|
|
14
|
-
</r-col>
|
|
15
|
-
<r-col class="col-12" key="loading">
|
|
16
|
-
<r-progress-line color="color-two"
|
|
17
|
-
v-show="loading"></r-progress-line>
|
|
18
|
-
</r-col>
|
|
19
|
-
</transition-group>
|
|
20
|
-
</div>
|
|
21
|
-
|
|
22
|
-
</r-col>
|
|
23
|
-
<r-col class="col-12 text-center title-1"
|
|
24
|
-
v-if="noItem"
|
|
25
|
-
>{{ $t('no_item', 'renusify') }}
|
|
26
|
-
</r-col>
|
|
27
|
-
</r-row>
|
|
28
|
-
</r-container>
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<script>
|
|
32
|
-
|
|
33
|
-
export default {
|
|
34
|
-
name: 'r-infinite-div',
|
|
35
|
-
props: {
|
|
36
|
-
isChat: Boolean,
|
|
37
|
-
height: {
|
|
38
|
-
default: '400px',
|
|
39
|
-
type: String
|
|
40
|
-
},
|
|
41
|
-
url: {
|
|
42
|
-
required: true,
|
|
43
|
-
type: String
|
|
44
|
-
},
|
|
45
|
-
query: {
|
|
46
|
-
type: Object
|
|
47
|
-
},
|
|
48
|
-
live: Boolean,
|
|
49
|
-
liveTimer: {
|
|
50
|
-
default: 10000,
|
|
51
|
-
type: Number
|
|
52
|
-
},
|
|
53
|
-
headers: Object
|
|
54
|
-
},
|
|
55
|
-
data() {
|
|
56
|
-
return {
|
|
57
|
-
datacollection: [],
|
|
58
|
-
page: 1,
|
|
59
|
-
loading: false,
|
|
60
|
-
total: 0,
|
|
61
|
-
set: null,
|
|
62
|
-
noItem: false,
|
|
63
|
-
id: null,
|
|
64
|
-
first: true,
|
|
65
|
-
active: true,
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
mounted() {
|
|
69
|
-
this.get(this.live)
|
|
70
|
-
},
|
|
71
|
-
watch: {
|
|
72
|
-
live: function () {
|
|
73
|
-
clearInterval(this.id)
|
|
74
|
-
if (this.live) {
|
|
75
|
-
this.get(true)
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
methods: {
|
|
80
|
-
onScroll(e) {
|
|
81
|
-
let offset = 0
|
|
82
|
-
if (this.isChat) {
|
|
83
|
-
offset = e.target.scrollTop
|
|
84
|
-
} else {
|
|
85
|
-
offset = e.target.scrollHeight - e.target.scrollTop - e.target.clientHeight
|
|
86
|
-
}
|
|
87
|
-
if (offset < 200) {
|
|
88
|
-
if (!this.loading) {
|
|
89
|
-
if (this.datacollection.length < this.total) {
|
|
90
|
-
this.page++
|
|
91
|
-
this.get()
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
get(live = false) {
|
|
97
|
-
clearInterval(this.id)
|
|
98
|
-
if (!this.active) {
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
this.loading = true
|
|
102
|
-
this.noItem = false
|
|
103
|
-
let end = true
|
|
104
|
-
let par = {'page': this.page}
|
|
105
|
-
|
|
106
|
-
if (live === true) {
|
|
107
|
-
par = {'page': 1}
|
|
108
|
-
end = false
|
|
109
|
-
}
|
|
110
|
-
if (this.query) {
|
|
111
|
-
Object.assign(par, this.query)
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
this.$axios.get(this.url, {params: par, headers: this.headers}).then(
|
|
115
|
-
(res) => {
|
|
116
|
-
this.push(res.data.data, end)
|
|
117
|
-
this.total = res.data.total
|
|
118
|
-
if (this.total === 0) {
|
|
119
|
-
this.noItem = true
|
|
120
|
-
}
|
|
121
|
-
this.loading = false
|
|
122
|
-
}, () => {
|
|
123
|
-
this.loading = false
|
|
124
|
-
})
|
|
125
|
-
if (live&&this.live) {
|
|
126
|
-
this.id = setInterval(() => {
|
|
127
|
-
this.get(true)
|
|
128
|
-
}, this.liveTimer)
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
push(data, end = false) {
|
|
132
|
-
let el = this.$refs.chat
|
|
133
|
-
let can = false
|
|
134
|
-
if (this.isChat) {
|
|
135
|
-
can = el.scrollHeight <= el.scrollTop + el.clientHeight
|
|
136
|
-
} else {
|
|
137
|
-
can = el.scrollTop === 0
|
|
138
|
-
}
|
|
139
|
-
if (!end) {
|
|
140
|
-
let d = data
|
|
141
|
-
const lng=this.datacollection.length
|
|
142
|
-
for (let key = 0; key < lng; key++) {
|
|
143
|
-
if (key <= data.length) {
|
|
144
|
-
if (this.$helper.searchArray(d, '_id', this.datacollection[key]['_id']) === false) {
|
|
145
|
-
d.push(this.datacollection[key])
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
148
|
-
d.push(this.datacollection[key])
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
this.datacollection = d
|
|
152
|
-
} else {
|
|
153
|
-
let d = this.datacollection
|
|
154
|
-
const lng=data.length
|
|
155
|
-
for (let key = 0; key < lng; key++) {
|
|
156
|
-
if (this.$helper.searchArray(d, '_id', data[key]['_id']) === false) {
|
|
157
|
-
d.push(data[key])
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
this.datacollection = d
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
setTimeout(() => {
|
|
164
|
-
if (this.isChat) {
|
|
165
|
-
if (this.first || can) {
|
|
166
|
-
el.scrollTop = el.scrollHeight;
|
|
167
|
-
this.first = false
|
|
168
|
-
}
|
|
169
|
-
} else if (can) {
|
|
170
|
-
el.scrollTop = 0;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
}, 0)
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
activated() {
|
|
177
|
-
this.active = true
|
|
178
|
-
},
|
|
179
|
-
deactivated() {
|
|
180
|
-
this.active = false
|
|
181
|
-
},
|
|
182
|
-
unmounted() {
|
|
183
|
-
this.active = false
|
|
184
|
-
clearInterval(this.id)
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
</script>
|
|
188
|
-
<style lang="scss">
|
|
189
|
-
.infinite-container {
|
|
190
|
-
width: 100%;
|
|
191
|
-
overflow-x: hidden;
|
|
192
|
-
}
|
|
193
|
-
</style>
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="infinite-page">
|
|
3
|
-
<div v-scroll.window="onScroll" class="infinite-page-container">
|
|
4
|
-
<slot :items="datacollection" :total="total"></slot>
|
|
5
|
-
</div>
|
|
6
|
-
<r-progress-line color="color-two"
|
|
7
|
-
v-show="loading"
|
|
8
|
-
|
|
9
|
-
></r-progress-line>
|
|
10
|
-
<div class="text-center title-2"
|
|
11
|
-
v-if="noItem"
|
|
12
|
-
>{{ noItemMsg }}
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
|
|
19
|
-
export default {
|
|
20
|
-
name: 'r-infinite-page',
|
|
21
|
-
props: {
|
|
22
|
-
url: {
|
|
23
|
-
required: true,
|
|
24
|
-
type: String
|
|
25
|
-
},
|
|
26
|
-
query: {
|
|
27
|
-
type: Object
|
|
28
|
-
},
|
|
29
|
-
noItemMsg: {
|
|
30
|
-
type: String,
|
|
31
|
-
default: 'ITEMS NOT FOUND'
|
|
32
|
-
},
|
|
33
|
-
distanceLoad: {
|
|
34
|
-
type: Number,
|
|
35
|
-
default: 150
|
|
36
|
-
},
|
|
37
|
-
headers: Object
|
|
38
|
-
},
|
|
39
|
-
data() {
|
|
40
|
-
return {
|
|
41
|
-
datacollection: [],
|
|
42
|
-
page: 1,
|
|
43
|
-
active: true,
|
|
44
|
-
loading: false,
|
|
45
|
-
total: 0,
|
|
46
|
-
set: null,
|
|
47
|
-
noItem: false
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
created() {
|
|
51
|
-
this.get()
|
|
52
|
-
},
|
|
53
|
-
activated() {
|
|
54
|
-
this.active = true
|
|
55
|
-
},
|
|
56
|
-
deactivated() {
|
|
57
|
-
this.active = false
|
|
58
|
-
},
|
|
59
|
-
methods: {
|
|
60
|
-
onScroll(e) {
|
|
61
|
-
if (this.active && document.body.offsetHeight < ((window.innerHeight + window.scrollY) + this.distanceLoad).valueOf()) {
|
|
62
|
-
if (!this.loading) {
|
|
63
|
-
this.page++
|
|
64
|
-
if (this.datacollection.length < this.total) {
|
|
65
|
-
this.get()
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
},
|
|
71
|
-
get() {
|
|
72
|
-
this.$helper.log('infinite page get')
|
|
73
|
-
this.loading = true
|
|
74
|
-
this.noItem = false
|
|
75
|
-
let par = {'page' :this.page}
|
|
76
|
-
if (typeof this.query==='object') {
|
|
77
|
-
Object.assign(par,{},this.query)
|
|
78
|
-
}
|
|
79
|
-
this.$axios.get(this.url, {params: par, headers: this.headers}).then(
|
|
80
|
-
(res) => {
|
|
81
|
-
this.push(res.data.data)
|
|
82
|
-
this.total = res.data.total
|
|
83
|
-
if (this.total === 0) {
|
|
84
|
-
this.noItem = true
|
|
85
|
-
}
|
|
86
|
-
this.loading = false
|
|
87
|
-
}, () => {
|
|
88
|
-
this.loading = false
|
|
89
|
-
})
|
|
90
|
-
},
|
|
91
|
-
push(data) {
|
|
92
|
-
const lng=data.length
|
|
93
|
-
for (let key = 0; key < lng; key++) {
|
|
94
|
-
this.datacollection.push(data[key])
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
}
|
|
99
|
-
</script>
|
|
100
|
-
<style>
|
|
101
|
-
.infinite-page {
|
|
102
|
-
margin-bottom: 100px;
|
|
103
|
-
width: 100%
|
|
104
|
-
}
|
|
105
|
-
</style>
|
package/components/list/index.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="classes">
|
|
3
|
-
<div
|
|
4
|
-
v-for="(item_value,item_key) in genItems"
|
|
5
|
-
:key="item_key"
|
|
6
|
-
v-ripple
|
|
7
|
-
:class="{'list-item-active':$helper.searchArray(list,text,item_value[text])!==false}"
|
|
8
|
-
class="list-item h-space-between"
|
|
9
|
-
@click.prevent="handle(item_value)"
|
|
10
|
-
>
|
|
11
|
-
<slot :item="item_value">
|
|
12
|
-
<div class="list-title">{{ item_value[text] }}</div>
|
|
13
|
-
<transition name="fade">
|
|
14
|
-
<r-icon v-if="(checked&&$helper.searchArray(list,text,item_value[text])!==false)"
|
|
15
|
-
class="pe-1"
|
|
16
|
-
exact
|
|
17
|
-
v-html="$r.icons.check"
|
|
18
|
-
></r-icon>
|
|
19
|
-
</transition>
|
|
20
|
-
</slot>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</template>
|
|
24
|
-
|
|
25
|
-
<script>
|
|
26
|
-
import './style.scss'
|
|
27
|
-
import Ripple from '../../directive/ripple/index.js'
|
|
28
|
-
|
|
29
|
-
export default {
|
|
30
|
-
name: 'r-list',
|
|
31
|
-
directives: {ripple: Ripple},
|
|
32
|
-
props: {
|
|
33
|
-
disabled: Boolean,
|
|
34
|
-
multiple: Boolean,
|
|
35
|
-
min: {type: Number, default: 0},
|
|
36
|
-
text: {type: String, default: 'name'},
|
|
37
|
-
value: {type: String, default: 'value'},
|
|
38
|
-
flat: Boolean,
|
|
39
|
-
rounded: Boolean,
|
|
40
|
-
subheader: Boolean,
|
|
41
|
-
checked: Boolean,
|
|
42
|
-
filter: String,
|
|
43
|
-
items: Array,
|
|
44
|
-
modelValue: {type: [Array, Object]}
|
|
45
|
-
},
|
|
46
|
-
emits: ['update:modelValue'],
|
|
47
|
-
computed: {
|
|
48
|
-
list() {
|
|
49
|
-
if (this.modelValue) {
|
|
50
|
-
return this.modelValue
|
|
51
|
-
}
|
|
52
|
-
return []
|
|
53
|
-
},
|
|
54
|
-
classes() {
|
|
55
|
-
let c = `${this.$r.prefix}list`
|
|
56
|
-
if (this.disabled) {
|
|
57
|
-
c += ' list-disabled'
|
|
58
|
-
}
|
|
59
|
-
if (this.flat) {
|
|
60
|
-
c += ' list-flat'
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (this.rounded) {
|
|
64
|
-
c += ' list-rounded'
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (this.subheader) {
|
|
68
|
-
c += ' list-subheader'
|
|
69
|
-
}
|
|
70
|
-
return c
|
|
71
|
-
},
|
|
72
|
-
genItems() {
|
|
73
|
-
const res = []
|
|
74
|
-
if (this.items) {
|
|
75
|
-
const lng = this.items.length
|
|
76
|
-
for (let i = 0; i < lng; i++) {
|
|
77
|
-
if (typeof this.items[i] === 'object') {
|
|
78
|
-
res[i] = this.items[i]
|
|
79
|
-
} else {
|
|
80
|
-
res[i] = {[this.text]: this.items[i].toString(), [this.value]: this.items[i]}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (this.filter) {
|
|
85
|
-
const re = new RegExp(this.filter, 'gi')
|
|
86
|
-
const text = this.text
|
|
87
|
-
return res.filter(function (el) {
|
|
88
|
-
if (el[text] && el[text].match(re)) {
|
|
89
|
-
return el
|
|
90
|
-
}
|
|
91
|
-
})
|
|
92
|
-
}
|
|
93
|
-
return res
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
methods: {
|
|
97
|
-
handle(item) {
|
|
98
|
-
if (this.disabled) {
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
let val = this.list
|
|
102
|
-
|
|
103
|
-
const index = this.$helper.searchArray(val, this.text, item[this.text])
|
|
104
|
-
|
|
105
|
-
if (index !== false) {
|
|
106
|
-
if (val.length > this.min) {
|
|
107
|
-
val.splice(index, 1)
|
|
108
|
-
}
|
|
109
|
-
} else {
|
|
110
|
-
if (!this.multiple) {
|
|
111
|
-
val = []
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
val.push(item)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
this.$emit('update:modelValue', this.multiple ? val : val[0])
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
</script>
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
@use "sass:map";
|
|
2
|
-
@use "../../style/variables/base";
|
|
3
|
-
|
|
4
|
-
$item-height: 48px;
|
|
5
|
-
|
|
6
|
-
.#{base.$prefix}list {
|
|
7
|
-
border-radius: map.get(base.$borders, 'sm');
|
|
8
|
-
display: block;
|
|
9
|
-
padding: 8px 0;
|
|
10
|
-
will-change: box-shadow;
|
|
11
|
-
flex: 0 1 auto;
|
|
12
|
-
position: relative;
|
|
13
|
-
max-width: 100%;
|
|
14
|
-
|
|
15
|
-
&.list-subheader {
|
|
16
|
-
align-items: center;
|
|
17
|
-
display: flex;
|
|
18
|
-
height: 48px;
|
|
19
|
-
font-size: 0.875rem;
|
|
20
|
-
font-weight: 400;
|
|
21
|
-
padding: 0 16px 0 16px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
&.list-disabled {
|
|
25
|
-
pointer-events: none;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.list-item {
|
|
29
|
-
align-items: center;
|
|
30
|
-
display: flex;
|
|
31
|
-
flex: 1 1 100%;
|
|
32
|
-
letter-spacing: normal;
|
|
33
|
-
min-height: $item-height;
|
|
34
|
-
outline: none;
|
|
35
|
-
padding: 0 16px;
|
|
36
|
-
position: relative;
|
|
37
|
-
text-decoration: none;
|
|
38
|
-
margin-bottom: 4px;
|
|
39
|
-
&:hover {
|
|
40
|
-
cursor: pointer;
|
|
41
|
-
background-color: var(--color-sheet-container);
|
|
42
|
-
color: var(--color-on-sheet);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
&.list-item-active {
|
|
46
|
-
background-color: var(--color-one-container);
|
|
47
|
-
color: var(--color-on-one-container);
|
|
48
|
-
|
|
49
|
-
.#{base.$prefix}icon {
|
|
50
|
-
color: inherit;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
&.list-flat {
|
|
56
|
-
.list-item {
|
|
57
|
-
border-radius: 0;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
&.list-rounded {
|
|
62
|
-
.list-item {
|
|
63
|
-
border-radius: map.get(base.$borders, 'xl');
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="h-center">
|
|
3
|
-
<template v-for="(item,i) in items"
|
|
4
|
-
:key="i">
|
|
5
|
-
<slot :item="item" :k="i">
|
|
6
|
-
<div :class="`color-${type}`"
|
|
7
|
-
class="mb-2 br-md">
|
|
8
|
-
<r-container>
|
|
9
|
-
<r-row>
|
|
10
|
-
<r-col class="col-auto">
|
|
11
|
-
{{ $t(i) }}:
|
|
12
|
-
</r-col>
|
|
13
|
-
<r-col>
|
|
14
|
-
<div v-for="(er,k) in item" :key="k">
|
|
15
|
-
{{ $t(er) }}
|
|
16
|
-
</div>
|
|
17
|
-
</r-col>
|
|
18
|
-
</r-row>
|
|
19
|
-
</r-container>
|
|
20
|
-
</div>
|
|
21
|
-
</slot>
|
|
22
|
-
</template>
|
|
23
|
-
</div>
|
|
24
|
-
</template>
|
|
25
|
-
|
|
26
|
-
<script>
|
|
27
|
-
export default {
|
|
28
|
-
name: 'message',
|
|
29
|
-
props: {
|
|
30
|
-
items: {
|
|
31
|
-
required: true,
|
|
32
|
-
type: [Array, Object]
|
|
33
|
-
},
|
|
34
|
-
type: {
|
|
35
|
-
default: 'error',
|
|
36
|
-
type: String
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
</script>
|