@thangph2146/nextjs-editor 1.0.4 → 1.0.5
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.
- package/README.md +48 -1
- package/dist/styles.css +5 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ Trong `app/layout.tsx` hoặc `_app.tsx`:
|
|
|
26
26
|
import "@thangph2146/nextjs-editor/styles.css"
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
**Lưu ý:** Chỉ cần import file trên. Bạn **không** cần thêm `@source` hay cấu hình nào trong `globals.css`. Style editor được đóng gói sẵn
|
|
29
|
+
**Lưu ý:** Chỉ cần import file trên. Bạn **không** cần thêm `@source` hay cấu hình nào trong `globals.css`. Style editor được đóng gói sẵn, scope trong `#editor-x` và nằm trong layer `nextjs-editor` — nếu app dùng CSS layer cho SCSS/global (xem bên dưới), style editor sẽ không bị ghi đè.
|
|
30
30
|
|
|
31
31
|
### 2. Dùng component Editor (Client Component)
|
|
32
32
|
|
|
@@ -64,6 +64,53 @@ export function MyEditor() {
|
|
|
64
64
|
- **Ảnh**: Mặc định dialog chèn ảnh có tab **URL** và **File**. Để tab **Thư viện** hiển thị ảnh từ API của project, xem [Cấu hình API thư viện ảnh](#cấu-hình-api-thư-viện-ảnh) bên dưới.
|
|
65
65
|
- **Next.js**: Package dùng `next/image` và `next/dynamic` khi chạy trong Next.js; cần cài `next` trong project.
|
|
66
66
|
|
|
67
|
+
## Tránh SCSS/CSS của app ghi đè editor
|
|
68
|
+
|
|
69
|
+
Style editor được bọc trong **`@layer nextjs-editor`**. Trong CSS, rule **không nằm trong layer** (unlayered) có độ ưu tiên cao hơn rule trong layer, nên nếu SCSS/global của app là unlayered thì có thể ghi đè list, spacing, typography… bên trong `#editor-x`.
|
|
70
|
+
|
|
71
|
+
**Cách làm:** Đưa toàn bộ SCSS/global của app vào một layer (ví dụ `app`) và khai báo thứ tự layer sao cho `nextjs-editor` đứng **sau** — khi đó style editor sẽ thắng khi specificity tương đương.
|
|
72
|
+
|
|
73
|
+
### Bước 1: Khai báo thứ tự layer trong app
|
|
74
|
+
|
|
75
|
+
Trong `globals.css` (hoặc file CSS chính), **dòng đầu tiên** khai báo thứ tự layer, thêm `app` và `nextjs-editor` (layer xuất hiện sau có ưu tiên cao hơn):
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
@layer legacy, base, components, utilities, app, nextjs-editor;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Bước 2: Đưa SCSS/global vào layer `app`
|
|
82
|
+
|
|
83
|
+
Mọi style global/SCSS không nằm trong Tailwind (base, typography, components từ SCSS…) cần nằm trong `@layer app`.
|
|
84
|
+
|
|
85
|
+
**Cách A — Bọc toàn bộ file SCSS chính:**
|
|
86
|
+
|
|
87
|
+
Trong file SCSS chính (ví dụ `src/styles/main.scss`), bọc toàn bộ nội dung trong `@layer app`:
|
|
88
|
+
|
|
89
|
+
```scss
|
|
90
|
+
@layer app {
|
|
91
|
+
@use "abstracts/variables" as *;
|
|
92
|
+
@use "abstracts/mixins" as *;
|
|
93
|
+
@use "base/base";
|
|
94
|
+
@use "base/typography";
|
|
95
|
+
@use "components/header";
|
|
96
|
+
/* ... các @use khác ... */
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Cách B — Import SCSS từ một file CSS có layer:**
|
|
101
|
+
|
|
102
|
+
Tạo file `src/app/globals-app.css`:
|
|
103
|
+
|
|
104
|
+
```css
|
|
105
|
+
@layer app {
|
|
106
|
+
@import "../styles/main.scss";
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Rồi trong `layout.tsx` import sau `globals.css`: `import "./globals-app.css"`.
|
|
111
|
+
|
|
112
|
+
Sau khi cấu hình, style trong layer `nextjs-editor` (đã load khi import `@thangph2146/nextjs-editor/styles.css`) sẽ có ưu tiên cao hơn layer `app`, nên cấu trúc Tailwind và theme của editor trong `#editor-x` không còn bị SCSS của app ghi đè.
|
|
113
|
+
|
|
67
114
|
## Cấu hình API thư viện ảnh
|
|
68
115
|
|
|
69
116
|
Tab **Thư viện** trong dialog chèn ảnh cần dữ liệu từ API/uploads của project. Bạn cấu hình bằng cách **alias** module uploads-hooks của package sang file hooks trong project.
|
package/dist/styles.css
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/* nextjs-editor
|
|
1
|
+
/* Dùng @layer nextjs-editor để app có thể đặt SCSS/CSS trong layer khác và tránh ghi đè editor. Xem README. */
|
|
2
|
+
@layer nextjs-editor {
|
|
3
|
+
/* nextjs-editor: theme + scoped utilities */
|
|
2
4
|
|
|
3
5
|
.EditorTheme__code {
|
|
4
6
|
background-color: transparent;
|
|
@@ -4274,3 +4276,5 @@ div.border.border-dashed .editor-image img {
|
|
|
4274
4276
|
}
|
|
4275
4277
|
}
|
|
4276
4278
|
}
|
|
4279
|
+
|
|
4280
|
+
}
|