@pubinfo/module-rbac 2.0.0-rc.4 → 2.0.0-rc.5

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 (100) hide show
  1. package/dist/{ComponentSelect-B1ZyenXP.js → ComponentSelect-Bhl9ciUm.js} +12 -12
  2. package/dist/ComponentSelect-Bhwuc86o.js +2 -0
  3. package/dist/ComponentSelect.css +1 -1
  4. package/dist/DynamicRoutesForm-CE2RPs7y.js +169 -0
  5. package/dist/DynamicRoutesForm-D35jFnxF.js +4 -0
  6. package/dist/IconSelect-Ct5FkeHI.js +4 -0
  7. package/dist/IconSelect-HAhfS6hd.js +661 -0
  8. package/dist/IconSelect.css +1 -0
  9. package/dist/{ImportExport-Clbc8xaw.js → ImportExport-ByRTssxP.js} +2 -2
  10. package/dist/ImportExport-D8uzaOMz.js +4 -0
  11. package/dist/{MetaForm-BWy4Lpr8.js → MetaForm-BSGuZXgj.js} +2 -2
  12. package/dist/{MetaForm-DpH9an5A.js → MetaForm-DErrpELP.js} +1 -1
  13. package/dist/OrgAndPosition-CF7ZJtNB.js +2 -0
  14. package/dist/{ResourceEdit-0_cYB0iu.js → ResourceEdit-DF-2_zoi.js} +115 -105
  15. package/dist/ResourceEdit-oAPLPUf0.js +11 -0
  16. package/dist/{ResourceRelation-DMWa09ae.js → ResourceRelation-BRseTUw2.js} +1 -1
  17. package/dist/RoleRelation-YaSQQxQ2.js +2 -0
  18. package/dist/{TenantEdit-D8-Pt7sf.js → TenantEdit-C28473_2.js} +1 -1
  19. package/dist/{UserAuthorization-DuioGghR.js → UserAuthorization-C4SLMNmh.js} +1 -1
  20. package/dist/UserEdit-CyCXz7g3.js +4 -0
  21. package/dist/{UserEdit-C6eNXSCu.js → UserEdit-EOTBOUZu.js} +1 -1
  22. package/dist/components/ResourceIcones/BoxColorPicker.vue.d.ts +23 -0
  23. package/dist/components/ResourceIcones/Select.vue.d.ts +48 -2
  24. package/dist/components/ResourceSelector/hooks/useAppAndResource.d.ts +15 -6
  25. package/dist/components/RoleSelector/useRole.d.ts +68 -4
  26. package/dist/context.d.ts +1 -2
  27. package/dist/{drawerRole-DNsK5a6O.js → drawerRole-CzTW_I2H.js} +1 -1
  28. package/dist/{drawerRole-BeUNs7cF.js → drawerRole-tan379DU.js} +1 -1
  29. package/dist/index.css +1 -1
  30. package/dist/index.js +1427 -1431
  31. package/dist/{resource-CrhX7VRK.js → resource-CyI9ZpmF.js} +9 -8
  32. package/dist/{role-PjmrOdFd.js → role-B2tKqUvP.js} +2 -2
  33. package/dist/{role_group-Dlx-6BZF.js → role_group-DqzFHwKx.js} +1 -1
  34. package/dist/stores/view.d.ts +126 -21
  35. package/dist/{tenant-BGtOP_wo.js → tenant-C8kVbfgt.js} +2 -2
  36. package/dist/{toolbar_setting-OemNp6pO.js → toolbar_setting-Dc_h2Mfe.js} +23 -34
  37. package/dist/toolbar_setting.css +1 -1
  38. package/dist/{user-JCiGXodF.js → user-Dub4HhCZ.js} +3 -3
  39. package/dist/utils/routeSystem.d.ts +126 -21
  40. package/dist/views/blackWhiteList/index.vue.d.ts +40 -40
  41. package/dist/views/data-permission/components/createAndEditDataPermission.vue.d.ts +4 -4
  42. package/dist/views/data-permission/index.vue.d.ts +44 -44
  43. package/dist/views/dictionary/index.vue.d.ts +40 -40
  44. package/dist/views/dictionary/itemlist.vue.d.ts +40 -40
  45. package/dist/views/group/index.vue.d.ts +40 -40
  46. package/dist/views/log_center/components/browserType.vue.d.ts +2 -2
  47. package/dist/views/log_center/components/loginHistoryDetail.vue.d.ts +2 -2
  48. package/dist/views/log_center/components/operateHistoryDetail.vue.d.ts +2 -2
  49. package/dist/views/log_center/login_history.vue.d.ts +40 -40
  50. package/dist/views/log_center/operate_history.vue.d.ts +40 -40
  51. package/dist/views/position/index.vue.d.ts +40 -40
  52. package/dist/views/region/index.vue.d.ts +40 -40
  53. package/dist/views/resource/components/IconSelect.vue.d.ts +10 -0
  54. package/dist/views/resource/hooks/useMetaForm.d.ts +8 -1
  55. package/dist/views/resource/index.vue.d.ts +40 -40
  56. package/dist/views/role/components/ResourceRelation.vue.d.ts +40 -40
  57. package/dist/views/role/index.vue.d.ts +80 -80
  58. package/dist/views/role_group/index.vue.d.ts +40 -40
  59. package/dist/views/tenant/index.vue.d.ts +40 -40
  60. package/dist/views/toolbar_setting/animationData.d.ts +1 -3
  61. package/dist/views/user/index.vue.d.ts +40 -40
  62. package/package.json +7 -3
  63. package/src/components/DirectoryIcones/ComponentsIcones.vue +2 -2
  64. package/src/components/DirectoryIcones/FolderIcones.vue +2 -2
  65. package/src/components/DirectoryIcones/ModuleIcones.vue +2 -2
  66. package/src/components/DirectoryIcones/PackagesIcones.vue +2 -2
  67. package/src/components/DirectoryIcones/SrcIcones.vue +2 -2
  68. package/src/components/DirectoryIcones/ViewIcones.vue +2 -2
  69. package/src/components/ResourceIcones/BoxColorPicker.vue +172 -0
  70. package/src/components/ResourceIcones/Select.vue +227 -15
  71. package/src/context.ts +1 -17
  72. package/src/index.ts +3 -10
  73. package/src/views/resource/components/ComponentSelect.vue +10 -0
  74. package/src/views/resource/components/DynamicRoutesForm.vue +0 -8
  75. package/src/views/resource/components/IconSelect.vue +138 -0
  76. package/src/views/resource/components/ResourceEdit.vue +34 -28
  77. package/src/views/toolbar_setting/animationData.ts +0 -4
  78. package/src/views/toolbar_setting/index.vue +0 -13
  79. package/dist/ComponentSelect-DlVJI5an.js +0 -2
  80. package/dist/DynamicRoutesForm-Cu3WhRpA.js +0 -4
  81. package/dist/DynamicRoutesForm-qjbrykW4.js +0 -376
  82. package/dist/ImportExport-CtEZTU87.js +0 -4
  83. package/dist/OrgAndPosition-3lCm4Fyb.js +0 -2
  84. package/dist/ResourceEdit-CYPzEbqn.js +0 -10
  85. package/dist/RoleRelation-DySyilcs.js +0 -2
  86. package/dist/UserEdit-6HYbgtOh.js +0 -4
  87. /package/dist/{OrgAndPosition-DYxNkasL.js → OrgAndPosition-vnBrq-fn.js} +0 -0
  88. /package/dist/{ResourceRelation-CZ8hGgOm.js → ResourceRelation-B_4woLmP.js} +0 -0
  89. /package/dist/{ResourceRelation-DkKdZ3TD.js → ResourceRelation-CKolCnHC.js} +0 -0
  90. /package/dist/{RoleRelation-B1D1NM_L.js → RoleRelation-DXZxscPY.js} +0 -0
  91. /package/dist/{TenantEdit-DNJzo8SS.js → TenantEdit-B5_v0C8I.js} +0 -0
  92. /package/dist/{UserAuthorization-DPHUk69M.js → UserAuthorization-DTgmWH5Q.js} +0 -0
  93. /package/dist/{dayjs.min-DcxwBe2I.js → dayjs.min-CdDcH50N.js} +0 -0
  94. /package/dist/{drawerRole-DS7fbx1h.js → drawerRole-CwilBmOE.js} +0 -0
  95. /package/dist/{drawerRole-BdoMYLYW.js → drawerRole-E1jHM3v-.js} +0 -0
  96. /package/dist/{enum-D0U38jb6.js → enum-BMY6bmPA.js} +0 -0
  97. /package/dist/{safe_setting-DpWUCv2p.js → safe_setting-uj9p_wW0.js} +0 -0
  98. /package/dist/{tabbar_setting-9UKDc1Ev.js → tabbar_setting-HFHrLVgt.js} +0 -0
  99. /package/dist/{theme_setting-BBLaZ4NS.js → theme_setting-QgpSGXxq.js} +0 -0
  100. /package/dist/{watermark_setting-C1VFRfbW.js → watermark_setting-BcWy6p2_.js} +0 -0
