@simai-studio/view 0.0.0-stage → 1.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.
- package/LICENSE.md +183 -0
- package/README.md +75 -2
- package/dist/package-receipt.json +972 -0
- package/dist/set.json +141 -0
- package/dist/smart/rule.js +278 -0
- package/dist/smart/rule.js.gz +0 -0
- package/dist/smart/view/aliases.json +129 -0
- package/dist/smart/view/aliases.json.gz +0 -0
- package/dist/smart/view/component.json +1628 -0
- package/dist/smart/view/component.json.gz +0 -0
- package/dist/smart/view/css/view.css +208 -0
- package/dist/smart/view/css/view.css.gz +0 -0
- package/dist/smart/view/css/view.min.css +2 -0
- package/dist/smart/view/css/view.min.css.gz +0 -0
- package/dist/smart/view/examples.json +668 -0
- package/dist/smart/view/examples.json.gz +0 -0
- package/dist/smart/view/js/view.js +3955 -0
- package/dist/smart/view/js/view.js.gz +0 -0
- package/dist/smart/view/js/view.min.js +1 -0
- package/dist/smart/view/js/view.min.js.gz +0 -0
- package/dist/smart/view/lang/en.json +61 -0
- package/dist/smart/view/lang/en.json.gz +0 -0
- package/dist/smart/view/lang/ru.json +61 -0
- package/dist/smart/view/lang/ru.json.gz +0 -0
- package/dist/smart/view/probe.json +165 -0
- package/dist/smart/view/probe.json.gz +0 -0
- package/dist/smart/view/smart.manifest.json +1577 -0
- package/dist/smart/view/smart.manifest.json.gz +0 -0
- package/dist/smart/view/static/default/embedded.html +96 -0
- package/dist/smart/view/static/default/embedded.html.gz +0 -0
- package/dist/smart/view/static/default/open-record.html +242 -0
- package/dist/smart/view/static/default/open-record.html.gz +0 -0
- package/dist/smart/view/static/default/reference.html +242 -0
- package/dist/smart/view/static/default/reference.html.gz +0 -0
- package/dist/smart/view/static/sheets.json +282 -0
- package/dist/smart/view/static/sheets.json.gz +0 -0
- package/dist/smart/view-properties/aliases.json +174 -0
- package/dist/smart/view-properties/aliases.json.gz +0 -0
- package/dist/smart/view-properties/component.json +1906 -0
- package/dist/smart/view-properties/component.json.gz +0 -0
- package/dist/smart/view-properties/css/view-properties.css +1158 -0
- package/dist/smart/view-properties/css/view-properties.css.gz +0 -0
- package/dist/smart/view-properties/css/view-properties.min.css +2 -0
- package/dist/smart/view-properties/css/view-properties.min.css.gz +0 -0
- package/dist/smart/view-properties/examples.json +841 -0
- package/dist/smart/view-properties/examples.json.gz +0 -0
- package/dist/smart/view-properties/js/view-properties.js +10551 -0
- package/dist/smart/view-properties/js/view-properties.js.gz +0 -0
- package/dist/smart/view-properties/js/view-properties.min.js +1392 -0
- package/dist/smart/view-properties/js/view-properties.min.js.gz +0 -0
- package/dist/smart/view-properties/lang/en.json +89 -0
- package/dist/smart/view-properties/lang/en.json.gz +0 -0
- package/dist/smart/view-properties/lang/ru.json +89 -0
- package/dist/smart/view-properties/lang/ru.json.gz +0 -0
- package/dist/smart/view-properties/probe.json +188 -0
- package/dist/smart/view-properties/probe.json.gz +0 -0
- package/dist/smart/view-properties/skeleton.html +13 -0
- package/dist/smart/view-properties/skeleton.html.gz +0 -0
- package/dist/smart/view-properties/smart.manifest.json +1593 -0
- package/dist/smart/view-properties/smart.manifest.json.gz +0 -0
- package/dist/smart/view-properties/static/default/full.html +2 -0
- package/dist/smart/view-properties/static/default/full.html.gz +0 -0
- package/dist/smart/view-properties/static/default/panel-closed.html +4 -0
- package/dist/smart/view-properties/static/default/panel-closed.html.gz +0 -0
- package/dist/smart/view-properties/static/default/panel.html +4 -0
- package/dist/smart/view-properties/static/default/panel.html.gz +0 -0
- package/dist/smart/view-properties/static/default/reference.html +2 -0
- package/dist/smart/view-properties/static/default/reference.html.gz +0 -0
- package/dist/smart/view-properties/static/sheets.json +426 -0
- package/dist/smart/view-properties/static/sheets.json.gz +0 -0
- package/dist/smart/view-properties/template/default.css +992 -0
- package/dist/smart/view-properties/template/default.css.gz +0 -0
- package/dist/smart/view-properties/template/default.js +1658 -0
- package/dist/smart/view-properties/template/default.js.gz +0 -0
- package/dist/smart/view-table/aliases.json +448 -0
- package/dist/smart/view-table/aliases.json.gz +0 -0
- package/dist/smart/view-table/component.json +2746 -0
- package/dist/smart/view-table/component.json.gz +0 -0
- package/dist/smart/view-table/css/view-table.css +3658 -0
- package/dist/smart/view-table/css/view-table.css.gz +0 -0
- package/dist/smart/view-table/css/view-table.min.css +2 -0
- package/dist/smart/view-table/css/view-table.min.css.gz +0 -0
- package/dist/smart/view-table/examples.json +499 -0
- package/dist/smart/view-table/examples.json.gz +0 -0
- package/dist/smart/view-table/js/view-table.js +14166 -0
- package/dist/smart/view-table/js/view-table.js.gz +0 -0
- package/dist/smart/view-table/js/view-table.min.js +1440 -0
- package/dist/smart/view-table/js/view-table.min.js.gz +0 -0
- package/dist/smart/view-table/lang/en.json +132 -0
- package/dist/smart/view-table/lang/en.json.gz +0 -0
- package/dist/smart/view-table/lang/ru.json +132 -0
- package/dist/smart/view-table/lang/ru.json.gz +0 -0
- package/dist/smart/view-table/probe.json +275 -0
- package/dist/smart/view-table/probe.json.gz +0 -0
- package/dist/smart/view-table/smart.manifest.json +2531 -0
- package/dist/smart/view-table/smart.manifest.json.gz +0 -0
- package/dist/smart/view-table/static/default/current.html +141 -0
- package/dist/smart/view-table/static/default/current.html.gz +0 -0
- package/dist/smart/view-table/static/default/current.skeleton.html +141 -0
- package/dist/smart/view-table/static/default/current.skeleton.html.gz +0 -0
- package/dist/smart/view-table/static/default/empty.html +149 -0
- package/dist/smart/view-table/static/default/empty.html.gz +0 -0
- package/dist/smart/view-table/static/default/loading.html +180 -0
- package/dist/smart/view-table/static/default/loading.html.gz +0 -0
- package/dist/smart/view-table/static/default/many.html +180 -0
- package/dist/smart/view-table/static/default/many.html.gz +0 -0
- package/dist/smart/view-table/static/default/reference.html +136 -0
- package/dist/smart/view-table/static/default/reference.html.gz +0 -0
- package/dist/smart/view-table/static/default/reference.skeleton.html +136 -0
- package/dist/smart/view-table/static/default/reference.skeleton.html.gz +0 -0
- package/dist/smart/view-table/static/default/typed-cells.html +229 -0
- package/dist/smart/view-table/static/default/typed-cells.html.gz +0 -0
- package/dist/smart/view-table/static/default/typed-cells.skeleton.html +229 -0
- package/dist/smart/view-table/static/default/typed-cells.skeleton.html.gz +0 -0
- package/dist/smart/view-table/static/sheets.json +480 -0
- package/dist/smart/view-table/static/sheets.json.gz +0 -0
- package/dist/smart/view-table/studio.fixture.json +17 -0
- package/dist/smart/view-table/studio.fixture.json.gz +0 -0
- package/dist/smart/view-table/studio.scenario.json +30 -0
- package/dist/smart/view-table/studio.scenario.json.gz +0 -0
- package/dist/smart/view-table/template/default.css +1301 -0
- package/dist/smart/view-table/template/default.css.gz +0 -0
- package/dist/smart/view-table/template/default.js +1215 -0
- package/dist/smart/view-table/template/default.js.gz +0 -0
- package/dist/smart/view-table/template/link-cell-contract.js +48 -0
- package/dist/smart/view-table/template/link-cell-contract.js.gz +0 -0
- package/package.json +29 -4
|
@@ -0,0 +1,1628 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "sf-data-view from its component.json (standard simai.smart-component 1.3.8, vocabulary 1.1.5), migrated from ui-control control/smart-architecture/migration/out/data-view; every x-todo decided in x-decisions.",
|
|
3
|
+
"id": "smart.view",
|
|
4
|
+
"tag": "sf-view",
|
|
5
|
+
"version": "1.8.1",
|
|
6
|
+
"kind": "leaf",
|
|
7
|
+
"family": "table",
|
|
8
|
+
"settings": {
|
|
9
|
+
"chrome": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"default": "toolbar pagination select settings",
|
|
12
|
+
"summary": "Which chrome this list renders, as a space-separated list. `toolbar` and `pagination` are this element own parts; `select` and `settings` are the table two chrome columns, named here because they are furniture of the same kind -- a checkbox column exists to feed a bulk band and a gear column exists to reach column settings, and an embedded list has neither. Empty renders none of them, for a list inside something that already carries a heading. Named explicitly rather than inferred from the toolbar, so a consumer who wants a selection in an embedded list can ask for it alone. `status` is not in the list and cannot be switched off: a list that could not say a load failed would look empty when it is broken."
|
|
13
|
+
},
|
|
14
|
+
"row-cap": {
|
|
15
|
+
"type": "number",
|
|
16
|
+
"default": 0,
|
|
17
|
+
"summary": "How many rows an embedded list draws at most, with a show-all action under it when it is hiding some. Zero is no cap, which is what a page list is. Named apart from `page-size`, which is the host paging, because a cap is what this element shows of a page it already has.",
|
|
18
|
+
"integer": true,
|
|
19
|
+
"min": 0
|
|
20
|
+
},
|
|
21
|
+
"expected-columns": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"default": 4,
|
|
24
|
+
"summary": "How many columns the skeleton draws before the host first answers: the skeleton's shape, never a limit -- the answer brings its own columns. The page or server that renders a collection knows them; with the right number the list does not move when the data arrives.",
|
|
25
|
+
"integer": true,
|
|
26
|
+
"min": 1
|
|
27
|
+
},
|
|
28
|
+
"port-owner": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"default": "",
|
|
31
|
+
"summary": "Which composite this list is embedded in, sent with the host-port request so a host knows which exchange it is answering. Names the composite rather than the element, so a list embedded somewhere else later needs no new value."
|
|
32
|
+
},
|
|
33
|
+
"port-record": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"default": "",
|
|
36
|
+
"summary": "The record the embedding composite is showing, sent with the host-port request."
|
|
37
|
+
},
|
|
38
|
+
"port-group": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"default": "",
|
|
41
|
+
"summary": "The group inside that composite this list stands in, sent with the host-port request."
|
|
42
|
+
},
|
|
43
|
+
"size": {
|
|
44
|
+
"type": "enum",
|
|
45
|
+
"values": [
|
|
46
|
+
"1/2",
|
|
47
|
+
"1"
|
|
48
|
+
],
|
|
49
|
+
"default": "1",
|
|
50
|
+
"summary": "The step of the size ladder the view's controls take, handed to its table, its page row and its selection band: 1, or the dense 1/2 of an admin."
|
|
51
|
+
},
|
|
52
|
+
"column-search-placeholder": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"summary": "Passed on as column-search-placeholder to the table the view draws; absent, the table's own word for the page language applies."
|
|
55
|
+
},
|
|
56
|
+
"column-search-empty-text": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"summary": "Passed on as column-search-empty-text to the table the view draws; absent, the table's own word for the page language applies."
|
|
59
|
+
},
|
|
60
|
+
"column-move-label": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"summary": "Passed on as column-move-label to the table the view draws; absent, the table's own word for the page language applies."
|
|
63
|
+
},
|
|
64
|
+
"filter-apply-text": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"summary": "Passed on as filter-apply-text to the table the view draws; absent, the table's own word for the page language applies."
|
|
67
|
+
},
|
|
68
|
+
"show-more-text": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"summary": "Passed on as show-more-text to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
71
|
+
},
|
|
72
|
+
"selected-label": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"summary": "Passed on as selected-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
75
|
+
},
|
|
76
|
+
"total-label": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"summary": "Passed on as total-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
79
|
+
},
|
|
80
|
+
"pages-label": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"summary": "Passed on as pages-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
83
|
+
},
|
|
84
|
+
"first-label": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"summary": "Passed on as first-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
87
|
+
},
|
|
88
|
+
"previous-label": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"summary": "Passed on as previous-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
91
|
+
},
|
|
92
|
+
"page-label": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"summary": "Passed on as page-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
95
|
+
},
|
|
96
|
+
"next-label": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"summary": "Passed on as next-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
99
|
+
},
|
|
100
|
+
"last-label": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"summary": "Passed on as last-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
103
|
+
},
|
|
104
|
+
"page-field-label": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"summary": "Passed on as page-field-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
107
|
+
},
|
|
108
|
+
"action-choose-label": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"summary": "Passed on as action-choose-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
111
|
+
},
|
|
112
|
+
"actions-label": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"summary": "Passed on as actions-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
115
|
+
},
|
|
116
|
+
"actions-region-label": {
|
|
117
|
+
"type": "string",
|
|
118
|
+
"summary": "Passed on as actions-region-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
119
|
+
},
|
|
120
|
+
"clear-selection-label": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"summary": "Passed on as clear-selection-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
123
|
+
},
|
|
124
|
+
"page-size-label": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"summary": "Passed on as page-size-label to the pagination the view draws; absent, the pagination's own word for the page language applies."
|
|
127
|
+
},
|
|
128
|
+
"pagination-aria-label": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"summary": "Passed on as aria-label to the pagination the view draws (the view's own aria-label names the view)."
|
|
131
|
+
},
|
|
132
|
+
"preferences-key": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"default": "",
|
|
135
|
+
"summary": "The key the person's view of this list is kept under (SF.Preferences, sf-table/<key>): the table's arrangement, the sort and the page size, applied before the first paint and the first query. Usually the collection."
|
|
136
|
+
},
|
|
137
|
+
"accept-files": {
|
|
138
|
+
"type": "boolean",
|
|
139
|
+
"default": false,
|
|
140
|
+
"summary": "Files dropped from the computer on the view are the host's to upload: a drop zone shows while they are over it, and sf-data-view-files-drop {files} says they were dropped."
|
|
141
|
+
},
|
|
142
|
+
"collection": {
|
|
143
|
+
"type": "string",
|
|
144
|
+
"default": "",
|
|
145
|
+
"x-shape": "the host's collection id; the view's preference key falls back to it",
|
|
146
|
+
"summary": "The host's collection id; the view's preference key falls back to it (component.json settings.collection)."
|
|
147
|
+
},
|
|
148
|
+
"current": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"default": "",
|
|
151
|
+
"x-shape": "the id of the record the page has open; its row carries aria-current",
|
|
152
|
+
"summary": "The id of the record the page has open: its row carries aria-current. Writing it sends nothing (component.json settings.current)."
|
|
153
|
+
},
|
|
154
|
+
"bulk-actions": {
|
|
155
|
+
"type": "list",
|
|
156
|
+
"of": {
|
|
157
|
+
"id": "string",
|
|
158
|
+
"label": "string"
|
|
159
|
+
},
|
|
160
|
+
"x-shape": "the actions offered for the marked rows; an assembly gives the ids, their words are its language file's roles.<role>.items.<id> (§11.3); a page may write them on its page row instead"
|
|
161
|
+
},
|
|
162
|
+
"first-answer": {
|
|
163
|
+
"type": "object",
|
|
164
|
+
"optional": true,
|
|
165
|
+
"x-shape": "the host's first answer printed with the page, the applied data of query.change: records (each with its revision), total or has_next, echo, columns; optionally capabilities (the port's, known before the port) and query (the query it answers, which the revalidation asks). A server that already has the first page prints it in the view's data-sf-settings island; the view draws it at once, as if the host had answered, and the port answers the same query in the background without a loading state. Taken once"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"values": {
|
|
169
|
+
"state": {
|
|
170
|
+
"type": "state",
|
|
171
|
+
"summary": "the list's data state (vocabulary §3): ready, empty, error, refused, unavailable, loading"
|
|
172
|
+
},
|
|
173
|
+
"total": {
|
|
174
|
+
"type": "number",
|
|
175
|
+
"nullable": true,
|
|
176
|
+
"summary": "the host's total; null while not counted"
|
|
177
|
+
},
|
|
178
|
+
"selected": {
|
|
179
|
+
"type": "id",
|
|
180
|
+
"optional": true,
|
|
181
|
+
"summary": "the open record's id"
|
|
182
|
+
},
|
|
183
|
+
"selection": {
|
|
184
|
+
"type": "list",
|
|
185
|
+
"summary": "the marked rows' ids"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"events": {
|
|
189
|
+
"open": {
|
|
190
|
+
"carries": {
|
|
191
|
+
"id": "id"
|
|
192
|
+
},
|
|
193
|
+
"cancelable": true,
|
|
194
|
+
"summary": "A row's view action asks to open its record, vocabulary §5 open {id}: a cancelable request; the host's record.open follows unless a listener refused it."
|
|
195
|
+
},
|
|
196
|
+
"deleted": {
|
|
197
|
+
"carries": {
|
|
198
|
+
"ids": "list"
|
|
199
|
+
},
|
|
200
|
+
"summary": "The fact after an applied delete, vocabulary §4: {ids}."
|
|
201
|
+
},
|
|
202
|
+
"answer": {
|
|
203
|
+
"carries": {
|
|
204
|
+
"intent": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"summary": "The port intent answered, e.g. query.change, view.save, settings.save_personal, record.mutate."
|
|
207
|
+
},
|
|
208
|
+
"answer": {
|
|
209
|
+
"type": "enum",
|
|
210
|
+
"values": [
|
|
211
|
+
"applied",
|
|
212
|
+
"conflict",
|
|
213
|
+
"refused",
|
|
214
|
+
"unavailable"
|
|
215
|
+
],
|
|
216
|
+
"summary": "The port answer.",
|
|
217
|
+
"schema": {
|
|
218
|
+
"type": "string"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"reason": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"optional": true,
|
|
224
|
+
"summary": "Why, when the answer is not applied: the host's reason, or the view's own (port-not-connected, capability-not-provided, action-not-allowed, no-base-revision). A refused query.change is «no access» (rows, toolbar, selection and create withdrawn) only for an access reason: none, forbidden, access_denied, scope_denied, or one ending in _access_denied or _scope_denied; any other reason (query_invalid) is a query error that keeps the toolbar and the query."
|
|
225
|
+
},
|
|
226
|
+
"message": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"optional": true,
|
|
229
|
+
"summary": "The host's own sentence for a person, as the port answer carries it. On a refused or unavailable query.change a non-empty message is what the view shows: the title of its empty or error state and the line its live region announces, drawn as text, never markup; an unavailable list with a message raises no error notice. Without one the view's own words, as before."
|
|
230
|
+
},
|
|
231
|
+
"data": {
|
|
232
|
+
"type": "object",
|
|
233
|
+
"optional": true,
|
|
234
|
+
"summary": "The host's data, copied as it answered."
|
|
235
|
+
},
|
|
236
|
+
"sequence": {
|
|
237
|
+
"type": "number",
|
|
238
|
+
"integer": true,
|
|
239
|
+
"optional": true,
|
|
240
|
+
"summary": "The query sequence the host echoed, when it did."
|
|
241
|
+
},
|
|
242
|
+
"effects": {
|
|
243
|
+
"type": "list",
|
|
244
|
+
"optional": true,
|
|
245
|
+
"summary": "Effects the host reported for the rest of the page."
|
|
246
|
+
},
|
|
247
|
+
"instance_id": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"summary": "The view's instance id, sf-data-view-<n>."
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"own-verb": true,
|
|
253
|
+
"summary": "Fires after every port answer the view acts on, including the ones it makes itself (port not connected, capability not provided, action not allowed), so a page can watch outcomes without wrapping the port. The host's answer object is spread in full; any further fields it carries pass through."
|
|
254
|
+
},
|
|
255
|
+
"state": {
|
|
256
|
+
"carries": {
|
|
257
|
+
"state": {
|
|
258
|
+
"type": "enum",
|
|
259
|
+
"values": [
|
|
260
|
+
"loading",
|
|
261
|
+
"populated",
|
|
262
|
+
"empty",
|
|
263
|
+
"error",
|
|
264
|
+
"no-access"
|
|
265
|
+
],
|
|
266
|
+
"summary": "The new state, also written to data-state.",
|
|
267
|
+
"schema": {
|
|
268
|
+
"type": "string"
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"message": {
|
|
272
|
+
"type": "string",
|
|
273
|
+
"summary": "The announced status text; empty when there is none."
|
|
274
|
+
},
|
|
275
|
+
"instance_id": {
|
|
276
|
+
"type": "string",
|
|
277
|
+
"summary": "The view's instance id, sf-data-view-<n>."
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"own-verb": true,
|
|
281
|
+
"summary": "Fires whenever the view's data state changes (loading, populated, empty, error), with the line it announces in its live region; for a page that mirrors the state elsewhere."
|
|
282
|
+
},
|
|
283
|
+
"tree": {
|
|
284
|
+
"carries": {
|
|
285
|
+
"intent": "string",
|
|
286
|
+
"payload": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"optional": true
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"own-verb": true,
|
|
292
|
+
"summary": "The tree's port intents announced, {intent, payload}; the old sf-table-tree-intent follows once until 2026-12-01 (aliases.json)."
|
|
293
|
+
},
|
|
294
|
+
"files-drop": {
|
|
295
|
+
"carries": {
|
|
296
|
+
"files": {
|
|
297
|
+
"type": "list",
|
|
298
|
+
"summary": "The dropped File objects, at least one.",
|
|
299
|
+
"schema": {
|
|
300
|
+
"items": {
|
|
301
|
+
"type": "object"
|
|
302
|
+
},
|
|
303
|
+
"minItems": 1
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"own-verb": true,
|
|
308
|
+
"summary": "Files from the computer were dropped on a view that has accept-files. The view uploads nothing and the files do not go through the port; the host uploads them."
|
|
309
|
+
},
|
|
310
|
+
"pagination-count": {
|
|
311
|
+
"shared": "count-on-request@1",
|
|
312
|
+
"carries": {
|
|
313
|
+
"component": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"summary": "The pagination element that asked."
|
|
316
|
+
},
|
|
317
|
+
"tagName": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"summary": "Its tag name."
|
|
320
|
+
},
|
|
321
|
+
"template": {
|
|
322
|
+
"type": "string",
|
|
323
|
+
"summary": "Its template name."
|
|
324
|
+
},
|
|
325
|
+
"reason": {
|
|
326
|
+
"type": "enum",
|
|
327
|
+
"values": [
|
|
328
|
+
"total",
|
|
329
|
+
"last-page",
|
|
330
|
+
"action-for-all"
|
|
331
|
+
],
|
|
332
|
+
"summary": "What the number is for.",
|
|
333
|
+
"schema": {
|
|
334
|
+
"type": "string"
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
"current": {
|
|
338
|
+
"type": "number",
|
|
339
|
+
"integer": true,
|
|
340
|
+
"summary": "The current page."
|
|
341
|
+
},
|
|
342
|
+
"pageSize": {
|
|
343
|
+
"type": "number",
|
|
344
|
+
"integer": true,
|
|
345
|
+
"summary": "The page size."
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
"summary": "Raised by the view's pagination when the person asks for the total, the last page or an action under the filter while the count is unknown. The view answers it with the query.count intent; a host does not need to listen."
|
|
349
|
+
},
|
|
350
|
+
"saved-view-intent": {
|
|
351
|
+
"carries": {
|
|
352
|
+
"key": {
|
|
353
|
+
"type": "string",
|
|
354
|
+
"summary": "The saved view's key."
|
|
355
|
+
},
|
|
356
|
+
"label": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"summary": "Its name as shown."
|
|
359
|
+
},
|
|
360
|
+
"revision": {
|
|
361
|
+
"type": "string",
|
|
362
|
+
"summary": "The revision it is written against, when it exists.",
|
|
363
|
+
"schema": {
|
|
364
|
+
"type": [
|
|
365
|
+
"string",
|
|
366
|
+
"integer"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
"optional": true
|
|
370
|
+
},
|
|
371
|
+
"roles": {
|
|
372
|
+
"type": "object",
|
|
373
|
+
"summary": "Who may open it, as the host names roles.",
|
|
374
|
+
"optional": true
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"summary": "An event a page raises on the view to save a shared saved view (port 1.1.0 or later): the view raises view.save_shared with the detail's key and label."
|
|
378
|
+
},
|
|
379
|
+
"table-action-intent": {
|
|
380
|
+
"shared": "table-intents@1",
|
|
381
|
+
"carries": {
|
|
382
|
+
"action_id": {
|
|
383
|
+
"type": "string",
|
|
384
|
+
"summary": "The opaque id of the row or bulk action chosen.",
|
|
385
|
+
"schema": {
|
|
386
|
+
"minLength": 1
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"record_ids": {
|
|
390
|
+
"type": "list",
|
|
391
|
+
"summary": "The records it applies to: the row's own id, or the selected ids for a bulk action.",
|
|
392
|
+
"schema": {
|
|
393
|
+
"items": {
|
|
394
|
+
"type": [
|
|
395
|
+
"string",
|
|
396
|
+
"integer"
|
|
397
|
+
]
|
|
398
|
+
},
|
|
399
|
+
"minItems": 1
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"summary": "A table event the view listens to: a row or bulk action chosen in its table. The view checks the row allows it and raises record.open (view), record.mutate (one row) or bulk.apply_selected, with the records' revisions; move and create on a tree open the move dialog or view.create_record."
|
|
404
|
+
},
|
|
405
|
+
"table-column-settings-change": {
|
|
406
|
+
"shared": "table-intents@1",
|
|
407
|
+
"carries": {
|
|
408
|
+
"reason": {
|
|
409
|
+
"type": "string",
|
|
410
|
+
"summary": "What changed: column-resize, column-resize-reset, column-drag, column-order, column-pin, column-visibility, column-settings-restore, column-settings."
|
|
411
|
+
},
|
|
412
|
+
"columnSettings": {
|
|
413
|
+
"type": "object",
|
|
414
|
+
"summary": "The whole column-preference delta after the change, keyed by column key (width, order, hidden, pinned)."
|
|
415
|
+
},
|
|
416
|
+
"tableSettingsKey": {
|
|
417
|
+
"type": "string",
|
|
418
|
+
"summary": "The table's settings key, so a host can tell several tables apart."
|
|
419
|
+
},
|
|
420
|
+
"target": {
|
|
421
|
+
"type": "enum",
|
|
422
|
+
"values": [
|
|
423
|
+
"personal",
|
|
424
|
+
"shared"
|
|
425
|
+
],
|
|
426
|
+
"summary": "Not sent by the table. Another source may send shared to write the shared layer.",
|
|
427
|
+
"schema": {
|
|
428
|
+
"type": "string"
|
|
429
|
+
},
|
|
430
|
+
"optional": true
|
|
431
|
+
},
|
|
432
|
+
"base_revision": {
|
|
433
|
+
"type": "string",
|
|
434
|
+
"summary": "Not sent by the table. Another source may name the base revision; otherwise the view uses the layer's.",
|
|
435
|
+
"schema": {
|
|
436
|
+
"type": [
|
|
437
|
+
"string",
|
|
438
|
+
"number"
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
"optional": true
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
"summary": "A table event the view listens to: the person resized, moved, pinned or hid a column. The view writes it to the person's layer (settings.save_personal): the table offers no choice of layer, and the table it draws sends no target. The shared layer is written from page code with saveColumnSettings(settings, {shared: true})."
|
|
445
|
+
},
|
|
446
|
+
"table-column-settings-reset": {
|
|
447
|
+
"shared": "table-intents@1",
|
|
448
|
+
"carries": {
|
|
449
|
+
"target": {
|
|
450
|
+
"type": "enum",
|
|
451
|
+
"values": [
|
|
452
|
+
"personal"
|
|
453
|
+
],
|
|
454
|
+
"summary": "The layer to reset. The table only resets the person's own layer.",
|
|
455
|
+
"schema": {
|
|
456
|
+
"type": "string"
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
"tableSettingsKey": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"summary": "The table's settings key, or null when it has none.",
|
|
462
|
+
"schema": {
|
|
463
|
+
"type": [
|
|
464
|
+
"string",
|
|
465
|
+
"null"
|
|
466
|
+
]
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"summary": "A table event the view listens to: the person asked for the default columns back. The view calls resetColumnSettings, an empty personal layer written against its revision; the host supplies the defaults."
|
|
471
|
+
},
|
|
472
|
+
"table-create-intent": {
|
|
473
|
+
"shared": "table-intents@1",
|
|
474
|
+
"carries": {
|
|
475
|
+
"item": {
|
|
476
|
+
"type": "string",
|
|
477
|
+
"summary": "null for the main create button; the declared create item's id when one was chosen from its menu.",
|
|
478
|
+
"schema": {
|
|
479
|
+
"type": [
|
|
480
|
+
"string",
|
|
481
|
+
"null"
|
|
482
|
+
]
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
"summary": "A table event the view listens to: the create button or one of its menu items was pressed. The view raises view.create_record with the detail as it came."
|
|
487
|
+
},
|
|
488
|
+
"table-query-intent": {
|
|
489
|
+
"shared": "table-intents@1",
|
|
490
|
+
"carries": {
|
|
491
|
+
"reason": {
|
|
492
|
+
"type": "enum",
|
|
493
|
+
"values": [
|
|
494
|
+
"context"
|
|
495
|
+
],
|
|
496
|
+
"summary": "Always context: the context input port changed."
|
|
497
|
+
},
|
|
498
|
+
"context": {
|
|
499
|
+
"type": "object",
|
|
500
|
+
"summary": "The immutable context last received through the context input port."
|
|
501
|
+
},
|
|
502
|
+
"sequence": {
|
|
503
|
+
"type": "number",
|
|
504
|
+
"integer": true,
|
|
505
|
+
"summary": "The pending query's sequence; only the newest is applied.",
|
|
506
|
+
"schema": {
|
|
507
|
+
"minimum": 1
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
"summary": "A table event the view listens to: its table's context input port changed. The view ignores the table's sequence and re-reads the list with its own query.change."
|
|
512
|
+
},
|
|
513
|
+
"table-template-delete": {
|
|
514
|
+
"shared": "table-intents@1",
|
|
515
|
+
"carries": {
|
|
516
|
+
"key": {
|
|
517
|
+
"type": "string",
|
|
518
|
+
"summary": "The saved template's key.",
|
|
519
|
+
"schema": {
|
|
520
|
+
"minLength": 1
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
"summary": "A table event the view listens to: a saved template was deleted on the Templates tab, one event per template. The view raises view.delete with the key."
|
|
525
|
+
},
|
|
526
|
+
"table-template-save": {
|
|
527
|
+
"shared": "table-intents@1",
|
|
528
|
+
"carries": {},
|
|
529
|
+
"summary": "A table event the view listens to: a filter template was saved. The view turns it into saveView (view.save) with key, label, revision, level, roles, layout and settings; an array detail is saved template by template, each one its own view.save, entries without a key skipped.",
|
|
530
|
+
"x-comment": "The detail is one template object or an array of them: a carries map cannot say that, so the payload schema is x-registry/event-fields until 1.4 has a home for a detail that is not a flat object."
|
|
531
|
+
},
|
|
532
|
+
"table-template-select": {
|
|
533
|
+
"shared": "table-intents@1",
|
|
534
|
+
"carries": {
|
|
535
|
+
"key": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"summary": "The saved template's key.",
|
|
538
|
+
"schema": {
|
|
539
|
+
"minLength": 1
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
"summary": "A table event the view listens to: a different saved template was applied on the Templates tab. The view raises view.open with the key and restores the filter fields the view was saved with."
|
|
544
|
+
},
|
|
545
|
+
"host-port-request": {
|
|
546
|
+
"shared": "host-port@1",
|
|
547
|
+
"carries": {
|
|
548
|
+
"component": {
|
|
549
|
+
"type": "object",
|
|
550
|
+
"summary": "The element asking, so a host can answer it directly.",
|
|
551
|
+
"optional": true
|
|
552
|
+
},
|
|
553
|
+
"context": {
|
|
554
|
+
"type": "object",
|
|
555
|
+
"summary": "Which composite is asking and about what: owner, record, group. All null on a page list, which is asking about nothing but itself.",
|
|
556
|
+
"optional": true
|
|
557
|
+
}
|
|
558
|
+
},
|
|
559
|
+
"summary": "Asks the page for a host port, once per connection and only while this element has none. The shared convention for every component that takes `setHostPort`, so a consumer composing one inside something else does not have to find the element and call a method on it. Answered by calling `setHostPort` on the event target, at once or later."
|
|
560
|
+
},
|
|
561
|
+
"list-open": {
|
|
562
|
+
"carries": {
|
|
563
|
+
"reason": {
|
|
564
|
+
"type": "id",
|
|
565
|
+
"schema": {
|
|
566
|
+
"enum": [
|
|
567
|
+
"row-cap"
|
|
568
|
+
]
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
"query": {
|
|
572
|
+
"type": "object"
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
"summary": "The person asked to see the whole list a row cap is showing part of. Carries the query so the host opens the full view on the same records; the component builds no address of its own."
|
|
576
|
+
},
|
|
577
|
+
"table-cell-set": {
|
|
578
|
+
"shared": "table-intents@1",
|
|
579
|
+
"carries": {
|
|
580
|
+
"id": {
|
|
581
|
+
"type": "string",
|
|
582
|
+
"summary": "The record's id.",
|
|
583
|
+
"schema": {
|
|
584
|
+
"type": [
|
|
585
|
+
"string",
|
|
586
|
+
"integer"
|
|
587
|
+
]
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
"key": {
|
|
591
|
+
"type": "string",
|
|
592
|
+
"summary": "The column (field) key of the cell."
|
|
593
|
+
},
|
|
594
|
+
"value": {
|
|
595
|
+
"type": "id",
|
|
596
|
+
"summary": "The value the cell now asks for (a checkbox: true or false)."
|
|
597
|
+
},
|
|
598
|
+
"revision": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"summary": "The record's _revision or revision, or null.",
|
|
601
|
+
"schema": {
|
|
602
|
+
"type": [
|
|
603
|
+
"string",
|
|
604
|
+
"integer",
|
|
605
|
+
"null"
|
|
606
|
+
]
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"summary": "A table event the view listens to: a checkable cell was pressed. The view raises record.set of simai.dataview-port 1.11.0 (capability inline-edit) with record_id, key, value and revision, and resets the box when the answer is not applied."
|
|
611
|
+
},
|
|
612
|
+
"table-rows-reorder": {
|
|
613
|
+
"shared": "table-intents@1",
|
|
614
|
+
"carries": {
|
|
615
|
+
"ids": {
|
|
616
|
+
"type": "list",
|
|
617
|
+
"summary": "The ids of the rows that moved.",
|
|
618
|
+
"schema": {
|
|
619
|
+
"items": {
|
|
620
|
+
"type": "string"
|
|
621
|
+
},
|
|
622
|
+
"minItems": 1
|
|
623
|
+
}
|
|
624
|
+
},
|
|
625
|
+
"before": {
|
|
626
|
+
"type": "string",
|
|
627
|
+
"summary": "The id of the row they now stand before; null for the end of the list.",
|
|
628
|
+
"schema": {
|
|
629
|
+
"type": [
|
|
630
|
+
"string",
|
|
631
|
+
"null"
|
|
632
|
+
]
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
"order": {
|
|
636
|
+
"type": "list",
|
|
637
|
+
"summary": "Every row id shown, in the new order.",
|
|
638
|
+
"schema": {
|
|
639
|
+
"items": {
|
|
640
|
+
"type": "string"
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
},
|
|
645
|
+
"summary": "A table event the view listens to: rows were dragged into another order. The view shows the new order at once and raises record.reorder of simai.dataview-port 1.11.0 (capability row-reorder); a refusal or conflict puts the old order back."
|
|
646
|
+
}
|
|
647
|
+
},
|
|
648
|
+
"actions": {
|
|
649
|
+
"refresh": {
|
|
650
|
+
"with": {
|
|
651
|
+
"reason": {
|
|
652
|
+
"type": "string",
|
|
653
|
+
"optional": true
|
|
654
|
+
}
|
|
655
|
+
},
|
|
656
|
+
"summary": "Request current query with a new sequence.",
|
|
657
|
+
"x-returns": {
|
|
658
|
+
"type": "object",
|
|
659
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
660
|
+
}
|
|
661
|
+
},
|
|
662
|
+
"change-query": {
|
|
663
|
+
"with": {
|
|
664
|
+
"patch": "object",
|
|
665
|
+
"reason": {
|
|
666
|
+
"type": "string",
|
|
667
|
+
"optional": true
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"concurrency": "latest",
|
|
671
|
+
"summary": "Change search, filters, sort or window.",
|
|
672
|
+
"x-returns": {
|
|
673
|
+
"type": "object",
|
|
674
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
675
|
+
}
|
|
676
|
+
},
|
|
677
|
+
"open-view": {
|
|
678
|
+
"with": {
|
|
679
|
+
"key": "string"
|
|
680
|
+
},
|
|
681
|
+
"summary": "Open a saved view.",
|
|
682
|
+
"x-returns": {
|
|
683
|
+
"type": "object",
|
|
684
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
"save-view": {
|
|
688
|
+
"with": {
|
|
689
|
+
"view": {
|
|
690
|
+
"type": "object",
|
|
691
|
+
"summary": "{key, label, level?: personal|shared, revision?, roles?, layout?, settings?}. layout defaults to the current columns, settings to the current column settings; the current query is always saved."
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
"concurrency": "drop",
|
|
695
|
+
"summary": "Save a personal or shared view: view.save, or view.save_shared on a port of 1.1.0 or later. Throws TypeError without key and label, or for another level.",
|
|
696
|
+
"x-returns": {
|
|
697
|
+
"type": "object",
|
|
698
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it. A shared level on a port older than 1.1.0 resolves to {answer: 'unavailable', reason: 'saved-view-levels-require-port-1.1.0'}."
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
"delete-view": {
|
|
702
|
+
"with": {
|
|
703
|
+
"key": "string"
|
|
704
|
+
},
|
|
705
|
+
"concurrency": "drop",
|
|
706
|
+
"summary": "Delete a saved view.",
|
|
707
|
+
"x-returns": {
|
|
708
|
+
"type": "object",
|
|
709
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
"apply-under-filter": {
|
|
713
|
+
"with": {
|
|
714
|
+
"action-id": "string",
|
|
715
|
+
"confirmed-total": "number"
|
|
716
|
+
},
|
|
717
|
+
"concurrency": "drop",
|
|
718
|
+
"summary": "Raise a confirmed filter-wide action (bulk.apply_under_filter) over the current filters. Throws TypeError when confirmedTotal is not the current total.",
|
|
719
|
+
"x-returns": {
|
|
720
|
+
"type": "object",
|
|
721
|
+
"description": "A promise of the host answer: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
722
|
+
}
|
|
723
|
+
},
|
|
724
|
+
"reset-column-settings": {
|
|
725
|
+
"summary": "Reset the person's column layout: an empty personal layer written against its revision, which is the port's reset (a write, never a deletion). The host supplies the defaults.",
|
|
726
|
+
"x-returns": {
|
|
727
|
+
"type": "object",
|
|
728
|
+
"description": "A promise of the port answer, as saveColumnSettings returns it, including {answer: 'unavailable', reason: 'no-base-revision'}."
|
|
729
|
+
}
|
|
730
|
+
},
|
|
731
|
+
"clear-selection": {},
|
|
732
|
+
"notify": {
|
|
733
|
+
"with": {
|
|
734
|
+
"text": "string",
|
|
735
|
+
"options": {
|
|
736
|
+
"type": "object",
|
|
737
|
+
"optional": true,
|
|
738
|
+
"summary": "{kind?: 'error'|'warning', code?: string}. kind defaults to error; code is the reason the notice carries."
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
"summary": "Show one notice over the card, or clear it with an empty text. A refusal, a conflict and an unreachable host raise it by themselves.",
|
|
742
|
+
"x-returns": {
|
|
743
|
+
"type": "object",
|
|
744
|
+
"description": "The element, for chaining."
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
"slots": {
|
|
749
|
+
"toolbar": {},
|
|
750
|
+
"content": {
|
|
751
|
+
"default": true
|
|
752
|
+
},
|
|
753
|
+
"pagination": {}
|
|
754
|
+
},
|
|
755
|
+
"side-effects": [],
|
|
756
|
+
"keyboard": {
|
|
757
|
+
"host": {
|
|
758
|
+
"Tab": "reach"
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
"port": {
|
|
762
|
+
"id": "simai.dataview-port",
|
|
763
|
+
"version": "1.13.0",
|
|
764
|
+
"contract": "src/core/contracts/ports/simai.dataview-port/1.13.0/port.json"
|
|
765
|
+
},
|
|
766
|
+
"relations": [
|
|
767
|
+
{
|
|
768
|
+
"name": "icons"
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
"name": "cl-view-table"
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"name": "cl-pagination"
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"name": "cl-toast",
|
|
778
|
+
"lazy": true
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"name": "cl-button"
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"name": "cl-checkbox"
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "cl-dropdown"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"name": "cl-button-icon"
|
|
791
|
+
}
|
|
792
|
+
],
|
|
793
|
+
"templates": {
|
|
794
|
+
"default": {
|
|
795
|
+
"file": "index.js",
|
|
796
|
+
"$comment": "the shadow layout is written in index.js (the migration form, §16); the rows are sf-table's template"
|
|
797
|
+
}
|
|
798
|
+
},
|
|
799
|
+
"presentation": {
|
|
800
|
+
"skeleton": {
|
|
801
|
+
"$comment": "The data comes through the port, or first from the page (first-answer, drawn at once, the port revalidating behind it): until the host first answers, the view is its skeleton (index.js _startFirstPaint) -- the shape the answer will have: the toolbar, the table's head and a row per row it will draw (the page size the list asks for -- a kept one, else the printed page row's page-size -- capped by row-cap; else row-cap; else a page of 10) with a cell per expected column (expected-columns) and the chrome columns, the compact list a phone gets (a container query at sf-table's list-below, 600 px), and the page row -- in its light DOM, slotted as first-paint, so its static markup (static/default/<example>.html) is that skeleton and the view adopts it (standard 1.3.8 §5.4). Its lengths are in sf-table's sheet.",
|
|
802
|
+
"late": []
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
"examples": "examples.json",
|
|
806
|
+
"docs": "docs.md",
|
|
807
|
+
"lang": "lang/",
|
|
808
|
+
"accessibility": {
|
|
809
|
+
"role": "region",
|
|
810
|
+
"name": {
|
|
811
|
+
"from": [
|
|
812
|
+
"aria-label"
|
|
813
|
+
]
|
|
814
|
+
},
|
|
815
|
+
"keys": {
|
|
816
|
+
"Tab": "reach"
|
|
817
|
+
},
|
|
818
|
+
"announces": {
|
|
819
|
+
"total": "polite"
|
|
820
|
+
}
|
|
821
|
+
},
|
|
822
|
+
"css-variables": {
|
|
823
|
+
"--sf-data-view-gap": {
|
|
824
|
+
"type": "length",
|
|
825
|
+
"state": "default"
|
|
826
|
+
},
|
|
827
|
+
"--sf-data-view-drop-border-color": {
|
|
828
|
+
"type": "color",
|
|
829
|
+
"state": "dragged-over"
|
|
830
|
+
},
|
|
831
|
+
"--sf-data-view-drop-background-color": {
|
|
832
|
+
"type": "color",
|
|
833
|
+
"state": "dragged-over"
|
|
834
|
+
},
|
|
835
|
+
"--sf-data-view-drop-color": {
|
|
836
|
+
"type": "color",
|
|
837
|
+
"state": "dragged-over"
|
|
838
|
+
},
|
|
839
|
+
"--sf-data-view-toolbar-gap": {
|
|
840
|
+
"type": "length",
|
|
841
|
+
"state": "default"
|
|
842
|
+
}
|
|
843
|
+
},
|
|
844
|
+
"host-states": {
|
|
845
|
+
"data-state": "string",
|
|
846
|
+
"aria-busy": "string"
|
|
847
|
+
},
|
|
848
|
+
"aliases": {
|
|
849
|
+
"$comment": "Dated aliases of sf-view for the shim (core/js/aliases.js, standard §16 item 20).",
|
|
850
|
+
"since": "2026-10-27",
|
|
851
|
+
"remove-after": "2026-12-01",
|
|
852
|
+
"rows": [
|
|
853
|
+
{
|
|
854
|
+
"from": "aria-label",
|
|
855
|
+
"to": null,
|
|
856
|
+
"kind": "attribute",
|
|
857
|
+
"mode": "host-attribute",
|
|
858
|
+
"section": "§3.1, §4.8",
|
|
859
|
+
"note": "stays a host attribute, read for the accessible name; no shim"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"from": "sf-table-tree-intent",
|
|
863
|
+
"to": "sf-data-view-tree",
|
|
864
|
+
"kind": "event",
|
|
865
|
+
"mode": "same-detail",
|
|
866
|
+
"cancelable": false,
|
|
867
|
+
"section": "§8, vocabulary §9",
|
|
868
|
+
"note": "the view's announcement of the tree's port intents carried a table name; the detail {intent, payload} is unchanged",
|
|
869
|
+
"summary": "A tree intent of simai.dataview-port 1.8.0 -- tree.expand, node.targets or node.move -- announced as the view raises it. The host answers through the port."
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"from": "sf-data-view",
|
|
873
|
+
"to": "sf-view",
|
|
874
|
+
"kind": "tag",
|
|
875
|
+
"since": "2026-11-03",
|
|
876
|
+
"remove_after": "2027-01-01",
|
|
877
|
+
"since-version": "1.8.0",
|
|
878
|
+
"section": "rename plan R2 (ui-control RENAME-PLAN-2026-11-03), naming decision 2026-11-02",
|
|
879
|
+
"note": "the element is sf-view; sf-data-view is a subclass defined beside it until the date"
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"from": "sf-data-view-open",
|
|
883
|
+
"to": "sf-view-open",
|
|
884
|
+
"kind": "event",
|
|
885
|
+
"since": "2026-11-03",
|
|
886
|
+
"remove_after": "2027-01-01",
|
|
887
|
+
"mode": "same-detail",
|
|
888
|
+
"section": "§8",
|
|
889
|
+
"note": "the event name carries the tag"
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
"from": "sf-data-view-deleted",
|
|
893
|
+
"to": "sf-view-deleted",
|
|
894
|
+
"kind": "event",
|
|
895
|
+
"since": "2026-11-03",
|
|
896
|
+
"remove_after": "2027-01-01",
|
|
897
|
+
"mode": "same-detail",
|
|
898
|
+
"section": "§8",
|
|
899
|
+
"note": "the event name carries the tag"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"from": "sf-data-view-answer",
|
|
903
|
+
"to": "sf-view-answer",
|
|
904
|
+
"kind": "event",
|
|
905
|
+
"since": "2026-11-03",
|
|
906
|
+
"remove_after": "2027-01-01",
|
|
907
|
+
"mode": "same-detail",
|
|
908
|
+
"section": "§8",
|
|
909
|
+
"note": "the event name carries the tag"
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
"from": "sf-data-view-state",
|
|
913
|
+
"to": "sf-view-state",
|
|
914
|
+
"kind": "event",
|
|
915
|
+
"since": "2026-11-03",
|
|
916
|
+
"remove_after": "2027-01-01",
|
|
917
|
+
"mode": "same-detail",
|
|
918
|
+
"section": "§8",
|
|
919
|
+
"note": "the event name carries the tag"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"from": "sf-data-view-tree",
|
|
923
|
+
"to": "sf-view-tree",
|
|
924
|
+
"kind": "event",
|
|
925
|
+
"since": "2026-11-03",
|
|
926
|
+
"remove_after": "2027-01-01",
|
|
927
|
+
"mode": "same-detail",
|
|
928
|
+
"section": "§8",
|
|
929
|
+
"note": "the event name carries the tag"
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
"from": "sf-data-view-files-drop",
|
|
933
|
+
"to": "sf-view-files-drop",
|
|
934
|
+
"kind": "event",
|
|
935
|
+
"since": "2026-11-03",
|
|
936
|
+
"remove_after": "2027-01-01",
|
|
937
|
+
"mode": "same-detail",
|
|
938
|
+
"section": "§8",
|
|
939
|
+
"note": "the event name carries the tag"
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
"from": "sf-data-view-saved-view-intent",
|
|
943
|
+
"to": "sf-view-saved-view-intent",
|
|
944
|
+
"kind": "event",
|
|
945
|
+
"since": "2026-11-03",
|
|
946
|
+
"remove_after": "2027-01-01",
|
|
947
|
+
"mode": "same-detail",
|
|
948
|
+
"section": "§8",
|
|
949
|
+
"note": "the event name carries the tag"
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
"from": "sf-data-view-list-open",
|
|
953
|
+
"to": "sf-view-list-open",
|
|
954
|
+
"kind": "event",
|
|
955
|
+
"since": "2026-11-03",
|
|
956
|
+
"remove_after": "2027-01-01",
|
|
957
|
+
"mode": "same-detail",
|
|
958
|
+
"section": "§8",
|
|
959
|
+
"note": "the event name carries the tag"
|
|
960
|
+
}
|
|
961
|
+
]
|
|
962
|
+
},
|
|
963
|
+
"x-summary": "Host-driven data view that composes toolbar, content and pagination around a separate data port.",
|
|
964
|
+
"x-source": {
|
|
965
|
+
"package": "ui-pro",
|
|
966
|
+
"folder": "view",
|
|
967
|
+
"manifest": "simai/ui-pro@9cbe061 components/src/smart/data-view/smart.manifest.json",
|
|
968
|
+
"converted": "control/smart-architecture/stands/17-ports-migration/out/data-view.component.json"
|
|
969
|
+
},
|
|
970
|
+
"x-words": [
|
|
971
|
+
"column-search-placeholder",
|
|
972
|
+
"column-search-empty-text",
|
|
973
|
+
"column-move-label",
|
|
974
|
+
"filter-apply-text",
|
|
975
|
+
"show-more-text",
|
|
976
|
+
"selected-label",
|
|
977
|
+
"total-label",
|
|
978
|
+
"pages-label",
|
|
979
|
+
"first-label",
|
|
980
|
+
"previous-label",
|
|
981
|
+
"page-label",
|
|
982
|
+
"next-label",
|
|
983
|
+
"last-label",
|
|
984
|
+
"page-field-label",
|
|
985
|
+
"action-choose-label",
|
|
986
|
+
"actions-label",
|
|
987
|
+
"actions-region-label",
|
|
988
|
+
"clear-selection-label",
|
|
989
|
+
"page-size-label",
|
|
990
|
+
"pagination-aria-label"
|
|
991
|
+
],
|
|
992
|
+
"x-port": {
|
|
993
|
+
"sha256": "6b6fa1e500b531c2db5cf296c7f3cf09cff991c9d86551f3a6e712ef0e3aad5c",
|
|
994
|
+
"supports": [
|
|
995
|
+
"1.0.0",
|
|
996
|
+
"1.1.0",
|
|
997
|
+
"1.2.0",
|
|
998
|
+
"1.3.0",
|
|
999
|
+
"1.4.0",
|
|
1000
|
+
"1.5.0",
|
|
1001
|
+
"1.6.0",
|
|
1002
|
+
"1.7.0",
|
|
1003
|
+
"1.8.0",
|
|
1004
|
+
"1.9.0",
|
|
1005
|
+
"1.10.0",
|
|
1006
|
+
"1.11.0",
|
|
1007
|
+
"1.12.0",
|
|
1008
|
+
"1.13.0"
|
|
1009
|
+
]
|
|
1010
|
+
},
|
|
1011
|
+
"x-renamed": [
|
|
1012
|
+
"settings.aria-label: a host attribute, read by the base, never a setting (§3.1)",
|
|
1013
|
+
"events.count: 3 carried field(s) held the element, not data (§8)",
|
|
1014
|
+
"events.sf-count-request → count (vocabulary §5 count)",
|
|
1015
|
+
"events.sf-data-view-answer → answer (the DOM name without sf-<tag>-)",
|
|
1016
|
+
"events.sf-data-view-saved-view → save (vocabulary §5.1)",
|
|
1017
|
+
"events.sf-data-view-state → state (the DOM name without sf-<tag>-)",
|
|
1018
|
+
"events.sf-table-action → apply (vocabulary §5 apply)",
|
|
1019
|
+
"events.column-settings-change: 1 carried field(s) held the element, not data (§8)",
|
|
1020
|
+
"events.sf-table-column-settings-change → column-settings-change (the DOM name without sf-<tag>-)",
|
|
1021
|
+
"events.column-settings-reset: 1 carried field(s) held the element, not data (§8)",
|
|
1022
|
+
"events.sf-table-column-settings-reset → column-settings-reset (the DOM name without sf-<tag>-)",
|
|
1023
|
+
"events.sf-table-create → create (vocabulary §5 create)",
|
|
1024
|
+
"events.sf-table-query → query (the DOM name without sf-<tag>-)",
|
|
1025
|
+
"events.sf-table-template-delete → template-delete (the DOM name without sf-<tag>-)",
|
|
1026
|
+
"events.sf-table-template-save → template-save (the DOM name without sf-<tag>-)",
|
|
1027
|
+
"events.sf-table-template-select → template-select (the DOM name without sf-<tag>-)",
|
|
1028
|
+
"events.sf-host-port-request: retires — the runtime hands the port to the parts that declare it (§4.9, 1.3.7); the page answers no request",
|
|
1029
|
+
"events.sf-data-view-list-open → open (vocabulary §5 open)",
|
|
1030
|
+
"events.sf-table-tree → tree (the DOM name without sf-<tag>-)",
|
|
1031
|
+
"events.sf-data-view-files-drop → files-drop (the DOM name without sf-<tag>-)",
|
|
1032
|
+
"events.sf-table-cell-set → cell-set (the DOM name without sf-<tag>-)",
|
|
1033
|
+
"events.sf-table-rows-reorder → move (vocabulary §5 move)",
|
|
1034
|
+
"slots.toolbar.accepts names components (smart.button, smart.input, smart.dropdown), not an interface <name>@<major> (§4.5.1); kept as x-accepts",
|
|
1035
|
+
"slots.content.accepts names components (smart.data-view), not an interface <name>@<major> (§4.5.1); kept as x-accepts",
|
|
1036
|
+
"slots.pagination.accepts names components (smart.pagination), not an interface <name>@<major> (§4.5.1); kept as x-accepts"
|
|
1037
|
+
],
|
|
1038
|
+
"x-decisions": {
|
|
1039
|
+
"shape": "leaf, with reasons (§7, the smaller mechanism). Stand 24 is the measured assembly of this screen (sf-record-browser: sf-source, sf-table, sf-pagination, sf-modal, sf-toast; 35/35 scenarios), and the view keeps its interface: collection, current, total, open {id}, deleted {ids}, refresh. It does not become that assembly now: its source part is a stand-in with no real component (sf-source, real: false in the parts catalogue), its confirm part (sf-change-confirm) moves in another branch, and §7.4 would stop the table's events at the frame, which ui-admin listens to on the page today (sf-table-action-intent, onSearchEnd …, vocabulary §9.2). Stand 24 on these real parts places this leaf where it placed the assembly (CC 0: the part tag).",
|
|
1040
|
+
"version": "1.0.0 → 1.1.0, a minor while sf-table-tree-intent holds a dated alias (§4.10).",
|
|
1041
|
+
"events": "open {id} is a cancelable request (vocabulary §5 open): sent when a row's view action is chosen, and the host's record.open follows unless a listener refused it; deleted {ids} is the fact after an applied delete (vocabulary §4). The tree's port intents are announced as tree {intent, payload}, sf-data-view-tree; the old sf-table-tree-intent follows once. answer and state keep their DOM names and details (instance_id stays snake_case until the next major).",
|
|
1042
|
+
"re-emit": "simai/ui-pro#1 item 3: the view sends none of the table's events as its own; the sf-table-* events a page hears are the inner table's, once each (§8: an element never re-emits a part's event). The converter's apply, save, create, query, template-*, column-settings-*, cell-set and move are the table's and are not declared here.",
|
|
1043
|
+
"alias-conflict": "sf-data-view-saved-view-intent is not this view's event but a page's request to it (a shared save); it stays listened to and is not renamed. The table's names are the table's (its aliases.json).",
|
|
1044
|
+
"carries": "a carried field is one the detail holds under that very name (SF.Assembly checks it on every event); the rest is named in x-detail.",
|
|
1045
|
+
"own-verb-words": "answer, state, tree and files-drop are verbs of this view alone; their words are lang events.<verb>.label.",
|
|
1046
|
+
"bulk-actions": "a page gives the marked rows' actions on its page row's markup (ui-admin: actions=\"publish:…|delete:…\"); a view placed by an assembly makes its own table and page row (light DOM, where the page's sheets reach them) and takes the actions as the list setting bulk-actions [{id, label}], the label from the assembly's language file (§11.3). Stand 24 on the real parts measured the gap.",
|
|
1047
|
+
"values": "state is the vocabulary's (populated → ready, no-access → refused); total, selected (the open record) and selection (the table's marked rows) are read-only.",
|
|
1048
|
+
"actions": "refresh, change-query (concurrency latest: the newest answer wins, by the view's sequence), open-view, save-view, delete-view, apply-under-filter, reset-column-settings, clear-selection and notify answer outcomes (../table/js/manifest-actions.js: the port's {answer, reason, message} is the outcome) and take one object or positional parameters (§4.4). apply-projection, update-record and the tree helpers stay the element's helpers.",
|
|
1049
|
+
"persistence": "the person's sort and page size are kept in SF.Preferences under preferences-key (or collection); nothing is an assembly key (§7.5).",
|
|
1050
|
+
"item-shape": "the projection's records are the table's rows {id, revision, …}; page and page-size are numbers (vocabulary 1.1.5).",
|
|
1051
|
+
"slot-interface": "toolbar, content and pagination take page content as it is; they name no interface (§4.5.1) until a trait exists for them — the x-accepts the converter found are component lists, not interfaces.",
|
|
1052
|
+
"host-port": "connect-port (setHostPort its alias) hands the port; sf-host-port-request is still sent once per connection to a page that answers it, and is not part of this interface (the runtime hands ports down, §4.9).",
|
|
1053
|
+
"listened-names": "the view listens to the table's and the page row's names of standard 1.3.8 (sf-table-apply, -select, -save, -refresh, -expand, -load-more, -move, -query, -create; sf-pagination-change, -size-change, -apply, -load-more, -selection-clear, -count, -action-change, -action-for-all-change), not to their dated aliases, so it keeps working after 2026-12-01 and takes each act once. Another page size reads from the first page.",
|
|
1054
|
+
"own-parts": "a view placed by an assembly (the bare tag, data-sf-instance) makes its sf-table and sf-pagination as light-DOM children in its content and pagination slots, where the page's stylesheets reach them; the fallbacks inside the shadow root are drawn without the table's sheet. A page that writes the documented markup gives them itself and nothing is made. Since 1.6.0 the fallbacks and the made parts are the elements the Loader defines from their own bundles (the rule's relations cl-table, cl-pagination, cl-toast lazy); the view asks the Loader for any not defined yet (SF.Loader.ensure since 1.6.5) and projects again when it is. The fallbacks stay.",
|
|
1055
|
+
"parts-by-tag": "1.6.0: index.js no longer imports ../table, ../pagination or ../toast (a package carries no element layer of its own, ui-source docs/developer/shared-runtime.md); data-view.min.js held a second copy of each (431 KB min, stand 25). Only the table's manifest-actions helpers are imported. The view's own sheet is its first paint (js/first-paint.css -> data-view.css, rule css true): the skeleton rules moved there from sf-table's sheet. A page that links data-view.css by hand keeps a sheet that exists; a page that relies on the Loader gets it from the rule.",
|
|
1056
|
+
"conflict-total": "a filter-wide action whose count moved is a conflict carrying the current total (vocabulary §3.1); the page row shows that total at once.",
|
|
1057
|
+
"access-codes": "a refusal for access is read in both spellings, access_denied (Larena) and access-denied (ui-admin's reference host, stand 24 U2); the value state is refused then.",
|
|
1058
|
+
"lang-ru": "the title is «Представление данных» in Russian.",
|
|
1059
|
+
"template": "the shadow layout is in index.js, the migration form; the rows are sf-table's template; the first paint is the view's own skeleton in its light DOM (presentation.skeleton).",
|
|
1060
|
+
"css-variables": "five public variables: the gap, the drop zone's border, fill and words, the toolbar's gap; they are read with the role tokens as fallbacks.",
|
|
1061
|
+
"skeleton": "index.js _startFirstPaint: the toolbar, the head and a row per row of the page the list asks for (kept page size, else the printed page row's page-size, which the first query also asks for; capped by row-cap; else row-cap, else 10) of expected-columns cells, the compact list below 600 px, and the page row, until the host first answers; printed as the static markup and adopted. expected-columns is the skeleton's shape, never a limit: the answer brings its own columns.",
|
|
1062
|
+
"source-drift": "carried by hand: the estimated total «~N» (ui-pro 71ebff1) is the view's behaviour, not a member.",
|
|
1063
|
+
"docs": "docs.md, where the folder keeps it.",
|
|
1064
|
+
"loader-ensure": "version 1.6.5: the parts, the move dialog's elements and sf-table for the row-action catalogue are asked for through SF.Loader.ensure (core.runtime 1.19.0), not ensureSmartElementLoaded or a race of whenDefined against 3 s of its own (reuse audit 2026-11-02, finding 4). Needs core.runtime >= 1.19.0.",
|
|
1065
|
+
"layer-stack-dialog": "version 1.7.0: the move dialog and the host's confirmation (confirm_required) are sf-modal, not a native <dialog> shown with showModal() (reuse audit 2026-11-02, findings 1 and 2): a modal layer of the one document stack, so a drawer or a modal opened over it or under it is ordered with it, Escape and a press outside close the top one only, focus returns by the stack's rule, the page lock is the stack's. The window is made in slot dialog and drawn in sf-modal's portal; open() asked with a signal answers when it closes (§19.4), accepted only through the apply button (sf-modal confirm()); Escape, the scrim, the close button and «Отмена» answer null as Escape and «Отмена» did. sf-modal, sf-button and sf-radio are asked for through SF.Loader.ensure before it opens; without sf-modal the view says unavailable and writes nothing. Visible: the shared scrim (black at 60) in place of the browser's light backdrop, the title in sf-modal's header with its close button, sf-modal's panel and footer. Needs core.runtime >= 1.19.0.",
|
|
1066
|
+
"framework-tag-renames": "version 1.7.1: the Framework elements it draws, finds and listens to are named by their new tags (Smart component naming of 2026-11-02, sf-[set]-<block>): the bulk clear button is sf-button-icon. The rule relations and the registry ids follow (cl-<new>, smart.<new>; the package reference pro.package.json of the pair). The former tags stay dated aliases of the Framework until 2027-01-01; public CSS variables and classes keep their names. No visible change. Needs the SIMAI Framework pair with the tag renames (core.runtime 1.21.0).",
|
|
1067
|
+
"tag-rename": "version 1.8.0: the tag is sf-view (naming decision 2026-11-02: sf-[set]-<block>[-<variant>]; rename plan R2); the folder view, the id smart.view and the bundle cl-view follow it. sf-data-view stays a dated alias until 2027-01-01: a subclass the Smart base defines beside the new tag, listed in the package rule, in sheets as :is(sf-view, sf-data-view), its events named after the tag followed by their former names (ui-source change journal tag-sf-data-view-to-sf-view, path-smart-data-view-to-view).",
|
|
1068
|
+
"host-chrome": "version 1.8.1: a table the host wrote selectable=\"false\" or settings=\"false\" on keeps it. The view wrote its own chrome (select, settings) over both on every projection, so a list the host had turned them off on came back with a box in every row and the settings column (Larena, the sites list, 2026-11-05). What the table carried before the view first touched it is kept in data-sf-host-selectable and data-sf-host-settings, as data-sf-host-row-actions already was, and the first-paint skeleton draws the same columns."
|
|
1069
|
+
},
|
|
1070
|
+
"x-rule": {
|
|
1071
|
+
"$comment": [
|
|
1072
|
+
"sf-view had no rule either, so its tag loaded nothing and every consumer",
|
|
1073
|
+
"added the script by hand. Found while fixing the same gap in sf-view-properties.",
|
|
1074
|
+
"The relations are what the composite itself composes; the table brings its own",
|
|
1075
|
+
"through cl-view-table."
|
|
1076
|
+
]
|
|
1077
|
+
},
|
|
1078
|
+
"x-registry": {
|
|
1079
|
+
"kind": "composite",
|
|
1080
|
+
"capabilities": [
|
|
1081
|
+
"data-view",
|
|
1082
|
+
"search",
|
|
1083
|
+
"filtering",
|
|
1084
|
+
"sorting",
|
|
1085
|
+
"saved-views",
|
|
1086
|
+
"pagination",
|
|
1087
|
+
"responsive"
|
|
1088
|
+
],
|
|
1089
|
+
"persistence": {
|
|
1090
|
+
"mode": "external-host",
|
|
1091
|
+
"source_of_truth": "host",
|
|
1092
|
+
"network_owner": "host",
|
|
1093
|
+
"revision_field": "revision"
|
|
1094
|
+
},
|
|
1095
|
+
"readiness": {
|
|
1096
|
+
"level": "host-required",
|
|
1097
|
+
"required_checks": [
|
|
1098
|
+
"host-port-reference",
|
|
1099
|
+
"data-view-composite",
|
|
1100
|
+
"responsive-table",
|
|
1101
|
+
"generated-pair"
|
|
1102
|
+
]
|
|
1103
|
+
},
|
|
1104
|
+
"tags": [
|
|
1105
|
+
"admin",
|
|
1106
|
+
"collection",
|
|
1107
|
+
"data",
|
|
1108
|
+
"table"
|
|
1109
|
+
],
|
|
1110
|
+
"composition-declarative": {
|
|
1111
|
+
"standard": "simai.composition.document.v1",
|
|
1112
|
+
"type": "smart.view",
|
|
1113
|
+
"mode": "leaf",
|
|
1114
|
+
"profiles": [
|
|
1115
|
+
"ui-layout"
|
|
1116
|
+
],
|
|
1117
|
+
"props": [
|
|
1118
|
+
"aria-label"
|
|
1119
|
+
],
|
|
1120
|
+
"data": {},
|
|
1121
|
+
"events": [
|
|
1122
|
+
"sf-view-answer",
|
|
1123
|
+
"sf-view-saved-view-intent",
|
|
1124
|
+
"sf-view-state",
|
|
1125
|
+
"sf-pagination-count",
|
|
1126
|
+
"sf-table-action-intent",
|
|
1127
|
+
"sf-table-column-settings-change",
|
|
1128
|
+
"sf-view-table-column-settings-reset",
|
|
1129
|
+
"sf-table-create-intent",
|
|
1130
|
+
"sf-table-query-intent",
|
|
1131
|
+
"sf-view-table-template-delete",
|
|
1132
|
+
"sf-view-table-template-save",
|
|
1133
|
+
"sf-view-table-template-select",
|
|
1134
|
+
"sf-table-tree-intent"
|
|
1135
|
+
],
|
|
1136
|
+
"persistence": {
|
|
1137
|
+
"settings_key_prop": null,
|
|
1138
|
+
"revision_prop": null
|
|
1139
|
+
},
|
|
1140
|
+
"presentation": {
|
|
1141
|
+
"views": [
|
|
1142
|
+
"default"
|
|
1143
|
+
],
|
|
1144
|
+
"presets": [],
|
|
1145
|
+
"modifiers": []
|
|
1146
|
+
},
|
|
1147
|
+
"slots": {
|
|
1148
|
+
"toolbar": {
|
|
1149
|
+
"accepts": [
|
|
1150
|
+
"smart.button",
|
|
1151
|
+
"smart.input",
|
|
1152
|
+
"smart.dropdown"
|
|
1153
|
+
]
|
|
1154
|
+
},
|
|
1155
|
+
"content": {
|
|
1156
|
+
"accepts": [
|
|
1157
|
+
"smart.view-table"
|
|
1158
|
+
]
|
|
1159
|
+
},
|
|
1160
|
+
"pagination": {
|
|
1161
|
+
"accepts": [
|
|
1162
|
+
"smart.pagination"
|
|
1163
|
+
]
|
|
1164
|
+
}
|
|
1165
|
+
},
|
|
1166
|
+
"renderer": {
|
|
1167
|
+
"kind": "custom-element",
|
|
1168
|
+
"name": "sf-view"
|
|
1169
|
+
},
|
|
1170
|
+
"assets": [
|
|
1171
|
+
"smart/view"
|
|
1172
|
+
],
|
|
1173
|
+
"host_port": {
|
|
1174
|
+
"port": "simai.dataview-port",
|
|
1175
|
+
"version": "1.13.0",
|
|
1176
|
+
"path": "src/core/contracts/ports/simai.dataview-port/1.13.0/port.json",
|
|
1177
|
+
"sha256": "6b6fa1e500b531c2db5cf296c7f3cf09cff991c9d86551f3a6e712ef0e3aad5c",
|
|
1178
|
+
"supported_versions": [
|
|
1179
|
+
"1.0.0",
|
|
1180
|
+
"1.1.0",
|
|
1181
|
+
"1.2.0",
|
|
1182
|
+
"1.3.0",
|
|
1183
|
+
"1.4.0",
|
|
1184
|
+
"1.5.0",
|
|
1185
|
+
"1.6.0",
|
|
1186
|
+
"1.7.0",
|
|
1187
|
+
"1.8.0",
|
|
1188
|
+
"1.9.0",
|
|
1189
|
+
"1.10.0",
|
|
1190
|
+
"1.11.0",
|
|
1191
|
+
"1.12.0",
|
|
1192
|
+
"1.13.0"
|
|
1193
|
+
]
|
|
1194
|
+
}
|
|
1195
|
+
},
|
|
1196
|
+
"item_contract": {
|
|
1197
|
+
"page": "Positive one-based page number bounded by total and page-size.",
|
|
1198
|
+
"ellipsis": "Non-interactive indicator for omitted pages."
|
|
1199
|
+
},
|
|
1200
|
+
"contracts": {
|
|
1201
|
+
"navigation": {
|
|
1202
|
+
"const": "The visible root is a named nav; page actions are native buttons because the component emits state events instead of owning URLs."
|
|
1203
|
+
},
|
|
1204
|
+
"current": {
|
|
1205
|
+
"const": "Exactly one rendered page exposes aria-current=page when total is greater than zero."
|
|
1206
|
+
},
|
|
1207
|
+
"empty": {
|
|
1208
|
+
"const": "A zero-sized collection renders no page controls and emits no page-change."
|
|
1209
|
+
},
|
|
1210
|
+
"responsive": {
|
|
1211
|
+
"const": "A long desktop range keeps edge pages and static ellipses; a narrow range keeps the current page, adjacent pages and directional actions on one line."
|
|
1212
|
+
},
|
|
1213
|
+
"composition": {
|
|
1214
|
+
"const": "Show-more, page-size and batch-action sections remain compatible optional compositions; data loading and host actions stay outside the component."
|
|
1215
|
+
}
|
|
1216
|
+
},
|
|
1217
|
+
"state": {
|
|
1218
|
+
"machines": {
|
|
1219
|
+
"data": [
|
|
1220
|
+
"loading",
|
|
1221
|
+
"populated",
|
|
1222
|
+
"empty",
|
|
1223
|
+
"error"
|
|
1224
|
+
]
|
|
1225
|
+
},
|
|
1226
|
+
"visual_states": [
|
|
1227
|
+
"default",
|
|
1228
|
+
"loading",
|
|
1229
|
+
"empty",
|
|
1230
|
+
"error"
|
|
1231
|
+
]
|
|
1232
|
+
},
|
|
1233
|
+
"artifacts": {
|
|
1234
|
+
"fixtures": [],
|
|
1235
|
+
"scenarios": []
|
|
1236
|
+
},
|
|
1237
|
+
"ownership": {
|
|
1238
|
+
"source": "simai/ui-admin",
|
|
1239
|
+
"data": "host",
|
|
1240
|
+
"effects": "host",
|
|
1241
|
+
"forbidden_client_responsibilities": [
|
|
1242
|
+
"access decisions",
|
|
1243
|
+
"database writes",
|
|
1244
|
+
"unspecified transport"
|
|
1245
|
+
]
|
|
1246
|
+
},
|
|
1247
|
+
"security": {
|
|
1248
|
+
"permissions_owner": "host",
|
|
1249
|
+
"untrusted_inputs": [
|
|
1250
|
+
"query",
|
|
1251
|
+
"records",
|
|
1252
|
+
"saved_views",
|
|
1253
|
+
"answer messages"
|
|
1254
|
+
],
|
|
1255
|
+
"network_policy": "deny"
|
|
1256
|
+
},
|
|
1257
|
+
"presentation": {
|
|
1258
|
+
"skeleton": {
|
|
1259
|
+
"shape": "rows",
|
|
1260
|
+
"while_loading": "template"
|
|
1261
|
+
},
|
|
1262
|
+
"themes": [
|
|
1263
|
+
"light",
|
|
1264
|
+
"dark"
|
|
1265
|
+
],
|
|
1266
|
+
"locales": [
|
|
1267
|
+
"ru",
|
|
1268
|
+
"en"
|
|
1269
|
+
],
|
|
1270
|
+
"responsive": [
|
|
1271
|
+
"Slots and child components own responsive behaviour"
|
|
1272
|
+
]
|
|
1273
|
+
},
|
|
1274
|
+
"ai_guidance": {
|
|
1275
|
+
"use_when": "Use for a host-driven CMS collection with toolbar, table and pagination.",
|
|
1276
|
+
"do_not": [
|
|
1277
|
+
"Do not embed rows in the composition recipe",
|
|
1278
|
+
"Do not infer permissions from visible buttons"
|
|
1279
|
+
],
|
|
1280
|
+
"required_reads": [
|
|
1281
|
+
"host_port",
|
|
1282
|
+
"events",
|
|
1283
|
+
"ownership",
|
|
1284
|
+
"compatibility",
|
|
1285
|
+
"docs"
|
|
1286
|
+
],
|
|
1287
|
+
"minimal_example": "<sf-view aria-label=\"Записи\"><sf-view-table slot=\"content\" aria-label=\"Записи\"></sf-view-table><sf-pagination slot=\"pagination\"></sf-pagination></sf-view>",
|
|
1288
|
+
"owner_commands": [
|
|
1289
|
+
"node scripts/test.mjs",
|
|
1290
|
+
"node scripts/run-browser-probes.mjs <free output> <package output>"
|
|
1291
|
+
]
|
|
1292
|
+
},
|
|
1293
|
+
"accessibility": {
|
|
1294
|
+
"accessible_name": "required",
|
|
1295
|
+
"keyboard": [
|
|
1296
|
+
"Native controls and child Smart components"
|
|
1297
|
+
],
|
|
1298
|
+
"focus": "No focus movement on data refresh"
|
|
1299
|
+
},
|
|
1300
|
+
"compatibility": {
|
|
1301
|
+
"migrations": [
|
|
1302
|
+
{
|
|
1303
|
+
"from": "1.0.0",
|
|
1304
|
+
"to": "1.1.0",
|
|
1305
|
+
"changes": [
|
|
1306
|
+
"From component.json (standard simai.smart-component 1.3.8): sf-data-view-open {id} (cancelable) before the host's record.open, sf-data-view-deleted {ids} after an applied delete, sf-data-view-tree with sf-table-tree-intent as its dated alias; values state (vocabulary), total, selected, selection; settings collection and current; the actions answer outcomes."
|
|
1307
|
+
]
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"from": "1.4.2",
|
|
1311
|
+
"to": "1.4.3",
|
|
1312
|
+
"changes": [
|
|
1313
|
+
"The first-paint snapshot's sheets.json lists the utility sheets its markup uses (retaken on ui-source 5ba9399); no behaviour changed. Nothing to change for a host."
|
|
1314
|
+
]
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
"from": "1.6.4",
|
|
1318
|
+
"to": "1.6.5",
|
|
1319
|
+
"changes": [
|
|
1320
|
+
"Parts are asked for through SF.Loader.ensure; needs core.runtime >= 1.19.0. Nothing to change for a host on a pair from core.runtime 1.19.0 on."
|
|
1321
|
+
]
|
|
1322
|
+
},
|
|
1323
|
+
{
|
|
1324
|
+
"from": "1.6.5",
|
|
1325
|
+
"to": "1.7.0",
|
|
1326
|
+
"changes": [
|
|
1327
|
+
"The move dialog and the confirmation are sf-modal on the layer stack, not a native <dialog>; needs core.runtime >= 1.19.0 and sf-modal on the page's pair. Visible: the shared scrim (black at 60) instead of the browser's backdrop, sf-modal's header with a close button and its footer. Same answers: applied only through the apply button. Nothing to change for a host."
|
|
1328
|
+
]
|
|
1329
|
+
},
|
|
1330
|
+
{
|
|
1331
|
+
"from": "1.7.0",
|
|
1332
|
+
"to": "1.7.1",
|
|
1333
|
+
"changes": [
|
|
1334
|
+
"Draws and finds the renamed Framework elements by their new tags (the bulk clear button is sf-button-icon); the rule relations name cl-<new>. Needs the SIMAI Framework pair with the tag renames (core.runtime 1.21.0). No visible change. Nothing to change for a host on that pair; a host that writes the former tags keeps working until 2027-01-01."
|
|
1335
|
+
]
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"from": "1.7.1",
|
|
1339
|
+
"to": "1.8.0",
|
|
1340
|
+
"changes": [
|
|
1341
|
+
"The tag is sf-view (rename plan R2, naming decision 2026-11-02: sf-[set]-<block>); the folder view, the id smart.view and the bundle cl-view follow it (were data-view, smart.data-view-composite, cl-data-view). sf-data-view stays a dated alias until 2027-01-01: old markup upgrades as this element, the Loader forwards cl-data-view, and every event fires under its former name as well, with the same detail. Public CSS variables and classes keep their names; the opaque instance_id of the state and answer events reads sf-view-<n> (was sf-data-view-<n>). Needs the SIMAI Framework pair whose package reference lists the former tag (core.runtime 1.22.0). Nothing to change for a host until 2027-01-01; new markup writes sf-view."
|
|
1342
|
+
]
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"from": "1.8.0",
|
|
1346
|
+
"to": "1.8.1",
|
|
1347
|
+
"changes": [
|
|
1348
|
+
"A table the host wrote selectable=\"false\" or settings=\"false\" on keeps it inside the view (no row boxes, no settings column); before, the view's chrome overwrote both. Nothing to change for a host; a host that wanted the view's boxes on such a table removes its own attribute."
|
|
1349
|
+
]
|
|
1350
|
+
}
|
|
1351
|
+
]
|
|
1352
|
+
},
|
|
1353
|
+
"alias-events": {
|
|
1354
|
+
"sf-table-tree-intent": {
|
|
1355
|
+
"summary": "A tree intent of simai.dataview-port 1.8.0 -- tree.expand, node.targets or node.move -- announced as the view raises it. The host answers through the port.",
|
|
1356
|
+
"payload": {
|
|
1357
|
+
"type": "object",
|
|
1358
|
+
"required": [
|
|
1359
|
+
"intent",
|
|
1360
|
+
"payload"
|
|
1361
|
+
],
|
|
1362
|
+
"additionalProperties": false,
|
|
1363
|
+
"properties": {
|
|
1364
|
+
"intent": {
|
|
1365
|
+
"type": "string"
|
|
1366
|
+
},
|
|
1367
|
+
"payload": {
|
|
1368
|
+
"type": "object"
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
},
|
|
1374
|
+
"event-fields": {
|
|
1375
|
+
"sf-table-template-save": {
|
|
1376
|
+
"payload": {
|
|
1377
|
+
"description": "One template object when a single template is saved from the form, or an array of them when Apply on the Templates tab changed several (order, pin, default, selected).",
|
|
1378
|
+
"oneOf": [
|
|
1379
|
+
{
|
|
1380
|
+
"type": "object",
|
|
1381
|
+
"required": [
|
|
1382
|
+
"key",
|
|
1383
|
+
"label",
|
|
1384
|
+
"settings"
|
|
1385
|
+
],
|
|
1386
|
+
"properties": {
|
|
1387
|
+
"key": {
|
|
1388
|
+
"type": "string",
|
|
1389
|
+
"description": "The template's key; a new template gets filter_template_<n>."
|
|
1390
|
+
},
|
|
1391
|
+
"label": {
|
|
1392
|
+
"type": "string",
|
|
1393
|
+
"description": "The name the person gave it."
|
|
1394
|
+
},
|
|
1395
|
+
"selected": {
|
|
1396
|
+
"type": "boolean",
|
|
1397
|
+
"description": "Whether it is the applied template."
|
|
1398
|
+
},
|
|
1399
|
+
"data": {
|
|
1400
|
+
"type": "object",
|
|
1401
|
+
"description": "The filter draft it keeps: the form values, `values` and `tags`."
|
|
1402
|
+
},
|
|
1403
|
+
"settings": {
|
|
1404
|
+
"type": "object",
|
|
1405
|
+
"properties": {
|
|
1406
|
+
"filter_fields": {
|
|
1407
|
+
"type": "array",
|
|
1408
|
+
"items": {
|
|
1409
|
+
"type": "string"
|
|
1410
|
+
},
|
|
1411
|
+
"description": "The filter fields it was showing, so opening it shows them again."
|
|
1412
|
+
}
|
|
1413
|
+
},
|
|
1414
|
+
"description": "Passed through by the port as it is."
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
},
|
|
1418
|
+
{
|
|
1419
|
+
"type": "array",
|
|
1420
|
+
"items": {
|
|
1421
|
+
"type": "object",
|
|
1422
|
+
"required": [
|
|
1423
|
+
"key",
|
|
1424
|
+
"label",
|
|
1425
|
+
"settings"
|
|
1426
|
+
],
|
|
1427
|
+
"properties": {
|
|
1428
|
+
"key": {
|
|
1429
|
+
"type": "string",
|
|
1430
|
+
"description": "The template's key; a new template gets filter_template_<n>."
|
|
1431
|
+
},
|
|
1432
|
+
"label": {
|
|
1433
|
+
"type": "string",
|
|
1434
|
+
"description": "The name the person gave it."
|
|
1435
|
+
},
|
|
1436
|
+
"selected": {
|
|
1437
|
+
"type": "boolean",
|
|
1438
|
+
"description": "Whether it is the applied template."
|
|
1439
|
+
},
|
|
1440
|
+
"data": {
|
|
1441
|
+
"type": "object",
|
|
1442
|
+
"description": "The filter draft it keeps: the form values, `values` and `tags`."
|
|
1443
|
+
},
|
|
1444
|
+
"settings": {
|
|
1445
|
+
"type": "object",
|
|
1446
|
+
"properties": {
|
|
1447
|
+
"filter_fields": {
|
|
1448
|
+
"type": "array",
|
|
1449
|
+
"items": {
|
|
1450
|
+
"type": "string"
|
|
1451
|
+
},
|
|
1452
|
+
"description": "The filter fields it was showing, so opening it shows them again."
|
|
1453
|
+
}
|
|
1454
|
+
},
|
|
1455
|
+
"description": "Passed through by the port as it is."
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
},
|
|
1459
|
+
"minItems": 1
|
|
1460
|
+
}
|
|
1461
|
+
]
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
"methods": {
|
|
1466
|
+
"applyProjection": {
|
|
1467
|
+
"summary": "Render a host answer in all three slots.",
|
|
1468
|
+
"arguments": [
|
|
1469
|
+
{
|
|
1470
|
+
"name": "data",
|
|
1471
|
+
"type": "object",
|
|
1472
|
+
"required": true
|
|
1473
|
+
}
|
|
1474
|
+
],
|
|
1475
|
+
"returns": {
|
|
1476
|
+
"type": "null"
|
|
1477
|
+
}
|
|
1478
|
+
},
|
|
1479
|
+
"saveColumnSettings": {
|
|
1480
|
+
"summary": "Write a column-settings layer, personal or shared, against its revision: settings.save_personal or settings.save_shared. The base revision is the one given, else the layer's, else the port target's. After a conflict the view takes the current_revision (and the layer's columns) the answer carries beside answer, as simai.dataview-port 1.12.0 states; it still reads data.current_revision and data.column_settings from a host that followed 1.10.0's words, and re-reads the list when the conflict names no revision.",
|
|
1481
|
+
"arguments": [
|
|
1482
|
+
{
|
|
1483
|
+
"name": "columnSettings",
|
|
1484
|
+
"type": "object",
|
|
1485
|
+
"required": true,
|
|
1486
|
+
"description": "The column-preference delta to write, keyed by column key."
|
|
1487
|
+
},
|
|
1488
|
+
{
|
|
1489
|
+
"name": "options",
|
|
1490
|
+
"type": "object",
|
|
1491
|
+
"required": false,
|
|
1492
|
+
"description": "{shared?: boolean, base_revision?: string|number}. shared writes the shared layer (default false); base_revision overrides the revision the view holds.",
|
|
1493
|
+
"properties": {
|
|
1494
|
+
"shared": {
|
|
1495
|
+
"type": "boolean",
|
|
1496
|
+
"default": false
|
|
1497
|
+
},
|
|
1498
|
+
"base_revision": {
|
|
1499
|
+
"type": [
|
|
1500
|
+
"string",
|
|
1501
|
+
"number"
|
|
1502
|
+
]
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
],
|
|
1507
|
+
"returns": {
|
|
1508
|
+
"type": "object",
|
|
1509
|
+
"description": "A promise of the port answer {answer: applied|conflict|refused|unavailable, …}, or of null when superseded. Resolves to {answer: 'unavailable', reason: 'no-base-revision'} without asking the host when no revision is known."
|
|
1510
|
+
}
|
|
1511
|
+
},
|
|
1512
|
+
"setHostPort": {
|
|
1513
|
+
"summary": "Bind an exact host adapter.",
|
|
1514
|
+
"arguments": [
|
|
1515
|
+
{
|
|
1516
|
+
"name": "host",
|
|
1517
|
+
"type": "object",
|
|
1518
|
+
"required": true
|
|
1519
|
+
}
|
|
1520
|
+
],
|
|
1521
|
+
"returns": {
|
|
1522
|
+
"type": "object",
|
|
1523
|
+
"description": "The element, for chaining."
|
|
1524
|
+
}
|
|
1525
|
+
},
|
|
1526
|
+
"updateRecord": {
|
|
1527
|
+
"summary": "Write one record in place: that row is rewritten and nothing is asked of the host. A write answered with records alone takes this path by itself.",
|
|
1528
|
+
"arguments": [
|
|
1529
|
+
{
|
|
1530
|
+
"name": "id",
|
|
1531
|
+
"type": [
|
|
1532
|
+
"string",
|
|
1533
|
+
"integer"
|
|
1534
|
+
],
|
|
1535
|
+
"required": true
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"name": "patch",
|
|
1539
|
+
"type": "object",
|
|
1540
|
+
"required": false
|
|
1541
|
+
}
|
|
1542
|
+
],
|
|
1543
|
+
"returns": {
|
|
1544
|
+
"type": "boolean",
|
|
1545
|
+
"description": "Whether a shown record was rewritten."
|
|
1546
|
+
}
|
|
1547
|
+
},
|
|
1548
|
+
"expandNode": {
|
|
1549
|
+
"summary": "Open a node the host said has children: from what the view holds, or by asking the host with tree.expand.",
|
|
1550
|
+
"arguments": [
|
|
1551
|
+
{
|
|
1552
|
+
"name": "id",
|
|
1553
|
+
"type": [
|
|
1554
|
+
"string",
|
|
1555
|
+
"integer"
|
|
1556
|
+
],
|
|
1557
|
+
"required": true
|
|
1558
|
+
}
|
|
1559
|
+
],
|
|
1560
|
+
"returns": {
|
|
1561
|
+
"type": "object",
|
|
1562
|
+
"description": "A promise of the host answer, or of null when superseded; null at once when the node is unknown, has no children, or its children are already held."
|
|
1563
|
+
}
|
|
1564
|
+
},
|
|
1565
|
+
"collapseNode": {
|
|
1566
|
+
"summary": "Close an open node. The view's own business; the host is not asked.",
|
|
1567
|
+
"arguments": [
|
|
1568
|
+
{
|
|
1569
|
+
"name": "id",
|
|
1570
|
+
"type": [
|
|
1571
|
+
"string",
|
|
1572
|
+
"integer"
|
|
1573
|
+
],
|
|
1574
|
+
"required": true
|
|
1575
|
+
}
|
|
1576
|
+
],
|
|
1577
|
+
"returns": {
|
|
1578
|
+
"type": "null"
|
|
1579
|
+
}
|
|
1580
|
+
},
|
|
1581
|
+
"loadMoreNodes": {
|
|
1582
|
+
"summary": "The next page of one level: the roots through the query, a node's children through tree.expand with its cursor.",
|
|
1583
|
+
"arguments": [
|
|
1584
|
+
{
|
|
1585
|
+
"name": "parent",
|
|
1586
|
+
"type": [
|
|
1587
|
+
"string",
|
|
1588
|
+
"integer",
|
|
1589
|
+
"null"
|
|
1590
|
+
],
|
|
1591
|
+
"required": true
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
"name": "cursor",
|
|
1595
|
+
"type": [
|
|
1596
|
+
"string",
|
|
1597
|
+
"null"
|
|
1598
|
+
],
|
|
1599
|
+
"required": false
|
|
1600
|
+
}
|
|
1601
|
+
],
|
|
1602
|
+
"returns": {
|
|
1603
|
+
"type": "object",
|
|
1604
|
+
"description": "A promise of the host answer, or of null when superseded."
|
|
1605
|
+
}
|
|
1606
|
+
},
|
|
1607
|
+
"openMoveDialog": {
|
|
1608
|
+
"summary": "Ask the host where a record may go (node.targets), let the person choose among exactly those places, and move it there (node.move).",
|
|
1609
|
+
"arguments": [
|
|
1610
|
+
{
|
|
1611
|
+
"name": "record",
|
|
1612
|
+
"type": "object",
|
|
1613
|
+
"required": true
|
|
1614
|
+
}
|
|
1615
|
+
],
|
|
1616
|
+
"returns": {
|
|
1617
|
+
"type": "object",
|
|
1618
|
+
"description": "A promise of the host answer, or of null when superseded."
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
},
|
|
1622
|
+
"inputs": {
|
|
1623
|
+
"aria-label": {
|
|
1624
|
+
"default": "Представление данных"
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
}
|
|
1628
|
+
}
|