@vue-ui-kit/ant 1.7.1 → 1.7.3

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.
@@ -34,6 +34,7 @@ interface BtnOptions extends ButtonProps {
34
34
  dynamicClassName?: (p: RenderTableParams) => string;
35
35
  dropdowns?: BtnOptions[];
36
36
  clickEvt?: (p: RenderTableParams) => any;
37
+ hiddenIf?: (p: RenderTableParams) => boolean;
37
38
  }
38
39
 
39
40
  const antDefaultProps = {
@@ -220,121 +221,213 @@ const renderBtn = (btnOpt: BtnOptions, params: RenderTableParams) =>
220
221
  );
221
222
  const renders = {
222
223
  ...Object.fromEntries(Object.keys(componentsMap).map((name) => [name, renderBasic(name)])),
223
- //简单按钮
224
+ // 简单按钮
224
225
  $button: {
225
- renderItemContent(
226
- { props = {}, events = {} }: RenderOptions,
227
- { data, field }: RenderFormParams,
228
- defaultHandler: {
229
- [key: string]: (...args: any[]) => any;
230
- },
231
- ) {
226
+ renderItemContent({ props = {}, events = {} }: RenderOptions, {
227
+ data,
228
+ field,
229
+ }: RenderFormParams, defaultHandler: {
230
+ [key: string]: (...args: any[]) => any
231
+ }) {
232
232
  return (
233
233
  <Button
234
234
  {...omit(props, ['content'])}
235
235
  icon={props.icon ? <Icon icon={props.icon} /> : null}
236
236
  onClick={() => {
237
- events.click?.({ data, field });
237
+ events.click?.({ data, field })
238
238
  if (props.htmlType === 'reset' && defaultHandler?.reset) {
239
- defaultHandler.reset({ data, field });
239
+ if (props.beforeClick && isFunction(props.beforeClick)) {
240
+ props.beforeClick({ data, field }).then((res: void | Recordable) => {
241
+ defaultHandler.reset(res ? { data: res, field } : { data, field })
242
+ })
243
+ }
244
+ else {
245
+ defaultHandler.reset({ data, field })
246
+ }
240
247
  }
241
248
  }}
242
249
  >
243
250
  {props.content}
251
+ {
252
+ props.suffix?.({ data, field }) ?? null
253
+ }
244
254
  </Button>
245
- );
255
+ )
246
256
  },
247
- renderDefault(
248
- { props = {}, events = {} }: RenderOptions,
249
- { row, field }: RenderTableParams,
250
- defaultHandler: {
251
- [key: string]: (...args: any[]) => any;
252
- },
253
- ) {
257
+ renderDefault({ props = {}, events = {} }: RenderOptions, {
258
+ row,
259
+ field,
260
+ }: RenderTableParams, defaultHandler: {
261
+ [key: string]: (...args: any[]) => any
262
+ }) {
254
263
  return (
255
264
  <Button
256
265
  {...omit(props, ['content'])}
257
266
  icon={props.icon ? <Icon icon={props.icon} /> : null}
258
267
  onClick={() => {
259
- events.click?.({ row, field });
268
+ events.click?.({ row, field })
260
269
  if (props.htmlType === 'reset' && defaultHandler?.reset) {
261
- defaultHandler.reset({ row, field });
270
+ if (props.beforeClick && isFunction(props.beforeClick)) {
271
+ defaultHandler?.setLoadings?.(true)
272
+ props.beforeClick({ row, field }).then((res: void | Recordable) => {
273
+ defaultHandler.reset(res ? { row: res, field } : { row, field })
274
+ }).finally(() => {
275
+ defaultHandler?.setLoadings?.(false)
276
+ })
277
+ }
278
+ else {
279
+ defaultHandler.reset({ row, field })
280
+ }
262
281
  }
263
282
  if (props.htmlType === 'pick' && defaultHandler?.pick) {
264
- defaultHandler.pick({ row, field });
283
+ if (props.beforeClick && isFunction(props.beforeClick)) {
284
+ defaultHandler?.setLoadings?.(true)
285
+ props.beforeClick({ row, field }).then((res: void | Recordable) => {
286
+ defaultHandler.pick(res ? { row: res, field } : { row, field })
287
+ }).finally(() => {
288
+ defaultHandler?.setLoadings?.(false)
289
+ })
290
+ }
291
+ else {
292
+ defaultHandler.pick({ row, field })
293
+ }
265
294
  }
266
295
  }}
267
296
  >
268
297
  {props.content}
269
298
  </Button>
270
- );
299
+ )
271
300
  },
272
301
  },
273
302
  // 简单按钮组
274
303
  $buttons: {
275
- renderItemContent(
276
- { props = {}, children = [] }: RenderOptions,
277
- { data, field }: RenderFormParams,
278
- defaultHandler: {
279
- [key: string]: (...args: any[]) => any;
280
- },
281
- ) {
304
+ renderItemContent({ props = {}, children = [] }: RenderOptions, {
305
+ data,
306
+ field,
307
+ }: RenderFormParams, defaultHandler: {
308
+ [key: string]: (...args: any[]) => any
309
+ }) {
282
310
  return (
283
311
  <span class="align-gap-box w-fit">
284
- {children.map((m) => (
285
- <Button
286
- {...omit(Object.assign(props, m.props), ['content'])}
287
- icon={m.props.icon ? <Icon icon={m.props.icon} /> : null}
288
- onClick={() => {
289
- m.events?.click?.({ data, field });
290
- if (m.props.htmlType === 'reset' && defaultHandler?.reset) {
291
- defaultHandler.reset({ data, field });
292
- }
293
- }}
294
- >
295
- {m.props.content}
296
- </Button>
297
- ))}
312
+ {
313
+ children.map((m) => {
314
+ return (
315
+ <Button
316
+ {...omit(Object.assign({}, props, m.props), ['content'])}
317
+ icon={m.props.icon ? <Icon icon={m.props.icon} /> : null}
318
+ onClick={() => {
319
+ m.events?.click?.({ data, field })
320
+ if (m.props.htmlType === 'reset' && defaultHandler?.reset) {
321
+ if (props.beforeClick && isFunction(props.beforeClick)) {
322
+ props.beforeClick({ data, field }).then((res: void | Recordable) => {
323
+ defaultHandler.reset(res ? { data: res, field } : { data, field })
324
+ })
325
+ }
326
+ else {
327
+ defaultHandler.reset({ data, field })
328
+ }
329
+ }
330
+ if (m.props.htmlType === 'pick' && defaultHandler?.pick) {
331
+ if (props.beforeClick && isFunction(props.beforeClick)) {
332
+ props.beforeClick({ data, field }).then((res: void | Recordable) => {
333
+ defaultHandler.pick(res ? { data: res, field } : { data, field })
334
+ })
335
+ }
336
+ else {
337
+ defaultHandler.pick({ data, field })
338
+ }
339
+ }
340
+ }}
341
+ >
342
+ {m.props.content}
343
+ </Button>
344
+ )
345
+ })
346
+ }
298
347
  </span>
299
- );
348
+ )
300
349
  },
301
- renderDefault(
302
- { props = {}, children = [] }: RenderOptions,
303
- { data, row, field }: RenderTableParams,
304
- ) {
350
+ renderDefault({ props = {}, children = [] }: RenderOptions, {
351
+ data,
352
+ row,
353
+ field,
354
+ }: RenderTableParams, defaultHandler: {
355
+ [key: string]: (...args: any[]) => any
356
+ }) {
305
357
  return (
306
358
  <span class="align-gap-box w-fit">
307
- {children.map((m) => (
308
- <Button
309
- {...omit(Object.assign(props, m.props), ['content'])}
310
- icon={m.props.icon ? <Icon icon={m.props.icon} /> : null}
311
- onClick={() => {
312
- m.events?.click?.({ data, row, field });
313
- }}
314
- >
315
- {m.props.content}
316
- </Button>
317
- ))}
359
+ {
360
+ children.filter(f => !f?.props?.hiddenIf?.({
361
+ data,
362
+ row,
363
+ field,
364
+ })).map(m => (
365
+ <Button
366
+ {...omit(Object.assign({}, props, m.props), ['content', 'hiddenIf'])}
367
+ icon={m.props.icon ? <Icon icon={m.props.icon} /> : null}
368
+ onClick={() => {
369
+ m.events?.click?.({ data, row, field })
370
+ if (m.props.htmlType === 'reset' && defaultHandler?.reset) {
371
+ if (props.beforeClick && isFunction(props.beforeClick)) {
372
+ defaultHandler?.setLoadings?.(true)
373
+ props.beforeClick({ row, field }).then((res: void | Recordable) => {
374
+ defaultHandler.reset(res ? { row: res, field } : { row, field })
375
+ }).finally(() => {
376
+ defaultHandler?.setLoadings?.(false)
377
+ })
378
+ }
379
+ else {
380
+ defaultHandler.reset({ row, field })
381
+ }
382
+ }
383
+ if (m.props.htmlType === 'pick' && defaultHandler?.pick) {
384
+ if (props.beforeClick && isFunction(props.beforeClick)) {
385
+ defaultHandler?.setLoadings?.(true)
386
+ props.beforeClick({ row, field }).then((res: void | Recordable) => {
387
+ defaultHandler.pick(res ? { row: res, field } : { row, field })
388
+ }).finally(() => {
389
+ defaultHandler?.setLoadings?.(false)
390
+ })
391
+ }
392
+ else {
393
+ defaultHandler.pick({ row, field })
394
+ }
395
+ }
396
+ }}
397
+ >
398
+ {m.props.content}
399
+ </Button>
400
+ ))
401
+ }
318
402
  </span>
319
- );
403
+ )
320
404
  },
321
405
  },
322
406
  ButtonTree: {
323
407
  renderDefault({ children = [], props = {} as Recordable }, params: RenderTableParams) {
324
408
  return (
325
409
  <span class={props.noGap ? 'align-no-gap-box' : 'align-gap-box'}>
326
- {(children as BtnOptions[]).map((item) => renderBtn(item, params)) ?? []}
410
+ {(children as BtnOptions[])
411
+ .filter((f) => !f.hiddenIf?.(params))
412
+ .map((item) => renderBtn(item, params)) ?? []}
327
413
  </span>
328
414
  );
329
415
  },
330
416
  },
331
417
  $radio: {
332
- renderItemContent({ props = {}, options }: RenderOptions, { data, field }: RenderFormParams) {
418
+ renderItemContent(
419
+ { props = {}, events = {}, options }: RenderOptions,
420
+ { data, field }: RenderFormParams,
421
+ ) {
333
422
  return valued(field) ? (
334
423
  <RadioGroup
335
424
  v-model:value={data[field!]}
336
425
  {...props}
337
426
  options={props.options ?? options ?? []}
427
+ disabled={!!props.disabled}
428
+ onChange={(...arg) => {
429
+ events.change?.({ data, field }, ...arg);
430
+ }}
338
431
  />
339
432
  ) : null;
340
433
  },
@@ -356,7 +449,7 @@ const renders = {
356
449
  return valued(field) ? (
357
450
  <AutoComplete
358
451
  v-model:value={data[field!]}
359
- {...props}
452
+ {...Object.assign({}, { filterOption: defaultProps.autoComplete.filterOption }, props)}
360
453
  onChange={(...arg) => {
361
454
  events.change?.({ data, field }, ...arg);
362
455
  }}
@@ -24,6 +24,12 @@
24
24
  padding-left: 2px;
25
25
  padding-right: 2px;
26
26
  }
27
+ .pl-4x {
28
+ padding-left: 1em;
29
+ }
30
+ .pl-8 {
31
+ padding-left: 2em;
32
+ }
27
33
 
28
34
  .h-0 {
29
35
  height: 0;