@comitor/ui 1.11.0 → 2.1.0

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 (176) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +23 -7
  3. package/dist/components/ui/action-bar-constants.d.ts +31 -0
  4. package/dist/components/ui/action-bar-constants.js +9 -0
  5. package/dist/components/ui/action-bar-constants.js.map +1 -0
  6. package/dist/components/ui/action-bar.d.ts +67 -0
  7. package/dist/components/ui/action-bar.js +522 -0
  8. package/dist/components/ui/action-bar.js.map +1 -0
  9. package/dist/components/ui/badge-overflow.d.ts +30 -0
  10. package/dist/components/ui/badge-overflow.js +179 -0
  11. package/dist/components/ui/badge-overflow.js.map +1 -0
  12. package/dist/components/ui/banner.d.ts +79 -0
  13. package/dist/components/ui/banner.js +518 -0
  14. package/dist/components/ui/banner.js.map +1 -0
  15. package/dist/components/ui/circular-progress.d.ts +50 -0
  16. package/dist/components/ui/circular-progress.js +266 -0
  17. package/dist/components/ui/circular-progress.js.map +1 -0
  18. package/dist/components/ui/cropper-constants.d.ts +34 -0
  19. package/dist/components/ui/cropper-constants.js +10 -0
  20. package/dist/components/ui/cropper-constants.js.map +1 -0
  21. package/dist/components/ui/cropper.d.ts +106 -0
  22. package/dist/components/ui/cropper.js +1269 -0
  23. package/dist/components/ui/cropper.js.map +1 -0
  24. package/dist/components/ui/drawer.d.ts +1 -1
  25. package/dist/components/ui/drawer.js +2 -2
  26. package/dist/components/ui/drawer.js.map +1 -1
  27. package/dist/components/ui/kanban-constants.d.ts +61 -0
  28. package/dist/components/ui/kanban-constants.js +21 -0
  29. package/dist/components/ui/kanban-constants.js.map +1 -0
  30. package/dist/components/ui/kanban.d.ts +72 -0
  31. package/dist/components/ui/kanban.js +787 -0
  32. package/dist/components/ui/kanban.js.map +1 -0
  33. package/dist/components/ui/key-value-constants.d.ts +33 -0
  34. package/dist/components/ui/key-value-constants.js +11 -0
  35. package/dist/components/ui/key-value-constants.js.map +1 -0
  36. package/dist/components/ui/key-value.d.ts +96 -0
  37. package/dist/components/ui/key-value.js +641 -0
  38. package/dist/components/ui/key-value.js.map +1 -0
  39. package/dist/components/ui/mask-input-constants.d.ts +99 -0
  40. package/dist/components/ui/mask-input-constants.js +601 -0
  41. package/dist/components/ui/mask-input-constants.js.map +1 -0
  42. package/dist/components/ui/mask-input.d.ts +36 -0
  43. package/dist/components/ui/mask-input.js +558 -0
  44. package/dist/components/ui/mask-input.js.map +1 -0
  45. package/dist/components/ui/mention.d.ts +31 -0
  46. package/dist/components/ui/mention.js +128 -0
  47. package/dist/components/ui/mention.js.map +1 -0
  48. package/dist/components/ui/phone-input-constants.d.ts +54 -0
  49. package/dist/components/ui/phone-input-constants.js +9 -0
  50. package/dist/components/ui/phone-input-constants.js.map +1 -0
  51. package/dist/components/ui/phone-input.d.ts +85 -0
  52. package/dist/components/ui/phone-input.js +743 -0
  53. package/dist/components/ui/phone-input.js.map +1 -0
  54. package/dist/components/ui/rating.d.ts +56 -0
  55. package/dist/components/ui/rating.js +646 -0
  56. package/dist/components/ui/rating.js.map +1 -0
  57. package/dist/components/ui/responsive-dialog.d.ts +35 -0
  58. package/dist/components/ui/responsive-dialog.js +193 -0
  59. package/dist/components/ui/responsive-dialog.js.map +1 -0
  60. package/dist/components/ui/scroll-spy.d.ts +42 -0
  61. package/dist/components/ui/scroll-spy.js +334 -0
  62. package/dist/components/ui/scroll-spy.js.map +1 -0
  63. package/dist/components/ui/stepper-constants.d.ts +29 -0
  64. package/dist/components/ui/stepper-constants.js +9 -0
  65. package/dist/components/ui/stepper-constants.js.map +1 -0
  66. package/dist/components/ui/stepper.d.ts +80 -0
  67. package/dist/components/ui/stepper.js +902 -0
  68. package/dist/components/ui/stepper.js.map +1 -0
  69. package/dist/components/ui/tags-input.d.ts +41 -0
  70. package/dist/components/ui/tags-input.js +127 -0
  71. package/dist/components/ui/tags-input.js.map +1 -0
  72. package/dist/components/ui/time-picker-constants.d.ts +48 -0
  73. package/dist/components/ui/time-picker-constants.js +14 -0
  74. package/dist/components/ui/time-picker-constants.js.map +1 -0
  75. package/dist/components/ui/time-picker.d.ts +115 -0
  76. package/dist/components/ui/time-picker.js +1620 -0
  77. package/dist/components/ui/time-picker.js.map +1 -0
  78. package/dist/components/ui/timeline.d.ts +32 -0
  79. package/dist/components/ui/timeline.js +559 -0
  80. package/dist/components/ui/timeline.js.map +1 -0
  81. package/dist/components/ui/tour-constants.d.ts +39 -0
  82. package/dist/components/ui/tour-constants.js +12 -0
  83. package/dist/components/ui/tour-constants.js.map +1 -0
  84. package/dist/components/ui/tour.d.ts +124 -0
  85. package/dist/components/ui/tour.js +1207 -0
  86. package/dist/components/ui/tour.js.map +1 -0
  87. package/dist/data-grid/data-grid-cell-variants.js +10 -6
  88. package/dist/data-grid/data-grid-cell-variants.js.map +1 -1
  89. package/dist/data-grid/data-grid-cell-wrapper.js +1 -1
  90. package/dist/data-grid/data-grid-cell-wrapper.js.map +1 -1
  91. package/dist/data-grid/data-grid-column-header.js +4 -2
  92. package/dist/data-grid/data-grid-column-header.js.map +1 -1
  93. package/dist/data-grid/data-grid-context-menu.js +5 -4
  94. package/dist/data-grid/data-grid-context-menu.js.map +1 -1
  95. package/dist/data-grid/data-grid-filter-menu.d.ts +12 -1
  96. package/dist/data-grid/data-grid-filter-menu.js +28 -17
  97. package/dist/data-grid/data-grid-filter-menu.js.map +1 -1
  98. package/dist/data-grid/data-grid-keyboard-shortcuts.d.ts +12 -1
  99. package/dist/data-grid/data-grid-keyboard-shortcuts.js +7 -5
  100. package/dist/data-grid/data-grid-keyboard-shortcuts.js.map +1 -1
  101. package/dist/data-grid/data-grid-locale.d.ts +24 -0
  102. package/dist/data-grid/data-grid-locale.js +25 -0
  103. package/dist/data-grid/data-grid-locale.js.map +1 -0
  104. package/dist/data-grid/data-grid-paste-dialog.js +3 -2
  105. package/dist/data-grid/data-grid-paste-dialog.js.map +1 -1
  106. package/dist/data-grid/data-grid-row-height-menu.d.ts +11 -1
  107. package/dist/data-grid/data-grid-row-height-menu.js +25 -28
  108. package/dist/data-grid/data-grid-row-height-menu.js.map +1 -1
  109. package/dist/data-grid/data-grid-row.js +1 -1
  110. package/dist/data-grid/data-grid-row.js.map +1 -1
  111. package/dist/data-grid/data-grid-search.js +6 -5
  112. package/dist/data-grid/data-grid-search.js.map +1 -1
  113. package/dist/data-grid/data-grid-select-column.js +3 -1
  114. package/dist/data-grid/data-grid-select-column.js.map +1 -1
  115. package/dist/data-grid/data-grid-sort-menu.d.ts +12 -1
  116. package/dist/data-grid/data-grid-sort-menu.js +25 -13
  117. package/dist/data-grid/data-grid-sort-menu.js.map +1 -1
  118. package/dist/data-grid/data-grid-view-menu.d.ts +12 -1
  119. package/dist/data-grid/data-grid-view-menu.js +12 -4
  120. package/dist/data-grid/data-grid-view-menu.js.map +1 -1
  121. package/dist/data-grid/data-grid.d.ts +14 -2
  122. package/dist/data-grid/data-grid.js +7 -4
  123. package/dist/data-grid/data-grid.js.map +1 -1
  124. package/dist/data-grid/filters.d.ts +17 -21
  125. package/dist/data-grid/filters.js +73 -52
  126. package/dist/data-grid/filters.js.map +1 -1
  127. package/dist/data-grid/index.d.ts +4 -1
  128. package/dist/data-grid/index.js +20 -2
  129. package/dist/data-grid/index.js.map +1 -1
  130. package/dist/data-grid/messages-en.d.ts +294 -0
  131. package/dist/data-grid/messages-en.js +279 -0
  132. package/dist/data-grid/messages-en.js.map +1 -0
  133. package/dist/data-grid/messages-vi.d.ts +12 -0
  134. package/dist/data-grid/messages-vi.js +279 -0
  135. package/dist/data-grid/messages-vi.js.map +1 -0
  136. package/dist/data-grid/messages.d.ts +549 -262
  137. package/dist/data-grid/messages.js +16 -275
  138. package/dist/data-grid/messages.js.map +1 -1
  139. package/dist/data-grid/sortable.js +1 -1
  140. package/dist/data-grid/sortable.js.map +1 -1
  141. package/dist/data-grid/use-data-grid-undo-redo.d.ts +13 -1
  142. package/dist/data-grid/use-data-grid-undo-redo.js +13 -10
  143. package/dist/data-grid/use-data-grid-undo-redo.js.map +1 -1
  144. package/dist/data-grid/use-data-grid.d.ts +281 -1
  145. package/dist/data-grid/use-data-grid.js +24 -19
  146. package/dist/data-grid/use-data-grid.js.map +1 -1
  147. package/dist/data-grid/utils.d.ts +9 -1
  148. package/dist/data-grid/utils.js +3 -2
  149. package/dist/data-grid/utils.js.map +1 -1
  150. package/dist/index.d.ts +31 -0
  151. package/dist/index.js +42 -0
  152. package/dist/index.js.map +1 -1
  153. package/dist/lib/compose-refs.js.map +1 -0
  154. package/dist/lib/use-as-ref.js.map +1 -0
  155. package/dist/lib/use-is-mobile.d.ts +10 -0
  156. package/dist/lib/use-is-mobile.js +21 -0
  157. package/dist/lib/use-is-mobile.js.map +1 -0
  158. package/dist/lib/use-isomorphic-layout-effect.js.map +1 -0
  159. package/dist/lib/use-lazy-ref.js.map +1 -0
  160. package/dist/lib/visually-hidden-input.d.ts +12 -0
  161. package/dist/lib/visually-hidden-input.js +105 -0
  162. package/dist/lib/visually-hidden-input.js.map +1 -0
  163. package/package.json +5 -1
  164. package/styles.css +19 -0
  165. package/dist/data-grid/compose-refs.js.map +0 -1
  166. package/dist/data-grid/use-as-ref.js.map +0 -1
  167. package/dist/data-grid/use-isomorphic-layout-effect.js.map +0 -1
  168. package/dist/data-grid/use-lazy-ref.js.map +0 -1
  169. /package/dist/{data-grid → lib}/compose-refs.d.ts +0 -0
  170. /package/dist/{data-grid → lib}/compose-refs.js +0 -0
  171. /package/dist/{data-grid → lib}/use-as-ref.d.ts +0 -0
  172. /package/dist/{data-grid → lib}/use-as-ref.js +0 -0
  173. /package/dist/{data-grid → lib}/use-isomorphic-layout-effect.d.ts +0 -0
  174. /package/dist/{data-grid → lib}/use-isomorphic-layout-effect.js +0 -0
  175. /package/dist/{data-grid → lib}/use-lazy-ref.d.ts +0 -0
  176. /package/dist/{data-grid → lib}/use-lazy-ref.js +0 -0
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Chuỗi hiển thị tiếng ANH của DataGrid — và là BẢN GỐC định nghĩa hình dạng của
3
+ * {@link DataGridMessages}. Mọi bảng ngôn ngữ khác phải khớp đúng bộ khoá này; thiếu một khoá là
4
+ * typecheck đỏ ngay, không phải một chuỗi rỗng lặng lẽ xuất hiện trên giao diện.
5
+ *
6
+ * ⚠ **KHÔNG `as const`.** Có `as const` thì mỗi chuỗi thành một literal type riêng
7
+ * (`"Add row"` chứ không phải `string`), và bảng tiếng Việt vĩnh viễn không bao giờ gán được vào
8
+ * `DataGridMessages`. Kiểu rộng mới là thứ dùng được ở đây.
9
+ *
10
+ * ─ VÌ SAO TIẾNG ANH LÀ BẢN GỐC, TRONG KHI CẢ GÓI MẶC ĐỊNH TIẾNG VIỆT ─
11
+ * Đây là NGOẠI LỆ CÓ CHỦ Ý của `DataGrid`, quyết định ở `2.0.0` (xem CHANGELOG). Phần lớn chuỗi
12
+ * ở đây là chuỗi gốc của tablecn — repo mà lưới được port từ đó — nên giữ tiếng Anh làm bản gốc
13
+ * thì mỗi lần đối chiếu ngược với thượng nguồn là so trực tiếp, không phải dịch hai lượt.
14
+ *
15
+ * Quy ước: chuỗi cố định để nguyên; chuỗi có tham số viết thành HÀM (đừng nối chuỗi ở chỗ gọi —
16
+ * trật tự từ của tiếng Việt và tiếng Anh khác nhau). KHÔNG đặt JSX ở đây.
17
+ */
18
+ declare const messagesEn: {
19
+ grid: {
20
+ /** Nhãn mặc định của vùng `role="grid"` (ghi đè bằng prop `aria-label`) */
21
+ label: string;
22
+ addRow: string;
23
+ };
24
+ search: {
25
+ placeholder: string;
26
+ label: string;
27
+ prevMatch: string;
28
+ nextMatch: string;
29
+ close: string;
30
+ matchPosition: (index: number, total: number) => string;
31
+ noResults: string;
32
+ typeToSearch: string;
33
+ };
34
+ column: {
35
+ sortAsc: string;
36
+ sortDesc: string;
37
+ removeSort: string;
38
+ pinLeft: string;
39
+ unpinLeft: string;
40
+ pinRight: string;
41
+ unpinRight: string;
42
+ hide: string;
43
+ resize: (label: string) => string;
44
+ /** Tên kiểu dữ liệu của cột, hiện trong tooltip ở tiêu đề cột */
45
+ variant: {
46
+ shortText: string;
47
+ longText: string;
48
+ number: string;
49
+ url: string;
50
+ checkbox: string;
51
+ select: string;
52
+ multiSelect: string;
53
+ date: string;
54
+ file: string;
55
+ };
56
+ };
57
+ select: {
58
+ all: string;
59
+ row: string;
60
+ rowNumber: (rowNumber: number) => string;
61
+ };
62
+ contextMenu: {
63
+ copy: string;
64
+ cut: string;
65
+ clear: string;
66
+ deleteRows: string;
67
+ };
68
+ pasteDialog: {
69
+ title: string;
70
+ description: (rowsNeeded: number) => string;
71
+ expandTitle: string;
72
+ expandDescription: (rowsNeeded: number) => string;
73
+ keepTitle: string;
74
+ keepDescription: string;
75
+ cancel: string;
76
+ confirm: string;
77
+ };
78
+ rowHeight: {
79
+ label: string;
80
+ short: string;
81
+ medium: string;
82
+ tall: string;
83
+ extraTall: string;
84
+ };
85
+ view: {
86
+ trigger: string;
87
+ toggleColumns: string;
88
+ searchPlaceholder: string;
89
+ empty: string;
90
+ };
91
+ sort: {
92
+ trigger: string;
93
+ title: string;
94
+ emptyTitle: string;
95
+ description: string;
96
+ emptyDescription: string;
97
+ add: string;
98
+ reset: string;
99
+ remove: string;
100
+ drag: string;
101
+ fieldPlaceholder: string;
102
+ fieldEmpty: string;
103
+ asc: string;
104
+ desc: string;
105
+ };
106
+ filter: {
107
+ trigger: string;
108
+ title: string;
109
+ emptyTitle: string;
110
+ description: string;
111
+ emptyDescription: string;
112
+ add: string;
113
+ reset: string;
114
+ remove: string;
115
+ drag: string;
116
+ where: string;
117
+ and: string;
118
+ fieldPlaceholder: string;
119
+ fieldEmpty: string;
120
+ valuePlaceholder: string;
121
+ rangeStart: string;
122
+ rangeEnd: string;
123
+ pickDate: string;
124
+ pickRange: string;
125
+ optionPlaceholder: string;
126
+ optionEmpty: string;
127
+ selectedCount: (count: number) => string;
128
+ emptyValue: (label: string) => string;
129
+ /** Nhãn toán tử lọc — xem `filters.ts` để biết toán tử nào dùng cho kiểu ô nào */
130
+ operators: {
131
+ contains: string;
132
+ notContains: string;
133
+ equals: string;
134
+ notEquals: string;
135
+ startsWith: string;
136
+ endsWith: string;
137
+ isEmpty: string;
138
+ isNotEmpty: string;
139
+ lessThan: string;
140
+ lessThanOrEqual: string;
141
+ greaterThan: string;
142
+ greaterThanOrEqual: string;
143
+ isBetween: string;
144
+ dateEquals: string;
145
+ dateNotEquals: string;
146
+ before: string;
147
+ after: string;
148
+ onOrBefore: string;
149
+ onOrAfter: string;
150
+ is: string;
151
+ isNot: string;
152
+ isAnyOf: string;
153
+ isNoneOf: string;
154
+ isTrue: string;
155
+ isFalse: string;
156
+ };
157
+ };
158
+ cell: {
159
+ longTextPlaceholder: string;
160
+ optionSearchPlaceholder: string;
161
+ optionEmpty: string;
162
+ clearAll: string;
163
+ invalidUrlTitle: string;
164
+ invalidUrlDescription: string;
165
+ };
166
+ file: {
167
+ uploadLabel: string;
168
+ dropHere: string;
169
+ dragHere: string;
170
+ browse: string;
171
+ limits: (maxSize?: string, maxFiles?: number) => string;
172
+ count: (count: number) => string;
173
+ clearAll: string;
174
+ remove: string;
175
+ uploading: string;
176
+ deleting: string;
177
+ tooMany: (maxFiles: number) => string;
178
+ tooLarge: (maxSize: string) => string;
179
+ wrongType: string;
180
+ rejectedOne: (name: string) => string;
181
+ rejectedMany: (name: string, others: number) => string;
182
+ uploadFailed: (count: number) => string;
183
+ deleteFailed: (name: string) => string;
184
+ deleteFailedMany: string;
185
+ };
186
+ toast: {
187
+ cellsCopied: (count: number) => string;
188
+ copyFailed: string;
189
+ cellsCut: (count: number) => string;
190
+ cutFailed: string;
191
+ cellsPasted: (count: number) => string;
192
+ cellsPastedWithSkipped: (count: number, skipped: number) => string;
193
+ pasteSkipped: (skipped: number) => string;
194
+ pasteFailed: string;
195
+ cellsCleared: (count: number) => string;
196
+ rowsDeleted: (count: number) => string;
197
+ nothingToUndo: string;
198
+ nothingToRedo: string;
199
+ undone: (count: number) => string;
200
+ redone: (count: number) => string;
201
+ };
202
+ /** Giá trị văn bản khi dán boolean vào ô văn bản */
203
+ booleanText: {
204
+ checked: string;
205
+ unchecked: string;
206
+ };
207
+ shortcuts: {
208
+ trigger: string;
209
+ title: string;
210
+ description: string;
211
+ searchPlaceholder: string;
212
+ emptyTitle: string;
213
+ emptyDescription: string;
214
+ close: string;
215
+ groups: {
216
+ navigation: string;
217
+ selection: string;
218
+ editing: string;
219
+ search: string;
220
+ filtering: string;
221
+ sorting: string;
222
+ general: string;
223
+ };
224
+ keys: {
225
+ click: string;
226
+ doubleClick: string;
227
+ };
228
+ navigation: {
229
+ move: string;
230
+ nextCell: string;
231
+ prevCell: string;
232
+ firstColumn: string;
233
+ lastColumn: string;
234
+ firstRowSameColumn: string;
235
+ lastRowSameColumn: string;
236
+ firstColumnSameRow: string;
237
+ lastColumnSameRow: string;
238
+ firstCell: string;
239
+ lastCell: string;
240
+ pageUp: string;
241
+ pageDown: string;
242
+ scrollUp: string;
243
+ scrollDown: string;
244
+ scrollLeft: string;
245
+ scrollRight: string;
246
+ };
247
+ selection: {
248
+ extend: string;
249
+ toTop: string;
250
+ toBottom: string;
251
+ toFirstColumn: string;
252
+ toLastColumn: string;
253
+ all: string;
254
+ toggle: string;
255
+ range: string;
256
+ clear: string;
257
+ };
258
+ editing: {
259
+ start: string;
260
+ insertRow: string;
261
+ copy: string;
262
+ cut: string;
263
+ paste: string;
264
+ clear: string;
265
+ deleteRows: string;
266
+ undo: string;
267
+ redo: string;
268
+ };
269
+ search: {
270
+ open: string;
271
+ next: string;
272
+ prev: string;
273
+ close: string;
274
+ };
275
+ filtering: {
276
+ toggle: string;
277
+ remove: string;
278
+ };
279
+ sorting: {
280
+ toggle: string;
281
+ remove: string;
282
+ };
283
+ general: {
284
+ shortcuts: string;
285
+ };
286
+ };
287
+ };
288
+ /**
289
+ * Hình dạng của một bảng ngôn ngữ. Suy ra từ bảng tiếng Anh nên không có chỗ nào để hai thứ
290
+ * lệch nhau: thêm một khoá vào `messagesEn` là mọi bảng khác đỏ cho tới khi dịch xong.
291
+ */
292
+ type DataGridMessages = typeof messagesEn;
293
+
294
+ export { type DataGridMessages, messagesEn };
@@ -0,0 +1,279 @@
1
+ const messagesEn = {
2
+ grid: {
3
+ /** Nhãn mặc định của vùng `role="grid"` (ghi đè bằng prop `aria-label`) */
4
+ label: "Data grid",
5
+ addRow: "Add row"
6
+ },
7
+ search: {
8
+ placeholder: "Find in table...",
9
+ label: "Find in table",
10
+ prevMatch: "Previous match",
11
+ nextMatch: "Next match",
12
+ close: "Close search",
13
+ matchPosition: (index, total) => `${index} / ${total}`,
14
+ noResults: "No results",
15
+ typeToSearch: "Type to search"
16
+ },
17
+ column: {
18
+ sortAsc: "Sort asc",
19
+ sortDesc: "Sort desc",
20
+ removeSort: "Remove sort",
21
+ pinLeft: "Pin to left",
22
+ unpinLeft: "Unpin from left",
23
+ pinRight: "Pin to right",
24
+ unpinRight: "Unpin from right",
25
+ hide: "Hide column",
26
+ resize: (label) => `Resize ${label} column`,
27
+ /** Tên kiểu dữ liệu của cột, hiện trong tooltip ở tiêu đề cột */
28
+ variant: {
29
+ shortText: "Short text",
30
+ longText: "Long text",
31
+ number: "Number",
32
+ url: "URL",
33
+ checkbox: "Checkbox",
34
+ select: "Select",
35
+ multiSelect: "Multi-select",
36
+ date: "Date",
37
+ file: "File"
38
+ }
39
+ },
40
+ select: {
41
+ all: "Select all",
42
+ row: "Select row",
43
+ rowNumber: (rowNumber) => `Select row ${rowNumber}`
44
+ },
45
+ contextMenu: {
46
+ copy: "Copy",
47
+ cut: "Cut",
48
+ clear: "Clear",
49
+ deleteRows: "Delete rows"
50
+ },
51
+ pasteDialog: {
52
+ title: "Do you want to add more rows?",
53
+ description: (rowsNeeded) => `We need ${rowsNeeded} additional ${rowsNeeded === 1 ? "row" : "rows"} to paste everything from your clipboard.`,
54
+ expandTitle: "Create new rows",
55
+ expandDescription: (rowsNeeded) => `Add ${rowsNeeded} new ${rowsNeeded === 1 ? "row" : "rows"} to the table and paste all data`,
56
+ keepTitle: "Keep current rows",
57
+ keepDescription: "Paste only what fits in the existing rows",
58
+ cancel: "Cancel",
59
+ confirm: "Continue"
60
+ },
61
+ rowHeight: {
62
+ label: "Row height",
63
+ short: "Short",
64
+ medium: "Medium",
65
+ tall: "Tall",
66
+ extraTall: "Extra tall"
67
+ },
68
+ view: {
69
+ trigger: "View",
70
+ toggleColumns: "Toggle columns",
71
+ searchPlaceholder: "Search columns...",
72
+ empty: "No columns found."
73
+ },
74
+ sort: {
75
+ trigger: "Sort",
76
+ title: "Sort by",
77
+ emptyTitle: "No sorting applied",
78
+ description: "Modify sorting to organize your rows.",
79
+ emptyDescription: "Add sorting to organize your rows.",
80
+ add: "Add sort",
81
+ reset: "Reset sorting",
82
+ remove: "Remove sort",
83
+ drag: "Drag to reorder",
84
+ fieldPlaceholder: "Search fields...",
85
+ fieldEmpty: "No fields found.",
86
+ asc: "Asc",
87
+ desc: "Desc"
88
+ },
89
+ filter: {
90
+ trigger: "Filter",
91
+ title: "Filter by",
92
+ emptyTitle: "No filters applied",
93
+ description: "Modify filters to narrow down your data.",
94
+ emptyDescription: "Add filters to narrow down your data.",
95
+ add: "Add filter",
96
+ reset: "Reset filters",
97
+ remove: "Remove filter",
98
+ drag: "Drag to reorder",
99
+ where: "Where",
100
+ and: "And",
101
+ fieldPlaceholder: "Search fields...",
102
+ fieldEmpty: "No fields found.",
103
+ valuePlaceholder: "Value",
104
+ rangeStart: "From",
105
+ rangeEnd: "To",
106
+ pickDate: "Pick a date",
107
+ pickRange: "Pick a range",
108
+ optionPlaceholder: "Search options...",
109
+ optionEmpty: "No options found.",
110
+ selectedCount: (count) => `${count} selected`,
111
+ emptyValue: (label) => `${label} filter is empty`,
112
+ /** Nhãn toán tử lọc — xem `filters.ts` để biết toán tử nào dùng cho kiểu ô nào */
113
+ operators: {
114
+ contains: "Contains",
115
+ notContains: "Does not contain",
116
+ equals: "Is",
117
+ notEquals: "Is not",
118
+ startsWith: "Starts with",
119
+ endsWith: "Ends with",
120
+ isEmpty: "Is empty",
121
+ isNotEmpty: "Is not empty",
122
+ lessThan: "Is less than",
123
+ lessThanOrEqual: "Is less than or equal to",
124
+ greaterThan: "Is greater than",
125
+ greaterThanOrEqual: "Is greater than or equal to",
126
+ isBetween: "Is between",
127
+ dateEquals: "Is",
128
+ dateNotEquals: "Is not",
129
+ before: "Is before",
130
+ after: "Is after",
131
+ onOrBefore: "Is on or before",
132
+ onOrAfter: "Is on or after",
133
+ is: "Is",
134
+ isNot: "Is not",
135
+ isAnyOf: "Has any of",
136
+ isNoneOf: "Has none of",
137
+ isTrue: "Is checked",
138
+ isFalse: "Is not checked"
139
+ }
140
+ },
141
+ cell: {
142
+ longTextPlaceholder: "Enter text...",
143
+ optionSearchPlaceholder: "Search...",
144
+ optionEmpty: "No options found.",
145
+ clearAll: "Clear all",
146
+ invalidUrlTitle: "Invalid URL",
147
+ invalidUrlDescription: "URL contains a dangerous protocol (javascript:, data:, vbscript:, or file:)"
148
+ },
149
+ file: {
150
+ uploadLabel: "Upload",
151
+ dropHere: "Drop files here",
152
+ dragHere: "Drag files here",
153
+ browse: "or click to browse",
154
+ limits: (maxSize, maxFiles) => {
155
+ if (maxSize && maxFiles) return `Max size: ${maxSize} \u2022 Max ${maxFiles} files`;
156
+ if (maxSize) return `Max size: ${maxSize}`;
157
+ if (maxFiles) return `Max ${maxFiles} files`;
158
+ return "Select files to upload";
159
+ },
160
+ count: (count) => `${count} ${count === 1 ? "file" : "files"}`,
161
+ clearAll: "Clear all",
162
+ remove: "Remove file",
163
+ uploading: "Uploading...",
164
+ deleting: "Deleting...",
165
+ tooMany: (maxFiles) => `Only ${maxFiles} ${maxFiles === 1 ? "file" : "files"} allowed`,
166
+ tooLarge: (maxSize) => `File size exceeds ${maxSize}`,
167
+ wrongType: "File type not accepted",
168
+ rejectedOne: (name) => `"${name}" has been rejected`,
169
+ rejectedMany: (name, others) => `"${name}" and ${others} more rejected`,
170
+ uploadFailed: (count) => `Failed to upload ${count} ${count === 1 ? "file" : "files"}`,
171
+ deleteFailed: (name) => `Failed to delete ${name}`,
172
+ deleteFailedMany: "Failed to delete files"
173
+ },
174
+ toast: {
175
+ cellsCopied: (count) => `${count} ${count === 1 ? "cell" : "cells"} copied`,
176
+ copyFailed: "Failed to copy to clipboard",
177
+ cellsCut: (count) => `${count} ${count === 1 ? "cell" : "cells"} cut`,
178
+ cutFailed: "Failed to cut to clipboard",
179
+ cellsPasted: (count) => `${count} ${count === 1 ? "cell" : "cells"} pasted`,
180
+ cellsPastedWithSkipped: (count, skipped) => `${count} ${count === 1 ? "cell" : "cells"} pasted, ${skipped} skipped`,
181
+ pasteSkipped: (skipped) => `${skipped} ${skipped === 1 ? "cell" : "cells"} skipped pasting for invalid data`,
182
+ pasteFailed: "Failed to paste. Please try again.",
183
+ cellsCleared: (count) => `${count} ${count === 1 ? "cell" : "cells"} cleared`,
184
+ rowsDeleted: (count) => `${count} ${count === 1 ? "row" : "rows"} deleted`,
185
+ nothingToUndo: "Nothing left to undo",
186
+ nothingToRedo: "Nothing left to redo",
187
+ undone: (count) => `${count} ${count === 1 ? "action" : "actions"} undone`,
188
+ redone: (count) => `${count} ${count === 1 ? "action" : "actions"} redone`
189
+ },
190
+ /** Giá trị văn bản khi dán boolean vào ô văn bản */
191
+ booleanText: {
192
+ checked: "Yes",
193
+ unchecked: "No"
194
+ },
195
+ shortcuts: {
196
+ trigger: "Keyboard shortcuts",
197
+ title: "Keyboard shortcuts",
198
+ description: "Every shortcut for working through the grid without the mouse.",
199
+ searchPlaceholder: "Search shortcuts...",
200
+ emptyTitle: "No shortcuts found",
201
+ emptyDescription: "Try a different search term.",
202
+ close: "Close",
203
+ groups: {
204
+ navigation: "Navigation",
205
+ selection: "Selection",
206
+ editing: "Editing",
207
+ search: "Search",
208
+ filtering: "Filtering",
209
+ sorting: "Sorting",
210
+ general: "General"
211
+ },
212
+ keys: {
213
+ click: "Click",
214
+ doubleClick: "Double click"
215
+ },
216
+ navigation: {
217
+ move: "Navigate between cells",
218
+ nextCell: "Move to next cell",
219
+ prevCell: "Move to previous cell",
220
+ firstColumn: "Move to first column",
221
+ lastColumn: "Move to last column",
222
+ firstRowSameColumn: "Move to first row (same column)",
223
+ lastRowSameColumn: "Move to last row (same column)",
224
+ firstColumnSameRow: "Move to first column (same row)",
225
+ lastColumnSameRow: "Move to last column (same row)",
226
+ firstCell: "Move to first cell",
227
+ lastCell: "Move to last cell",
228
+ pageUp: "Move up one page",
229
+ pageDown: "Move down one page",
230
+ scrollUp: "Scroll up one page",
231
+ scrollDown: "Scroll down one page",
232
+ scrollLeft: "Scroll left one page of columns",
233
+ scrollRight: "Scroll right one page of columns"
234
+ },
235
+ selection: {
236
+ extend: "Extend selection",
237
+ toTop: "Select to top of table",
238
+ toBottom: "Select to bottom of table",
239
+ toFirstColumn: "Select to first column",
240
+ toLastColumn: "Select to last column",
241
+ all: "Select all cells",
242
+ toggle: "Toggle cell selection",
243
+ range: "Select range",
244
+ clear: "Clear selection"
245
+ },
246
+ editing: {
247
+ start: "Start editing cell",
248
+ insertRow: "Insert row below",
249
+ copy: "Copy selected cells",
250
+ cut: "Cut selected cells",
251
+ paste: "Paste cells",
252
+ clear: "Clear selected cells",
253
+ deleteRows: "Delete selected rows",
254
+ undo: "Undo last action",
255
+ redo: "Redo last action"
256
+ },
257
+ search: {
258
+ open: "Open search",
259
+ next: "Next match",
260
+ prev: "Previous match",
261
+ close: "Close search"
262
+ },
263
+ filtering: {
264
+ toggle: "Toggle the filter menu",
265
+ remove: "Remove filter (when focused)"
266
+ },
267
+ sorting: {
268
+ toggle: "Toggle the sort menu",
269
+ remove: "Remove sort (when focused)"
270
+ },
271
+ general: {
272
+ shortcuts: "Show keyboard shortcuts"
273
+ }
274
+ }
275
+ };
276
+ export {
277
+ messagesEn
278
+ };
279
+ //# sourceMappingURL=messages-en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/data-grid/messages-en.ts"],"sourcesContent":["/**\n * Chuỗi hiển thị tiếng ANH của DataGrid — và là BẢN GỐC định nghĩa hình dạng của\n * {@link DataGridMessages}. Mọi bảng ngôn ngữ khác phải khớp đúng bộ khoá này; thiếu một khoá là\n * typecheck đỏ ngay, không phải một chuỗi rỗng lặng lẽ xuất hiện trên giao diện.\n *\n * ⚠ **KHÔNG `as const`.** Có `as const` thì mỗi chuỗi thành một literal type riêng\n * (`\"Add row\"` chứ không phải `string`), và bảng tiếng Việt vĩnh viễn không bao giờ gán được vào\n * `DataGridMessages`. Kiểu rộng mới là thứ dùng được ở đây.\n *\n * ─ VÌ SAO TIẾNG ANH LÀ BẢN GỐC, TRONG KHI CẢ GÓI MẶC ĐỊNH TIẾNG VIỆT ─\n * Đây là NGOẠI LỆ CÓ CHỦ Ý của `DataGrid`, quyết định ở `2.0.0` (xem CHANGELOG). Phần lớn chuỗi\n * ở đây là chuỗi gốc của tablecn — repo mà lưới được port từ đó — nên giữ tiếng Anh làm bản gốc\n * thì mỗi lần đối chiếu ngược với thượng nguồn là so trực tiếp, không phải dịch hai lượt.\n *\n * Quy ước: chuỗi cố định để nguyên; chuỗi có tham số viết thành HÀM (đừng nối chuỗi ở chỗ gọi —\n * trật tự từ của tiếng Việt và tiếng Anh khác nhau). KHÔNG đặt JSX ở đây.\n */\nexport const messagesEn = {\n grid: {\n /** Nhãn mặc định của vùng `role=\"grid\"` (ghi đè bằng prop `aria-label`) */\n label: \"Data grid\",\n addRow: \"Add row\"\n },\n\n search: {\n placeholder: \"Find in table...\",\n label: \"Find in table\",\n prevMatch: \"Previous match\",\n nextMatch: \"Next match\",\n close: \"Close search\",\n matchPosition: (index: number, total: number) => `${index} / ${total}`,\n noResults: \"No results\",\n typeToSearch: \"Type to search\"\n },\n\n column: {\n sortAsc: \"Sort asc\",\n sortDesc: \"Sort desc\",\n removeSort: \"Remove sort\",\n pinLeft: \"Pin to left\",\n unpinLeft: \"Unpin from left\",\n pinRight: \"Pin to right\",\n unpinRight: \"Unpin from right\",\n hide: \"Hide column\",\n resize: (label: string) => `Resize ${label} column`,\n /** Tên kiểu dữ liệu của cột, hiện trong tooltip ở tiêu đề cột */\n variant: {\n shortText: \"Short text\",\n longText: \"Long text\",\n number: \"Number\",\n url: \"URL\",\n checkbox: \"Checkbox\",\n select: \"Select\",\n multiSelect: \"Multi-select\",\n date: \"Date\",\n file: \"File\"\n }\n },\n\n select: {\n all: \"Select all\",\n row: \"Select row\",\n rowNumber: (rowNumber: number) => `Select row ${rowNumber}`\n },\n\n contextMenu: {\n copy: \"Copy\",\n cut: \"Cut\",\n clear: \"Clear\",\n deleteRows: \"Delete rows\"\n },\n\n pasteDialog: {\n title: \"Do you want to add more rows?\",\n description: (rowsNeeded: number) =>\n `We need ${rowsNeeded} additional ${rowsNeeded === 1 ? \"row\" : \"rows\"} to paste everything from your clipboard.`,\n expandTitle: \"Create new rows\",\n expandDescription: (rowsNeeded: number) =>\n `Add ${rowsNeeded} new ${rowsNeeded === 1 ? \"row\" : \"rows\"} to the table and paste all data`,\n keepTitle: \"Keep current rows\",\n keepDescription: \"Paste only what fits in the existing rows\",\n cancel: \"Cancel\",\n confirm: \"Continue\"\n },\n\n rowHeight: {\n label: \"Row height\",\n short: \"Short\",\n medium: \"Medium\",\n tall: \"Tall\",\n extraTall: \"Extra tall\"\n },\n\n view: {\n trigger: \"View\",\n toggleColumns: \"Toggle columns\",\n searchPlaceholder: \"Search columns...\",\n empty: \"No columns found.\"\n },\n\n sort: {\n trigger: \"Sort\",\n title: \"Sort by\",\n emptyTitle: \"No sorting applied\",\n description: \"Modify sorting to organize your rows.\",\n emptyDescription: \"Add sorting to organize your rows.\",\n add: \"Add sort\",\n reset: \"Reset sorting\",\n remove: \"Remove sort\",\n drag: \"Drag to reorder\",\n fieldPlaceholder: \"Search fields...\",\n fieldEmpty: \"No fields found.\",\n asc: \"Asc\",\n desc: \"Desc\"\n },\n\n filter: {\n trigger: \"Filter\",\n title: \"Filter by\",\n emptyTitle: \"No filters applied\",\n description: \"Modify filters to narrow down your data.\",\n emptyDescription: \"Add filters to narrow down your data.\",\n add: \"Add filter\",\n reset: \"Reset filters\",\n remove: \"Remove filter\",\n drag: \"Drag to reorder\",\n where: \"Where\",\n and: \"And\",\n fieldPlaceholder: \"Search fields...\",\n fieldEmpty: \"No fields found.\",\n valuePlaceholder: \"Value\",\n rangeStart: \"From\",\n rangeEnd: \"To\",\n pickDate: \"Pick a date\",\n pickRange: \"Pick a range\",\n optionPlaceholder: \"Search options...\",\n optionEmpty: \"No options found.\",\n selectedCount: (count: number) => `${count} selected`,\n emptyValue: (label: string) => `${label} filter is empty`,\n /** Nhãn toán tử lọc — xem `filters.ts` để biết toán tử nào dùng cho kiểu ô nào */\n operators: {\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Is\",\n notEquals: \"Is not\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n lessThan: \"Is less than\",\n lessThanOrEqual: \"Is less than or equal to\",\n greaterThan: \"Is greater than\",\n greaterThanOrEqual: \"Is greater than or equal to\",\n isBetween: \"Is between\",\n dateEquals: \"Is\",\n dateNotEquals: \"Is not\",\n before: \"Is before\",\n after: \"Is after\",\n onOrBefore: \"Is on or before\",\n onOrAfter: \"Is on or after\",\n is: \"Is\",\n isNot: \"Is not\",\n isAnyOf: \"Has any of\",\n isNoneOf: \"Has none of\",\n isTrue: \"Is checked\",\n isFalse: \"Is not checked\"\n }\n },\n\n cell: {\n longTextPlaceholder: \"Enter text...\",\n optionSearchPlaceholder: \"Search...\",\n optionEmpty: \"No options found.\",\n clearAll: \"Clear all\",\n invalidUrlTitle: \"Invalid URL\",\n invalidUrlDescription: \"URL contains a dangerous protocol (javascript:, data:, vbscript:, or file:)\"\n },\n\n file: {\n uploadLabel: \"Upload\",\n dropHere: \"Drop files here\",\n dragHere: \"Drag files here\",\n browse: \"or click to browse\",\n limits: (maxSize?: string, maxFiles?: number) => {\n if (maxSize && maxFiles) return `Max size: ${maxSize} • Max ${maxFiles} files`;\n if (maxSize) return `Max size: ${maxSize}`;\n if (maxFiles) return `Max ${maxFiles} files`;\n return \"Select files to upload\";\n },\n count: (count: number) => `${count} ${count === 1 ? \"file\" : \"files\"}`,\n clearAll: \"Clear all\",\n remove: \"Remove file\",\n uploading: \"Uploading...\",\n deleting: \"Deleting...\",\n tooMany: (maxFiles: number) => `Only ${maxFiles} ${maxFiles === 1 ? \"file\" : \"files\"} allowed`,\n tooLarge: (maxSize: string) => `File size exceeds ${maxSize}`,\n wrongType: \"File type not accepted\",\n rejectedOne: (name: string) => `\"${name}\" has been rejected`,\n rejectedMany: (name: string, others: number) => `\"${name}\" and ${others} more rejected`,\n uploadFailed: (count: number) => `Failed to upload ${count} ${count === 1 ? \"file\" : \"files\"}`,\n deleteFailed: (name: string) => `Failed to delete ${name}`,\n deleteFailedMany: \"Failed to delete files\"\n },\n\n toast: {\n cellsCopied: (count: number) => `${count} ${count === 1 ? \"cell\" : \"cells\"} copied`,\n copyFailed: \"Failed to copy to clipboard\",\n cellsCut: (count: number) => `${count} ${count === 1 ? \"cell\" : \"cells\"} cut`,\n cutFailed: \"Failed to cut to clipboard\",\n cellsPasted: (count: number) => `${count} ${count === 1 ? \"cell\" : \"cells\"} pasted`,\n cellsPastedWithSkipped: (count: number, skipped: number) =>\n `${count} ${count === 1 ? \"cell\" : \"cells\"} pasted, ${skipped} skipped`,\n pasteSkipped: (skipped: number) =>\n `${skipped} ${skipped === 1 ? \"cell\" : \"cells\"} skipped pasting for invalid data`,\n pasteFailed: \"Failed to paste. Please try again.\",\n cellsCleared: (count: number) => `${count} ${count === 1 ? \"cell\" : \"cells\"} cleared`,\n rowsDeleted: (count: number) => `${count} ${count === 1 ? \"row\" : \"rows\"} deleted`,\n nothingToUndo: \"Nothing left to undo\",\n nothingToRedo: \"Nothing left to redo\",\n undone: (count: number) => `${count} ${count === 1 ? \"action\" : \"actions\"} undone`,\n redone: (count: number) => `${count} ${count === 1 ? \"action\" : \"actions\"} redone`\n },\n\n /** Giá trị văn bản khi dán boolean vào ô văn bản */\n booleanText: {\n checked: \"Yes\",\n unchecked: \"No\"\n },\n\n shortcuts: {\n trigger: \"Keyboard shortcuts\",\n title: \"Keyboard shortcuts\",\n description: \"Every shortcut for working through the grid without the mouse.\",\n searchPlaceholder: \"Search shortcuts...\",\n emptyTitle: \"No shortcuts found\",\n emptyDescription: \"Try a different search term.\",\n close: \"Close\",\n groups: {\n navigation: \"Navigation\",\n selection: \"Selection\",\n editing: \"Editing\",\n search: \"Search\",\n filtering: \"Filtering\",\n sorting: \"Sorting\",\n general: \"General\"\n },\n keys: {\n click: \"Click\",\n doubleClick: \"Double click\"\n },\n navigation: {\n move: \"Navigate between cells\",\n nextCell: \"Move to next cell\",\n prevCell: \"Move to previous cell\",\n firstColumn: \"Move to first column\",\n lastColumn: \"Move to last column\",\n firstRowSameColumn: \"Move to first row (same column)\",\n lastRowSameColumn: \"Move to last row (same column)\",\n firstColumnSameRow: \"Move to first column (same row)\",\n lastColumnSameRow: \"Move to last column (same row)\",\n firstCell: \"Move to first cell\",\n lastCell: \"Move to last cell\",\n pageUp: \"Move up one page\",\n pageDown: \"Move down one page\",\n scrollUp: \"Scroll up one page\",\n scrollDown: \"Scroll down one page\",\n scrollLeft: \"Scroll left one page of columns\",\n scrollRight: \"Scroll right one page of columns\"\n },\n selection: {\n extend: \"Extend selection\",\n toTop: \"Select to top of table\",\n toBottom: \"Select to bottom of table\",\n toFirstColumn: \"Select to first column\",\n toLastColumn: \"Select to last column\",\n all: \"Select all cells\",\n toggle: \"Toggle cell selection\",\n range: \"Select range\",\n clear: \"Clear selection\"\n },\n editing: {\n start: \"Start editing cell\",\n insertRow: \"Insert row below\",\n copy: \"Copy selected cells\",\n cut: \"Cut selected cells\",\n paste: \"Paste cells\",\n clear: \"Clear selected cells\",\n deleteRows: \"Delete selected rows\",\n undo: \"Undo last action\",\n redo: \"Redo last action\"\n },\n search: {\n open: \"Open search\",\n next: \"Next match\",\n prev: \"Previous match\",\n close: \"Close search\"\n },\n filtering: {\n toggle: \"Toggle the filter menu\",\n remove: \"Remove filter (when focused)\"\n },\n sorting: {\n toggle: \"Toggle the sort menu\",\n remove: \"Remove sort (when focused)\"\n },\n general: {\n shortcuts: \"Show keyboard shortcuts\"\n }\n }\n};\n\n/**\n * Hình dạng của một bảng ngôn ngữ. Suy ra từ bảng tiếng Anh nên không có chỗ nào để hai thứ\n * lệch nhau: thêm một khoá vào `messagesEn` là mọi bảng khác đỏ cho tới khi dịch xong.\n */\nexport type DataGridMessages = typeof messagesEn;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,12 @@
1
+ import { DataGridMessages } from './messages-en.js';
2
+
3
+ /**
4
+ * Bảng tiếng VIỆT của DataGrid. Hình dạng do `messages-en.ts` quy định — chú thích `: DataGridMessages`
5
+ * ở đây là thứ bắt lỗi: thêm khoá mới ở bản tiếng Anh mà quên dịch thì typecheck đỏ ngay, thay vì
6
+ * một chuỗi `undefined` lọt ra giao diện lúc chạy.
7
+ *
8
+ * ⚠ Bản này KHÔNG còn là mặc định từ `2.0.0`. Muốn nó thì truyền `locale="vi"` (xem README §5).
9
+ */
10
+ declare const messagesVi: DataGridMessages;
11
+
12
+ export { messagesVi };