jky-component-lib 0.0.73 → 0.0.75

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.
Files changed (51) hide show
  1. package/dist/es/components.d.ts +0 -1
  2. package/dist/es/components.js +1 -4
  3. package/dist/es/index.js +0 -15
  4. package/dist/es/menu/Menu.vue.js +42 -40
  5. package/dist/es/menu/MenuItem.vue.js +43 -41
  6. package/dist/es/package.json.js +1 -1
  7. package/dist/es/page-layout/PageLayout.vue.d.ts +1 -1
  8. package/dist/es/page-layout/PageLayout.vue.js +41 -59
  9. package/dist/es/style.css +0 -56
  10. package/dist/es/styles.css +1 -1
  11. package/dist/lib/components.d.ts +0 -1
  12. package/dist/lib/components.js +1 -4
  13. package/dist/lib/index.js +0 -15
  14. package/dist/lib/menu/Menu.vue.js +42 -40
  15. package/dist/lib/menu/MenuItem.vue.js +42 -40
  16. package/dist/lib/package.json.js +1 -1
  17. package/dist/lib/page-layout/PageLayout.vue.d.ts +1 -1
  18. package/dist/lib/page-layout/PageLayout.vue.js +40 -58
  19. package/dist/lib/style.css +0 -56
  20. package/dist/lib/styles.css +1 -1
  21. package/package.json +1 -1
  22. package/dist/es/tabs/TabContent.vue.d.ts +0 -16
  23. package/dist/es/tabs/TabContent.vue.js +0 -65
  24. package/dist/es/tabs/TabContent.vue3.js +0 -5
  25. package/dist/es/tabs/Tabs.vue.d.ts +0 -46
  26. package/dist/es/tabs/Tabs.vue.js +0 -311
  27. package/dist/es/tabs/Tabs.vue3.js +0 -5
  28. package/dist/es/tabs/index.d.ts +0 -9
  29. package/dist/es/tabs/index.js +0 -8
  30. package/dist/es/tabs/routeListener.d.ts +0 -19
  31. package/dist/es/tabs/routeListener.js +0 -26
  32. package/dist/es/tabs/style.css +0 -29
  33. package/dist/es/tabs/useTabs.d.ts +0 -27
  34. package/dist/es/tabs/useTabs.js +0 -59
  35. package/dist/es/tabs/useTabsStore.d.ts +0 -53
  36. package/dist/es/tabs/useTabsStore.js +0 -208
  37. package/dist/lib/tabs/TabContent.vue.d.ts +0 -16
  38. package/dist/lib/tabs/TabContent.vue.js +0 -65
  39. package/dist/lib/tabs/TabContent.vue3.js +0 -5
  40. package/dist/lib/tabs/Tabs.vue.d.ts +0 -46
  41. package/dist/lib/tabs/Tabs.vue.js +0 -311
  42. package/dist/lib/tabs/Tabs.vue3.js +0 -5
  43. package/dist/lib/tabs/index.d.ts +0 -9
  44. package/dist/lib/tabs/index.js +0 -8
  45. package/dist/lib/tabs/routeListener.d.ts +0 -19
  46. package/dist/lib/tabs/routeListener.js +0 -26
  47. package/dist/lib/tabs/style.css +0 -29
  48. package/dist/lib/tabs/useTabs.d.ts +0 -27
  49. package/dist/lib/tabs/useTabs.js +0 -59
  50. package/dist/lib/tabs/useTabsStore.d.ts +0 -53
  51. package/dist/lib/tabs/useTabsStore.js +0 -208
@@ -81,9 +81,7 @@
81
81
  --color-red-700: oklch(50.5% .213 27.518);
82
82
  --color-red-800: oklch(44.4% .177 26.899);
83
83
  --color-red-900: oklch(39.6% .141 25.723);
84
- --color-orange-100: oklch(95.4% .038 75.164);
85
84
  --color-orange-500: oklch(70.5% .213 47.604);
86
- --color-orange-800: oklch(47% .157 37.304);
87
85
  --color-amber-500: oklch(76.9% .188 70.08);
88
86
  --color-yellow-50: oklch(98.7% .026 102.212);
89
87
  --color-yellow-100: oklch(97.3% .071 103.193);
@@ -602,10 +600,6 @@
602
600
  margin-right: calc(var(--spacing) * 4);
603
601
  }
604
602
 
605
- .mb-0 {
606
- margin-bottom: calc(var(--spacing) * 0);
607
- }
608
-
609
603
  .mb-1 {
610
604
  margin-bottom: calc(var(--spacing) * 1);
611
605
  }
@@ -1785,12 +1779,6 @@
1785
1779
  margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
1786
1780
  }
1787
1781
 
1788
- :where(.space-y-2 > :not(:last-child)) {
1789
- --tw-space-y-reverse: 0;
1790
- margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
1791
- margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
1792
- }
1793
-
1794
1782
  :where(.space-y-3 > :not(:last-child)) {
1795
1783
  --tw-space-y-reverse: 0;
1796
1784
  margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
@@ -1894,10 +1882,6 @@
1894
1882
  border-color: var(--color-green-200);
1895
1883
  }
1896
1884
 
1897
- .border-green-500 {
1898
- border-color: var(--color-green-500);
1899
- }
1900
-
1901
1885
  .border-red-200 {
1902
1886
  border-color: var(--color-red-200);
1903
1887
  }
@@ -1910,10 +1894,6 @@
1910
1894
  border-color: var(--color-yellow-200);
1911
1895
  }
1912
1896
 
1913
- .border-yellow-500 {
1914
- border-color: var(--color-yellow-500);
1915
- }
1916
-
1917
1897
  .border-l-\(--el-color-primary\) {
1918
1898
  border-left-color: var(--el-color-primary);
1919
1899
  }
@@ -2016,10 +1996,6 @@
2016
1996
  background-color: var(--color-green-200);
2017
1997
  }
2018
1998
 
2019
- .bg-green-500 {
2020
- background-color: var(--color-green-500);
2021
- }
2022
-
2023
1999
  .bg-green-500\! {
2024
2000
  background-color: var(--color-green-500) !important;
2025
2001
  }
@@ -2028,10 +2004,6 @@
2028
2004
  background-color: var(--color-indigo-50);
2029
2005
  }
2030
2006
 
2031
- .bg-orange-100 {
2032
- background-color: var(--color-orange-100);
2033
- }
2034
-
2035
2007
  .bg-purple-50 {
2036
2008
  background-color: var(--color-purple-50);
2037
2009
  }
@@ -2040,10 +2012,6 @@
2040
2012
  background-color: var(--color-purple-100);
2041
2013
  }
