@schemx/element-plus 0.0.1-beta.0

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 (184) hide show
  1. package/README.md +151 -0
  2. package/dist/__tests__/exports.test.d.ts +2 -0
  3. package/dist/__tests__/exports.test.d.ts.map +1 -0
  4. package/dist/__tests__/layout.test.d.ts +2 -0
  5. package/dist/__tests__/layout.test.d.ts.map +1 -0
  6. package/dist/__tests__/renderer-components.test.d.ts +2 -0
  7. package/dist/__tests__/renderer-components.test.d.ts.map +1 -0
  8. package/dist/__tests__/sensitive-input.test.d.ts +2 -0
  9. package/dist/__tests__/sensitive-input.test.d.ts.map +1 -0
  10. package/dist/__tests__/types/layout.types.d.ts +2 -0
  11. package/dist/__tests__/types/layout.types.d.ts.map +1 -0
  12. package/dist/__tests__/types/rendererProps.types.d.ts +2 -0
  13. package/dist/__tests__/types/rendererProps.types.d.ts.map +1 -0
  14. package/dist/analyze.html +4949 -0
  15. package/dist/config/defaultConfig.d.ts +6 -0
  16. package/dist/config/defaultConfig.d.ts.map +1 -0
  17. package/dist/index.cjs +2 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.ts +20 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.mjs +3 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/layout/defaultCol.d.ts +59 -0
  24. package/dist/layout/defaultCol.d.ts.map +1 -0
  25. package/dist/layout/defaultRow.d.ts +11 -0
  26. package/dist/layout/defaultRow.d.ts.map +1 -0
  27. package/dist/renderers/AutocompleteRenderer/index.d.ts +5 -0
  28. package/dist/renderers/AutocompleteRenderer/index.d.ts.map +1 -0
  29. package/dist/renderers/AutocompleteRenderer/index.vue.d.ts +48 -0
  30. package/dist/renderers/AutocompleteRenderer/index.vue.d.ts.map +1 -0
  31. package/dist/renderers/AutocompleteRenderer/types.d.ts +41 -0
  32. package/dist/renderers/AutocompleteRenderer/types.d.ts.map +1 -0
  33. package/dist/renderers/CascaderRenderer/index.d.ts +5 -0
  34. package/dist/renderers/CascaderRenderer/index.d.ts.map +1 -0
  35. package/dist/renderers/CascaderRenderer/index.vue.d.ts +29 -0
  36. package/dist/renderers/CascaderRenderer/index.vue.d.ts.map +1 -0
  37. package/dist/renderers/CascaderRenderer/types.d.ts +24 -0
  38. package/dist/renderers/CascaderRenderer/types.d.ts.map +1 -0
  39. package/dist/renderers/CheckboxRenderer/index.d.ts +5 -0
  40. package/dist/renderers/CheckboxRenderer/index.d.ts.map +1 -0
  41. package/dist/renderers/CheckboxRenderer/index.vue.d.ts +21 -0
  42. package/dist/renderers/CheckboxRenderer/index.vue.d.ts.map +1 -0
  43. package/dist/renderers/CheckboxRenderer/types.d.ts +24 -0
  44. package/dist/renderers/CheckboxRenderer/types.d.ts.map +1 -0
  45. package/dist/renderers/ColorPickerRenderer/index.d.ts +4 -0
  46. package/dist/renderers/ColorPickerRenderer/index.d.ts.map +1 -0
  47. package/dist/renderers/ColorPickerRenderer/index.vue.d.ts +25 -0
  48. package/dist/renderers/ColorPickerRenderer/index.vue.d.ts.map +1 -0
  49. package/dist/renderers/ColorPickerRenderer/types.d.ts +24 -0
  50. package/dist/renderers/ColorPickerRenderer/types.d.ts.map +1 -0
  51. package/dist/renderers/DatePickerRenderer/index.d.ts +4 -0
  52. package/dist/renderers/DatePickerRenderer/index.d.ts.map +1 -0
  53. package/dist/renderers/DatePickerRenderer/index.vue.d.ts +26 -0
  54. package/dist/renderers/DatePickerRenderer/index.vue.d.ts.map +1 -0
  55. package/dist/renderers/DatePickerRenderer/types.d.ts +20 -0
  56. package/dist/renderers/DatePickerRenderer/types.d.ts.map +1 -0
  57. package/dist/renderers/DateTimePickerRenderer/index.d.ts +4 -0
  58. package/dist/renderers/DateTimePickerRenderer/index.d.ts.map +1 -0
  59. package/dist/renderers/DateTimePickerRenderer/index.vue.d.ts +26 -0
  60. package/dist/renderers/DateTimePickerRenderer/index.vue.d.ts.map +1 -0
  61. package/dist/renderers/DateTimePickerRenderer/types.d.ts +25 -0
  62. package/dist/renderers/DateTimePickerRenderer/types.d.ts.map +1 -0
  63. package/dist/renderers/InputNumberRenderer/index.d.ts +4 -0
  64. package/dist/renderers/InputNumberRenderer/index.d.ts.map +1 -0
  65. package/dist/renderers/InputNumberRenderer/index.vue.d.ts +25 -0
  66. package/dist/renderers/InputNumberRenderer/index.vue.d.ts.map +1 -0
  67. package/dist/renderers/InputNumberRenderer/types.d.ts +20 -0
  68. package/dist/renderers/InputNumberRenderer/types.d.ts.map +1 -0
  69. package/dist/renderers/InputOtpRenderer/index.d.ts +4 -0
  70. package/dist/renderers/InputOtpRenderer/index.d.ts.map +1 -0
  71. package/dist/renderers/InputOtpRenderer/index.vue.d.ts +32 -0
  72. package/dist/renderers/InputOtpRenderer/index.vue.d.ts.map +1 -0
  73. package/dist/renderers/InputOtpRenderer/types.d.ts +22 -0
  74. package/dist/renderers/InputOtpRenderer/types.d.ts.map +1 -0
  75. package/dist/renderers/InputRenderer/index.d.ts +4 -0
  76. package/dist/renderers/InputRenderer/index.d.ts.map +1 -0
  77. package/dist/renderers/InputRenderer/index.vue.d.ts +46 -0
  78. package/dist/renderers/InputRenderer/index.vue.d.ts.map +1 -0
  79. package/dist/renderers/InputRenderer/types.d.ts +26 -0
  80. package/dist/renderers/InputRenderer/types.d.ts.map +1 -0
  81. package/dist/renderers/InputTagRenderer/index.d.ts +4 -0
  82. package/dist/renderers/InputTagRenderer/index.d.ts.map +1 -0
  83. package/dist/renderers/InputTagRenderer/index.vue.d.ts +42 -0
  84. package/dist/renderers/InputTagRenderer/index.vue.d.ts.map +1 -0
  85. package/dist/renderers/InputTagRenderer/types.d.ts +26 -0
  86. package/dist/renderers/InputTagRenderer/types.d.ts.map +1 -0
  87. package/dist/renderers/MentionRenderer/index.d.ts +5 -0
  88. package/dist/renderers/MentionRenderer/index.d.ts.map +1 -0
  89. package/dist/renderers/MentionRenderer/index.vue.d.ts +57 -0
  90. package/dist/renderers/MentionRenderer/index.vue.d.ts.map +1 -0
  91. package/dist/renderers/MentionRenderer/types.d.ts +34 -0
  92. package/dist/renderers/MentionRenderer/types.d.ts.map +1 -0
  93. package/dist/renderers/RadioRenderer/index.d.ts +5 -0
  94. package/dist/renderers/RadioRenderer/index.d.ts.map +1 -0
  95. package/dist/renderers/RadioRenderer/index.vue.d.ts +21 -0
  96. package/dist/renderers/RadioRenderer/index.vue.d.ts.map +1 -0
  97. package/dist/renderers/RadioRenderer/types.d.ts +22 -0
  98. package/dist/renderers/RadioRenderer/types.d.ts.map +1 -0
  99. package/dist/renderers/RateRenderer/index.d.ts +4 -0
  100. package/dist/renderers/RateRenderer/index.d.ts.map +1 -0
  101. package/dist/renderers/RateRenderer/index.vue.d.ts +20 -0
  102. package/dist/renderers/RateRenderer/index.vue.d.ts.map +1 -0
  103. package/dist/renderers/RateRenderer/types.d.ts +16 -0
  104. package/dist/renderers/RateRenderer/types.d.ts.map +1 -0
  105. package/dist/renderers/SelectRenderer/index.d.ts +5 -0
  106. package/dist/renderers/SelectRenderer/index.d.ts.map +1 -0
  107. package/dist/renderers/SelectRenderer/index.vue.d.ts +45 -0
  108. package/dist/renderers/SelectRenderer/index.vue.d.ts.map +1 -0
  109. package/dist/renderers/SelectRenderer/types.d.ts +36 -0
  110. package/dist/renderers/SelectRenderer/types.d.ts.map +1 -0
  111. package/dist/renderers/SensitiveInputRenderer/helper.d.ts +13 -0
  112. package/dist/renderers/SensitiveInputRenderer/helper.d.ts.map +1 -0
  113. package/dist/renderers/SensitiveInputRenderer/index.d.ts +5 -0
  114. package/dist/renderers/SensitiveInputRenderer/index.d.ts.map +1 -0
  115. package/dist/renderers/SensitiveInputRenderer/index.vue.d.ts +47 -0
  116. package/dist/renderers/SensitiveInputRenderer/index.vue.d.ts.map +1 -0
  117. package/dist/renderers/SensitiveInputRenderer/types.d.ts +51 -0
  118. package/dist/renderers/SensitiveInputRenderer/types.d.ts.map +1 -0
  119. package/dist/renderers/SliderRenderer/index.d.ts +4 -0
  120. package/dist/renderers/SliderRenderer/index.d.ts.map +1 -0
  121. package/dist/renderers/SliderRenderer/index.vue.d.ts +20 -0
  122. package/dist/renderers/SliderRenderer/index.vue.d.ts.map +1 -0
  123. package/dist/renderers/SliderRenderer/types.d.ts +16 -0
  124. package/dist/renderers/SliderRenderer/types.d.ts.map +1 -0
  125. package/dist/renderers/SwitchRenderer/index.d.ts +4 -0
  126. package/dist/renderers/SwitchRenderer/index.d.ts.map +1 -0
  127. package/dist/renderers/SwitchRenderer/index.vue.d.ts +22 -0
  128. package/dist/renderers/SwitchRenderer/index.vue.d.ts.map +1 -0
  129. package/dist/renderers/SwitchRenderer/types.d.ts +16 -0
  130. package/dist/renderers/SwitchRenderer/types.d.ts.map +1 -0
  131. package/dist/renderers/TimePickerRenderer/index.d.ts +4 -0
  132. package/dist/renderers/TimePickerRenderer/index.d.ts.map +1 -0
  133. package/dist/renderers/TimePickerRenderer/index.vue.d.ts +25 -0
  134. package/dist/renderers/TimePickerRenderer/index.vue.d.ts.map +1 -0
  135. package/dist/renderers/TimePickerRenderer/types.d.ts +23 -0
  136. package/dist/renderers/TimePickerRenderer/types.d.ts.map +1 -0
  137. package/dist/renderers/TimeSelectRenderer/index.d.ts +4 -0
  138. package/dist/renderers/TimeSelectRenderer/index.d.ts.map +1 -0
  139. package/dist/renderers/TimeSelectRenderer/index.vue.d.ts +25 -0
  140. package/dist/renderers/TimeSelectRenderer/index.vue.d.ts.map +1 -0
  141. package/dist/renderers/TimeSelectRenderer/types.d.ts +22 -0
  142. package/dist/renderers/TimeSelectRenderer/types.d.ts.map +1 -0
  143. package/dist/renderers/TreeSelectRenderer/index.d.ts +5 -0
  144. package/dist/renderers/TreeSelectRenderer/index.d.ts.map +1 -0
  145. package/dist/renderers/TreeSelectRenderer/index.vue.d.ts +44 -0
  146. package/dist/renderers/TreeSelectRenderer/index.vue.d.ts.map +1 -0
  147. package/dist/renderers/TreeSelectRenderer/types.d.ts +48 -0
  148. package/dist/renderers/TreeSelectRenderer/types.d.ts.map +1 -0
  149. package/dist/renderers/UploadRenderer/__tests__/preview.test.d.ts +2 -0
  150. package/dist/renderers/UploadRenderer/__tests__/preview.test.d.ts.map +1 -0
  151. package/dist/renderers/UploadRenderer/file-actions.vue.d.ts +29 -0
  152. package/dist/renderers/UploadRenderer/file-actions.vue.d.ts.map +1 -0
  153. package/dist/renderers/UploadRenderer/file-display.vue.d.ts +36 -0
  154. package/dist/renderers/UploadRenderer/file-display.vue.d.ts.map +1 -0
  155. package/dist/renderers/UploadRenderer/index.d.ts +4 -0
  156. package/dist/renderers/UploadRenderer/index.d.ts.map +1 -0
  157. package/dist/renderers/UploadRenderer/index.vue.d.ts +44 -0
  158. package/dist/renderers/UploadRenderer/index.vue.d.ts.map +1 -0
  159. package/dist/renderers/UploadRenderer/preview.vue.d.ts +76 -0
  160. package/dist/renderers/UploadRenderer/preview.vue.d.ts.map +1 -0
  161. package/dist/renderers/UploadRenderer/types.d.ts +67 -0
  162. package/dist/renderers/UploadRenderer/types.d.ts.map +1 -0
  163. package/dist/renderers/VirtualizedSelectRenderer/index.d.ts +5 -0
  164. package/dist/renderers/VirtualizedSelectRenderer/index.d.ts.map +1 -0
  165. package/dist/renderers/VirtualizedSelectRenderer/index.vue.d.ts +45 -0
  166. package/dist/renderers/VirtualizedSelectRenderer/index.vue.d.ts.map +1 -0
  167. package/dist/renderers/VirtualizedSelectRenderer/types.d.ts +36 -0
  168. package/dist/renderers/VirtualizedSelectRenderer/types.d.ts.map +1 -0
  169. package/dist/renderers/defaultRenderers.d.ts +499 -0
  170. package/dist/renderers/defaultRenderers.d.ts.map +1 -0
  171. package/dist/renderers/index.d.ts +48 -0
  172. package/dist/renderers/index.d.ts.map +1 -0
  173. package/dist/renderers/shared/date.d.ts +11 -0
  174. package/dist/renderers/shared/date.d.ts.map +1 -0
  175. package/dist/renderers/shared/options.d.ts +65 -0
  176. package/dist/renderers/shared/options.d.ts.map +1 -0
  177. package/dist/renderers/shared/props.d.ts +23 -0
  178. package/dist/renderers/shared/props.d.ts.map +1 -0
  179. package/dist/style.css +2 -0
  180. package/dist/types/schemx.d.ts +37 -0
  181. package/dist/types/schemx.d.ts.map +1 -0
  182. package/dist/utils/index.d.ts +140 -0
  183. package/dist/utils/index.d.ts.map +1 -0
  184. package/package.json +79 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Element Plus Renderer 属性处理工具。
