@ai-matrx/records-ui 0.7.0 → 0.9.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/CHANGELOG.md +84 -0
- package/dist/index.cjs +1896 -1387
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +135 -6
- package/dist/index.d.ts +135 -6
- package/dist/index.js +1790 -1276
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,89 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.9.0
|
|
4
|
+
|
|
5
|
+
**Sharing reaches the record and table screens (SCR-N-5).** `ShareControl` puts a
|
|
6
|
+
Share button on the record peek and on the table page, and hands the subject to
|
|
7
|
+
the host through a new `share` port on `<RecordsUiProvider>`.
|
|
8
|
+
|
|
9
|
+
This package ships NO share dialog, deliberately, for the same reason it ships no
|
|
10
|
+
chat: AI Matrx has exactly one sharing surface, and a second one here would give
|
|
11
|
+
the platform two answers to "who can see this". With no `share` port bound there
|
|
12
|
+
is NO BUTTON — not a greyed one, not one that opens an empty panel — and
|
|
13
|
+
`NO_SHARE_REASON` names the port for anything that asks why.
|
|
14
|
+
|
|
15
|
+
A Table is a record in this store, so one control, one subject shape and one
|
|
16
|
+
dialog serve both screens; `kind` only changes the noun in the sentences.
|
|
17
|
+
|
|
18
|
+
New exports: `ShareControl`, `useCanShare`, `shareUnavailableReason`,
|
|
19
|
+
`NO_SHARE_REASON`, and the `ShareSubject` type.
|
|
20
|
+
|
|
21
|
+
### Consumer action
|
|
22
|
+
|
|
23
|
+
Bind `share` on your `<RecordsMount host={{ … }}>` with the app's own sharing
|
|
24
|
+
dialog, e.g. in matrx-frontend:
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { recordStoreShare } from "@/features/sharing/components/RecordStoreShareSurface";
|
|
28
|
+
|
|
29
|
+
<RecordsMount host={{ Link, density: "condensed", share: recordStoreShare }} …>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Leave it out and nothing changes — the screens render exactly as they did in
|
|
33
|
+
0.8.0, with no Share button.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## 0.8.0
|
|
37
|
+
|
|
38
|
+
**The worst finding of the 19 September verdict: "Add field" opened a proper
|
|
39
|
+
panel and then refused everything.** Number and Date were refused as undeclared,
|
|
40
|
+
Person was refused as a Formula, a choice list demanded a table the panel could
|
|
41
|
+
not name, and before any of those the Key box was blank, unmarked and required.
|
|
42
|
+
A table made with the product's own button had exactly one column.
|
|
43
|
+
|
|
44
|
+
- **The panel collects an INTENTION, and the store decides the rest.**
|
|
45
|
+
`FieldEditor` writes through `custom.field_declare` (`useFieldMutation`) and no
|
|
46
|
+
longer assembles a Field document of its own. It never sets a behaviour, a
|
|
47
|
+
format, a unit, a relation target, a relation maximum, a compute_on or a
|
|
48
|
+
pattern Rule — every one of those was a second place for the thirteen types to
|
|
49
|
+
be wrong.
|
|
50
|
+
- **Sixteen things a column can hold, in a menu under four headings**, each with
|
|
51
|
+
one line saying what it is FOR. `fieldTypes.ts` is new;
|
|
52
|
+
`parityTypesWithNoExplanation()` fails the suite the moment the store ships a
|
|
53
|
+
fourteenth parity type nobody has written a sentence for.
|
|
54
|
+
- **A choice list is defined where a person defines it** — the words go in a box
|
|
55
|
+
and the store keeps them as a Table (FLD-5 / FLD-6 untouched). Nobody is asked
|
|
56
|
+
to build a table before they can have a dropdown.
|
|
57
|
+
- **A Person field offers people.** It resolves to a relation at the kernel
|
|
58
|
+
Person Table, decided by the store.
|
|
59
|
+
- **The Key box is gone.** The key is derived from the name and shown, never
|
|
60
|
+
demanded.
|
|
61
|
+
- **A field is edited and removed from the same panel**, and removal names the
|
|
62
|
+
consequence before the second press. `TableSettings` retires through the field
|
|
63
|
+
door rather than deleting the record, so the TABLE stops declaring the column
|
|
64
|
+
too; the three unsafe removals (the title field, the last field, one another
|
|
65
|
+
field reads through) are refused by name.
|
|
66
|
+
- **Ids stopped being drawn as values.** `RecordLabelProvider` resolves a choice
|
|
67
|
+
or a relation id to the name of the record it points at, once per Field, for
|
|
68
|
+
every read-only surface — the Kanban board's column headings were bare
|
|
69
|
+
36-character identifiers.
|
|
70
|
+
- **`3` in `units` no longer renders as `units3`.** `editorKindFor` called any
|
|
71
|
+
range field with a unit longer than one character a currency; a currency is a
|
|
72
|
+
range whose FORMAT is currency, which is what the store's own `parity_type`
|
|
73
|
+
says.
|
|
74
|
+
- **One word per type everywhere** — the settings row says what the panel
|
|
75
|
+
offered, and the store's "made of" sentences (`REC-31: a File record reached
|
|
76
|
+
through a relation`, `evaluated by custom.rule_eval`) are out of the UI.
|
|
77
|
+
- The person picker draws a name and an email as two facts, not one run-on
|
|
78
|
+
string.
|
|
79
|
+
|
|
80
|
+
### Consumer action
|
|
81
|
+
|
|
82
|
+
`renderValue` still works and still draws an unresolved id as "Loading…". A host
|
|
83
|
+
drawing values outside `RecordsMount` should render `<RecordValue>` (or wrap in
|
|
84
|
+
`RecordLabelProvider`) so ids resolve to names.
|
|
85
|
+
|
|
86
|
+
|
|
3
87
|
## 0.7.0
|
|
4
88
|
|
|
5
89
|
What the first headless walk of 0.6.0 through a real browser found, in the same
|