@form-create/component-elm-group 3.2.23 → 3.2.34

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/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @form-create/component-elm-group v3.2.23
2
+ * @form-create/component-elm-group v3.2.34
3
3
  * (c) 2018-2025 xaboy
4
4
  * Github https://github.com/xaboy/form-create with group
5
5
  * Released under the MIT License.
@@ -249,9 +249,21 @@ function styleInject(css, ref) {
249
249
  }
250
250
  }
251
251
 
252
- var css_248z = "._fc-group{display:flex;flex-direction:column;justify-content:center;min-height:38px;width:100%}._fc-group-disabled ._fc-group-add,._fc-group-disabled ._fc-group-btn{cursor:not-allowed}._fc-group-handle{background-color:#fff;border:1px dashed #d9d9d9;border-radius:15px;bottom:-15px;display:flex;flex-direction:row;padding:3px 8px;position:absolute;right:30px}._fc-group-btn{cursor:pointer}._fc-group-idx{align-items:center;background:#eee;border-radius:15px;bottom:-15px;display:flex;font-weight:700;height:30px;justify-content:center;left:10px;position:absolute;width:30px}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{border:1px dashed #d9d9d9;border-radius:5px;display:flex;flex-direction:column;margin:5px 5px 25px;padding:20px 20px 25px;position:relative}._fc-group-arrow{height:20px;position:relative;width:20px}._fc-group-arrow:before{border-left:2px solid #999;border-top:2px solid #999;content:\"\";height:9px;left:5px;position:absolute;top:8px;transform:rotate(45deg);width:9px}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{cursor:pointer;height:20px;position:relative;width:20px}._fc-group-plus-minus:after,._fc-group-plus-minus:before{background-color:#409eff;content:\"\";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{border:1px solid rgba(64,158,255,.5);border-radius:15px;cursor:pointer;height:25px;width:25px}._fc-group-add._fc-group-plus-minus:after,._fc-group-add._fc-group-plus-minus:before{width:50%}";
252
+ var css_248z = "._fc-group{display:flex;flex-direction:column;justify-content:center;min-height:38px;width:100%}._fc-group-disabled ._fc-group-add,._fc-group-disabled ._fc-group-btn{cursor:not-allowed}._fc-group-handle{background-color:#fff;border:1px dashed #d9d9d9;border-radius:15px;bottom:-15px;display:flex;flex-direction:row;padding:3px 8px;position:absolute;right:30px}._fc-group-btn{cursor:pointer}._fc-group-idx{align-items:center;background:#eee;border-radius:15px;bottom:-15px;display:flex;font-weight:700;height:30px;justify-content:center;left:10px;position:absolute;width:30px}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{border:1px dashed #d9d9d9;border-radius:5px;display:flex;flex-direction:column;margin:5px 5px 25px;padding:20px 20px 25px;position:relative}._fc-group-arrow{height:20px;position:relative;width:20px}._fc-group-arrow:before{border-left:2px solid #999;border-top:2px solid #999;content:\"\";height:9px;left:5px;position:absolute;top:8px;transform:rotate(45deg);width:9px}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{cursor:pointer;height:20px;position:relative;width:20px}._fc-group-plus-minus:after,._fc-group-plus-minus:before{background-color:#409eff;content:\"\";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{border:1px solid rgba(64,158,255,.5);border-radius:15px;cursor:pointer;height:25px;width:25px}._fc-group-add._fc-group-plus-minus:after,._fc-group-add._fc-group-plus-minus:before{width:50%}._fc-group._fc-group-card{display:flex;flex-direction:column;gap:16px;width:100%}._fc-group._fc-group-card._fc-group-disabled ._fc-group-add,._fc-group._fc-group-card._fc-group-disabled ._fc-group-btn{cursor:not-allowed;opacity:.5}._fc-group._fc-group-card ._fc-group-container{background:#fff;border:1px solid #f0f0f0;border-radius:6px;display:flex;flex-direction:column;margin:0;overflow:hidden;padding:0;position:relative}._fc-group._fc-group-card ._fc-group-header{align-items:center;background:#fafafa;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px 20px 12px}._fc-group._fc-group-card ._fc-group-idx{align-items:center;background:#f0f0f0;border:1px solid #e0e0e0;border-radius:6px;color:#666;display:flex;flex-shrink:0;font-size:12px;font-weight:500;height:24px;justify-content:center;margin-right:12px;position:static;width:24px}._fc-group._fc-group-card ._fc-group-title{color:rgba(0,0,0,.85);flex:1;font-size:14px;font-weight:500;line-height:1.5715}._fc-group._fc-group-card ._fc-group-handle{align-items:center;background-color:transparent;border:none;border-radius:0;bottom:auto;display:flex;flex-direction:row;flex-shrink:0;gap:4px;margin-left:12px;padding:0;position:static;right:auto}._fc-group._fc-group-card ._fc-group-btn{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:4px;color:rgba(0,0,0,.45);cursor:pointer;display:flex;height:24px;justify-content:center;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-btn:hover{background:#f0f8ff;border-color:#1890ff;color:#1890ff}._fc-group._fc-group-card ._fc-group-btn:active{border-color:#096dd9;color:#096dd9}._fc-group._fc-group-card ._fc-group-arrow{position:relative}._fc-group._fc-group-card ._fc-group-arrow:before{border-left:1px solid;border-top:1px solid;content:\"\";height:5px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) rotate(45deg);width:5px}._fc-group._fc-group-card ._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group._fc-group-card ._fc-group-sort{align-items:center;display:flex;flex-direction:column;height:24px;justify-content:center;position:relative}._fc-group._fc-group-card ._fc-group-sort:after,._fc-group._fc-group-card ._fc-group-sort:before{border-left:1px solid;border-top:1px solid;content:\"\";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:4px}._fc-group._fc-group-card ._fc-group-sort:before{top:6px;transform:translateX(-50%) rotate(45deg)}._fc-group._fc-group-card ._fc-group-sort:after{bottom:6px;transform:translateX(-50%) rotate(225deg)}._fc-group._fc-group-card ._fc-group-sort-down,._fc-group._fc-group-card ._fc-group-sort-up{cursor:pointer;height:12px;left:0;position:absolute;right:0;z-index:1}._fc-group._fc-group-card ._fc-group-sort-up{top:0}._fc-group._fc-group-card ._fc-group-sort-down{bottom:0}._fc-group._fc-group-card ._fc-group-sort-down:hover,._fc-group._fc-group-card ._fc-group-sort-up:hover{background:rgba(24,144,255,.1)}._fc-group._fc-group-card ._fc-group-plus-minus{background:#409eff;border-color:#409eff;color:#fff;height:24px;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-plus-minus:after,._fc-group._fc-group-card ._fc-group-plus-minus:before{background-color:currentColor;content:\"\";height:1px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}._fc-group._fc-group-card ._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus{background:#f56c6c;border-color:#f56c6c}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:hover{background:#f78989;border-color:#f78989}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group._fc-group-card ._fc-group-content{padding:20px}._fc-group._fc-group-card ._fc-group-add{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:4px;color:rgba(0,0,0,.45);cursor:pointer;display:flex;height:24px;justify-content:center;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-add:hover{background:#f0f8ff;border-color:#409eff;color:#409eff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus{background:#409eff;border-color:#409eff;color:#fff;height:24px;width:24px}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:after,._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before{background-color:currentColor;content:\"\";height:1px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-empty{color:rgba(0,0,0,.45);font-size:14px;padding:40px 20px;text-align:center}@media (max-width:768px){._fc-group._fc-group-card ._fc-group-container{border-left:none;border-radius:0;border-right:none;margin:0 -8px}._fc-group._fc-group-card ._fc-group-header{padding:12px 16px 8px}._fc-group._fc-group-card ._fc-group-content{padding:16px}._fc-group._fc-group-card ._fc-group-handle{gap:2px}._fc-group._fc-group-card ._fc-group-btn{height:22px;width:22px}}";
253
253
  styleInject(css_248z);
