xt-element-ui 2.2.3 → 2.2.4

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 (116) hide show
  1. package/README.md +140 -192
  2. package/docs/README.md +162 -88
  3. package/docs/components/base/theme.md +248 -0
  4. package/docs/components/base/xt-list.md +1 -1
  5. package/docs/components/base/xt-scroll-arrow.md +87 -1
  6. package/docs/components/base/xt-scroll.md +237 -0
  7. package/docs/components/utils/config.md +18 -4
  8. package/docs/components/utils/theme.md +280 -183
  9. package/lib/index.common.1.js +4 -26
  10. package/lib/index.common.2.js +1 -1
  11. package/lib/index.common.js +1871 -671
  12. package/lib/index.css +1 -1
  13. package/lib/index.umd.1.js +4 -26
  14. package/lib/index.umd.2.js +1 -1
  15. package/lib/index.umd.js +1871 -671
  16. package/lib/index.umd.min.1.js +1 -1
  17. package/lib/index.umd.min.js +1 -1
  18. package/lib/theme/element-overrides.css +607 -0
  19. package/lib/theme/element-vars.css +280 -0
  20. package/lib/xt-badge/xt-badge.common.js +1 -1
  21. package/lib/xt-badge/xt-badge.umd.js +1 -1
  22. package/lib/xt-button/xt-button.common.js +1 -1
  23. package/lib/xt-button/xt-button.umd.js +1 -1
  24. package/lib/xt-card/xt-card.common.js +1 -1
  25. package/lib/xt-card/xt-card.umd.js +1 -1
  26. package/lib/xt-card-item/xt-card-item.common.js +1 -1
  27. package/lib/xt-card-item/xt-card-item.umd.js +1 -1
  28. package/lib/xt-chart/xt-chart.common.js +5 -5
  29. package/lib/xt-chart/xt-chart.umd.js +5 -5
  30. package/lib/xt-config-provider/xt-config-provider.css +1 -1
  31. package/lib/xt-date-picker/xt-date-picker.common.1.js +4 -26
  32. package/lib/xt-date-picker/xt-date-picker.common.2.js +1 -1
  33. package/lib/xt-date-picker/xt-date-picker.common.js +1 -47
  34. package/lib/xt-date-picker/xt-date-picker.css +1 -1
  35. package/lib/xt-date-picker/xt-date-picker.umd.1.js +4 -26
  36. package/lib/xt-date-picker/xt-date-picker.umd.2.js +1 -1
  37. package/lib/xt-date-picker/xt-date-picker.umd.js +1 -47
  38. package/lib/xt-date-picker/xt-date-picker.umd.min.1.js +1 -1
  39. package/lib/xt-date-picker/xt-date-picker.umd.min.js +1 -1
  40. package/lib/xt-flex-box/xt-flex-box.common.js +1 -1
  41. package/lib/xt-flex-box/xt-flex-box.umd.js +1 -1
  42. package/lib/xt-flow/xt-flow.common.js +1 -1
  43. package/lib/xt-flow/xt-flow.umd.js +1 -1
  44. package/lib/xt-form-schema/xt-form-schema.common.js +1 -1
  45. package/lib/xt-form-schema/xt-form-schema.umd.js +1 -1
  46. package/lib/xt-grid-box/xt-grid-box.common.js +1 -1
  47. package/lib/xt-grid-box/xt-grid-box.umd.js +1 -1
  48. package/lib/xt-grid-item/xt-grid-item.common.js +1 -1
  49. package/lib/xt-grid-item/xt-grid-item.umd.js +1 -1
  50. package/lib/xt-icon/xt-icon.common.js +1 -1
  51. package/lib/xt-icon/xt-icon.umd.js +1 -1
  52. package/lib/xt-input/xt-input.common.js +1 -1
  53. package/lib/xt-input/xt-input.umd.js +1 -1
  54. package/lib/xt-list/xt-list.common.js +457 -118
  55. package/lib/xt-list/xt-list.css +1 -1
  56. package/lib/xt-list/xt-list.umd.js +457 -118
  57. package/lib/xt-list/xt-list.umd.min.js +1 -1
  58. package/lib/xt-map/xt-map.common.js +1 -1
  59. package/lib/xt-map/xt-map.umd.js +1 -1
  60. package/lib/xt-map-provider/xt-map-provider.common.js +1 -1
  61. package/lib/xt-map-provider/xt-map-provider.umd.js +1 -1
  62. package/lib/xt-page/xt-page.common.js +1 -1
  63. package/lib/xt-page/xt-page.umd.js +1 -1
  64. package/lib/xt-progress/xt-progress.common.js +1 -1
  65. package/lib/xt-progress/xt-progress.umd.js +1 -1
  66. package/lib/xt-scroll/demo.html +10 -0
  67. package/lib/xt-scroll/index.js +1 -0
  68. package/lib/xt-scroll/xt-scroll.common.js +551 -0
  69. package/lib/xt-scroll/xt-scroll.css +1 -0
  70. package/lib/xt-scroll/xt-scroll.umd.js +561 -0
  71. package/lib/xt-scroll/xt-scroll.umd.min.js +1 -0
  72. package/lib/xt-scroll-arrow/xt-scroll-arrow.common.js +591 -170
  73. package/lib/xt-scroll-arrow/xt-scroll-arrow.css +1 -1
  74. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.js +591 -170
  75. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.min.js +1 -1
  76. package/lib/xt-select-tree/xt-select-tree.common.js +1 -1
  77. package/lib/xt-select-tree/xt-select-tree.umd.js +1 -1
  78. package/lib/xt-step-price/xt-step-price.common.js +2 -2
  79. package/lib/xt-step-price/xt-step-price.umd.js +2 -2
  80. package/lib/xt-step-price-item/xt-step-price-item.common.js +1 -1
  81. package/lib/xt-step-price-item/xt-step-price-item.umd.js +1 -1
  82. package/lib/xt-tab-pane/xt-tab-pane.common.js +1 -1
  83. package/lib/xt-tab-pane/xt-tab-pane.umd.js +1 -1
  84. package/lib/xt-table/xt-table.common.js +2 -2
  85. package/lib/xt-table/xt-table.umd.js +2 -2
  86. package/lib/xt-tabs/xt-tabs.common.js +1 -1
  87. package/lib/xt-tabs/xt-tabs.umd.js +1 -1
  88. package/lib/xt-text/xt-text.common.js +1 -1
  89. package/lib/xt-text/xt-text.umd.js +1 -1
  90. package/lib/xt-time/xt-time.common.js +1 -1
  91. package/lib/xt-time/xt-time.umd.js +1 -1
  92. package/lib/xt-transfer-tree/xt-transfer-tree.common.js +1 -1
  93. package/lib/xt-transfer-tree/xt-transfer-tree.umd.js +1 -1
  94. package/lib/xt-upload/xt-upload.common.js +2 -2
  95. package/lib/xt-upload/xt-upload.umd.js +2 -2
  96. package/package.json +5 -3
  97. package/src/components/index.scss +3 -0
  98. package/src/components/theme/element-overrides.css +607 -0
  99. package/src/components/theme/element-vars.css +280 -0
  100. package/src/components/theme/iframe-injector.js +502 -0
  101. package/src/components/theme/index.js +64 -0
  102. package/src/components/xt-config-provider/style/index.scss +0 -11
  103. package/src/components/xt-date-picker/component/RangeDate.vue +1 -29
  104. package/src/components/xt-date-picker/style/index.scss +80 -53
  105. package/src/components/xt-list/index.vue +23 -12
  106. package/src/components/xt-scroll/index.js +9 -0
  107. package/src/components/xt-scroll/index.vue +363 -0
  108. package/src/components/xt-scroll/style/index.scss +107 -0
  109. package/src/components/xt-scroll-arrow/index.vue +200 -83
  110. package/src/components/xt-scroll-arrow/style/index.scss +16 -5
  111. package/src/index.js +9 -2
  112. package/src/utils/color.js +105 -0
  113. package/src/utils/index.js +456 -468
  114. package/src/utils/theme-vars.js +134 -0
  115. package/lib/css/1.87a493be.css +0 -1
  116. package/lib/xt-date-picker/css/1.87a493be.css +0 -1
