@vxe-ui/plugin-render-element 4.4.1 → 4.4.4

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.
@@ -234,9 +234,69 @@ export function defineTableRender (VxeUI: VxeUIExport) {
234
234
  }
235
235
  }
236
236
 
237
- function handleSelectCellValue (cellValue: any, renderOpts: VxeGlobalRendererHandles.RenderTableCellOptions, renderParams: VxeGlobalRendererHandles.RenderCellParams) {
237
+ function handleFormatSelect (renderOpts: VxeGlobalRendererHandles.RenderTableDefaultOptions, renderParams: VxeGlobalRendererHandles.TableCellFormatterParams | VxeGlobalRendererHandles.TableCellCopyMethodParams) {
238
+ const { cellValue } = renderParams
239
+ return handleSelectCellValue(cellValue, renderOpts, renderParams)
240
+ }
241
+
242
+ function handleSetSelectValue (renderOpts: VxeGlobalRendererHandles.RenderTableDefaultOptions, renderParams: VxeGlobalRendererHandles.TableCellFormatterParams | VxeGlobalRendererHandles.TableCellCopyMethodParams) {
243
+ const { row, column, cellValue } = renderParams
244
+ const { field } = column
245
+ if (field) {
246
+ const { options, optionGroups, optionProps = {}, optionGroupProps = {}, props } = renderOpts
247
+ if (isEmptyValue(cellValue)) {
248
+ XEUtils.set(row, field, props && props.multiple ? [] : null)
249
+ return
250
+ }
251
+ const isMultiVal = XEUtils.indexOf(`${cellValue}`, ',') > -1
252
+ const labelProp = optionProps.label || 'label'
253
+ const valueProp = optionProps.value || 'value'
254
+ const labelMpas: Record<string, any> = {}
255
+ if (optionGroups && optionGroups.length) {
256
+ const groupOptions = optionGroupProps.options || 'options'
257
+ for (let i = 0; i < optionGroups.length; i++) {
258
+ const opts = optionGroups[i][groupOptions] || {}
259
+ for (let j = 0; j < opts.length; j++) {
260
+ const item = opts[j]
261
+ if (isMultiVal) {
262
+ labelMpas[item[labelProp]] = item
263
+ /* eslint-disable eqeqeq */
264
+ } else if (item[labelProp] == cellValue) {
265
+ XEUtils.set(row, field, item[valueProp])
266
+ return
267
+ }
268
+ }
269
+ }
270
+ } else {
271
+ if (options) {
272
+ for (let i = 0; i < options.length; i++) {
273
+ const item = options[i]
274
+ if (isMultiVal) {
275
+ labelMpas[item[labelProp]] = item
276
+ /* eslint-disable eqeqeq */
277
+ } else if (item[labelProp] == cellValue) {
278
+ XEUtils.set(row, field, item[valueProp])
279
+ return
280
+ }
281
+ }
282
+ }
283
+ }
284
+ if (isMultiVal) {
285
+ XEUtils.set(row, field, (isMultiVal
286
+ ? cellValue.split(',')
287
+ : [cellValue]).map((label: any) => {
288
+ const item = labelMpas[label]
289
+ return item ? item[valueProp] : label
290
+ }))
291
+ } else {
292
+ XEUtils.set(row, field, cellValue)
293
+ }
294
+ }
295
+ }
296
+
297
+ function handleSelectCellValue (cellValue: any, renderOpts: VxeGlobalRendererHandles.RenderTableCellOptions, renderParams: VxeGlobalRendererHandles.RenderTableCellParams | VxeGlobalRendererHandles.TableCellFormatterParams | VxeGlobalRendererHandles.TableCellCopyMethodParams) {
238
298
  const { options = [], optionGroups, props = {}, optionProps = {}, optionGroupProps = {} } = renderOpts
239
- const { $table, rowid, column } = renderParams
299
+ const { $table, row, column } = renderParams
240
300
  const { filterable, multiple } = props
241
301
  const labelProp = optionProps.label || 'label'
242
302
  const valueProp = optionProps.value || 'value'
@@ -246,6 +306,7 @@ export function defineTableRender (VxeUI: VxeUIExport) {
246
306
  if (filterable) {
247
307
  const { internalData } = $table
248
308
  const { fullAllDataRowIdData } = internalData
309
+ const rowid = (renderParams as any).rowid || $table.getRowid(row)
249
310
  const rest: any = fullAllDataRowIdData[rowid]
250
311
  if (rest) {
251
312
  cellData = rest.cellData
@@ -475,11 +536,18 @@ export function defineTableRender (VxeUI: VxeUIExport) {
475
536
  ]
476
537
  }
477
538
 
539
+ function handleDefaultCellValue (renderOpts: VxeGlobalRendererHandles.RenderTableCellOptions, renderParams: VxeGlobalRendererHandles.RenderTableCellParams) {
540
+ const { row, column } = renderParams
541
+ const cellValue = XEUtils.get(row, column.field)
542
+ return formatText(cellValue)
543
+ }
544
+
478
545
  VxeUI.renderer.mixin({
479
546
  ElAutocomplete: {
480
547
  tableAutoFocus: 'input',
481
548
  renderTableDefault: createEditRender(),
482
549
  renderTableEdit: createEditRender(),
550
+ renderTableCell: handleDefaultCellValue,
483
551
  createTableFilterOptions: defaultFilterOptions,
484
552
  renderTableFilter: createFilterRender(),
485
553
  tableFilterDefaultMethod: defaultExactFilterMethod
@@ -488,6 +556,7 @@ export function defineTableRender (VxeUI: VxeUIExport) {
488
556
  tableAutoFocus: 'input',
489
557
  renderTableDefault: createEditRender(),
490
558
  renderTableEdit: createEditRender(),
559
+ renderTableCell: handleDefaultCellValue,
491
560
  createTableFilterOptions: defaultFilterOptions,
492
561
  renderTableFilter: createFilterRender(),
493
562
  renderTableFloatingFilter: createFloatingFilterRender(),
@@ -497,6 +566,7 @@ export function defineTableRender (VxeUI: VxeUIExport) {
497
566
  tableAutoFocus: 'input',
498
567
  renderTableDefault: createEditRender(),
499
568
  renderTableEdit: createEditRender(),
569
+ renderTableCell: handleDefaultCellValue,
500
570
  createTableFilterOptions: defaultFilterOptions,
501
571
  renderTableFilter: createFilterRender(),
502
572
  renderTableFloatingFilter: createFloatingFilterRender(),
@@ -623,6 +693,9 @@ export function defineTableRender (VxeUI: VxeUIExport) {
623
693
  }))
624
694
  ]
625
695
  },
696
+ tableCellFormatter: handleFormatSelect,
697
+ tableCellCopyMethod: handleFormatSelect,
698
+ tableCellPasteMethod: handleSetSelectValue,
626
699
  tableFilterDefaultMethod (params) {
627
700
  const { option, row, column } = params
628
701
  const { data } = option
@@ -708,11 +781,13 @@ export function defineTableRender (VxeUI: VxeUIExport) {
708
781
  },
709
782
  ElTimeSelect: {
710
783
  tableAutoFocus: 'input',
711
- renderTableEdit: createEditRender()
784
+ renderTableEdit: createEditRender(),
785
+ renderTableCell: handleDefaultCellValue
712
786
  },
713
787
  ElRate: {
714
788
  renderTableDefault: createEditRender(),
715
789
  renderTableEdit: createEditRender(),
790
+ renderTableCell: handleDefaultCellValue,
716
791
  createTableFilterOptions: defaultFilterOptions,
717
792
  renderTableFilter: createFilterRender(),
718
793
  tableFilterDefaultMethod: defaultExactFilterMethod
@@ -720,6 +795,7 @@ export function defineTableRender (VxeUI: VxeUIExport) {
720
795
  ElSwitch: {
721
796
  renderTableDefault: createEditRender(),
722
797
  renderTableEdit: createEditRender(),
798
+ renderTableCell: handleDefaultCellValue,
723
799
  renderTableFilter (renderOpts, params) {
724
800
  const { column } = params
725
801
  const { name, attrs } = renderOpts
@@ -745,6 +821,7 @@ export function defineTableRender (VxeUI: VxeUIExport) {
745
821
  ElSlider: {
746
822
  renderTableDefault: createEditRender(),
747
823
  renderTableEdit: createEditRender(),
824
+ renderTableCell: handleDefaultCellValue,
748
825
  createTableFilterOptions: defaultFilterOptions,
749
826
  renderTableFilter: createFilterRender(),
750
827
  tableFilterDefaultMethod: defaultExactFilterMethod