@netang/quasar 0.0.100 → 0.0.102

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 (164) hide show
  1. package/.editorconfig +12 -0
  2. package/LICENSE +21 -21
  3. package/README.md +11 -11
  4. package/_docs/docs/.vuepress/client.js +8 -8
  5. package/_docs/docs/.vuepress/config.js +40 -40
  6. package/_docs/docs/.vuepress/configs/index.js +2 -2
  7. package/_docs/docs/.vuepress/configs/navbar/index.js +1 -1
  8. package/_docs/docs/.vuepress/configs/navbar/zh.js +16 -16
  9. package/_docs/docs/.vuepress/configs/sidebar/index.js +1 -1
  10. package/_docs/docs/.vuepress/configs/sidebar/zh.js +75 -75
  11. package/_docs/docs/.vuepress/public/css/index.css +3 -3
  12. package/_docs/docs/.vuepress/styles/index.scss +3 -3
  13. package/_docs/docs/components/column-title.md +25 -25
  14. package/_docs/docs/components/data.md +66 -66
  15. package/_docs/docs/components/dialog.md +59 -59
  16. package/_docs/docs/components/dragger.md +26 -26
  17. package/_docs/docs/components/editor-code.md +16 -16
  18. package/_docs/docs/components/empty.md +13 -13
  19. package/_docs/docs/components/field-date.md +16 -16
  20. package/_docs/docs/components/field-text.md +57 -57
  21. package/_docs/docs/components/field-tree.md +21 -21
  22. package/_docs/docs/components/img.md +25 -25
  23. package/_docs/docs/components/input-number.md +21 -21
  24. package/_docs/docs/components/list-menu-item.md +21 -21
  25. package/_docs/docs/components/list-menu.md +21 -21
  26. package/_docs/docs/components/power-page.md +21 -21
  27. package/_docs/docs/components/price.md +21 -21
  28. package/_docs/docs/components/render.md +12 -12
  29. package/_docs/docs/components/search-item.md +10 -10
  30. package/_docs/docs/components/search.md +12 -12
  31. package/_docs/docs/components/select.md +11 -11
  32. package/_docs/docs/components/splitter.md +15 -15
  33. package/_docs/docs/components/table-column-fixed.md +20 -20
  34. package/_docs/docs/components/table-pagination.md +20 -20
  35. package/_docs/docs/components/table-splitter.md +20 -20
  36. package/_docs/docs/components/table-summary.md +20 -20
  37. package/_docs/docs/components/table.md +25 -25
  38. package/_docs/docs/components/thumbnail.md +18 -18
  39. package/_docs/docs/components/toolbar.md +9 -9
  40. package/_docs/docs/components/uploader-query.md +19 -19
  41. package/_docs/docs/components/uploader.md +16 -16
  42. package/_docs/docs/components/value-format.md +26 -26
  43. package/_docs/docs/index.md +1 -1
  44. package/_docs/docs/utils/alert.md +26 -26
  45. package/_docs/docs/utils/area.md +112 -112
  46. package/_docs/docs/utils/arr.md +80 -80
  47. package/_docs/docs/utils/auth.md +101 -101
  48. package/_docs/docs/utils/bus.md +18 -18
  49. package/_docs/docs/utils/confirm.md +31 -31
  50. package/_docs/docs/utils/copy.md +22 -22
  51. package/_docs/docs/utils/dialog.md +98 -98
  52. package/_docs/docs/utils/dict.md +50 -50
  53. package/_docs/docs/utils/dictOptions.md +27 -27
  54. package/_docs/docs/utils/form.md +33 -33
  55. package/_docs/docs/utils/getData.md +60 -60
  56. package/_docs/docs/utils/getFile.md +21 -21
  57. package/_docs/docs/utils/getImage.md +33 -33
  58. package/_docs/docs/utils/getTime.md +51 -51
  59. package/_docs/docs/utils/index.md +1 -1
  60. package/_docs/docs/utils/loading.md +18 -18
  61. package/_docs/docs/utils/notify.md +29 -29
  62. package/_docs/docs/utils/power.md +353 -353
  63. package/_docs/docs/utils/previewImage.md +11 -11
  64. package/_docs/docs/utils/price.md +45 -45
  65. package/_docs/docs/utils/rule.md +30 -30
  66. package/_docs/docs/utils/ruleValid.md +31 -31
  67. package/_docs/docs/utils/symbols.md +30 -30
  68. package/_docs/docs/utils/table.md +194 -194
  69. package/_docs/docs/utils/timestamp.md +27 -27
  70. package/_docs/docs/utils/toast.md +27 -27
  71. package/_docs/docs/utils/tree.md +174 -174
  72. package/_docs/docs/utils/uploader.md +29 -29
  73. package/_docs/package.json +11 -11
  74. package/components/column-title/index.vue +37 -37
  75. package/components/data/index.vue +20 -20
  76. package/components/dialog/index.vue +372 -372
  77. package/components/dragger/index.vue +203 -203
  78. package/components/drawer/index.vue +303 -303
  79. package/components/editor-code/index.vue +289 -289
  80. package/components/empty/index.vue +71 -71
  81. package/components/field-date/index.vue +850 -850
  82. package/components/field-date/methods.js +100 -100
  83. package/components/field-table/index.vue +1222 -1195
  84. package/components/field-text/index.vue +165 -165
  85. package/components/field-tree/index.vue +739 -659
  86. package/components/img/index.vue +202 -202
  87. package/components/input-number/index.vue +546 -546
  88. package/components/list-menu/index.vue +149 -149
  89. package/components/list-menu-item/index.vue +79 -79
  90. package/components/power-page/index.vue +92 -92
  91. package/components/price/index.vue +188 -188
  92. package/components/private/components/index.js +11 -11
  93. package/components/private/components/move-to-tree/index.vue +154 -154
  94. package/components/private/edit-power-data/index.vue +816 -816
  95. package/components/private/table-visible-columns-button/index.vue +109 -109
  96. package/components/render/index.vue +150 -150
  97. package/components/search/index.vue +222 -222
  98. package/components/search-item/index.vue +210 -210
  99. package/components/select/index.vue +177 -177
  100. package/components/splitter/index.vue +415 -415
  101. package/components/table/index.vue +456 -456
  102. package/components/table-column-fixed/index.vue +112 -112
  103. package/components/table-pagination/index.vue +192 -192
  104. package/components/table-splitter/index.vue +360 -360
  105. package/components/table-summary/index.vue +110 -110
  106. package/components/thumbnail/index.vue +72 -72
  107. package/components/toolbar/container.vue +31 -31
  108. package/components/toolbar/index.vue +136 -136
  109. package/components/uploader/index.vue +158 -158
  110. package/components/uploader-query/index.vue +758 -758
  111. package/components/value-format/index.vue +274 -274
  112. package/configs/area3.js +1 -1
  113. package/docs/css/index.css +3 -3
  114. package/package.json +24 -24
  115. package/sass/common.scss +174 -174
  116. package/sass/index.scss +14 -14
  117. package/sass/line.scss +39 -39
  118. package/sass/quasar/btn.scss +46 -46
  119. package/sass/quasar/common.scss +3 -3
  120. package/sass/quasar/dialog.scss +7 -7
  121. package/sass/quasar/drawer.scss +6 -6
  122. package/sass/quasar/field.scss +243 -243
  123. package/sass/quasar/loading.scss +6 -6
  124. package/sass/quasar/menu.scss +8 -8
  125. package/sass/quasar/table.scss +150 -150
  126. package/sass/quasar/toolbar.scss +22 -22
  127. package/store/index.js +29 -29
  128. package/utils/$auth.js +127 -127
  129. package/utils/$form.js +56 -56
  130. package/utils/$power.js +1215 -1215
  131. package/utils/$rule.js +13 -13
  132. package/utils/$ruleValid.js +10 -10
  133. package/utils/$table.js +999 -999
  134. package/utils/$tree.js +713 -713
  135. package/utils/alert.js +12 -12
  136. package/utils/area.js +400 -400
  137. package/utils/arr.js +51 -51
  138. package/utils/bus.js +6 -6
  139. package/utils/config.js +52 -52
  140. package/utils/confirm.js +11 -11
  141. package/utils/copy.js +30 -30
  142. package/utils/dialog.js +36 -36
  143. package/utils/dict.js +21 -21
  144. package/utils/dictOptions.js +28 -28
  145. package/utils/getData.js +73 -73
  146. package/utils/getFile.js +40 -40
  147. package/utils/getImage.js +153 -153
  148. package/utils/getTime.js +106 -106
  149. package/utils/index.js +61 -61
  150. package/utils/loading.js +15 -15
  151. package/utils/notify.js +13 -13
  152. package/utils/previewImage.js +10 -10
  153. package/utils/price.js +18 -18
  154. package/utils/symbols.js +18 -18
  155. package/utils/timestamp.js +18 -18
  156. package/utils/toast.js +13 -13
  157. package/utils/uploader/aliyun.js +6 -6
  158. package/utils/uploader/local.js +8 -8
  159. package/utils/uploader/qiniu.js +321 -321
  160. package/utils/uploader.js +1059 -1059
  161. package/utils/useAuth.js +30 -30
  162. package/utils/useRouter.js +47 -47
  163. package/utils/useSearch.js +496 -496
  164. package/utils/useUploader.js +53 -53
