sh-view 2.8.11 → 2.8.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh-view",
3
- "version": "2.8.11",
3
+ "version": "2.8.12",
4
4
  "description": "基于vxe-table二次封装,更包含Alert,Badge,Card,CodeEditor,Col,Corner,CountTo,Drawer,Empty,Form,Header,Icon,List,Loading,Modal,Noticebar,Poptip,Progress,PullRefresh,Query,Result,Row,Split,Grid,Table,Tabs,Tag,Toolbar,Tree,Upload,WaterFall,WaterMark等丰富组件库",
5
5
  "main": "packages/index.js",
6
6
  "typings": "types/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "jszip": "^3.10.1",
33
33
  "lunar-typescript": "^1.6.10",
34
34
  "popper.js": "^1.16.1",
35
- "sh-tools": "^2.2.7",
35
+ "sh-tools": "^2.2.10",
36
36
  "tinymce": "^5.10.5",
37
37
  "vue": "^3.3.4",
38
38
  "vue-masonry": "^0.16.0",
@@ -66,7 +66,7 @@ export default defineComponent({
66
66
  maxDate: [String, Number, Date],
67
67
  startDay: { type: [String, Number] },
68
68
  labelFormat: { type: String },
69
- valueFormat: { type: String },
69
+ format: { type: String },
70
70
  editable: { type: Boolean, default: true },
71
71
  festivalMethod: { type: Function },
72
72
  disabledMethod: { type: Function },
@@ -78,7 +78,6 @@ export default defineComponent({
78
78
  transfer: Boolean,
79
79
  // 个性化参数
80
80
  range: Boolean,
81
- rangeFormat: String,
82
81
  autoBlur: { type: Boolean, default: true },
83
82
  separator: { type: String, default: '至' },
84
83
  startPlaceholder: { type: String, default: '起始日期' },
@@ -124,10 +123,9 @@ export default defineComponent({
124
123
  return Object.assign({ transfer: true }, props.pulldown)
125
124
  })
126
125
  const calendarFormat = computed(() => {
127
- if (props.rangeFormat) return props.rangeFormat
128
- else if (props.type === 'month') return 'yyyy-MM'
126
+ if (props.type === 'month') return 'yyyy-MM'
129
127
  else if (props.type === 'year') return 'yyyy'
130
- return props.valueFormat
128
+ return props.format || 'yyyy-MM-dd'
131
129
  })
132
130
  const rangeInputConfig = computed(() => ({ type: 'text', readonly: true }))
133
131
  const startInputConfig = computed(() => {
@@ -53,6 +53,7 @@ export default defineComponent({
53
53
  <style lang="scss">
54
54
  .sh-vxe-form {
55
55
  position: relative;
56
+ width: 100%;
56
57
  &.readonly {
57
58
  .vxe-form {
58
59
  .vxe-input--inner[disabled],
@@ -63,11 +63,11 @@ export default defineComponent({
63
63
  },
64
64
  type: {
65
65
  type: String,
66
- default: 'line' // 'line', 'card'
66
+ default: 'line' // 'line', 'card', 'tab'
67
67
  },
68
68
  size: {
69
69
  type: String,
70
- default: 'default' // 'small', 'default'
70
+ default: 'default' // medium / small / mini
71
71
  },
72
72
  animated: {
73
73
  type: Boolean,
@@ -110,7 +110,9 @@ export default defineComponent({
110
110
  const tabClass = computed(() => {
111
111
  return {
112
112
  'sh-tabs-card': props.type === 'card',
113
+ 'sh-tabs-tab': props.type === 'tab',
113
114
  'sh-tabs-reverse': ['bottom', 'right'].includes(props.placement),
115
+ [`sh-tabs-size-${props.size}`]: true,
114
116
  [isHorizontal.value ? 'sh-tabs-horizontal' : 'sh-tabs-vertical']: true
115
117
  }
116
118
  })
@@ -284,10 +286,25 @@ export default defineComponent({
284
286
  width: 100%;
285
287
  position: relative;
286
288
  display: flex;
289
+ line-height: 2.3em;
290
+ &-size {
291
+ &-default {
292
+ font-size: var(--vxe-font-size);
293
+ }
294
+ &-medium {
295
+ font-size: var(--vxe-font-size-medium);
296
+ }
297
+ &-small {
298
+ font-size: var(--vxe-font-size-small);
299
+ }
300
+ &-mini {
301
+ font-size: var(--vxe-font-size-mini);
302
+ }
303
+ }
287
304
  .sh-tab-close {
288
305
  display: inline-flex;
289
306
  align-items: center;
290
- padding: 0 1px;
307
+ font-size: 1.4em;
291
308
  &:hover {
292
309
  background-color: rgba(0, 0, 0, 0.1);
293
310
  }
@@ -296,12 +313,32 @@ export default defineComponent({
296
313
  width: 100%;
297
314
  flex-wrap: wrap;
298
315
  flex-direction: column;
299
- &.sh-tabs-reverse {
300
- flex-direction: column-reverse;
301
- }
302
316
  .sh-tabs-nav {
303
317
  width: 100%;
304
318
  }
319
+ &.sh-tabs-reverse {
320
+ flex-direction: column-reverse;
321
+ &.sh-tabs-tab {
322
+ .sh-tabs-nav-inner {
323
+ .sh-tab-item {
324
+ border-radius: 0 0 0.7em 0.7em;
325
+ }
326
+ .sh-tab-item-active {
327
+ &:before,
328
+ &:after {
329
+ top: 0;
330
+ bottom: auto;
331
+ }
332
+ &:before {
333
+ background: radial-gradient(circle at 0 100%, transparent 14px, var(--primary-weak-color) 14px);
334
+ }
335
+ &:after {
336
+ background: radial-gradient(circle at 100% 100%, transparent 14px, var(--primary-weak-color) 14px);
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
305
342
  }
306
343
  &-horizontal {
307
344
  flex-wrap: nowrap;
@@ -317,10 +354,30 @@ export default defineComponent({
317
354
  .sh-tabs-nav-prev,
318
355
  .sh-tabs-nav-next {
319
356
  width: 100%;
320
- height: 26px;
357
+ height: 2em;
358
+ }
359
+ &.sh-tabs-tab {
360
+ .sh-tabs-nav-inner {
361
+ .sh-tab-item {
362
+ border-radius: 0.7em 0 0 0.7em !important;
363
+ }
364
+ .sh-tab-item-active {
365
+ &:before,
366
+ &:after {
367
+ display: none;
368
+ }
369
+ }
370
+ }
321
371
  }
322
372
  &.sh-tabs-reverse {
323
373
  flex-direction: row-reverse;
374
+ &.sh-tabs-tab {
375
+ .sh-tabs-nav-inner {
376
+ .sh-tab-item {
377
+ border-radius: 0 0.7em 0.7em 0 !important;
378
+ }
379
+ }
380
+ }
324
381
  }
325
382
  }
326
383
  &-nav {
@@ -337,7 +394,7 @@ export default defineComponent({
337
394
  }
338
395
  &-prev,
339
396
  &-next {
340
- width: 30px;
397
+ width: 2.5em;
341
398
  height: 100%;
342
399
  display: inline-flex;
343
400
  align-items: center;
@@ -364,15 +421,22 @@ export default defineComponent({
364
421
  display: inline-flex;
365
422
  align-items: stretch;
366
423
  cursor: pointer;
367
- line-height: 20px;
368
424
  box-sizing: border-box;
369
- border-bottom: 2px solid transparent;
425
+ position: relative;
370
426
  &:hover {
371
427
  color: var(--vxe-primary-color);
372
428
  }
373
429
  &.sh-tab-item-active {
374
- border-bottom: 2px solid var(--vxe-primary-darken-color);
375
430
  color: var(--vxe-primary-color) !important;
431
+ &:after {
432
+ position: absolute;
433
+ height: 2px;
434
+ background-color: var(--vxe-primary-darken-color);
435
+ width: 100%;
436
+ bottom: 0;
437
+ content: '';
438
+ display: block;
439
+ }
376
440
  }
377
441
  &.sh-tab-item-disabled {
378
442
  cursor: not-allowed;
@@ -381,11 +445,11 @@ export default defineComponent({
381
445
  .sh-tab-icon {
382
446
  display: inline-flex;
383
447
  align-items: center;
384
- padding: 0 2px 0 5px;
448
+ padding: 0 0.2em 0 0.7em;
385
449
  }
386
450
  .sh-tab-label {
387
451
  flex: 1;
388
- padding: 5px;
452
+ padding: 0 0.5em;
389
453
  }
390
454
  }
391
455
  }
@@ -403,6 +467,40 @@ export default defineComponent({
403
467
  background-color: var(--vxe-primary-color);
404
468
  border-color: var(--vxe-primary-color);
405
469
  color: #fff !important;
470
+ &:after {
471
+ display: none;
472
+ }
473
+ }
474
+ }
475
+ }
476
+ &.sh-tabs-tab {
477
+ .sh-tabs-nav-inner {
478
+ .sh-tab-item {
479
+ position: relative;
480
+ border: none;
481
+ border-radius: 0.7em 0.7em 0 0;
482
+ }
483
+ .sh-tab-item-active {
484
+ background-color: var(--primary-weak-color);
485
+ color: var(--vxe-primary-color) !important;
486
+ &:before,
487
+ &:after {
488
+ position: absolute;
489
+ width: 14px;
490
+ height: 14px;
491
+ background-color: var(--primary-weak-color);
492
+ content: '';
493
+ display: inline-block;
494
+ bottom: 0;
495
+ }
496
+ &:before {
497
+ left: -14px;
498
+ background: radial-gradient(circle at 0 0, transparent 14px, var(--primary-weak-color) 14px);
499
+ }
500
+ &:after {
501
+ right: -14px;
502
+ background: radial-gradient(circle at 100% 0, transparent 14px, var(--primary-weak-color) 14px);
503
+ }
406
504
  }
407
505
  }
408
506
  }
@@ -29,20 +29,10 @@ const tableConfigDefault = {
29
29
  showHeader: false,
30
30
  showFooter: false,
31
31
  showOverflow: true,
32
- resizeConfig: {
33
- refreshDelay: 100
34
- },
35
- columnConfig: {
36
- width: 120
37
- },
38
- scrollX: {
39
- enabled: true,
40
- gt: 20
41
- },
42
- scrollY: {
43
- enabled: true,
44
- gt: 20
45
- }
32
+ resizeConfig: { refreshDelay: 100 },
33
+ columnConfig: { width: 120 },
34
+ scrollX: { enabled: true, gt: 20 },
35
+ scrollY: { enabled: true, gt: 20 }
46
36
  }
47
37
  import mixinProps from '../mixin/treeProps'
48
38
  export default defineComponent({
@@ -5,6 +5,7 @@ import VXETablePluginExportPDF from 'vxe-table-plugin-export-pdf'
5
5
  import { jsPDF } from 'jspdf'
6
6
  import XEClipboard from 'xe-clipboard'
7
7
  import ShValidators from 'sh-tools/packages/utils/validate'
8
+ import { utils } from 'sh-tools'
8
9
  import { publicRenders, extraRenders, filterRenders, publicRendersNames } from './render/globalRenders.jsx'
9
10
 
10
11
  let vxeOptions = {
@@ -28,7 +29,7 @@ let vxeOptions = {
28
29
  keepSource: false,
29
30
  minHeight: 30,
30
31
  rowConfig: {
31
- useKey: false,
32
+ useKey: true,
32
33
  keyField: '_XID',
33
34
  isCurrent: true,
34
35
  isHover: true
@@ -207,9 +208,9 @@ VXETable.renderer.mixin(filterRenders)
207
208
 
208
209
  const index = {
209
210
  install(Vue, { vxeOption = {}, vxePdfOption = {}, vxeXlsxOption }) {
210
- let setupOption = Object.assign(vxeOptions, vxeOption)
211
- let xlsxSetUpOption = Object.assign(vxeXlsxOptions, vxeXlsxOption)
212
- let pdfSetUpOption = Object.assign(vxePdfOptions, vxePdfOption)
211
+ let setupOption = utils.merge(vxeOptions, vxeOption)
212
+ let xlsxSetUpOption = utils.merge(vxeXlsxOptions, vxeXlsxOption)
213
+ let pdfSetUpOption = utils.merge(vxePdfOptions, vxePdfOption)
213
214
  VXETable.setup(setupOption)
214
215
  VXETable.use(VXETablePluginExportXLSX, xlsxSetUpOption)
215
216
  VXETable.use(VXETablePluginExportPDF, pdfSetUpOption)
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <span class="vxe-render--inner" :class="{ 'form-render': rform, 'td-render': !rform }">
3
3
  <template v-if="redit || isEditAll">
4
- <sh-date v-model="renderValue" v-bind="rprops" :size="rsize" :disabled-method="vxeDisabledMethod" @change="vxeChangeCallBack"></sh-date>
4
+ <sh-date v-model="renderValue" v-bind="rprops" :size="rsize" :disabled-method="vxeDisabledMethod" @change="vxeChangeCallBack" @clear="vxeBlurCallback"></sh-date>
5
5
  </template>
6
6
  <template v-else>
7
7
  <span v-html="renderText"></span>