@oix1987/yjd 1.0.2 → 1.0.3

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 (2) hide show
  1. package/dist/styles.css +2123 -0
  2. package/package.json +3 -2
@@ -0,0 +1,2123 @@
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
+ }