254
254
 
255
+ function isPromise(value) {
256
+ return value && _typeof(value) === 'object' && typeof value.then === 'function';
257
+ }
258
+
259
+ function toPromise(value) {
260
+ if (isPromise(value)) {
261
+ return value;
262
+ }
263
+
264
+ return Promise.resolve(value);
265
+ }
266
+
255
267
  var NAME = 'fcGroup';
256
268
  var Group = defineComponent({
257
269
  name: NAME,
@@ -291,6 +303,14 @@ var Group = defineComponent({
291
303
  type: Boolean,
292
304
  "default": true
293
305
  },
306
+ title: {
307
+ type: [String, Function],
308
+ "default": null
309
+ },
310
+ type: {
311
+ type: String,
312
+ "default": 'default'
313
+ },
294
314
  onBeforeRemove: {
295
315
  type: Function,
296
316
  "default": function _default() {}
@@ -492,16 +512,27 @@ var Group = defineComponent({
492
512
  this.input(value);
493
513
  },
494
514
  del: function del(index, key) {
495
- if (this.disabled || false === this.onBeforeRemove(this.modelValue, index)) {
515
+ var _this7 = this;
516
+
517
+ if (this.disabled) {
496
518
  return;
497
519
  }
498
520
 
499
- this.removeRule(key, true);
521
+ var del = function del() {
522
+ _this7.removeRule(key, true);
500
523
 
501
- var value = _toConsumableArray(this.modelValue);
524
+ var value = _toConsumableArray(_this7.modelValue);
502
525
 
503
- value.splice(index, 1);
504
- this.input(value);
526
+ value.splice(index, 1);
527
+
528
+ _this7.input(value);
529
+ };
530
+
531
+ toPromise(this.onBeforeRemove(this.modelValue, index)).then(function (res) {
532
+ if (false !== res) {
533
+ del();
534
+ }
535
+ });
505
536
  },
506
537
  addIcon: function addIcon(key) {
507
538
  return createVNode("div", {
@@ -510,48 +541,83 @@ var Group = defineComponent({
510
541
  }, null);
511
542
  },
512
543
  delIcon: function delIcon(index, key) {
513
- var _this7 = this;
544
+ var _this8 = this;
514
545
 
515
546
  return createVNode("div", {
516
547
  "class": "_fc-group-btn _fc-group-plus-minus _fc-group-minus",
517
548
  "onClick": function onClick() {
518
- return _this7.del(index, key);
549
+ return _this8.del(index, key);
519
550
  }
520
551
  }, null);
521
552
  },
522
553
  sortUpIcon: function sortUpIcon(index) {
523
- var _this8 = this;
554
+ var _this9 = this;
524
555
 
525
556
  return createVNode("div", {
526
557
  "class": "_fc-group-btn _fc-group-arrow _fc-group-up",
527
558
  "onClick": function onClick() {
528
- return _this8.changeSort(index, -1);
559
+ return _this9.changeSort(index, -1);
529
560
  }
530
561
  }, null);
531
562
  },
532
563
  sortDownIcon: function sortDownIcon(index) {
533
- var _this9 = this;
564
+ var _this10 = this;
534
565
 
535
566
  return createVNode("div", {
536
567
  "class": "_fc-group-btn _fc-group-arrow _fc-group-down",
537
568
  "onClick": function onClick() {
538
- return _this9.changeSort(index, 1);
569
+ return _this10.changeSort(index, 1);
539
570
  }
540
571
  }, null);
541
572
  },
542
573
  changeSort: function changeSort(index, sort) {
543
- var _this10 = this;
574
+ var _this11 = this;
544
575
 
545
576
  var a = this.sort[index];
546
577
  this.sort[index] = this.sort[index + sort];
547
578
  this.sort[index + sort] = a;
548
579
  this.formCreateInject.subForm(this.sort.map(function (k) {
549
- return _this10.cacheRule[k].$f;
580
+ return _this11.cacheRule[k].$f;
550
581
  }));
551
582
  this.formData(0);
552
583
  },
584
+ sortIcon: function sortIcon(index, total) {
585
+ var _this12 = this;
586
+
587
+ var canMoveUp = index > 0;
588
+ var canMoveDown = index < total - 1;
589
+
590
+ if (!canMoveUp && !canMoveDown) {
591
+ return null;
592
+ }
593
+
594
+ if (canMoveUp && canMoveDown) {
595
+ // 显示合并的上下箭头按钮
596
+ return createVNode("div", {
597
+ "class": "_fc-group-btn _fc-group-sort"
598
+ }, [createVNode("div", {
599
+ "class": "_fc-group-sort-up",
600
+ "onClick": function onClick() {
601
+ return _this12.changeSort(index, -1);
602
+ }
603
+ }, null), createVNode("div", {
604
+ "class": "_fc-group-sort-down",
605
+ "onClick": function onClick() {
606
+ return _this12.changeSort(index, 1);
607
+ }
608
+ }, null)]);
609
+ }
610
+
611
+ if (canMoveUp) {
612
+ return this.sortUpIcon(index);
613
+ }
614
+
615
+ if (canMoveDown) {
616
+ return this.sortDownIcon(index);
617
+ }
618
+ },
553
619
  makeIcon: function makeIcon(total, index, key) {
554
- var _this11 = this;
620
+ var _this13 = this;
555
621
 
556
622
  if (this.$slots.button) {
557
623
  return this.$slots.button({
@@ -560,7 +626,7 @@ var Group = defineComponent({
560
626
  vm: this,
561
627
  key: key,
562
628
  del: function del() {
563
- return _this11.del(index, key);
629
+ return _this13.del(index, key);
564
630
  },
565
631
  add: this.add
566
632
  });
@@ -576,23 +642,33 @@ var Group = defineComponent({
576
642
  btn.push(this.delIcon(index, key));
577
643
  }
578
644
 
579
- if (this.sortBtn && index) {
580
- btn.push(this.sortUpIcon(index));
581
- }
645
+ if (this.sortBtn) {
646
+ var sortBtn = this.sortIcon(index, total);
582
647
 
583
- if (this.sortBtn && index !== total - 1) {
584
- btn.push(this.sortDownIcon(index));
648
+ if (sortBtn) {
649
+ btn.push(sortBtn);
650
+ }
585
651
  }
586
652
 
587
653
  return btn;
588
654
  },
589
- emitEvent: function emitEvent(name, args, index, key) {
590
- this.$emit.apply(this, [name].concat(_toConsumableArray(args), [this.cacheRule[key].$f, index]));
591
- },
592
655
  expandRule: function expandRule(n) {
593
656
  for (var i = 0; i < n; i++) {
594
- this.addRule(i);
657
+ this.modelValue.push(this.field ? null : {});
658
+ }
659
+
660
+ this.input(_toConsumableArray(this.modelValue));
661
+ },
662
+ getTitle: function getTitle(index, key) {
663
+ if (typeof this.title === 'function') {
664
+ return this.title(index, this.modelValue[index], key);
665
+ }
666
+
667
+ if (typeof this.title === 'string') {
668
+ return this.title.replace('{index}', index + 1);
595
669
  }
670
+
671
+ return false;
596
672
  }
597
673
  },
598
674
  created: function created() {
@@ -607,12 +683,13 @@ var Group = defineComponent({
607
683
  }
608
684
  },
609
685
  render: function render() {
610
- var _this12 = this;
686
+ var _this14 = this;
611
687
 
612
688
  var keys = this.sort;
613
689
  var button = this.button;
614
690
  var Type = this.form;
615
691
  var disabled = this.disabled;
692
+ var isCardType = this.type === 'card';
616
693
  var children = keys.length === 0 ? this.$slots["default"] ? this.$slots["default"]({
617
694
  vm: this,
618
695
  add: this.add
@@ -621,44 +698,72 @@ var Group = defineComponent({
621
698
  "class": "_fc-group-plus-minus _fc-group-add fc-clock",
622
699
  "onClick": this.add
623
700
  }, null) : keys.map(function (key, index) {
624
- var _this12$cacheRule$key = _this12.cacheRule[key],
625
- rule = _this12$cacheRule$key.rule,
626
- options = _this12$cacheRule$key.options;
627
- var btn = button && !disabled ? _this12.makeIcon(keys.length, index, key) : [];
628
- return createVNode("div", {
629
- "class": "_fc-group-container",
630
- "key": key
631
- }, [createVNode(Type, mergeProps({
632
- "key": key
633
- }, {
634
- disabled: disabled,
635
- 'onUpdate:modelValue': function onUpdateModelValue(formData) {
636
- return _this12.formData(key, formData);
637
- },
638
- 'onEmit-event': function onEmitEvent(name) {
639
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
640
- args[_key - 1] = arguments[_key];
641
- }
642
-
643
- return _this12.emitEvent(name, args, index, key);
644
- },
645
- 'onUpdate:api': function onUpdateApi($f) {
646
- return _this12.add$f(index, key, $f);
647
- },
648
- inFor: true,
649
- modelValue: _this12.field ? _defineProperty({}, _this12.field, _this12._value(_this12.modelValue[index])) : _this12.modelValue[index],
650
- rule: rule,
651
- option: options,
652
- extendOption: true
653
- }), null), createVNode("div", {
654
- "class": "_fc-group-idx"
655
- }, [index + 1]), btn.length ? createVNode("div", {
656
- "class": "_fc-group-handle fc-clock"
657
- }, [btn]) : null]);
701
+ var _this14$cacheRule$key = _this14.cacheRule[key],
702
+ rule = _this14$cacheRule$key.rule,
703
+ options = _this14$cacheRule$key.options;
704
+ var btn = button && !disabled ? _this14.makeIcon(keys.length, index, key) : [];
705
+
706
+ var title = _this14.getTitle(index, key);
707
+
708
+ if (isCardType) {
709
+ return createVNode("div", {
710
+ "class": "_fc-group-container",
711
+ "key": key
712
+ }, [createVNode("div", {
713
+ "class": "_fc-group-header"
714
+ }, [title === false ? createVNode("div", {
715
+ "class": "_fc-group-idx"
716
+ }, [index + 1]) : null, title !== false ? createVNode("div", {
717
+ "class": "_fc-group-title"
718
+ }, [title]) : null, createVNode("div", {
719
+ "class": "_fc-group-handle fc-clock"
720
+ }, [btn.length ? btn : null])]), createVNode("div", {
721
+ "class": "_fc-group-content"
722
+ }, [createVNode(Type, mergeProps({
723
+ "key": key
724
+ }, _objectSpread2(_objectSpread2({}, _this14.$attrs), {}, {
725
+ disabled: disabled,
726
+ 'onUpdate:modelValue': function onUpdateModelValue(formData) {
727
+ return _this14.formData(key, formData);
728
+ },
729
+ 'onUpdate:api': function onUpdateApi($f) {
730
+ return _this14.add$f(index, key, $f);
731
+ },
732
+ inFor: true,
733
+ modelValue: _this14.field ? _defineProperty({}, _this14.field, _this14._value(_this14.modelValue[index])) : _this14.modelValue[index],
734
+ rule: rule,
735
+ option: options,
736
+ extendOption: true
737
+ })), null)])]);
738
+ } else {
739
+ return createVNode("div", {
740
+ "class": "_fc-group-container",
741
+ "key": key
742
+ }, [createVNode(Type, mergeProps({
743
+ "key": key
744
+ }, _objectSpread2(_objectSpread2({}, _this14.$attrs), {}, {
745
+ disabled: disabled,
746
+ 'onUpdate:modelValue': function onUpdateModelValue(formData) {
747
+ return _this14.formData(key, formData);
748
+ },
749
+ 'onUpdate:api': function onUpdateApi($f) {
750
+ return _this14.add$f(index, key, $f);
751
+ },
752
+ inFor: true,
753
+ modelValue: _this14.field ? _defineProperty({}, _this14.field, _this14._value(_this14.modelValue[index])) : _this14.modelValue[index],
754
+ rule: rule,
755
+ option: options,
756
+ extendOption: true
757
+ })), null), createVNode("div", {
758
+ "class": "_fc-group-idx"
759
+ }, [index + 1]), btn.length ? createVNode("div", {
760
+ "class": "_fc-group-handle fc-clock"
761
+ }, [btn]) : null]);
762
+ }
658
763
  });
659
764
  return createVNode("div", {
660
765
  "key": 'con',
661
- "class": '_fc-group ' + (disabled ? '_fc-group-disabled' : '')
766
+ "class": '_fc-group ' + (disabled ? '_fc-group-disabled' : '') + (isCardType ? ' _fc-group-card' : '')
662
767
  }, [children]);
663
768
  }
664
769
  });
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @form-create/component-elm-group v3.2.23
2
+ * @form-create/component-elm-group v3.2.34
3
3
  * (c) 2018-2025 xaboy
4
4
  * Github https://github.com/xaboy/form-create with group
5
5
  * Released under the MIT License.
6
6
  */
7
- import{defineComponent as t,markRaw as e,nextTick as r,createVNode as n,mergeProps as o}from"vue";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){c(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function c(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var f={type:function(t,e){return Object.prototype.toString.call(t)==="[object "+e+"]"},Undef:function(t){return null==t},Element:function(t){return"object"===a(t)&&null!==t&&1===t.nodeType&&!f.Object(t)},trueArray:function(t){return Array.isArray(t)&&t.length>0},Function:function(t){var e=this.getType(t);return"Function"===e||"AsyncFunction"===e},getType:function(t){var e=Object.prototype.toString.call(t);return/^\[object (.*)\]$/.exec(e)[1]},empty:function(t){return null==t||(!(!Array.isArray(t)||!Array.isArray(t)||t.length)||"string"==typeof t&&!t)}};function d(t,e,r){t[e]=r}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=!1;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=e[o];if((n=Array.isArray(i))||f.Object(i)){var u=void 0===t[o];if(n)n=!1,u&&d(t,o,[]);else if(i._clone&&void 0!==r){if(!r){d(t,o,i._clone());continue}i=i.getRule(),u&&d(t,o,{})}else u&&d(t,o,{});t[o]=p(t[o],i,r)}else d(t,o,i),f.Undef(i)||(f.Undef(i.__json)||(t[o].__json=i.__json),f.Undef(i.__origin)||(t[o].__origin=i.__origin))}return void 0!==r&&Array.isArray(t)?t.filter((function(t){return!t||!t.__ctrl})):t}function h(t){return p({},{value:t}).value}["Date","Object","String","Boolean","Array","Number"].forEach((function(t){f[t]=function(e){return f.type(e,t)}}));var m=Object.assign||function(t){for(var e,r=1;r<arguments.length;r++)for(var n in e=arguments[r])Object.prototype.hasOwnProperty.call(e,n)&&d(t,n,e[n]);return t};!function(t,e){void 0===e&&(e={});var r=e.insertAt;if(t&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}('._fc-group{display:flex;flex-direction:column;justify-content:center;min-height:38px;width:100%}._fc-group-disabled ._fc-group-add,._fc-group-disabled ._fc-group-btn{cursor:not-allowed}._fc-group-handle{background-color:#fff;border:1px dashed #d9d9d9;border-radius:15px;bottom:-15px;display:flex;flex-direction:row;padding:3px 8px;position:absolute;right:30px}._fc-group-btn{cursor:pointer}._fc-group-idx{align-items:center;background:#eee;border-radius:15px;bottom:-15px;display:flex;font-weight:700;height:30px;justify-content:center;left:10px;position:absolute;width:30px}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{border:1px dashed #d9d9d9;border-radius:5px;display:flex;flex-direction:column;margin:5px 5px 25px;padding:20px 20px 25px;position:relative}._fc-group-arrow{height:20px;position:relative;width:20px}._fc-group-arrow:before{border-left:2px solid #999;border-top:2px solid #999;content:"";height:9px;left:5px;position:absolute;top:8px;transform:rotate(45deg);width:9px}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{cursor:pointer;height:20px;position:relative;width:20px}._fc-group-plus-minus:after,._fc-group-plus-minus:before{background-color:#409eff;content:"";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{border:1px solid rgba(64,158,255,.5);border-radius:15px;cursor:pointer;height:25px;width:25px}._fc-group-add._fc-group-plus-minus:after,._fc-group-add._fc-group-plus-minus:before{width:50%}');var g=t({name:"fcGroup",props:{field:String,rule:Array,expand:Number,options:Object,button:{type:Boolean,default:!0},max:{type:Number,default:0},min:{type:Number,default:0},modelValue:{type:Array,default:function(){return[]}},defaultValue:Object,sortBtn:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},onBeforeRemove:{type:Function,default:function(){}},onBeforeAdd:{type:Function,default:function(){}},formCreateInject:Object,parse:Function},data:function(){return{len:0,cacheRule:{},cacheValue:{},sort:[],form:e(this.formCreateInject.form.$form())}},emits:["update:modelValue","change","itemMounted","remove","add"],watch:{rule:{handler:function(t,e){var r=this;Object.keys(this.cacheRule).forEach((function(n){var o=r.cacheRule[n];if(o.$f){var i=o.$f.formData();if(t===e)o.$f.deferSyncValue((function(){p(o.rule,t),o.$f.setValue(i)}),!0);else{var u=o.$f.formData();o.$f.once("reloading",(function(){o.$f.setValue(u)})),o.rule=h(t)}}}))},deep:!0},expand:function(t){var e=t-this.modelValue.length;e>0&&this.expandRule(e)},modelValue:{handler:function(t){var e=this;t=t||[];var r=this.sort,n=r.length,o=n-t.length;if(o<0){for(var i=o;i<0;i++)this.addRule(t.length+i,!0);for(var u=0;u<n;u++)this.setValue(r[u],t[u])}else{if(o>0)for(var a=0;a<o;a++)this.removeRule(r[n-a-1]);t.forEach((function(n,o){e.setValue(r[o],t[o])}))}},deep:!0}},methods:{_value:function(t){return t&&(e=t,r=this.field,{}.hasOwnProperty.call(e,r))?t[this.field]:t;var e,r},cache:function(t,e){this.cacheValue[t]=JSON.stringify(e)},input:function(t){this.$emit("update:modelValue",t),this.$emit("change",t)},formData:function(t,e){var r=this,n=this.cacheRule,o=this.sort;if(o.filter((function(t){return n[t]&&n[t].$f})).length===o.length){var i=o.map((function(n){var o=t===n?e:u({},r.cacheRule[n].$f.form),i=r.field?o[r.field]||null:o;return r.cache(n,i),i}));this.input(i)}},setValue:function(t,e){var r=this.field;r&&(e=c({},r,this._value(e))),this.cacheValue[t]!==JSON.stringify(r?e[r]:e)&&(this.cacheRule[t].$f&&this.cacheRule[t].$f.coverValue(e),this.cache(t,e))},addRule:function(t,e){var n=this,o=this.formCreateInject.form.copyRules(this.rule||[]),i=this.options?u({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){i.formData||(i.formData={});var a=h(this.defaultValue);!function(){m.apply(this,arguments)}(i.formData,this.field?c({},this.field,a):a)}this.parse&&this.parse({rule:o,options:i,index:this.sort.length}),this.cacheRule[++this.len]={rule:o,options:i},this.sort=Object.keys(this.cacheRule),e&&r((function(){return n.$emit("add",o,Object.keys(n.cacheRule).length-1)}))},add$f:function(t,e,n){var o=this;this.cacheRule[e].$f=n,r((function(){o.$emit("itemMounted",n,Object.keys(o.cacheRule).indexOf(e))}))},removeRule:function(t,e){var n=this,o=Object.keys(this.cacheRule).indexOf(t);delete this.cacheRule[t],delete this.cacheValue[t],this.sort=Object.keys(this.cacheRule),e&&r((function(){return n.$emit("remove",o)}))},add:function(t){if(!this.disabled&&!1!==this.onBeforeAdd(this.modelValue)){var e=l(this.modelValue);e.push(this.defaultValue?h(this.defaultValue):this.field?null:{}),this.input(e)}},del:function(t,e){if(!this.disabled&&!1!==this.onBeforeRemove(this.modelValue,t)){this.removeRule(e,!0);var r=l(this.modelValue);r.splice(t,1),this.input(r)}},addIcon:function(t){return n("div",{class:"_fc-group-btn _fc-group-plus-minus",onClick:this.add},null)},delIcon:function(t,e){var r=this;return n("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",onClick:function(){return r.del(t,e)}},null)},sortUpIcon:function(t){var e=this;return n("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",onClick:function(){return e.changeSort(t,-1)}},null)},sortDownIcon:function(t){var e=this;return n("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",onClick:function(){return e.changeSort(t,1)}},null)},changeSort:function(t,e){var r=this,n=this.sort[t];this.sort[t]=this.sort[t+e],this.sort[t+e]=n,this.formCreateInject.subForm(this.sort.map((function(t){return r.cacheRule[t].$f}))),this.formData(0)},makeIcon:function(t,e,r){var n=this;if(this.$slots.button)return this.$slots.button({total:t,index:e,vm:this,key:r,del:function(){return n.del(e,r)},add:this.add});var o=[];return(!this.max||t<this.max)&&t===e+1&&o.push(this.addIcon(r)),t>this.min&&o.push(this.delIcon(e,r)),this.sortBtn&&e&&o.push(this.sortUpIcon(e)),this.sortBtn&&e!==t-1&&o.push(this.sortDownIcon(e)),o},emitEvent:function(t,e,r,n){this.$emit.apply(this,[t].concat(l(e),[this.cacheRule[n].$f,r]))},expandRule:function(t){for(var e=0;e<t;e++)this.addRule(e)}},created:function(){for(var t=(this.expand||0)-this.modelValue.length,e=0;e<this.modelValue.length;e++)this.addRule(e);t>0&&this.expandRule(t)},render:function(){var t=this,e=this.sort,r=this.button,i=this.form,u=this.disabled,a=0===e.length?this.$slots.default?this.$slots.default({vm:this,add:this.add}):n("div",{key:"a_def",class:"_fc-group-plus-minus _fc-group-add fc-clock",onClick:this.add},null):e.map((function(a,l){var s=t.cacheRule[a],f=s.rule,d=s.options,p=r&&!u?t.makeIcon(e.length,l,a):[];return n("div",{class:"_fc-group-container",key:a},[n(i,o({key:a},{disabled:u,"onUpdate:modelValue":function(e){return t.formData(a,e)},"onEmit-event":function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];return t.emitEvent(e,n,l,a)},"onUpdate:api":function(e){return t.add$f(l,a,e)},inFor:!0,modelValue:t.field?c({},t.field,t._value(t.modelValue[l])):t.modelValue[l],rule:f,option:d,extendOption:!0}),null),n("div",{class:"_fc-group-idx"},[l+1]),p.length?n("div",{class:"_fc-group-handle fc-clock"},[p]):null])}));return n("div",{key:"con",class:"_fc-group "+(u?"_fc-group-disabled":"")},[a])}});export{g as default};
7
+ import{defineComponent as r,markRaw as t,nextTick as e,createVNode as o,mergeProps as n}from"vue";function c(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,o)}return e}function u(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?c(Object(e),!0).forEach((function(t){f(r,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):c(Object(e)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))}))}return r}function i(r){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},i(r)}function f(r,t,e){return t in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}function a(r){return function(r){if(Array.isArray(r))return p(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(!r)return;if("string"==typeof r)return p(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);"Object"===e&&r.constructor&&(e=r.constructor.name);if("Map"===e||"Set"===e)return Array.from(r);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return p(r,t)}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,o=new Array(t);e<t;e++)o[e]=r[e];return o}var l={type:function(r,t){return Object.prototype.toString.call(r)==="[object "+t+"]"},Undef:function(r){return null==r},Element:function(r){return"object"===i(r)&&null!==r&&1===r.nodeType&&!l.Object(r)},trueArray:function(r){return Array.isArray(r)&&r.length>0},Function:function(r){var t=this.getType(r);return"Function"===t||"AsyncFunction"===t},getType:function(r){var t=Object.prototype.toString.call(r);return/^\[object (.*)\]$/.exec(t)[1]},empty:function(r){return null==r||(!(!Array.isArray(r)||!Array.isArray(r)||r.length)||"string"==typeof r&&!r)}};function d(r,t,e){r[t]=e}function s(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2?arguments[2]:void 0,o=!1;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var c=t[n];if((o=Array.isArray(c))||l.Object(c)){var u=void 0===r[n];if(o)o=!1,u&&d(r,n,[]);else if(c._clone&&void 0!==e){if(!e){d(r,n,c._clone());continue}c=c.getRule(),u&&d(r,n,{})}else u&&d(r,n,{});r[n]=s(r[n],c,e)}else d(r,n,c),l.Undef(c)||(l.Undef(c.__json)||(r[n].__json=c.__json),l.Undef(c.__origin)||(r[n].__origin=c.__origin))}return void 0!==e&&Array.isArray(r)?r.filter((function(r){return!r||!r.__ctrl})):r}function g(r){return s({},{value:r}).value}["Date","Object","String","Boolean","Array","Number"].forEach((function(r){l[r]=function(t){return l.type(t,r)}}));var h=Object.assign||function(r){for(var t,e=1;e<arguments.length;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&d(r,o,t[o]);return r};function _(r){return function(r){return r&&"object"===i(r)&&"function"==typeof r.then}(r)?r:Promise.resolve(r)}!function(r,t){void 0===t&&(t={});var e=t.insertAt;if(r&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===e&&o.firstChild?o.insertBefore(n,o.firstChild):o.appendChild(n),n.styleSheet?n.styleSheet.cssText=r:n.appendChild(document.createTextNode(r))}}('._fc-group{display:flex;flex-direction:column;justify-content:center;min-height:38px;width:100%}._fc-group-disabled ._fc-group-add,._fc-group-disabled ._fc-group-btn{cursor:not-allowed}._fc-group-handle{background-color:#fff;border:1px dashed #d9d9d9;border-radius:15px;bottom:-15px;display:flex;flex-direction:row;padding:3px 8px;position:absolute;right:30px}._fc-group-btn{cursor:pointer}._fc-group-idx{align-items:center;background:#eee;border-radius:15px;bottom:-15px;display:flex;font-weight:700;height:30px;justify-content:center;left:10px;position:absolute;width:30px}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{border:1px dashed #d9d9d9;border-radius:5px;display:flex;flex-direction:column;margin:5px 5px 25px;padding:20px 20px 25px;position:relative}._fc-group-arrow{height:20px;position:relative;width:20px}._fc-group-arrow:before{border-left:2px solid #999;border-top:2px solid #999;content:"";height:9px;left:5px;position:absolute;top:8px;transform:rotate(45deg);width:9px}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{cursor:pointer;height:20px;position:relative;width:20px}._fc-group-plus-minus:after,._fc-group-plus-minus:before{background-color:#409eff;content:"";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{border:1px solid rgba(64,158,255,.5);border-radius:15px;cursor:pointer;height:25px;width:25px}._fc-group-add._fc-group-plus-minus:after,._fc-group-add._fc-group-plus-minus:before{width:50%}._fc-group._fc-group-card{display:flex;flex-direction:column;gap:16px;width:100%}._fc-group._fc-group-card._fc-group-disabled ._fc-group-add,._fc-group._fc-group-card._fc-group-disabled ._fc-group-btn{cursor:not-allowed;opacity:.5}._fc-group._fc-group-card ._fc-group-container{background:#fff;border:1px solid #f0f0f0;border-radius:6px;display:flex;flex-direction:column;margin:0;overflow:hidden;padding:0;position:relative}._fc-group._fc-group-card ._fc-group-header{align-items:center;background:#fafafa;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px 20px 12px}._fc-group._fc-group-card ._fc-group-idx{align-items:center;background:#f0f0f0;border:1px solid #e0e0e0;border-radius:6px;color:#666;display:flex;flex-shrink:0;font-size:12px;font-weight:500;height:24px;justify-content:center;margin-right:12px;position:static;width:24px}._fc-group._fc-group-card ._fc-group-title{color:rgba(0,0,0,.85);flex:1;font-size:14px;font-weight:500;line-height:1.5715}._fc-group._fc-group-card ._fc-group-handle{align-items:center;background-color:transparent;border:none;border-radius:0;bottom:auto;display:flex;flex-direction:row;flex-shrink:0;gap:4px;margin-left:12px;padding:0;position:static;right:auto}._fc-group._fc-group-card ._fc-group-btn{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:4px;color:rgba(0,0,0,.45);cursor:pointer;display:flex;height:24px;justify-content:center;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-btn:hover{background:#f0f8ff;border-color:#1890ff;color:#1890ff}._fc-group._fc-group-card ._fc-group-btn:active{border-color:#096dd9;color:#096dd9}._fc-group._fc-group-card ._fc-group-arrow{position:relative}._fc-group._fc-group-card ._fc-group-arrow:before{border-left:1px solid;border-top:1px solid;content:"";height:5px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) rotate(45deg);width:5px}._fc-group._fc-group-card ._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group._fc-group-card ._fc-group-sort{align-items:center;display:flex;flex-direction:column;height:24px;justify-content:center;position:relative}._fc-group._fc-group-card ._fc-group-sort:after,._fc-group._fc-group-card ._fc-group-sort:before{border-left:1px solid;border-top:1px solid;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:4px}._fc-group._fc-group-card ._fc-group-sort:before{top:6px;transform:translateX(-50%) rotate(45deg)}._fc-group._fc-group-card ._fc-group-sort:after{bottom:6px;transform:translateX(-50%) rotate(225deg)}._fc-group._fc-group-card ._fc-group-sort-down,._fc-group._fc-group-card ._fc-group-sort-up{cursor:pointer;height:12px;left:0;position:absolute;right:0;z-index:1}._fc-group._fc-group-card ._fc-group-sort-up{top:0}._fc-group._fc-group-card ._fc-group-sort-down{bottom:0}._fc-group._fc-group-card ._fc-group-sort-down:hover,._fc-group._fc-group-card ._fc-group-sort-up:hover{background:rgba(24,144,255,.1)}._fc-group._fc-group-card ._fc-group-plus-minus{background:#409eff;border-color:#409eff;color:#fff;height:24px;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-plus-minus:after,._fc-group._fc-group-card ._fc-group-plus-minus:before{background-color:currentColor;content:"";height:1px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}._fc-group._fc-group-card ._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus{background:#f56c6c;border-color:#f56c6c}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:hover{background:#f78989;border-color:#f78989}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group._fc-group-card ._fc-group-content{padding:20px}._fc-group._fc-group-card ._fc-group-add{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:4px;color:rgba(0,0,0,.45);cursor:pointer;display:flex;height:24px;justify-content:center;position:relative;width:24px}._fc-group._fc-group-card ._fc-group-add:hover{background:#f0f8ff;border-color:#409eff;color:#409eff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus{background:#409eff;border-color:#409eff;color:#fff;height:24px;width:24px}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:after,._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before{background-color:currentColor;content:"";height:1px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-empty{color:rgba(0,0,0,.45);font-size:14px;padding:40px 20px;text-align:center}@media (max-width:768px){._fc-group._fc-group-card ._fc-group-container{border-left:none;border-radius:0;border-right:none;margin:0 -8px}._fc-group._fc-group-card ._fc-group-header{padding:12px 16px 8px}._fc-group._fc-group-card ._fc-group-content{padding:16px}._fc-group._fc-group-card ._fc-group-handle{gap:2px}._fc-group._fc-group-card ._fc-group-btn{height:22px;width:22px}}');var b=r({name:"fcGroup",props:{field:String,rule:Array,expand:Number,options:Object,button:{type:Boolean,default:!0},max:{type:Number,default:0},min:{type:Number,default:0},modelValue:{type:Array,default:function(){return[]}},defaultValue:Object,sortBtn:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},title:{type:[String,Function],default:null},type:{type:String,default:"default"},onBeforeRemove:{type:Function,default:function(){}},onBeforeAdd:{type:Function,default:function(){}},formCreateInject:Object,parse:Function},data:function(){return{len:0,cacheRule:{},cacheValue:{},sort:[],form:t(this.formCreateInject.form.$form())}},emits:["update:modelValue","change","itemMounted","remove","add"],watch:{rule:{handler:function(r,t){var e=this;Object.keys(this.cacheRule).forEach((function(o){var n=e.cacheRule[o];if(n.$f){var c=n.$f.formData();if(r===t)n.$f.deferSyncValue((function(){s(n.rule,r),n.$f.setValue(c)}),!0);else{var u=n.$f.formData();n.$f.once("reloading",(function(){n.$f.setValue(u)})),n.rule=g(r)}}}))},deep:!0},expand:function(r){var t=r-this.modelValue.length;t>0&&this.expandRule(t)},modelValue:{handler:function(r){var t=this;r=r||[];var e=this.sort,o=e.length,n=o-r.length;if(n<0){for(var c=n;c<0;c++)this.addRule(r.length+c,!0);for(var u=0;u<o;u++)this.setValue(e[u],r[u])}else{if(n>0)for(var i=0;i<n;i++)this.removeRule(e[o-i-1]);r.forEach((function(o,n){t.setValue(e[n],r[n])}))}},deep:!0}},methods:{_value:function(r){return r&&(t=r,e=this.field,{}.hasOwnProperty.call(t,e))?r[this.field]:r;var t,e},cache:function(r,t){this.cacheValue[r]=JSON.stringify(t)},input:function(r){this.$emit("update:modelValue",r),this.$emit("change",r)},formData:function(r,t){var e=this,o=this.cacheRule,n=this.sort;if(n.filter((function(r){return o[r]&&o[r].$f})).length===n.length){var c=n.map((function(o){var n=r===o?t:u({},e.cacheRule[o].$f.form),c=e.field?n[e.field]||null:n;return e.cache(o,c),c}));this.input(c)}},setValue:function(r,t){var e=this.field;e&&(t=f({},e,this._value(t))),this.cacheValue[r]!==JSON.stringify(e?t[e]:t)&&(this.cacheRule[r].$f&&this.cacheRule[r].$f.coverValue(t),this.cache(r,t))},addRule:function(r,t){var o=this,n=this.formCreateInject.form.copyRules(this.rule||[]),c=this.options?u({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){c.formData||(c.formData={});var i=g(this.defaultValue);!function(){h.apply(this,arguments)}(c.formData,this.field?f({},this.field,i):i)}this.parse&&this.parse({rule:n,options:c,index:this.sort.length}),this.cacheRule[++this.len]={rule:n,options:c},this.sort=Object.keys(this.cacheRule),t&&e((function(){return o.$emit("add",n,Object.keys(o.cacheRule).length-1)}))},add$f:function(r,t,o){var n=this;this.cacheRule[t].$f=o,e((function(){n.$emit("itemMounted",o,Object.keys(n.cacheRule).indexOf(t))}))},removeRule:function(r,t){var o=this,n=Object.keys(this.cacheRule).indexOf(r);delete this.cacheRule[r],delete this.cacheValue[r],this.sort=Object.keys(this.cacheRule),t&&e((function(){return o.$emit("remove",n)}))},add:function(r){if(!this.disabled&&!1!==this.onBeforeAdd(this.modelValue)){var t=a(this.modelValue);t.push(this.defaultValue?g(this.defaultValue):this.field?null:{}),this.input(t)}},del:function(r,t){var e=this;if(!this.disabled){var o=function(){e.removeRule(t,!0);var o=a(e.modelValue);o.splice(r,1),e.input(o)};_(this.onBeforeRemove(this.modelValue,r)).then((function(r){!1!==r&&o()}))}},addIcon:function(r){return o("div",{class:"_fc-group-btn _fc-group-plus-minus",onClick:this.add},null)},delIcon:function(r,t){var e=this;return o("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",onClick:function(){return e.del(r,t)}},null)},sortUpIcon:function(r){var t=this;return o("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",onClick:function(){return t.changeSort(r,-1)}},null)},sortDownIcon:function(r){var t=this;return o("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",onClick:function(){return t.changeSort(r,1)}},null)},changeSort:function(r,t){var e=this,o=this.sort[r];this.sort[r]=this.sort[r+t],this.sort[r+t]=o,this.formCreateInject.subForm(this.sort.map((function(r){return e.cacheRule[r].$f}))),this.formData(0)},sortIcon:function(r,t){var e=this,n=r>0,c=r<t-1;return n||c?n&&c?o("div",{class:"_fc-group-btn _fc-group-sort"},[o("div",{class:"_fc-group-sort-up",onClick:function(){return e.changeSort(r,-1)}},null),o("div",{class:"_fc-group-sort-down",onClick:function(){return e.changeSort(r,1)}},null)]):n?this.sortUpIcon(r):c?this.sortDownIcon(r):void 0:null},makeIcon:function(r,t,e){var o=this;if(this.$slots.button)return this.$slots.button({total:r,index:t,vm:this,key:e,del:function(){return o.del(t,e)},add:this.add});var n=[];if((!this.max||r<this.max)&&r===t+1&&n.push(this.addIcon(e)),r>this.min&&n.push(this.delIcon(t,e)),this.sortBtn){var c=this.sortIcon(t,r);c&&n.push(c)}return n},expandRule:function(r){for(var t=0;t<r;t++)this.modelValue.push(this.field?null:{});this.input(a(this.modelValue))},getTitle:function(r,t){return"function"==typeof this.title?this.title(r,this.modelValue[r],t):"string"==typeof this.title&&this.title.replace("{index}",r+1)}},created:function(){for(var r=(this.expand||0)-this.modelValue.length,t=0;t<this.modelValue.length;t++)this.addRule(t);r>0&&this.expandRule(r)},render:function(){var r=this,t=this.sort,e=this.button,c=this.form,i=this.disabled,a="card"===this.type,p=0===t.length?this.$slots.default?this.$slots.default({vm:this,add:this.add}):o("div",{key:"a_def",class:"_fc-group-plus-minus _fc-group-add fc-clock",onClick:this.add},null):t.map((function(p,l){var d=r.cacheRule[p],s=d.rule,g=d.options,h=e&&!i?r.makeIcon(t.length,l,p):[],_=r.getTitle(l,p);return o("div",{class:"_fc-group-container",key:p},a?[o("div",{class:"_fc-group-header"},[!1===_?o("div",{class:"_fc-group-idx"},[l+1]):null,!1!==_?o("div",{class:"_fc-group-title"},[_]):null,o("div",{class:"_fc-group-handle fc-clock"},[h.length?h:null])]),o("div",{class:"_fc-group-content"},[o(c,n({key:p},u(u({},r.$attrs),{},{disabled:i,"onUpdate:modelValue":function(t){return r.formData(p,t)},"onUpdate:api":function(t){return r.add$f(l,p,t)},inFor:!0,modelValue:r.field?f({},r.field,r._value(r.modelValue[l])):r.modelValue[l],rule:s,option:g,extendOption:!0})),null)])]:[o(c,n({key:p},u(u({},r.$attrs),{},{disabled:i,"onUpdate:modelValue":function(t){return r.formData(p,t)},"onUpdate:api":function(t){return r.add$f(l,p,t)},inFor:!0,modelValue:r.field?f({},r.field,r._value(r.modelValue[l])):r.modelValue[l],rule:s,option:g,extendOption:!0})),null),o("div",{class:"_fc-group-idx"},[l+1]),h.length?o("div",{class:"_fc-group-handle fc-clock"},[h]):null])}));return o("div",{key:"con",class:"_fc-group "+(i?"_fc-group-disabled":"")+(a?" _fc-group-card":"")},[p])}});export{b as default};