@@ -0,0 +1,134 @@
1
+ /**
2
+ * 主题 CSS 变量常量
3
+ * 供 utils/index.js 和 theme/iframe-injector.js 共同使用
4
+ * 定义 Element UI 组件主题相关的 CSS 变量映射
5
+ */
6
+ import { generatePrimaryColorVars } from './color'
7
+
8
+ /**
9
+ * 亮色主题 Element UI CSS 变量(关键子集:主色/背景/文字/边框/填充/遮罩)
10
+ */
11
+ export const LIGHT_THEME_VARS = {
12
+ '--el-color-primary': '#1890ff',
13
+ '--el-color-success': '#67c23a',
14
+ '--el-color-warning': '#e6a23c',
15
+ '--el-color-danger': '#f56c6c',
16
+ '--el-color-error': '#f56c6c',
17
+ '--el-color-info': '#909399',
18
+ '--el-bg-color': '#ffffff',
19
+ '--el-bg-color-page': '#f2f3f5',
20
+ '--el-bg-color-overlay': '#ffffff',
21
+ '--el-text-color-primary': '#303133',
22
+ '--el-text-color-regular': '#606266',
23
+ '--el-text-color-secondary': '#909399',
24
+ '--el-text-color-placeholder': '#a8abb2',
25
+ '--el-text-color-disabled': '#c0c4cc',
26
+ '--el-border-color': '#dcdfe6',
27
+ '--el-border-color-light': '#e4e7ed',
28
+ '--el-border-color-lighter': '#ebeef5',
29
+ '--el-fill-color': '#f0f2f5',
30
+ '--el-fill-color-light': '#f5f7fa',
31
+ '--el-fill-color-lighter': '#fafafa',
32
+ '--el-mask-color': 'rgba(255, 255, 255, .9)',
33
+ '--el-mask-color-extra-light': 'rgba(255, 255, 255, .3)'
34
+ }
35
+
36
+ /**
37
+ * 暗色主题 Element UI CSS 变量(对应 LIGHT_THEME_VARS 的暗色版本)
38
+ */
39
+ export const DARK_THEME_VARS = {
40
+ '--el-color-primary': '#409eff',
41
+ '--el-color-success': '#67c23a',
42
+ '--el-color-warning': '#e6a23c',
43
+ '--el-color-danger': '#f56c6c',
44
+ '--el-color-error': '#f56c6c',
45
+ '--el-color-info': '#909399',
46
+ '--el-bg-color': '#141414',
47
+ '--el-bg-color-page': '#0a0a0a',
48
+ '--el-bg-color-overlay': '#1d1e1f',
49
+ '--el-text-color-primary': '#E5EAF3',
50
+ '--el-text-color-regular': '#CFD3DC',
51
+ '--el-text-color-secondary': '#A3A6AD',
52
+ '--el-text-color-placeholder': '#8D9095',
53
+ '--el-text-color-disabled': '#6C6E72',
54
+ '--el-border-color': '#4C4D4F',
55
+ '--el-border-color-light': '#414243',
56
+ '--el-border-color-lighter': '#363637',
57
+ '--el-fill-color': '#303030',
58
+ '--el-fill-color-light': '#262727',
59
+ '--el-fill-color-lighter': '#1D1D1D',
60
+ '--el-mask-color': 'rgba(0, 0, 0, .8)',
61
+ '--el-mask-color-extra-light': 'rgba(0, 0, 0, .3)'
62
+ }
63
+
64
+ /**
65
+ * 品牌色映射
66
+ * 用于微前端架构中根据品牌标识切换主题主色
67
+ */
68
+ export const BRAND_COLORS = {
69
+ water: { light: '#0077be', dark: '#0099cc' },
70
+ electricity: { light: '#2ecc71', dark: '#27ae60' },
71
+ gas: { light: '#f39c12', dark: '#e67e22' }
72
+ }
73
+
74
+ /**
75
+ * 主题存储 key
76
+ */
77
+ export const THEME_STORAGE_KEY = 'xt-element-ui-theme-config'
78
+
79
+ /**
80
+ * 主题变化事件名
81
+ */
82
+ export const THEME_CHANGE_EVENT = 'xt-theme-change'
83
+
84
+ /**
85
+ * 将主题相关 CSS 变量应用到任意 DOM 元素
86
+ * 统一 utils/index.js(主文档)和 iframe-injector.js(iframe)的变量设置逻辑
87
+ *
88
+ * @param {HTMLElement} element - 目标元素(通常是 document.documentElement)
89
+ * @param {Object} config
90
+ * @param {string} config.theme - 'white' | 'dark'
91
+ * @param {string} [config.primaryColor] - 主色调 hex
92
+ * @param {string} [config.brand] - 品牌标识 '' | 'water' | 'electricity' | 'gas'
93
+ */
94
+ export function applyThemeVars(element, config) {
95
+ if (!element) return
96
+
97
+ const { theme = 'white', primaryColor, brand = '' } = config
98
+ const style = element.style
99
+
100
+ // 1. 设置 data-theme / data-brand 属性
101
+ element.setAttribute('data-theme', theme)
102
+ if (brand) {
103
+ element.setAttribute('data-brand', brand)
104
+ } else {
105
+ element.removeAttribute('data-brand')
106
+ }
107
+
108
+ // 2. 应用主题变量(亮色/暗色)
109
+ const themeVars = theme === 'dark' ? DARK_THEME_VARS : LIGHT_THEME_VARS
110
+ for (const key in themeVars) {
111
+ style.setProperty(key, themeVars[key])
112
+ }
113
+
114
+ // 3. 应用主色调变量
115
+ let color = primaryColor
116
+ if (brand && BRAND_COLORS[brand]) {
117
+ color = BRAND_COLORS[brand][theme === 'dark' ? 'dark' : 'light'] || primaryColor
118
+ }
119
+ if (color) {
120
+ const primaryVars = generatePrimaryColorVars(color)
121
+ for (const key in primaryVars) {
122
+ style.setProperty(key, primaryVars[key])
123
+ }
124
+ }
125
+ }
126
+
127
+ export default {
128
+ LIGHT_THEME_VARS,
129
+ DARK_THEME_VARS,
130
+ BRAND_COLORS,
131
+ THEME_STORAGE_KEY,
132
+ THEME_CHANGE_EVENT,
133
+ applyThemeVars
134
+ }
@@ -1 +0,0 @@
1
- .range-picker[data-v-32b85e82]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%}.range-picker .el-date-editor[data-v-32b85e82]{flex:1;min-width:130px}.split[data-v-32b85e82]{flex-shrink:0;padding:0 4px}@media (max-width:360px){.range-picker[data-v-32b85e82]{flex-direction:column;align-items:stretch}.split[data-v-32b85e82]{text-align:center;margin:4px 0}}
@@ -1 +0,0 @@
1
- .range-picker[data-v-32b85e82]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%}.range-picker .el-date-editor[data-v-32b85e82]{flex:1;min-width:130px}.split[data-v-32b85e82]{flex-shrink:0;padding:0 4px}@media (max-width:360px){.range-picker[data-v-32b85e82]{flex-direction:column;align-items:stretch}.split[data-v-32b85e82]{text-align:center;margin:4px 0}}