@oix1987/yjd 1.0.0 → 1.0.2

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 (58) hide show
  1. package/README.md +73 -22
  2. package/dist/rich-editor.esm.js +2 -0
  3. package/dist/rich-editor.esm.js.map +1 -0
  4. package/dist/rich-editor.min.js +2 -0
  5. package/dist/rich-editor.min.js.map +1 -0
  6. package/package.json +12 -7
  7. package/index.js +0 -221
  8. package/lib/core/editor.js +0 -1175
  9. package/lib/core/format.js +0 -542
  10. package/lib/core/module.js +0 -81
  11. package/lib/core/registry.js +0 -152
  12. package/lib/formats/background.js +0 -212
  13. package/lib/formats/bold.js +0 -67
  14. package/lib/formats/capitalization.js +0 -563
  15. package/lib/formats/color.js +0 -165
  16. package/lib/formats/emoji.js +0 -282
  17. package/lib/formats/font-family.js +0 -547
  18. package/lib/formats/heading.js +0 -502
  19. package/lib/formats/image.js +0 -344
  20. package/lib/formats/import.js +0 -385
  21. package/lib/formats/indent.js +0 -297
  22. package/lib/formats/italic.js +0 -27
  23. package/lib/formats/line-height.js +0 -558
  24. package/lib/formats/link.js +0 -251
  25. package/lib/formats/list.js +0 -635
  26. package/lib/formats/strike.js +0 -31
  27. package/lib/formats/subscript.js +0 -36
  28. package/lib/formats/superscript.js +0 -35
  29. package/lib/formats/table.js +0 -288
  30. package/lib/formats/tag.js +0 -304
  31. package/lib/formats/text-align.js +0 -421
  32. package/lib/formats/text-size.js +0 -497
  33. package/lib/formats/underline.js +0 -30
  34. package/lib/formats/video.js +0 -372
  35. package/lib/modules/block-toolbar.js +0 -628
  36. package/lib/modules/code-view.js +0 -434
  37. package/lib/modules/history.js +0 -410
  38. package/lib/modules/resize-handles.js +0 -677
  39. package/lib/modules/table-toolbar.js +0 -618
  40. package/lib/modules/toolbar.js +0 -424
  41. package/lib/styles-loader.js +0 -144
  42. package/lib/styles.css +0 -2123
  43. package/lib/ui/color-picker.js +0 -296
  44. package/lib/ui/customselect.js +0 -319
  45. package/lib/ui/emoji-picker.js +0 -196
  46. package/lib/ui/icons.js +0 -413
  47. package/lib/ui/image-popup.js +0 -444
  48. package/lib/ui/import-popup.js +0 -288
  49. package/lib/ui/link-popup.js +0 -191
  50. package/lib/ui/list-picker.js +0 -307
  51. package/lib/ui/select-button.js +0 -61
  52. package/lib/ui/table-popup.js +0 -171
  53. package/lib/ui/tag-popup.js +0 -249
  54. package/lib/ui/text-align-picker.js +0 -281
  55. package/lib/ui/video-popup.js +0 -422
  56. package/lib/utils/history-helper.js +0 -50
  57. package/lib/utils/popup-helper.js +0 -219
  58. package/lib/utils/popup-positioning.js +0 -231
