@10yun/cv-mobile-ui 0.4.1 → 0.4.2

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 (112) hide show
  1. package/package.json +1 -1
  2. package/ui-cv/cv-badge/{uni-badge.vue → cv-badge.vue} +2 -2
  3. package/ui-cv/cv-calendar/calendar.js +762 -345
  4. package/ui-cv/cv-calendar/cv-calendar-item.vue +198 -0
  5. package/ui-cv/cv-calendar/cv-calendar.vue +508 -0
  6. package/ui-cv/cv-card/cv-card.vue +427 -0
  7. package/ui-cv/cv-col/cv-col.vue +2965 -0
  8. package/ui-cv/cv-collapse/cv-collapse.vue +146 -0
  9. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +395 -0
  10. package/ui-cv/cv-combox/cv-combox.vue +250 -0
  11. package/ui-cv/cv-countdown/cv-countdown.vue +245 -0
  12. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +841 -0
  13. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +154 -0
  14. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +376 -0
  15. package/ui-cv/cv-data-picker/cv-data-picker.vue +486 -0
  16. package/ui-cv/cv-data-pickerview/{uni-data-picker.js → cv-data-picker.js} +0 -0
  17. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +304 -0
  18. package/ui-cv/cv-dateformat/cv-dateformat.vue +86 -0
  19. package/ui-cv/cv-datetime-picker/calendar.vue +752 -738
  20. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +958 -0
  21. package/ui-cv/cv-datetime-picker/time-picker.vue +900 -892
  22. package/ui-cv/cv-easyinput/cv-easyinput.vue +514 -0
  23. package/ui-cv/cv-fab/cv-fab.vue +465 -0
  24. package/ui-cv/cv-fab/{uni-fab.vue.bak → cv-fab.vue.bak} +2 -2
  25. package/ui-cv/cv-fav/cv-fav.vue +150 -0
  26. package/ui-cv/cv-file-picker/cv-file-picker.vue +619 -0
  27. package/ui-cv/cv-form-item/cv-form-item.vue +1 -1
  28. package/ui-cv/cv-goods-nav/{uni-goods-nav.vue → cv-goods-nav.vue} +1 -1
  29. package/ui-cv/{cv-icons2/cv-icons2.vue → cv-icon2/cv-icon2.vue} +3 -3
  30. package/ui-cv/{cv-icons2 → cv-icon2}/icons.js +0 -0
  31. package/ui-cv/{cv-icons2 → cv-icon2}/uni.ttf +0 -0
  32. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +154 -0
  33. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +371 -0
  34. package/ui-cv/cv-input-password/cv-input-password.vue +2 -2
  35. package/ui-cv/{cv-link/uni-link.vue → cv-link2/cv-link2.vue} +1 -1
  36. package/ui-cv/cv-list/cv-list.vue +107 -0
  37. package/ui-cv/cv-list/cv-refresh.vue +65 -0
  38. package/ui-cv/cv-list-ad/cv-list-ad.vue +113 -0
  39. package/ui-cv/cv-list-chat/{uni-list-chat.scss → cv-list-chat.scss} +0 -0
  40. package/ui-cv/cv-list-chat/{uni-list-chat.vue → cv-list-chat.vue} +0 -0
  41. package/ui-cv/cv-list-item/cv-list-item.vue +449 -0
  42. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +256 -0
  43. package/ui-cv/cv-nav-bar/{uni-status-bar.vue → cv-status-bar.vue} +0 -0
  44. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +453 -0
  45. package/ui-cv/cv-number-box/cv-number-box.vue +223 -0
  46. package/ui-cv/cv-pagination/cv-pagination.vue +397 -0
  47. package/ui-cv/cv-popup/cv-popup.vue +429 -0
  48. package/ui-cv/cv-popup-dialog/{uni-popup-dialog.vue → cv-popup-dialog.vue} +0 -0
  49. package/ui-cv/cv-popup-message/cv-popup-message.vue +143 -0
  50. package/ui-cv/cv-popup-share/{uni-popup-share.vue → cv-popup-share.vue} +0 -0
  51. package/ui-cv/cv-row/{uni-row.vue → cv-row.vue} +1 -1
  52. package/ui-cv/cv-search-bar/cv-search-bar.vue +280 -0
  53. package/ui-cv/cv-section/{uni-section.vue → cv-section.vue} +0 -0
  54. package/ui-cv/cv-segmented-control/{uni-segmented-control.vue → cv-segmented-control.vue} +0 -0
  55. package/ui-cv/cv-status-bar/{uni-status-bar.vue → cv-status-bar.vue} +0 -0
  56. package/ui-cv/cv-steps/cv-steps.vue +293 -0
  57. package/ui-cv/cv-swipe-action/{uni-swipe-action.vue → cv-swipe-action.vue} +0 -0
  58. package/ui-cv/cv-swipe-action-item/{uni-swipe-action-item.vue → cv-swipe-action-item.vue} +0 -0
  59. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +255 -0
  60. package/ui-cv/cv-table/cv-table.vue +460 -0
  61. package/ui-cv/cv-tag/cv-tag.vue +276 -0
  62. package/ui-cv/cv-tbody/cv-tbody.vue +28 -0
  63. package/ui-cv/cv-td/cv-td.vue +93 -0
  64. package/ui-cv/cv-test/{uni-test.vue → cv-test.vue} +0 -0
  65. package/ui-cv/cv-th/cv-th.vue +270 -0
  66. package/ui-cv/cv-thead/cv-thead.vue +114 -0
  67. package/ui-cv/cv-title/cv-title.vue +168 -0
  68. package/ui-cv/cv-tr/cv-tr.vue +166 -0
  69. package/ui-cv/cv-transition/cv-transition.vue +279 -0
  70. package/ui-cv/cv-calendar/uni-calendar-item.vue +0 -171
  71. package/ui-cv/cv-calendar/uni-calendar.vue +0 -504
  72. package/ui-cv/cv-card/uni-card.vue +0 -420
  73. package/ui-cv/cv-col/uni-col.vue +0 -2968
  74. package/ui-cv/cv-collapse/uni-collapse.vue +0 -146
  75. package/ui-cv/cv-collapse-item/uni-collapse-item.vue +0 -378
  76. package/ui-cv/cv-combox/uni-combox.vue +0 -237
  77. package/ui-cv/cv-countdown/uni-countdown.vue +0 -234
  78. package/ui-cv/cv-data-checkbox/uni-data-checkbox.vue +0 -792
  79. package/ui-cv/cv-data-indexed-list/uni-data-indexed-list-item.vue +0 -142
  80. package/ui-cv/cv-data-indexed-list/uni-data-indexed-list.vue +0 -364
  81. package/ui-cv/cv-data-picker/uni-data-picker.vue +0 -468
  82. package/ui-cv/cv-data-pickerview/uni-data-pickerview.vue +0 -298
  83. package/ui-cv/cv-dateformat/uni-dateformat.vue +0 -88
  84. package/ui-cv/cv-datetime-picker/uni-datetime-picker.vue +0 -874
  85. package/ui-cv/cv-easyinput/uni-easyinput.vue +0 -438
  86. package/ui-cv/cv-fab/uni-fab.vue +0 -443
  87. package/ui-cv/cv-fav/uni-fav.vue +0 -136
  88. package/ui-cv/cv-file-picker/uni-file-picker.vue +0 -614
  89. package/ui-cv/cv-indexed-list/uni-indexed-list-item.vue +0 -142
  90. package/ui-cv/cv-indexed-list/uni-indexed-list.vue +0 -357
  91. package/ui-cv/cv-list/uni-list.vue +0 -107
  92. package/ui-cv/cv-list/uni-refresh.vue +0 -65
  93. package/ui-cv/cv-list-ad/uni-list-ad.vue +0 -106
  94. package/ui-cv/cv-list-item/uni-list-item.vue +0 -428
  95. package/ui-cv/cv-nav-bar/uni-nav-bar.vue +0 -244
  96. package/ui-cv/cv-notice-bar/uni-notice-bar.vue +0 -394
  97. package/ui-cv/cv-number-box/uni-number-box.vue +0 -224
  98. package/ui-cv/cv-pagination/uni-pagination.vue +0 -376
  99. package/ui-cv/cv-popup/uni-popup.vue +0 -412
  100. package/ui-cv/cv-popup-message/uni-popup-message.vue +0 -143
  101. package/ui-cv/cv-search-bar/uni-search-bar.vue +0 -262
  102. package/ui-cv/cv-steps/uni-steps.vue +0 -250
  103. package/ui-cv/cv-swiper-dot/uni-swiper-dot.vue +0 -205
  104. package/ui-cv/cv-table/uni-table.vue +0 -455
  105. package/ui-cv/cv-tag/uni-tag.vue +0 -283
  106. package/ui-cv/cv-tbody/uni-tbody.vue +0 -30
  107. package/ui-cv/cv-td/uni-td.vue +0 -88
  108. package/ui-cv/cv-th/uni-th.vue +0 -259
  109. package/ui-cv/cv-thead/uni-thead.vue +0 -114
  110. package/ui-cv/cv-title/uni-title.vue +0 -171
  111. package/ui-cv/cv-tr/uni-tr.vue +0 -156
  112. package/ui-cv/cv-transition/uni-transition.vue +0 -287