@@ -1,50 +1,50 @@
1
1
  import { CurrentOrg } from './interface';
2
2
  import { ACTION } from './enum';
3
3
  declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').DefineComponent<{}, {}, {}, {}, {}, import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ComponentOptionsMixin, import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ComponentOptionsMixin, {}, string, import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ComponentProvideOptions, true, {
4
- tableRef: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').CreateComponentPublicInstanceWithMixins<Readonly<import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ExtractPropTypes<{
5
- request: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["request"]>;
4
+ tableRef: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').CreateComponentPublicInstanceWithMixins<Readonly<globalThis.ExtractPropTypes<{
5
+ request: PropType<import('@pubinfo/pro-components').ProTableProps["request"]>;
6
6
  dataSource: {
7
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["dataSource"]>;
7
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["dataSource"]>;
8
8
  default: () => never[];
9
9
  };
10
10
  params: {
11
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["params"]>;
11
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["params"]>;
12
12
  default: () => {};
13
13
  };
14
14
  columns: {
15
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["columns"]>;
15
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["columns"]>;
16
16
  default: () => never[];
17
17
  };
18
18
  columnsState: {
19
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["columnsState"]>;
19
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["columnsState"]>;
20
20
  default: () => {};
21
21
  };
22
22
  search: {
23
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["search"]>;
23
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["search"]>;
24
24
  default: boolean;
25
25
  };