@@ -1,303 +1,303 @@
1
- <template>
2
- <q-drawer
3
- v-model="currentModelValue"
4
- :side="side"
5
- :breakpoint="breakpoint"
6
- :width="currentWidth"
7
- v-bind="$attrs"
8
- >
9
- <!-- 插槽 -->
10
- <slot />
11
-
12
- <!-- 拖拽手柄 -->
13
- <div
14
- class="n-drawer__drag-handle"
15
- :class="`n-drawer__drag-handle--${side}`"
16
- v-touch-pan.horizontal.prevent.mouse.preserveCursor="onTouchPan"
17
- v-if="! $q.platform.is.mobile && drag"
18
- ></div>
19
- </q-drawer>
20
- </template>
21
-
22
- <script>
23
- import { ref, inject, nextTick, watch } from 'vue'
24
- import { useQuasar } from 'quasar'
25
-
26
- import $n_isNil from 'lodash/isNil'
27
-
28
- import $n_router from '@netang/utils/vue/router'
29
-
30
- import $n_storage from '@netang/utils/storage'
31
- import $n_sleep from '@netang/utils/sleep'
32
- import $n_percentValue from '@netang/utils/percentValue'
33
- import $n_pxValue from '@netang/utils/pxValue'
34
-
35
- import { layoutKey, emptyRenderFn } from 'quasar/src/utils/private/symbols.js'
36
-
37
- import { NPowerKey } from '../../utils/symbols'
38
-
39
- export default {
40
-
41
- /**
42
- * 标识
43
- */
44
- name: 'NDrawer',
45
-
46
- /**
47
- * 声明属性
48
- */
49
- props: {
50
- // 值
51
- modelValue: Boolean,
52
- // 位置
53
- side: {
54
- type: String,
55
- default: 'left',
56
- validator: v => [ 'left', 'right' ].includes(v)
57
- },
58
- // 宽度
59
- width: {
60
- type: Number,
61
- default: 300
62
- },
63
- breakpoint: {
64
- type: Number,
65
- default: 1000,
66
- },
67
-
68
- // 【自定义属性】
69
- // --------------------------------------------------
70
- // 手机端宽度(px / %)
71
- mobileWidth: {
72
- type: [String, Number],
73
- default: '80%',
74
- },
75
- // 最小宽度
76
- minWidth: {
77
- type: Number,
78
- default: 100,
79
- },
80
- // 最大宽度
81
- maxWidth: Number,
82
- // 是否可拖拽
83
- drag: Boolean,
84
- // 是否拖拽折叠
85
- // dragCollapse: Boolean,
86
- // 折叠宽度
87
- // collapseWidth: {
88
- // type: Number,
89
- // default: 80,
90
- // },
91
- // 缓存名
92
- cache: [Boolean, String],
93
- },
94
-
95
- /**
96
- * 声明事件
97
- */
98
- emits: [
99
- 'update:modelValue',
100
- ],
101
-
102
- /**
103
- * 组合式
104
- */
105
- setup(props, { emit }) {
106
-
107
- // ==========【数据】============================================================================================
108
-
109
- // 获取 quasar 注入
110
- const $quasarLayout = inject(layoutKey, emptyRenderFn)
111
- if ($quasarLayout === emptyRenderFn) {
112
- console.error('NDrawer needs to be child of QLayout')
113
- return emptyRenderFn
114
- }
115
-
116
- // quasar 对象
117
- const $q = useQuasar()
118
-
119
- // 获取权限注入数据
120
- const $power = inject(NPowerKey)
121
-
122
- // 是否显示
123
- let currentModelValue
124
- if ($power) {
125
- currentModelValue = $power[`${props.side}Drawer`].modelValue
126
- if ($q.screen.width < props.breakpoint) {
127
- currentModelValue.value = false
128
- emit('update:modelValue', false)
129
- } else {
130
- currentModelValue.value = props.modelValue
131
- }
132
-
133
- } else {
134
- currentModelValue = ref(props.modelValue)
135
- }
136
-
137
- // 创建睡眠实例
138
- const sleep = $n_sleep()
139
-
140
- // 缓存名
141
- let cacheName = ''
142
-
143
- // 获取原始宽度
144
- let originalWidth = props.width
145
-
146
- // 如果是手机端
147
- if ($q.platform.is.mobile) {
148
-
149
- // 获取手机端百分比值
150
- let res = $n_percentValue(props.mobileWidth, true)
151
-
152
- // 如果是百分比值
153
- if (! $n_isNil(res)) {
154
- // 原始尺寸 = 屏幕宽度 * 百分比
155
- if (res) {
156
- originalWidth = $q.screen.width * res
157
- }
158
-
159
- } else {
160
- // 原始尺寸 = 屏幕宽度像素
161
- res = $n_pxValue(props.mobileWidth)
162
- if (res) {
163
- originalWidth = res
164
- }
165
- }
166
-
167
- // 否则如果开启拖拽 && 开启缓存
168
- } else if (props.drag && props.cache) {
169
-
170
- // 设置缓存名
171
- cacheName = `drawer:${props.side}:${props.cache === true ? ($power && $power.routePath ? $power.routePath : $n_router.getRoute('path')) : props.cache}`
172
-
173
- // 从缓存获取宽度
174
- const cache = $n_storage.get(cacheName)
175
- if (cache) {
176
- originalWidth = cache
177
- }
178
- }
179
-
180
- // 当前宽度
181
- const currentWidth = ref(originalWidth)
182
-
183
- // 下次 DOM 更新
184
- nextTick(function() {
185
- if (currentModelValue.value && $quasarLayout.totalWidth.value < props.breakpoint) {
186
- currentModelValue.value = false
187
- }
188
- })
189
-
190
- // ==========【监听数据】==========================================================================================
191
-
192
- /**
193
- * 监听声明值
194
- */
195
- watch(()=>props.modelValue, function (val) {
196
- currentModelValue.value = val
197
- })
198
-
199
- /**
200
- * 监听当前值
201
- */
202
- watch(currentModelValue, function (val) {
203
- emit('update:modelValue', val)
204
- })
205
-
206
- // ==========【方法】=============================================================================================
207
-
208
- /**
209
- * 拖动事件
210
- */
211
- let initialWidth
212
- function onTouchPan({ isFirst, offset: { x } }) {
213
-
214
- // 设置初始宽度
215
- if (isFirst === true) {
216
- initialWidth = currentWidth.value
217
- }
218
-
219
- // 获取拖拽宽度
220
- let dragWidth = initialWidth + (props.side === 'left' ? + x : - x)
221
- let newWidth = dragWidth
222
-
223
- // 如果宽度 < 最小宽度
224
- if (props.minWidth && newWidth < props.minWidth) {
225
- newWidth = props.minWidth
226
- }
227
-
228
- // 如果宽度 > 最大宽度
229
- if (props.maxWidth && newWidth > props.maxWidth) {
230
- newWidth = props.maxWidth
231
- }
232
-
233
- // if (
234
- // // 如果显示
235
- // currentModelValue.value
236
- // // 如果开启折叠
237
- // && props.dragCollapse
238
- // // 如果有最小宽度
239
- // && props.minWidth
240
- // ) {
241
- // const collapseWidth = props.collapseWidth < props.minWidth ? props.collapseWidth : props.minWidth - 10
242
- //
243
- // // 如果 拖拽宽度 < 折叠宽度
244
- // if (dragWidth < collapseWidth) {
245
- // currentModelValue.value = false
246
- // }
247
- // }
248
-
249
- // 设置当前宽度
250
- currentWidth.value = newWidth
251
-
252
- // 如果开启缓存
253
- if (props.drag && props.cache && cacheName) {
254
-
255
- // 延迟执行
256
- sleep(500)
257
- .then(function () {
258
- // 设置缓存(永久缓存)
259
- $n_storage.set(cacheName, newWidth, 0)
260
- })
261
- }
262
- }
263
-
264
- // ==========【返回】=============================================================================================
265
-
266
- return {
267
- // 是否显示
268
- currentModelValue,
269
- // 当前宽度
270
- currentWidth,
271
-
272
- // 拖动事件
273
- onTouchPan,
274
- }
275
- },
276
- }
277
- </script>
278
-
279
- <style lang="scss" scoped>
280
- .n-drawer {
281
- // 拖拽手柄
282
- &__drag-handle {
283
- position: absolute;
284
- top: 0;
285
- bottom: 0;
286
- width: 10px;
287
- cursor: e-resize;
288
- user-select: none;
289
- z-index: 10;
290
- right: 0;
291
-
292
- // 左边侧滑菜单
293
- &--left {
294
- right: -5px;
295
- }
296
-
297
- // 右边侧滑菜单
298
- &--right {
299
- left: -5px;
300
- }
301
- }
302
- }
303
- </style>
1
+ <template>
2
+ <q-drawer
3
+ v-model="currentModelValue"
4
+ :side="side"
5
+ :breakpoint="breakpoint"
6
+ :width="currentWidth"
7
+ v-bind="$attrs"
8
+ >
9
+ <!-- 插槽 -->
10
+ <slot />
11
+
12
+ <!-- 拖拽手柄 -->
13
+ <div
14
+ class="n-drawer__drag-handle"
15
+ :class="`n-drawer__drag-handle--${side}`"
16
+ v-touch-pan.horizontal.prevent.mouse.preserveCursor="onTouchPan"
17
+ v-if="! $q.platform.is.mobile && drag"
18
+ ></div>
19
+ </q-drawer>
20
+ </template>
21
+
22
+ <script>
23
+ import { ref, inject, nextTick, watch } from 'vue'
24
+ import { useQuasar } from 'quasar'
25
+
26
+ import $n_isNil from 'lodash/isNil'
27
+
28
+ import $n_router from '@netang/utils/vue/router'
29
+
30
+ import $n_storage from '@netang/utils/storage'
31
+ import $n_sleep from '@netang/utils/sleep'
32
+ import $n_percentValue from '@netang/utils/percentValue'
33
+ import $n_pxValue from '@netang/utils/pxValue'
34
+
35
+ import { layoutKey, emptyRenderFn } from 'quasar/src/utils/private/symbols.js'
36
+
37
+ import { NPowerKey } from '../../utils/symbols'
38
+
39
+ export default {
40
+
41
+ /**
42
+ * 标识
43
+ */
44
+ name: 'NDrawer',
45
+
46
+ /**
47
+ * 声明属性
48
+ */
49
+ props: {
50
+ // 值
51
+ modelValue: Boolean,
52
+ // 位置
53
+ side: {
54
+ type: String,
55
+ default: 'left',
56
+ validator: v => [ 'left', 'right' ].includes(v)
57
+ },
58
+ // 宽度
59
+ width: {
60
+ type: Number,
61
+ default: 300
62
+ },
63
+ breakpoint: {
64
+ type: Number,
65
+ default: 1000,
66
+ },
67
+
68
+ // 【自定义属性】
69
+ // --------------------------------------------------
70
+ // 手机端宽度(px / %)
71
+ mobileWidth: {
72
+ type: [String, Number],
73
+ default: '80%',
74
+ },
75
+ // 最小宽度
76
+ minWidth: {
77
+ type: Number,
78
+ default: 100,
79
+ },
80
+ // 最大宽度
81
+ maxWidth: Number,
82
+ // 是否可拖拽
83
+ drag: Boolean,
84
+ // 是否拖拽折叠
85
+ // dragCollapse: Boolean,
86
+ // 折叠宽度
87
+ // collapseWidth: {
88
+ // type: Number,
89
+ // default: 80,
90
+ // },
91
+ // 缓存名
92
+ cache: [Boolean, String],
93
+ },
94
+
95
+ /**
96
+ * 声明事件
97
+ */
98
+ emits: [
99
+ 'update:modelValue',
100
+ ],
101
+
102
+ /**
103
+ * 组合式
104
+ */
105
+ setup(props, { emit }) {
106
+
107
+ // ==========【数据】============================================================================================
108
+
109
+ // 获取 quasar 注入
110
+ const $quasarLayout = inject(layoutKey, emptyRenderFn)
111
+ if ($quasarLayout === emptyRenderFn) {
112
+ console.error('NDrawer needs to be child of QLayout')
113
+ return emptyRenderFn
114
+ }
115
+
116
+ // quasar 对象
117
+ const $q = useQuasar()
118
+
119
+ // 获取权限注入数据
120
+ const $power = inject(NPowerKey)
121
+
122
+ // 是否显示
123
+ let currentModelValue
124
+ if ($power) {
125
+ currentModelValue = $power[`${props.side}Drawer`].modelValue
126
+ if ($q.screen.width < props.breakpoint) {
127
+ currentModelValue.value = false
128
+ emit('update:modelValue', false)
129
+ } else {
130
+ currentModelValue.value = props.modelValue
131
+ }
132
+
133
+ } else {
134
+ currentModelValue = ref(props.modelValue)
135
+ }
136
+
137
+ // 创建睡眠实例
138
+ const sleep = $n_sleep()
139
+
140
+ // 缓存名
141
+ let cacheName = ''
142
+
143
+ // 获取原始宽度
144
+ let originalWidth = props.width
145
+
146
+ // 如果是手机端
147
+ if ($q.platform.is.mobile) {
148
+
149
+ // 获取手机端百分比值
150
+ let res = $n_percentValue(props.mobileWidth, true)
151
+
152
+ // 如果是百分比值
153
+ if (! $n_isNil(res)) {
154
+ // 原始尺寸 = 屏幕宽度 * 百分比
155
+ if (res) {
156
+ originalWidth = $q.screen.width * res
157
+ }
158
+
159
+ } else {
160
+ // 原始尺寸 = 屏幕宽度像素
161
+ res = $n_pxValue(props.mobileWidth)
162
+ if (res) {
163
+ originalWidth = res
164
+ }
165
+ }
166
+
167
+ // 否则如果开启拖拽 && 开启缓存
168
+ } else if (props.drag && props.cache) {
169
+
170
+ // 设置缓存名
171
+ cacheName = `drawer:${props.side}:${props.cache === true ? ($power && $power.routePath ? $power.routePath : $n_router.getRoute('path')) : props.cache}`
172
+
173
+ // 从缓存获取宽度
174
+ const cache = $n_storage.get(cacheName)
175
+ if (cache) {
176
+ originalWidth = cache
177
+ }
178
+ }
179
+
180
+ // 当前宽度
181
+ const currentWidth = ref(originalWidth)
182
+
183
+ // 下次 DOM 更新
184
+ nextTick(function() {
185
+ if (currentModelValue.value && $quasarLayout.totalWidth.value < props.breakpoint) {
186
+ currentModelValue.value = false
187
+ }
188
+ })
189
+
190
+ // ==========【监听数据】==========================================================================================
191
+
192
+ /**
193
+ * 监听声明值
194
+ */
195
+ watch(()=>props.modelValue, function (val) {
196
+ currentModelValue.value = val
197
+ })
198
+
199
+ /**
200
+ * 监听当前值
201
+ */
202
+ watch(currentModelValue, function (val) {
203
+ emit('update:modelValue', val)
204
+ })
205
+
206
+ // ==========【方法】=============================================================================================
207
+
208
+ /**
209
+ * 拖动事件
210
+ */
211
+ let initialWidth
212
+ function onTouchPan({ isFirst, offset: { x } }) {
213
+
214
+ // 设置初始宽度
215
+ if (isFirst === true) {
216
+ initialWidth = currentWidth.value
217
+ }
218
+
219
+ // 获取拖拽宽度
220
+ let dragWidth = initialWidth + (props.side === 'left' ? + x : - x)
221
+ let newWidth = dragWidth
222
+
223
+ // 如果宽度 < 最小宽度
224
+ if (props.minWidth && newWidth < props.minWidth) {
225
+ newWidth = props.minWidth
226
+ }
227
+
228
+ // 如果宽度 > 最大宽度
229
+ if (props.maxWidth && newWidth > props.maxWidth) {
230
+ newWidth = props.maxWidth
231
+ }
232
+
233
+ // if (
234
+ // // 如果显示
235
+ // currentModelValue.value
236
+ // // 如果开启折叠
237
+ // && props.dragCollapse
238
+ // // 如果有最小宽度
239
+ // && props.minWidth
240
+ // ) {
241
+ // const collapseWidth = props.collapseWidth < props.minWidth ? props.collapseWidth : props.minWidth - 10
242
+ //
243
+ // // 如果 拖拽宽度 < 折叠宽度
244
+ // if (dragWidth < collapseWidth) {
245
+ // currentModelValue.value = false
246
+ // }
247
+ // }
248
+
249
+ // 设置当前宽度
250
+ currentWidth.value = newWidth
251
+
252
+ // 如果开启缓存
253
+ if (props.drag && props.cache && cacheName) {
254
+
255
+ // 延迟执行
256
+ sleep(500)
257
+ .then(function () {
258
+ // 设置缓存(永久缓存)
259
+ $n_storage.set(cacheName, newWidth, 0)
260
+ })
261
+ }
262
+ }
263
+
264
+ // ==========【返回】=============================================================================================
265
+
266
+ return {
267
+ // 是否显示
268
+ currentModelValue,
269
+ // 当前宽度
270
+ currentWidth,
271
+
272
+ // 拖动事件
273
+ onTouchPan,
274
+ }
275
+ },
276
+ }
277
+ </script>
278
+
279
+ <style lang="scss" scoped>
280
+ .n-drawer {
281
+ // 拖拽手柄
282
+ &__drag-handle {
283
+ position: absolute;
284
+ top: 0;
285
+ bottom: 0;
286
+ width: 10px;
287
+ cursor: e-resize;
288
+ user-select: none;
289
+ z-index: 10;
290
+ right: 0;
291
+
292
+ // 左边侧滑菜单
293
+ &--left {
294
+ right: -5px;
295
+ }
296
+
297
+ // 右边侧滑菜单
298
+ &--right {
299
+ left: -5px;
300
+ }
301
+ }
302
+ }
303
+ </style>