package/lib/styles.css DELETED
@@ -1,2123 +0,0 @@
1
- /* ===================================
2
- Rich Editor - Component Styles
3
- ===================================*/
4
-
5
- /* === CORE EDITOR === */
6
- .yjd-rich-editor {
7
- position: relative;
8
- background: #fff;
9
- border: 1px solid #d1d5db;
10
- border-radius: 8px;
11
- overflow: hidden;
12
- margin: 0 auto;
13
- font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
14
- display: flex;
15
- flex-direction: column;
16
- box-sizing: border-box;
17
- }
18
- @layer base {
19
- .yjd-rich-editor .toolbar-container button,
20
- .yjd-rich-editor .toolbar-container input,
21
- .yjd-rich-editor .toolbar-container select,
22
- .yjd-rich-editor .toolbar-container optgroup,
23
- .yjd-rich-editor .toolbar-container textarea,
24
- .yjd-rich-editor .toolbar-container ::file-selector-button {
25
- font: normal 500 14px/1.4 "Inter", Arial, sans-serif !important;
26
- letter-spacing: normal !important;
27
- font-feature-settings: normal !important;
28
- font-variation-settings: normal !important;
29
- }
30
- /* Ensure emoji button font size is applied with high specificity */
31
- .yjd-rich-editor .emoji-picker-popup .emoji-button,
32
- .yjd-rich-editor .emoji-picker-popup button.emoji-button {
33
- font-size: 20px !important;
34
- }
35
- }
36
- @layer base {
37
-
38
- .yjd-rich-editor .rich-editor-popup-container button,
39
- .yjd-rich-editor .rich-editor-popup-container input,
40
- .yjd-rich-editor .rich-editor-popup-container select,
41
- .yjd-rich-editor .rich-editor-popup-container optgroup,
42
- .yjd-rich-editor .rich-editor-popup-container textarea,
43
- .yjd-rich-editor .rich-editor-popup-container ::file-selector-button {
44
- font: normal 500 14px/1.4 "Inter", Arial, sans-serif !important;
45
- letter-spacing: normal !important;
46
- font-feature-settings: normal !important;
47
- font-variation-settings: normal !important;
48
- }
49
- /* Ensure emoji button font size is applied with high specificity */
50
- .yjd-rich-editor .emoji-picker-popup .emoji-button,
51
- .yjd-rich-editor .emoji-picker-popup button.emoji-button {
52
- font-size: 20px !important;
53
- }
54
- }
55
-
56
- .yjd-rich-editor .rich-editor-area {
57
- flex: 1 1 auto;
58
- min-height: 40px;
59
- font-size: 16px;
60
- line-height: 1.7;
61
- outline: none;
62
- padding: 20px 20px 20px 20px;
63
- background: #fff;
64
- color: #2c3e50;
65
- font-family: inherit;
66
- overflow-y: auto;
67
- box-sizing: border-box;
68
- border: none;
69
- text-align: left;
70
- position: relative;
71
- }
72
-
73
- /* Placeholder styles for contentEditable */
74
- .yjd-rich-editor .rich-editor-area[data-placeholder]:before {
75
- content: attr(data-placeholder);
76
- color: #9ca3af;
77
- pointer-events: none;
78
- position: absolute;
79
- top: 20px;
80
- left: 20px;
81
- font-style: italic;
82
- display: none;
83
- z-index: 1;
84
- font-size: 16px;
85
- line-height: 1.7;
86
- }
87
-
88
- .yjd-rich-editor .rich-editor-area[data-placeholder].placeholder-visible:before {
89
- display: block;
90
- }
91
-
92
- .yjd-rich-editor .rich-editor-area {
93
- font-size: 16px;
94
- line-height: 1.7;
95
- font-family: inherit;
96
- color: #2c3e50;
97
- padding: 20px 20px;
98
- box-sizing: border-box;
99
- }
100
-
101
- /* inline elements */
102
- .yjd-rich-editor .rich-editor-area b,
103
- .yjd-rich-editor .rich-editor-area strong {
104
- font-weight: bold;
105
- }
106
-
107
- .yjd-rich-editor .rich-editor-area i,
108
- .yjd-rich-editor .rich-editor-area em {
109
- font-style: italic;
110
- }
111
-
112
- .yjd-rich-editor .rich-editor-area u {
113
- text-decoration: underline;
114
- }
115
-
116
- .yjd-rich-editor .rich-editor-area a {
117
- color: #2563eb;
118
- text-decoration: underline;
119
- cursor: pointer;
120
- }
121
-
122
- /* block text */
123
- .yjd-rich-editor .rich-editor-area p {
124
- margin: 0 0 1em;
125
- }
126
-
127
- /* headings */
128
- .yjd-rich-editor .rich-editor-area h1 {
129
- font-size: 2em;
130
- font-weight: bold;
131
- margin: 0.67em 0;
132
- }
133
-
134
- .yjd-rich-editor .rich-editor-area h2 {
135
- font-size: 1.5em;
136
- font-weight: bold;
137
- margin: 0.75em 0;
138
- }
139
-
140
- .yjd-rich-editor .rich-editor-area h3 {
141
- font-size: 1.25em;
142
- font-weight: bold;
143
- margin: 0.83em 0;
144
- }
145
-
146
- .yjd-rich-editor .rich-editor-area h4 {
147
- font-size: 1.1em;
148
- font-weight: bold;
149
- margin: 1em 0;
150
- }
151
-
152
- .yjd-rich-editor .rich-editor-area h5 {
153
- font-size: 1em;
154
- font-weight: bold;
155
- margin: 1.25em 0;
156
- }
157
-
158
- .yjd-rich-editor .rich-editor-area h6 {
159
- font-size: 0.875em;
160
- font-weight: bold;
161
- margin: 1.5em 0;
162
- color: #555;
163
- }
164
-
165
- /* lists */
166
- .yjd-rich-editor .rich-editor-area ul,
167
- .yjd-rich-editor .rich-editor-area ol {
168
- margin: 0 0 1em 2em;
169
- padding: 0;
170
- }
171
-
172
- .yjd-rich-editor .rich-editor-area li {
173
- margin: 0.25em 0;
174
- }
175
-
176
- /* code & pre */
177
- .yjd-rich-editor .rich-editor-area pre,
178
- .yjd-rich-editor .rich-editor-area code {
179
- font-family: Consolas, Menlo, Monaco, "Courier New", monospace;
180
- background: #f1f2f3;
181
- padding: 4px 6px;
182
- border-radius: 4px;
183
- overflow-x: auto;
184
- }
185
-
186
- .yjd-rich-editor .rich-editor-area pre {
187
- display: block;
188
- white-space: pre;
189
- margin: 1em 0;
190
- }
191
-
192
- .yjd-rich-editor .rich-editor-area code {
193
- display: inline;
194
- }
195
-
196
- /* blockquote */
197
- .yjd-rich-editor .rich-editor-area blockquote {
198
- border-left: 4px solid #d1d5db;
199
- margin: 1em 0;
200
- padding: 4px 12px;
201
- color: #555;
202
- font-style: italic;
203
- background: #f9fafb;
204
- }
205
- .yjd-rich-editor .rich-editor-area sub {
206
- font-size: 0.75em;
207
- vertical-align: sub;
208
- line-height: 1;
209
- }
210
-
211
- .yjd-rich-editor .rich-editor-area sup {
212
- font-size: 0.75em;
213
- vertical-align: super;
214
- line-height: 1;
215
- }
216
- .yjd-rich-editor .rich-editor-area a{
217
- cursor: pointer;
218
- }
219
- .yjd-rich-editor .rich-editor-area pre {
220
- background-color: #f1f2f3;
221
- width: 96%;
222
- padding: 10px 2% 10px 2%;
223
- font-family: Consolas, Menlo, Monaco, "Courier New", monospace;
224
- overflow-x: auto;
225
- white-space: pre;
226
- word-wrap: normal;
227
- }
228
- /* Force contentEditable to create P tags instead of DIV on Enter */
229
- .yjd-rich-editor .rich-editor-area div {
230
- display: block;
231
- }
232
-
233
- .yjd-rich-editor .rich-editor-area:empty::before {
234
- content: '';
235
- display: block;
236
- }
237
-
238
- .yjd-rich-editor .rich-editor-statusbar {
239
- position: relative;
240
- z-index: 1000;
241
- padding: 4px 12px;
242
- border-top: 1px solid #d1d5db;
243
- background: #f9fafb;
244
- font-size: 13px;
245
- color: #6b7280;
246
- display: flex;
247
- justify-content: space-between;
248
- align-items: center;
249
- font-family: inherit;
250
- min-height: 32px;
251
- box-sizing: border-box;
252
- }
253
-
254
- /* === TOOLBAR === */
255
- .yjd-rich-editor .rich-editor-toolbar-container{
256
- border-bottom: 1px solid #d1d5db;
257
- position: relative;
258
- z-index: 1000; /* Ensure toolbars are above resize handles */
259
- }
260
- .yjd-rich-editor .rich-editor-toolbar-1{
261
- padding:8px 16px;
262
- display:flex;
263
- justify-content:space-between;
264
- gap:20px;
265
- flex-wrap:wrap;
266
- background:#FCFCFC;
267
- align-items:center;
268
- min-height:48px;
269
- padding-bottom:8px;
270
- box-sizing:border-box;
271
- width:100%;
272
- overflow:hidden;
273
- z-index: 1000; /* Higher than resize handles */
274
- position: relative;
275
- }
276
- .yjd-rich-editor .rich-editor-toolbar-2{
277
- display:none;
278
- padding: 8px 16px;
279
- justify-content: space-between;
280
- gap: 20px;
281
- flex-wrap: wrap;
282
- background: #FCFCFC;
283
- align-items: center;
284
- min-height: 48px;
285
- padding-bottom: 8px;
286
- box-sizing: border-box;
287
- width: 100%;
288
- overflow: hidden;
289
- z-index: 1000; /* Higher than resize handles */
290
- position: relative;
291
- }
292
- .yjd-rich-editor .rich-editor-toolbar-2.visible{
293
- display:flex;
294
- }
295
-
296
- /* === TOOLBAR GROUPS === */
297
- .yjd-rich-editor .toolbar-group {
298
- display: flex;
299
- align-items: center;
300
- gap: 12px;
301
- }
302
-
303
- /* === TOOLBAR BUTTONS === */
304
-
305
- .yjd-rich-editor .rich-editor-toolbar-btn{
306
- height: 20px;
307
- min-width: 22px;
308
- width: 22px;
309
- display: inline-flex;
310
- border-radius: 4px;
311
- font-size: 14px;
312
- align-items: center;
313
- background:transparent;
314
- justify-content: center;
315
- font-weight: 500;
316
- border: none;
317
- }
318
- .yjd-rich-editor .custom-select-button span{
319
- justify-content: left !important;
320
- }
321
- .yjd-rich-editor .custom-select-button:focus {
322
- outline: none;
323
- border-color: #3b82f6;
324
- box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);
325
-
326
- }
327
- .yjd-rich-editor .rich-editor-toolbar-btn span{
328
- display: flex !important;
329
- align-items: center;
330
- justify-content: center;
331
- }
332
- .yjd-rich-editor .rich-editor-toolbar-btn:hover {
333
- background: #EEEEEE !important;
334
- cursor: pointer;
335
- }
336
- .yjd-rich-editor .rich-editor-toolbar-btn.active{
337
- background: #EEEEEE !important;
338
- color: #136FDF !important;
339
- }
340
-
341
- .yjd-rich-editor .rich-editor-toolbar-btn.active svg,
342
- .yjd-rich-editor .rich-editor-toolbar-btn.active .icon svg {
343
- fill: #136FDF !important;
344
- }
345
-
346
- .yjd-rich-editor .rich-editor-toolbar-btn.active svg path,
347
- .yjd-rich-editor .rich-editor-toolbar-btn.active .icon svg path {
348
- fill: #136FDF !important;
349
- }
350
-
351
-
352
-
353
- /* Specific icon styles for better visibility */
354
- .yjd-rich-editor .rich-editor-toolbar-btn.list-btn .icon svg,
355
- .yjd-rich-editor .rich-editor-toolbar-btn.emoji-btn .icon svg,
356
- .yjd-rich-editor .rich-editor-toolbar-btn.image-btn .icon svg,
357
- .yjd-rich-editor .rich-editor-toolbar-btn.video-btn .icon svg,
358
- .yjd-rich-editor .rich-editor-toolbar-btn.tag-btn .icon svg,
359
- .yjd-rich-editor .rich-editor-toolbar-btn.import-btn .icon svg {
360
- width: 16px;
361
- height: 16px;
362
- fill: #454545;
363
- }
364
-
365
- /*block toolbar*/
366
- .yjd-rich-editor .block-toolbar-btn{
367
- border:none;
368
- border-radius:4px;
369
- padding:4px;
370
- background:transparent;
371
- cursor:pointer;
372
- font-size:14px;
373
- font-weight:500;
374
- align-items:center;
375
- justify-content:center;
376
- display:inline-flex;
377
- }
378
- .yjd-rich-editor .block-toolbar-btn:hover{
379
- background:#EEEEEE;
380
- }
381
- .yjd-rich-editor .block-toolbar-btn.active{
382
- background:#CCCCCC;
383
- color: #136FDF !important;
384
- }
385
-
386
- .yjd-rich-editor .block-toolbar-btn.active svg,
387
- .yjd-rich-editor .block-toolbar-btn.active .icon svg {
388
- fill: #136FDF !important;
389
- }
390
-
391
- .yjd-rich-editor .block-toolbar-btn.active svg path,
392
- .yjd-rich-editor .block-toolbar-btn.active .icon svg path {
393
- fill: #136FDF !important;
394
- }
395
-
396
- /* Block toolbar container and arrow */
397
- .yjd-rich-editor .block-toolbar-container {
398
- display: flex;
399
- align-items: center;
400
- gap: 28px;
401
- padding: 8px;
402
- background: #fff;
403
- border-radius: 6.9px;
404
- box-shadow: 0 4px 24px rgba(0,0,0,0.13);
405
- }
406
-
407
- .yjd-rich-editor .block-toolbar-arrow {
408
- position: absolute;
409
- bottom: -6px;
410
- left: 50%;
411
- transform: translateX(-50%);
412
- width: 0;
413
- height: 0;
414
- border-left: 6px solid transparent;
415
- border-right: 6px solid transparent;
416
- border-top: 6px solid #fff;
417
- filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1));
418
- }
419
-
420
- /* Table toolbar container and arrow */
421
- .yjd-rich-editor .table-toolbar-container {
422
- display: flex;
423
- align-items: center;
424
- gap: 12px;
425
- padding: 8px;
426
- background: #fff;
427
- border-radius: 6px;
428
- box-shadow: 0 4px 24px rgba(0,0,0,0.13);
429
- }
430
-
431
- .yjd-rich-editor .table-toolbar-arrow {
432
- position: absolute;
433
- bottom: -6px;
434
- left: 50%;
435
- transform: translateX(-50%);
436
- width: 0;
437
- height: 0;
438
- border-left: 6px solid transparent;
439
- border-right: 6px solid transparent;
440
- border-top: 6px solid #fff;
441
- filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1));
442
- }
443
-
444
- /* Update block toolbar to use flexbox for proper layout */
445
- .yjd-rich-editor .block-toolbar {
446
- display: none;
447
- position: absolute;
448
- z-index: 1001;
449
- background: transparent;
450
- border: none;
451
- border-radius: 6.9px;
452
- box-sizing: border-box;
453
- padding: 0;
454
- gap: 0;
455
- flex-direction: column;
456
- align-items: center;
457
- }
458
-
459
- .yjd-rich-editor .block-toolbar.visible {
460
- display: flex;
461
- }
462
- /* === COLOR PICKER === */
463
- .yjd-rich-editor .color-picker-popup {
464
- position: absolute;
465
- background: #fff;
466
- display:none;
467
- border-radius: 6.9px;
468
- padding: 8px;
469
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
470
- z-index: 1000;
471
- /* Prevent focus and click on popup container */
472
- pointer-events: none;
473
- -webkit-user-select: none;
474
- -moz-user-select: none;
475
- -ms-user-select: none;
476
- user-select: none;
477
- }
478
-
479
- .yjd-rich-editor .color-picker-popup.visible{
480
- display:block !important;
481
- }
482
-
483
- /* === CUSTOM SELECT === */
484
- .yjd-rich-editor .custom-select-popup, .yjd-rich-editor .heading-select-popup, .yjd-rich-editor .capitalization-select-popup, .yjd-rich-editor .font-family-select-popup, .yjd-rich-editor .line-height-select-popup, .yjd-rich-editor .text-size-select-popup {
485
- position: absolute;
486
- background: #fff;
487
- display: none;
488
- border: 1px solid #d1d5db;
489
- border-radius: 6.9px;
490
- padding: 8px;
491
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
492
- z-index: 1002;
493
- max-height: 200px;
494
- overflow-y: auto;
495
- /* Prevent focus and click on popup container */
496
- pointer-events: none;
497
- -webkit-user-select: none;
498
- -moz-user-select: none;
499
- -ms-user-select: none;
500
- user-select: none;
501
- }
502
-
503
- .yjd-rich-editor .custom-select-popup.visible, .yjd-rich-editor .heading-select-popup.visible, .yjd-rich-editor .font-family-select-popup.visible, .yjd-rich-editor .line-height-select-popup.visible, .yjd-rich-editor .capitalization-select-popup.visible, .yjd-rich-editor .text-size-select-popup.visible {
504
- display: block !important;
505
- }
506
-
507
- .yjd-rich-editor .link-popup ,.yjd-rich-editor .image-popup,.yjd-rich-editor .video-popup, .yjd-rich-editor .tag-popup {
508
- width: 299px;
509
- }
510
- .yjd-rich-editor .item-list {
511
- display: flex;
512
- flex-direction: column;
513
- gap: 2px;
514
- }
515
-
516
-
517
- .yjd-rich-editor .heading-select-popup {
518
- width: 190px;
519
- max-width: 100vw;
520
- }
521
-
522
- .yjd-rich-editor .capitalization-select-popup {
523
- width: 150px;
524
- max-width: 100vw;
525
- }
526
-
527
- .yjd-rich-editor .font-family-select-popup {
528
- width: 190px;
529
- max-width: 100vw;
530
- }
531
-
532
- .yjd-rich-editor .line-height-select-popup {
533
- width: 80px;
534
- max-width: 100vw;
535
- }
536
-
537
- .yjd-rich-editor .text-size-select-popup {
538
- width: 150px;
539
- max-width: 100vw;
540
- }
541
-
542
- .yjd-rich-editor .custom-select-item-button {
543
- width: 100%;
544
- padding: 4px 4px;
545
- border: none;
546
- background: transparent;
547
- border-radius: 6px;
548
- cursor: pointer;
549
- text-align: left;
550
- transition: all 0.2s ease;
551
- font-size: 14px;
552
- line-height: 1.4;
553
- color: #111827;
554
- display: flex;
555
- align-items: center;
556
- justify-content: space-between;
557
- /* Allow interaction with select item buttons */
558
- pointer-events: auto;
559
- }
560
-
561
- .yjd-rich-editor .custom-select-item-button:hover {
562
- background: #EEEEEE;
563
- }
564
-
565
- .yjd-rich-editor .custom-select-item-button.current {
566
- font-weight: 500;
567
- background: #EEEEEE !important;
568
- }
569
- .yjd-rich-editor .custom-select-item-button .item-checkmark{
570
- display:none;
571
- }
572
- .yjd-rich-editor .custom-select-item-button.current .item-checkmark{
573
- display:block;
574
- }
575
- .yjd-rich-editor .item-text {
576
- flex: 1;
577
- }
578
- .yjd-rich-editor .dropdown-icon{
579
- display: inline-flex !important;
580
- align-items: center ;
581
- justify-content: center ;
582
- }
583
-
584
-
585
- .yjd-rich-editor .color-grid {
586
- display: grid;
587
- grid-template-columns: repeat(6, 1fr);
588
- gap: 6px 4px;
589
- margin-bottom: 12px;
590
- }
591
-
592
- .yjd-rich-editor .color-button {
593
- width: 24px;
594
- height: 24px;
595
- border:none;
596
- border-radius: 50%;
597
- cursor: pointer;
598
- transition: all 0.2s ease;
599
- padding: 0;
600
- margin: 0;
601
- /* Allow interaction with color buttons */
602
- pointer-events: auto;
603
- }
604
-
605
- .yjd-rich-editor .color-button:hover {
606
- transform: scale(1.1);
607
- border-color: #374151;
608
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
609
- }
610
-
611
- .yjd-rich-editor .custom-color-container {
612
- position: relative;
613
- padding-top: 8px;
614
- display: flex;
615
- align-items: center;
616
- gap: 8px;
617
- z-index: 0;
618
- /* đảm bảo ::before không che nội dung */
619
- }
620
-
621
- .yjd-rich-editor .custom-color-container::before {
622
- content: "";
623
- position: absolute;
624
- top: 0;
625
- left: -8px;
626
- width: calc(100% + 16px);
627
- /* 8px trái + 8px phải */
628
- height: 0;
629
- border-top: 1px solid #e5e7eb;
630
- z-index: -1;
631
- /* đặt phía sau nội dung */
632
- }
633
-
634
- .yjd-rich-editor .custom-color-label {
635
- font-size: 12px;
636
- color: #6b7280;
637
- margin: 0;
638
- }
639
-
640
-
641
- .yjd-rich-editor .yjd-input-title{
642
- margin: 0;
643
- color: #252424;
644
- font-size: 16px;
645
- font-style: normal;
646
- font-weight: 700;
647
- line-height: normal;
648
- }
649
- .yjd-rich-editor .yjd-input-label{
650
- color: #252424;
651
- margin: 0;
652
- font-size: 14px;
653
- font-style: normal;
654
- font-weight: 700;
655
- line-height: normal;
656
- }
657
- .yjd-rich-editor .yjd-input-group{
658
- display: flex;
659
- flex-direction: column;
660
- gap: 8px;
661
- }
662
- .yjd-rich-editor .yjd-input {
663
- padding: 10px;
664
- flex: 1 1 auto;
665
- min-width: 0;
666
- max-width: 100%;
667
- max-height: 37px;
668
- border-radius: 10px;
669
- border: 1px solid #E1E1E1;
670
- box-sizing: border-box;
671
- color: #252424 !important;
672
- font-size: 14px;
673
- /* Allow interaction with inputs */
674
- pointer-events: auto;
675
- }
676
- .yjd-rich-editor .yjd-input:focus {
677
- outline: none;
678
- border-color: #3b82f6;
679
- box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);
680
- }
681
- .yjd-rich-editor .yjd-button-container{
682
- display: flex ;
683
- justify-content: flex-end;
684
- gap: 4px;
685
- }
686
- .yjd-rich-editor .yjd-button-confirm{
687
- padding: 8px 15px;
688
- align-items: center;
689
- border-radius: 6px;
690
- background: #181616;
691
- box-shadow: 0px 1px 3.3px 0px rgba(0, 0, 0, 0.04);
692
- /* Allow interaction with buttons */
693
- pointer-events: auto;
694
- color: #FFF;
695
- font-size: 12px;
696
- font-style: normal;
697
- font-weight: 700;
698
- line-height: normal;
699
- cursor: pointer;
700
- }
701
- .yjd-rich-editor .yjd-button-cancel{
702
- border-radius: 6px;
703
- align-items: center;
704
- padding: 8px 15px;
705
- border: 1px solid #E0E0E0;
706
- background: #FFFFFF;
707
- box-shadow: 0px 1px 3.3px 0px rgba(0, 0, 0, 0.04);
708
- color: #2A2727;
709
- font-size: 12px;
710
- font-style: normal;
711
- font-weight: 700;
712
- line-height: normal;
713
- cursor: pointer;
714
- }
715
- .yjd-rich-editor .button-disable{
716
- cursor: not-allowed;
717
- }
718
- /* === LINK POPUP === */
719
- .yjd-rich-editor .link-popup {
720
- position: absolute;
721
- background: #fff;
722
- font-family: 'Lato', sans-serif;
723
- display: none;
724
- border: none;
725
- border-radius: 10px;
726
- box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.18);
727
- z-index: 1000;
728
- margin: 0;
729
- /* Prevent focus and click on popup container */
730
- pointer-events: none;
731
- -webkit-user-select: none;
732
- -moz-user-select: none;
733
- -ms-user-select: none;
734
- user-select: none;
735
- }
736
-
737
- .yjd-rich-editor .link-popup.visible {
738
- display: block !important;
739
- }
740
-
741
- .yjd-rich-editor .link-popup-content {
742
- display: flex;
743
- flex-direction: column;
744
- gap: 16px;
745
- padding: 16px;
746
- }
747
- .yjd-rich-editor .yjd-input-upload-group{
748
- display: flex;
749
- align-items: center;
750
- gap: 4px;
751
- }
752
- .yjd-rich-editor .yjd-custom-upload-button {
753
- display: flex !important;
754
- align-items: center;
755
- justify-content: center;
756
- padding: 0;
757
- border: 1px solid #E1E1E1;
758
- background: #FFF;
759
- width: 34px;
760
- height: 34px;
761
- border-radius: 10px;
762
- cursor: pointer;
763
- }
764
- .yjd-rich-editor .yjd-suggestions-list {
765
- display: flex;
766
- flex-wrap: wrap;
767
- gap: 8px;
768
- flex: 1 1 auto;
769
- min-width: 0;
770
- max-width: 100%;
771
- }
772
- .yjd-rich-editor .yjd-suggestion-button{
773
- border: none;
774
- display: flex;
775
- padding: 4px 10px;
776
- justify-content: center;
777
- align-items: center;
778
- border-radius: 30px;
779
- background: #F5F5F5;
780
- cursor: pointer;
781
- font-size: 14px;
782
- color: #252424 !important;
783
- }
784
- .yjd-rich-editor .yjd-select-input{
785
- -webkit-appearance: none;
786
- -moz-appearance: none;
787
- appearance: none;
788
- cursor: pointer;
789
- padding: 10px 10px 10px 10px;
790
- border-radius: 10px;
791
- border: 1px solid #E1E1E1;
792
- max-height: 37px;
793
- align-items: center;
794
- background-image: url('data:image/svg+xml;utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"%3E%3Cpath d="M4.55859 7.94141C4.80273 8.18555 5.19922 8.18555 5.44336 7.94141L9.19336 4.19141C9.4375 3.94727 9.4375 3.55078 9.19336 3.30664C8.94922 3.0625 8.55274 3.0625 8.30859 3.30664L5 6.61523L1.69141 3.30859C1.44727 3.06445 1.05078 3.06445 0.806641 3.30859C0.5625 3.55273 0.5625 3.94922 0.806641 4.19336L4.55664 7.94336L4.55859 7.94141Z" fill="%23A4A7AE" /%3E%3C/svg%3E');
795
- background-repeat: no-repeat;
796
- background-position: right 10px center;
797
- background-size: 10px;
798
- font-size: 14px;
799
- color: #252424 !important;
800
- }
801
- .yjd-rich-editor .yjd-select-input:focus {
802
- outline: none;
803
- border-color: #3b82f6;
804
- box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);
805
- }
806
-
807
-
808
- /* === TABLE POPUP === */
809
- .yjd-rich-editor .table-popup {
810
- position: absolute;
811
- background: #fff;
812
- font-family: 'Lato', sans-serif;
813
- display: none;
814
- border: 1px solid #d1d5db;
815
- border-radius: 6.9px;
816
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
817
- z-index: 1000;
818
- /* Prevent focus and click on popup container */
819
- pointer-events: none;
820
- -webkit-user-select: none;
821
- -moz-user-select: none;
822
- -ms-user-select: none;
823
- user-select: none;
824
- }
825
-
826
- .yjd-rich-editor .table-popup.visible {
827
- display: block !important;
828
- }
829
-
830
- .yjd-rich-editor .table-popup-content {
831
- padding: 8px;
832
- display: flex;
833
- flex-direction: column;
834
- align-items: center;
835
- gap: 12px;
836
- position: relative;
837
- }
838
-
839
- .yjd-rich-editor .table-popup-content>* {
840
- position: relative;
841
- width: 100%;
842
- }
843
-
844
- /* Kẻ đường phân cách giữa các phần tử, kéo dài vượt padding */
845
- .yjd-rich-editor .table-popup-content>*:not(:last-child)::after {
846
- content: "";
847
- position: absolute;
848
- bottom: -8px;
849
- /* nửa khoảng cách của gap: 12px */
850
- left: -8px;
851
- /* tràn ra ngoài padding 8px */
852
- right: -8px;
853
- height: 1px;
854
- background-color: #e5e7eb;
855
- }
856
-
857
- .yjd-rich-editor .table-grid-selector {
858
- display: grid;
859
- grid-template-columns: repeat(8, 1fr);
860
- gap: 1px;
861
- border-bottom: 1px solid rgb(238, 238, 238);
862
- }
863
-
864
- .yjd-rich-editor .table-size-display{
865
- display: flex;
866
- align-items: center;
867
- justify-content: center;
868
- font-family: 'Lato', sans-serif;
869
- color: #252424 !important;
870
- font-size: 12px;
871
- font-style: normal;
872
- font-weight: 400;
873
- line-height: normal;
874
- }
875
- .yjd-rich-editor .table-grid-cell {
876
- width: 20px;
877
- height: 20px;
878
- background: #fff;
879
- border: 1px solid rgb(238, 238, 238);
880
- cursor: pointer;
881
- transition: background-color 0.1s ease;
882
- border-radius: 2px;
883
- }
884
-
885
- .yjd-rich-editor .table-grid-cell:hover,
886
- .yjd-rich-editor .table-grid-cell.highlighted {
887
- background: #EEEEEE;
888
- }
889
-
890
- /* === TABLE STYLES === */
891
- .yjd-rich-editor .rich-editor-table {
892
- border-collapse: collapse;
893
- width: 100%;
894
- margin: 16px 0;
895
- font-size: 14px;
896
- line-height: 1.5;
897
- position: relative;
898
- display: table;
899
- table-layout: auto;
900
- }
901
-
902
- .yjd-rich-editor .rich-editor-table td {
903
- border: 1px solid #d1d5db;
904
- padding: 8px 12px;
905
- min-height: 28px;
906
- vertical-align: top;
907
- background: #fff;
908
- }
909
-
910
- .yjd-rich-editor .rich-editor-table td:focus {
911
- outline: 2px solid #3b82f6;
912
- outline-offset: -2px;
913
- background: #fefefe;
914
- }
915
-
916
- /* === TABLE TOOLBAR === */
917
- .yjd-rich-editor .table-toolbar {
918
- position: absolute;
919
- display: none;
920
- z-index: 1002;
921
- background: transparent;
922
- border: none;
923
- border-radius: 6.9px;
924
- opacity: 0;
925
- pointer-events: none;
926
- }
927
-
928
- .yjd-rich-editor .table-toolbar-group {
929
- display: flex;
930
- gap: 8px;
931
- align-items: center;
932
- }
933
-
934
- .yjd-rich-editor .table-toolbar.visible {
935
- display: block;
936
- opacity: 1;
937
- pointer-events: auto;
938
- transform: translateY(0);
939
- }
940
-
941
- .yjd-rich-editor .table-toolbar-btn {
942
- padding: 4px;
943
- display: inline-flex;
944
- align-items: center;
945
- justify-content: center;
946
- border-radius: 4px;
947
- color: #374151;
948
- border:none;
949
- background:transparent;
950
- font-size: 12px;
951
- font-weight: 500;
952
- cursor: pointer;
953
- transition: all 0.15s ease;
954
- white-space: nowrap;
955
- }
956
-
957
- .yjd-rich-editor .table-toolbar-btn:hover {
958
- background: #f3f4f6;
959
- color: #111827;
960
- }
961
-
962
- .yjd-rich-editor .table-toolbar-btn:active {
963
- background: #e5e7eb;
964
- border-color: #9ca3af;
965
- color: #136FDF !important;
966
- }
967
-
968
- /* Responsive table toolbar */
969
- @media (max-width: 768px) {
970
- .yjd-rich-editor .table-toolbar-container {
971
- flex-wrap: wrap;
972
- max-width: 200px;
973
- gap: 2px;
974
- }
975
-
976
- .yjd-rich-editor .table-toolbar-btn {
977
- height: 24px;
978
- min-width: 24px;
979
- font-size: 10px;
980
- padding: 2px 4px;
981
- }
982
- }
983
-
984
- /* === TEXT ALIGN PICKER === */
985
- .yjd-rich-editor .text-align-picker-popup {
986
- position: absolute;
987
- background: #fff;
988
- display: none;
989
- border: 1px solid #d1d5db;
990
- border-radius: 6.9px;
991
- padding: 8px 4px 0 4px;
992
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
993
- z-index: 1000;
994
- /* Prevent focus and click on popup container */
995
- pointer-events: none;
996
- -webkit-user-select: none;
997
- -moz-user-select: none;
998
- -ms-user-select: none;
999
- user-select: none;
1000
- }
1001
-
1002
- .yjd-rich-editor .text-align-picker-popup.visible {
1003
- display: block !important;
1004
- }
1005
-
1006
- .yjd-rich-editor .align-button-container {
1007
- display: flex;
1008
- flex-direction: column;
1009
- gap: 2px;
1010
- width: 98px;
1011
- height: 115px;
1012
-
1013
- }
1014
- .yjd-rich-editor .align-button .icon-wrapper{
1015
- display: flex;
1016
- margin-left: 8px;
1017
- align-items: center;
1018
- justify-content: center;
1019
- }
1020
- .yjd-rich-editor .align-button .label-text{
1021
- color: #252424;
1022
- font-size: 12px;
1023
- font-style: normal;
1024
- font-weight: 400;
1025
- line-height: normal;
1026
- }
1027
-
1028
- .yjd-rich-editor .align-button {
1029
- height: 24px;
1030
- border-radius: 3.456px;
1031
- background: #fff;
1032
- border: none;
1033
- align-items: center;
1034
- display: flex;
1035
- width: 100%;
1036
- cursor: pointer;
1037
- padding: 0;
1038
- gap: 4px;
1039
- /* Allow interaction with align buttons */
1040
- pointer-events: auto;
1041
- }
1042
-
1043
- .yjd-rich-editor .align-button:hover {
1044
- background: #f3f4f6;
1045
- border-color: #9ca3af;
1046
- }
1047
-
1048
- .yjd-rich-editor .align-button.active {
1049
- background: #e5e7eb;
1050
- border-color: #6b7280;
1051
- }
1052
-
1053
- .yjd-rich-editor .align-button svg {
1054
- width: 16px;
1055
- height: 16px;
1056
- color: #374151;
1057
- }
1058
-
1059
- .yjd-rich-editor .align-button.active svg {
1060
- color: #1f2937;
1061
- }
1062
-
1063
- /* === LIST PICKER === */
1064
- .yjd-rich-editor .list-picker-popup {
1065
- position: absolute;
1066
- background: #fff;
1067
- display: none;
1068
- border-radius: 6.9px;
1069
- padding: 12px;
1070
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
1071
- z-index: 1000;
1072
- /* Prevent focus and click on popup container */
1073
- pointer-events: none;
1074
- -webkit-user-select: none;
1075
- -moz-user-select: none;
1076
- -ms-user-select: none;
1077
- user-select: none;
1078
- }
1079
-
1080
- .yjd-rich-editor .list-picker-popup.visible {
1081
- display: block !important;
1082
- }
1083
-
1084
- .yjd-rich-editor .list-button-container {
1085
- display: grid;
1086
- grid-template-columns: repeat(3, 1fr);
1087
- align-items: center;
1088
- gap: 12px 8px;
1089
- }
1090
-
1091
- .yjd-rich-editor .list-button {
1092
-
1093
- border: none;
1094
- border-radius: 3.46px;
1095
- display: flex;
1096
- align-items: center;
1097
- justify-content: center;
1098
- cursor: pointer;
1099
- background: transparent;
1100
- padding: 4px;
1101
- }
1102
-
1103
- .yjd-rich-editor .list-button:hover {
1104
- background: #f3f4f6;
1105
- }
1106
-
1107
- .yjd-rich-editor .list-button.active {
1108
- background: #eeeeee;
1109
- }
1110
-
1111
- .yjd-rich-editor .list-button svg {
1112
- height: 16px;
1113
- color: #374151;
1114
- }
1115
-
1116
- .yjd-rich-editor .list-button.active svg {
1117
- color: #fff;
1118
- }
1119
-
1120
- /* === LIST FORMATTING === */
1121
- .yjd-rich-editor .rich-editor-area ul.checklist {
1122
- list-style: none;
1123
- padding-left: 0;
1124
- }
1125
-
1126
- .yjd-rich-editor .rich-editor-area ul.checklist li {
1127
- position: relative;
1128
- padding-left: 25px;
1129
- margin-bottom: 4px;
1130
- }
1131
-
1132
- .yjd-rich-editor .rich-editor-area ul.checklist li input[type="checkbox"] {
1133
- position: absolute;
1134
- left: 0;
1135
- top: 2px;
1136
- margin: 0;
1137
- cursor: pointer;
1138
- }
1139
-
1140
- .yjd-rich-editor .rich-editor-area ul {
1141
- margin: 12px 0;
1142
- padding-left: 20px;
1143
- }
1144
-
1145
- .yjd-rich-editor .rich-editor-area ol {
1146
- margin: 12px 0;
1147
- padding-left: 20px;
1148
- }
1149
-
1150
- .yjd-rich-editor .rich-editor-area li {
1151
- margin-bottom: 4px;
1152
- line-height: 1.6;
1153
- }
1154
-
1155
- /* === INDENT FORMATTING === */
1156
- .yjd-rich-editor .rich-editor-area .indented {
1157
- transition: padding-left 0.2s ease;
1158
- }
1159
-
1160
- .yjd-rich-editor .rich-editor-area [style*="padding-left"] {
1161
- transition: padding-left 0.2s ease;
1162
- }
1163
-
1164
- /* Indent button styles */
1165
- .yjd-rich-editor .indent-increase-btn svg,
1166
- .yjd-rich-editor .indent-decrease-btn svg {
1167
- width: 16px;
1168
- height: 16px;
1169
- fill: #454545;
1170
- }
1171
-
1172
- .yjd-rich-editor .indent-increase-btn:hover svg,
1173
- .yjd-rich-editor .indent-decrease-btn:hover svg {
1174
- fill: #454545;
1175
- }
1176
-
1177
- .yjd-rich-editor .indent-increase-btn:disabled,
1178
- .yjd-rich-editor .indent-decrease-btn:disabled {
1179
- opacity: 0.5;
1180
- cursor: not-allowed;
1181
- }
1182
-
1183
- .yjd-rich-editor .indent-increase-btn:disabled svg,
1184
- .yjd-rich-editor .indent-decrease-btn:disabled svg {
1185
- fill: #9ca3af;
1186
- }
1187
-
1188
- /* === EMOJI PICKER === */
1189
- .yjd-rich-editor .emoji-picker-popup {
1190
- position: absolute;
1191
- z-index: 10000;
1192
- background: #fff;
1193
- border-radius: 8px;
1194
- padding: 8px;
1195
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
1196
- display: none;
1197
- overflow-y: auto;
1198
- /* Prevent focus and click on popup container */
1199
- pointer-events: none;
1200
- -webkit-user-select: none;
1201
- -moz-user-select: none;
1202
- -ms-user-select: none;
1203
- user-select: none;
1204
- }
1205
-
1206
- .yjd-rich-editor .emoji-picker-popup.visible {
1207
- display: block;
1208
- }
1209
-
1210
- .yjd-rich-editor .emoji-grid {
1211
- display: grid;
1212
- grid-template-columns: repeat(10, 1fr);
1213
- gap: 4px;
1214
- max-height: 240px;
1215
- overflow-y: auto;
1216
- }
1217
- .yjd-rich-editor .emoji-text-message{
1218
- margin-top: 4px;
1219
- color: #71787C;
1220
- text-align: center;
1221
- font-family: 'Segoe UI', Arial, sans-serif;
1222
- font-size: 12px;
1223
- font-style: normal;
1224
- font-weight: 400;
1225
- line-height: normal;
1226
- }
1227
- .yjd-rich-editor .emoji-button {
1228
- width: 28px;
1229
- height: 28px;
1230
- border: none;
1231
- background: none;
1232
- padding: 0;
1233
- border-radius: 4px;
1234
- cursor: pointer;
1235
- font-size: 20px !important;
1236
- display: flex;
1237
- align-items: center;
1238
- justify-content: center;
1239
- transition: background-color 0.2s ease;
1240
- /* Allow interaction with buttons */
1241
- pointer-events: auto;
1242
- }
1243
-
1244
- .yjd-rich-editor .emoji-button:hover {
1245
- background-color: #f3f4f6;
1246
- }
1247
-
1248
- .yjd-rich-editor .emoji {
1249
- font-size: 1.1em;
1250
- line-height: 1;
1251
- }
1252
-
1253
- /* === IMAGE POPUP === */
1254
- .yjd-rich-editor .image-popup {
1255
- position: absolute;
1256
- z-index: 10000;
1257
- background: #fff;
1258
- font-family: 'Lato', sans-serif;
1259
- border-radius: 10px;
1260
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
1261
- display: none;
1262
- margin: 0;
1263
- box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.18);
1264
- /* Prevent focus and click on popup container */
1265
- pointer-events: none;
1266
- -webkit-user-select: none;
1267
- -moz-user-select: none;
1268
- -ms-user-select: none;
1269
- user-select: none;
1270
- }
1271
-
1272
- .yjd-rich-editor .image-popup.visible {
1273
- display: block;
1274
- }
1275
-
1276
- .yjd-rich-editor .image-popup-content {
1277
- display: flex;
1278
- flex-direction: column;
1279
- gap: 16px;
1280
- padding: 16px;
1281
- }
1282
-
1283
-
1284
-
1285
- .yjd-rich-editor .image-input-container {
1286
- gap: 8px;
1287
- display: flex;
1288
- flex-direction: column;
1289
- }
1290
-
1291
- .yjd-rich-editor .image-input-hidden{
1292
- display: none;
1293
- }
1294
-
1295
-
1296
- /* === VIDEO POPUP === */
1297
- .yjd-rich-editor .video-popup {
1298
- position: absolute;
1299
- z-index: 10000;
1300
- background: #fff;
1301
- font-family: 'Lato', sans-serif;
1302
- border-radius: 10px;
1303
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
1304
- display: none;
1305
- margin: 0;
1306
- box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.18);
1307
- /* Prevent focus and click on popup container */
1308
- pointer-events: none;
1309
- -webkit-user-select: none;
1310
- -moz-user-select: none;
1311
- -ms-user-select: none;
1312
- user-select: none;
1313
- }
1314
-
1315
- .yjd-rich-editor .video-popup.visible {
1316
- display: block;
1317
- }
1318
-
1319
- .yjd-rich-editor .video-popup-content {
1320
- display: flex;
1321
- flex-direction: column;
1322
- gap: 16px;
1323
- padding: 16px;
1324
- }
1325
-
1326
- .yjd-rich-editor .video-input-container {
1327
- gap: 8px;
1328
- display: flex;
1329
- flex-direction: column;
1330
- }
1331
-
1332
- /* === INSERTED MEDIA === */
1333
- .yjd-rich-editor .inserted-image,
1334
- .yjd-rich-editor .inserted-video {
1335
- max-width: 100%;
1336
- height: auto;
1337
- margin: 4px 0;
1338
- border-radius: 4px;
1339
- display: block;
1340
- }
1341
-
1342
- .yjd-rich-editor .inserted-video {
1343
- background: #000;
1344
- }
1345
-
1346
- /* === TAG POPUP === */
1347
- .yjd-rich-editor .tag-popup {
1348
- position: absolute;
1349
- z-index: 10000;
1350
- background: #fff;
1351
- font-family: 'Lato', sans-serif;
1352
- border-radius: 10px;
1353
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
1354
- display: none;
1355
- margin: 0;
1356
- box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.18);
1357
- /* Prevent focus and click on popup container */
1358
- pointer-events: none;
1359
- -webkit-user-select: none;
1360
- -moz-user-select: none;
1361
- -ms-user-select: none;
1362
- user-select: none;
1363
- }
1364
- .tag-popup {
1365
- max-height: 80vh;
1366
- /* không vượt quá 80% chiều cao viewport */
1367
- overflow-y: auto;
1368
- /* chỉ cuộn khi cần */
1369
- }
1370
-
1371
- .tag-suggestions-container {
1372
- max-height: 200px;
1373
- /* nếu nhiều gợi ý thì chỉ cho hiển thị tối đa 200px */
1374
- overflow-y: auto;
1375
- }
1376
- .yjd-rich-editor .tag-popup.visible {
1377
- display: block;
1378
- }
1379
-
1380
- .yjd-rich-editor .tag-popup-content {
1381
- display: flex;
1382
- flex-direction: column;
1383
- gap: 16px;
1384
- padding: 16px;
1385
- }
1386
-
1387
-
1388
- .yjd-rich-editor .tag-type-container{
1389
- gap: 8px;
1390
- display: flex;
1391
- flex-direction: column;
1392
- }
1393
-
1394
- /* === CUSTOM TAGS === */
1395
- .yjd-rich-editor .custom-tag {
1396
- display: inline-block;
1397
- padding: 2px 6px;
1398
- border-radius: 12px;
1399
- font-size: 0.85em;
1400
- font-weight: 500;
1401
- cursor: pointer;
1402
- margin: 0 2px;
1403
- }
1404
-
1405
- .yjd-rich-editor .custom-tag.tag-mention {
1406
- background: #dbeafe;
1407
- color: #1d4ed8;
1408
- }
1409
-
1410
- .yjd-rich-editor .custom-tag.tag-hashtag {
1411
- background: #dcfce7;
1412
- color: #166534;
1413
- }
1414
-
1415
- .yjd-rich-editor .custom-tag.tag-custom {
1416
- background: #fef3c7;
1417
- color: #92400e;
1418
- }
1419
-
1420
- .yjd-rich-editor .custom-tag:hover {
1421
- opacity: 0.8;
1422
- }
1423
-
1424
- /* === IMPORT POPUP === */
1425
- .yjd-rich-editor .import-popup {
1426
- position: absolute;
1427
- z-index: 10000;
1428
- background: #fff;
1429
- border: 1px solid #d1d5db;
1430
- border-radius: 8px;
1431
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
1432
- display: none;
1433
- width: 400px;
1434
- max-width: 90vw;
1435
- /* Prevent focus and click on popup container */
1436
- pointer-events: none;
1437
- -webkit-user-select: none;
1438
- -moz-user-select: none;
1439
- -ms-user-select: none;
1440
- user-select: none;
1441
- }
1442
-
1443
- .yjd-rich-editor .import-popup.visible {
1444
- display: block;
1445
- }
1446
-
1447
- .yjd-rich-editor .import-popup-content {
1448
- padding: 20px;
1449
- }
1450
-
1451
- .yjd-rich-editor .import-popup-title {
1452
- margin: 0 0 20px 0;
1453
- font-size: 18px;
1454
- font-weight: 600;
1455
- color: #1f2937;
1456
- }
1457
-
1458
- .yjd-rich-editor .import-type-container {
1459
- margin-bottom: 20px;
1460
- }
1461
-
1462
- .yjd-rich-editor .import-input-label {
1463
- display: block;
1464
- margin-bottom: 8px;
1465
- font-size: 14px;
1466
- font-weight: 500;
1467
- color: #374151;
1468
- }
1469
-
1470
- .yjd-rich-editor .import-type-select {
1471
- width: 100%;
1472
- padding: 10px 12px;
1473
- border: 1px solid #d1d5db;
1474
- border-radius: 6px;
1475
- font-size: 14px;
1476
- background: white;
1477
- color: #374151;
1478
- cursor: pointer;
1479
- box-sizing: border-box;
1480
- }
1481
-
1482
- .yjd-rich-editor .import-type-select:focus {
1483
- outline: none;
1484
- border-color: #3b82f6;
1485
- box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);
1486
- }
1487
-
1488
- .yjd-rich-editor .import-file-input {
1489
- width: 100%;
1490
- padding: 10px 12px;
1491
- border: 1px solid #d1d5db;
1492
- border-radius: 6px;
1493
- font-size: 14px;
1494
- background: white;
1495
- color: #374151;
1496
- margin-bottom: 16px;
1497
- cursor: pointer;
1498
- box-sizing: border-box;
1499
- }
1500
-
1501
- .yjd-rich-editor .import-file-input:disabled {
1502
- background-color: #f3f4f6;
1503
- cursor: not-allowed;
1504
- opacity: 0.5;
1505
- }
1506
-
1507
- .yjd-rich-editor .import-file-input:focus {
1508
- outline: none;
1509
- border-color: #3b82f6;
1510
- box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1);
1511
- }
1512
-
1513
- .yjd-rich-editor .import-file-info {
1514
- padding: 12px;
1515
- background-color: #f9fafb;
1516
- border: 1px solid #e5e7eb;
1517
- border-radius: 6px;
1518
- margin-bottom: 16px;
1519
- font-size: 14px;
1520
- color: #374151;
1521
- }
1522
-
1523
- .yjd-rich-editor .import-file-info div {
1524
- margin-bottom: 4px;
1525
- }
1526
-
1527
- .yjd-rich-editor .import-file-info div:last-child {
1528
- margin-bottom: 0;
1529
- }
1530
-
1531
- .yjd-rich-editor .import-button-container {
1532
- display: flex;
1533
- justify-content: flex-end;
1534
- gap: 10px;
1535
- margin-top: 20px;
1536
- }
1537
-
1538
- .yjd-rich-editor .import-button {
1539
- padding: 10px 20px;
1540
- border: 1px solid #d1d5db;
1541
- border-radius: 6px;
1542
- font-size: 14px;
1543
- font-weight: 500;
1544
- cursor: pointer;
1545
- transition: all 0.2s;
1546
- }
1547
-
1548
- .yjd-rich-editor .import-button:hover {
1549
- background-color: #f3f4f6;
1550
- }
1551
-
1552
- .yjd-rich-editor .import-button.import-button-main {
1553
- background-color: #3b82f6;
1554
- color: white;
1555
- border-color: #3b82f6;
1556
- }
1557
-
1558
- .yjd-rich-editor .import-button.import-button-main:hover {
1559
- background-color: #2563eb;
1560
- }
1561
-
1562
- .yjd-rich-editor .import-button.import-button-main:disabled {
1563
- background-color: #9ca3af;
1564
- border-color: #9ca3af;
1565
- cursor: not-allowed;
1566
- }
1567
-
1568
- .yjd-rich-editor .import-button.cancel-button {
1569
- background-color: white;
1570
- color: #6b7280;
1571
- }
1572
-
1573
- .yjd-rich-editor .import-button.cancel-button:hover {
1574
- background-color: #f9fafb;
1575
- }
1576
-
1577
- /* === IMPORTED CONTENT === */
1578
- .yjd-rich-editor .imported-content {
1579
- margin: 16px 0;
1580
- padding: 16px;
1581
- border: 1px dashed #d1d5db;
1582
- border-radius: 6px;
1583
- background-color: #f9fafb;
1584
- }
1585
-
1586
- .yjd-rich-editor .imported-content.html-content {
1587
- border-color: #3b82f6;
1588
- background-color: #eff6ff;
1589
- }
1590
-
1591
- .yjd-rich-editor .imported-content.excel-content {
1592
- border-color: #10b981;
1593
- background-color: #f0fdf4;
1594
- }
1595
-
1596
- .yjd-rich-editor .imported-content.text-content {
1597
- border-color: #f59e0b;
1598
- background-color: #fffbeb;
1599
- }
1600
-
1601
- .yjd-rich-editor .imported-table {
1602
- width: 100%;
1603
- border-collapse: collapse;
1604
- font-size: 14px;
1605
- background: white;
1606
- border-radius: 4px;
1607
- overflow: hidden;
1608
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1609
- }
1610
-
1611
- .yjd-rich-editor .imported-table th,
1612
- .yjd-rich-editor .imported-table td {
1613
- padding: 12px;
1614
- text-align: left;
1615
- border-bottom: 1px solid #e5e7eb;
1616
- }
1617
-
1618
- .yjd-rich-editor .imported-table th {
1619
- background-color: #f3f4f6;
1620
- font-weight: 600;
1621
- color: #374151;
1622
- }
1623
-
1624
- .yjd-rich-editor .imported-table tr:hover {
1625
- background-color: #f9fafb;
1626
- }
1627
-
1628
- .yjd-rich-editor .imported-content p {
1629
- margin: 8px 0;
1630
- line-height: 1.6;
1631
- color: #374151;
1632
- }
1633
-
1634
- .yjd-rich-editor .imported-content p:first-child {
1635
- margin-top: 0;
1636
- }
1637
-
1638
- .yjd-rich-editor .imported-content p:last-child {
1639
- margin-bottom: 0;
1640
- }
1641
-
1642
- /* === CODE VIEW === */
1643
- .yjd-rich-editor .code-view-textarea {
1644
- width: 100%;
1645
- height: 500px;
1646
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1647
- font-size: 14px;
1648
- line-height: 1.5;
1649
- padding: 16px;
1650
- background-color: #f8fafc;
1651
- color: #374151;
1652
- resize: vertical;
1653
- border: none;
1654
- outline: none;
1655
- white-space: pre;
1656
- word-wrap: break-word;
1657
- tab-size: 2;
1658
- box-sizing: border-box;
1659
- }
1660
-
1661
- /* Responsive adjustments */
1662
- @media (max-width: 768px) {
1663
- .yjd-rich-editor .code-view-textarea {
1664
- font-size: 13px;
1665
- padding: 12px;
1666
- }
1667
-
1668
- .yjd-rich-editor.code-view-active::after {
1669
- top: 5px;
1670
- right: 5px;
1671
- font-size: 11px;
1672
- padding: 3px 6px;
1673
- }
1674
- }
1675
-
1676
- /* === RESIZE HANDLES === */
1677
- .yjd-rich-editor .resize-handles-container {
1678
- position: absolute;
1679
- pointer-events: none;
1680
- z-index: 997; /* Lower than all toolbar elements */
1681
- display: none;
1682
- }
1683
-
1684
- .yjd-rich-editor .resize-handles-container.active {
1685
- display: block;
1686
- }
1687
-
1688
- .yjd-rich-editor .resize-handle {
1689
- position: absolute;
1690
- width: 8px;
1691
- height: 8px;
1692
- background-color: #3b82f6;
1693
- border: 1px solid #fff;
1694
- border-radius: 50%;
1695
- pointer-events: auto;
1696
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1697
- transition: all 0.2s ease;
1698
- z-index: 999; /* Higher than container but lower than toolbars */
1699
- }
1700
-
1701
- .yjd-rich-editor .resize-handle:hover {
1702
- background-color: #2563eb;
1703
- transform: scale(1.2);
1704
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
1705
- }
1706
-
1707
- .yjd-rich-editor .resize-handle-nw {
1708
- top: -4px;
1709
- left: -4px;
1710
- cursor: nw-resize;
1711
- }
1712
-
1713
- .yjd-rich-editor .resize-handle-ne {
1714
- top: -4px;
1715
- right: -4px;
1716
- cursor: ne-resize;
1717
- }
1718
-
1719
- .yjd-rich-editor .resize-handle-sw {
1720
- bottom: -4px;
1721
- left: -4px;
1722
- cursor: sw-resize;
1723
- }
1724
-
1725
- .yjd-rich-editor .resize-handle-se {
1726
- bottom: -4px;
1727
- right: -4px;
1728
- cursor: se-resize;
1729
- }
1730
-
1731
- /* Resizing state styles */
1732
- .yjd-rich-editor .inserted-image.resizing,
1733
- .yjd-rich-editor .inserted-video.resizing,
1734
- .yjd-rich-editor .rich-editor-table.resizing {
1735
- outline: 2px solid #3b82f6;
1736
- outline-offset: 2px;
1737
- opacity: 0.8;
1738
- }
1739
-
1740
- .yjd-rich-editor .inserted-image.resizing {
1741
- -webkit-user-select: none;
1742
- user-select: none;
1743
- pointer-events: none;
1744
- }
1745
-
1746
- .yjd-rich-editor .inserted-video.resizing {
1747
- -webkit-user-select: none;
1748
- user-select: none;
1749
- pointer-events: none;
1750
- }
1751
-
1752
- .yjd-rich-editor .rich-editor-table.resizing {
1753
- -webkit-user-select: none;
1754
- user-select: none;
1755
- }
1756
-
1757
- .yjd-rich-editor .rich-editor-table.resizing td {
1758
- pointer-events: none;
1759
- }
1760
-
1761
- /* Selection indicator for resizable elements */
1762
- .yjd-rich-editor .inserted-image:hover,
1763
- .yjd-rich-editor .inserted-video:hover,
1764
- .yjd-rich-editor .rich-editor-table:hover {
1765
- outline: 1px solid #3b82f6;
1766
- outline-offset: 1px;
1767
- cursor: pointer;
1768
- }
1769
-
1770
-
1771
-
1772
- /* Responsive resize handles */
1773
- @media (max-width: 768px) {
1774
- .yjd-rich-editor .resize-handle {
1775
- width: 12px;
1776
- height: 12px;
1777
- }
1778
-
1779
- .yjd-rich-editor .resize-handle-nw {
1780
- top: -6px;
1781
- left: -6px;
1782
- }
1783
-
1784
- .yjd-rich-editor .resize-handle-ne {
1785
- top: -6px;
1786
- right: -6px;
1787
- }
1788
-
1789
- .yjd-rich-editor .resize-handle-sw {
1790
- bottom: -6px;
1791
- left: -6px;
1792
- }
1793
-
1794
- .yjd-rich-editor .resize-handle-se {
1795
- bottom: -6px;
1796
- right: -6px;
1797
- }
1798
- }
1799
-
1800
-
1801
-
1802
- /* === RESPONSIVE DESIGN === */
1803
- /* Mobile and Tablet Styles - Screens smaller than 850px */
1804
- @media (max-width: 849px) {
1805
- /* Editor wrapper adjustments */
1806
- .yjd-rich-editor {
1807
- margin: 0;
1808
- width: 100% !important;
1809
- max-width: 100% !important;
1810
- }
1811
- .yjd-rich-editor .link-popup,
1812
- .yjd-rich-editor .image-popup,
1813
- .yjd-rich-editor .video-popup,
1814
- .yjd-rich-editor .tag-popup {
1815
- width: unset !important;
1816
- }
1817
- /* Editor area adjustments */
1818
- .yjd-rich-editor .rich-editor-area {
1819
- padding: 12px;
1820
- min-height: 150px;
1821
- font-size: 14px;
1822
- line-height: 1.4;
1823
- }
1824
-
1825
- /* Status bar adjustments */
1826
- .yjd-rich-editor .rich-editor-statusbar {
1827
- padding: 6px 8px;
1828
- font-size: 11px;
1829
- flex-wrap: wrap;
1830
- gap: 8px;
1831
- }
1832
-
1833
-
1834
- /* Popup and dropdown adjustments */
1835
- .yjd-rich-editor .editor-popup,
1836
- .yjd-rich-editor .editor-dropdown {
1837
- position: fixed !important;
1838
- top: 50% !important;
1839
- left: 50% !important;
1840
- transform: translate(-50%, -50%) !important;
1841
- width: 90% !important;
1842
- max-width: 320px !important;
1843
- max-height: 80vh !important;
1844
- overflow-y: auto;
1845
- z-index: 10000;
1846
- }
1847
-
1848
- .yjd-rich-editor .editor-popup::before {
1849
- content: '';
1850
- position: fixed;
1851
- top: 0;
1852
- left: 0;
1853
- width: 100%;
1854
- height: 100%;
1855
- background: rgba(0, 0, 0, 0.5);
1856
- z-index: -1;
1857
- }
1858
-
1859
- /* Color picker adjustments */
1860
- .yjd-rich-editor .color-picker {
1861
- width: 100% !important;
1862
- max-width: 280px !important;
1863
- }
1864
-
1865
- .yjd-rich-editor .color-picker-grid {
1866
- grid-template-columns: repeat(6, 1fr) !important;
1867
- gap: 8px !important;
1868
- }
1869
-
1870
- .yjd-rich-editor .color-picker-item {
1871
- width: 32px !important;
1872
- height: 32px !important;
1873
- }
1874
-
1875
- /* Table popup adjustments */
1876
- .yjd-rich-editor .table-popup {
1877
- max-width: 300px !important;
1878
- }
1879
-
1880
- .yjd-rich-editor .table-size-grid {
1881
- grid-template-columns: repeat(8, 1fr) !important;
1882
- gap: 2px !important;
1883
- }
1884
-
1885
- .yjd-rich-editor .table-size-cell {
1886
- width: 24px !important;
1887
- height: 24px !important;
1888
- }
1889
-
1890
- /* List picker adjustments */
1891
- .yjd-rich-editor .list-picker {
1892
- width: 100% !important;
1893
- max-width: 250px !important;
1894
- }
1895
-
1896
- .yjd-rich-editor .list-picker-btn {
1897
- padding: 12px !important;
1898
- font-size: 14px !important;
1899
- }
1900
-
1901
- /* Text align picker adjustments */
1902
- .yjd-rich-editor .text-align-picker {
1903
- width: 100% !important;
1904
- max-width: 200px !important;
1905
- }
1906
-
1907
- /* Media popups adjustments */
1908
- .yjd-rich-editor .image-popup,
1909
- .yjd-rich-editor .video-popup,
1910
- .yjd-rich-editor .link-popup,
1911
- .yjd-rich-editor .import-popup {
1912
- width: 90% !important;
1913
- max-width: 350px !important;
1914
- }
1915
-
1916
- .yjd-rich-editor .media-upload-area {
1917
- min-height: 100px !important;
1918
- padding: 20px !important;
1919
- }
1920
-
1921
- /* Tag popup */
1922
- .yjd-rich-editor .tag-popup {
1923
- width: 90% !important;
1924
- max-width: 320px !important;
1925
- }
1926
-
1927
-
1928
-
1929
- /* Emoji picker adjustments */
1930
- .yjd-rich-editor .emoji-picker {
1931
- width: 100% !important;
1932
- max-width: 300px !important;
1933
- max-height: 350px !important;
1934
- }
1935
-
1936
- .yjd-rich-editor .emoji-grid {
1937
- grid-template-columns: repeat(8, 1fr) !important;
1938
- gap: 4px !important;
1939
- }
1940
-
1941
- .yjd-rich-editor .emoji-item {
1942
- width: 32px !important;
1943
- height: 32px !important;
1944
- font-size: 18px !important;
1945
- }
1946
-
1947
- /* Code view adjustments */
1948
- .yjd-rich-editor .code-view-textarea {
1949
- font-size: 12px !important;
1950
- padding: 8px !important;
1951
- line-height: 1.3 !important;
1952
- }
1953
-
1954
- /* Content formatting adjustments */
1955
- .yjd-rich-editor .rich-editor-area h1 {
1956
- font-size: 1.5em !important;
1957
- margin: 0.5em 0 !important;
1958
- }
1959
-
1960
- .yjd-rich-editor .rich-editor-area h2 {
1961
- font-size: 1.3em !important;
1962
- margin: 0.5em 0 !important;
1963
- }
1964
-
1965
- .yjd-rich-editor .rich-editor-area h3 {
1966
- font-size: 1.1em !important;
1967
- margin: 0.5em 0 !important;
1968
- }
1969
-
1970
- .yjd-rich-editor .rich-editor-area p {
1971
- margin: 0.8em 0 !important;
1972
- }
1973
-
1974
- .yjd-rich-editor .rich-editor-area ul,
1975
- .yjd-rich-editor .rich-editor-area ol {
1976
- padding-left: 20px !important;
1977
- margin: 0.8em 0 !important;
1978
- }
1979
-
1980
- .yjd-rich-editor .rich-editor-area blockquote {
1981
- padding-left: 12px !important;
1982
- margin: 0.8em 0 !important;
1983
- font-size: 14px !important;
1984
- }
1985
-
1986
- .yjd-rich-editor .rich-editor-area table {
1987
- font-size: 13px !important;
1988
- overflow-x: auto !important;
1989
- display: block !important;
1990
- white-space: nowrap !important;
1991
- }
1992
-
1993
- .yjd-rich-editor .rich-editor-area th,
1994
- .yjd-rich-editor .rich-editor-area td {
1995
- padding: 6px 8px !important;
1996
- min-width: 60px !important;
1997
- }
1998
-
1999
-
2000
- }
2001
-
2002
- @media (max-width: 290px) {
2003
- .yjd-rich-editor .emoji-picker {
2004
- max-width: calc(100vw - 20px) !important;
2005
- }
2006
-
2007
- .yjd-rich-editor .emoji-grid {
2008
- grid-template-columns: repeat(auto-fit, minmax(30px, 1fr)) !important;
2009
- }
2010
- }
2011
-
2012
- /* Print styles */
2013
- @media print {
2014
- .yjd-rich-editor .rich-editor-toolbar-1,
2015
- .yjd-rich-editor .rich-editor-toolbar-2,
2016
- .yjd-rich-editor .rich-editor-statusbar {
2017
- display: none !important;
2018
- }
2019
-
2020
- .yjd-rich-editor {
2021
- border: none !important;
2022
- box-shadow: none !important;
2023
- }
2024
-
2025
- .yjd-rich-editor .rich-editor-area {
2026
- padding: 0 !important;
2027
- background: white !important;
2028
- color: black !important;
2029
- }
2030
- }
2031
-
2032
- /* === POPUP CONTAINER === */
2033
- .yjd-rich-editor .rich-editor-popup-container {
2034
- position: absolute;
2035
- top: 0;
2036
- left: 0;
2037
- width: 100%;
2038
- height: 100%;
2039
- pointer-events: none;
2040
- z-index: 1005;
2041
- overflow: visible;
2042
- max-height: 90%;
2043
- /* không vượt quá chiều cao editor */
2044
- overflow-y: auto;
2045
- /* chỉ cuộn khi nội dung vượt quá */
2046
- }
2047
-
2048
- /* Allow interaction with interactive elements inside popups */
2049
- .yjd-rich-editor .emoji-picker-popup button,
2050
- .yjd-rich-editor .color-picker-popup button,
2051
- .yjd-rich-editor .custom-select-popup button,
2052
- .yjd-rich-editor .heading-select-popup button,
2053
- .yjd-rich-editor .capitalization-select-popup button,
2054
- .yjd-rich-editor .font-family-select-popup button,
2055
- .yjd-rich-editor .line-height-select-popup button,
2056
- .yjd-rich-editor .text-size-select-popup button,
2057
- .yjd-rich-editor .link-popup button,
2058
- .yjd-rich-editor .link-popup input,
2059
- .yjd-rich-editor .link-popup select,
2060
- .yjd-rich-editor .image-popup button,
2061
- .yjd-rich-editor .image-popup input,
2062
- .yjd-rich-editor .image-popup select,
2063
- .yjd-rich-editor .video-popup button,
2064
- .yjd-rich-editor .video-popup input,
2065
- .yjd-rich-editor .video-popup select,
2066
- .yjd-rich-editor .tag-popup button,
2067
- .yjd-rich-editor .tag-popup input,
2068
- .yjd-rich-editor .tag-popup select,
2069
- .yjd-rich-editor .table-popup button,
2070
- .yjd-rich-editor .table-popup input,
2071
- .yjd-rich-editor .text-align-picker-popup button,
2072
- .yjd-rich-editor .list-picker-popup button,
2073
- .yjd-rich-editor .import-popup button,
2074
- .yjd-rich-editor .import-popup input,
2075
- .yjd-rich-editor .import-popup select,
2076
- .yjd-rich-editor .yjd-button-confirm,
2077
- .yjd-rich-editor .yjd-button-cancel,
2078
- .yjd-rich-editor .yjd-input,
2079
- .yjd-rich-editor .yjd-select-input,
2080
- .yjd-rich-editor .yjd-custom-upload-button,
2081
- .yjd-rich-editor .yjd-suggestion-button,
2082
- .yjd-rich-editor .list-button,
2083
- .yjd-rich-editor .table-toolbar-btn,
2084
- .yjd-rich-editor .custom-color-input,
2085
- .yjd-rich-editor .import-type-select,
2086
- .yjd-rich-editor .custom-tag,
2087
- .yjd-rich-editor .image-input-hidden,
2088
- .yjd-rich-editor .video-input-hidden,
2089
- .yjd-rich-editor .tag-type-select,
2090
- .yjd-rich-editor .tag-value-input,
2091
- .yjd-rich-editor .import-input,
2092
- .yjd-rich-editor .import-file-input,
2093
- .yjd-rich-editor .import-url-input,
2094
- .yjd-rich-editor .import-text-input,
2095
- .yjd-rich-editor .import-html-input,
2096
- .yjd-rich-editor .import-json-input,
2097
- .yjd-rich-editor .import-markdown-input,
2098
- .yjd-rich-editor .import-csv-input,
2099
- .yjd-rich-editor .import-xml-input,
2100
- .yjd-rich-editor .import-yaml-input,
2101
- .yjd-rich-editor .import-toml-input {
2102
- pointer-events: auto !important;
2103
- }
2104
-
2105
- .yjd-rich-editor .rich-editor-popup-container > * {
2106
- pointer-events: auto;
2107
- }
2108
-
2109
- /* Ensure popups in container have proper positioning */
2110
- .yjd-rich-editor .rich-editor-popup-container .link-popup,
2111
- .yjd-rich-editor .rich-editor-popup-container .color-picker-popup,
2112
- .yjd-rich-editor .rich-editor-popup-container .emoji-picker-popup,
2113
- .yjd-rich-editor .rich-editor-popup-container .image-popup,
2114
- .yjd-rich-editor .rich-editor-popup-container .video-popup,
2115
- .yjd-rich-editor .rich-editor-popup-container .table-popup,
2116
- .yjd-rich-editor .rich-editor-popup-container .tag-popup,
2117
- .yjd-rich-editor .rich-editor-popup-container .import-popup,
2118
- .yjd-rich-editor .rich-editor-popup-container .text-align-picker-popup,
2119
- .yjd-rich-editor .rich-editor-popup-container .list-picker-popup,
2120
- .yjd-rich-editor .rich-editor-popup-container .custom-select-popup {
2121
- position: absolute !important;
2122
- z-index: 1001 !important;
2123
- }