create-fesd-app 1.0.13 → 1.0.15

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 (36) hide show
  1. package/package.json +3 -2
  2. package/public/assets/fonts/icomoon/fonts/icomoon.eot +0 -0
  3. package/public/assets/fonts/icomoon/fonts/icomoon.svg +3 -0
  4. package/public/assets/fonts/icomoon/fonts/icomoon.ttf +0 -0
  5. package/public/assets/fonts/icomoon/fonts/icomoon.woff +0 -0
  6. package/public/assets/fonts/icomoon/selection.json +1 -1
  7. package/public/assets/fonts/icomoon/style.css +14 -5
  8. package/public/assets/fonts/icomoon/svg/arrow.svg +3 -0
  9. package/public/assets/fonts/icomoon/svg/check.svg +3 -0
  10. package/public/assets/fonts/icomoon/svg/notice.svg +3 -0
  11. package/src/assets/css/base/_common.sass +23 -1
  12. package/src/assets/css/base/_variable.sass +1 -1
  13. package/src/assets/css/layouts/_cookiePolicy.sass +367 -18
  14. package/src/assets/css/layouts/article4/_article4_2.0.sass +37 -33
  15. package/src/assets/css/layouts/article4/_article4_setting.sass +4 -5
  16. package/src/assets/css/pages/about.sass +91 -35
  17. package/src/assets/css/pages/play.sass +152 -0
  18. package/src/assets/js/apps/about/page.js +6 -2
  19. package/src/assets/js/apps/play/page.js +848 -0
  20. package/src/assets/js/commons/cookies/cookieData.js +242 -0
  21. package/src/assets/js/commons/cookies/cookiePolicy.js +430 -0
  22. package/src/assets/js/commons/cookies/index.js +1 -0
  23. package/src/assets/js/commons/index.js +1 -0
  24. package/src/assets/js/commons/inits.js +4 -4
  25. package/src/assets/js/commons/methods.js +38 -4
  26. package/src/assets/js/commons/pages/index.js +1 -2
  27. package/src/layouts/_navbar.pug +4 -0
  28. package/src/layouts/_template.pug +3 -3
  29. package/src/layouts/article4/_article.pug +5 -6
  30. package/src/layouts/components/_cookiePolicy.pug +34 -3
  31. package/src/pages/about.pug +720 -3197
  32. package/src/pages/ajax/ajax_igDemo.pug +2 -1
  33. package/src/pages/index.pug +0 -4
  34. package/src/pages/play.pug +24 -0
  35. package/src/assets/css/layouts/article4/_article4_2.0/346/213/267/350/262/235.sass +0 -989
  36. package/src/assets/js/commons/pages/page.cookiePolicy.js +0 -37
@@ -179,7 +179,6 @@
179
179
  &[img-merge="on"]
180
180
  ._imgCover
181
181
  margin-bottom: 0
182
- // *-*
183
182
  .swiper-pagination
184
183
  margin-bottom: 0
185
184
  +rwdmax($basic_rwd)
@@ -196,7 +195,6 @@
196
195
  order: -1
197
196
  ._wordCover
198
197
  margin: 0
199
- // *-*
200
198
  &[img-swiper=on]
201
199
  ._imgCover
202
200
  margin-bottom: #{-$cover-TB-gap_rwd}
@@ -254,7 +252,6 @@
254
252
  ._imgCover
255
253
  order: -1
256
254
  +rwdmax($basic_rwd)
257
- // *-*
258
255
  ._imgCover
259
256
  margin-bottom: 0
260
257
  &[mobile-rwd="on"]
@@ -280,7 +277,6 @@
280
277
  &:not([img-swiper="on"])
281
278
  ._imgCover
282
279
  margin-bottom: $img-cover-TB-gap
283
- // *-*
284
280
  &[img-swiper="on"]
285
281
  ._imgCover
286
282
  margin-bottom: #{-$cover-TB-gap + $img-cover-TB-gap}
@@ -303,12 +299,10 @@
303
299
  margin-bottom: $img-cover-TB-gap_rwd
304
300
  &[mobile-rwd="on"]
305
301
  ._imgCover
306
- // *-*
307
302
  margin-bottom: #{-$cover-TB-gap_rwd}
308
303
  &[mobile-rwd="on"]
309
304
  ._imgCover
