officialblock 1.0.7 → 1.0.9

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 (103) hide show
  1. package/dist/index-Ch_ldWmA.js +1 -0
  2. package/dist/index-DXm2cqxo.mjs +485 -0
  3. package/dist/official-block.cjs.js +74 -74
  4. package/dist/official-block.es.js +13608 -10831
  5. package/dist/official-block.umd.js +78 -78
  6. package/dist/style.css +1 -1
  7. package/dist/swiper-JiLDDxAF.js +1 -0
  8. package/dist/swiper-acbnDJoL.mjs +2035 -0
  9. package/dist/utils-DD-vVZej.mjs +316 -0
  10. package/dist/utils-DOLLD0-F.js +1 -0
  11. package/package.json +2 -1
  12. package/src/assets/icon-email.svg +3 -0
  13. package/src/components/ArticleList/article.vue +3 -3
  14. package/src/components/ArticleList/contact.vue +9 -9
  15. package/src/components/ArticleList/index.ts +1 -1
  16. package/src/components/ArticleList/index.vue +22 -80
  17. package/src/components/ArticleList/setting.vue +339 -175
  18. package/src/components/ArticleList/type.ts +12 -18
  19. package/src/components/BannerImage/index.ts +11 -0
  20. package/src/components/BannerImage/index.vue +153 -0
  21. package/src/components/BannerImage/setting.vue +55 -0
  22. package/src/components/BannerImage/type.ts +10 -0
  23. package/src/components/BannerImageWithLink/index.ts +11 -0
  24. package/src/components/BannerImageWithLink/index.vue +323 -0
  25. package/src/components/BannerImageWithLink/setting.vue +344 -0
  26. package/src/components/BannerImageWithLink/type.ts +17 -0
  27. package/src/components/BannerPage/index.ts +11 -0
  28. package/src/components/BannerPage/index.vue +283 -0
  29. package/src/components/BannerPage/setting.vue +55 -0
  30. package/src/components/BannerPage/type.ts +10 -0
  31. package/src/components/BtnList/index.ts +11 -0
  32. package/src/components/BtnList/index.vue +588 -0
  33. package/src/components/BtnList/setting.vue +255 -0
  34. package/src/components/BtnList/type.ts +10 -0
  35. package/src/components/Button/index.vue +45 -33
  36. package/src/components/ContactUsList/index.ts +11 -0
  37. package/src/components/ContactUsList/index.vue +369 -0
  38. package/src/components/ContactUsList/setting.vue +497 -0
  39. package/src/components/ContactUsList/type.ts +17 -0
  40. package/src/components/CountDown/index.ts +11 -0
  41. package/src/components/CountDown/index.vue +315 -0
  42. package/src/components/CountDown/setting.vue +302 -0
  43. package/src/components/CountDown/type.ts +17 -0
  44. package/src/components/CustomIframe/index.ts +11 -0
  45. package/src/components/CustomIframe/index.vue +118 -0
  46. package/src/components/CustomIframe/setting.vue +323 -0
  47. package/src/components/CustomIframe/type.ts +17 -0
  48. package/src/components/CustomSpace/index.ts +11 -0
  49. package/src/components/CustomSpace/index.vue +82 -0
  50. package/src/components/CustomSpace/setting.vue +89 -0
  51. package/src/components/CustomSpace/type.ts +10 -0
  52. package/src/components/GalleryList/index.ts +12 -0
  53. package/src/components/GalleryList/index.vue +311 -0
  54. package/src/components/GalleryList/setting.vue +268 -0
  55. package/src/components/GalleryList/type.ts +10 -0
  56. package/src/components/HeroSlide/index.ts +1 -1
  57. package/src/components/HeroSlide/index.vue +85 -133
  58. package/src/components/HeroSlide/setting.vue +435 -0
  59. package/src/components/HeroSlide/type.ts +5 -14
  60. package/src/components/LinkLIst/index.ts +11 -0
  61. package/src/components/LinkLIst/index.vue +317 -0
  62. package/src/components/LinkLIst/setting.vue +264 -0
  63. package/src/components/LinkLIst/type.ts +10 -0
  64. package/src/components/Media/index.vue +18 -18
  65. package/src/components/Operate/index.vue +17 -8
  66. package/src/components/Profile/index.vue +999 -0
  67. package/src/components/Profile/modal.vue +56 -0
  68. package/src/components/Profile/setting.vue +330 -0
  69. package/src/components/QuickLinks/index.vue +166 -0
  70. package/src/components/QuoteText/index.ts +11 -0
  71. package/src/components/QuoteText/index.vue +133 -0
  72. package/src/components/QuoteText/setting.vue +81 -0
  73. package/src/components/QuoteText/type.ts +10 -0
  74. package/src/components/ScrollKeyInfo/index.ts +11 -0
  75. package/src/components/ScrollKeyInfo/index.vue +1345 -0
  76. package/src/components/ScrollKeyInfo/setting.vue +302 -0
  77. package/src/components/ScrollKeyInfo/type.ts +17 -0
  78. package/src/components/Swiper/index.vue +538 -0
  79. package/src/components/TabDefault/components/ComponentSelector/compsData.js +143 -0
  80. package/src/components/TabDefault/components/ComponentSelector/index.vue +188 -0
  81. package/src/components/TabDefault/components/PageContent.vue +207 -0
  82. package/src/components/TabDefault/index.vue +475 -0
  83. package/src/components/TabDefault/setting.vue +581 -0
  84. package/src/components/TabDefault/type.ts +17 -0
  85. package/src/components/TableTwo/index.ts +11 -0
  86. package/src/components/TableTwo/index.vue +232 -0
  87. package/src/components/TableTwo/setting.vue +558 -0
  88. package/src/components/TableTwo/type.ts +17 -0
  89. package/src/components/index.ts +40 -5
  90. package/src/index.ts +56 -12
  91. package/src/main.ts +6 -3
  92. package/src/router/index.ts +6 -0
  93. package/src/style.css +17 -0
  94. package/src/styles/component-isolation.scss +257 -0
  95. package/src/styles/editor.scss +1 -1
  96. package/src/styles/layers.scss +256 -0
  97. package/src/styles/main.scss +21687 -0
  98. package/src/styles/mixins/style-isolation.scss +262 -0
  99. package/src/styles/smart-reset.scss +287 -0
  100. package/src/styles/test.scss +1 -1
  101. package/src/types/button.ts +10 -0
  102. package/src/views/StyleIsolationTest.vue +292 -0
  103. package/src/views/components/ArticleListDemo.vue +59 -19