2042
2014
 
2043
- .bg-purple-500 {
2044
- background-color: var(--color-purple-500);
2045
- }
2046
-
2047
2015
  .bg-purple-500\! {
2048
2016
  background-color: var(--color-purple-500) !important;
2049
2017
  }
@@ -2301,10 +2269,6 @@
2301
2269
  padding-block: calc(var(--spacing) * 6);
2302
2270
  }
2303
2271
 
2304
- .py-8 {
2305
- padding-block: calc(var(--spacing) * 8);
2306
- }
2307
-
2308
2272
  .py-12 {
2309
2273
  padding-block: calc(var(--spacing) * 12);
2310
2274
  }
@@ -2525,10 +2489,6 @@
2525
2489
  color: var(--color-indigo-800);
2526
2490
  }
2527
2491
 
2528
- .text-orange-800 {
2529
- color: var(--color-orange-800);
2530
- }
2531
-
2532
2492
  .text-purple-100 {
2533
2493
  color: var(--color-purple-100);
2534
2494
  }
@@ -2597,10 +2557,6 @@
2597
2557
  font-style: italic;
2598
2558
  }
2599
2559
 
2600
- .line-through {
2601
- text-decoration-line: line-through;
2602
- }
2603
-
2604
2560
  .underline {
2605
2561
  text-decoration-line: underline;
2606
2562
  }
@@ -2723,14 +2679,6 @@
2723
2679
  background-color: var(--color-gray-300);
2724
2680
  }
2725
2681
 
2726
- .hover\:bg-green-600:hover {
2727
- background-color: var(--color-green-600);
2728
- }
2729
-
2730
- .hover\:bg-purple-600:hover {
2731
- background-color: var(--color-purple-600);
2732
- }
2733
-
2734
2682
  .hover\:bg-red-200:hover {
2735
2683
  background-color: var(--color-red-200);
2736
2684
  }
@@ -2747,10 +2695,6 @@
2747
2695
  color: var(--color-blue-900);
2748
2696
  }
2749
2697
 
2750
- .hover\:text-red-700:hover {
2751
- color: var(--color-red-700);
2752
- }
2753
-
2754
2698
  .hover\:text-red-900:hover {
2755
2699
  color: var(--color-red-900);
2756
2700
  }