26
26
  toolbar: {
27
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["toolbar"]>;
27
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["toolbar"]>;
28
28
  default: boolean;
29
29
  };
30
30
  beforeSearchSubmit: {
31
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["beforeSearchSubmit"]>;
31
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["beforeSearchSubmit"]>;
32
32
  default: (arg: import('@pubinfo/pro-components').QueryData) => any;
33
33
  };
34
34
  postData: {
35
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["postData"]>;
35
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["postData"]>;
36
36
  default: (arg: import('@pubinfo/pro-components').Recordable[]) => import('@pubinfo/pro-components').Recordable[];
37
37
  };
38
38
  cardBordered: {
39
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["cardBordered"]>;
39
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["cardBordered"]>;
40
40
  default: boolean;
41
41
  };
42
42
  autoHeight: {
43
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["autoHeight"]>;
43
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["autoHeight"]>;
44
44
  default: boolean;
45
45
  };
46
46
  manualRequest: {
47
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["manualRequest"]>;
47
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["manualRequest"]>;
48
48
  default: boolean;
49
49
  };
50
50
  prefixCls: {
@@ -472,26 +472,26 @@ declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typ
472
472
  type: NumberConstructor;
473
473
  };
474
474
  submitter: {
475
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["submitter"]>;
475
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["submitter"]>;
476
476
  default: () => {};
477
477
  };
478
478
  onFinish: {
479
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["onFinish"]>;
479
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["onFinish"]>;
480
480
  };
481
481
  readonly: {
482
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["readonly"]>;
482
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["readonly"]>;
483
483
  default: boolean;
484
484
  };
485
485
  grid: {
486
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["grid"]>;
486
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["grid"]>;
487
487
  default: boolean;
488
488
  };
489
489
  rowProps: {
490
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["rowProps"]>;
490
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["rowProps"]>;
491
491
  default: () => {};
492
492
  };
493
493
  colProps: {
494
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["colProps"]>;
494
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["colProps"]>;
495
495
  default: () => {};
496
496
  };
497
497
  layout: any;
@@ -716,7 +716,7 @@ declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typ
716
716
  toolbar: boolean | Partial<import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ExtractPropTypes<{
717
717
  title: StringConstructor;
718
718
  settings: {
719
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ToolBarSetting[] | boolean>;
719
+ type: PropType<import('@pubinfo/pro-components').ToolBarSetting[] | boolean>;
720
720
  default: () => never[];
721
721
  };
722
722
  }>> | undefined;
