@protobase/schema 0.58.7 → 0.59.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/dist/access/roles.d.ts +1 -1
- package/dist/access/roles.js +1 -1
- package/dist/assistant/protocol.d.ts +1 -1
- package/dist/bottom-bar.d.ts +1 -1
- package/dist/bottom-bar.js +1 -1
- package/dist/encrypted-value.d.ts +1 -1
- package/dist/encrypted-value.js +1 -1
- package/dist/field.d.ts +6 -6
- package/dist/field.js +6 -6
- package/dist/fields.d.ts +1 -1
- package/dist/fields.js +1 -1
- package/dist/file-field.d.ts +2 -2
- package/dist/file-field.js +2 -2
- package/dist/filter/where.d.ts +1 -1
- package/dist/filter/where.js +1 -1
- package/dist/layout.d.ts +9 -9
- package/dist/layout.js +9 -9
- package/dist/model.d.ts +38 -38
- package/dist/relation-field.d.ts +1 -1
- package/dist/relation-field.js +1 -1
- package/dist/resource.d.ts +12 -12
- package/dist/resource.js +12 -12
- package/dist/user-menu.d.ts +1 -1
- package/dist/user-menu.js +1 -1
- package/dist/view-actions.d.ts +1 -1
- package/dist/view-actions.js +1 -1
- package/dist/view-columns.d.ts +1 -1
- package/dist/view-columns.js +1 -1
- package/dist/view-displays.d.ts +4 -4
- package/dist/view-displays.js +4 -4
- package/dist/view-field.d.ts +2 -2
- package/dist/view-field.js +2 -2
- package/dist/view.d.ts +17 -17
- package/dist/view.js +17 -17
- package/package.json +1 -1
package/dist/view-displays.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ export declare const displays: {
|
|
|
61
61
|
* `approximate` field is true, or its `exact` field false: its marker is drawn hollow and says so, and close enough in
|
|
62
62
|
* an area is drawn around it, the GeoJSON polygon or line its `area` field holds, else a circle of its `radius` field
|
|
63
63
|
* in metres, else one of `defaultRadius`. Named `map` unless `name` says otherwise. See
|
|
64
|
-
* [Approximate positions](website/src/content/docs/reference/ui-config.mdx#approximate-positions).
|
|
64
|
+
* [Approximate positions](docs/website/src/content/docs/reference/ui-config.mdx#approximate-positions).
|
|
65
65
|
*/
|
|
66
66
|
map: (fields: {
|
|
67
67
|
latitude: Ref;
|
|
@@ -85,7 +85,7 @@ export declare const displays: {
|
|
|
85
85
|
* puts the card back and says why; with `drag: { board: 'name' }` only between the columns the UI config's board drop
|
|
86
86
|
* of that name lists, each running its own write; with `drag: { rank: true }` a card moves within its column too. `by` must be
|
|
87
87
|
* a filterable enum field. Named `board` unless `name` says otherwise. See
|
|
88
|
-
* [Boards](website/src/content/docs/reference/ui-config.mdx#boards).
|
|
88
|
+
* [Boards](docs/website/src/content/docs/reference/ui-config.mdx#boards).
|
|
89
89
|
*/
|
|
90
90
|
board: (fields: {
|
|
91
91
|
by: Ref;
|
|
@@ -102,7 +102,7 @@ export declare const displays: {
|
|
|
102
102
|
* the arrow keys, saves the record with `start` and `end` moved by the same days, as one update with its ETag, so the
|
|
103
103
|
* resource's access rules and `validate` decide, and a refusal puts the event back and says why. `start` must be a
|
|
104
104
|
* filterable date or timestamp field and `end` a filterable field of the same type. Named `calendar` unless `name`
|
|
105
|
-
* says otherwise. See [Calendars](website/src/content/docs/reference/ui-config.mdx#calendars).
|
|
105
|
+
* says otherwise. See [Calendars](docs/website/src/content/docs/reference/ui-config.mdx#calendars).
|
|
106
106
|
*/
|
|
107
107
|
calendar: (fields: {
|
|
108
108
|
start: Ref;
|
|
@@ -117,7 +117,7 @@ export declare const displays: {
|
|
|
117
117
|
* moving it with the arrow keys, saves the record with `start` and `end` moved by the same days, as one update with
|
|
118
118
|
* its ETag, so the resource's access rules and `validate` decide, and a refusal puts the bar back and says why.
|
|
119
119
|
* `start` must be a filterable date or timestamp field and `end` a filterable field of the same type. Named
|
|
120
|
-
* `timeline` unless `name` says otherwise. See [Timelines](website/src/content/docs/reference/ui-config.mdx#timelines).
|
|
120
|
+
* `timeline` unless `name` says otherwise. See [Timelines](docs/website/src/content/docs/reference/ui-config.mdx#timelines).
|
|
121
121
|
*/
|
|
122
122
|
timeline: (fields: {
|
|
123
123
|
start: Ref;
|
package/dist/view-displays.js
CHANGED
|
@@ -55,7 +55,7 @@ const displays = {
|
|
|
55
55
|
* `approximate` field is true, or its `exact` field false: its marker is drawn hollow and says so, and close enough in
|
|
56
56
|
* an area is drawn around it, the GeoJSON polygon or line its `area` field holds, else a circle of its `radius` field
|
|
57
57
|
* in metres, else one of `defaultRadius`. Named `map` unless `name` says otherwise. See
|
|
58
|
-
* [Approximate positions](website/src/content/docs/reference/ui-config.mdx#approximate-positions).
|
|
58
|
+
* [Approximate positions](docs/website/src/content/docs/reference/ui-config.mdx#approximate-positions).
|
|
59
59
|
*/
|
|
60
60
|
map: (fields, o = {}) => ({
|
|
61
61
|
kind: "map",
|
|
@@ -81,7 +81,7 @@ const displays = {
|
|
|
81
81
|
* puts the card back and says why; with `drag: { board: 'name' }` only between the columns the UI config's board drop
|
|
82
82
|
* of that name lists, each running its own write; with `drag: { rank: true }` a card moves within its column too. `by` must be
|
|
83
83
|
* a filterable enum field. Named `board` unless `name` says otherwise. See
|
|
84
|
-
* [Boards](website/src/content/docs/reference/ui-config.mdx#boards).
|
|
84
|
+
* [Boards](docs/website/src/content/docs/reference/ui-config.mdx#boards).
|
|
85
85
|
*/
|
|
86
86
|
board: (fields, o = {}) => ({
|
|
87
87
|
kind: "board",
|
|
@@ -101,7 +101,7 @@ const displays = {
|
|
|
101
101
|
* the arrow keys, saves the record with `start` and `end` moved by the same days, as one update with its ETag, so the
|
|
102
102
|
* resource's access rules and `validate` decide, and a refusal puts the event back and says why. `start` must be a
|
|
103
103
|
* filterable date or timestamp field and `end` a filterable field of the same type. Named `calendar` unless `name`
|
|
104
|
-
* says otherwise. See [Calendars](website/src/content/docs/reference/ui-config.mdx#calendars).
|
|
104
|
+
* says otherwise. See [Calendars](docs/website/src/content/docs/reference/ui-config.mdx#calendars).
|
|
105
105
|
*/
|
|
106
106
|
calendar: (fields, o = {}) => ({
|
|
107
107
|
kind: "calendar",
|
|
@@ -119,7 +119,7 @@ const displays = {
|
|
|
119
119
|
* moving it with the arrow keys, saves the record with `start` and `end` moved by the same days, as one update with
|
|
120
120
|
* its ETag, so the resource's access rules and `validate` decide, and a refusal puts the bar back and says why.
|
|
121
121
|
* `start` must be a filterable date or timestamp field and `end` a filterable field of the same type. Named
|
|
122
|
-
* `timeline` unless `name` says otherwise. See [Timelines](website/src/content/docs/reference/ui-config.mdx#timelines).
|
|
122
|
+
* `timeline` unless `name` says otherwise. See [Timelines](docs/website/src/content/docs/reference/ui-config.mdx#timelines).
|
|
123
123
|
*/
|
|
124
124
|
timeline: (fields, o = {}) => ({
|
|
125
125
|
kind: "timeline",
|
package/dist/view-field.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare class FieldView<N extends string = string, V = unknown> {
|
|
|
29
29
|
/**
|
|
30
30
|
* Asks `question` before a person changes the value in a form or a list cell, such as a flag that is easy to set by
|
|
31
31
|
* mistake: once as the value first moves away from the saved one, not on every key. Cancelling keeps the value. See
|
|
32
|
-
* [Confirming a change](website/src/content/docs/reference/ui-config.mdx#confirming-a-change).
|
|
32
|
+
* [Confirming a change](docs/website/src/content/docs/reference/ui-config.mdx#confirming-a-change).
|
|
33
33
|
*/
|
|
34
34
|
confirm(question: string): FieldView<N, V>;
|
|
35
35
|
/**
|
|
@@ -69,7 +69,7 @@ export declare class FieldView<N extends string = string, V = unknown> {
|
|
|
69
69
|
* Shows and edits the field with the field type a plugin registers under `name` (`definePlugin({ fields })`), given
|
|
70
70
|
* `props`, such as `r.score.widget('rating', { max: 5 })`, or with the built-in `members`, which picks an
|
|
71
71
|
* organization's members into a JSON array of user ids (see
|
|
72
|
-
* [Members](website/src/content/docs/reference/plugins.md#members)). Without that field type, or when it does not show
|
|
72
|
+
* [Members](docs/website/src/content/docs/reference/plugins.md#members)). Without that field type, or when it does not show
|
|
73
73
|
* this field's storage type, the field shows as it would without it.
|
|
74
74
|
*/
|
|
75
75
|
widget(name: string, props?: Record<string, JsonValue>): FieldView<N, V>;
|
package/dist/view-field.js
CHANGED
|
@@ -33,7 +33,7 @@ var FieldView = class FieldView {
|
|
|
33
33
|
/**
|
|
34
34
|
* Asks `question` before a person changes the value in a form or a list cell, such as a flag that is easy to set by
|
|
35
35
|
* mistake: once as the value first moves away from the saved one, not on every key. Cancelling keeps the value. See
|
|
36
|
-
* [Confirming a change](website/src/content/docs/reference/ui-config.mdx#confirming-a-change).
|
|
36
|
+
* [Confirming a change](docs/website/src/content/docs/reference/ui-config.mdx#confirming-a-change).
|
|
37
37
|
*/
|
|
38
38
|
confirm(question) {
|
|
39
39
|
if (question.trim() === "") throw new Error(`Field "${this.name}": .confirm() needs the question to ask`);
|
|
@@ -105,7 +105,7 @@ var FieldView = class FieldView {
|
|
|
105
105
|
* Shows and edits the field with the field type a plugin registers under `name` (`definePlugin({ fields })`), given
|
|
106
106
|
* `props`, such as `r.score.widget('rating', { max: 5 })`, or with the built-in `members`, which picks an
|
|
107
107
|
* organization's members into a JSON array of user ids (see
|
|
108
|
-
* [Members](website/src/content/docs/reference/plugins.md#members)). Without that field type, or when it does not show
|
|
108
|
+
* [Members](docs/website/src/content/docs/reference/plugins.md#members)). Without that field type, or when it does not show
|
|
109
109
|
* this field's storage type, the field shows as it would without it.
|
|
110
110
|
*/
|
|
111
111
|
widget(name, props) {
|
package/dist/view.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export type FieldViews<R extends {
|
|
|
34
34
|
}> = { readonly [K in keyof FieldRefs<FieldsOf<R>> & string]: FieldView<K, NonNullable<FieldRefs<FieldsOf<R>>[K]['$value']>>; };
|
|
35
35
|
/**
|
|
36
36
|
* A view of a resource, as `view(...)` starts it: how the admin shows it. Each method returns a new view, so one view
|
|
37
|
-
* can build on another. See [UI config](website/src/content/docs/reference/ui-config.mdx).
|
|
37
|
+
* can build on another. See [UI config](docs/website/src/content/docs/reference/ui-config.mdx).
|
|
38
38
|
*/
|
|
39
39
|
export declare class ViewBuilder<R extends {
|
|
40
40
|
/** The resource's fields, as `resource(...)` declares them. */
|
|
@@ -73,9 +73,9 @@ export declare class ViewBuilder<R extends {
|
|
|
73
73
|
}): ViewBuilder<R>;
|
|
74
74
|
/**
|
|
75
75
|
* Where the resource sits in the sidebar; `recent` lists a few of its records under the entry (see
|
|
76
|
-
* [Sidebar](website/src/content/docs/reference/sidebar.md#recent-records)), and `tenant: 'current'` opens it on the
|
|
77
|
-
* caller's own tenant (see [The current organization](website/src/content/docs/reference/sidebar.md#the-current-organization)),
|
|
78
|
-
* and `create` links to the create form under it (see [Create link](website/src/content/docs/reference/sidebar.md#create-link)).
|
|
76
|
+
* [Sidebar](docs/website/src/content/docs/reference/sidebar.md#recent-records)), and `tenant: 'current'` opens it on the
|
|
77
|
+
* caller's own tenant (see [The current organization](docs/website/src/content/docs/reference/sidebar.md#the-current-organization)),
|
|
78
|
+
* and `create` links to the create form under it (see [Create link](docs/website/src/content/docs/reference/sidebar.md#create-link)).
|
|
79
79
|
*/
|
|
80
80
|
nav(nav: NavInput<R>): ViewBuilder<R>;
|
|
81
81
|
/** A line under the list's title. */
|
|
@@ -87,7 +87,7 @@ export declare class ViewBuilder<R extends {
|
|
|
87
87
|
* columns that are `editable` in their cell, and other `displays` to switch to (`d.cards`, `d.map`, `d.board`, `d.calendar`, `d.timeline`, `d.custom`), one of which
|
|
88
88
|
* may be the `default` the list opens in, and what `drag` lets a user change by dragging, nothing unless it says.
|
|
89
89
|
* Throws when display or column names collide, `default` names none or an editable field is not among the columns. See
|
|
90
|
-
* [Editing in the list](website/src/content/docs/reference/ui-config.mdx#editing-in-the-list).
|
|
90
|
+
* [Editing in the list](docs/website/src/content/docs/reference/ui-config.mdx#editing-in-the-list).
|
|
91
91
|
*/
|
|
92
92
|
list(build: (r: FieldRefs<FieldsOf<R>>, d: typeof displays, c: typeof columns) => {
|
|
93
93
|
columns: Array<Ref | ListColumn>;
|
|
@@ -109,7 +109,7 @@ export declare class ViewBuilder<R extends {
|
|
|
109
109
|
* fresh view and sets its `names` (the sidebar entry, required), `nav`, `help`, `list`, `filters` and `chart`, none of
|
|
110
110
|
* which come from the view's own list. Its records open at the resource's own address. Throws on a name that does not
|
|
111
111
|
* fit an address or repeats, on anything else set, on `nav.recent`, and in `toModel` when the view has `listOf` or
|
|
112
|
-
* `searchesOf`. See [More than one list](website/src/content/docs/reference/ui-config.mdx#more-than-one-list).
|
|
112
|
+
* `searchesOf`. See [More than one list](docs/website/src/content/docs/reference/ui-config.mdx#more-than-one-list).
|
|
113
113
|
*/
|
|
114
114
|
namedList(name: string, build: (v: ViewBuilder<R>) => ViewBuilder<R>): ViewBuilder<R>;
|
|
115
115
|
/**
|
|
@@ -128,14 +128,14 @@ export declare class ViewBuilder<R extends {
|
|
|
128
128
|
* `fields` a visitor fills in, the `thanks` shown once it is sent, a `title` (the view's singular name by default) and
|
|
129
129
|
* how many submissions one client may send `perMinute` (default 5). The `anonymous` role must grant `create` of those
|
|
130
130
|
* fields; the form is the only way it creates. Each call adds a form. Throws on a name that does not fit an address, no
|
|
131
|
-
* or repeated fields, or an empty `thanks`. See [Public forms](website/src/content/docs/reference/forms.mdx).
|
|
131
|
+
* or repeated fields, or an empty `thanks`. See [Public forms](docs/website/src/content/docs/reference/forms.mdx).
|
|
132
132
|
*/
|
|
133
133
|
form(build: (r: FieldRefs<FieldsOf<R>>) => FormInput): ViewBuilder<R>;
|
|
134
134
|
/**
|
|
135
135
|
* How the record page opens to a user who may change the record: `edit`, the default, as its form; `read` as a read
|
|
136
136
|
* view, its sections as tables of labels and values, with an Edit button to the form; `locked` as the form, locked
|
|
137
137
|
* until Edit is pressed. A user who may not change it gets the read view in every mode. The form has its own address
|
|
138
|
-
* (`edit: true`), so it opens in a new tab and Back leaves it. See [The record page](website/src/content/docs/reference/ui-config.mdx#read-view-and-edit).
|
|
138
|
+
* (`edit: true`), so it opens in a new tab and Back leaves it. See [The record page](docs/website/src/content/docs/reference/ui-config.mdx#read-view-and-edit).
|
|
139
139
|
*/
|
|
140
140
|
recordMode(recordMode: RecordMode): ViewBuilder<R>;
|
|
141
141
|
/**
|
|
@@ -148,7 +148,7 @@ export declare class ViewBuilder<R extends {
|
|
|
148
148
|
/**
|
|
149
149
|
* Whether the list page offers Import, which creates or updates records from an .xlsx or CSV file the user picks
|
|
150
150
|
* (`true`, the default, to users who may create records); `.import(false)` turns it off. See
|
|
151
|
-
* [Importing records](website/src/content/docs/reference/ui-config.mdx#importing-records).
|
|
151
|
+
* [Importing records](docs/website/src/content/docs/reference/ui-config.mdx#importing-records).
|
|
152
152
|
*/
|
|
153
153
|
import(enabled: boolean): ViewBuilder<R>;
|
|
154
154
|
/**
|
|
@@ -166,23 +166,23 @@ export declare class ViewBuilder<R extends {
|
|
|
166
166
|
* What a visitor who is not signed in is told about this resource, which they could use once signed in: on its list
|
|
167
167
|
* page, in place of the list, and in the dialog of a card's favorite button or a list's "Save search" button that
|
|
168
168
|
* saves here. The page offers "Sign in", and a way to make an account: the page `signUp` names, or the app's own sign-up
|
|
169
|
-
* when the server has [open sign-up](website/src/content/docs/reference/auth.md#open-sign-up). With it, the resource keeps its place in the bottom
|
|
169
|
+
* when the server has [open sign-up](docs/website/src/content/docs/reference/auth.md#open-sign-up). With it, the resource keeps its place in the bottom
|
|
170
170
|
* bar and the sidebar of visitors. Throws when `signUp.href` is not `https:`, `http:` or `mailto:`. See
|
|
171
|
-
* [Sign-in prompts](website/src/content/docs/reference/ui-config.mdx#sign-in-prompts).
|
|
171
|
+
* [Sign-in prompts](docs/website/src/content/docs/reference/ui-config.mdx#sign-in-prompts).
|
|
172
172
|
*/
|
|
173
173
|
signIn(prompt: SignInPromptModel): ViewBuilder<R>;
|
|
174
174
|
/**
|
|
175
175
|
* A "Save search" button on the list page while its filter narrows it: it saves the filter as a record of `resource`,
|
|
176
176
|
* the signed-in user's own, whose view lists them with `.searchesOf(...)`, and takes it off again while pressed. A
|
|
177
177
|
* visitor is told what signing in gives, when that view has `.signIn(...)`. See
|
|
178
|
-
* [Saved searches](website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
178
|
+
* [Saved searches](docs/website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
179
179
|
*/
|
|
180
180
|
saveSearch(search: SaveSearchModel): ViewBuilder<R>;
|
|
181
181
|
/**
|
|
182
182
|
* Whether the list page offers Export, which saves its rows as an Excel or CSV file built in the browser: `false`
|
|
183
183
|
* takes it away, `{ maxRows }` limits how many rows a file holds. A list offers it by default. It only shapes the
|
|
184
184
|
* page: the rows and fields a file holds are those the list API gives the user. Throws when `maxRows` is not a
|
|
185
|
-
* positive whole number. See [Exports](website/src/content/docs/reference/ui-config.mdx#exports).
|
|
185
|
+
* positive whole number. See [Exports](docs/website/src/content/docs/reference/ui-config.mdx#exports).
|
|
186
186
|
*/
|
|
187
187
|
export(options: false | ExportModel): ViewBuilder<R>;
|
|
188
188
|
/**
|
|
@@ -190,7 +190,7 @@ export declare class ViewBuilder<R extends {
|
|
|
190
190
|
* shows it with the address's `values`, and the list's New button opens it for whoever may open the page, whatever the
|
|
191
191
|
* resource's `create` access. So the resource's API can refuse creates (`create: never`) while the page creates
|
|
192
192
|
* through an API function. The server refuses a page that does not exist when it starts. See
|
|
193
|
-
* [Create pages](website/src/content/docs/reference/ui-config.mdx#create-pages).
|
|
193
|
+
* [Create pages](docs/website/src/content/docs/reference/ui-config.mdx#create-pages).
|
|
194
194
|
*/
|
|
195
195
|
create(options: CreateModel): ViewBuilder<R>;
|
|
196
196
|
/**
|
|
@@ -199,7 +199,7 @@ export declare class ViewBuilder<R extends {
|
|
|
199
199
|
* page does not scroll. It reads the record with `useLayoutRecord()`. The standard record page stays at the record's
|
|
200
200
|
* address with `standard: true`, which the component links to; it shows instead while the component is missing or
|
|
201
201
|
* when it throws. Throws when `component` is a built-in block. See
|
|
202
|
-
* [Full-area record pages](website/src/content/docs/reference/ui-config.mdx#full-area-record-pages).
|
|
202
|
+
* [Full-area record pages](docs/website/src/content/docs/reference/ui-config.mdx#full-area-record-pages).
|
|
203
203
|
*/
|
|
204
204
|
record(options: {
|
|
205
205
|
component: ComponentRef<never>;
|
|
@@ -210,7 +210,7 @@ export declare class ViewBuilder<R extends {
|
|
|
210
210
|
* `unseen`, newest first, those new since the user last opened its results marked) and a link to all of them. Throws in
|
|
211
211
|
* `toModel` when `filter` or `name` is not a text field, `unseen.seenAt` not a timestamp or a control not an enum or
|
|
212
212
|
* boolean field.
|
|
213
|
-
* See [Saved searches](website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
213
|
+
* See [Saved searches](docs/website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
214
214
|
*/
|
|
215
215
|
searchesOf(pick: (r: FieldRefs<FieldsOf<R>>) => {
|
|
216
216
|
resource: string;
|
|
@@ -230,7 +230,7 @@ export declare class ViewBuilder<R extends {
|
|
|
230
230
|
}
|
|
231
231
|
/**
|
|
232
232
|
* Starts the view of a resource: how the admin shows it. Pass the resource's type, so every field reference (`r.status`)
|
|
233
|
-
* is checked against it. See [UI config](website/src/content/docs/reference/ui-config.mdx).
|
|
233
|
+
* is checked against it. See [UI config](docs/website/src/content/docs/reference/ui-config.mdx).
|
|
234
234
|
*
|
|
235
235
|
* @example
|
|
236
236
|
* ```ts
|
package/dist/view.js
CHANGED
|
@@ -33,7 +33,7 @@ const searchesOfErrors = (searches, resource) => {
|
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
35
|
* A view of a resource, as `view(...)` starts it: how the admin shows it. Each method returns a new view, so one view
|
|
36
|
-
* can build on another. See [UI config](website/src/content/docs/reference/ui-config.mdx).
|
|
36
|
+
* can build on another. See [UI config](docs/website/src/content/docs/reference/ui-config.mdx).
|
|
37
37
|
*/
|
|
38
38
|
var ViewBuilder = class ViewBuilder {
|
|
39
39
|
state;
|
|
@@ -85,9 +85,9 @@ var ViewBuilder = class ViewBuilder {
|
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* Where the resource sits in the sidebar; `recent` lists a few of its records under the entry (see
|
|
88
|
-
* [Sidebar](website/src/content/docs/reference/sidebar.md#recent-records)), and `tenant: 'current'` opens it on the
|
|
89
|
-
* caller's own tenant (see [The current organization](website/src/content/docs/reference/sidebar.md#the-current-organization)),
|
|
90
|
-
* and `create` links to the create form under it (see [Create link](website/src/content/docs/reference/sidebar.md#create-link)).
|
|
88
|
+
* [Sidebar](docs/website/src/content/docs/reference/sidebar.md#recent-records)), and `tenant: 'current'` opens it on the
|
|
89
|
+
* caller's own tenant (see [The current organization](docs/website/src/content/docs/reference/sidebar.md#the-current-organization)),
|
|
90
|
+
* and `create` links to the create form under it (see [Create link](docs/website/src/content/docs/reference/sidebar.md#create-link)).
|
|
91
91
|
*/
|
|
92
92
|
nav(nav) {
|
|
93
93
|
return this.next({ nav });
|
|
@@ -110,7 +110,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
110
110
|
* columns that are `editable` in their cell, and other `displays` to switch to (`d.cards`, `d.map`, `d.board`, `d.calendar`, `d.timeline`, `d.custom`), one of which
|
|
111
111
|
* may be the `default` the list opens in, and what `drag` lets a user change by dragging, nothing unless it says.
|
|
112
112
|
* Throws when display or column names collide, `default` names none or an editable field is not among the columns. See
|
|
113
|
-
* [Editing in the list](website/src/content/docs/reference/ui-config.mdx#editing-in-the-list).
|
|
113
|
+
* [Editing in the list](docs/website/src/content/docs/reference/ui-config.mdx#editing-in-the-list).
|
|
114
114
|
*/
|
|
115
115
|
list(build) {
|
|
116
116
|
const { columns: columns$1, sort, search, filter, editable, displays: shown = [], default: opens, drag } = build(this.refs(), displays, columns);
|
|
@@ -147,7 +147,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
147
147
|
* fresh view and sets its `names` (the sidebar entry, required), `nav`, `help`, `list`, `filters` and `chart`, none of
|
|
148
148
|
* which come from the view's own list. Its records open at the resource's own address. Throws on a name that does not
|
|
149
149
|
* fit an address or repeats, on anything else set, on `nav.recent`, and in `toModel` when the view has `listOf` or
|
|
150
|
-
* `searchesOf`. See [More than one list](website/src/content/docs/reference/ui-config.mdx#more-than-one-list).
|
|
150
|
+
* `searchesOf`. See [More than one list](docs/website/src/content/docs/reference/ui-config.mdx#more-than-one-list).
|
|
151
151
|
*/
|
|
152
152
|
namedList(name, build) {
|
|
153
153
|
const where = `View "${this.state.resource}": named list "${name}"`;
|
|
@@ -190,7 +190,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
190
190
|
* `fields` a visitor fills in, the `thanks` shown once it is sent, a `title` (the view's singular name by default) and
|
|
191
191
|
* how many submissions one client may send `perMinute` (default 5). The `anonymous` role must grant `create` of those
|
|
192
192
|
* fields; the form is the only way it creates. Each call adds a form. Throws on a name that does not fit an address, no
|
|
193
|
-
* or repeated fields, or an empty `thanks`. See [Public forms](website/src/content/docs/reference/forms.mdx).
|
|
193
|
+
* or repeated fields, or an empty `thanks`. See [Public forms](docs/website/src/content/docs/reference/forms.mdx).
|
|
194
194
|
*/
|
|
195
195
|
form(build) {
|
|
196
196
|
return this.next({ forms: [...this.state.forms ?? [], formModel(build(this.refs()))] });
|
|
@@ -199,7 +199,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
199
199
|
* How the record page opens to a user who may change the record: `edit`, the default, as its form; `read` as a read
|
|
200
200
|
* view, its sections as tables of labels and values, with an Edit button to the form; `locked` as the form, locked
|
|
201
201
|
* until Edit is pressed. A user who may not change it gets the read view in every mode. The form has its own address
|
|
202
|
-
* (`edit: true`), so it opens in a new tab and Back leaves it. See [The record page](website/src/content/docs/reference/ui-config.mdx#read-view-and-edit).
|
|
202
|
+
* (`edit: true`), so it opens in a new tab and Back leaves it. See [The record page](docs/website/src/content/docs/reference/ui-config.mdx#read-view-and-edit).
|
|
203
203
|
*/
|
|
204
204
|
recordMode(recordMode) {
|
|
205
205
|
return this.next({ recordMode });
|
|
@@ -218,7 +218,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
218
218
|
/**
|
|
219
219
|
* Whether the list page offers Import, which creates or updates records from an .xlsx or CSV file the user picks
|
|
220
220
|
* (`true`, the default, to users who may create records); `.import(false)` turns it off. See
|
|
221
|
-
* [Importing records](website/src/content/docs/reference/ui-config.mdx#importing-records).
|
|
221
|
+
* [Importing records](docs/website/src/content/docs/reference/ui-config.mdx#importing-records).
|
|
222
222
|
*/
|
|
223
223
|
import(enabled) {
|
|
224
224
|
return this.next({ import: enabled });
|
|
@@ -242,9 +242,9 @@ var ViewBuilder = class ViewBuilder {
|
|
|
242
242
|
* What a visitor who is not signed in is told about this resource, which they could use once signed in: on its list
|
|
243
243
|
* page, in place of the list, and in the dialog of a card's favorite button or a list's "Save search" button that
|
|
244
244
|
* saves here. The page offers "Sign in", and a way to make an account: the page `signUp` names, or the app's own sign-up
|
|
245
|
-
* when the server has [open sign-up](website/src/content/docs/reference/auth.md#open-sign-up). With it, the resource keeps its place in the bottom
|
|
245
|
+
* when the server has [open sign-up](docs/website/src/content/docs/reference/auth.md#open-sign-up). With it, the resource keeps its place in the bottom
|
|
246
246
|
* bar and the sidebar of visitors. Throws when `signUp.href` is not `https:`, `http:` or `mailto:`. See
|
|
247
|
-
* [Sign-in prompts](website/src/content/docs/reference/ui-config.mdx#sign-in-prompts).
|
|
247
|
+
* [Sign-in prompts](docs/website/src/content/docs/reference/ui-config.mdx#sign-in-prompts).
|
|
248
248
|
*/
|
|
249
249
|
signIn(prompt) {
|
|
250
250
|
if (prompt.signUp && !isMenuHref(prompt.signUp.href)) throw new Error(`View "${this.state.resource}": signIn signUp.href must start with https://, http:// or mailto:`);
|
|
@@ -254,7 +254,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
254
254
|
* A "Save search" button on the list page while its filter narrows it: it saves the filter as a record of `resource`,
|
|
255
255
|
* the signed-in user's own, whose view lists them with `.searchesOf(...)`, and takes it off again while pressed. A
|
|
256
256
|
* visitor is told what signing in gives, when that view has `.signIn(...)`. See
|
|
257
|
-
* [Saved searches](website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
257
|
+
* [Saved searches](docs/website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
258
258
|
*/
|
|
259
259
|
saveSearch(search) {
|
|
260
260
|
return this.next({ saveSearch: { ...search } });
|
|
@@ -263,7 +263,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
263
263
|
* Whether the list page offers Export, which saves its rows as an Excel or CSV file built in the browser: `false`
|
|
264
264
|
* takes it away, `{ maxRows }` limits how many rows a file holds. A list offers it by default. It only shapes the
|
|
265
265
|
* page: the rows and fields a file holds are those the list API gives the user. Throws when `maxRows` is not a
|
|
266
|
-
* positive whole number. See [Exports](website/src/content/docs/reference/ui-config.mdx#exports).
|
|
266
|
+
* positive whole number. See [Exports](docs/website/src/content/docs/reference/ui-config.mdx#exports).
|
|
267
267
|
*/
|
|
268
268
|
export(options) {
|
|
269
269
|
if (options && options.maxRows !== void 0 && !(Number.isInteger(options.maxRows) && options.maxRows > 0)) throw new Error(`View "${this.state.resource}": export maxRows must be a positive whole number`);
|
|
@@ -274,7 +274,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
274
274
|
* shows it with the address's `values`, and the list's New button opens it for whoever may open the page, whatever the
|
|
275
275
|
* resource's `create` access. So the resource's API can refuse creates (`create: never`) while the page creates
|
|
276
276
|
* through an API function. The server refuses a page that does not exist when it starts. See
|
|
277
|
-
* [Create pages](website/src/content/docs/reference/ui-config.mdx#create-pages).
|
|
277
|
+
* [Create pages](docs/website/src/content/docs/reference/ui-config.mdx#create-pages).
|
|
278
278
|
*/
|
|
279
279
|
create(options) {
|
|
280
280
|
return this.next({ create: { ...options } });
|
|
@@ -285,7 +285,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
285
285
|
* page does not scroll. It reads the record with `useLayoutRecord()`. The standard record page stays at the record's
|
|
286
286
|
* address with `standard: true`, which the component links to; it shows instead while the component is missing or
|
|
287
287
|
* when it throws. Throws when `component` is a built-in block. See
|
|
288
|
-
* [Full-area record pages](website/src/content/docs/reference/ui-config.mdx#full-area-record-pages).
|
|
288
|
+
* [Full-area record pages](docs/website/src/content/docs/reference/ui-config.mdx#full-area-record-pages).
|
|
289
289
|
*/
|
|
290
290
|
record(options) {
|
|
291
291
|
const record = { component: customComponent(options.component, "record component") };
|
|
@@ -297,7 +297,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
297
297
|
* `unseen`, newest first, those new since the user last opened its results marked) and a link to all of them. Throws in
|
|
298
298
|
* `toModel` when `filter` or `name` is not a text field, `unseen.seenAt` not a timestamp or a control not an enum or
|
|
299
299
|
* boolean field.
|
|
300
|
-
* See [Saved searches](website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
300
|
+
* See [Saved searches](docs/website/src/content/docs/reference/ui-config.mdx#saved-searches).
|
|
301
301
|
*/
|
|
302
302
|
searchesOf(pick) {
|
|
303
303
|
const { resource, filter, name, controls, unseen, limit } = pick(this.refs());
|
|
@@ -386,7 +386,7 @@ var ViewBuilder = class ViewBuilder {
|
|
|
386
386
|
};
|
|
387
387
|
/**
|
|
388
388
|
* Starts the view of a resource: how the admin shows it. Pass the resource's type, so every field reference (`r.status`)
|
|
389
|
-
* is checked against it. See [UI config](website/src/content/docs/reference/ui-config.mdx).
|
|
389
|
+
* is checked against it. See [UI config](docs/website/src/content/docs/reference/ui-config.mdx).
|
|
390
390
|
*
|
|
391
391
|
* @example
|
|
392
392
|
* ```ts
|