@ai-matrx/records-ui 0.95.19 → 0.98.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.
- package/CHANGELOG.md +92 -0
- package/dist/index.cjs +7522 -5877
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +244 -13
- package/dist/index.d.ts +244 -13
- package/dist/index.js +7045 -5380
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs +19 -4
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js +18 -3
- package/dist/pickers.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,97 @@
|
|
|
1
1
|
# Changelog — @ai-matrx/records-ui
|
|
2
2
|
|
|
3
|
+
## 0.98.3
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/records-ui/v0.96.0..npm/records-ui/v0.98.3 -- apps/shared/records-ui`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.98.2
|
|
10
|
+
### (TABLE-EXPERIENCE item 4)
|
|
11
|
+
|
|
12
|
+
**Break down** (BREAK-DOWN): a "Break down…" entry in the table's one action list (group built-on) asks the store's own drill definition for the columns, lets the person pick one with the design-system Select, and keeps the view grouped by it through `groupingFromQuestion`; disabled with "No saved view yet" or "No column to break down by". `breakDown.tsx`.
|
|
13
|
+
|
|
14
|
+
**Saved views, shareable and exportable** (VIEWS-B):
|
|
15
|
+
- **Copy link to view** in the table's ⋯ menu (Share group): copies `<table link>?view=<saved view id>`, which the page already opens on. Disabled with "No saved view yet" when none is active. `viewShare.ts`.
|
|
16
|
+
- **Download CSV** in the same group: one press, no rail — the rows the current view shows (its filter and sort, read through the store's page door, every page to 5,000 rows; "First N rows only" when cut), its visible columns in its order.
|
|
17
|
+
- The **Export rail** now writes the same view's rows and columns (`ExportMenu` prop `view`, `ViewReading`); `rowsForFile` and `download` are exported from `ExportMenu`. `viewExport.ts`.
|
|
18
|
+
|
|
19
|
+
**List layout, quick add in place, card fields** (VIEWS-A, champion Notion/Airtable):
|
|
20
|
+
- **List** is a sixth layout (`VIEW_LAYOUTS`, kept by the store: `STORE_KEPT_LAYOUTS`; `?view=list` now opens it). `ListView`: one compact row per record (title, then the shown fields inline via `RecordValue`), grouped by the grid's own `presentation.grouping.field`, "+ New" at the end of each group pre-filled with that group's value, a "Fields shown" picker writing `presentation.hiddenFields`.
|
|
21
|
+
- **+ New in place** at the foot of every board column (the value a drop there writes) and as the gallery's last card; both open the new record. Offered only when the host lets the person add records and they may write the table; never on a computed group column.
|
|
22
|
+
- **Card fields** on the board: a "Card fields" picker (the gallery's control, now `CardFieldsPicker` in `cardFields.tsx`) saves `presentation.hiddenFields`, and cards draw the shown fields under the title. `VIEW_KEYS` mirrors the store: `hiddenFields` for kanban/calendar/timeline/list, `grouping` for list.
|
|
23
|
+
|
|
24
|
+
## 0.98.0
|
|
25
|
+
|
|
26
|
+
**Sheet adoption** (v7 lane FINISH-THE-SWITCH, FTS-5 — what the older Sheet did better, now in the store grid):
|
|
27
|
+
- **Cut in the right-click menu** — "Cut cell" / "Cut n cells" beside Copy, Paste, Clear; same as Ctrl-X.
|
|
28
|
+
- **The view in the address bar** — `TablePage` props `viewAddress` (read once on arrival) and
|
|
29
|
+
`onViewAddressChange` (the look as it differs from the saved view: sort, column filters, search, hidden
|
|
30
|
+
columns, page). The package never touches a URL; `viewAddressFromParams` / `viewAddressToParams` /
|
|
31
|
+
`VIEW_ADDRESS_KEYS` are the words (`sort`, `cf`, `q`, `hide`, `page`). "Reset view" in "Your look" now
|
|
32
|
+
also returns the grid's sort, filters, search and page.
|
|
33
|
+
- **Get reference…** in the table's ⋯ menu (whole table, columns only) through the host's content-transfer
|
|
34
|
+
`reference` port; absent without one. `TableReferenceDialog`.
|
|
35
|
+
- **Clean column…** in the column header menu: tidy a text column across EVERY row (hidden characters, odd
|
|
36
|
+
spaces, trim, curly quotes, wrapping markup, HTML entities), review, one bulk write, one Undo step.
|
|
37
|
+
`columnCleanup.ts`, `ColumnCleanDialog`.
|
|
38
|
+
- **Table settings** hold the description (`metadata.description`) and the row label. `TableDetails`.
|
|
39
|
+
|
|
40
|
+
**Consumer action:** pass `viewAddress` / `onViewAddressChange` on the table page route (matrx-frontend does).
|
|
41
|
+
|
|
42
|
+
**Duplicate a table from its menu** (v7 lane TABLE-EXPERIENCE, item 3). `TableDuplicateDialog` — name
|
|
43
|
+
("<name> (copy)"), "Copy its records" (on), the copy's progress pass by pass, what was copied and what a
|
|
44
|
+
copy never carries, then "Open the copy" — over the live `custom.table_duplicate` door. The table page's
|
|
45
|
+
⋯ Duplicate opens it (a host's own `actionHost.duplicate` still wins; `actionHost.onDuplicated` opens the
|
|
46
|
+
copy, else its path is followed). Exports `TableDuplicateDialog`, `copyNameFor`, `duplicateProgressWords`.
|
|
47
|
+
|
|
48
|
+
**Consumer action:** list menus (Data home rows) bind their `duplicate` handler to open
|
|
49
|
+
`TableDuplicateDialog`.
|
|
50
|
+
|
|
51
|
+
**A formula over a "source archived" column says so** (item 7): an empty formula cell whose input holds
|
|
52
|
+
the store's source-archived answer draws "Source archived" (archived column on hover), never a blank
|
|
53
|
+
(`formulaSourceArchived`).
|
|
54
|
+
|
|
55
|
+
**A grid right-click is the record's menu** (item 5, Airtable/Notion): on a cell the record's section comes
|
|
56
|
+
first and is primary — Open record, **Rename** (opens the name cell in place), Duplicate, **Copy link**,
|
|
57
|
+
Copy row · Merge with…, Link a record… · Insert above/below, Row history · **Archive record** (was "Delete
|
|
58
|
+
row…") — then the cell's own verbs, the column and the table. `GridMenuActions.renameRow`/`copyRecordLink`.
|
|
59
|
+
|
|
60
|
+
**A table an app's code depends on is archived on purpose, in two steps** (item 6): Settings / ⋯ Archive
|
|
61
|
+
table on a `code_depends` table opens `ArchiveDeliberatelyDialog` — what it breaks, then the typed slug and a
|
|
62
|
+
reason — over `custom.table_archive_deliberately` (looped to done). `codeDependsRefusal(error)` reads the
|
|
63
|
+
store's refusal for any host list (Data home).
|
|
64
|
+
|
|
65
|
+
**The record page's Ask opens on a press** ("Ask about this record"): a conversation is started only when
|
|
66
|
+
somebody asks, never by a visit.
|
|
67
|
+
|
|
68
|
+
## 0.97.0
|
|
69
|
+
|
|
70
|
+
**A new table takes all its columns at once** (v7 lane TABLE-EXPERIENCE, item 2). TablesHome's New table
|
|
71
|
+
box gains a Columns box: paste a header row from a sheet, a list (one a line) or a sentence ("clients
|
|
72
|
+
with name, email, phone, start date and status") and each column shows as a chip typed from its name
|
|
73
|
+
(email, phone, link, date, date and time, money, percent, number, yes/no, choice — Status starts with
|
|
74
|
+
Not started / In progress / Done —, several choices, formatted text), changeable before the ONE Create
|
|
75
|
+
press, which declares the table with every column (`declareTable` `fields`). New exports in
|
|
76
|
+
`newTableColumns.ts`: `columnNamesFrom`, `columnFromName`, `columnsFrom`, `fieldsForNewColumns`,
|
|
77
|
+
`NEW_COLUMN_TYPES`. No consumer action.
|
|
78
|
+
|
|
79
|
+
## 0.96.0
|
|
80
|
+
|
|
81
|
+
**A record is a page** (v7 lane TABLE-EXPERIENCE, item 1). `RecordPanel onPage` now draws, under the
|
|
82
|
+
record's fields: the record's **body** (`RecordBody` — the table's first formatted-text column, edited in
|
|
83
|
+
the host's rich editor and saved on a pause through the versioned write door; a table without one offers
|
|
84
|
+
"Write on this page", which adds a "Notes" column), each **link column as a list** of the records it
|
|
85
|
+
points at, the reverse links, and the record's own **Ask** (the `chat` port, open). The page title is the
|
|
86
|
+
record's name at page size; the body and link columns leave the field list on the page only. The table's
|
|
87
|
+
rail is unchanged.
|
|
88
|
+
|
|
89
|
+
New host port `editRichText?: (props: RichTextEditProps) => ReactNode`. Exports `RecordBody`,
|
|
90
|
+
`bodyFieldOf`, `BODY_COLUMN_NAME`, `BODY_SAVE_PAUSE_MS`, `drawnBelowOnPage`, `RichTextEditProps`.
|
|
91
|
+
|
|
92
|
+
**Consumer action:** bind `editRichText` to the app's one rich editor (matrx-frontend: `RichEditor`
|
|
93
|
+
with `chrome="bare"`). Unbound, the body is read-only.
|
|
94
|
+
|
|
3
95
|
## 0.95.19
|
|
4
96
|
|
|
5
97
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|