@@ -758,50 +758,50 @@ declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typ
758
758
  C: {};
759
759
  M: {};
760
760
  Defaults: {};
761
- }, Readonly<import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ExtractPropTypes<{
762
- request: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["request"]>;
761
+ }, Readonly<globalThis.ExtractPropTypes<{
762
+ request: PropType<import('@pubinfo/pro-components').ProTableProps["request"]>;
763
763
  dataSource: {
764
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["dataSource"]>;
764
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["dataSource"]>;
765
765
  default: () => never[];
766
766
  };
767
767
  params: {
768
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["params"]>;
768
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["params"]>;
769
769
  default: () => {};
770
770
  };
771
771
  columns: {
772
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["columns"]>;
772
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["columns"]>;
773
773
  default: () => never[];
774
774
  };
775
775
  columnsState: {
776
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["columnsState"]>;
776
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["columnsState"]>;
777
777
  default: () => {};
778
778
  };
779
779
  search: {
780
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["search"]>;
780
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["search"]>;
781
781
  default: boolean;
782
782
  };
783
783
  toolbar: {
784
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["toolbar"]>;
784
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["toolbar"]>;
785
785
  default: boolean;
786
786
  };
787
787
  beforeSearchSubmit: {
788
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["beforeSearchSubmit"]>;
788
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["beforeSearchSubmit"]>;
789
789
  default: (arg: import('@pubinfo/pro-components').QueryData) => any;
790
790
  };
791
791
  postData: {
792
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["postData"]>;
792
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["postData"]>;
793
793
  default: (arg: import('@pubinfo/pro-components').Recordable[]) => import('@pubinfo/pro-components').Recordable[];
794
794
  };
795
795
  cardBordered: {
796
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["cardBordered"]>;
796
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["cardBordered"]>;
797
797
  default: boolean;
798
798
  };
799
799
  autoHeight: {
800
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["autoHeight"]>;
800
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["autoHeight"]>;
801
801
  default: boolean;
802
802
  };
803
803
  manualRequest: {
804
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ProTableProps["manualRequest"]>;
804
+ type: PropType<import('@pubinfo/pro-components').ProTableProps["manualRequest"]>;
805
805
  default: boolean;
806
806
  };
807
807
  prefixCls: {
@@ -1229,26 +1229,26 @@ declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typ
1229
1229
  type: NumberConstructor;
1230
1230
  };
1231
1231
  submitter: {
1232
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["submitter"]>;
1232
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["submitter"]>;
1233
1233
  default: () => {};
1234
1234
  };
1235
1235
  onFinish: {
1236
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["onFinish"]>;
1236
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["onFinish"]>;
1237
1237
  };
1238
1238
  readonly: {
1239
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["readonly"]>;
1239
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["readonly"]>;
1240
1240
  default: boolean;
1241
1241
  };
1242
1242
  grid: {
1243
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["grid"]>;
1243
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["grid"]>;
1244
1244
  default: boolean;
1245
1245
  };
1246
1246
  rowProps: {
1247
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["rowProps"]>;
1247
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["rowProps"]>;
1248
1248
  default: () => {};
1249
1249
  };
1250
1250
  colProps: {
1251
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["colProps"]>;
1251
+ type: PropType<import('node_modules/@pubinfo/pro-components/es/pro-form/components').CommonFormProps["colProps"]>;
1252
1252
  default: () => {};
1253
1253
  };
1254
1254
  layout: any;
@@ -1473,7 +1473,7 @@ declare const _default: import('../../../../../node_modules/.pnpm/vue@3.5.17_typ
1473
1473
  toolbar: boolean | Partial<import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').ExtractPropTypes<{
1474
1474
  title: StringConstructor;
1475
1475
  settings: {
1476
- type: import('../../../../../node_modules/.pnpm/vue@3.5.17_typescript@5.8.3/node_modules/vue').PropType<import('@pubinfo/pro-components').ToolBarSetting[] | boolean>;
1476
+ type: PropType<import('@pubinfo/pro-components').ToolBarSetting[] | boolean>;
1477
1477
  default: () => never[];
1478
1478
  };
1479
1479
  }>> | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pubinfo/module-rbac",
3
3
  "type": "module",
4
- "version": "2.0.0-rc.4",
4
+ "version": "2.0.0-rc.5",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/index.d.ts",
@@ -16,14 +16,18 @@
16
16
  "dist",
17
17
  "src"
18
18
  ],
