@sincpro/web-ui 0.2.0 → 1.0.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.
- package/README.md +3 -3
- package/dist/components/activity/ActivityBadge.d.ts +16 -0
- package/dist/components/activity/ActivityBadge.js +29 -0
- package/dist/components/activity/index.d.ts +1 -0
- package/dist/components/activity/index.js +1 -0
- package/dist/components/calendar/RecordCalendar.d.ts +48 -0
- package/dist/components/calendar/RecordCalendar.js +101 -0
- package/dist/components/calendar/index.d.ts +1 -0
- package/dist/components/calendar/index.js +1 -0
- package/dist/components/form/Sheet.js +5 -1
- package/dist/components/gantt/RecordGantt.d.ts +44 -0
- package/dist/components/gantt/RecordGantt.js +110 -0
- package/dist/components/gantt/index.d.ts +1 -0
- package/dist/components/gantt/index.js +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +3 -0
- package/dist/components/lines/LineItems.d.ts +5 -2
- package/dist/components/lines/LineItems.js +3 -3
- package/dist/components/listing/BoardColumns.d.ts +39 -0
- package/dist/components/listing/BoardColumns.js +138 -0
- package/dist/components/listing/ListingBar.d.ts +5 -0
- package/dist/components/listing/ListingBar.js +5 -2
- package/dist/components/listing/PivotExplorer.d.ts +34 -0
- package/dist/components/listing/PivotExplorer.js +86 -0
- package/dist/components/listing/RecordCard.d.ts +6 -8
- package/dist/components/listing/RecordCard.js +13 -7
- package/dist/components/listing/Row.d.ts +21 -2
- package/dist/components/listing/Row.js +29 -13
- package/dist/components/listing/index.d.ts +2 -0
- package/dist/components/listing/index.js +2 -0
- package/dist/components/listing/set.d.ts +1 -1
- package/dist/components/navigation/index.d.ts +0 -2
- package/dist/components/navigation/index.js +2 -3
- package/dist/components/record/RecordAudit.d.ts +17 -0
- package/dist/components/record/RecordAudit.js +27 -0
- package/dist/components/record/RecordHeader.d.ts +7 -1
- package/dist/components/record/RecordHeader.js +30 -18
- package/dist/components/record/RecordRibbon.d.ts +13 -0
- package/dist/components/record/RecordRibbon.js +22 -0
- package/dist/components/record/index.d.ts +2 -0
- package/dist/components/record/index.js +2 -0
- package/dist/components/search/CriteriaChips.d.ts +6 -1
- package/dist/components/search/CriteriaChips.js +71 -20
- package/dist/components/search/SearchBar.d.ts +4 -1
- package/dist/components/search/SearchBar.js +15 -7
- package/dist/components/timeline/RecordTimeline.d.ts +60 -0
- package/dist/components/timeline/RecordTimeline.js +214 -0
- package/dist/components/timeline/TimelineToolbar.d.ts +30 -0
- package/dist/components/timeline/TimelineToolbar.js +31 -0
- package/dist/components/timeline/index.d.ts +3 -0
- package/dist/components/timeline/index.js +3 -0
- package/dist/components/timeline/time.d.ts +43 -0
- package/dist/components/timeline/time.js +135 -0
- package/dist/foundations/copy.d.ts +106 -14
- package/dist/foundations/copy.es.js +83 -9
- package/dist/foundations/copy.js +83 -9
- package/dist/foundations/index.d.ts +1 -1
- package/dist/foundations/match.d.ts +23 -0
- package/dist/foundations/match.js +63 -0
- package/dist/foundations/slots.d.ts +1 -1
- package/dist/foundations/slots.js +8 -3
- package/dist/foundations/types.d.ts +7 -0
- package/dist/foundations/types.js +0 -36
- package/dist/primitives/block/index.d.ts +1 -1
- package/dist/primitives/block/index.js +1 -1
- package/dist/primitives/cell/CellStack.d.ts +7 -1
- package/dist/primitives/cell/CellStack.js +5 -2
- package/dist/primitives/choice/ComboBox.js +8 -4
- package/dist/primitives/choice/KanbanState.d.ts +14 -0
- package/dist/primitives/choice/KanbanState.js +37 -0
- package/dist/primitives/choice/Priority.d.ts +20 -0
- package/dist/primitives/choice/Priority.js +41 -0
- package/dist/primitives/choice/Slider.d.ts +6 -1
- package/dist/primitives/choice/Slider.js +2 -2
- package/dist/primitives/choice/index.d.ts +2 -0
- package/dist/primitives/choice/index.js +2 -0
- package/dist/primitives/dialog/Dialog.d.ts +9 -3
- package/dist/primitives/dialog/Dialog.js +41 -5
- package/dist/primitives/dialog/index.d.ts +0 -1
- package/dist/primitives/dialog/index.js +0 -2
- package/dist/primitives/notice/index.d.ts +1 -1
- package/dist/primitives/notice/index.js +1 -1
- package/dist/primitives/overlay/Preview.js +13 -4
- package/dist/primitives/picker/MatchedText.d.ts +10 -0
- package/dist/primitives/picker/MatchedText.js +12 -0
- package/dist/primitives/picker/Picker.d.ts +29 -7
- package/dist/primitives/picker/Picker.js +88 -23
- package/dist/primitives/table/EditableTable.d.ts +6 -1
- package/dist/primitives/table/EditableTable.js +70 -9
- package/dist/primitives/table/ReportTable.js +2 -1
- package/dist/primitives/table/RowActions.js +7 -2
- package/dist/primitives/table/Table.d.ts +5 -0
- package/dist/primitives/table/Table.js +17 -8
- package/dist/primitives/tag/Tags.d.ts +2 -0
- package/dist/primitives/tag/Tags.js +2 -1
- package/dist/primitives/tag/TagsField.d.ts +10 -0
- package/dist/primitives/tag/TagsField.js +34 -9
- package/dist/primitives/tag/choices.d.ts +2 -0
- package/dist/primitives/value/Avatar.d.ts +16 -0
- package/dist/primitives/value/Avatar.js +91 -0
- package/dist/primitives/value/Person.d.ts +6 -51
- package/dist/primitives/value/Person.js +9 -148
- package/dist/primitives/value/Relation.d.ts +21 -9
- package/dist/primitives/value/Relation.js +35 -24
- package/dist/primitives/value/contact.d.ts +30 -0
- package/dist/primitives/value/contact.js +51 -0
- package/dist/primitives/value/index.d.ts +1 -1
- package/dist/primitives/value/index.js +1 -1
- package/dist/tokens.css +136 -1
- package/dist/views/list/List.d.ts +25 -2
- package/dist/views/list/List.js +48 -8
- package/dist/views/list/ListView.d.ts +1 -1
- package/dist/views/list/ListView.js +39 -8
- package/dist/views/list/columns.js +8 -1
- package/dist/views/list/presentations.d.ts +5 -2
- package/dist/views/list/presentations.js +32 -2
- package/dist/views/list/types.d.ts +44 -0
- package/dist/views/list/useNarrowList.d.ts +10 -0
- package/dist/views/list/useNarrowList.js +20 -6
- package/dist/views/record/Record.d.ts +14 -0
- package/dist/views/record/Record.js +22 -7
- package/package.json +11 -4
- package/dist/components/navigation/CommandPalette.d.ts +0 -40
- package/dist/components/navigation/CommandPalette.js +0 -114
- package/dist/components/navigation/commands.d.ts +0 -30
- package/dist/components/navigation/commands.js +0 -30
- package/dist/primitives/dialog/Drill.d.ts +0 -90
- package/dist/primitives/dialog/Drill.js +0 -172
|
@@ -27,6 +27,9 @@ export type UiCopy = {
|
|
|
27
27
|
report: string;
|
|
28
28
|
/** Dos preguntas a la vez: montones cruzados por montones. */
|
|
29
29
|
pivot: string;
|
|
30
|
+
calendar: string;
|
|
31
|
+
gantt: string;
|
|
32
|
+
timeline: string;
|
|
30
33
|
chart: string;
|
|
31
34
|
group: string;
|
|
32
35
|
};
|
|
@@ -48,6 +51,8 @@ export type UiCopy = {
|
|
|
48
51
|
named: string;
|
|
49
52
|
more: string;
|
|
50
53
|
moreOf: string;
|
|
54
|
+
/** «Elegir los 187 que coinciden»: the whole result, not the page. */
|
|
55
|
+
allMatching: string;
|
|
51
56
|
};
|
|
52
57
|
pager: {
|
|
53
58
|
size: string;
|
|
@@ -76,6 +81,9 @@ export type UiCopy = {
|
|
|
76
81
|
noticeMany: string;
|
|
77
82
|
/** The accessible name of the band of what is wrong with the record. */
|
|
78
83
|
blocking: string;
|
|
84
|
+
/** The paper's last line (`Record.Audit`): «{by}» and «{at}» are already written. */
|
|
85
|
+
created: string;
|
|
86
|
+
updated: string;
|
|
79
87
|
};
|
|
80
88
|
shell: {
|
|
81
89
|
modules: string;
|
|
@@ -88,8 +96,6 @@ export type UiCopy = {
|
|
|
88
96
|
closePreview: string;
|
|
89
97
|
account: string;
|
|
90
98
|
openAsPanel: string;
|
|
91
|
-
/** The accessible name of the command palette's dialog. */
|
|
92
|
-
commandPalette: string;
|
|
93
99
|
};
|
|
94
100
|
field: {
|
|
95
101
|
drop: string;
|
|
@@ -131,6 +137,14 @@ export type UiCopy = {
|
|
|
131
137
|
groupedBy: string;
|
|
132
138
|
/** Lo que encabeza el corchete de los recortes. */
|
|
133
139
|
narrowedBy: string;
|
|
140
|
+
/** The «+N» chip that unfolds the facets the bar folded away. */
|
|
141
|
+
moreFacets: string;
|
|
142
|
+
/** Folds them back. */
|
|
143
|
+
fewerFacets: string;
|
|
144
|
+
/** The × of the grouping chain: drops every level at once. */
|
|
145
|
+
removeGrouping: string;
|
|
146
|
+
/** The × at the end of the bar: drops every filter and level. */
|
|
147
|
+
clearAll: string;
|
|
134
148
|
/** Cambiar la conjunción entre búsquedas: todas a la vez, o cualquiera. */
|
|
135
149
|
switchJoin: string;
|
|
136
150
|
/**
|
|
@@ -229,6 +243,10 @@ export type UiCopy = {
|
|
|
229
243
|
* one: «1 records» is wrong in every language this ships in. */
|
|
230
244
|
countOne: string;
|
|
231
245
|
count: string;
|
|
246
|
+
/** A row's two ways in, named on their buttons: a look without leaving the list, and the
|
|
247
|
+
* record itself. */
|
|
248
|
+
peek: string;
|
|
249
|
+
open: string;
|
|
232
250
|
};
|
|
233
251
|
/** La historia de un registro: eventos y mensajes. */
|
|
234
252
|
/** The panel of everything around a record: its notices, its conversation and its
|
|
@@ -372,6 +390,9 @@ export type UiCopy = {
|
|
|
372
390
|
addRow: string;
|
|
373
391
|
empty: string;
|
|
374
392
|
remove: string;
|
|
393
|
+
/** The grip that changes a row's place (`EditableTable onReorder`). */
|
|
394
|
+
reorder: string;
|
|
395
|
+
reorderHint: string;
|
|
375
396
|
};
|
|
376
397
|
picker: {
|
|
377
398
|
placeholder: string;
|
|
@@ -382,8 +403,23 @@ export type UiCopy = {
|
|
|
382
403
|
refine: string;
|
|
383
404
|
open: string;
|
|
384
405
|
browseAll: string;
|
|
406
|
+
/** The option that creates a record from the typed text. `{name}` is that text. */
|
|
407
|
+
create: string;
|
|
408
|
+
/** The option that opens the full form of a new record, with the typed text as its name. */
|
|
409
|
+
createAndEdit: string;
|
|
410
|
+
/** Why an option whose name does not match is listed: the hidden code it matched. */
|
|
411
|
+
matched: string;
|
|
385
412
|
/** The quiet row at the end of a list that is fetching its next page. */
|
|
386
413
|
loadingMore: string;
|
|
414
|
+
/** Where a many2one's record opens (`OpenTarget`), on its buttons and its menu. */
|
|
415
|
+
openIn: {
|
|
416
|
+
modal: string;
|
|
417
|
+
peek: string;
|
|
418
|
+
page: string;
|
|
419
|
+
side: string;
|
|
420
|
+
window: string;
|
|
421
|
+
};
|
|
422
|
+
openMore: string;
|
|
387
423
|
};
|
|
388
424
|
cell: {
|
|
389
425
|
missing: string;
|
|
@@ -395,13 +431,6 @@ export type UiCopy = {
|
|
|
395
431
|
invalid: string;
|
|
396
432
|
noDate: string;
|
|
397
433
|
};
|
|
398
|
-
/** The dialog that holds a stack of contexts opened from a record (`Drill`). */
|
|
399
|
-
drill: {
|
|
400
|
-
/** Up one level. `{name}` is the context it goes back to. */
|
|
401
|
-
back: string;
|
|
402
|
-
/** The accessible name of the trail of contexts this one was opened from. */
|
|
403
|
-
trail: string;
|
|
404
|
-
};
|
|
405
434
|
dialog: {
|
|
406
435
|
expand: string;
|
|
407
436
|
/** The wizard's own buttons: leave, go back, go on, end — and what the main
|
|
@@ -498,17 +527,22 @@ export type UiCopy = {
|
|
|
498
527
|
rows: string;
|
|
499
528
|
/** Abrir un cruce: qué filas cayeron ahí. */
|
|
500
529
|
open: string;
|
|
530
|
+
/** The pivot's own controls (`PivotExplorer`). */
|
|
531
|
+
measures: string;
|
|
532
|
+
rowsAxis: string;
|
|
533
|
+
columnsAxis: string;
|
|
534
|
+
addLevel: string;
|
|
535
|
+
removeLevel: string;
|
|
536
|
+
swap: string;
|
|
537
|
+
download: string;
|
|
538
|
+
fromSearch: string;
|
|
501
539
|
};
|
|
502
540
|
/** A person as a value: who is not there, and the ways to reach who is. */
|
|
503
541
|
person: {
|
|
504
542
|
unassigned: string;
|
|
505
|
-
/** The title of the contact card that opens from a person. */
|
|
506
|
-
contact: string;
|
|
507
543
|
email: string;
|
|
508
544
|
call: string;
|
|
509
545
|
whatsapp: string;
|
|
510
|
-
/** Go to the person's own record. */
|
|
511
|
-
open: string;
|
|
512
546
|
};
|
|
513
547
|
/** The sub-list of lines inside a record: the lines of an order, of an entry. */
|
|
514
548
|
lines: {
|
|
@@ -545,6 +579,60 @@ export type UiCopy = {
|
|
|
545
579
|
table: string;
|
|
546
580
|
};
|
|
547
581
|
/** A field that points to another record: going there, and pointing nowhere. */
|
|
582
|
+
/** The stars of `Priority`. */
|
|
583
|
+
priority: {
|
|
584
|
+
label: string;
|
|
585
|
+
level: string;
|
|
586
|
+
none: string;
|
|
587
|
+
};
|
|
588
|
+
/** The board by stages (`BoardColumns`). */
|
|
589
|
+
board: {
|
|
590
|
+
emptyLane: string;
|
|
591
|
+
moveHint: string;
|
|
592
|
+
moved: string;
|
|
593
|
+
quickCreate: string;
|
|
594
|
+
quickPlaceholder: string;
|
|
595
|
+
fold: string;
|
|
596
|
+
unfold: string;
|
|
597
|
+
addColumn: string;
|
|
598
|
+
addColumnPlaceholder: string;
|
|
599
|
+
};
|
|
600
|
+
/** A timeline of records and its toolbar (`RecordTimeline`, `TimelineToolbar`). */
|
|
601
|
+
timeline: {
|
|
602
|
+
prev: string;
|
|
603
|
+
next: string;
|
|
604
|
+
today: string;
|
|
605
|
+
goTo: string;
|
|
606
|
+
zoom: string;
|
|
607
|
+
zoomIn: string;
|
|
608
|
+
zoomOut: string;
|
|
609
|
+
fullscreen: string;
|
|
610
|
+
exitFullscreen: string;
|
|
611
|
+
scale: string;
|
|
612
|
+
scales: {
|
|
613
|
+
day: string;
|
|
614
|
+
week: string;
|
|
615
|
+
month: string;
|
|
616
|
+
year: string;
|
|
617
|
+
};
|
|
618
|
+
moveHint: string;
|
|
619
|
+
moved: string;
|
|
620
|
+
create: string;
|
|
621
|
+
};
|
|
622
|
+
/** Odoo's kanban state — the traffic light on a card (`KanbanState`). */
|
|
623
|
+
kanbanState: {
|
|
624
|
+
label: string;
|
|
625
|
+
normal: string;
|
|
626
|
+
done: string;
|
|
627
|
+
blocked: string;
|
|
628
|
+
};
|
|
629
|
+
/** The planned activities of a record, on its card (`ActivityBadge`). */
|
|
630
|
+
activityState: {
|
|
631
|
+
none: string;
|
|
632
|
+
overdue: string;
|
|
633
|
+
today: string;
|
|
634
|
+
planned: string;
|
|
635
|
+
};
|
|
548
636
|
relation: {
|
|
549
637
|
open: string;
|
|
550
638
|
/** No record chosen. It is an answer, not a hole. */
|
|
@@ -675,7 +763,6 @@ export type UiCopyOverride = {
|
|
|
675
763
|
picker?: Partial<UiCopy["picker"]>;
|
|
676
764
|
cell?: Partial<UiCopy["cell"]>;
|
|
677
765
|
time?: Partial<UiCopy["time"]>;
|
|
678
|
-
drill?: Partial<UiCopy["drill"]>;
|
|
679
766
|
dialog?: Partial<UiCopy["dialog"]>;
|
|
680
767
|
report?: Partial<UiCopy["report"]>;
|
|
681
768
|
builder?: Partial<UiCopy["builder"]>;
|
|
@@ -683,6 +770,11 @@ export type UiCopyOverride = {
|
|
|
683
770
|
person?: Partial<UiCopy["person"]>;
|
|
684
771
|
lines?: Partial<UiCopy["lines"]>;
|
|
685
772
|
lineItems?: Partial<UiCopy["lineItems"]>;
|
|
773
|
+
priority?: Partial<UiCopy["priority"]>;
|
|
774
|
+
board?: Partial<UiCopy["board"]>;
|
|
775
|
+
kanbanState?: Partial<UiCopy["kanbanState"]>;
|
|
776
|
+
timeline?: Partial<UiCopy["timeline"]>;
|
|
777
|
+
activityState?: Partial<UiCopy["activityState"]>;
|
|
686
778
|
relation?: Partial<UiCopy["relation"]>;
|
|
687
779
|
relationCard?: Partial<UiCopy["relationCard"]>;
|
|
688
780
|
totals?: Partial<UiCopy["totals"]>;
|
|
@@ -31,6 +31,9 @@ export const SPANISH_COPY = {
|
|
|
31
31
|
sheet: "Planilla",
|
|
32
32
|
report: "Reporte",
|
|
33
33
|
pivot: "Pivote",
|
|
34
|
+
calendar: "Calendario",
|
|
35
|
+
gantt: "Gantt",
|
|
36
|
+
timeline: "Planificación",
|
|
34
37
|
chart: "Gráfico",
|
|
35
38
|
group: "Cómo verlo",
|
|
36
39
|
},
|
|
@@ -54,6 +57,7 @@ export const SPANISH_COPY = {
|
|
|
54
57
|
named: "Elegir {name}",
|
|
55
58
|
more: "Más acciones",
|
|
56
59
|
moreOf: "Más acciones de {name}",
|
|
60
|
+
allMatching: "Elegir los {count} que coinciden",
|
|
57
61
|
},
|
|
58
62
|
pager: {
|
|
59
63
|
size: "Filas por página",
|
|
@@ -76,6 +80,8 @@ export const SPANISH_COPY = {
|
|
|
76
80
|
noticeOne: "{count} aviso",
|
|
77
81
|
noticeMany: "{count} avisos",
|
|
78
82
|
blocking: "Lo que está mal en este registro",
|
|
83
|
+
created: "Creado por {by} · {at}",
|
|
84
|
+
updated: "Modificado por última vez por {by} · {at}",
|
|
79
85
|
},
|
|
80
86
|
shell: {
|
|
81
87
|
close: "Cerrar",
|
|
@@ -88,7 +94,6 @@ export const SPANISH_COPY = {
|
|
|
88
94
|
closePreview: "Cerrar la vista previa",
|
|
89
95
|
account: "Mi cuenta",
|
|
90
96
|
openAsPanel: "Abrir como panel",
|
|
91
|
-
commandPalette: "Paleta de comandos",
|
|
92
97
|
},
|
|
93
98
|
field: {
|
|
94
99
|
drop: "Soltá un archivo acá, o elegí uno.",
|
|
@@ -131,6 +136,10 @@ export const SPANISH_COPY = {
|
|
|
131
136
|
or: "o",
|
|
132
137
|
groupedBy: "agrupado por",
|
|
133
138
|
narrowedBy: "mostrando",
|
|
139
|
+
moreFacets: "+{count}",
|
|
140
|
+
fewerFacets: "ver menos",
|
|
141
|
+
removeGrouping: "Dejar de agrupar",
|
|
142
|
+
clearAll: "Quitar todos los filtros y el agrupado",
|
|
134
143
|
placeholder: "buscar…",
|
|
135
144
|
switchJoin: "Todas, cualquiera o ninguna",
|
|
136
145
|
joins: { all: "todas", any: "cualquiera", none: "ninguna" },
|
|
@@ -193,6 +202,8 @@ export const SPANISH_COPY = {
|
|
|
193
202
|
emptyFiltered: "Nada coincide con lo que está puesto.",
|
|
194
203
|
countOne: "1 registro",
|
|
195
204
|
count: "{count} registros",
|
|
205
|
+
peek: "Vista previa",
|
|
206
|
+
open: "Abrir",
|
|
196
207
|
},
|
|
197
208
|
activity: {
|
|
198
209
|
bySystem: "el sistema",
|
|
@@ -265,6 +276,8 @@ export const SPANISH_COPY = {
|
|
|
265
276
|
addRow: "agregar una fila",
|
|
266
277
|
empty: "nada todavía",
|
|
267
278
|
remove: "quitar",
|
|
279
|
+
reorder: "Mover la fila",
|
|
280
|
+
reorderHint: "Arrastrala, o Alt + ↑ / ↓",
|
|
268
281
|
},
|
|
269
282
|
picker: {
|
|
270
283
|
placeholder: "elegí uno…",
|
|
@@ -274,14 +287,21 @@ export const SPANISH_COPY = {
|
|
|
274
287
|
more: "{count} más",
|
|
275
288
|
refine: "— afiná el filtro",
|
|
276
289
|
open: "Abrir",
|
|
277
|
-
browseAll: "
|
|
290
|
+
browseAll: "Buscar más…",
|
|
291
|
+
create: "Crear «{name}»",
|
|
292
|
+
createAndEdit: "Crear y editar…",
|
|
293
|
+
matched: "coincide",
|
|
278
294
|
loadingMore: "cargando más…",
|
|
295
|
+
openIn: {
|
|
296
|
+
modal: "Abrir en un modal",
|
|
297
|
+
peek: "Vista previa",
|
|
298
|
+
page: "Abrir como página",
|
|
299
|
+
side: "Abrir al costado",
|
|
300
|
+
window: "Abrir en una ventana",
|
|
301
|
+
},
|
|
302
|
+
openMore: "Abrir en…",
|
|
279
303
|
},
|
|
280
304
|
cell: { empty: "—", missing: "falta", emptyBin: "(vacío)" },
|
|
281
|
-
drill: {
|
|
282
|
-
back: "Volver a {name}",
|
|
283
|
-
trail: "Abierto desde",
|
|
284
|
-
},
|
|
285
305
|
dialog: {
|
|
286
306
|
expand: "Agrandar a panel",
|
|
287
307
|
cancel: "Cancelar",
|
|
@@ -341,14 +361,24 @@ export const SPANISH_COPY = {
|
|
|
341
361
|
dropOrderBy: "quitar el orden por {field}",
|
|
342
362
|
dropLevel: "quitar el nivel {field}",
|
|
343
363
|
},
|
|
344
|
-
pivot: {
|
|
364
|
+
pivot: {
|
|
365
|
+
total: "Total",
|
|
366
|
+
rows: "filas",
|
|
367
|
+
open: "Abrir {row} × {column}",
|
|
368
|
+
measures: "Medidas",
|
|
369
|
+
rowsAxis: "Filas",
|
|
370
|
+
columnsAxis: "Columnas",
|
|
371
|
+
addLevel: "Agregar a {axis}",
|
|
372
|
+
removeLevel: "Quitar {level}",
|
|
373
|
+
swap: "Intercambiar filas y columnas",
|
|
374
|
+
download: "Descargar",
|
|
375
|
+
fromSearch: "del agrupado del buscador",
|
|
376
|
+
},
|
|
345
377
|
person: {
|
|
346
378
|
unassigned: "sin asignar",
|
|
347
|
-
contact: "Contacto",
|
|
348
379
|
email: "Escribir un correo",
|
|
349
380
|
call: "Llamar",
|
|
350
381
|
whatsapp: "WhatsApp",
|
|
351
|
-
open: "Ver ficha",
|
|
352
382
|
},
|
|
353
383
|
lines: {
|
|
354
384
|
add: "Agregar una línea",
|
|
@@ -372,6 +402,50 @@ export const SPANISH_COPY = {
|
|
|
372
402
|
undo: "Deshacer",
|
|
373
403
|
table: "Líneas",
|
|
374
404
|
},
|
|
405
|
+
priority: {
|
|
406
|
+
label: "Prioridad",
|
|
407
|
+
level: "{value} de {max}",
|
|
408
|
+
none: "sin prioridad",
|
|
409
|
+
},
|
|
410
|
+
board: {
|
|
411
|
+
emptyLane: "Nada en esta etapa.",
|
|
412
|
+
moveHint: "Arrastrala, o Alt + ← / → para pasarla a otra etapa",
|
|
413
|
+
moved: "{name} pasó a {column}",
|
|
414
|
+
quickCreate: "Crear rápido en {column}",
|
|
415
|
+
quickPlaceholder: "Nombre… (Enter crea)",
|
|
416
|
+
fold: "Plegar {column}",
|
|
417
|
+
unfold: "Desplegar {column}",
|
|
418
|
+
addColumn: "Agregar etapa",
|
|
419
|
+
addColumnPlaceholder: "Nombre de la etapa… (Enter agrega)",
|
|
420
|
+
},
|
|
421
|
+
timeline: {
|
|
422
|
+
prev: "Anterior",
|
|
423
|
+
next: "Siguiente",
|
|
424
|
+
today: "Hoy",
|
|
425
|
+
goTo: "Ir a una fecha",
|
|
426
|
+
zoom: "Zoom",
|
|
427
|
+
zoomIn: "Acercar",
|
|
428
|
+
zoomOut: "Alejar",
|
|
429
|
+
fullscreen: "Pantalla completa",
|
|
430
|
+
exitFullscreen: "Salir de pantalla completa",
|
|
431
|
+
scale: "Escala",
|
|
432
|
+
scales: { day: "Día", week: "Semana", month: "Mes", year: "Año" },
|
|
433
|
+
moveHint: "Arrastrala para moverla, su borde derecho para estirarla; Alt + flechas con el teclado",
|
|
434
|
+
moved: "{name}: {range}",
|
|
435
|
+
create: "Crear en {row} · {at}",
|
|
436
|
+
},
|
|
437
|
+
kanbanState: {
|
|
438
|
+
label: "Estado",
|
|
439
|
+
normal: "En curso",
|
|
440
|
+
done: "Listo para la siguiente etapa",
|
|
441
|
+
blocked: "Bloqueado",
|
|
442
|
+
},
|
|
443
|
+
activityState: {
|
|
444
|
+
none: "Sin actividades",
|
|
445
|
+
overdue: "Vencida",
|
|
446
|
+
today: "Para hoy",
|
|
447
|
+
planned: "Planificada",
|
|
448
|
+
},
|
|
375
449
|
relation: { open: "Abrir", none: "Sin asignar" },
|
|
376
450
|
relationCard: { summary: "Resumen de {name}" },
|
|
377
451
|
totals: {
|
package/dist/foundations/copy.js
CHANGED
|
@@ -10,6 +10,9 @@ export const ENGLISH_COPY = {
|
|
|
10
10
|
sheet: "Sheet",
|
|
11
11
|
report: "Report",
|
|
12
12
|
pivot: "Pivot",
|
|
13
|
+
calendar: "Calendar",
|
|
14
|
+
gantt: "Gantt",
|
|
15
|
+
timeline: "Planning",
|
|
13
16
|
chart: "Chart",
|
|
14
17
|
group: "How to view",
|
|
15
18
|
},
|
|
@@ -31,6 +34,7 @@ export const ENGLISH_COPY = {
|
|
|
31
34
|
named: "Select {name}",
|
|
32
35
|
more: "More actions",
|
|
33
36
|
moreOf: "More actions for {name}",
|
|
37
|
+
allMatching: "Select all {count} that match",
|
|
34
38
|
},
|
|
35
39
|
pager: {
|
|
36
40
|
size: "Rows per page",
|
|
@@ -53,6 +57,8 @@ export const ENGLISH_COPY = {
|
|
|
53
57
|
noticeOne: "{count} notice",
|
|
54
58
|
noticeMany: "{count} notices",
|
|
55
59
|
blocking: "What is wrong with this record",
|
|
60
|
+
created: "Created by {by} · {at}",
|
|
61
|
+
updated: "Last changed by {by} · {at}",
|
|
56
62
|
},
|
|
57
63
|
shell: {
|
|
58
64
|
modules: "All modules",
|
|
@@ -65,7 +71,6 @@ export const ENGLISH_COPY = {
|
|
|
65
71
|
closePreview: "Close preview",
|
|
66
72
|
account: "My account",
|
|
67
73
|
openAsPanel: "Open as panel",
|
|
68
|
-
commandPalette: "Command palette",
|
|
69
74
|
},
|
|
70
75
|
field: {
|
|
71
76
|
drop: "Drop a file here, or choose one.",
|
|
@@ -94,6 +99,10 @@ export const ENGLISH_COPY = {
|
|
|
94
99
|
or: "or",
|
|
95
100
|
groupedBy: "grouped by",
|
|
96
101
|
narrowedBy: "showing",
|
|
102
|
+
moreFacets: "+{count}",
|
|
103
|
+
fewerFacets: "show less",
|
|
104
|
+
removeGrouping: "Stop grouping",
|
|
105
|
+
clearAll: "Clear every filter and grouping",
|
|
97
106
|
switchJoin: "All of them, or any of them",
|
|
98
107
|
joins: { all: "all", any: "any", none: "none" },
|
|
99
108
|
notWord: "not",
|
|
@@ -142,6 +151,8 @@ export const ENGLISH_COPY = {
|
|
|
142
151
|
emptyFiltered: "Nothing matches what is on.",
|
|
143
152
|
countOne: "1 record",
|
|
144
153
|
count: "{count} records",
|
|
154
|
+
peek: "Quick look",
|
|
155
|
+
open: "Open",
|
|
145
156
|
},
|
|
146
157
|
activity: {
|
|
147
158
|
bySystem: "the system",
|
|
@@ -243,6 +254,8 @@ export const ENGLISH_COPY = {
|
|
|
243
254
|
addRow: "Add a row",
|
|
244
255
|
empty: "No lines yet.",
|
|
245
256
|
remove: "Remove the line",
|
|
257
|
+
reorder: "Move the row",
|
|
258
|
+
reorderHint: "Drag it, or Alt + ↑ / ↓",
|
|
246
259
|
},
|
|
247
260
|
picker: {
|
|
248
261
|
placeholder: "pick one…",
|
|
@@ -252,8 +265,19 @@ export const ENGLISH_COPY = {
|
|
|
252
265
|
more: "{count} more",
|
|
253
266
|
refine: "— narrow the filter",
|
|
254
267
|
open: "Open",
|
|
255
|
-
browseAll: "
|
|
268
|
+
browseAll: "Search more…",
|
|
269
|
+
create: "Create «{name}»",
|
|
270
|
+
createAndEdit: "Create and edit…",
|
|
271
|
+
matched: "matches",
|
|
256
272
|
loadingMore: "loading more…",
|
|
273
|
+
openIn: {
|
|
274
|
+
modal: "Open in a modal",
|
|
275
|
+
peek: "Quick look",
|
|
276
|
+
page: "Open as the page",
|
|
277
|
+
side: "Open beside",
|
|
278
|
+
window: "Open in a window",
|
|
279
|
+
},
|
|
280
|
+
openMore: "Open in…",
|
|
257
281
|
},
|
|
258
282
|
cell: {
|
|
259
283
|
missing: "missing",
|
|
@@ -265,10 +289,6 @@ export const ENGLISH_COPY = {
|
|
|
265
289
|
invalid: "invalid date",
|
|
266
290
|
noDate: "no date",
|
|
267
291
|
},
|
|
268
|
-
drill: {
|
|
269
|
-
back: "Back to {name}",
|
|
270
|
-
trail: "Opened from",
|
|
271
|
-
},
|
|
272
292
|
dialog: {
|
|
273
293
|
expand: "Expand to a panel",
|
|
274
294
|
cancel: "Cancel",
|
|
@@ -336,14 +356,20 @@ export const ENGLISH_COPY = {
|
|
|
336
356
|
total: "Total",
|
|
337
357
|
rows: "rows",
|
|
338
358
|
open: "Open {row} × {column}",
|
|
359
|
+
measures: "Measures",
|
|
360
|
+
rowsAxis: "Rows",
|
|
361
|
+
columnsAxis: "Columns",
|
|
362
|
+
addLevel: "Add to {axis}",
|
|
363
|
+
removeLevel: "Remove {level}",
|
|
364
|
+
swap: "Swap rows and columns",
|
|
365
|
+
download: "Download",
|
|
366
|
+
fromSearch: "from the search's grouping",
|
|
339
367
|
},
|
|
340
368
|
person: {
|
|
341
369
|
unassigned: "unassigned",
|
|
342
|
-
contact: "Contact",
|
|
343
370
|
email: "Write an email",
|
|
344
371
|
call: "Call",
|
|
345
372
|
whatsapp: "WhatsApp",
|
|
346
|
-
open: "Open profile",
|
|
347
373
|
},
|
|
348
374
|
lines: {
|
|
349
375
|
add: "Add a line",
|
|
@@ -367,6 +393,50 @@ export const ENGLISH_COPY = {
|
|
|
367
393
|
undo: "Undo",
|
|
368
394
|
table: "Lines",
|
|
369
395
|
},
|
|
396
|
+
priority: {
|
|
397
|
+
label: "Priority",
|
|
398
|
+
level: "{value} of {max}",
|
|
399
|
+
none: "no priority",
|
|
400
|
+
},
|
|
401
|
+
board: {
|
|
402
|
+
emptyLane: "Nothing in this stage.",
|
|
403
|
+
moveHint: "Drag it, or Alt + ← / → to move it to another stage",
|
|
404
|
+
moved: "{name} moved to {column}",
|
|
405
|
+
quickCreate: "Quick create in {column}",
|
|
406
|
+
quickPlaceholder: "Name… (Enter creates)",
|
|
407
|
+
fold: "Fold {column}",
|
|
408
|
+
unfold: "Unfold {column}",
|
|
409
|
+
addColumn: "Add a stage",
|
|
410
|
+
addColumnPlaceholder: "Stage name… (Enter adds)",
|
|
411
|
+
},
|
|
412
|
+
timeline: {
|
|
413
|
+
prev: "Previous",
|
|
414
|
+
next: "Next",
|
|
415
|
+
today: "Today",
|
|
416
|
+
goTo: "Go to a date",
|
|
417
|
+
zoom: "Zoom",
|
|
418
|
+
zoomIn: "Zoom in",
|
|
419
|
+
zoomOut: "Zoom out",
|
|
420
|
+
fullscreen: "Full screen",
|
|
421
|
+
exitFullscreen: "Exit full screen",
|
|
422
|
+
scale: "Scale",
|
|
423
|
+
scales: { day: "Day", week: "Week", month: "Month", year: "Year" },
|
|
424
|
+
moveHint: "Drag it to move it, its right edge to stretch it; Alt + arrows from the keyboard",
|
|
425
|
+
moved: "{name}: {range}",
|
|
426
|
+
create: "Create in {row} · {at}",
|
|
427
|
+
},
|
|
428
|
+
kanbanState: {
|
|
429
|
+
label: "State",
|
|
430
|
+
normal: "In progress",
|
|
431
|
+
done: "Ready for the next stage",
|
|
432
|
+
blocked: "Blocked",
|
|
433
|
+
},
|
|
434
|
+
activityState: {
|
|
435
|
+
none: "No activities",
|
|
436
|
+
overdue: "Overdue",
|
|
437
|
+
today: "Due today",
|
|
438
|
+
planned: "Planned",
|
|
439
|
+
},
|
|
370
440
|
relation: {
|
|
371
441
|
open: "Open",
|
|
372
442
|
none: "Not set",
|
|
@@ -480,7 +550,6 @@ export function mergeCopy(over) {
|
|
|
480
550
|
picker: { ...ENGLISH_COPY.picker, ...over.picker },
|
|
481
551
|
cell: { ...ENGLISH_COPY.cell, ...over.cell },
|
|
482
552
|
time: { ...ENGLISH_COPY.time, ...over.time },
|
|
483
|
-
drill: { ...ENGLISH_COPY.drill, ...over.drill },
|
|
484
553
|
dialog: { ...ENGLISH_COPY.dialog, ...over.dialog },
|
|
485
554
|
report: { ...ENGLISH_COPY.report, ...over.report },
|
|
486
555
|
builder: { ...ENGLISH_COPY.builder, ...over.builder },
|
|
@@ -488,6 +557,11 @@ export function mergeCopy(over) {
|
|
|
488
557
|
person: { ...ENGLISH_COPY.person, ...over.person },
|
|
489
558
|
lines: { ...ENGLISH_COPY.lines, ...over.lines },
|
|
490
559
|
lineItems: { ...ENGLISH_COPY.lineItems, ...over.lineItems },
|
|
560
|
+
priority: { ...ENGLISH_COPY.priority, ...over.priority },
|
|
561
|
+
board: { ...ENGLISH_COPY.board, ...over.board },
|
|
562
|
+
kanbanState: { ...ENGLISH_COPY.kanbanState, ...over.kanbanState },
|
|
563
|
+
timeline: { ...ENGLISH_COPY.timeline, ...over.timeline },
|
|
564
|
+
activityState: { ...ENGLISH_COPY.activityState, ...over.activityState },
|
|
491
565
|
relation: { ...ENGLISH_COPY.relation, ...over.relation },
|
|
492
566
|
relationCard: { ...ENGLISH_COPY.relationCard, ...over.relationCard },
|
|
493
567
|
totals: { ...ENGLISH_COPY.totals, ...over.totals },
|
|
@@ -2,7 +2,7 @@ export { currentCopy, currentCopyLocale, ENGLISH_COPY, fillCopy, installCopy, me
|
|
|
2
2
|
export { byDensity, type Density, DensityProvider, useDensity, } from "./density.js";
|
|
3
3
|
export { bySurface, SurfaceProvider, useSurface } from "./surface.js";
|
|
4
4
|
export { applyTheme, isTheme, type ResolvedTheme, resolveTheme, type Theme, THEME_ATTRIBUTE, ThemeProvider, type ThemeProviderProps, THEMES, useTheme, } from "./theme.js";
|
|
5
|
-
export type { Size, Surface, Tone } from "./types.js";
|
|
5
|
+
export type { OpenTarget, Size, Surface, Tone } from "./types.js";
|
|
6
6
|
/** El castellano del sistema, para quien lo quiera instalar entero. */
|
|
7
7
|
export { SPANISH_COPY } from "./copy.es.js";
|
|
8
8
|
export { flatten, loose, pick, pickAll, propsOf, slot, slotOf, type Slotted, } from "./slots.js";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a typed search falls inside a text — «tería» inside «Ferretería» — so a list can SHOW
|
|
3
|
+
* why each option is there.
|
|
4
|
+
*
|
|
5
|
+
* Context: a picker filters accent- and case-insensitively (React Aria's `useFilter`, base
|
|
6
|
+
* sensitivity): «ferreteria» finds «Ferretería». Highlighting has to agree with it, or the
|
|
7
|
+
* option is listed with nothing marked and reads as a wrong match. So the text is folded the
|
|
8
|
+
* same way — decomposed, marks dropped, lower-cased in the locale — while remembering which
|
|
9
|
+
* original character each folded one came from, and the spans are cut on the ORIGINAL text:
|
|
10
|
+
* what is drawn keeps its accents.
|
|
11
|
+
*/
|
|
12
|
+
export type MatchSpan = {
|
|
13
|
+
text: string;
|
|
14
|
+
hit: boolean;
|
|
15
|
+
};
|
|
16
|
+
/** The text cut into what matched the query and what did not, in order. An empty query (or
|
|
17
|
+
* one that does not occur) is one span with no hit. */
|
|
18
|
+
export declare function matchSpans(text: string, query: string, locale?: string): MatchSpan[];
|
|
19
|
+
/** Whether the query occurs in the text, folded the same way as `matchSpans`. */
|
|
20
|
+
export declare function matches(text: string, query: string, locale?: string): boolean;
|
|
21
|
+
/** The word of a hidden search text where the query fell — the code «CEM-IP30» out of
|
|
22
|
+
* «CEM-IP30 7771234000017» — to say why an option whose name does not match is listed. */
|
|
23
|
+
export declare function matchedWord(text: string, query: string, locale?: string): string | null;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a typed search falls inside a text — «tería» inside «Ferretería» — so a list can SHOW
|
|
3
|
+
* why each option is there.
|
|
4
|
+
*
|
|
5
|
+
* Context: a picker filters accent- and case-insensitively (React Aria's `useFilter`, base
|
|
6
|
+
* sensitivity): «ferreteria» finds «Ferretería». Highlighting has to agree with it, or the
|
|
7
|
+
* option is listed with nothing marked and reads as a wrong match. So the text is folded the
|
|
8
|
+
* same way — decomposed, marks dropped, lower-cased in the locale — while remembering which
|
|
9
|
+
* original character each folded one came from, and the spans are cut on the ORIGINAL text:
|
|
10
|
+
* what is drawn keeps its accents.
|
|
11
|
+
*/
|
|
12
|
+
function fold(char, locale) {
|
|
13
|
+
return char.normalize("NFD").replace(/\p{M}/gu, "").toLocaleLowerCase(locale);
|
|
14
|
+
}
|
|
15
|
+
/** The text cut into what matched the query and what did not, in order. An empty query (or
|
|
16
|
+
* one that does not occur) is one span with no hit. */
|
|
17
|
+
export function matchSpans(text, query, locale) {
|
|
18
|
+
const wanted = [...query.trim()].map((char) => fold(char, locale)).join("");
|
|
19
|
+
if (wanted === "")
|
|
20
|
+
return [{ text, hit: false }];
|
|
21
|
+
/* `origin[i]` is where, in the original text, folded character i came from. One more entry
|
|
22
|
+
at the end maps «the end of the folded text» to the end of the original. */
|
|
23
|
+
let folded = "";
|
|
24
|
+
const origin = [];
|
|
25
|
+
let at = 0;
|
|
26
|
+
for (const char of text) {
|
|
27
|
+
const piece = fold(char, locale);
|
|
28
|
+
for (let k = 0; k < piece.length; k += 1)
|
|
29
|
+
origin.push(at);
|
|
30
|
+
folded += piece;
|
|
31
|
+
at += char.length;
|
|
32
|
+
}
|
|
33
|
+
origin.push(text.length);
|
|
34
|
+
const spans = [];
|
|
35
|
+
let cursor = 0;
|
|
36
|
+
let found = folded.indexOf(wanted);
|
|
37
|
+
while (found !== -1) {
|
|
38
|
+
const start = origin[found] ?? text.length;
|
|
39
|
+
const end = origin[found + wanted.length] ?? text.length;
|
|
40
|
+
if (start > cursor)
|
|
41
|
+
spans.push({ text: text.slice(cursor, start), hit: false });
|
|
42
|
+
if (end > start)
|
|
43
|
+
spans.push({ text: text.slice(start, end), hit: true });
|
|
44
|
+
cursor = Math.max(cursor, end);
|
|
45
|
+
found = folded.indexOf(wanted, found + wanted.length);
|
|
46
|
+
}
|
|
47
|
+
if (cursor < text.length)
|
|
48
|
+
spans.push({ text: text.slice(cursor), hit: false });
|
|
49
|
+
return spans.length === 0 ? [{ text, hit: false }] : spans;
|
|
50
|
+
}
|
|
51
|
+
/** Whether the query occurs in the text, folded the same way as `matchSpans`. */
|
|
52
|
+
export function matches(text, query, locale) {
|
|
53
|
+
return matchSpans(text, query, locale).some((span) => span.hit);
|
|
54
|
+
}
|
|
55
|
+
/** The word of a hidden search text where the query fell — the code «CEM-IP30» out of
|
|
56
|
+
* «CEM-IP30 7771234000017» — to say why an option whose name does not match is listed. */
|
|
57
|
+
export function matchedWord(text, query, locale) {
|
|
58
|
+
for (const word of text.split(/\s+/)) {
|
|
59
|
+
if (word !== "" && matches(word, query, locale))
|
|
60
|
+
return word;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
@@ -52,7 +52,7 @@ export declare function slotOf<Name extends string>(node: ReactNode): Name | und
|
|
|
52
52
|
* medio del árbol —lo que escribe cualquiera que ponga dos ranuras bajo un
|
|
53
53
|
* condicional— escondería las ranuras que tiene adentro.
|
|
54
54
|
*/
|
|
55
|
-
export declare function flatten(children: ReactNode): ReactNode[];
|
|
55
|
+
export declare function flatten(children: ReactNode, prefix?: string): ReactNode[];
|
|
56
56
|
/** La primera ranura de ese nombre. */
|
|
57
57
|
export declare function pick<Name extends string>(nodes: readonly ReactNode[], name: Name): ReactNode | undefined;
|
|
58
58
|
/** Todas las ranuras de ese nombre, en el orden en que se escribieron. Lo usa el
|