@@ -0,0 +1,154 @@
1
+ <template>
2
+ <view>
3
+ <view v-if="loaded || list.itemIndex < 15" class="uni-indexed-list__title-wrapper">
4
+ <text v-if="list.items && list.items.length > 0" class="uni-indexed-list__title">{{ list.title }}</text>
5
+ </view>
6
+ <view v-if="(loaded || list.itemIndex < 15) && list.items && list.items.length > 0" class="uni-indexed-list__list">
7
+ <view
8
+ v-for="(item, index) in list.items"
9
+ :key="index"
10
+ class="uni-indexed-list__item"
11
+ hover-class="uni-indexed-list__item--hover"
12
+ >
13
+ <view class="uni-indexed-list__item-container" @click="onClick(idx, index)">
14
+ <view
15
+ class="uni-indexed-list__item-border"
16
+ :class="{ 'uni-indexed-list__item-border--last': index === list.items.length - 1 }"
17
+ >
18
+ <view v-if="showSelect" style="margin-right: 20rpx">
19
+ <cv-icon2
20
+ :type="item.checked ? 'checkbox-filled' : 'circle'"
21
+ :color="item.checked ? '#007aff' : '#aaa'"
22
+ size="24"
23
+ />
24
+ </view>
25
+ <text class="uni-indexed-list__item-content">{{ item.text }}</text>
26
+ </view>
27
+ </view>
28
+ </view>
29
+ </view>
30
+ </view>
31
+ </template>
32
+
33
+ <script>
34
+ import cvIcon2 from '../cv-icon2/cv-icon2.vue';
35
+ export default {
36
+ name: 'cvIndexedList',
37
+ components: {
38
+ cvIcon2
39
+ },
40
+ props: {
41
+ loaded: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ idx: {
46
+ type: Number,
47
+ default: 0
48
+ },
49
+ list: {
50
+ type: Object,
51
+ default() {
52
+ return {};
53
+ }
54
+ },
55
+ showSelect: {
56
+ type: Boolean,
57
+ default: false
58
+ }
59
+ },
60
+ methods: {
61
+ onClick(idx, index) {
62
+ this.$emit('itemClick', {
63
+ idx,
64
+ index
65
+ });
66
+ }
67
+ }
68
+ };
69
+ </script>
70
+
71
+ <style scoped>
72
+ .uni-indexed-list__list {
73
+ background-color: #ffffff;
74
+ /* #ifndef APP-NVUE */
75
+ display: flex;
76
+ /* #endif */
77
+ flex-direction: column;
78
+ border-top-style: solid;
79
+ border-top-width: 1px;
80
+ border-top-color: #e5e5e5;
81
+ }
82
+
83
+ .uni-indexed-list__item {
84
+ font-size: 16px;
85
+ /* #ifndef APP-NVUE */
86
+ display: flex;
87
+ /* #endif */
88
+ flex: 1;
89
+ flex-direction: row;
90
+ justify-content: space-between;
91
+ align-items: center;
92
+ }
93
+
94
+ .uni-indexed-list__item-container {
95
+ padding-left: 15px;
96
+ flex: 1;
97
+ position: relative;
98
+ /* #ifndef APP-NVUE */
99
+ display: flex;
100
+ box-sizing: border-box;
101
+ /* #endif */
102
+ flex-direction: row;
103
+ justify-content: space-between;
104
+ align-items: center;
105
+ }
106
+
107
+ .uni-indexed-list__item-border {
108
+ flex: 1;
109
+ position: relative;
110
+ /* #ifndef APP-NVUE */
111
+ display: flex;
112
+ box-sizing: border-box;
113
+ /* #endif */
114
+ flex-direction: row;
115
+ justify-content: space-between;
116
+ align-items: center;
117
+ height: 50px;
118
+ padding: 15px;
119
+ padding-left: 0;
120
+ border-bottom-style: solid;
121
+ border-bottom-width: 1px;
122
+ border-bottom-color: #e5e5e5;
123
+ }
124
+
125
+ .uni-indexed-list__item-border--last {
126
+ border-bottom-width: 0px;
127
+ }
128
+
129
+ .uni-indexed-list__item-content {
130
+ flex: 1;
131
+ font-size: 14px;
132
+ }
133
+
134
+ .uni-indexed-list {
135
+ /* #ifndef APP-NVUE */
136
+ display: flex;
137
+ /* #endif */
138
+ flex-direction: row;
139
+ }
140
+
141
+ .uni-indexed-list__title-wrapper {
142
+ /* #ifndef APP-NVUE */
143
+ display: flex;
144
+ width: 100%;
145
+ /* #endif */
146
+ background-color: #f7f7f7;
147
+ }
148
+
149
+ .uni-indexed-list__title {
150
+ padding: 6px 12px;
151
+ line-height: 24px;
152
+ font-size: 12px;
153
+ }
154
+ </style>
@@ -0,0 +1,376 @@
1
+ <template>
2
+ <view class="uni-indexed-list" ref="list" id="list">
3
+ <!-- #ifdef APP-NVUE -->
4
+ <list class="uni-indexed-list__scroll" scrollable="true" show-scrollbar="false">
5
+ <cell v-for="(list, idx) in lists" :key="idx" :ref="'uni-indexed-list-' + idx">
6
+ <!-- #endif -->
7
+ <!-- #ifndef APP-NVUE -->
8
+ <scroll-view :scroll-into-view="scrollViewId" class="uni-indexed-list__scroll" scroll-y>
9
+ <view v-for="(list, idx) in lists" :key="idx" :id="'uni-indexed-list-' + idx">
10
+ <!-- #endif -->
11
+ <cv-indexed-list-item
12
+ :list="list"
13
+ :loaded="loaded"
14
+ :idx="idx"
15
+ :showSelect="showSelect"
16
+ @itemClick="onClick"
17
+ ></cv-indexed-list-item>
18
+ <!-- #ifndef APP-NVUE -->
19
+ </view>
20
+ </scroll-view>
21
+ <!-- #endif -->
22
+ <!-- #ifdef APP-NVUE -->
23
+ </cell>
24
+ </list>
25
+ <!-- #endif -->
26
+ <view
27
+ :class="touchmove ? 'uni-indexed-list__menu--active' : ''"
28
+ @touchstart="touchStart"
29
+ @touchmove.stop.prevent="touchMove"
30
+ @touchend="touchEnd"
31
+ class="uni-indexed-list__menu"
32
+ >
33
+ <view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item">
34
+ <text class="uni-indexed-list__menu-text" :class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">
35
+ {{ list.value }}
36
+ </text>
37
+ </view>
38
+ </view>
39
+ <view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
40
+ <text class="uni-indexed-list__alert">{{ lists[touchmoveIndex] }}</text>
41
+ </view>
42
+ </view>
43
+ </template>
44
+ <script>
45
+ import cvIcon2 from '../cv-icon2/cv-icon2.vue';
46
+ import uniIndexedListItem from './cv-data-indexed-list-item.vue';
47
+ import clientdb from './clientdb.js';
48
+ // #ifdef APP-NVUE
49
+ const dom = weex.requireModule('dom');
50
+ // #endif
51
+ // #ifdef APP-PLUS
52
+ function throttle(func, delay) {
53
+ var prev = Date.now();
54
+ return function () {
55
+ var context = this;
56
+ var args = arguments;
57
+ var now = Date.now();
58
+ if (now - prev >= delay) {
59
+ func.apply(context, args);
60
+ prev = Date.now();
61
+ }
62
+ };
63
+ }
64
+
65
+ function touchMove(e) {
66
+ let pageY = e.touches[0].pageY;
67
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
68
+ if (this.touchmoveIndex === index) {
69
+ return false;
70
+ }
71
+ let item = this.lists[index];
72
+ if (item) {
73
+ // #ifndef APP-NVUE
74
+ this.scrollViewId = 'uni-indexed-list-' + index;
75
+ this.touchmoveIndex = index;
76
+ // #endif
77
+ // #ifdef APP-NVUE
78
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
79
+ animated: false
80
+ });
81
+ this.touchmoveIndex = index;
82
+ // #endif
83
+ }
84
+ }
85
+ const throttleTouchMove = throttle(touchMove, 40);
86
+ // #endif
87
+
88
+ /**
89
+ * IndexedList 索引列表
90
+ * @description 用于展示索引列表
91
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=375
92
+ * @property {Boolean} showSelect = [true|false] 展示模式
93
+ * @value true 展示模式
94
+ * @value false 选择模式
95
+ * @property {Object} options 索引列表需要的数据对象
96
+ * @property {String|DBCollectionString} collection 表名
97
+ * @property {String|ClientDBActionString} action 云端执行数据库查询的前或后,触发某个action函数操作,进行预处理或后处理
98
+ * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
99
+ * @property {String} orderby 排序字段及正序倒叙设置
100
+ * @property {String|JQLString} where 查询条件
101
+ * @event {Function} click 点击列表事件 ,返回当前选择项的事件对象
102
+ * @example <cv-indexed-list options="" showSelect="false" @click=""></cv-indexed-list>
103
+ */
104
+ export default {
105
+ name: 'cvDataIndexedList',
106
+ mixins: [clientdb],
107
+ components: {
108
+ cvIcon2,
109
+ uniIndexedListItem
110
+ },
111
+ props: {
112
+ options: {
113
+ type: Array,
114
+ default() {
115
+ return [];
116
+ }
117
+ },
118
+ localdata: {
119
+ type: Array,
120
+ default() {
121
+ return [];
122
+ }
123
+ },
124
+ showSelect: {
125
+ type: Boolean,
126
+ default: false
127
+ }
128
+ },
129
+ data() {
130
+ return {
131
+ lists: [],
132
+ winHeight: 0,
133
+ itemHeight: 0,
134
+ winOffsetY: 0,
135
+ touchmove: false,
136
+ touchmoveIndex: -1,
137
+ scrollViewId: '',
138
+ touchmoveTimeout: '',
139
+ loaded: false
140
+ };
141
+ },
142
+ watch: {
143
+ options: {
144
+ handler: function () {
145
+ this.setList();
146
+ },
147
+ deep: true
148
+ }
149
+ },
150
+ mounted() {
151
+ if (this.localdata.length || this.options.length) {
152
+ setTimeout(() => {
153
+ this.setList();
154
+ }, 50);
155
+ setTimeout(() => {
156
+ this.loaded = true;
157
+ }, 300);
158
+ } else if (this.collection) {
159
+ if (!this.manual) {
160
+ this._execLoadData((data) => {
161
+ this.lists = this.groupData(data);
162
+ });
163
+ }
164
+ }
165
+ },
166
+ methods: {
167
+ groupData(data) {
168
+ let groups = {};
169
+ for (let i = 0; i < data.length; i++) {
170
+ let item = data[i];
171
+ let group = item.group;
172
+ if (!groups[group]) {
173
+ groups[group] = {
174
+ title: group,
175
+ value: group,
176
+ itemIndex: i,
177
+ items: []
178
+ };
179
+ }
180
+ groups[group].items.push(item);
181
+ }
182
+ let result = [];
183
+ for (let g in groups) {
184
+ let group = groups[g];
185
+ let items = group.items;
186
+ for (let j = 0; j < items.length; j++) {
187
+ items[j].itemIndex = j;
188
+ }
189
+ result.push(group);
190
+ }
191
+ return result;
192
+ },
193
+ setList(data) {
194
+ let index = 0;
195
+ this.lists = [];
196
+ this.options.forEach((value, index) => {
197
+ if (value.data.length === 0) {
198
+ return;
199
+ }
200
+ let indexBefore = index;
201
+ let items = value.data.map((item) => {
202
+ let obj = {};
203
+ obj['value'] = value.letter;
204
+ obj['text'] = item;
205
+ obj['itemIndex'] = index;
206
+ index++;
207
+ obj.checked = item.checked ? item.checked : false;
208
+ return obj;
209
+ });
210
+ this.lists.push({
211
+ title: value.letter,
212
+ value: value.letter,
213
+ items: items,
214
+ itemIndex: indexBefore
215
+ });
216
+ });
217
+ // #ifndef APP-NVUE
218
+ uni
219
+ .createSelectorQuery()
220
+ .in(this)
221
+ .select('#list')
222
+ .boundingClientRect()
223
+ .exec((ret) => {
224
+ this.winOffsetY = ret[0].top;
225
+ this.winHeight = ret[0].height;
226
+ this.itemHeight = this.winHeight / this.lists.length;
227
+ });
228
+ // #endif
229
+ // #ifdef APP-NVUE
230
+ dom.getComponentRect(this.$refs['list'], (res) => {
231
+ this.winOffsetY = res.size.top;
232
+ this.winHeight = res.size.height;
233
+ this.itemHeight = this.winHeight / this.lists.length;
234
+ });
235
+ // #endif
236
+ },
237
+ touchStart(e) {
238
+ this.touchmove = true;
239
+ let pageY = e.touches[0].pageY;
240
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
241
+ let item = this.lists[index];
242
+ if (item) {
243
+ this.scrollViewId = 'uni-indexed-list-' + index;
244
+ this.touchmoveIndex = index;
245
+ // #ifdef APP-NVUE
246
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
247
+ animated: false
248
+ });
249
+ // #endif
250
+ }
251
+ },
252
+ touchMove(e) {
253
+ // #ifndef APP-PLUS
254
+ let pageY = e.touches[0].pageY;
255
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
256
+ if (this.touchmoveIndex === index) {
257
+ return false;
258
+ }
259
+ let item = this.lists[index];
260
+ if (item) {
261
+ this.scrollViewId = 'uni-indexed-list-' + index;
262
+ this.touchmoveIndex = index;
263
+ }
264
+ // #endif
265
+ // #ifdef APP-PLUS
266
+ throttleTouchMove.call(this, e);
267
+ // #endif
268
+ },
269
+ touchEnd() {
270
+ this.touchmove = false;
271
+ this.touchmoveIndex = -1;
272
+ },
273
+ onClick(e) {
274
+ let { idx, index } = e;
275
+ let obj = {};
276
+ for (let key in this.lists[idx].items[index]) {
277
+ obj[key] = this.lists[idx].items[index][key];
278
+ }
279
+ let select = [];
280
+ if (this.showSelect) {
281
+ this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked;
282
+ this.lists.forEach((value, idx) => {
283
+ value.items.forEach((item, index) => {
284
+ if (item.checked) {
285
+ let obj = {};
286
+ for (let key in this.lists[idx].items[index]) {
287
+ obj[key] = this.lists[idx].items[index][key];
288
+ }
289
+ select.push(obj);
290
+ }
291
+ });
292
+ });
293
+ }
294
+ this.$emit('click', {
295
+ item: obj,
296
+ select: select
297
+ });
298
+ }
299
+ }
300
+ };
301
+ </script>
302
+ <style scoped>
303
+ .uni-indexed-list {
304
+ position: absolute;
305
+ left: 0;
306
+ top: 0;
307
+ right: 0;
308
+ bottom: 0;
309
+ /* #ifndef APP-NVUE */
310
+ display: flex;
311
+ /* #endif */
312
+ flex-direction: row;
313
+ }
314
+
315
+ .uni-indexed-list__scroll {
316
+ flex: 1;
317
+ }
318
+
319
+ .uni-indexed-list__menu {
320
+ width: 24px;
321
+ background-color: lightgrey;
322
+ /* #ifndef APP-NVUE */
323
+ display: flex;
324
+ /* #endif */
325
+ flex-direction: column;
326
+ }
327
+
328
+ .uni-indexed-list__menu-item {
329
+ /* #ifndef APP-NVUE */
330
+ display: flex;
331
+ /* #endif */
332
+ flex: 1;
333
+ align-items: center;
334
+ justify-content: center;
335
+ }
336
+
337
+ .uni-indexed-list__menu-text {
338
+ line-height: 20px;
339
+ font-size: 12px;
340
+ text-align: center;
341
+ color: #aaa;
342
+ }
343
+
344
+ .uni-indexed-list__menu--active {
345
+ background-color: #c8c8c8;
346
+ }
347
+
348
+ .uni-indexed-list__menu-text--active {
349
+ color: #007aff;
350
+ }
351
+
352
+ .uni-indexed-list__alert-wrapper {
353
+ position: absolute;
354
+ left: 0;
355
+ top: 0;
356
+ right: 0;
357
+ bottom: 0;
358
+ /* #ifndef APP-NVUE */
359
+ display: flex;
360
+ /* #endif */
361
+ flex-direction: row;
362
+ align-items: center;
363
+ justify-content: center;
364
+ }
365
+
366
+ .uni-indexed-list__alert {
367
+ width: 80px;
368
+ height: 80px;
369
+ border-radius: 80px;
370
+ text-align: center;
371
+ line-height: 80px;
372
+ font-size: 35px;
373
+ color: #fff;
374
+ background-color: rgba(0, 0, 0, 0.5);
375
+ }
376
+ </style>