jky-component-lib 0.0.46 → 0.0.48

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/umd/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("element-plus"), require("element-plus/es"), require("element-plus/es/components/base/style/css"), require("element-plus/es/components/aside/style/css"), require("element-plus/es/components/scrollbar/style/css")) : typeof define === "function" && define.amd ? define(["exports", "vue", "element-plus", "element-plus/es", "element-plus/es/components/base/style/css", "element-plus/es/components/aside/style/css", "element-plus/es/components/scrollbar/style/css"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.JkyComponentLib = {}, global.Vue, global.ElementPlus, global.es));
3
- })(this, (function(exports2, vue, ElementPlus, es) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("element-plus")) : typeof define === "function" && define.amd ? define(["exports", "vue", "element-plus"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.JkyComponentLib = {}, global.Vue, global.ElementPlus));
3
+ })(this, (function(exports2, vue, ElementPlus) {
4
4
  "use strict";var __defProp = Object.defineProperty;
5
5
  var __defProps = Object.defineProperties;
6
6
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -20,6 +20,18 @@ var __spreadValues = (a, b) => {
20
20
  return a;
21
21
  };
22
22
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
23
35
  var __async = (__this, __arguments, generator) => {
24
36
  return new Promise((resolve, reject) => {
25
37
  var fulfilled = (value) => {
@@ -263,6 +275,12 @@ to {
263
275
  .jky-button-nav-dropdown {
264
276
  /* 不覆盖任何样式,保持 el-dropdown-menu 默认样式 */
265
277
  }
278
+ :root {
279
+ /* 表单组件间距 */
280
+ /* --jky-form-item-gap: 12px; */
281
+ }
282
+
283
+
266
284
  /* Form 组件样式 */
267
285
  .jky-form {
268
286
  /* 表单容器样式 */
@@ -270,6 +288,8 @@ to {
270
288
  .jky-form__title {
271
289
  /* 表单标题样式 */
272
290
  }
291
+
292
+
273
293
  /* FormItem 组件样式 */
274
294
  .jky-form-item {
275
295
  /* 表单项容器样式 */
@@ -277,6 +297,12 @@ to {
277
297
  .jky-form-item__title {
278
298
  /* 表单项标题样式(无 label 时) */
279
299
  }
300
+ :root {
301
+ /* 表单组件间距 */
302
+ /* --jky-form-item-gap: 12px; */
303
+ }
304
+
305
+
280
306
  /* Form 组件样式 */
281
307
  .jky-form {
282
308
  /* 表单容器样式 */
@@ -284,6 +310,8 @@ to {
284
310
  .jky-form__title {
285
311
  /* 表单标题样式 */
286
312
  }
313
+
314
+
287
315
  /* FormItem 组件样式 */
288
316
  .jky-form-item {
289
317
  /* 表单项容器样式 */
@@ -539,6 +567,9 @@ img {
539
567
  @layer properties {
540
568
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
541
569
  *, :before, :after, ::backdrop {
570
+ --tw-translate-x: 0;
571
+ --tw-translate-y: 0;
572
+ --tw-translate-z: 0;
542
573
  --tw-rotate-x: initial;
543
574
  --tw-rotate-y: initial;
544
575
  --tw-rotate-z: initial;
@@ -561,6 +592,20 @@ img {
561
592
  --tw-drop-shadow-color: initial;
562
593
  --tw-drop-shadow-alpha: 100%;
563
594
  --tw-drop-shadow-size: initial;
595
+ --tw-shadow: 0 0 #0000;
596
+ --tw-shadow-color: initial;
597
+ --tw-shadow-alpha: 100%;
598
+ --tw-inset-shadow: 0 0 #0000;
599
+ --tw-inset-shadow-color: initial;
600
+ --tw-inset-shadow-alpha: 100%;
601
+ --tw-ring-color: initial;
602
+ --tw-ring-shadow: 0 0 #0000;
603
+ --tw-inset-ring-color: initial;
604
+ --tw-inset-ring-shadow: 0 0 #0000;
605
+ --tw-ring-inset: initial;
606
+ --tw-ring-offset-width: 0px;
607
+ --tw-ring-offset-color: #fff;
608
+ --tw-ring-offset-shadow: 0 0 #0000;
564
609
  }
565
610
  }
566
611
  }
@@ -572,12 +617,28 @@ img {
572
617
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
573
618
  "Courier New", monospace;
574
619
  --color-red-500: oklch(63.7% .237 25.331);
620
+ --color-yellow-50: oklch(98.7% .026 102.212);
621
+ --color-yellow-600: oklch(68.1% .162 75.834);
622
+ --color-yellow-800: oklch(47.6% .114 61.907);
623
+ --color-green-50: oklch(98.2% .018 155.826);
575
624
  --color-green-500: oklch(72.3% .219 149.579);
625
+ --color-green-600: oklch(62.7% .194 149.214);
626
+ --color-green-800: oklch(44.8% .119 151.328);
627
+ --color-blue-50: oklch(97% .014 254.604);
576
628
  --color-blue-500: oklch(62.3% .214 259.815);
577
629
  --color-blue-600: oklch(54.6% .245 262.881);
630
+ --color-blue-800: oklch(42.4% .199 265.638);
631
+ --color-indigo-50: oklch(96.2% .018 272.314);
632
+ --color-indigo-600: oklch(51.1% .262 276.966);
633
+ --color-indigo-800: oklch(39.8% .195 277.366);
634
+ --color-purple-50: oklch(97.7% .014 308.299);
578
635
  --color-purple-500: oklch(62.7% .265 303.9);
636
+ --color-purple-600: oklch(55.8% .288 302.321);
637
+ --color-purple-800: oklch(43.8% .218 303.724);
579
638
  --color-gray-100: oklch(96.7% .003 264.542);
580
639
  --color-gray-300: oklch(87.2% .01 258.338);
640
+ --color-gray-400: oklch(70.7% .022 261.325);
641
+ --color-gray-500: oklch(55.1% .027 264.364);
581
642
  --color-gray-600: oklch(44.6% .03 256.802);
582
643
  --color-white: #fff;
583
644
  --spacing: .25rem;
@@ -593,7 +654,9 @@ img {
593
654
  --text-2xl--line-height: calc(2 / 1.5);
594
655
  --font-weight-medium: 500;
595
656
  --font-weight-semibold: 600;
657
+ --font-weight-bold: 700;
596
658
  --radius-md: .375rem;
659
+ --radius-lg: .5rem;
597
660
  --default-transition-duration: .15s;
598
661
  --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
599
662
  --default-font-family: var(--font-sans);
@@ -855,10 +918,18 @@ img {
855
918
  visibility: collapse;
856
919
  }
857
920
 
921
+ .absolute {
922
+ position: absolute;
923
+ }
924
+
858
925
  .fixed {
859
926
  position: fixed;
860
927
  }
861
928
 
929
+ .relative {
930
+ position: relative;
931
+ }
932
+
862
933
  .sticky {
863
934
  position: sticky;
864
935
  }
@@ -871,10 +942,18 @@ img {
871
942
  top: calc(var(--spacing) * 0);
872
943
  }
873
944
 
945
+ .top-1\\/2 {
946
+ top: 50%;
947
+ }
948
+
874
949
  .top-2 {
875
950
  top: calc(var(--spacing) * 2);
876
951
  }
877
952
 
953
+ .right-3 {
954
+ right: calc(var(--spacing) * 3);
955
+ }
956
+
878
957
  .left-0 {
879
958
  left: calc(var(--spacing) * 0);
880
959
  }
@@ -883,10 +962,42 @@ img {
883
962
  z-index: 999;
884
963
  }
885
964
 
965
+ .col-span-4 {
966
+ grid-column: span 4 / span 4;
967
+ }
968
+
969
+ .col-span-6 {
970
+ grid-column: span 6 / span 6;
971
+ }
972
+
973
+ .col-span-8 {
974
+ grid-column: span 8 / span 8;
975
+ }
976
+
977
+ .col-span-12 {
978
+ grid-column: span 12 / span 12;
979
+ }
980
+
981
+ .col-span-24 {
982
+ grid-column: span 24 / span 24;
983
+ }
984
+
985
+ .mt-1 {
986
+ margin-top: calc(var(--spacing) * 1);
987
+ }
988
+
989
+ .mt-2 {
990
+ margin-top: calc(var(--spacing) * 2);
991
+ }
992
+
886
993
  .mt-4 {
887
994
  margin-top: calc(var(--spacing) * 4);
888
995
  }
889
996
 
997
+ .mt-6 {
998
+ margin-top: calc(var(--spacing) * 6);
999
+ }
1000
+
890
1001
  .mr-2 {
891
1002
  margin-right: calc(var(--spacing) * 2);
892
1003
  }
@@ -1471,6 +1582,11 @@ img {
1471
1582
  flex: 1;
1472
1583
  }
1473
1584
 
1585
+ .-translate-y-1\\/2 {
1586
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1587
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1588
+ }
1589
+
1474
1590
  .transform {
1475
1591
  transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
1476
1592
  }
@@ -1479,6 +1595,14 @@ img {
1479
1595
  cursor: pointer;
1480
1596
  }
1481
1597
 
1598
+ .list-inside {
1599
+ list-style-position: inside;
1600
+ }
1601
+
1602
+ .list-disc {
1603
+ list-style-type: disc;
1604
+ }
1605
+
1482
1606
  .grid-cols-3 {
1483
1607
  grid-template-columns: repeat(3, minmax(0, 1fr));
1484
1608
  }
@@ -1523,14 +1647,18 @@ img {
1523
1647
  margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1524
1648
  }
1525
1649
 
1526
- .rounded {
1527
- border-radius: .25rem;
1650
+ .self-center {
1651
+ align-self: center;
1528
1652
  }
1529
1653
 
1530
1654
  .rounded-full {
1531
1655
  border-radius: 3.40282e38px;
1532
1656
  }
1533
1657
 
1658
+ .rounded-lg {
1659
+ border-radius: var(--radius-lg);
1660
+ }
1661
+
1534
1662
  .rounded-md {
1535
1663
  border-radius: var(--radius-md);
1536
1664
  }
@@ -1540,12 +1668,16 @@ img {
1540
1668
  border-width: 1px;
1541
1669
  }
1542
1670
 
1671
+ .border-gray-300 {
1672
+ border-color: var(--color-gray-300);
1673
+ }
1674
+
1543
1675
  .bg-\\(--my-var\\), .bg-\\[var\\(--my-var\\)\\] {
1544
1676
  background-color: var(--my-var);
1545
1677
  }
1546
1678
 
1547
- .bg-blue-500 {
1548
- background-color: var(--color-blue-500);
1679
+ .bg-blue-50 {
1680
+ background-color: var(--color-blue-50);
1549
1681
  }
1550
1682
 
1551
1683
  .bg-gray-100 {
@@ -1556,14 +1688,22 @@ img {
1556
1688
  background-color: var(--color-gray-100) !important;
1557
1689
  }
1558
1690
 
1559
- .bg-gray-300 {
1560
- background-color: var(--color-gray-300);
1691
+ .bg-green-50 {
1692
+ background-color: var(--color-green-50);
1561
1693
  }
1562
1694
 
1563
1695
  .bg-green-500\\! {
1564
1696
  background-color: var(--color-green-500) !important;
1565
1697
  }
1566
1698
 
1699
+ .bg-indigo-50 {
1700
+ background-color: var(--color-indigo-50);
1701
+ }
1702
+
1703
+ .bg-purple-50 {
1704
+ background-color: var(--color-purple-50);
1705
+ }
1706
+
1567
1707
  .bg-purple-500\\! {
1568
1708
  background-color: var(--color-purple-500) !important;
1569
1709
  }
@@ -1576,6 +1716,10 @@ img {
1576
1716
  background-color: var(--color-white);
1577
1717
  }
1578
1718
 
1719
+ .bg-yellow-50 {
1720
+ background-color: var(--color-yellow-50);
1721
+ }
1722
+
1579
1723
  .p-2 {
1580
1724
  padding: calc(var(--spacing) * 2);
1581
1725
  }
@@ -1629,6 +1773,11 @@ img {
1629
1773
  line-height: var(--tw-leading, var(--text-xl--line-height));
1630
1774
  }
1631
1775
 
1776
+ .font-bold {
1777
+ --tw-font-weight: var(--font-weight-bold);
1778
+ font-weight: var(--font-weight-bold);
1779
+ }
1780
+
1632
1781
  .font-medium {
1633
1782
  --tw-font-weight: var(--font-weight-medium);
1634
1783
  font-weight: var(--font-weight-medium);
@@ -1643,10 +1792,26 @@ img {
1643
1792
  color: #fff;
1644
1793
  }
1645
1794
 
1795
+ .text-blue-500 {
1796
+ color: var(--color-blue-500);
1797
+ }
1798
+
1646
1799
  .text-blue-600 {
1647
1800
  color: var(--color-blue-600);
1648
1801
  }
1649
1802
 
1803
+ .text-blue-800 {
1804
+ color: var(--color-blue-800);
1805
+ }
1806
+
1807
+ .text-gray-400 {
1808
+ color: var(--color-gray-400);
1809
+ }
1810
+
1811
+ .text-gray-500 {
1812
+ color: var(--color-gray-500);
1813
+ }
1814
+
1650
1815
  .text-gray-600 {
1651
1816
  color: var(--color-gray-600);
1652
1817
  }
@@ -1655,6 +1820,30 @@ img {
1655
1820
  color: var(--color-gray-600) !important;
1656
1821
  }
1657
1822
 
1823
+ .text-green-600 {
1824
+ color: var(--color-green-600);
1825
+ }
1826
+
1827
+ .text-green-800 {
1828
+ color: var(--color-green-800);
1829
+ }
1830
+
1831
+ .text-indigo-600 {
1832
+ color: var(--color-indigo-600);
1833
+ }
1834
+
1835
+ .text-indigo-800 {
1836
+ color: var(--color-indigo-800);
1837
+ }
1838
+
1839
+ .text-purple-600 {
1840
+ color: var(--color-purple-600);
1841
+ }
1842
+
1843
+ .text-purple-800 {
1844
+ color: var(--color-purple-800);
1845
+ }
1846
+
1658
1847
  .text-red-500 {
1659
1848
  color: var(--color-red-500);
1660
1849
  }
@@ -1667,6 +1856,14 @@ img {
1667
1856
  color: var(--color-white) !important;
1668
1857
  }
1669
1858
 
1859
+ .text-yellow-600 {
1860
+ color: var(--color-yellow-600);
1861
+ }
1862
+
1863
+ .text-yellow-800 {
1864
+ color: var(--color-yellow-800);
1865
+ }
1866
+
1670
1867
  .lowercase {
1671
1868
  text-transform: lowercase;
1672
1869
  }
@@ -1693,7 +1890,32 @@ img {
1693
1890
  }
1694
1891
  }
1695
1892
 
1893
+ .focus\\:border-transparent:focus {
1894
+ border-color: #0000;
1895
+ }
1896
+
1897
+ .focus\\:ring-2:focus {
1898
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1899
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1900
+ }
1901
+
1902
+ .focus\\:ring-blue-500:focus {
1903
+ --tw-ring-color: var(--color-blue-500);
1904
+ }
1905
+
1696
1906
  @media (min-width: 48rem) {
1907
+ .md\\:col-span-6 {
1908
+ grid-column: span 6 / span 6;
1909
+ }
1910
+
1911
+ .md\\:col-span-8 {
1912
+ grid-column: span 8 / span 8;
1913
+ }
1914
+
1915
+ .md\\:col-span-12 {
1916
+ grid-column: span 12 / span 12;
1917
+ }
1918
+
1697
1919
  .md\\:block {
1698
1920
  display: block;
1699
1921
  }
@@ -1706,6 +1928,38 @@ img {
1706
1928
  display: none;
1707
1929
  }
1708
1930
  }
1931
+
1932
+ @media (min-width: 64rem) {
1933
+ .lg\\:col-span-4 {
1934
+ grid-column: span 4 / span 4;
1935
+ }
1936
+
1937
+ .lg\\:col-span-6 {
1938
+ grid-column: span 6 / span 6;
1939
+ }
1940
+
1941
+ .lg\\:col-span-8 {
1942
+ grid-column: span 8 / span 8;
1943
+ }
1944
+ }
1945
+ }
1946
+
1947
+ @property --tw-translate-x {
1948
+ syntax: "*";
1949
+ inherits: false;
1950
+ initial-value: 0;
1951
+ }
1952
+
1953
+ @property --tw-translate-y {
1954
+ syntax: "*";
1955
+ inherits: false;
1956
+ initial-value: 0;
1957
+ }
1958
+
1959
+ @property --tw-translate-z {
1960
+ syntax: "*";
1961
+ inherits: false;
1962
+ initial-value: 0;
1709
1963
  }
1710
1964
 
1711
1965
  @property --tw-rotate-x {
@@ -1821,9 +2075,88 @@ img {
1821
2075
  syntax: "*";
1822
2076
  inherits: false
1823
2077
  }
2078
+
2079
+ @property --tw-shadow {
2080
+ syntax: "*";
2081
+ inherits: false;
2082
+ initial-value: 0 0 #0000;
2083
+ }
2084
+
2085
+ @property --tw-shadow-color {
2086
+ syntax: "*";
2087
+ inherits: false
2088
+ }
2089
+
2090
+ @property --tw-shadow-alpha {
2091
+ syntax: "<percentage>";
2092
+ inherits: false;
2093
+ initial-value: 100%;
2094
+ }
2095
+
2096
+ @property --tw-inset-shadow {
2097
+ syntax: "*";
2098
+ inherits: false;
2099
+ initial-value: 0 0 #0000;
2100
+ }
2101
+
2102
+ @property --tw-inset-shadow-color {
2103
+ syntax: "*";
2104
+ inherits: false
2105
+ }
2106
+
2107
+ @property --tw-inset-shadow-alpha {
2108
+ syntax: "<percentage>";
2109
+ inherits: false;
2110
+ initial-value: 100%;
2111
+ }
2112
+
2113
+ @property --tw-ring-color {
2114
+ syntax: "*";
2115
+ inherits: false
2116
+ }
2117
+
2118
+ @property --tw-ring-shadow {
2119
+ syntax: "*";
2120
+ inherits: false;
2121
+ initial-value: 0 0 #0000;
2122
+ }
2123
+
2124
+ @property --tw-inset-ring-color {
2125
+ syntax: "*";
2126
+ inherits: false
2127
+ }
2128
+
2129
+ @property --tw-inset-ring-shadow {
2130
+ syntax: "*";
2131
+ inherits: false;
2132
+ initial-value: 0 0 #0000;
2133
+ }
2134
+
2135
+ @property --tw-ring-inset {
2136
+ syntax: "*";
2137
+ inherits: false
2138
+ }
2139
+
2140
+ @property --tw-ring-offset-width {
2141
+ syntax: "<length>";
2142
+ inherits: false;
2143
+ initial-value: 0;
2144
+ }
2145
+
2146
+ @property --tw-ring-offset-color {
2147
+ syntax: "*";
2148
+ inherits: false;
2149
+ initial-value: #fff;
2150
+ }
2151
+
2152
+ @property --tw-ring-offset-shadow {
2153
+ syntax: "*";
2154
+ inherits: false;
2155
+ initial-value: 0 0 #0000;
2156
+ }
1824
2157
  /*$vite$:1*/`;
1825
2158
  document.head.appendChild(__vite_style__);
1826
- const version$1 = "0.0.46";
2159
+ const version$1 = "0.0.48";
1827
2160
  const INSTALLED_KEY = Symbol("INSTALLED_KEY");
1828
2161
  function createInstaller(components2 = []) {
1829
2162
  const install2 = (app, options) => {
@@ -1850,7 +2183,7 @@ img {
1850
2183
  return main;
1851
2184
  }
1852
2185
  const _hoisted_1$5 = ["disabled"];
1853
- const _hoisted_2$3 = {
2186
+ const _hoisted_2$4 = {
1854
2187
  key: 0,
1855
2188
  class: "jky-button__loading"
1856
2189
  };
@@ -1895,7 +2228,7 @@ img {
1895
2228
  disabled: __props.disabled || __props.loading,
1896
2229
  onClick: handleClick
1897
2230
  }, [
1898
- __props.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$3, [..._cache[0] || (_cache[0] = [
2231
+ __props.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$4, [..._cache[0] || (_cache[0] = [
1899
2232
  vue.createElementVNode("svg", {
1900
2233
  class: "loading-spinner",
1901
2234
  viewBox: "0 0 50 50"
@@ -2070,17 +2403,18 @@ img {
2070
2403
  const JkyButtonNav = installWithSFC(_sfc_main$7);
2071
2404
  const _hoisted_1$3 = {
2072
2405
  key: 0,
2073
- class: "jky-form-item__title mb-2 text-base font-medium"
2406
+ style: { "display": "none" }
2074
2407
  };
2075
- const _hoisted_2$2 = {
2408
+ const _hoisted_2$3 = { class: "jky-form-item__title mb-2 text-base font-medium" };
2409
+ const _hoisted_3$2 = {
2076
2410
  key: 0,
2077
2411
  class: "flex items-center"
2078
2412
  };
2079
- const _hoisted_3$2 = {
2413
+ const _hoisted_4$2 = {
2080
2414
  key: 0,
2081
2415
  class: "mr-2"
2082
2416
  };
2083
- const _hoisted_4$2 = {
2417
+ const _hoisted_5$2 = {
2084
2418
  key: 1,
2085
2419
  class: "ml-2"
2086
2420
  };
@@ -2126,7 +2460,8 @@ img {
2126
2460
  });
2127
2461
  const modelValue = vue.computed({
2128
2462
  get: () => props.model[props.field],
2129
- set: (_val) => {
2463
+ set: (val) => {
2464
+ props.model[props.field] = val;
2130
2465
  }
2131
2466
  });
2132
2467
  const isHidden = vue.computed(() => {
@@ -2139,20 +2474,71 @@ img {
2139
2474
  }
2140
2475
  return props.config.hidden || false;
2141
2476
  });
2142
- const spanClass = vue.computed(() => {
2143
- const span = props.config.span || 12;
2144
- return `col-span-${span}`;
2477
+ const formItemProps = vue.computed(() => {
2478
+ const config = props.config;
2479
+ const _a = config, {
2480
+ field,
2481
+ type,
2482
+ title,
2483
+ placeholder,
2484
+ componentProps: componentProps2,
2485
+ hidden,
2486
+ className,
2487
+ customStyle,
2488
+ children,
2489
+ render,
2490
+ prepend,
2491
+ append,
2492
+ prefixIcon,
2493
+ suffixIcon,
2494
+ clearable,
2495
+ filterable,
2496
+ multiple,
2497
+ options,
2498
+ formatValue,
2499
+ formatModel,
2500
+ noLabelMargin,
2501
+ titleRender
2502
+ } = _a, rest = __objRest(_a, [
2503
+ "field",
2504
+ "type",
2505
+ "title",
2506
+ "placeholder",
2507
+ "componentProps",
2508
+ "hidden",
2509
+ "className",
2510
+ "customStyle",
2511
+ "children",
2512
+ "render",
2513
+ "prepend",
2514
+ "append",
2515
+ "prefixIcon",
2516
+ "suffixIcon",
2517
+ "clearable",
2518
+ "filterable",
2519
+ "multiple",
2520
+ "options",
2521
+ "formatValue",
2522
+ "formatModel",
2523
+ "noLabelMargin",
2524
+ "titleRender"
2525
+ ]);
2526
+ return rest;
2145
2527
  });
2146
2528
  function renderComponent(type) {
2147
2529
  var _a, _b, _c;
2148
2530
  const commonProps = __spreadValues({
2149
2531
  "modelValue": modelValue.value,
2150
- "onUpdate:modelValue": (_val) => {
2532
+ "onUpdate:modelValue": (val) => {
2533
+ props.model[props.field] = val;
2151
2534
  },
2152
2535
  "placeholder": props.config.placeholder,
2153
- "disabled": props.disabled || props.config.disabled || props.readonly,
2536
+ "disabled": props.disabled,
2154
2537
  "clearable": (_a = props.config.clearable) != null ? _a : true
2155
2538
  }, componentProps.value);
2539
+ const inputNumberProps = type === "input-number" ? __spreadProps(__spreadValues({}, commonProps), {
2540
+ modelValue: commonProps.modelValue === "" ? null : commonProps.modelValue
2541
+ }) : commonProps;
2156
2542
  switch (type) {
2157
2543
  case "input":
2158
2544
  return vue.h(ElementPlus.ElInput, __spreadProps(__spreadValues({}, commonProps), {
@@ -2205,7 +2591,7 @@ img {
2205
2591
  default: () => options.map(
2206
2592
  (option) => vue.h(ElementPlus.ElRadio, {
2207
2593
  key: option.value,
2208
- label: option.value,
2594
+ value: option.value,
2209
2595
  disabled: option.disabled
2210
2596
  }, {
2211
2597
  default: () => option.label
@@ -2216,14 +2602,17 @@ img {
2216
2602
  }
2217
2603
  case "checkbox-group": {
2218
2604
  const options = props.config.options || [];
2605
+ const arrayModelValue = Array.isArray(modelValue.value) ? modelValue.value : [];
2219
2606
  return vue.h(
2220
2607
  ElementPlus.ElCheckboxGroup,
2221
- __spreadValues({}, commonProps),
2608
+ __spreadProps(__spreadValues({}, commonProps), {
2609
+ modelValue: arrayModelValue
2610
+ }),
2222
2611
  {
2223
2612
  default: () => options.map(
2224
2613
  (option) => vue.h(ElementPlus.ElCheckbox, {
2225
2614
  key: option.value,
2226
- label: option.value,
2615
+ value: option.value,
2227
2616
  disabled: option.disabled
2228
2617
  }, {
2229
2618
  default: () => option.label
@@ -2245,7 +2634,7 @@ img {
2245
2634
  case "rate":
2246
2635
  return vue.h(ElementPlus.ElRate, __spreadValues({}, commonProps));
2247
2636
  case "input-number":
2248
- return vue.h(ElementPlus.ElInputNumber, __spreadValues({}, commonProps));
2637
+ return vue.h(ElementPlus.ElInputNumber, inputNumberProps);
2249
2638
  case "custom":
2250
2639
  return (_c = (_b = props.config).render) == null ? void 0 : _c.call(_b, commonProps);
2251
2640
  default:
@@ -2253,37 +2642,38 @@ img {
2253
2642
  }
2254
2643
  }
2255
2644
  return (_ctx, _cache) => {
2256
- var _a, _b, _c, _d, _e;
2257
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
2258
- class: vue.normalizeClass([[
2259
- __props.config.className,
2260
- spanClass.value,
2261
- ((_a = __props.config.responsiveSpan) == null ? void 0 : _a.xs) ? `xs:col-span-${__props.config.responsiveSpan.xs}` : "",
2262
- ((_b = __props.config.responsiveSpan) == null ? void 0 : _b.sm) ? `sm:col-span-${__props.config.responsiveSpan.sm}` : "",
2263
- ((_c = __props.config.responsiveSpan) == null ? void 0 : _c.md) ? `md:col-span-${__props.config.responsiveSpan.md}` : "",
2264
- ((_d = __props.config.responsiveSpan) == null ? void 0 : _d.lg) ? `lg:col-span-${__props.config.responsiveSpan.lg}` : "",
2265
- ((_e = __props.config.responsiveSpan) == null ? void 0 : _e.xl) ? `xl:col-span-${__props.config.responsiveSpan.xl}` : ""
2266
- ], "jky-form-item"])
2267
- }, [
2268
- __props.config.title && !__props.config.label ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, vue.toDisplayString(__props.config.title), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElFormItem), vue.mergeProps({
2269
- key: 1,
2270
- label: __props.config.label,
2271
- prop: __props.field,
2272
- rules: __props.config.rules,
2273
- required: __props.config.required
2274
- }, _ctx.$attrs), {
2275
- default: vue.withCtx(() => [
2276
- __props.config.prepend || __props.config.append ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
2277
- __props.config.prepend ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$2, vue.toDisplayString(__props.config.prepend), 1)) : vue.createCommentVNode("", true),
2278
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")))),
2279
- __props.config.append ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$2, vue.toDisplayString(__props.config.append), 1)) : vue.createCommentVNode("", true)
2280
- ])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")), { key: 1 }))
2645
+ return isHidden.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3)) : __props.config.title && !__props.config.label ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElFormItem), vue.mergeProps({
2646
+ key: 1,
2647
+ prop: __props.field
2648
+ }, __spreadValues(__spreadValues({}, formItemProps.value), _ctx.$attrs), {
2649
+ class: ["jky-form-item", [__props.config.className]],
2650
+ style: [__props.config.customStyle]
2651
+ }), {
2652
+ default: vue.withCtx(() => [
2653
+ vue.createElementVNode("div", _hoisted_2$3, [
2654
+ __props.config.titleRender ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.config.titleRender({ model: modelValue.value, field: __props.field })), { key: 0 })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
2655
+ vue.createTextVNode(vue.toDisplayString(__props.config.title), 1)
2656
+ ], 64))
2281
2657
  ]),
2282
- _: 1
2283
- }, 16, ["label", "prop", "rules", "required"]))
2284
- ], 2)), [
2285
- [vue.vShow, !isHidden.value]
2286
- ]);
2658
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input"))))
2659
+ ]),
2660
+ _: 1
2661
+ }, 16, ["prop", "class", "style"])) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElFormItem), vue.mergeProps({
2662
+ key: 2,
2663
+ label: __props.config.label,
2664
+ prop: __props.field
2665
+ }, __spreadValues(__spreadValues({}, formItemProps.value), _ctx.$attrs), {
2666
+ class: ["jky-form-item", [__props.config.className]]
2667
+ }), {
2668
+ default: vue.withCtx(() => [
2669
+ __props.config.prepend || __props.config.append ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2, [
2670
+ __props.config.prepend ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$2, vue.toDisplayString(__props.config.prepend), 1)) : vue.createCommentVNode("", true),
2671
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")))),
2672
+ __props.config.append ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$2, vue.toDisplayString(__props.config.append), 1)) : vue.createCommentVNode("", true)
2673
+ ])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")), { key: 1 }))
2674
+ ]),
2675
+ _: 1
2676
+ }, 16, ["label", "prop", "class"]));
2287
2677
  };
2288
2678
  }
2289
2679
  }));
@@ -2291,6 +2681,10 @@ img {
2291
2681
  key: 0,
2292
2682
  class: "jky-form__title mb-4 text-xl font-semibold"
2293
2683
  };
2684
+ const _hoisted_2$2 = {
2685
+ key: 1,
2686
+ class: "jky-form__footer mt-6 flex justify-end gap-2"
2687
+ };
2294
2688
  const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2295
2689
  name: "JkyForm"
2296
2690
  }), {
@@ -2307,7 +2701,14 @@ img {
2307
2701
  readonly: { type: Boolean },
2308
2702
  disabled: { type: Boolean },
2309
2703
  watchDeep: { type: Boolean, default: true },
2704
+ showFooter: { type: Boolean, default: false },
2705
+ submitText: { default: "提交" },
2706
+ cancelText: { default: "取消" },
2707
+ submitDisabled: { type: Boolean },
2708
+ cancelDisabled: { type: Boolean },
2310
2709
  onValidate: {},
2710
+ onSubmit: {},
2711
+ onReset: {},
2311
2712
  model: {},
2312
2713
  rules: {},
2313
2714
  labelPosition: { default: "right" },
@@ -2327,7 +2728,7 @@ img {
2327
2728
  "modelValue": { required: true, default: () => ({}) },
2328
2729
  "modelModifiers": {}
2329
2730
  }),
2330
- emits: /* @__PURE__ */ vue.mergeModels(["change", "validate"], ["update:modelValue"]),
2731
+ emits: /* @__PURE__ */ vue.mergeModels(["change", "validate", "submit", "reset"], ["update:modelValue"]),
2331
2732
  setup(__props, { expose: __expose, emit: __emit }) {
2332
2733
  const props = __props;
2333
2734
  const emit = __emit;
@@ -2364,8 +2765,10 @@ img {
2364
2765
  });
2365
2766
  }
2366
2767
  function resetFields() {
2367
- var _a;
2768
+ var _a, _b;
2368
2769
  (_a = formRef.value) == null ? void 0 : _a.resetFields();
2770
+ emit("reset");
2771
+ (_b = props.onReset) == null ? void 0 : _b.call(props);
2369
2772
  }
2370
2773
  function clearValidate(props2) {
2371
2774
  var _a;
@@ -2374,11 +2777,27 @@ img {
2374
2777
  function getFormInstance() {
2375
2778
  return formRef.value;
2376
2779
  }
2780
+ function handleSubmit() {
2781
+ return __async(this, null, function* () {
2782
+ var _a, _b;
2783
+ try {
2784
+ yield (_a = formRef.value) == null ? void 0 : _a.validate();
2785
+ emit("submit", __spreadValues({}, modelValue.value));
2786
+ (_b = props.onSubmit) == null ? void 0 : _b.call(props, __spreadValues({}, modelValue.value));
2787
+ } catch (error) {
2788
+ emit("validate", { valid: false, fields: error.fields });
2789
+ }
2790
+ });
2791
+ }
2792
+ function handleCancel() {
2793
+ resetFields();
2794
+ }
2377
2795
  __expose({
2378
2796
  validate,
2379
2797
  resetFields,
2380
2798
  clearValidate,
2381
- getFormInstance
2799
+ getFormInstance,
2800
+ formRef
2382
2801
  });
2383
2802
  return (_ctx, _cache) => {
2384
2803
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -2394,56 +2813,66 @@ img {
2394
2813
  size: __props.size
2395
2814
  }, _ctx.$attrs), {
2396
2815
  default: vue.withCtx(() => [
2397
- vue.createElementVNode("div", {
2398
- class: "grid",
2399
- style: vue.normalizeStyle({
2400
- gridTemplateColumns: "repeat(12, minmax(0, 1fr))",
2401
- gap: `${__props.gutter}px`
2402
- })
2403
- }, [
2404
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
2405
- return vue.openBlock(), vue.createBlock(_sfc_main$6, {
2406
- key: item.field,
2407
- field: item.field,
2408
- config: item,
2409
- model: modelValue.value,
2410
- readonly: __props.readonly,
2411
- disabled: __props.disabled
2412
- }, null, 8, ["field", "config", "model", "readonly", "disabled"]);
2413
- }), 128))
2414
- ], 4)
2816
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
2817
+ return vue.openBlock(), vue.createBlock(_sfc_main$6, {
2818
+ key: item.field,
2819
+ field: item.field,
2820
+ config: item,
2821
+ model: modelValue.value,
2822
+ readonly: __props.readonly,
2823
+ disabled: __props.disabled
2824
+ }, null, 8, ["field", "config", "model", "readonly", "disabled"]);
2825
+ }), 128))
2415
2826
  ]),
2416
2827
  _: 1
2417
- }, 16, ["model", "label-width", "label-position", "size"])
2828
+ }, 16, ["model", "label-width", "label-position", "size"]),
2829
+ props.showFooter ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
2830
+ vue.createVNode(vue.unref(ElementPlus.ElButton), {
2831
+ disabled: __props.cancelDisabled || __props.disabled,
2832
+ onClick: handleCancel
2833
+ }, {
2834
+ default: vue.withCtx(() => [
2835
+ vue.createTextVNode(vue.toDisplayString(__props.cancelText), 1)
2836
+ ]),
2837
+ _: 1
2838
+ }, 8, ["disabled"]),
2839
+ vue.createVNode(vue.unref(ElementPlus.ElButton), {
2840
+ type: "primary",
2841
+ disabled: __props.submitDisabled || __props.disabled,
2842
+ loading: false,
2843
+ onClick: handleSubmit
2844
+ }, {
2845
+ default: vue.withCtx(() => [
2846
+ vue.createTextVNode(vue.toDisplayString(__props.submitText), 1)
2847
+ ]),
2848
+ _: 1
2849
+ }, 8, ["disabled"])
2850
+ ])) : vue.createCommentVNode("", true)
2418
2851
  ], 2);
2419
2852
  };
2420
2853
  }
2421
2854
  }));
2422
2855
  const JkyForm = installWithSFC(_sfc_main$5);
2423
- const _export_sfc = (sfc, props) => {
2424
- const target = sfc.__vccOpts || sfc;
2425
- for (const [key, val] of props) {
2426
- target[key] = val;
2427
- }
2428
- return target;
2429
- };
2430
- const _sfc_main$4 = {};
2431
- function _sfc_render(_ctx, _cache) {
2432
- const _component_el_scrollbar = es.ElScrollbar;
2433
- const _component_el_aside = es.ElAside;
2434
- return vue.openBlock(), vue.createBlock(_component_el_aside, { class: "w-fit pr-0 pb-0 h-full" }, {
2435
- default: vue.withCtx(() => [
2436
- vue.createVNode(_component_el_scrollbar, { class: "bg-white rounded-md" }, {
2856
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2857
+ name: "JkyAside"
2858
+ }), {
2859
+ __name: "Aside",
2860
+ setup(__props) {
2861
+ return (_ctx, _cache) => {
2862
+ return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElAside), { class: "w-fit pr-0 pb-0 h-full" }, {
2437
2863
  default: vue.withCtx(() => [
2438
- vue.renderSlot(_ctx.$slots, "default")
2864
+ vue.createVNode(vue.unref(ElementPlus.ElScrollbar), { class: "bg-white rounded-md" }, {
2865
+ default: vue.withCtx(() => [
2866
+ vue.renderSlot(_ctx.$slots, "default")
2867
+ ]),
2868
+ _: 3
2869
+ })
2439
2870
  ]),
2440
2871
  _: 3
2441
- })
2442
- ]),
2443
- _: 3
2444
- });
2445
- }
2446
- const Aside = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render]]);
2872
+ });
2873
+ };
2874
+ }
2875
+ }));
2447
2876
  const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2448
2877
  name: "JkyMenu"
2449
2878
  }), {
@@ -2518,11 +2947,11 @@ img {
2518
2947
  return renderMenuItem(item);
2519
2948
  }
2520
2949
  return (_ctx, _cache) => {
2521
- return __props.aside ? (vue.openBlock(), vue.createBlock(Aside, { key: 0 }, {
2950
+ return props.aside ? (vue.openBlock(), vue.createBlock(_sfc_main$4, { key: 0 }, {
2522
2951
  default: vue.withCtx(() => [
2523
2952
  vue.createVNode(vue.unref(ElementPlus.ElMenu), vue.mergeProps({ class: "jky-menu" }, __spreadValues(__spreadValues({}, props), _ctx.$attrs)), {
2524
2953
  default: vue.withCtx(() => [
2525
- __props.menuData && __props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(__props.menuData, (item) => {
2954
+ props.menuData && props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(props.menuData, (item) => {
2526
2955
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderMenuNode(item)), {
2527
2956
  key: item.index || item.id
2528
2957
  });
@@ -2537,7 +2966,7 @@ img {
2537
2966
  class: "jky-menu"
2538
2967
  }, __spreadValues(__spreadValues({}, props), _ctx.$attrs)), {
2539
2968
  default: vue.withCtx(() => [
2540
- __props.menuData && __props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(__props.menuData, (item) => {
2969
+ props.menuData && props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(props.menuData, (item) => {
2541
2970
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderMenuNode(item)), {
2542
2971
  key: item.index || item.id
2543
2972
  });