310
305
  margin-bottom: #{-$cover-TB-gap_rwd}
311
- // *-*
312
306
  &[img-swiper="on"]
313
307
  ._imgCover
314
308
  margin-bottom: #{-$cover-TB-gap_rwd + $img-cover-TB-gap_rwd}
@@ -327,6 +321,9 @@
327
321
  @for $i from 2 through 5
328
322
  ._imgCover
329
323
  margin-bottom: #{-$cover-TB-gap}
324
+ &:not(:has(._imgCover))
325
+ ._H
326
+ margin-top: 0
330
327
  +rwdmax($basic_rwd)
331
328
  ._H
332
329
  margin-top: $img-cover-TB-gap_rwd
@@ -446,7 +443,6 @@
446
443
  ._wordCover
447
444
  margin-top: $img-cover-TB-gap_rwd
448
445
  width: 100%
449
- // *-*
450
446
  &[img-swiper="on"]
451
447
  ._imgCover
452
448
  margin-bottom: 0
@@ -482,7 +478,6 @@
482
478
  ._imgCover
483
479
  margin: 0 0 $wrapping-gap $img-cover-LR-gap
484
480
  width: calc(50% - #{$img-cover-LR-gap})
485
- // *-*
486
481
  &[img-swiper="on"]
487
482
  ._imgCover
488
483
  margin-bottom: #{$cover-TB-gap - $wrapping-gap}
@@ -517,7 +512,6 @@
517
512
  margin-left: 0
518
513
  margin-right: 0
519
514
  width: 100%
520
- // *-*
521
515
  margin-bottom: #{-$cover-TB-gap_rwd + $cover-TB-gap_rwd}
522
516
  &[img-swiper="on"]
523
517
  ._imgCover
@@ -527,7 +521,6 @@
527
521
  order: initial
528
522
  margin: 0 #{-$cover-LR-gap_rwd + $cover-LR-gap_rwd} #{-$cover-TB-gap_rwd + $img-cover-TB-gap_rwd}
529
523
  width: 100%
530
- // *-*
531
524
  &[img-swiper="on"]
532
525
  ._imgCover
533
526
  margin: 0 #{-$cover-LR-gap_rwd * 0.5} #{-$cover-TB-gap_rwd + $img-cover-TB-gap_rwd}
@@ -594,7 +587,6 @@
594
587
  ._imgCover
595
588
  margin: 0 #{-$cover-LR-gap_rwd * 0.5}
596
589
  width: calc(100% + #{$cover-LR-gap_rwd})
597
- // *-*
598
590
  &[mobile-rwd="on"]
599
591
  ._imgCover
600
592
  margin-inline: #{-$cover-LR-gap_rwd * 0.5}
@@ -654,7 +646,6 @@
654
646
  ._imgCover
655
647
  margin: 0 $img-cover-LR-gap $wrapping-gap 0
656
648
  width: calc(50% - #{$img-cover-LR-gap})
657
- // *-*
658
649
  &[img-swiper="on"]
659
650
  ._imgCover
660
651
  margin-bottom: #{$cover-TB-gap - $wrapping-gap}
@@ -816,12 +807,23 @@
816
807
  margin-bottom: $cover-TB-gap_rwd
817
808
  padding: 0 #{$cover-LR-gap_rwd * 0.5}
818
809
  width: calc(100% / 2)
810
+
811
+ // 2025.10.27 Sue 新增手機版單張圖片設定
812
+ &[img-row="x#{$i}"]
813
+ +rwdmax($basic_rwd)
814
+ &[mobile-imgSingle="on"]
815
+ ._imgCover
816
+ margin-inline: 0
817
+ width: 100%
818
+ ._cover
819
+ margin-bottom: $cover-TB-gap_rwd
820
+ padding: 0
821
+ width: 100%
819
822
 
820
823
  // swiper
821
824
  &[img-swiper="on"]
822
825
  ._imgCover
823
826
  position: relative
824
- // *-*
825
827
  margin-bottom: #{-$cover-TB-gap}
826
828
  .swiper-button-cover
827
829
  &:before
@@ -836,7 +838,6 @@
836
838
  &:before
837
839
  padding-bottom: #{math.div(56.25%, $i)} !important
838
840
  +rwdmax($basic_rwd)
839
- // *-*
840
841
  ._imgCover
841
842
  margin-bottom: #{-$cover-TB-gap_rwd}
842
843
  @for $i from 2 through 5
@@ -850,11 +851,9 @@
850
851
  &[img-merge="on"]
851
852
  ._imgCover
852
853
  width: 100%
853
- // *-*
854
854
  margin-bottom: 0
855
855
  ._cover
856
856
  padding: 0
857
- // *-*
858
857
  &[img-swiper="on"]
859
858
  ._imgCover
860
859
  margin-bottom: #{-$cover-TB-gap}
@@ -865,7 +864,6 @@
865
864
  margin-bottom: 0
866
865
  ._description
867
866
  display: none
868
- // *-*
869
867
  +rwdmax($basic_rwd)
870
868
  ._imgCover
871
869
  margin-bottom: 0
@@ -933,13 +931,21 @@
933
931
  ._buttonCover
934
932
  text-align: right
935
933
  // 新增 - 圖片比例若設定不指定時, 圖片寬度是否自動填滿
936
- &[img-widthFull="false"]
934
+ &[img-width-full="off"]
937
935
  &:not([img-size="x11"]):not([img-size="x34"]):not([img-size="x43"]):not([img-size="x169"])
938
936
  ._imgCover
939
937
  ._photo
940
938
  justify-content: flex-start
941
939
  img
940
+ max-width: 100%
942
941
  width: auto
942
+ &[img-firstbig="on"]
943
+ ._imgCover
944
+ ._photo
945
+ justify-content: unset
946
+ ._cover:first-child
947
+ img
948
+ width: 100%
943
949
  // img-size
944
950
  // &[img-swiper="on"],
945
951
  &[img-size="x11"],
@@ -1127,18 +1133,16 @@
1127
1133
 
1128
1134
  // 凍結樣式
1129
1135
  &[freeze-table]
1130
- ._table
1131
- overflow-y: auto
1132
- height: $freeze-table-height
1133
- -webkit-overflow-scrolling: touch
1134
- scrollbar-width: none
1135
- overscroll-behavior: contain
1136
- &::-webkit-scrollbar
1137
- width: 2px
1138
- height: 0
1139
- display: none
1140
- &::-webkit-scrollbar-track
1141
- background: none
1142
- &::-webkit-scrollbar-thumb
1143
- background: none
1144
- border-radius: 99em
1136
+ +rwdmin($basic_rwd)
1137
+ ._table
1138
+ overflow-y: auto
1139
+ max-height: $freeze-table-height
1140
+ &::-webkit-scrollbar
1141
+ width: 2px
1142
+ height: 0
1143
+ display: none
1144
+ &::-webkit-scrollbar-track
1145
+ background: none
1146
+ &::-webkit-scrollbar-thumb
1147
+ background: none
1148
+ border-radius: 99em
@@ -40,7 +40,7 @@ $subH-gap_rwd: 15px
40
40
  $text-LR-gap: 40px
41
41
 
42
42
  // 文字 padding
43
- $text-padding: 0px
43
+ $text-padding: 20px
44
44
  $text-padding_rwd: 0px
45
45
 
46
46
  // 按鈕與其他物件之間的距離
@@ -197,10 +197,8 @@ $quote-TB-gap: 20px
197
197
  a:not(._button)
198
198
  color: #007aff
199
199
  ol,ul
200
- display: inline-block
200
+ padding-left: 20px
201
201
  text-align: left
202
- li
203
- margin-left: 16px
204
202
  ol
205
203
  list-style: decimal !important
206
204
  ul
@@ -213,7 +211,7 @@ $quote-TB-gap: 20px
213
211
 
214
212
  // 圖片描述
215
213
  %_description
216
- padding: 0 0
214
+ padding: 0 $text-padding
217
215
  margin-top: 10px
218
216
  width: 100%
219
217
  // 以下可修改
@@ -221,6 +219,7 @@ $quote-TB-gap: 20px
221
219
  font-weight: 400
222
220
  line-height: 1.5
223
221
  +rwdmax($basic_rwd)
222
+ padding: 0 $text-padding_rwd
224
223
  // 以下可修改
225
224
  font-size: 12px
226
225
 
@@ -127,45 +127,101 @@
127
127
  .main-wrapper
128
128
  main
129
129
  .container
130
- max-width: 1200px
130
+ max-width: 1800px
131
131
  width: calc(100% - 80px)
132
132
  margin: 0 auto
133
133
  section
134
134
  width: 100%
135
- &.section1
136
- padding: 150px 0
137
- .content
138
- position: relative
139
- ._imgCover[data-aost]
140
- opacity: 0
141
- transform: scale(0.75)
142
- &.show
143
- animation: zoomIn 0.25s linear forwards
144
- .title
145
- padding-left: 20px
146
- margin-bottom: 30px
147
- display: flex
148
- align-items: center
149
- position: relative
150
- font-size: px(30)
151
- font-weight: 800
152
- &:before
153
- display: block
154
- background: #3e84cf
155
- width: 8px
156
- height: 36px
157
- position: absolute
158
- left: 0
159
- content: ''
160
- &.section2
161
- .container
162
- min-height: 50vh
163
- display: flex
164
- justify-content: center
165
- align-items: center
166
- .noData
167
- font-size: px(30)
168
- text-align: center
135
+
136
+ .section1
137
+ padding: 150px 0
138
+ .container
139
+ display: flex
140
+ gap: 50px
141
+
142
+ .aside
143
+ width: 300px
144
+ .box
145
+ position: sticky
146
+ top: 100px
147
+ max-height: 80vh
148
+ overflow: auto
149
+ -ms-overflow-style: none
150
+ scrollbar-width: none
151
+ &::-webkit-scrollbar
152
+ display: none
153
+ width: 0px
154
+ &::-webkit-scrollbar-track
155
+ background: none
156
+ &::-webkit-scrollbar-thumb
157
+ background: none
158
+ border-radius: 99em
159
+ .anchor
160
+ cursor: pointer
161
+ &[has-attr]
162
+ color: #888686
163
+ +hover
164
+ color: #3e84cf
165
+ &:not(:first-child)
166
+ margin-top: 20px
167
+
168
+
169
+
170
+ .content
171
+ width: calc(100% - 300px)
172
+ position: relative
173
+ ._imgCover[data-aost]
174
+ opacity: 0
175
+ transform: scale(0.75)
176
+ &.show
177
+ animation: zoomIn 0.25s linear forwards
178
+ .titleBox
179
+ margin-bottom: 50px
180
+ .title
181
+ padding-left: 20px
182
+ display: flex
183
+ align-items: center
184
+ position: relative
185
+ font-size: px(30)
186
+ font-weight: 800
187
+ &:before
188
+ display: block
189
+ background: #3e84cf
190
+ width: 8px
191
+ height: 36px
192
+ position: absolute
193
+ left: 0
194
+ content: ''
195
+ .dep
196
+ font-size: px(16)
197
+ font-weight: 400
198
+ margin-top: 20px
199
+ line-height: 1.8
200
+ letter-spacing: 0.5px
201
+ .code
202
+ padding-inline: 5px
203
+ margin-inline: 5px
204
+ border-radius: 5px
205
+ color: #EB5757
206
+ background: #EEEEEC
207
+ font-size: px(14)
208
+ .lightHigh
209
+ font-weight: 600
210
+ color: #cf4d3e
211
+
212
+ ._articleBlock
213
+ &:not(:first-child)
214
+ margin-top: 100px
215
+
216
+ .section2
217
+ .container
218
+ display: flex
219
+ justify-content: center
220
+ align-items: center
221
+ min-height: 80vh
222
+ font-size: px(100)
223
+ text-align: center
224
+
169
225
 
170
226
 
171
227
  @keyframes zoomIn
@@ -0,0 +1,152 @@
1
+ @import ../base/_variable
2
+ @import ../base/_mixin
3
+
4
+ .play-page
5
+ nav.navbar .container
6
+ max-width: 100%
7
+ .mainBox
8
+ display: flex
9
+ gap: 20px
10
+ width: 100%
11
+ height: calc(100vh - 60px)
12
+ h3
13
+ font-size: px(20)
14
+ line-height: 1.5
15
+ .main
16
+ width: calc(100% - 400px)
17
+ /* 折疊面板樣式 */
18
+ aside
19
+ width: 400px
20
+ flex-shrink: 0
21
+ position: relative
22
+ display: flex
23
+ justify-content: center
24
+ align-items: center
25
+ flex-direction: column
26
+
27
+ #attrPanel
28
+ flex: 1
29
+ width: 100%
30
+ overflow: auto
31
+ -ms-overflow-style: none
32
+ scrollbar-width: none
33
+ &::-webkit-scrollbar
34
+ display: none
35
+ width: 0px
36
+ &::-webkit-scrollbar-track
37
+ background: none
38
+ &::-webkit-scrollbar-thumb
39
+ background: none
40
+ border-radius: 99em
41
+ .btnGroup
42
+ width: 100%
43
+ padding: 50px 20px
44
+ display: flex
45
+ justify-content: center
46
+ align-items: center
47
+ flex-direction: column
48
+ gap: 20px
49
+ background: #FFF
50
+
51
+
52
+ .accordion
53
+ &:not(:last-child)
54
+ border-bottom: 1px solid #ccc
55
+ #typeSelect
56
+ width: 100%
57
+ text-align: center
58
+ border-bottom: 1px solid #ccc
59
+ padding-bottom: 5px
60
+ .accordion-header
61
+ padding: 20px
62
+ background: #eaeaea
63
+ cursor: pointer
64
+ font-weight: bold
65
+ user-select: none
66
+ .accordion-header:hover
67
+ background: #ddd
68
+ .accordion-header::after
69
+ content: '▼'
70
+ float: right
71
+ font-size: px(10)
72
+ transition: transform 0.2s
73
+ .accordion-header.active::after
74
+ transform: rotate(-90deg)
75
+ .accordion-content
76
+ display: none
77
+ padding: 20px
78
+ background: #fafafa
79
+ .accordion-content.active
80
+ display: block
81
+ .radio-option
82
+ display: inline-flex
83
+ gap: 10px
84
+ margin-inline: 10px
85
+ .form-item
86
+ >label
87
+ width: 100%
88
+ display: block
89
+ font-weight: bold
90
+ margin-bottom: 20px
91
+ &:not(:first-child)
92
+ >label
93
+ margin-top: 20px
94
+ textarea
95
+ height: 100px
96
+ input,
97
+ textarea
98
+ width: 100%
99
+ border: 1px solid #ccc
100
+ border-radius: 4px
101
+ padding: 10px
102
+ background: #FFF
103
+ input[type="color"]
104
+ appearance: auto
105
+ inline-size: 100%
106
+ block-size: 27px
107
+ cursor: default
108
+ box-sizing: border-box
109
+ background-color: buttonface
110
+ color: buttontext
111
+ border-width: 1px
112
+ border-style: solid
113
+ border-color: buttonborder
114
+ border-image: initial
115
+ padding: 1px 2px
116
+
117
+ #resetBtn
118
+ width: fit-content
119
+ border-bottom: 1px solid #000
120
+ padding-bottom: 5px
121
+ #generateBtn
122
+ width: 100%
123
+ padding: 20px
124
+ border: 1px solid
125
+ border-radius: 10px
126
+
127
+
128
+
129
+ /* 預覽與原始碼 */
130
+ #previewWrap
131
+ width: 100%
132
+ padding: 50px
133
+ display: flex
134
+ // flex-wrap: wrap
135
+ gap: 50px
136
+ #previewWrap > div
137
+ flex: 1
138
+ width: calc((100% - 50px) /2)
139
+ #preview, #htmlCode, #dataCode
140
+ margin-top: 20px
141
+ flex: 1
142
+ border-radius: 6px
143
+ padding: 20px
144
+ overflow: auto
145
+ #preview
146
+ background: #ecf1ff
147
+ #htmlCode,
148
+ #dataCode
149
+ font-family: "Courier New", monospace
150
+ white-space: pre
151
+ background: #111
152
+ color: #8dc18d
@@ -1,11 +1,15 @@
1
- import { Article4 } from '@xwadex/fesd';
1
+ import { Article4, Anchor4 } from '@xwadex/fesd';
2
2
  import { common, methods } from "@/commons";
3
3
 
4
+
4
5
  $(async () => {
5
6
  // common Init
6
7
  common.inits()
7
8
  // pluginInit
8
- const article4 = new Article4('._articleBlock')
9
+ new Article4('._articleBlock')
10
+ new Anchor4('[data-anchor-target]', {
11
+ gap: 100
12
+ })
9
13
  // coding...
10
14
  methods.noContentCheck();
11
15
  })