@form-create/component-elm-group 3.2.22 → 3.2.31

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.22
2
+ * @form-create/component-elm-group v3.2.31
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}}@media (prefers-color-scheme:dark){._fc-group._fc-group-card ._fc-group-container{background:#141414;border-color:#303030}._fc-group._fc-group-card ._fc-group-container:hover{border-color:#434343}._fc-group._fc-group-card ._fc-group-header{background:#1f1f1f;border-bottom-color:#303030}._fc-group._fc-group-card ._fc-group-title{color:hsla(0,0%,100%,.85)}._fc-group._fc-group-card ._fc-group-btn{background:#1f1f1f;border-color:#434343;color:hsla(0,0%,100%,.45)}._fc-group._fc-group-card ._fc-group-btn:hover{background:#111b26;border-color:#177ddc;color:#177ddc}._fc-group._fc-group-card ._fc-group-content{background:#141414}._fc-group._fc-group-card ._fc-group-add{background:#1f1f1f;border-color:#434343;color:hsla(0,0%,100%,.45)}._fc-group._fc-group-card ._fc-group-add:hover{background:#111b26;border-color:#177ddc;color:#177ddc}}";
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,12 +642,12 @@ 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;
@@ -591,8 +657,21 @@ var Group = defineComponent({
591
657
  },
592
658
  expandRule: function expandRule(n) {
593
659
  for (var i = 0; i < n; i++) {
594
- this.addRule(i);
660
+ this.modelValue.push(this.field ? null : {});
661
+ }
662
+
663
+ this.input(_toConsumableArray(this.modelValue));
664
+ },
665
+ getTitle: function getTitle(index, key) {
666
+ if (typeof this.title === 'function') {
667
+ return this.title(index, this.modelValue[index], key);
668
+ }
669
+
670
+ if (typeof this.title === 'string') {
671
+ return this.title.replace('{index}', index + 1);
595
672
  }
673
+
674
+ return false;
596
675
  }
597
676
  },
598
677
  created: function created() {
@@ -607,12 +686,13 @@ var Group = defineComponent({
607
686
  }
608
687
  },
609
688
  render: function render() {
610
- var _this12 = this;
689
+ var _this14 = this;
611
690
 
612
691
  var keys = this.sort;
613
692
  var button = this.button;
614
693
  var Type = this.form;
615
694
  var disabled = this.disabled;
695
+ var isCardType = this.type === 'card';
616
696
  var children = keys.length === 0 ? this.$slots["default"] ? this.$slots["default"]({
617
697
  vm: this,
618
698
  add: this.add
@@ -621,44 +701,86 @@ var Group = defineComponent({
621
701
  "class": "_fc-group-plus-minus _fc-group-add fc-clock",
622
702
  "onClick": this.add
623
703
  }, 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
- }
704
+ var _this14$cacheRule$key = _this14.cacheRule[key],
705
+ rule = _this14$cacheRule$key.rule,
706
+ options = _this14$cacheRule$key.options;
707
+ var btn = button && !disabled ? _this14.makeIcon(keys.length, index, key) : [];
708
+
709
+ var title = _this14.getTitle(index, key);
710
+
711
+ if (isCardType) {
712
+ return createVNode("div", {
713
+ "class": "_fc-group-container",
714
+ "key": key
715
+ }, [createVNode("div", {
716
+ "class": "_fc-group-header"
717
+ }, [title === false ? createVNode("div", {
718
+ "class": "_fc-group-idx"
719
+ }, [index + 1]) : null, title !== false ? createVNode("div", {
720
+ "class": "_fc-group-title"
721
+ }, [title]) : null, createVNode("div", {
722
+ "class": "_fc-group-handle fc-clock"
723
+ }, [btn.length ? btn : null])]), createVNode("div", {
724
+ "class": "_fc-group-content"
725
+ }, [createVNode(Type, mergeProps({
726
+ "key": key
727
+ }, {
728
+ disabled: disabled,
729
+ 'onUpdate:modelValue': function onUpdateModelValue(formData) {
730
+ return _this14.formData(key, formData);
731
+ },
732
+ 'onEmit-event': function onEmitEvent(name) {
733
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
734
+ args[_key - 1] = arguments[_key];
735
+ }
642
736
 
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]);
737
+ return _this14.emitEvent(name, args, index, key);
738
+ },
739
+ 'onUpdate:api': function onUpdateApi($f) {
740
+ return _this14.add$f(index, key, $f);
741
+ },
742
+ inFor: true,
743
+ modelValue: _this14.field ? _defineProperty({}, _this14.field, _this14._value(_this14.modelValue[index])) : _this14.modelValue[index],
744
+ rule: rule,
745
+ option: options,
746
+ extendOption: true
747
+ }), null)])]);
748
+ } else {
749
+ return createVNode("div", {
750
+ "class": "_fc-group-container",
751
+ "key": key
752
+ }, [createVNode(Type, mergeProps({
753
+ "key": key
754
+ }, {
755
+ disabled: disabled,
756
+ 'onUpdate:modelValue': function onUpdateModelValue(formData) {
757
+ return _this14.formData(key, formData);
758
+ },
759
+ 'onEmit-event': function onEmitEvent(name) {
760
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
761
+ args[_key2 - 1] = arguments[_key2];
762
+ }
763
+
764
+ return _this14.emitEvent(name, args, index, key);
765
+ },
766
+ 'onUpdate:api': function onUpdateApi($f) {
767
+ return _this14.add$f(index, key, $f);
768
+ },
769
+ inFor: true,
770
+ modelValue: _this14.field ? _defineProperty({}, _this14.field, _this14._value(_this14.modelValue[index])) : _this14.modelValue[index],
771
+ rule: rule,
772
+ option: options,
773
+ extendOption: true
774
+ }), null), createVNode("div", {
775
+ "class": "_fc-group-idx"
776
+ }, [index + 1]), btn.length ? createVNode("div", {
777
+ "class": "_fc-group-handle fc-clock"
778
+ }, [btn]) : null]);
779
+ }
658
780
  });