19
+ "engines": {
20
+ "node": "^20.19.0 || >=22.12.0"
21
+ },
19
22
  "peerDependencies": {
20
23
  "@ant-design/icons-vue": "^7.0.1",
21
24
  "@pubinfo/pro-components": "^1.7.3",
22
25
  "alova": "^3.3.4",
23
26
  "ant-design-vue": "^4.2.6",
24
- "pubinfo": "2.0.0-rc.4"
27
+ "pubinfo": "2.0.0-rc.5"
25
28
  },
26
29
  "dependencies": {
30
+ "@destyler/color-picker": "^0.1.0",
27
31
  "@destyler/popover": "^0.1.0",
28
32
  "@destyler/vue": "^0.1.0",
29
33
  "@pubinfo/headlessui": "^1.5.3",
@@ -44,7 +48,7 @@
44
48
  "alova": "^3.3.4",
45
49
  "ant-design-vue": "^4.2.6",
46
50
  "type-fest": "^4.41.0",
47
- "pubinfo": "2.0.0-rc.4"
51
+ "pubinfo": "2.0.0-rc.5"
48
52
  },
49
53
  "scripts": {
50
54
  "dev": "pubinfo build -w --sourcemap",
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="m1.87 8l.7-2.74a1 1 0 0 1 .96-.76h10.94a1 1 0 0 1 .97 1.24l-.219.875M6 13.5H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#67B686" d="m9.485 9.516l3.968 3.968m-3.968 0l3.968-3.968m-1.634-1.874l3.507 3.507a.496.496 0 0 1 0 .702l-3.507 3.507a.496.496 0 0 1-.701 0L7.61 11.85a.496.496 0 0 1 0-.702l3.507-3.507a.496.496 0 0 1 .701 0z" /></g></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M4.5 4.5H12c.83 0 1.5.67 1.5 1.5v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#67B686" d="m9.485 9.516l3.968 3.968m-3.968 0l3.968-3.968m-1.634-1.874l3.507 3.507a.496.496 0 0 1 0 .702l-3.507 3.507a.496.496 0 0 1-.701 0L7.61 11.85a.496.496 0 0 1 0-.702l3.507-3.507a.496.496 0 0 1 .701 0z" /></g></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="m1.87 8l.7-2.74a1 1 0 0 1 .96-.76h10.94a1 1 0 0 1 .97 1.24l-.219.875M6 13.5H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#67B686" d="m9.485 9.516l3.968 3.968m-3.968 0l3.968-3.968m-1.634-1.874l3.507 3.507a.496.496 0 0 1 0 .702l-3.507 3.507a.496.496 0 0 1-.701 0L7.61 11.85a.496.496 0 0 1 0-.702l3.507-3.507a.496.496 0 0 1 .701 0z" /></g></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="M4.5 4.5H12c.83 0 1.5.67 1.5 1.5v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#67B686" d="m9.485 9.516l3.968 3.968m-3.968 0l3.968-3.968m-1.634-1.874l3.507 3.507a.496.496 0 0 1 0 .702l-3.507 3.507a.496.496 0 0 1-.701 0L7.61 11.85a.496.496 0 0 1 0-.702l3.507-3.507a.496.496 0 0 1 .701 0z" /></g></svg>
18
18
  </template>
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" d="m1.87 8l.7-2.74a1 1 0 0 1 .96-.76h10.94a1 1 0 0 1 .97 1.24l-1.75 7a1 1 0 0 1-.97.76H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" d="M4.5 4.5H12c.83 0 1.5.67 1.5 1.5v6c0 .83-.67 1.5-1.5 1.5H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><path fill="none" class="stroke-dark dark:stroke-light" stroke-linecap="round" stroke-linejoin="round" d="m1.87 8l.7-2.74a1 1 0 0 1 .96-.76h10.94a1 1 0 0 1 .97 1.24l-1.75 7a1 1 0 0 1-.97.76H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><path fill="none" class="stroke-dark dark:stroke-light" stroke-linecap="round" stroke-linejoin="round" d="M4.5 4.5H12c.83 0 1.5.67 1.5 1.5v6c0 .83-.67 1.5-1.5 1.5H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /></svg>
18
18
  </template>
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="M15.5 13.5v1.2a.8.8 0 0 1-.8.8h-4.4a.8.8 0 0 1-.8-.8v-1.2H9a1 1 0 0 1 0-2h.5v-1.2a.8.8 0 0 1 .8-.8h1.2V9a1 1 0 0 1 2 0v.5h1.2a.8.8 0 0 1 .8.8v1.2H15a1 1 0 0 0 0 2z" /></g></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="M15.5 13.5v1.2a.8.8 0 0 1-.8.8h-4.4a.8.8 0 0 1-.8-.8v-1.2H9a1 1 0 0 1 0-2h.5v-1.2a.8.8 0 0 1 .8-.8h1.2V9a1 1 0 0 1 2 0v.5h1.2a.8.8 0 0 1 .8.8v1.2H15a1 1 0 0 0 0 2z" /></g></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="M15.5 13.5v1.2a.8.8 0 0 1-.8.8h-4.4a.8.8 0 0 1-.8-.8v-1.2H9a1 1 0 0 1 0-2h.5v-1.2a.8.8 0 0 1 .8-.8h1.2V9a1 1 0 0 1 2 0v.5h1.2a.8.8 0 0 1 .8.8v1.2H15a1 1 0 0 0 0 2z" /></g></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="M15.5 13.5v1.2a.8.8 0 0 1-.8.8h-4.4a.8.8 0 0 1-.8-.8v-1.2H9a1 1 0 0 1 0-2h.5v-1.2a.8.8 0 0 1 .8-.8h1.2V9a1 1 0 0 1 2 0v.5h1.2a.8.8 0 0 1 .8.8v1.2H15a1 1 0 0 0 0 2z" /></g></svg>
18
18
  </template>
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M12 15.337v-3.919L8.5 9.214m3.5 2.204l3.5-2.204M12 7.5l3.5 1.714v4.408L12 15.5l-3.5-1.878V9.214Z" /></g></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M12 15.337v-3.919L8.5 9.214m3.5 2.204l3.5-2.204M12 7.5l3.5 1.714v4.408L12 15.5l-3.5-1.878V9.214Z" /></g></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M12 15.337v-3.919L8.5 9.214m3.5 2.204l3.5-2.204M12 7.5l3.5 1.714v4.408L12 15.5l-3.5-1.878V9.214Z" /></g></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M12 15.337v-3.919L8.5 9.214m3.5 2.204l3.5-2.204M12 7.5l3.5 1.714v4.408L12 15.5l-3.5-1.878V9.214Z" /></g></svg>
18
18
  </template>
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="m10.5 8.5l-3 3.5l3 3.5m2-7l3 3.5l-3 3.5" /></g></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="m10.5 8.5l-3 3.5l3 3.5m2-7l3 3.5l-3 3.5" /></g></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="m10.5 8.5l-3 3.5l3 3.5m2-7l3 3.5l-3 3.5" /></g></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#65bb87" d="m10.5 8.5l-3 3.5l3 3.5m2-7l3 3.5l-3 3.5" /></g></svg>
18
18
  </template>
@@ -13,6 +13,6 @@ const props = withDefaults(
13
13
  </script>
14
14
 
15
15
  <template>
16
- <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M14.692 8.5H9.308a.31.31 0 0 0-.307.336l.47 5.241c.01.128.1.235.223.27l2.303 1.153l2.308-1.153a.31.31 0 0 0 .225-.27L15 8.836a.31.31 0 0 0-.307-.336" /></g></svg>
17
- <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M14.692 8.5H9.308a.31.31 0 0 0-.307.336l.47 5.241c.01.128.1.235.223.27l2.303 1.153l2.308-1.153a.31.31 0 0 0 .225-.27L15 8.836a.31.31 0 0 0-.307-.336" /></g></svg>
16
+ <svg v-if="props.expanded" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="m1.875 8l.686-2.743a1 1 0 0 1 .97-.757h10.938a1 1 0 0 1 .97 1.243l-.315 1.26M6 13.5H2.004A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M14.692 8.5H9.308a.31.31 0 0 0-.307.336l.47 5.241c.01.128.1.235.223.27l2.303 1.153l2.308-1.153a.31.31 0 0 0 .225-.27L15 8.836a.31.31 0 0 0-.307-.336" /></g></svg>
17
+ <svg v-else xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><!-- Icon from Catppuccin Icons by Catppuccin - https://github.com/catppuccin/vscode-icons/blob/main/LICENSE --><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path class="stroke-dark dark:stroke-light" d="M4.5 4.5H12A1.5 1.5 0 0 1 13.5 6v.5m-7.5 7H2A1.5 1.5 0 0 1 .5 12V3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1" /><path stroke="#E23730" d="M14.692 8.5H9.308a.31.31 0 0 0-.307.336l.47 5.241c.01.128.1.235.223.27l2.303 1.153l2.308-1.153a.31.31 0 0 0 .225-.27L15 8.836a.31.31 0 0 0-.307-.336" /></g></svg>
18
18
  </template>
@@ -0,0 +1,172 @@
1
+ <script setup lang="ts">
2
+ import { ref, watch } from 'vue';
3
+
4
+ defineOptions({ name: 'ResourceIconesBoxColorPicker' });
5
+
6
+ const props = defineProps<{ angle?: number | string, background?: Background, radius?: number | string, disabled?: boolean }>();
7
+
8
+ const emit = defineEmits<{
9
+ (e: 'update:angle', v: number | string): void
10
+ (e: 'update:background', v: Background): void
11
+ (e: 'update:radius', v: number | string): void
12
+ }>();
13
+
14
+ type Background = string | { from: string, to: string };
15
+
16
+ function normalizeAngle(a?: number | string): number {
17
+ if (typeof a === 'number' && Number.isFinite(a)) {
18
+ return (a % 360 + 360) % 360;
19
+ }
20
+ if (typeof a === 'string') {
21
+ const n = Number.parseFloat(a);
22
+ if (Number.isFinite(n)) {
23
+ return (n % 360 + 360) % 360;
24
+ }
25
+ }
26
+ return 65;
27
+ }
28
+ function normalizeBg(b?: Background): { from: string, to: string } {
29
+ if (!b) {
30
+ return { from: '#65E54A', to: '#35C724' };
31
+ }
32
+ if (typeof b === 'string') {
33
+ return { from: b, to: b };
34
+ }
35
+ return { from: b.from, to: b.to };
36
+ }
37
+ function normalizeRadius(r?: number | string): number {
38
+ if (typeof r === 'number' && Number.isFinite(r)) {
39
+ return Math.max(0, r);
40
+ }
41
+ if (typeof r === 'string') {
42
+ const n = Number.parseFloat(r);
43
+ if (Number.isFinite(n)) {
44
+ return Math.max(0, n);
45
+ }
46
+ }
47
+ return 6; // default px
48
+ }
49
+
50
+ const init = normalizeBg(props.background);
51
+ const fromColor = ref<string>(init.from);
52
+ const toColor = ref<string>(init.to);
53
+ const angleRef = ref<number>(normalizeAngle(props.angle));
54
+ const radiusRef = ref<number>(normalizeRadius(props.radius));
55
+
56
+ // 原生 color 输入:放在前缀里,用透明绝对定位来锚定弹层位置
57
+ const fromColorPickerRef = ref<HTMLInputElement | null>(null);
58
+ const toColorPickerRef = ref<HTMLInputElement | null>(null);
59
+ function openFromPicker() {
60
+ if (props.disabled) {
61
+ return;
62
+ }
63
+ const el = fromColorPickerRef.value;
64
+ if (el) {
65
+ // 确保有尺寸与位置,避免浏览器把弹层放到左上角
66
+ el.style.width = '16px';
67
+ el.style.height = '16px';
68
+ el.click();
69
+ }
70
+ }
71
+ function openToPicker() {
72
+ if (props.disabled) {
73
+ return;
74
+ }
75
+ const el = toColorPickerRef.value;
76
+ if (el) {
77
+ el.style.width = '16px';
78
+ el.style.height = '16px';
79
+ el.click();
80
+ }
81
+ }
82
+
83
+ watch([fromColor, toColor, angleRef, radiusRef], () => {
84
+ emit('update:background', { from: fromColor.value, to: toColor.value });
85
+ emit('update:angle', angleRef.value);
86
+ emit('update:radius', radiusRef.value);
87
+ }, { immediate: true });
88
+
89
+ watch(() => props.background, (b) => {
90
+ if (b == null) {
91
+ return;
92
+ }
93
+ const n = normalizeBg(b);
94
+ fromColor.value = n.from;
95
+ toColor.value = n.to;
96
+ });
97
+ watch(() => props.angle, (a) => {
98
+ if (a == null) {
99
+ return;
100
+ }
101
+ angleRef.value = normalizeAngle(a);
102
+ });
103
+ watch(() => props.radius, (r) => {
104
+ if (r == null) {
105
+ return;
106
+ }
107
+ radiusRef.value = normalizeRadius(r);
108
+ });
109
+
110
+ // 提示:预览区已移除以节省侧栏空间
111
+ </script>
112
+
113
+ <template>
114
+ <div class="flex flex-col gap-3 w-full select-none">
115
+ <!-- 起始色:紧凑输入(前缀色块 + 文本),隐藏原生 color 触发器 -->
116
+ <div class="flex items-center gap-3">
117
+ <label class="text-12px opacity-70 w-14 shrink-0">起始色</label>
118
+ <a-input v-model:value="fromColor" :disabled="props.disabled" placeholder="#65E54A" size="small" class="flex-1 min-w-0">
119
+ <template #prefix>
120
+ <div class="relative inline-flex items-center">
121
+ <button type="button" :disabled="props.disabled" class="w-4 h-4 rounded border border-gray-300 dark:border-gray-700" :class="props.disabled ? 'opacity-50 cursor-not-allowed' : ''" :style="{ background: fromColor }" @click="openFromPicker" />
122
+ <!-- 透明绝对定位的原生 input,用于正确锚定系统取色器位置 -->
123
+ <input
124
+ ref="fromColorPickerRef"
125
+ type="color"
126
+ :value="fromColor"
127
+ :disabled="props.disabled"
128
+ class="absolute left-0 top-0 opacity-0 pointer-events-none"
129
+ style="width:16px;height:16px;"
130
+ @input="fromColor = ($event.target as HTMLInputElement).value"
131
+ >
132
+ </div>
133
+ </template>
134
+ </a-input>
135
+ </div>
136
+
137
+ <!-- 结束色:紧凑输入(前缀色块 + 文本),隐藏原生 color 触发器 -->
138
+ <div class="flex items-center gap-3">
139
+ <label class="text-12px opacity-70 w-14 shrink-0">结束色</label>
140
+ <a-input v-model:value="toColor" :disabled="props.disabled" placeholder="#35C724" size="small" class="flex-1 min-w-0">
141
+ <template #prefix>
142
+ <div class="relative inline-flex items-center">
143
+ <button type="button" :disabled="props.disabled" class="w-4 h-4 rounded border border-gray-300 dark:border-gray-700" :class="props.disabled ? 'opacity-50 cursor-not-allowed' : ''" :style="{ background: toColor }" @click="openToPicker" />
144
+ <input
145
+ ref="toColorPickerRef"
146
+ type="color"
147
+ :value="toColor"
148
+ :disabled="props.disabled"
149
+ class="absolute left-0 top-0 opacity-0 pointer-events-none"
150
+ style="width:16px;height:16px;"
151
+ @input="toColor = ($event.target as HTMLInputElement).value"
152
+ >
153
+ </div>
154
+ </template>
155
+ </a-input>
156
+ </div>
157
+
158
+ <!-- 角度:仅使用数字输入,节省横向空间 -->
159
+ <div class="flex items-center gap-3">
160
+ <label class="text-12px opacity-70 w-14 shrink-0">角度</label>
161
+ <a-input-number v-model:value="angleRef" :disabled="props.disabled" :min="0" :max="360" :step="1" size="small" class="w-28" />
162
+ <span class="text-12px opacity-70">deg</span>
163
+ </div>
164
+
165
+ <!-- 圆角:仅使用数字输入,节省横向空间 -->
166
+ <div class="flex items-center gap-3">
167
+ <label class="text-12px opacity-70 w-14 shrink-0">圆角</label>
168
+ <a-input-number v-model:value="radiusRef" :disabled="props.disabled" :min="0" :max="48" :step="1" size="small" class="w-28" />
169
+ <span class="text-12px opacity-70">px</span>
170
+ </div>
171
+ </div>
172
+ </template>