3
+ *
4
+ * 将 Schemx 的运行时控制属性从 Element Plus 原生属性中剔除,避免字段上下文
5
+ * 和表单内部数据被错误透传给控件。
6
+ */
7
+ /**
8
+ * 合并并过滤 Renderer 的原生控件属性。
9
+ *
10
+ * @param props - Renderer 已声明的属性。
11
+ * @param attrs - Renderer 未声明的透传属性。
12
+ * @param extraKeys - 当前 Renderer 额外需要过滤的属性名。
13
+ * @returns 可传给 Element Plus 控件的属性对象。
14
+ */
15
+ export declare function getElementProps<TProps extends object>(props: TProps, attrs: Record<string, unknown>, extraKeys?: readonly string[]): Record<string, unknown>;
16
+ /**
17
+ * 从 Renderer Props 中提取表单项之外的 CSS 类名。
18
+ *
19
+ * @param className - Renderer 自定义类名。
20
+ * @returns 可用于根节点的类名值。
21
+ */
22
+ export declare function getRendererClassName(className?: string): string[];
23
+ //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/renderers/shared/props.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,MAAM,EACnD,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAK,GAAG,MAAM,EAAE,CAE7D"}
package/dist/style.css ADDED
@@ -0,0 +1,2 @@
1
+ .schemx{--schemx-primary-color:var(--el-color-primary,#409eff);--schemx-primary-color-light:var(--el-color-primary-light-9,#ecf5ff);--schemx-text-color:var(--el-text-color-primary,#303133);--schemx-text-color-secondary:var(--el-text-color-regular,#606266);--schemx-text-color-tertiary:var(--el-text-color-placeholder,#a8abb2);--schemx-text-color-placeholder:var(--el-text-color-placeholder,#a8abb2);--schemx-readonly-color:var(--el-text-color-secondary,#909399);--schemx-disabled-color:var(--el-text-color-placeholder,#a8abb2);--schemx-disabled-opacity:.6;--schemx-background-color:var(--el-bg-color,#fff);--schemx-background-color-light:var(--el-fill-color-light,#f5f7fa);--schemx-border-color:var(--el-border-color,#dcdfe6);--schemx-danger-color:var(--el-color-danger,#f56c6c);--schemx-success-color:var(--el-color-success,#67c23a);--schemx-warning-color:var(--el-color-warning,#e6a23c);--schemx-border-radius-xs:var(--el-border-radius-small,2px);--schemx-border-radius-sm:var(--el-border-radius-small,2px);--schemx-border-radius-md:var(--el-border-radius-base,4px);--schemx-border-radius-lg:var(--el-border-radius-base,4px);--schemx-field-label-color:var(--el-text-color-regular,#606266);--schemx-component-size:var(--el-component-size,32px);--schemx-group-arrow-size:7px}.schemx .schemx-group-wrapper{margin-bottom:var(--schemx-padding-md)}.schemx .schemx-group__header{padding-block:var(--schemx-padding-sm)}.schemx .schemx-field--label-left>.schemx-field__content{max-width:80%}.schemx-radio-renderer>.el-radio-group{flex-wrap:wrap;gap:10px 20px;display:flex}.schemx-radio-renderer>.el-radio-group .el-radio{margin-right:0}.schemx-radio-renderer>.el-radio-group{justify-content:var(--schemx-content-align)}.schemx-checkbox-renderer>.el-checkbox-group{flex-wrap:wrap;gap:10px 20px;display:flex}.schemx-checkbox-renderer>.el-checkbox-group .el-checkbox{margin-right:0}.schemx-checkbox-renderer>.el-checkbox-group{justify-content:var(--schemx-content-align)}.schemx-date-picker-renderer>.el-date-editor{--el-date-editor-width:100%}.schemx-cascader-renderer>.el-cascader{width:100%}.schemx-sensitive-input{align-items:center;justify-content:var(--schemx-content-align);gap:6px;width:100%;display:flex}.schemx-sensitive-input__toggle{color:var(--schemx-sensitive-input-action-color,var(--el-color-primary));font:inherit;line-height:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.schemx-sensitive-input__toggle:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px;border-radius:4px}.file-actions[data-v-212f5a0d]{flex-shrink:0;align-items:center;gap:11px;display:flex}.file-actions--inline[data-v-212f5a0d]{margin-left:12px}.file-actions--overlay[data-v-212f5a0d]{opacity:0;background:#00000073;justify-content:center;gap:10px;transition:opacity .2s;position:absolute;inset:0}.file-actions--overlay[data-v-212f5a0d] .el-button:not(.el-button--danger){color:#fff}.file-actions[data-v-212f5a0d] .el-button{--el-font-size-base:16px;margin-left:0}.file-display--picture-card .file-display__card-body:hover .file-actions--overlay,.file-display--picture-card .file-display__card-body:focus-within .file-actions--overlay{opacity:1}.file-display[data-v-97863f75]{box-sizing:border-box;width:100%;min-width:0}.file-display--text .file-display__text-item[data-v-97863f75]{background:var(--el-fill-color-lighter);border-radius:4px;align-items:center;min-height:36px;padding:0 10px;transition:background-color .2s;display:flex}.file-display--text .file-display__text-item[data-v-97863f75]:hover{background:var(--el-fill-color-light)}.file-display--text .file-display__text-item--error[data-v-97863f75]{color:var(--el-color-danger)}.file-display--text .file-display__text-info[data-v-97863f75]{flex:1;align-items:center;min-width:0;display:flex}.file-display--text .file-display__text-info--clickable[data-v-97863f75]{cursor:pointer}.file-display--text .file-display__text-icon[data-v-97863f75]{color:var(--el-text-color-secondary);flex-shrink:0;margin-right:8px}.file-display--text .file-display__text-name[data-v-97863f75]{color:var(--el-text-color-regular);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-display--text .file-display__text-status[data-v-97863f75]{color:var(--el-text-color-secondary);flex-shrink:0;margin-left:8px;font-size:12px}.file-display--picture .file-display__picture-item[data-v-97863f75]{border-radius:4px;align-items:center;min-height:36px;transition:background-color .2s;display:flex}.file-display--picture .file-display__picture-item--error[data-v-97863f75]{color:var(--el-color-danger)}.file-display--picture .file-display__picture-thumb[data-v-97863f75]{background:var(--el-fill-color);border-radius:4px;flex:0 0 48px;justify-content:center;align-items:center;width:45px;height:45px;margin-right:10px;display:flex;overflow:hidden}.file-display--picture .file-display__picture-thumb--clickable[data-v-97863f75]{cursor:pointer}.file-display--picture .file-display__picture-image[data-v-97863f75]{object-fit:cover;width:100%;height:100%}.file-display--picture .file-display__picture-file-icon[data-v-97863f75]{color:var(--el-text-color-secondary);font-size:24px}.file-display--picture .file-display__picture-info[data-v-97863f75]{flex:1;align-items:center;min-width:0;display:flex}.file-display--picture .file-display__picture-info--clickable[data-v-97863f75]{cursor:pointer}.file-display--picture .file-display__picture-name[data-v-97863f75]{color:var(--el-text-color-regular);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-display--picture .file-display__picture-status[data-v-97863f75]{color:var(--el-text-color-secondary);flex-shrink:0;margin-left:8px;font-size:12px}.file-display--picture-card[data-v-97863f75]{height:100%}.file-display--picture-card .file-display__card[data-v-97863f75]{background:var(--el-bg-color);flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.file-display--picture-card .file-display__card--error[data-v-97863f75]{color:var(--el-color-danger)}.file-display--picture-card .file-display__card-body[data-v-97863f75]{background:var(--el-fill-color-lighter);flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.file-display--picture-card .file-display__card-body--clickable[data-v-97863f75]{cursor:pointer}.file-display--picture-card .file-display__card-image[data-v-97863f75]{object-fit:cover;width:100%;height:100%}.file-display--picture-card .file-display__card-file-icon[data-v-97863f75]{color:var(--el-text-color-secondary);font-size:36px}.file-display--picture-card .file-display__card-status[data-v-97863f75]{color:#fff;background:#0000008c;border-radius:3px;padding:1px 4px;font-size:12px;position:absolute;bottom:4px;right:6px}.file-display--picture-card .file-display__card-footer[data-v-97863f75]{flex:0 0 32px;align-items:center;gap:4px;min-width:0;padding:0 6px;display:flex}.file-display--picture-card .file-display__card-name[data-v-97863f75]{min-width:0;color:var(--el-text-color-regular);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.file-preview__action{cursor:pointer;outline:none}.file-preview__action:focus-visible{outline-offset:2px;border-radius:2px;outline:2px solid}.file-preview__content{z-index:1;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.file-preview__content>*{pointer-events:auto}.file-preview__unsupported{color:var(--el-fill-color-light);flex-direction:column;align-items:center;gap:24px;display:flex}.file-preview__unsupported-icon{flex-shrink:0;font-size:48px}.file-preview__unsupported p{margin:0;font-size:15px}.el-image-viewer__mask{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:1;background-color:#00000059}.schemx-renderer .el-upload-list,.schemx-renderer .el-upload{--el-upload-list-picture-card-size:125px;--el-upload-picture-card-size:125px}.schemx-upload-renderer__readonly-list{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.schemx-upload-renderer__readonly-list .el-image{width:80px;height:80px}.schemx-upload-renderer__readonly-file{color:var(--el-text-color-regular)}.schemx-date-time-picker-renderer>.el-date-editor{--el-date-editor-width:100%}.schemx-time-picker-renderer>.el-date-editor{--el-date-editor-width:100%}.schemx-renderer{box-sizing:border-box;width:100%}
2
+ /*$vite$:1*/
@@ -0,0 +1,37 @@
1
+ import { AutocompleteRendererProps, CascaderRendererProps, CheckboxRendererProps, ColorPickerRendererProps, DatePickerRendererProps, DateTimePickerRendererProps, InputNumberRendererProps, InputOtpRendererProps, InputRendererProps, InputTagRendererProps, MentionRendererProps, RadioRendererProps, RateRendererProps, SelectRendererProps, SensitiveInputRendererProps, SliderRendererProps, SwitchRendererProps, TimePickerRendererProps, TimeSelectRendererProps, TreeSelectRendererProps, UploadRendererProps, VirtualizedSelectRendererProps } from '../renderers';
2
+ import { Values } from '@schemx/core';
3
+ import { SchemxWithDictionary } from '@schemx/vue';
4
+ import { ColProps, RowProps } from 'element-plus';
5
+ declare module "@schemx/core" {
6
+ interface SchemxRendererDefinition<TValues extends Values> {
7
+ input: InputRendererProps;
8
+ inputNumber: InputNumberRendererProps;
9
+ switch: SwitchRendererProps;
10
+ radio: SchemxWithDictionary<RadioRendererProps, TValues>;
11
+ checkbox: SchemxWithDictionary<CheckboxRendererProps, TValues>;
12
+ datePicker: DatePickerRendererProps;
13
+ cascader: SchemxWithDictionary<CascaderRendererProps, TValues>;
14
+ sensitiveInput: SensitiveInputRendererProps;
15
+ rate: RateRendererProps;
16
+ slider: SliderRendererProps;
17
+ upload: UploadRendererProps;
18
+ autocomplete: SchemxWithDictionary<AutocompleteRendererProps, TValues>;
19
+ colorPicker: ColorPickerRendererProps;
20
+ datetimePicker: DateTimePickerRendererProps;
21
+ inputTag: InputTagRendererProps;
22
+ inputOtp: InputOtpRendererProps;
23
+ mention: SchemxWithDictionary<MentionRendererProps, TValues>;
24
+ select: SchemxWithDictionary<SelectRendererProps, TValues>;
25
+ virtualizedSelect: SchemxWithDictionary<VirtualizedSelectRendererProps, TValues>;
26
+ timePicker: TimePickerRendererProps;
27
+ timeSelect: TimeSelectRendererProps;
28
+ treeSelect: SchemxWithDictionary<TreeSelectRendererProps, TValues>;
29
+ }
30
+ }
31
+ declare module "@schemx/vue" {
32
+ interface SchemxColDefinition<TValues extends Values = Values> extends ColProps {
33
+ }
34
+ interface SchemxRowDefinition<TValues extends Values = Values> extends Omit<RowProps, "gutter"> {
35
+ }
36
+ }
37
+ //# sourceMappingURL=schemx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemx.d.ts","sourceRoot":"","sources":["../../src/types/schemx.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,wBAAwB,CAAC,OAAO,SAAS,MAAM;QACvD,KAAK,EAAE,kBAAkB,CAAA;QACzB,WAAW,EAAE,wBAAwB,CAAA;QACrC,MAAM,EAAE,mBAAmB,CAAA;QAC3B,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;QACxD,QAAQ,EAAE,oBAAoB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;QAC9D,UAAU,EAAE,uBAAuB,CAAA;QACnC,QAAQ,EAAE,oBAAoB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;QAC9D,cAAc,EAAE,2BAA2B,CAAA;QAC3C,IAAI,EAAE,iBAAiB,CAAA;QACvB,MAAM,EAAE,mBAAmB,CAAA;QAC3B,MAAM,EAAE,mBAAmB,CAAA;QAC3B,YAAY,EAAE,oBAAoB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAA;QACtE,WAAW,EAAE,wBAAwB,CAAA;QACrC,cAAc,EAAE,2BAA2B,CAAA;QAC3C,QAAQ,EAAE,qBAAqB,CAAA;QAC/B,QAAQ,EAAE,qBAAqB,CAAA;QAC/B,OAAO,EAAE,oBAAoB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QAC5D,MAAM,EAAE,oBAAoB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;QAC1D,iBAAiB,EAAE,oBAAoB,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAA;QAChF,UAAU,EAAE,uBAAuB,CAAA;QACnC,UAAU,EAAE,uBAAuB,CAAA;QACnC,UAAU,EAAE,oBAAoB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAA;KACnE;CACF;AAED,OAAO,QAAQ,aAAa,CAAC;IAE3B,UAAU,mBAAmB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,QAAQ;KAAG;IAGlF,UAAU,mBAAmB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,CACzE,QAAQ,EACR,QAAQ,CACT;KAAG;CACL"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Element Plus Renderer 工具函数
3
+ *
4
+ * 提供渲染器组件中常用的属性提取、树形数据查找、文件名解析等工具。
5
+ *
6
+ * @module utils
7
+ */
8
+ /**
9
+ * 从 attrs 对象中获取指定属性值,不存在时返回默认值。
10
+ *
11
+ * 用于从 Vue 组件的 `attrs` 中安全地提取透传属性,
12
+ * 常见场景包括读取 Renderer 的透传属性。
13
+ *
14
+ * @param attrs - Vue 组件的 attrs 对象
15
+ * @param key - 属性名
16
+ * @param defaultValue - 默认值
17
+ * @typeParam TProps - attrs 对象类型
18
+ *
19
+ * @returns 属性值或默认值
20
+ *
21
+ * @example
22
+ * getFieldProps(attrs, "align", "right")
23
+ * getFieldProps(attrs, "rightIcon", "arrow")
24
+ */
25
+ export declare function getFieldProps<TProps extends Record<string, unknown>>(attrs: TProps, key: keyof TProps, defaultValue?: TProps[typeof key]): TProps[typeof key];
26
+ /**
27
+ * 判断值是否应按空值展示。
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * isEmptyDisplayValue([]) // => true
32
+ * isEmptyDisplayValue(0) // => false
33
+ * ```
34
+ */
35
+ export declare function isEmptyDisplayValue(value: unknown): boolean;
36
+ /**
37
+ * 获取只读态展示值。
38
+ *
39
+ * 只在值为空时回退到 readonlyPlaceholder,保留 0、false 等有效值。
40
+ *
41
+ * @typeParam TValue - 待展示的值类型。
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * getReadonlyDisplayValue(undefined, "未填写") // => "未填写"
46
+ * getReadonlyDisplayValue(0, "未填写") // => 0
47
+ * ```
48
+ */
49
+ export declare function getReadonlyDisplayValue<TValue>(value: TValue, readonlyPlaceholder?: string): TValue | string;
50
+ export type RendererMode = "editable" | "disabled" | "readonly";
51
+ /**
52
+ * 解析渲染器当前呈现模式。
53
+ *
54
+ * disabled/readonly 仍会阻止交互。
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * resolveRendererMode({ readonly: true }) // => "readonly"
59
+ * resolveRendererMode({ disabled: true, readonly: true }) // => "disabled"
60
+ * ```
61
+ */
62
+ export declare function resolveRendererMode(options: {
63
+ disabled?: boolean;
64
+ readonly?: boolean;
65
+ }): RendererMode;
66
+ /**
67
+ * 判断当前状态是否允许用户交互。
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * isRendererInteractive("editable") // => true
72
+ * isRendererInteractive("disabled") // => false
73
+ * ```
74
+ */
75
+ export declare function isRendererInteractive(mode: RendererMode): boolean;
76
+ /**
77
+ * 树形查找结果
78
+ *
79
+ * @typeParam TNode - 树节点类型。
80
+ * @typeParam TValue - 节点值类型。
81
+ */
82
+ export interface FindTreeItemResult<TNode extends Record<string, unknown> = Record<string, unknown>, TValue = unknown> {
83
+ /** 匹配节点 */
84
+ node: TNode | null;
85
+ /** 从根到匹配节点的 label 路径 */
86
+ labels: string[];
87
+ /** 从根到匹配节点的 value 路径 */
88
+ values: TValue[];
89
+ }
90
+ /**
91
+ * 在树形数据中查找指定值的节点,返回匹配节点及其路径信息。
92
+ *
93
+ * 支持自定义字段名映射,适用于 Cascader 等树形选择组件。
94
+ *
95
+ * @typeParam TNode - 树节点类型。
96
+ * @typeParam TValue - 待查找的节点值类型。
97
+ * @param tree - 树形数据数组
98
+ * @param targetValue - 要查找的目标值
99
+ * @param options - 字段名配置
100
+ * @param options.labelKey - label 字段名,默认 `"label"`
101
+ * @param options.valueKey - value 字段名,默认 `"value"`
102
+ * @param options.childrenKey - children 字段名,默认 `"children"`
103
+ *
104
+ * @returns `{ node, labels, values }`:匹配节点、label 路径和 value 路径
105
+ *
106
+ * @example
107
+ * const result = findTreeItem(tree, "guangzhou", {
108
+ * labelKey: "text",
109
+ * valueKey: "value",
110
+ * childrenKey: "children",
111
+ * })
112
+ * const { node, labels, values } = result
113
+ * // node => { text: "广州", value: "guangzhou" }
114
+ * // labels => ["广东", "广州"]
115
+ * // values => ["guangdong", "guangzhou"]
116
+ */
117
+ export declare function findTreeItem<TNode extends Record<string, unknown>, TValue>(tree: TNode[], targetValue: TValue, options?: {
118
+ labelKey?: string;
119
+ valueKey?: string;
120
+ childrenKey?: string;
121
+ }): FindTreeItemResult<TNode, TValue>;
122
+ /**
123
+ * 从 URL 或文件路径中提取文件名。
124
+ *
125
+ * 去除查询参数和 hash 后,取最后一段路径作为文件名。
126
+ * 用于上传组件中生成文件的唯一标识。
127
+ *
128
+ * @param url - 文件 URL 或路径
129
+ *
130
+ * @returns 文件名字符串,无法解析时返回原始输入或时间戳
131
+ *
132
+ * @example
133
+ * getFileName("https://cdn.example.com/uploads/photo.jpg?t=123")
134
+ * // => "photo.jpg"
135
+ *
136
+ * getFileName("blob:http://localhost:3000/abc-def")
137
+ * // => "abc-def"
138
+ */
139
+ export declare function getFileName(url: string | undefined | null): string;
140
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,MAAM,EACjB,YAAY,GAAE,MAAM,CAAC,OAAO,GAAG,CAAmC,GACjE,MAAM,CAAC,OAAO,GAAG,CAAC,CAEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAO3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAC5C,KAAK,EAAE,MAAM,EACb,mBAAmB,SAAM,GACxB,MAAM,GAAG,MAAM,CAEjB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,YAAY,CAKf;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,GAAG,OAAO;IAEhB,WAAW;IACX,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAClB,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EACxE,IAAI,EAAE,KAAK,EAAE,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CAChB,GACL,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAoCnC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAclE"}
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "type": "module",
3
+ "name": "@schemx/element-plus",
4
+ "version": "0.0.1-beta.0",
5
+ "description": "基于 Element Plus UI 库的 schemx 渲染器适配包",
6
+ "keywords": [
7
+ "schemx",
8
+ "element-plus",
9
+ "vue",
10
+ "vue3",
11
+ "form",
12
+ "dynamic-form",
13
+ "json-schema"
14
+ ],
15
+ "homepage": "https://github.com/Jiohon/schemx/tree/main/packages/element-plus#readme",
16
+ "bugs": {
17
+ "url": "https://github.com/Jiohon/schemx/issues"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/Jiohon/schemx.git",
22
+ "directory": "packages/element-plus"
23
+ },
24
+ "main": "./dist/index.cjs",
25
+ "module": "./dist/index.mjs",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "import": {
30
+ "types": "./dist/index.d.ts",
31
+ "default": "./dist/index.mjs"
32
+ },
33
+ "require": {
34
+ "types": "./dist/index.d.ts",
35
+ "default": "./dist/index.cjs"
36
+ }
37
+ },
38
+ "./style.css": "./dist/style.css"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md"
43
+ ],
44
+ "sideEffects": [
45
+ "**/*.css",
46
+ "**/*.scss",
47
+ "**/index.ts"
48
+ ],
49
+ "peerDependencies": {
50
+ "@element-plus/icons-vue": "^2.3.1",
51
+ "element-plus": "^2.14.0",
52
+ "vue": "^3.0.0"
53
+ },
54
+ "dependencies": {
55
+ "dayjs": "^1.11.19",
56
+ "@schemx/vue": "1.2.0",
57
+ "@schemx/core": "1.1.1"
58
+ },
59
+ "license": "MIT",
60
+ "devDependencies": {
61
+ "@vue/test-utils": "^2.4.6",
62
+ "@element-plus/icons-vue": "^2.3.1",
63
+ "element-plus": "^2.14.0",
64
+ "vue": "^3.4.0"
65
+ },
66
+ "scripts": {
67
+ "build": "pnpm run type-check && vp build",
68
+ "build:analyze": "vp build",
69
+ "build:deps": "pnpm --filter \"@schemx/element-plus^...\" run build",
70
+ "test": "vp test run --passWithNoTests",
71
+ "lint": "eslint \"src/**/*.{ts,tsx,vue,js,jsx}\"",
72
+ "lint:fix": "eslint \"src/**/*.{ts,tsx,vue,js,jsx}\" --fix",
73
+ "format": "vp fmt \"src/**/*.{ts,tsx,vue,js,jsx,json,css,scss}\"",
74
+ "format:check": "vp fmt --check \"src/**/*.{ts,tsx,vue,js,jsx,json,css,scss}\"",
75
+ "type-check": "pnpm run build:deps && tsc -p tsconfig.json --noEmit",
76
+ "check": "pnpm run build:deps && pnpm run lint && pnpm run format:check && tsc -p tsconfig.json --noEmit",
77
+ "pack-local": "node ../../scripts/workflow.ts pack-local --target packages/element-plus"
78
+ }
79
+ }