659
781
  return createVNode("div", {
660
782
  "key": 'con',
661
- "class": '_fc-group ' + (disabled ? '_fc-group-disabled' : '')
783
+ "class": '_fc-group ' + (disabled ? '_fc-group-disabled' : '') + (isCardType ? ' _fc-group-card' : '')
662
784
  }, [children]);
663
785
  }
664
786
  });
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @form-create/component-elm-group v3.2.22
2
+ * @form-create/component-elm-group v3.2.31
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 o,nextTick as e,createVNode as t,mergeProps as n}from"vue";function c(r,o){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);o&&(t=t.filter((function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable}))),e.push.apply(e,t)}return e}function u(r){for(var o=1;o<arguments.length;o++){var e=null!=arguments[o]?arguments[o]:{};o%2?c(Object(e),!0).forEach((function(o){f(r,o,e[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):c(Object(e)).forEach((function(o){Object.defineProperty(r,o,Object.getOwnPropertyDescriptor(e,o))}))}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,o,e){return o in r?Object.defineProperty(r,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[o]=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,o){if(!r)return;if("string"==typeof r)return p(r,o);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,o)}(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,o){(null==o||o>r.length)&&(o=r.length);for(var e=0,t=new Array(o);e<o;e++)t[e]=r[e];return t}var l={type:function(r,o){return Object.prototype.toString.call(r)==="[object "+o+"]"},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 o=this.getType(r);return"Function"===o||"AsyncFunction"===o},getType:function(r){var o=Object.prototype.toString.call(r);return/^\[object (.*)\]$/.exec(o)[1]},empty:function(r){return null==r||(!(!Array.isArray(r)||!Array.isArray(r)||r.length)||"string"==typeof r&&!r)}};function d(r,o,e){r[o]=e}function s(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2?arguments[2]:void 0,t=!1;for(var n in o)if(Object.prototype.hasOwnProperty.call(o,n)){var c=o[n];if((t=Array.isArray(c))||l.Object(c)){var u=void 0===r[n];if(t)t=!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(o){return l.type(o,r)}}));var h=Object.assign||function(r){for(var o,e=1;e<arguments.length;e++)for(var t in o=arguments[e])Object.prototype.hasOwnProperty.call(o,t)&&d(r,t,o[t]);return r};function _(r){return function(r){return r&&"object"===i(r)&&"function"==typeof r.then}(r)?r:Promise.resolve(r)}!function(r,o){void 0===o&&(o={});var e=o.insertAt;if(r&&"undefined"!=typeof document){var t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===e&&t.firstChild?t.insertBefore(n,t.firstChild):t.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}}@media (prefers-color-scheme:dark){._fc-group._fc-group-card ._fc-group-container{background:#141414;border-color:#303030}._fc-group._fc-group-card ._fc-group-container:hover{border-color:#434343}._fc-group._fc-group-card ._fc-group-header{background:#1f1f1f;border-bottom-color:#303030}._fc-group._fc-group-card ._fc-group-title{color:hsla(0,0%,100%,.85)}._fc-group._fc-group-card ._fc-group-btn{background:#1f1f1f;border-color:#434343;color:hsla(0,0%,100%,.45)}._fc-group._fc-group-card ._fc-group-btn:hover{background:#111b26;border-color:#177ddc;color:#177ddc}._fc-group._fc-group-card ._fc-group-content{background:#141414}._fc-group._fc-group-card ._fc-group-add{background:#1f1f1f;border-color:#434343;color:hsla(0,0%,100%,.45)}._fc-group._fc-group-card ._fc-group-add:hover{background:#111b26;border-color:#177ddc;color:#177ddc}}');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:o(this.formCreateInject.form.$form())}},emits:["update:modelValue","change","itemMounted","remove","add"],watch:{rule:{handler:function(r,o){var e=this;Object.keys(this.cacheRule).forEach((function(t){var n=e.cacheRule[t];if(n.$f){var c=n.$f.formData();if(r===o)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 o=r-this.modelValue.length;o>0&&this.expandRule(o)},modelValue:{handler:function(r){var o=this;r=r||[];var e=this.sort,t=e.length,n=t-r.length;if(n<0){for(var c=n;c<0;c++)this.addRule(r.length+c,!0);for(var u=0;u<t;u++)this.setValue(e[u],r[u])}else{if(n>0)for(var i=0;i<n;i++)this.removeRule(e[t-i-1]);r.forEach((function(t,n){o.setValue(e[n],r[n])}))}},deep:!0}},methods:{_value:function(r){return r&&(o=r,e=this.field,{}.hasOwnProperty.call(o,e))?r[this.field]:r;var o,e},cache:function(r,o){this.cacheValue[r]=JSON.stringify(o)},input:function(r){this.$emit("update:modelValue",r),this.$emit("change",r)},formData:function(r,o){var e=this,t=this.cacheRule,n=this.sort;if(n.filter((function(r){return t[r]&&t[r].$f})).length===n.length){var c=n.map((function(t){var n=r===t?o:u({},e.cacheRule[t].$f.form),c=e.field?n[e.field]||null:n;return e.cache(t,c),c}));this.input(c)}},setValue:function(r,o){var e=this.field;e&&(o=f({},e,this._value(o))),this.cacheValue[r]!==JSON.stringify(e?o[e]:o)&&(this.cacheRule[r].$f&&this.cacheRule[r].$f.coverValue(o),this.cache(r,o))},addRule:function(r,o){var t=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),o&&e((function(){return t.$emit("add",n,Object.keys(t.cacheRule).length-1)}))},add$f:function(r,o,t){var n=this;this.cacheRule[o].$f=t,e((function(){n.$emit("itemMounted",t,Object.keys(n.cacheRule).indexOf(o))}))},removeRule:function(r,o){var t=this,n=Object.keys(this.cacheRule).indexOf(r);delete this.cacheRule[r],delete this.cacheValue[r],this.sort=Object.keys(this.cacheRule),o&&e((function(){return t.$emit("remove",n)}))},add:function(r){if(!this.disabled&&!1!==this.onBeforeAdd(this.modelValue)){var o=a(this.modelValue);o.push(this.defaultValue?g(this.defaultValue):this.field?null:{}),this.input(o)}},del:function(r,o){var e=this;if(!this.disabled){var t=function(){e.removeRule(o,!0);var t=a(e.modelValue);t.splice(r,1),e.input(t)};_(this.onBeforeRemove(this.modelValue,r)).then((function(r){!1!==r&&t()}))}},addIcon:function(r){return t("div",{class:"_fc-group-btn _fc-group-plus-minus",onClick:this.add},null)},delIcon:function(r,o){var e=this;return t("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",onClick:function(){return e.del(r,o)}},null)},sortUpIcon:function(r){var o=this;return t("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",onClick:function(){return o.changeSort(r,-1)}},null)},sortDownIcon:function(r){var o=this;return t("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",onClick:function(){return o.changeSort(r,1)}},null)},changeSort:function(r,o){var e=this,t=this.sort[r];this.sort[r]=this.sort[r+o],this.sort[r+o]=t,this.formCreateInject.subForm(this.sort.map((function(r){return e.cacheRule[r].$f}))),this.formData(0)},sortIcon:function(r,o){var e=this,n=r>0,c=r<o-1;return n||c?n&&c?t("div",{class:"_fc-group-btn _fc-group-sort"},[t("div",{class:"_fc-group-sort-up",onClick:function(){return e.changeSort(r,-1)}},null),t("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,o,e){var t=this;if(this.$slots.button)return this.$slots.button({total:r,index:o,vm:this,key:e,del:function(){return t.del(o,e)},add:this.add});var n=[];if((!this.max||r<this.max)&&r===o+1&&n.push(this.addIcon(e)),r>this.min&&n.push(this.delIcon(o,e)),this.sortBtn){var c=this.sortIcon(o,r);c&&n.push(c)}return n},emitEvent:function(r,o,e,t){this.$emit.apply(this,[r].concat(a(o),[this.cacheRule[t].$f,e]))},expandRule:function(r){for(var o=0;o<r;o++)this.modelValue.push(this.field?null:{});this.input(a(this.modelValue))},getTitle:function(r,o){return"function"==typeof this.title?this.title(r,this.modelValue[r],o):"string"==typeof this.title&&this.title.replace("{index}",r+1)}},created:function(){for(var r=(this.expand||0)-this.modelValue.length,o=0;o<this.modelValue.length;o++)this.addRule(o);r>0&&this.expandRule(r)},render:function(){var r=this,o=this.sort,e=this.button,c=this.form,u=this.disabled,i="card"===this.type,a=0===o.length?this.$slots.default?this.$slots.default({vm:this,add:this.add}):t("div",{key:"a_def",class:"_fc-group-plus-minus _fc-group-add fc-clock",onClick:this.add},null):o.map((function(a,p){var l=r.cacheRule[a],d=l.rule,s=l.options,g=e&&!u?r.makeIcon(o.length,p,a):[],h=r.getTitle(p,a);return t("div",{class:"_fc-group-container",key:a},i?[t("div",{class:"_fc-group-header"},[!1===h?t("div",{class:"_fc-group-idx"},[p+1]):null,!1!==h?t("div",{class:"_fc-group-title"},[h]):null,t("div",{class:"_fc-group-handle fc-clock"},[g.length?g:null])]),t("div",{class:"_fc-group-content"},[t(c,n({key:a},{disabled:u,"onUpdate:modelValue":function(o){return r.formData(a,o)},"onEmit-event":function(o){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n<e;n++)t[n-1]=arguments[n];return r.emitEvent(o,t,p,a)},"onUpdate:api":function(o){return r.add$f(p,a,o)},inFor:!0,modelValue:r.field?f({},r.field,r._value(r.modelValue[p])):r.modelValue[p],rule:d,option:s,extendOption:!0}),null)])]:[t(c,n({key:a},{disabled:u,"onUpdate:modelValue":function(o){return r.formData(a,o)},"onEmit-event":function(o){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n<e;n++)t[n-1]=arguments[n];return r.emitEvent(o,t,p,a)},"onUpdate:api":function(o){return r.add$f(p,a,o)},inFor:!0,modelValue:r.field?f({},r.field,r._value(r.modelValue[p])):r.modelValue[p],rule:d,option:s,extendOption:!0}),null),t("div",{class:"_fc-group-idx"},[p+1]),g.length?t("div",{class:"_fc-group-handle fc-clock"},[g]):null])}));return t("div",{key:"con",class:"_fc-group "+(u?"_fc-group-disabled":"")+(i?" _fc-group-card":"")},[a])}});export{b as default};