@@ -1 +1 @@
1
- :root{--jky-add-input-gap:12px;--jky-add-input-row-gap:8px;--jky-add-input-min-width:100px;--jky-add-input-action-width:80px}.jky-add-input{display:flex;flex-direction:column;gap:var(--jky-add-input-row-gap);min-width:var(--jky-add-input-min-width)}.jky-add-input__row{align-items:center;display:flex;gap:var(--jky-add-input-gap)}.jky-add-input__key,.jky-add-input__value{flex:1;min-width:0}.jky-add-input__actions{display:flex;flex-shrink:0;gap:var(--jky-add-input-gap);width:var(--jky-add-input-action-width)}:root{--jky-button-primary-bg:#007bff;--jky-button-primary-text:#fff;--jky-button-primary-hover-bg:#0056b3;--jky-button-success-bg:#28a745;--jky-button-success-text:#fff;--jky-button-success-hover-bg:#1e7e34;--jky-button-warning-bg:#ffc107;--jky-button-warning-text:#fff;--jky-button-warning-hover-bg:#e0a800;--jky-button-danger-bg:#dc3545;--jky-button-danger-text:#fff;--jky-button-danger-hover-bg:#c82333;--jky-button-info-bg:#6c757d;--jky-button-info-text:#fff;--jky-button-info-hover-bg:#5a6268;--jky-button-default-bg:#fff;--jky-button-default-text:#606266;--jky-button-default-border:#dcdfe6;--jky-button-default-hover-bg:#f5f7fa;--jky-button-font-size:14px;--jky-button-font-size-small:12px;--jky-button-font-size-large:16px;--jky-button-padding:0 16px;--jky-button-padding-small:0 12px;--jky-button-padding-large:0 20px;--jky-button-height:40px;--jky-button-height-small:32px;--jky-button-height-large:48px;--jky-button-border-radius:0.375rem;--jky-button-disabled-opacity:0.5;--jky-button-disabled-bg:#f5f7fa;--jky-button-disabled-text:#c0c4cc;--jky-button-loading-opacity:0.7;--jky-button-icon-size:1.25rem;--jky-button-icon-margin:0.5rem}.jky-button{align-items:center;background-color:var(--jky-button-default-bg);border:1px solid var(--jky-button-default-border);border-radius:var(--jky-button-border-radius);color:var(--jky-button-default-text);cursor:pointer;display:inline-flex;font-size:var(--jky-button-font-size);font-weight:500;height:var(--jky-button-height);justify-content:center;padding:var(--jky-button-padding);transition:color .2s,background-color .2s}.jky-button--primary{background-color:var(--jky-button-primary-bg);border:none;color:var(--jky-button-primary-text)}.jky-button--primary:hover{background-color:var(--jky-button-primary-hover-bg)}.jky-button--success{background-color:var(--jky-button-success-bg);border:none;color:var(--jky-button-success-text)}.jky-button--success:hover{background-color:var(--jky-button-success-hover-bg)}.jky-button--warning{background-color:var(--jky-button-warning-bg);border:none;color:var(--jky-button-warning-text)}.jky-button--warning:hover{background-color:var(--jky-button-warning-hover-bg)}.jky-button--danger{background-color:var(--jky-button-danger-bg);border:none;color:var(--jky-button-danger-text)}.jky-button--danger:hover{background-color:var(--jky-button-danger-hover-bg)}.jky-button--info{background-color:var(--jky-button-info-bg);border:none;color:var(--jky-button-info-text)}.jky-button--info:hover{background-color:var(--jky-button-info-hover-bg)}.jky-button--small{font-size:var(--jky-button-font-size-small);height:var(--jky-button-height-small);padding:var(--jky-button-padding-small)}.jky-button--large{font-size:var(--jky-button-font-size-large);height:var(--jky-button-height-large);padding:var(--jky-button-padding-large)}.jky-button.is-disabled{background-color:var(--jky-button-disabled-bg);color:var(--jky-button-disabled-text);cursor:not-allowed;opacity:var(--jky-button-disabled-opacity);pointer-events:none}.jky-button.is-loading{opacity:var(--jky-button-loading-opacity);pointer-events:none;position:relative}.jky-button__loading{display:flex;inset:0;position:absolute}.jky-button__icon,.jky-button__loading{align-items:center;justify-content:center}.jky-button__icon{display:inline-flex;font-size:1em;margin-right:var(--jky-button-icon-margin)}.jky-button__icon:only-child{margin-right:0}.jky-button--suffix .jky-button__icon{margin-left:var(--jky-button-icon-margin);margin-right:0}.jky-button:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px #000;outline:2px solid transparent;outline-offset:2px}.loading-spinner{animation:spin 1s linear infinite;height:var(--jky-button-icon-size);width:var(--jky-button-icon-size)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:root{--jky-button-nav-active-bg:var(--el-color-primary);--jky-button-nav-active-text:#fff;--jky-button-nav-inactive-bg:var(--el-fill-color-light);--jky-button-nav-inactive-text:var(--el-text-color-regular);--el-dropdown-menu-margin-left:12px}.jky-button-nav{align-items:center;display:flex;flex-wrap:wrap;.el-dropdown{margin-left:var(--el-dropdown-menu-margin-left)}}.jky-button-nav-item{background-color:var(--jky-button-nav-inactive-bg);color:var(--jky-button-nav-inactive-text);&.is-active,&[aria-pressed=true]{background-color:var(--jky-button-nav-active-bg);color:var(--jky-button-nav-active-text)}}:root{--j-code-mirror-border-color:#dcdfe6;--j-code-mirror-border-radius:4px;--j-code-mirror-height:400px}.j-code-mirror-editor{border-radius:var(--j-code-mirror-border-radius);height:var(--j-code-mirror-height);overflow:hidden;width:100%}.code-mirror-container{height:100%;overflow:auto;width:100%}.code-mirror-container .cm-editor{height:100%}.code-mirror-container .cm-scroller{font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.5;overflow:auto}.code-mirror-container .cm-gutters{background-color:#2c2d2d;border-color:#4c4d4f;color:#909399}:root{--jky-form-item-border-width:4px;--jky-form-item-border-color:var(--el-color-primary);--jky-form-item-bg-color:rgba(var(--el-color-primary-rgb),0.5);--jky-form-grid-cols-xs:1;--jky-form-grid-cols-sm:2;--jky-form-grid-cols-md:2;--jky-form-grid-cols-lg:3;--jky-form-grid-cols-xl:3;--jky-form-grid-cols-2xl:4;--jky-form-grid-cols-3xl:4}.jky-form--grid{display:grid;gap:var(--el-form-item-gutter,16px);grid-template-columns:repeat(var(--jky-form-grid-cols-xs),minmax(0,1fr))}.el-form--inline.jky-form--grid .el-form-item{margin-right:0;.el-form-item__content{align-items:flex-start}}@media (min-width:640px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-sm,var(--jky-form-grid-cols-xs)),minmax(0,1fr))}}@media (min-width:768px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-md,var(--jky-form-grid-cols-sm)),minmax(0,1fr))}}@media (min-width:1024px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-lg,var(--jky-form-grid-cols-md)),minmax(0,1fr))}}@media (min-width:1280px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-xl,var(--jky-form-grid-cols-lg)),minmax(0,1fr))}}@media (min-width:1536px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-2xl,var(--jky-form-grid-cols-xl)),minmax(0,1fr))}}@media (min-width:1920px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-3xl,var(--jky-form-grid-cols-2xl)),minmax(0,1fr))}}:root{--jky-menu-bg-color:#fff;--jky-menu-text-color:#303133;--jky-menu-active-color:#409eff;--jky-menu-hover-bg-color:#f5f7fa;--jky-menu-hover-text-color:#606266;--jky-menu-item-height:56px;--jky-menu-item-padding:0 20px;--jky-menu-item-font-size:14px;--jky-menu-icon-size:18px;--jky-menu-icon-margin:8px;--jky-menu-border-color:#e4e7ed;--jky-menu-disabled-opacity:0.5;--jky-menu-disabled-text-color:#c0c4cc}.jky-menu{li+li{margin-top:0}}:root{--jky-page-header-bg-color:#1890ff;--jky-page-header-bg-size:cover;--jky-page-header-bg-position:center;--jky-page-header-box-shadow:0 2px 8px rgba(0,0,0,.15);--jky-page-header-padding-x:24px;--jky-page-header-padding-x-mobile:16px;--jky-page-header-gap:16px;--jky-page-header-gap-mobile:12px;--jky-page-header-gap-left:12px;--jky-page-header-gap-status:12px;--jky-page-header-gap-center:24px;--jky-page-header-gap-center-mobile:12px;--jky-page-header-title-color:#fff;--jky-page-header-title-size:20px;--jky-page-header-title-size-mobile:16px;--jky-page-header-title-weight:600;--jky-page-header-text-color:hsla(0,0%,100%,.85);--jky-page-header-text-size:16px;--jky-page-header-icon-color:#fff;--jky-page-header-icon-size:20px;--jky-page-header-icon-hover-opacity:0.8;--jky-page-header-logo-height:40px;--jky-page-header-avatar-size:32px}.jky-page-header{background-color:var(--jky-page-header-bg-color);background-position:var(--jky-page-header-bg-position);background-size:var(--jky-page-header-bg-size);box-shadow:var(--jky-page-header-box-shadow);width:100%}.jky-page-header__container{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:100%;padding:0 var(--jky-page-header-padding-x)}.jky-page-header__left{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap-left)}.jky-page-header__logo{height:var(--jky-page-header-logo-height);object-fit:contain;width:auto}.jky-page-header__title{color:var(--jky-page-header-title-color);font-size:var(--jky-page-header-title-size);font-weight:var(--jky-page-header-title-weight);white-space:nowrap}.jky-page-header__center{align-items:center;display:flex;flex:1;justify-content:center;margin:0 var(--jky-page-header-gap-center);min-width:0}.jky-page-header__right{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap)}.jky-page-header__status-icons{align-items:center;display:flex;gap:var(--jky-page-header-gap-status)}.jky-page-header__status-icon{color:var(--jky-page-header-icon-color);cursor:pointer;transition:opacity .2s;&:hover{opacity:var(--jky-page-header-icon-hover-opacity)}}.jky-page-header__time{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size);white-space:nowrap}.jky-page-header__user{align-items:center;color:var(--jky-page-header-text-color);cursor:pointer;display:flex;gap:8px}.jky-page-header__avatar{color:var(--jky-page-header-icon-color);img{height:100%;object-fit:cover;width:100%}}.jky-page-header__username{white-space:nowrap}.jky-page-header__logout,.jky-page-header__username{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size)}@media (max-width:768px){.jky-page-header__container{padding:0 var(--jky-page-header-padding-x-mobile)}.jky-page-header__title{font-size:var(--jky-page-header-title-size-mobile)}.jky-page-header__center{margin:0 var(--jky-page-header-gap-center-mobile)}.jky-page-header__right{gap:var(--jky-page-header-gap-mobile)}}:root{--jky-page-layout-gap:5}.jky-page-layout{column-gap:calc(var(--spacing)*var(--jky-page-layout-gap));.el-menu{border-right:none}}.jky-page-table{--jky-page-table_pagination-position:flex-end;.jky-page-table__pagination{.el-scrollbar__view{display:flex;justify-content:var(--jky-page-table_pagination-position)}}}:root{--jky-rich-editor-border:#d9d9d9;--jky-rich-editor-border-hover:#409eff;--jky-rich-editor-border-radius:4px;--jky-rich-editor-box-shadow:0 0 0 1px #409eff}.jky-rich-editor{width:100%}.jky-rich-editor .tox-tinymce{border:1px solid var(--jky-rich-editor-border);border-radius:var(--jky-rich-editor-border-radius);transition:border-color .2s}.jky-rich-editor .tox-tinymce:hover{border-color:var(--jky-rich-editor-border-hover)}.jky-rich-editor .tox-tinymce:focus-within{border-color:var(--jky-rich-editor-border-hover);box-shadow:var(--jky-rich-editor-box-shadow)}.jky-rich-editor.is-disabled .tox-tinymce{background-color:#f5f7fa;cursor:not-allowed}.jky-rich-editor.is-readonly .tox-tinymce{background-color:#fafafa}:root{--jky-say-hello-bg:#42b883;--jky-say-hello-text:#fff;--jky-say-hello-hover-bg:#3aa876;--jky-say-hello-font-size:16px;--jky-say-hello-padding:8px 20px;--jky-say-hello-margin:4px 2px;--jky-say-hello-border-radius:6px}.jky-say-hello{background-color:var(--jky-say-hello-bg);border-radius:var(--jky-say-hello-border-radius);color:var(--jky-say-hello-text);cursor:pointer;display:inline-block;font-size:var(--jky-say-hello-font-size);margin:var(--jky-say-hello-margin);padding:var(--jky-say-hello-padding);text-align:center;text-decoration:none;transition:background-color .2s ease}.jky-say-hello:hover{background-color:var(--jky-say-hello-hover-bg)}@import "tailwindcss";@plugin "@iconify/tailwind4";@source "../node_modules/jky-component-lib/dist/es/";@source "../docs/**/*.md";@source "./**/*.md";@source "./**/*.vue";@source "./**/*.css";@custom-variant dark (&:is(.dark *));.jky-tabs{--jky-tabs-color:var(--el-text-color-regular);--jky-tabs-active-color:var(--el-color-primary);--jky-tabs-height:40px;--jky-tabs-font-size:14px;.el-tabs__item{color:var(--jky-tabs-color);font-size:var(--jky-tabs-font-size);height:var(--jky-tabs-height);line-height:var(--jky-tabs-height);&.is-active{color:var(--jky-tabs-active-color)}}.el-tabs__active-bar{background-color:var(--jky-tabs-active-color)}}.jky-tabs--route{.el-tabs__item{&.is-closable:hover{.el-tabs__item__close{opacity:1}}}}
1
+ :root{--jky-add-input-gap:12px;--jky-add-input-row-gap:8px;--jky-add-input-min-width:100px;--jky-add-input-action-width:80px}.jky-add-input{display:flex;flex-direction:column;gap:var(--jky-add-input-row-gap);min-width:var(--jky-add-input-min-width)}.jky-add-input__row{align-items:center;display:flex;gap:var(--jky-add-input-gap)}.jky-add-input__key,.jky-add-input__value{flex:1;min-width:0}.jky-add-input__actions{display:flex;flex-shrink:0;gap:var(--jky-add-input-gap);width:var(--jky-add-input-action-width)}:root{--jky-button-primary-bg:#007bff;--jky-button-primary-text:#fff;--jky-button-primary-hover-bg:#0056b3;--jky-button-success-bg:#28a745;--jky-button-success-text:#fff;--jky-button-success-hover-bg:#1e7e34;--jky-button-warning-bg:#ffc107;--jky-button-warning-text:#fff;--jky-button-warning-hover-bg:#e0a800;--jky-button-danger-bg:#dc3545;--jky-button-danger-text:#fff;--jky-button-danger-hover-bg:#c82333;--jky-button-info-bg:#6c757d;--jky-button-info-text:#fff;--jky-button-info-hover-bg:#5a6268;--jky-button-default-bg:#fff;--jky-button-default-text:#606266;--jky-button-default-border:#dcdfe6;--jky-button-default-hover-bg:#f5f7fa;--jky-button-font-size:14px;--jky-button-font-size-small:12px;--jky-button-font-size-large:16px;--jky-button-padding:0 16px;--jky-button-padding-small:0 12px;--jky-button-padding-large:0 20px;--jky-button-height:40px;--jky-button-height-small:32px;--jky-button-height-large:48px;--jky-button-border-radius:0.375rem;--jky-button-disabled-opacity:0.5;--jky-button-disabled-bg:#f5f7fa;--jky-button-disabled-text:#c0c4cc;--jky-button-loading-opacity:0.7;--jky-button-icon-size:1.25rem;--jky-button-icon-margin:0.5rem}.jky-button{align-items:center;background-color:var(--jky-button-default-bg);border:1px solid var(--jky-button-default-border);border-radius:var(--jky-button-border-radius);color:var(--jky-button-default-text);cursor:pointer;display:inline-flex;font-size:var(--jky-button-font-size);font-weight:500;height:var(--jky-button-height);justify-content:center;padding:var(--jky-button-padding);transition:color .2s,background-color .2s}.jky-button--primary{background-color:var(--jky-button-primary-bg);border:none;color:var(--jky-button-primary-text)}.jky-button--primary:hover{background-color:var(--jky-button-primary-hover-bg)}.jky-button--success{background-color:var(--jky-button-success-bg);border:none;color:var(--jky-button-success-text)}.jky-button--success:hover{background-color:var(--jky-button-success-hover-bg)}.jky-button--warning{background-color:var(--jky-button-warning-bg);border:none;color:var(--jky-button-warning-text)}.jky-button--warning:hover{background-color:var(--jky-button-warning-hover-bg)}.jky-button--danger{background-color:var(--jky-button-danger-bg);border:none;color:var(--jky-button-danger-text)}.jky-button--danger:hover{background-color:var(--jky-button-danger-hover-bg)}.jky-button--info{background-color:var(--jky-button-info-bg);border:none;color:var(--jky-button-info-text)}.jky-button--info:hover{background-color:var(--jky-button-info-hover-bg)}.jky-button--small{font-size:var(--jky-button-font-size-small);height:var(--jky-button-height-small);padding:var(--jky-button-padding-small)}.jky-button--large{font-size:var(--jky-button-font-size-large);height:var(--jky-button-height-large);padding:var(--jky-button-padding-large)}.jky-button.is-disabled{background-color:var(--jky-button-disabled-bg);color:var(--jky-button-disabled-text);cursor:not-allowed;opacity:var(--jky-button-disabled-opacity);pointer-events:none}.jky-button.is-loading{opacity:var(--jky-button-loading-opacity);pointer-events:none;position:relative}.jky-button__loading{display:flex;inset:0;position:absolute}.jky-button__icon,.jky-button__loading{align-items:center;justify-content:center}.jky-button__icon{display:inline-flex;font-size:1em;margin-right:var(--jky-button-icon-margin)}.jky-button__icon:only-child{margin-right:0}.jky-button--suffix .jky-button__icon{margin-left:var(--jky-button-icon-margin);margin-right:0}.jky-button:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px #000;outline:2px solid transparent;outline-offset:2px}.loading-spinner{animation:spin 1s linear infinite;height:var(--jky-button-icon-size);width:var(--jky-button-icon-size)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:root{--jky-button-nav-active-bg:var(--el-color-primary);--jky-button-nav-active-text:#fff;--jky-button-nav-inactive-bg:var(--el-fill-color-light);--jky-button-nav-inactive-text:var(--el-text-color-regular);--el-dropdown-menu-margin-left:12px}.jky-button-nav{align-items:center;display:flex;flex-wrap:wrap;.el-dropdown{margin-left:var(--el-dropdown-menu-margin-left)}}.jky-button-nav-item{background-color:var(--jky-button-nav-inactive-bg);color:var(--jky-button-nav-inactive-text);&.is-active,&[aria-pressed=true]{background-color:var(--jky-button-nav-active-bg);color:var(--jky-button-nav-active-text)}}:root{--j-code-mirror-border-color:#dcdfe6;--j-code-mirror-border-radius:4px;--j-code-mirror-height:400px}.j-code-mirror-editor{border-radius:var(--j-code-mirror-border-radius);height:var(--j-code-mirror-height);overflow:hidden;width:100%}.code-mirror-container{height:100%;overflow:auto;width:100%}.code-mirror-container .cm-editor{height:100%}.code-mirror-container .cm-scroller{font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.5;overflow:auto}.code-mirror-container .cm-gutters{background-color:#2c2d2d;border-color:#4c4d4f;color:#909399}:root{--jky-form-item-border-width:4px;--jky-form-item-border-color:var(--el-color-primary);--jky-form-item-bg-color:rgba(var(--el-color-primary-rgb),0.5);--jky-form-grid-cols-xs:1;--jky-form-grid-cols-sm:2;--jky-form-grid-cols-md:2;--jky-form-grid-cols-lg:3;--jky-form-grid-cols-xl:3;--jky-form-grid-cols-2xl:4;--jky-form-grid-cols-3xl:4}.jky-form--grid{display:grid;gap:var(--el-form-item-gutter,16px);grid-template-columns:repeat(var(--jky-form-grid-cols-xs),minmax(0,1fr))}.el-form--inline.jky-form--grid .el-form-item{margin-right:0;.el-form-item__content{align-items:flex-start}}@media (min-width:640px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-sm,var(--jky-form-grid-cols-xs)),minmax(0,1fr))}}@media (min-width:768px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-md,var(--jky-form-grid-cols-sm)),minmax(0,1fr))}}@media (min-width:1024px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-lg,var(--jky-form-grid-cols-md)),minmax(0,1fr))}}@media (min-width:1280px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-xl,var(--jky-form-grid-cols-lg)),minmax(0,1fr))}}@media (min-width:1536px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-2xl,var(--jky-form-grid-cols-xl)),minmax(0,1fr))}}@media (min-width:1920px){.jky-form--grid{grid-template-columns:repeat(var(--jky-form-grid-cols-3xl,var(--jky-form-grid-cols-2xl)),minmax(0,1fr))}}:root{--jky-menu-bg-color:#fff;--jky-menu-text-color:#303133;--jky-menu-active-color:#409eff;--jky-menu-hover-bg-color:#f5f7fa;--jky-menu-hover-text-color:#606266;--jky-menu-item-height:56px;--jky-menu-item-padding:0 20px;--jky-menu-item-font-size:14px;--jky-menu-icon-size:18px;--jky-menu-icon-margin:8px;--jky-menu-border-color:#e4e7ed;--jky-menu-disabled-opacity:0.5;--jky-menu-disabled-text-color:#c0c4cc}.jky-menu{li+li{margin-top:0}}:root{--jky-page-header-bg-color:#1890ff;--jky-page-header-bg-size:cover;--jky-page-header-bg-position:center;--jky-page-header-box-shadow:0 2px 8px rgba(0,0,0,.15);--jky-page-header-padding-x:24px;--jky-page-header-padding-x-mobile:16px;--jky-page-header-gap:16px;--jky-page-header-gap-mobile:12px;--jky-page-header-gap-left:12px;--jky-page-header-gap-status:12px;--jky-page-header-gap-center:24px;--jky-page-header-gap-center-mobile:12px;--jky-page-header-title-color:#fff;--jky-page-header-title-size:20px;--jky-page-header-title-size-mobile:16px;--jky-page-header-title-weight:600;--jky-page-header-text-color:hsla(0,0%,100%,.85);--jky-page-header-text-size:16px;--jky-page-header-icon-color:#fff;--jky-page-header-icon-size:20px;--jky-page-header-icon-hover-opacity:0.8;--jky-page-header-logo-height:40px;--jky-page-header-avatar-size:32px}.jky-page-header{background-color:var(--jky-page-header-bg-color);background-position:var(--jky-page-header-bg-position);background-size:var(--jky-page-header-bg-size);box-shadow:var(--jky-page-header-box-shadow);width:100%}.jky-page-header__container{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:100%;padding:0 var(--jky-page-header-padding-x)}.jky-page-header__left{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap-left)}.jky-page-header__logo{height:var(--jky-page-header-logo-height);object-fit:contain;width:auto}.jky-page-header__title{color:var(--jky-page-header-title-color);font-size:var(--jky-page-header-title-size);font-weight:var(--jky-page-header-title-weight);white-space:nowrap}.jky-page-header__center{align-items:center;display:flex;flex:1;justify-content:center;margin:0 var(--jky-page-header-gap-center);min-width:0}.jky-page-header__right{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap)}.jky-page-header__status-icons{align-items:center;display:flex;gap:var(--jky-page-header-gap-status)}.jky-page-header__status-icon{color:var(--jky-page-header-icon-color);cursor:pointer;transition:opacity .2s;&:hover{opacity:var(--jky-page-header-icon-hover-opacity)}}.jky-page-header__time{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size);white-space:nowrap}.jky-page-header__user{align-items:center;color:var(--jky-page-header-text-color);cursor:pointer;display:flex;gap:8px}.jky-page-header__avatar{color:var(--jky-page-header-icon-color);img{height:100%;object-fit:cover;width:100%}}.jky-page-header__username{white-space:nowrap}.jky-page-header__logout,.jky-page-header__username{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size)}@media (max-width:768px){.jky-page-header__container{padding:0 var(--jky-page-header-padding-x-mobile)}.jky-page-header__title{font-size:var(--jky-page-header-title-size-mobile)}.jky-page-header__center{margin:0 var(--jky-page-header-gap-center-mobile)}.jky-page-header__right{gap:var(--jky-page-header-gap-mobile)}}:root{--jky-page-layout-gap:5}.jky-page-layout{column-gap:calc(var(--spacing)*var(--jky-page-layout-gap));.el-menu{border-right:none}}.jky-page-table{--jky-page-table_pagination-position:flex-end;.jky-page-table__pagination{.el-scrollbar__view{display:flex;justify-content:var(--jky-page-table_pagination-position)}}}:root{--jky-rich-editor-border:#d9d9d9;--jky-rich-editor-border-hover:#409eff;--jky-rich-editor-border-radius:4px;--jky-rich-editor-box-shadow:0 0 0 1px #409eff}.jky-rich-editor{width:100%}.jky-rich-editor .tox-tinymce{border:1px solid var(--jky-rich-editor-border);border-radius:var(--jky-rich-editor-border-radius);transition:border-color .2s}.jky-rich-editor .tox-tinymce:hover{border-color:var(--jky-rich-editor-border-hover)}.jky-rich-editor .tox-tinymce:focus-within{border-color:var(--jky-rich-editor-border-hover);box-shadow:var(--jky-rich-editor-box-shadow)}.jky-rich-editor.is-disabled .tox-tinymce{background-color:#f5f7fa;cursor:not-allowed}.jky-rich-editor.is-readonly .tox-tinymce{background-color:#fafafa}:root{--jky-say-hello-bg:#42b883;--jky-say-hello-text:#fff;--jky-say-hello-hover-bg:#3aa876;--jky-say-hello-font-size:16px;--jky-say-hello-padding:8px 20px;--jky-say-hello-margin:4px 2px;--jky-say-hello-border-radius:6px}.jky-say-hello{background-color:var(--jky-say-hello-bg);border-radius:var(--jky-say-hello-border-radius);color:var(--jky-say-hello-text);cursor:pointer;display:inline-block;font-size:var(--jky-say-hello-font-size);margin:var(--jky-say-hello-margin);padding:var(--jky-say-hello-padding);text-align:center;text-decoration:none;transition:background-color .2s ease}.jky-say-hello:hover{background-color:var(--jky-say-hello-hover-bg)}@import "tailwindcss";@plugin "@iconify/tailwind4";@source "../node_modules/jky-component-lib/dist/es/";@source "../docs/**/*.md";@source "./**/*.md";@source "./**/*.vue";@source "./**/*.css";@custom-variant dark (&:is(.dark *))
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jky-component-lib",
3
3
  "type": "module",
4
- "version": "0.0.73",
4
+ "version": "0.0.75",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -1,16 +0,0 @@
1
- import { TabContentProps } from './types';
2
- declare const _default: import('vue').DefineComponent<TabContentProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
3
- contextMenu: (data: {
4
- tab: import('./types').TabItem;
5
- event: MouseEvent;
6
- }) => any;
7
- }, string, import('vue').PublicProps, Readonly<TabContentProps> & Readonly<{
8
- onContextMenu?: ((data: {
9
- tab: import('./types').TabItem;
10
- event: MouseEvent;
11
- }) => any) | undefined;
12
- }>, {
13
- showIcon: boolean;
14
- showContextMenu: boolean;
15
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
16
- export default _default;
@@ -1,65 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, createCommentVNode, createElementVNode, toDisplayString } from "vue";
21
- const _hoisted_1 = { class: "jky-tab-content__title" };
22
- const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, {
23
- name: "JkyTabContent"
24
- }), {
25
- __name: "TabContent",
26
- props: {
27
- tab: {},
28
- showIcon: { type: Boolean, default: true },
29
- showContextMenu: { type: Boolean, default: false }
30
- },
31
- emits: ["contextMenu"],
32
- setup(__props, { emit: __emit }) {
33
- const props = __props;
34
- const emit = __emit;
35
- const title = computed(() => {
36
- var _a, _b;
37
- return props.tab.label || ((_b = (_a = props.tab.route) == null ? void 0 : _a.meta) == null ? void 0 : _b.title) || "";
38
- });
39
- const icon = computed(() => {
40
- var _a, _b;
41
- return props.tab.icon || ((_b = (_a = props.tab.route) == null ? void 0 : _a.meta) == null ? void 0 : _b.icon);
42
- });
43
- function handleContextMenu(e) {
44
- if (props.showContextMenu) {
45
- e.preventDefault();
46
- emit("contextMenu", { tab: props.tab, event: e });
47
- }
48
- }
49
- return (_ctx, _cache) => {
50
- return openBlock(), createElementBlock("div", {
51
- class: "jky-tab-content flex items-center gap-1",
52
- onContextmenu: handleContextMenu
53
- }, [
54
- props.showIcon && icon.value ? (openBlock(), createElementBlock("span", {
55
- key: 0,
56
- class: normalizeClass(["jky-tab-content__icon text-sm", [icon.value]])
57
- }, null, 2)) : createCommentVNode("", true),
58
- createElementVNode("span", _hoisted_1, toDisplayString(title.value), 1)
59
- ], 32);
60
- };
61
- }
62
- }));
63
- export {
64
- _sfc_main as default
65
- };
@@ -1,5 +0,0 @@
1
- import _sfc_main from "./TabContent.vue.js";
2
- /* empty css */
3
- export {
4
- _sfc_main as default
5
- };
@@ -1,46 +0,0 @@
1
- import { TabItem, TabsProps } from './types';
2
- declare function __VLS_template(): {
3
- attrs: Partial<{}>;
4
- slots: {
5
- default?(_: {}): any;
6
- };
7
- refs: {};
8
- rootEl: any;
9
- };
10
- type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
- declare const __VLS_component: import('vue').DefineComponent<TabsProps, {
12
- closeTab: (tabName: string) => void;
13
- closeOthers: (tabName: string) => void;
14
- closeAll: () => void;
15
- refreshTab: (tabName: string) => void;
16
- getCachedTabs: () => string[];
17
- getTabList: () => TabItem[];
18
- getActiveTab: () => string;
19
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
20
- "update:modelValue": (value: string) => any;
21
- routeChange: (route: any) => any;
22
- tabClick: (tab: any) => any;
23
- tabRemove: (tabName: string) => any;
24
- edit: (tabName: string | undefined, action: "add" | "remove") => any;
25
- tabClose: (tabName: string) => any;
26
- }, string, import('vue').PublicProps, Readonly<TabsProps> & Readonly<{
27
- "onUpdate:modelValue"?: ((value: string) => any) | undefined;
28
- onRouteChange?: ((route: any) => any) | undefined;
29
- onTabClick?: ((tab: any) => any) | undefined;
30
- onTabRemove?: ((tabName: string) => any) | undefined;
31
- onEdit?: ((tabName: string | undefined, action: "add" | "remove") => any) | undefined;
32
- onTabClose?: ((tabName: string) => any) | undefined;
33
- }>, {
34
- mode: import('./types').TabsMode;
35
- cachable: boolean;
36
- maxCacheSize: number;
37
- tabStyle: import('./types').TabStyleOptions;
38
- tabs: TabItem[];
39
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
40
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
41
- export default _default;
42
- type __VLS_WithTemplateSlots<T, S> = T & {
43
- new (): {
44
- $slots: S;
45
- };
46
- };
@@ -1,311 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { defineComponent, useAttrs, inject, shallowRef, computed, onMounted, provide, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot, createElementBlock, Fragment, renderList, createVNode, normalizeStyle, createCommentVNode, markRaw } from "vue";
21
- import { ElTabs, ElTabPane } from "element-plus";
22
- import { routerKey } from "vue-router";
23
- import { onRouteChange } from "./routeListener.js";
24
- import _sfc_main$1 from "./TabContent.vue.js";
25
- /* empty css */
26
- import { createTabsStore } from "./useTabsStore.js";
27
- const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, {
28
- name: "JkyTabs",
29
- inheritAttrs: false
30
- }), {
31
- __name: "Tabs",
32
- props: {
33
- mode: { default: "default" },
34
- cachable: { type: Boolean, default: true },
35
- maxCacheSize: { default: 0 },
36
- className: {},
37
- tabStyle: { default: () => ({}) },
38
- tabs: { default: () => [] },
39
- persist: { type: Boolean },
40
- persistKey: {},
41
- type: {},
42
- closable: { type: Boolean },
43
- addable: { type: Boolean },
44
- modelValue: {},
45
- defaultValue: {},
46
- editable: { type: Boolean },
47
- tabPosition: {},
48
- beforeLeave: {},
49
- stretch: { type: Boolean },
50
- tabindex: {}
51
- },
52
- emits: ["tabClick", "tabRemove", "edit", "routeChange", "tabClose", "update:modelValue"],
53
- setup(__props, { expose: __expose, emit: __emit }) {
54
- const props = __props;
55
- const emit = __emit;
56
- const attrs = useAttrs();
57
- const router = inject(routerKey, null);
58
- const store = createTabsStore(props.persist, props.persistKey);
59
- const closedTabs = shallowRef(/* @__PURE__ */ new Set());
60
- const tabStyleVars = computed(() => {
61
- var _a, _b, _c, _d;
62
- const styles = {};
63
- if ((_a = props.tabStyle) == null ? void 0 : _a.color)
64
- styles["--jky-tabs-color"] = props.tabStyle.color;
65
- if ((_b = props.tabStyle) == null ? void 0 : _b.activeColor)
66
- styles["--jky-tabs-active-color"] = props.tabStyle.activeColor;
67
- if ((_c = props.tabStyle) == null ? void 0 : _c.height)
68
- styles["--jky-tabs-height"] = props.tabStyle.height;
69
- if ((_d = props.tabStyle) == null ? void 0 : _d.fontSize)
70
- styles["--jky-tabs-font-size"] = props.tabStyle.fontSize;
71
- return styles;
72
- });
73
- const tabsClass = computed(() => {
74
- return [
75
- "jky-tabs",
76
- props.mode === "route" && "jky-tabs--route",
77
- props.className,
78
- attrs.class
79
- ].filter(Boolean).join(" ");
80
- });
81
- const EL_TABS_PROPS = [
82
- "type",
83
- "closable",
84
- "addable",
85
- "modelValue",
86
- "editable",
87
- "tabPosition",
88
- "stretch"
89
- ];
90
- const elTabsProps = computed(() => {
91
- const elProps = {};
92
- Object.keys(props).forEach((key) => {
93
- if (EL_TABS_PROPS.includes(key)) {
94
- elProps[key] = props[key];
95
- }
96
- });
97
- return __spreadValues({}, elProps);
98
- });
99
- function initRouteTabs() {
100
- var _a;
101
- if (!router) {
102
- console.warn("JkyTabs: route mode requires router instance. Please provide router via provide/inject.");
103
- return;
104
- }
105
- const route = router.currentRoute.value;
106
- console.warn("initRouteTabs debug:", {
107
- hasRouter: !!router,
108
- currentRoute: {
109
- name: route.name,
110
- path: route.path,
111
- meta: route.meta
112
- },
113
- cachable: props.cachable,
114
- cacheTabs: store.cacheTabs
115
- });
116
- if (route.name) {
117
- store.setActiveTab(route.name);
118
- }
119
- if (props.cachable && store.cacheTabs.length > 0) {
120
- const routes = router.getRoutes();
121
- const routeMap = new Map(routes.map((route2) => [route2.name, route2]));
122
- store.cacheTabs.forEach((cachedName) => {
123
- var _a2;
124
- const route2 = routeMap.get(cachedName);
125
- if ((_a2 = route2 == null ? void 0 : route2.meta) == null ? void 0 : _a2.title) {
126
- const tabItem = {
127
- name: cachedName,
128
- label: route2.meta.title,
129
- closable: route2.meta.closable !== false,
130
- icon: route2.meta.icon,
131
- affix: route2.meta.affix,
132
- route: {
133
- path: route2.path,
134
- name: cachedName,
135
- component: route2.components ? markRaw(Object.values(route2.components)[0]) : void 0,
136
- meta: route2.meta
137
- }
138
- };
139
- store.addTab(tabItem);
140
- }
141
- });
142
- }
143
- if (route.name && ((_a = route.meta) == null ? void 0 : _a.title)) {
144
- if (!props.cachable || !store.isCached(route.name)) {
145
- const routes = router.getRoutes();
146
- const foundRoute = routes.find((r) => r.name === route.name);
147
- const tabItem = {
148
- name: route.name,
149
- label: route.meta.title,
150
- closable: route.meta.closable !== false,
151
- icon: route.meta.icon,
152
- affix: route.meta.affix,
153
- route: {
154
- path: route.path,
155
- name: route.name,
156
- component: (foundRoute == null ? void 0 : foundRoute.components) ? markRaw(Object.values(foundRoute.components)[0]) : void 0,
157
- meta: route.meta
158
- }
159
- };
160
- store.addTab(tabItem);
161
- }
162
- if (props.cachable) {
163
- store.addCache(route.name);
164
- }
165
- }
166
- }
167
- function handleTabChange(pane) {
168
- var _a;
169
- const newTabName = ((_a = pane.props) == null ? void 0 : _a.name) || pane.name;
170
- store.setActiveTab(newTabName);
171
- emit("update:modelValue", newTabName);
172
- if (props.mode === "route" && router) {
173
- const tab = store.tabList.find((t) => t.name === newTabName);
174
- if (tab == null ? void 0 : tab.route) {
175
- router.push(tab.route.path);
176
- emit("routeChange", tab.route);
177
- if (props.cachable) {
178
- store.addCache(newTabName);
179
- }
180
- }
181
- }
182
- emit("tabClick", pane);
183
- }
184
- function handleCloseTab(tabName) {
185
- const name = String(tabName);
186
- if (!name)
187
- return;
188
- if (props.mode === "route") {
189
- store.removeTab(name);
190
- } else {
191
- closedTabs.value = /* @__PURE__ */ new Set([...closedTabs.value, name]);
192
- if (store.activeTab === name && props.tabs && props.tabs.length > 0) {
193
- const currentIndex = props.tabs.findIndex((tab) => tab.name === name);
194
- const availableTabs = props.tabs.filter((tab) => !closedTabs.value.has(tab.name));
195
- if (availableTabs.length > 0) {
196
- const nextTab = availableTabs[currentIndex] || availableTabs[currentIndex - 1];
197
- if (nextTab) {
198
- store.setActiveTab(nextTab.name);
199
- emit("update:modelValue", nextTab.name);
200
- }
201
- }
202
- }
203
- }
204
- emit("tabClose", name);
205
- emit("tabRemove", name);
206
- }
207
- function handleAddTab() {
208
- emit("edit", void 0, "add");
209
- }
210
- function isClosed(name) {
211
- return closedTabs.value.has(name);
212
- }
213
- function closeTab(tabName) {
214
- handleCloseTab(tabName);
215
- }
216
- function closeOthers(tabName) {
217
- store.closeOther(tabName);
218
- }
219
- function closeAll() {
220
- store.closeAll();
221
- }
222
- function refreshTab(tabName) {
223
- store.refresh(tabName);
224
- }
225
- function getCachedTabs() {
226
- return store.getCacheTabs();
227
- }
228
- function getTabList() {
229
- return store.getTabList();
230
- }
231
- function getActiveTab() {
232
- return store.activeTab;
233
- }
234
- if (props.mode === "route") {
235
- onRouteChange((route) => {
236
- if (route.name) {
237
- store.setActiveTab(route.name);
238
- if (props.cachable) {
239
- store.addCache(route.name);
240
- }
241
- }
242
- }, true);
243
- }
244
- onMounted(() => {
245
- if (props.mode === "route") {
246
- initRouteTabs();
247
- }
248
- });
249
- __expose({
250
- closeTab,
251
- closeOthers,
252
- closeAll,
253
- refreshTab,
254
- getCachedTabs,
255
- getTabList,
256
- getActiveTab
257
- });
258
- provide("tabsContext", {
259
- mode: props.mode,
260
- cachable: props.cachable,
261
- activeTab: computed(() => store.activeTab),
262
- cachedTabs: shallowRef(new Set(store.getCacheTabs())),
263
- cachedComponents: shallowRef(/* @__PURE__ */ new Map())
264
- });
265
- return (_ctx, _cache) => {
266
- return openBlock(), createBlock(unref(ElTabs), mergeProps({
267
- "model-value": unref(store).activeTab
268
- }, elTabsProps.value, {
269
- class: tabsClass.value,
270
- style: tabStyleVars.value,
271
- onTabClick: handleTabChange,
272
- onTabRemove: handleCloseTab,
273
- onEdit: handleCloseTab,
274
- onTabAdd: handleAddTab
275
- }), {
276
- default: withCtx(() => [
277
- renderSlot(_ctx.$slots, "default", {}, () => [
278
- __props.mode === "route" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(store).tabList, (tab) => {
279
- return openBlock(), createBlock(unref(ElTabPane), {
280
- key: tab.name,
281
- name: tab.name,
282
- closable: tab.closable
283
- }, {
284
- label: withCtx(() => [
285
- createVNode(_sfc_main$1, { tab }, null, 8, ["tab"])
286
- ]),
287
- _: 2
288
- }, 1032, ["name", "closable"]);
289
- }), 128)) : __props.tabs && __props.tabs.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(__props.tabs, (tab) => {
290
- return openBlock(), createBlock(unref(ElTabPane), {
291
- key: tab.name,
292
- name: tab.name,
293
- closable: tab.closable,
294
- style: normalizeStyle({ display: isClosed(tab.name) ? "none" : "" })
295
- }, {
296
- label: withCtx(() => [
297
- createVNode(_sfc_main$1, { tab }, null, 8, ["tab"])
298
- ]),
299
- _: 2
300
- }, 1032, ["name", "closable", "style"]);
301
- }), 128)) : createCommentVNode("", true)
302
- ])
303
- ]),
304
- _: 3
305
- }, 16, ["model-value", "class", "style"]);
306
- };
307
- }
308
- }));
309
- export {
310
- _sfc_main as default
311
- };
@@ -1,5 +0,0 @@
1
- import _sfc_main from "./Tabs.vue.js";
2
- /* empty css */
3
- export {
4
- _sfc_main as default
5
- };
@@ -1,9 +0,0 @@
1
- import { InstallWithSFC } from '../utils';
2
- import { default as Tabs } from './Tabs.vue';
3
- export declare const JkyTabs: InstallWithSFC<typeof Tabs>;
4
- export default JkyTabs;
5
- export { clearRouteListeners, emitRouteChange, onRouteChange } from './routeListener';
6
- export { default as JkyTabContent } from './TabContent.vue';
7
- export type * from './types';
8
- export { useTabs } from './useTabs';
9
- export { createTabsStore, resetTabsStore, useTabsStore } from './useTabsStore';