@@ -0,0 +1,262 @@
1
+ /**
2
+ * 样式隔离 Mixins
3
+ * 用于帮助组件完全隔离全局样式影响
4
+ */
5
+
6
+ // 字体隔离 mixin
7
+ @mixin font-isolation($size: null, $weight: null, $family: null, $line-height: null) {
8
+ // 重置字体继承
9
+ font-size: initial;
10
+ font-family: initial;
11
+ font-weight: initial;
12
+ line-height: initial;
13
+
14
+ // 设置指定的字体属性
15
+ @if $size {
16
+ font-size: $size !important;
17
+ }
18
+
19
+ @if $weight {
20
+ font-weight: $weight !important;
21
+ }
22
+
23
+ @if $family {
24
+ font-family: $family !important;
25
+ }
26
+
27
+ @if $line-height {
28
+ line-height: $line-height !important;
29
+ }
30
+ }
31
+
32
+ // 完全样式隔离 mixin
33
+ @mixin complete-isolation() {
34
+ // 重置所有可能被继承的样式
35
+ all: initial;
36
+
37
+ // 恢复必要的显示属性
38
+ display: block;
39
+ box-sizing: border-box;
40
+
41
+ // 重置字体
42
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
43
+ font-size: 14px;
44
+ font-weight: 400;
45
+ line-height: 1.5;
46
+ color: #000;
47
+
48
+ // 确保子元素也被隔离
49
+ * {
50
+ box-sizing: border-box;
51
+ }
52
+ }
53
+
54
+ // 按钮样式隔离 mixin
55
+ @mixin button-isolation($font-size: 14px, $padding: 8px 16px, $bg-color: #007bff, $text-color: #fff) {
56
+ @include font-isolation($font-size, 500);
57
+
58
+ padding: $padding !important;
59
+ background-color: $bg-color !important;
60
+ color: $text-color !important;
61
+ border: none !important;
62
+ border-radius: 4px !important;
63
+ cursor: pointer !important;
64
+ display: inline-flex !important;
65
+ align-items: center !important;
66
+ justify-content: center !important;
67
+ text-decoration: none !important;
68
+ user-select: none !important;
69
+
70
+ &:hover {
71
+ opacity: 0.9 !important;
72
+ }
73
+
74
+ &:active {
75
+ transform: translateY(1px) !important;
76
+ }
77
+ }
78
+
79
+ // 文本样式隔离 mixin
80
+ @mixin text-isolation($size: 14px, $weight: 400, $color: #000, $line-height: 1.5) {
81
+ @include font-isolation($size, $weight, null, $line-height);
82
+ color: $color !important;
83
+ text-decoration: none !important;
84
+ text-transform: none !important;
85
+ letter-spacing: normal !important;
86
+ }
87
+
88
+ // 容器样式隔离 mixin
89
+ @mixin container-isolation($width: auto, $height: auto, $padding: 0, $margin: 0) {
90
+ width: $width !important;
91
+ height: $height !important;
92
+ padding: $padding !important;
93
+ margin: $margin !important;
94
+ border: none !important;
95
+ background: transparent !important;
96
+ box-shadow: none !important;
97
+ outline: none !important;
98
+ }
99
+
100
+ // Flex 布局隔离 mixin
101
+ @mixin flex-isolation($direction: row, $justify: flex-start, $align: stretch, $wrap: nowrap) {
102
+ display: flex !important;
103
+ flex-direction: $direction !important;
104
+ justify-content: $justify !important;
105
+ align-items: $align !important;
106
+ flex-wrap: $wrap !important;
107
+ }
108
+
109
+ // 定位隔离 mixin
110
+ @mixin position-isolation($position: static, $top: auto, $right: auto, $bottom: auto, $left: auto, $z-index: auto) {
111
+ position: $position !important;
112
+ top: $top !important;
113
+ right: $right !important;
114
+ bottom: $bottom !important;
115
+ left: $left !important;
116
+ z-index: $z-index !important;
117
+ }
118
+
119
+ // 边框隔离 mixin
120
+ @mixin border-isolation($width: 0, $style: solid, $color: transparent, $radius: 0) {
121
+ border: $width $style $color !important;
122
+ border-radius: $radius !important;
123
+ }
124
+
125
+ // 阴影隔离 mixin
126
+ @mixin shadow-isolation($shadow: none) {
127
+ box-shadow: $shadow !important;
128
+ }
129
+
130
+ // 背景隔离 mixin
131
+ @mixin background-isolation($color: transparent, $image: none, $size: auto, $position: 0 0, $repeat: no-repeat) {
132
+ background-color: $color !important;
133
+ background-image: $image !important;
134
+ background-size: $size !important;
135
+ background-position: $position !important;
136
+ background-repeat: $repeat !important;
137
+ }
138
+
139
+ // 溢出隔离 mixin
140
+ @mixin overflow-isolation($overflow: visible, $overflow-x: null, $overflow-y: null) {
141
+ overflow: $overflow !important;
142
+
143
+ @if $overflow-x {
144
+ overflow-x: $overflow-x !important;
145
+ }
146
+
147
+ @if $overflow-y {
148
+ overflow-y: $overflow-y !important;
149
+ }
150
+ }
151
+
152
+ // 变换隔离 mixin
153
+ @mixin transform-isolation($transform: none, $origin: center, $style: flat) {
154
+ transform: $transform !important;
155
+ transform-origin: $origin !important;
156
+ transform-style: $style !important;
157
+ }
158
+
159
+ // 过渡隔离 mixin
160
+ @mixin transition-isolation($property: all, $duration: 0.3s, $timing: ease, $delay: 0s) {
161
+ transition: $property $duration $timing $delay !important;
162
+ }
163
+
164
+ // 用户交互隔离 mixin
165
+ @mixin interaction-isolation($cursor: auto, $user-select: auto, $pointer-events: auto) {
166
+ cursor: $cursor !important;
167
+ user-select: $user-select !important;
168
+ pointer-events: $pointer-events !important;
169
+ }
170
+
171
+ // 可见性隔离 mixin
172
+ @mixin visibility-isolation($visibility: visible, $opacity: 1, $display: block) {
173
+ visibility: $visibility !important;
174
+ opacity: $opacity !important;
175
+ display: $display !important;
176
+ }
177
+
178
+ // 响应式隔离 mixin
179
+ @mixin responsive-isolation($breakpoint, $property, $value) {
180
+ @if $breakpoint == 'sm' {
181
+ @media (max-width: 575.98px) {
182
+ #{$property}: #{$value} !important;
183
+ }
184
+ } @else if $breakpoint == 'md' {
185
+ @media (max-width: 767.98px) {
186
+ #{$property}: #{$value} !important;
187
+ }
188
+ } @else if $breakpoint == 'lg' {
189
+ @media (max-width: 991.98px) {
190
+ #{$property}: #{$value} !important;
191
+ }
192
+ } @else if $breakpoint == 'xl' {
193
+ @media (max-width: 1199.98px) {
194
+ #{$property}: #{$value} !important;
195
+ }
196
+ }
197
+ }
198
+
199
+ // 组件根元素隔离 mixin(推荐用法)
200
+ @mixin component-root-isolation() {
201
+ // 创建一个新的层叠上下文
202
+ position: relative;
203
+ z-index: 0;
204
+
205
+ // 重置字体继承
206
+ font-size: initial;
207
+ font-family: initial;
208
+ font-weight: initial;
209
+ line-height: initial;
210
+ color: initial;
211
+
212
+ // 重置其他样式
213
+ text-align: initial;
214
+ text-decoration: initial;
215
+ text-transform: initial;
216
+ letter-spacing: initial;
217
+ word-spacing: initial;
218
+
219
+ // 确保盒模型正确
220
+ box-sizing: border-box;
221
+
222
+ // 重置边距和内边距
223
+ margin: 0;
224
+ padding: 0;
225
+
226
+ // 重置边框
227
+ border: none;
228
+ outline: none;
229
+
230
+ // 重置背景
231
+ background: transparent;
232
+
233
+ // 确保子元素继承正确的样式
234
+ * {
235
+ box-sizing: inherit;
236
+ }
237
+ }
238
+
239
+ // 特定组件的隔离 mixin
240
+ @mixin operate-component-isolation() {
241
+ @include component-root-isolation();
242
+
243
+ .btn-item {
244
+ @include button-isolation(10px, 4px 16px);
245
+ @include font-isolation(10px, 600);
246
+
247
+ margin-left: 12px;
248
+ border-radius: 4px;
249
+
250
+ &.btn-copy {
251
+ background-color: var(--warning-color, #ffc107) !important;
252
+ }
253
+
254
+ &.btn-delete {
255
+ background-color: var(--error-color, #dc3545) !important;
256
+ }
257
+
258
+ &.btn-edit {
259
+ background-color: var(--primary-color, #007bff) !important;
260
+ }
261
+ }
262
+ }
@@ -0,0 +1,287 @@
1
+ /**
2
+ * 智能样式重置
3
+ * 提供合理的默认值,但不强制覆盖组件样式
4
+ */
5
+
6
+ /* 基础重置 - 只重置必要的样式 */
7
+ *,
8
+ *::before,
9
+ *::after {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ /* 移除默认边距和内边距 */
14
+ * {
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ /* HTML 和 body 基础设置 */
20
+ html {
21
+ font-size: 16px; /* 设置根字体大小,用于 rem 计算 */
22
+ line-height: 1.15; /* 改善行高 */
23
+ -webkit-text-size-adjust: 100%; /* 防止 iOS 字体大小调整 */
24
+ }
25
+
26
+ body {
27
+ margin: 0;
28
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
29
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
30
+ sans-serif;
31
+ /* 不设置 font-size,让组件自由控制 */
32
+ font-weight: 400;
33
+ line-height: 1.5;
34
+ color: #212529;
35
+ background-color: #fff;
36
+ -webkit-font-smoothing: antialiased;
37
+ -moz-osx-font-smoothing: grayscale;
38
+ }
39
+
40
+ /* 标题元素 - 设置合理的默认大小,但可以被覆盖 */
41
+ h1, h2, h3, h4, h5, h6 {
42
+ margin-top: 0;
43
+ margin-bottom: 0.5rem;
44
+ font-weight: 500;
45
+ line-height: 1.2;
46
+ }
47
+
48
+ h1 { font-size: 2.5rem; }
49
+ h2 { font-size: 2rem; }
50
+ h3 { font-size: 1.75rem; }
51
+ h4 { font-size: 1.5rem; }
52
+ h5 { font-size: 1.25rem; }
53
+ h6 { font-size: 1rem; }
54
+
55
+ /* 段落 */
56
+ p {
57
+ margin-top: 0;
58
+ margin-bottom: 1rem;
59
+ }
60
+
61
+ /* 链接 */
62
+ a {
63
+ color: #007bff;
64
+ text-decoration: none;
65
+ background-color: transparent;
66
+ }
67
+
68
+ a:hover {
69
+ color: #0056b3;
70
+ text-decoration: underline;
71
+ }
72
+
73
+ /* 列表 */
74
+ ol, ul {
75
+ margin-top: 0;
76
+ margin-bottom: 1rem;
77
+ padding-left: 2rem;
78
+ }
79
+
80
+ ol ol,
81
+ ul ul,
82
+ ol ul,
83
+ ul ol {
84
+ margin-bottom: 0;
85
+ }
86
+
87
+ /* 表格 */
88
+ table {
89
+ border-collapse: collapse;
90
+ border-spacing: 0;
91
+ }
92
+
93
+ th, td {
94
+ padding: 0;
95
+ text-align: left;
96
+ }
97
+
98
+ /* 表单元素 */
99
+ button,
100
+ input,
101
+ optgroup,
102
+ select,
103
+ textarea {
104
+ margin: 0;
105
+ font-family: inherit;
106
+ /* 不设置 font-size,让组件自由控制 */
107
+ line-height: inherit;
108
+ }
109
+
110
+ button,
111
+ input {
112
+ overflow: visible;
113
+ }
114
+
115
+ button,
116
+ select {
117
+ text-transform: none;
118
+ }
119
+
120
+ button,
121
+ [type="button"],
122
+ [type="reset"],
123
+ [type="submit"] {
124
+ -webkit-appearance: button;
125
+ cursor: pointer;
126
+ }
127
+
128
+ button::-moz-focus-inner,
129
+ [type="button"]::-moz-focus-inner,
130
+ [type="reset"]::-moz-focus-inner,
131
+ [type="submit"]::-moz-focus-inner {
132
+ border-style: none;
133
+ padding: 0;
134
+ }
135
+
136
+ button:-moz-focusring,
137
+ [type="button"]:-moz-focusring,
138
+ [type="reset"]:-moz-focusring,
139
+ [type="submit"]:-moz-focusring {
140
+ outline: 1px dotted ButtonText;
141
+ }
142
+
143
+ /* 图片和媒体 */
144
+ img {
145
+ border-style: none;
146
+ max-width: 100%;
147
+ height: auto;
148
+ }
149
+
150
+ svg {
151
+ overflow: hidden;
152
+ vertical-align: middle;
153
+ }
154
+
155
+ /* 代码 */
156
+ code,
157
+ kbd,
158
+ pre,
159
+ samp {
160
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
161
+ font-size: 1em;
162
+ }
163
+
164
+ pre {
165
+ margin-top: 0;
166
+ margin-bottom: 1rem;
167
+ overflow: auto;
168
+ }
169
+
170
+ /* 其他元素 */
171
+ hr {
172
+ box-sizing: content-box;
173
+ height: 0;
174
+ overflow: visible;
175
+ margin: 1rem 0;
176
+ border: 0;
177
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
178
+ }
179
+
180
+ small {
181
+ font-size: 80%;
182
+ }
183
+
184
+ sub,
185
+ sup {
186
+ font-size: 75%;
187
+ line-height: 0;
188
+ position: relative;
189
+ vertical-align: baseline;
190
+ }
191
+
192
+ sub {
193
+ bottom: -0.25em;
194
+ }
195
+
196
+ sup {
197
+ top: -0.5em;
198
+ }
199
+
200
+ /* 隐藏元素 */
201
+ [hidden] {
202
+ display: none !important;
203
+ }
204
+
205
+ /* 可访问性 */
206
+ [aria-busy="true"] {
207
+ cursor: progress;
208
+ }
209
+
210
+ [aria-controls] {
211
+ cursor: pointer;
212
+ }
213
+
214
+ [aria-disabled="true"],
215
+ [disabled] {
216
+ cursor: not-allowed;
217
+ }
218
+
219
+ [aria-hidden="false"][hidden] {
220
+ display: initial;
221
+ }
222
+
223
+ [aria-hidden="false"][hidden]:not(:focus) {
224
+ clip: rect(0, 0, 0, 0);
225
+ position: absolute;
226
+ }
227
+
228
+ /* 打印样式 */
229
+ @media print {
230
+ *,
231
+ *::before,
232
+ *::after {
233
+ background: transparent !important;
234
+ color: black !important;
235
+ box-shadow: none !important;
236
+ text-shadow: none !important;
237
+ }
238
+
239
+ a,
240
+ a:visited {
241
+ text-decoration: underline;
242
+ }
243
+
244
+ a[href]::after {
245
+ content: " (" attr(href) ")";
246
+ }
247
+
248
+ abbr[title]::after {
249
+ content: " (" attr(title) ")";
250
+ }
251
+
252
+ a[href^="#"]::after,
253
+ a[href^="javascript:"]::after {
254
+ content: "";
255
+ }
256
+
257
+ pre {
258
+ white-space: pre-wrap !important;
259
+ }
260
+
261
+ pre,
262
+ blockquote {
263
+ border: 1px solid #999;
264
+ page-break-inside: avoid;
265
+ }
266
+
267
+ thead {
268
+ display: table-header-group;
269
+ }
270
+
271
+ tr,
272
+ img {
273
+ page-break-inside: avoid;
274
+ }
275
+
276
+ p,
277
+ h2,
278
+ h3 {
279
+ orphans: 3;
280
+ widows: 3;
281
+ }
282
+
283
+ h2,
284
+ h3 {
285
+ page-break-after: avoid;
286
+ }
287
+ }
@@ -1,5 +1,5 @@
1
1
  // 测试 Sass 功能和 @ 路径别名
2
- @import '@/styles/variables.scss';
2
+ @import '@/styles/main.scss';
3
3
 
4
4
  .test-sass {
5
5
  // 测试 Sass 变量
@@ -0,0 +1,10 @@
1
+ export interface ButtonProps {
2
+ /** 按钮文字 */
3
+ text: string,
4
+ /** 按钮id */
5
+ id: string,
6
+ /** 按钮链接 */
7
+ url: string,
8
+ /** 是否是外部链接 */
9
+ isExternal: boolean,
10
+ }