@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,1593 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 2,
|
|
3
|
+
"id": "smart.view-properties",
|
|
4
|
+
"version": "1.10.0",
|
|
5
|
+
"title": "Property view",
|
|
6
|
+
"summary": "One object's fields shown as sections, groups and fields, each drawn by the per-type field renderer set, behind a separate host port. A group is edited and saved as one revision by the button, and a reference field is picked from the host's own candidates a page at a time. The pair to the data view: that one is a set of records, this one is a single object.",
|
|
7
|
+
"kind": "composite",
|
|
8
|
+
"reuse_mode": "whole",
|
|
9
|
+
"lifecycle": "experimental",
|
|
10
|
+
"tags": [
|
|
11
|
+
"admin",
|
|
12
|
+
"record",
|
|
13
|
+
"form",
|
|
14
|
+
"property"
|
|
15
|
+
],
|
|
16
|
+
"capabilities": [
|
|
17
|
+
"field-renderers",
|
|
18
|
+
"file-upload",
|
|
19
|
+
"group-edit",
|
|
20
|
+
"host-slots",
|
|
21
|
+
"modeless-panel",
|
|
22
|
+
"panel-stack",
|
|
23
|
+
"property-view",
|
|
24
|
+
"record-picker",
|
|
25
|
+
"responsive",
|
|
26
|
+
"sections"
|
|
27
|
+
],
|
|
28
|
+
"custom_element": "sf-view-properties",
|
|
29
|
+
"templates": [
|
|
30
|
+
"default"
|
|
31
|
+
],
|
|
32
|
+
"exported_parts": [],
|
|
33
|
+
"composition": {
|
|
34
|
+
"uses": [
|
|
35
|
+
"component.accordion",
|
|
36
|
+
"component.icons",
|
|
37
|
+
"smart.avatar",
|
|
38
|
+
"smart.badge",
|
|
39
|
+
"smart.button",
|
|
40
|
+
"smart.button-copy",
|
|
41
|
+
"smart.button-group",
|
|
42
|
+
"smart.button-icon",
|
|
43
|
+
"smart.checkbox",
|
|
44
|
+
"smart.drawer",
|
|
45
|
+
"smart.dropdown",
|
|
46
|
+
"smart.empty-state",
|
|
47
|
+
"smart.file-preview",
|
|
48
|
+
"smart.file-upload",
|
|
49
|
+
"smart.help-mark",
|
|
50
|
+
"smart.icon",
|
|
51
|
+
"smart.input",
|
|
52
|
+
"smart.input-color",
|
|
53
|
+
"smart.input-country",
|
|
54
|
+
"smart.input-date",
|
|
55
|
+
"smart.input-textarea",
|
|
56
|
+
"smart.list-item",
|
|
57
|
+
"smart.popover",
|
|
58
|
+
"smart.profile-picker",
|
|
59
|
+
"smart.progress-bar",
|
|
60
|
+
"smart.progress-scale",
|
|
61
|
+
"smart.reference-link",
|
|
62
|
+
"smart.slider-range",
|
|
63
|
+
"smart.sortable",
|
|
64
|
+
"smart.spinner",
|
|
65
|
+
"smart.switch",
|
|
66
|
+
"smart.tabs",
|
|
67
|
+
"smart.tag",
|
|
68
|
+
"smart.tree",
|
|
69
|
+
"smart.tree-item",
|
|
70
|
+
"smart.view",
|
|
71
|
+
"smart.view-table"
|
|
72
|
+
],
|
|
73
|
+
"public_parts": [],
|
|
74
|
+
"declarative": {
|
|
75
|
+
"standard": "simai.composition.document.v1",
|
|
76
|
+
"type": "smart.view-properties",
|
|
77
|
+
"mode": "leaf",
|
|
78
|
+
"profiles": [
|
|
79
|
+
"ui-layout"
|
|
80
|
+
],
|
|
81
|
+
"props": [
|
|
82
|
+
"template",
|
|
83
|
+
"add-field-text",
|
|
84
|
+
"add-group-text",
|
|
85
|
+
"add-section-text",
|
|
86
|
+
"back-label",
|
|
87
|
+
"cancel-configuring-text",
|
|
88
|
+
"cancel-name-text",
|
|
89
|
+
"cancel-text",
|
|
90
|
+
"changed-text",
|
|
91
|
+
"close-label",
|
|
92
|
+
"collection",
|
|
93
|
+
"collection-icon",
|
|
94
|
+
"collection-label",
|
|
95
|
+
"configure-hint-narrow-text",
|
|
96
|
+
"configure-hint-text",
|
|
97
|
+
"configure-text",
|
|
98
|
+
"conflict-text",
|
|
99
|
+
"copy-link-label",
|
|
100
|
+
"delete-text",
|
|
101
|
+
"done-configuring-text",
|
|
102
|
+
"edit-text",
|
|
103
|
+
"empty-record-text",
|
|
104
|
+
"empty-text",
|
|
105
|
+
"errors-text",
|
|
106
|
+
"favourite",
|
|
107
|
+
"favourite-label",
|
|
108
|
+
"field-label-text",
|
|
109
|
+
"field-settings-text",
|
|
110
|
+
"hidden-text",
|
|
111
|
+
"hide-rare-text",
|
|
112
|
+
"hint-text",
|
|
113
|
+
"in-this-group-text",
|
|
114
|
+
"inherited-text",
|
|
115
|
+
"link-copied-label",
|
|
116
|
+
"menu-label",
|
|
117
|
+
"move-down-text",
|
|
118
|
+
"move-up-text",
|
|
119
|
+
"new-group-title",
|
|
120
|
+
"new-section-title",
|
|
121
|
+
"no-match-text",
|
|
122
|
+
"open-full-label",
|
|
123
|
+
"panel",
|
|
124
|
+
"panel-label",
|
|
125
|
+
"panel-size",
|
|
126
|
+
"size",
|
|
127
|
+
"mode",
|
|
128
|
+
"panel-width",
|
|
129
|
+
"personal-layer-text",
|
|
130
|
+
"rare-text",
|
|
131
|
+
"record-id",
|
|
132
|
+
"remove-field-text",
|
|
133
|
+
"remove-group-text",
|
|
134
|
+
"remove-section-text",
|
|
135
|
+
"rename-text",
|
|
136
|
+
"reset-view-ask-text",
|
|
137
|
+
"reset-view-text",
|
|
138
|
+
"save-name-text",
|
|
139
|
+
"save-text",
|
|
140
|
+
"section-icon-text",
|
|
141
|
+
"section-icons",
|
|
142
|
+
"sections-as",
|
|
143
|
+
"sections-label",
|
|
144
|
+
"shared-layer-text",
|
|
145
|
+
"show-rare",
|
|
146
|
+
"show-rare-text",
|
|
147
|
+
"shown-text",
|
|
148
|
+
"unplaced-hint-text",
|
|
149
|
+
"unplaced-title",
|
|
150
|
+
"variant-text",
|
|
151
|
+
"view-conflict-text",
|
|
152
|
+
"view-denied-text",
|
|
153
|
+
"width-text",
|
|
154
|
+
"view-profile-label",
|
|
155
|
+
"add-view-text",
|
|
156
|
+
"new-view-text",
|
|
157
|
+
"delete-view-text",
|
|
158
|
+
"last-shared-view-text",
|
|
159
|
+
"full",
|
|
160
|
+
"open",
|
|
161
|
+
"aria-label"
|
|
162
|
+
],
|
|
163
|
+
"presentation": {
|
|
164
|
+
"views": [
|
|
165
|
+
"default"
|
|
166
|
+
],
|
|
167
|
+
"presets": [],
|
|
168
|
+
"modifiers": []
|
|
169
|
+
},
|
|
170
|
+
"slots": {},
|
|
171
|
+
"renderer": {
|
|
172
|
+
"kind": "custom-element",
|
|
173
|
+
"name": "sf-view-properties"
|
|
174
|
+
},
|
|
175
|
+
"assets": [
|
|
176
|
+
"smart/view-properties"
|
|
177
|
+
],
|
|
178
|
+
"data": {},
|
|
179
|
+
"events": [
|
|
180
|
+
"sf-view-properties-close",
|
|
181
|
+
"sf-view-properties-open-full",
|
|
182
|
+
"sf-view-properties-saved",
|
|
183
|
+
"sf-view-properties-failed",
|
|
184
|
+
"sf-view-properties-open",
|
|
185
|
+
"sf-view-properties-delete",
|
|
186
|
+
"sf-view-properties-created",
|
|
187
|
+
"sf-view-properties-cancel",
|
|
188
|
+
"sf-view-properties-state",
|
|
189
|
+
"sf-view-properties-address-copy",
|
|
190
|
+
"sf-view-properties-favourite"
|
|
191
|
+
],
|
|
192
|
+
"persistence": {
|
|
193
|
+
"settings_key_prop": null,
|
|
194
|
+
"revision_prop": null
|
|
195
|
+
},
|
|
196
|
+
"host_port": {
|
|
197
|
+
"port": "simai.property-view-port",
|
|
198
|
+
"version": "1.17.0",
|
|
199
|
+
"path": "src/core/contracts/ports/simai.property-view-port/1.17.0/port.json",
|
|
200
|
+
"sha256": "123295c1e8fda146ebd25a814fc4695c6fdb6cb1f84911a66d4568e0c7504120",
|
|
201
|
+
"supported_versions": [
|
|
202
|
+
"1.0.0",
|
|
203
|
+
"1.1.0",
|
|
204
|
+
"1.2.0",
|
|
205
|
+
"1.3.0",
|
|
206
|
+
"1.4.0",
|
|
207
|
+
"1.5.0",
|
|
208
|
+
"1.6.0",
|
|
209
|
+
"1.7.0",
|
|
210
|
+
"1.8.0",
|
|
211
|
+
"1.10.0",
|
|
212
|
+
"1.11.0",
|
|
213
|
+
"1.12.0",
|
|
214
|
+
"1.13.0",
|
|
215
|
+
"1.14.0",
|
|
216
|
+
"1.15.0",
|
|
217
|
+
"1.16.0",
|
|
218
|
+
"1.17.0"
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"inputs": {
|
|
224
|
+
"type": "object",
|
|
225
|
+
"properties": {
|
|
226
|
+
"template": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"default": "default",
|
|
229
|
+
"description": "Which template draws the view."
|
|
230
|
+
},
|
|
231
|
+
"root-class": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"default": "",
|
|
234
|
+
"description": "Classes added to the root element the component draws."
|
|
235
|
+
},
|
|
236
|
+
"root-style": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"default": "",
|
|
239
|
+
"description": "Inline style declarations set on the root element the component draws, custom properties included."
|
|
240
|
+
},
|
|
241
|
+
"add-field-text": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"description": "Opens the list of fields this group can take: the ones this view places nowhere, and the ones another group holds."
|
|
244
|
+
},
|
|
245
|
+
"add-group-text": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"description": "Names the button that makes a new area at the end of the arrangement."
|
|
248
|
+
},
|
|
249
|
+
"add-section-text": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"description": "Names the button that makes a new section."
|
|
252
|
+
},
|
|
253
|
+
"back-label": {
|
|
254
|
+
"type": "string",
|
|
255
|
+
"description": "The control that returns from a section screen to the list of sections, which exists only below the drawer breakpoint. Above it the sections stand beside the groups and there is nothing to go back from."
|
|
256
|
+
},
|
|
257
|
+
"cancel-configuring-text": {
|
|
258
|
+
"type": "string",
|
|
259
|
+
"description": "Names the control that leaves the arranging mode with the arrangement it was entered with. Not a reset: a reset takes the layer away, this puts back what was there."
|
|
260
|
+
},
|
|
261
|
+
"cancel-name-text": {
|
|
262
|
+
"type": "string",
|
|
263
|
+
"description": "Names the cross that leaves a name as it was."
|
|
264
|
+
},
|
|
265
|
+
"cancel-text": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"description": "The caption that drops what was typed. Nothing was written, so there is nothing to undo."
|
|
268
|
+
},
|
|
269
|
+
"changed-text": {
|
|
270
|
+
"type": "string",
|
|
271
|
+
"description": "The label before the count of changed fields in the action bar."
|
|
272
|
+
},
|
|
273
|
+
"close-label": {
|
|
274
|
+
"type": "string",
|
|
275
|
+
"description": "The accessible name of the panel's close control. Defaults to the word for the page's language; the attribute overrides it."
|
|
276
|
+
},
|
|
277
|
+
"collection": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"default": "",
|
|
280
|
+
"description": "What kind of object this is, in the host's own vocabulary. Passed back to the host and never interpreted here."
|
|
281
|
+
},
|
|
282
|
+
"collection-icon": {
|
|
283
|
+
"type": "string",
|
|
284
|
+
"default": "",
|
|
285
|
+
"description": "The glyph beside the collection name, from the Framework icon font."
|
|
286
|
+
},
|
|
287
|
+
"collection-label": {
|
|
288
|
+
"type": "string",
|
|
289
|
+
"default": "",
|
|
290
|
+
"description": "What the collection is called, shown on its own line above the record name. The port carries a collection key; the name a person reads belongs to the host and arrives here."
|
|
291
|
+
},
|
|
292
|
+
"configure-hint-narrow-text": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"description": "Said on the band while the view is arranged on a narrow panel, where the section list is a screen of its own and a field cannot be dropped on it."
|
|
295
|
+
},
|
|
296
|
+
"configure-hint-text": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"description": "Said on the band while the view is arranged: what dragging does and that a change applies at once."
|
|
299
|
+
},
|
|
300
|
+
"configure-text": {
|
|
301
|
+
"type": "string",
|
|
302
|
+
"description": "The control that enters configuring. Shown only when the host declares view-settings and this person may write at least one layer."
|
|
303
|
+
},
|
|
304
|
+
"conflict-text": {
|
|
305
|
+
"type": "string",
|
|
306
|
+
"description": "What a conflict reads as when the host sends no message of its own."
|
|
307
|
+
},
|
|
308
|
+
"copy-link-label": {
|
|
309
|
+
"type": "string",
|
|
310
|
+
"description": "The accessible name of the copy control, which appears only when the host sent an address."
|
|
311
|
+
},
|
|
312
|
+
"delete-text": {
|
|
313
|
+
"type": "string",
|
|
314
|
+
"description": "The control that asks the host to delete the record. Offered only when the record names `record.delete` among its actions."
|
|
315
|
+
},
|
|
316
|
+
"done-configuring-text": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"description": "Leaves configuring. Changes are already stored, so this closes a mode rather than confirming anything."
|
|
319
|
+
},
|
|
320
|
+
"edit-text": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"description": "The caption that opens a group for editing. Defaults to the word for the page's language; the attribute overrides it."
|
|
323
|
+
},
|
|
324
|
+
"empty-record-text": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"description": "Said in place of the fields when the host answered with a record that holds nothing visible. Without a word for it the panel is an empty box that reads as something still loading."
|
|
327
|
+
},
|
|
328
|
+
"empty-text": {
|
|
329
|
+
"type": "string",
|
|
330
|
+
"description": "What an empty value reads as. Defaults to the word for the page's language; the attribute overrides it."
|
|
331
|
+
},
|
|
332
|
+
"errors-text": {
|
|
333
|
+
"type": "string",
|
|
334
|
+
"description": "The label before the count of field errors the host refused the save with."
|
|
335
|
+
},
|
|
336
|
+
"favourite": {
|
|
337
|
+
"type": "boolean",
|
|
338
|
+
"default": false,
|
|
339
|
+
"description": "Whether this record is one of the favourites of the person. The star reports a press and redraws when the host sets this back: whether a record is a favourite belongs to the host to store."
|
|
340
|
+
},
|
|
341
|
+
"favourite-label": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"description": "The accessible name of the star beside the record name."
|
|
344
|
+
},
|
|
345
|
+
"field-label-text": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"description": "Names the field in the field's own settings, where this view's name for it is typed. The collection keeps its own name; resetting the layer gives it back."
|
|
348
|
+
},
|
|
349
|
+
"field-settings-text": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"description": "Names the surface holding a field's width, template and hint while the view is arranged."
|
|
352
|
+
},
|
|
353
|
+
"hidden-text": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"description": "Hides an entry in this layer. Disabled when a layer above hid it, which the host states per entry."
|
|
356
|
+
},
|
|
357
|
+
"hide-rare-text": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"description": "Offers to stop showing the rare entries again."
|
|
360
|
+
},
|
|
361
|
+
"hint-text": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"description": "The hint stored for a field in this layer."
|
|
364
|
+
},
|
|
365
|
+
"in-this-group-text": {
|
|
366
|
+
"type": "string",
|
|
367
|
+
"description": "Names the stretch of the add-a-field list that this area already holds. The list says where a field lives now once, over the fields that live there."
|
|
368
|
+
},
|
|
369
|
+
"inherited-text": {
|
|
370
|
+
"type": "string",
|
|
371
|
+
"description": "What marks a value the record has not decided, inherited from a package or a theme. A person seeing it knows that changing the source changes this."
|
|
372
|
+
},
|
|
373
|
+
"link-copied-label": {
|
|
374
|
+
"type": "string",
|
|
375
|
+
"description": "What the copy control is called while it shows its tick. Copying leaves no trace a person can see, so the control says it happened for as long as the Framework’s clipboard does, then goes back."
|
|
376
|
+
},
|
|
377
|
+
"menu-label": {
|
|
378
|
+
"type": "string",
|
|
379
|
+
"description": "The accessible name of the «…» menu in the head."
|
|
380
|
+
},
|
|
381
|
+
"move-down-text": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"description": "Moves a group one step down."
|
|
384
|
+
},
|
|
385
|
+
"move-up-text": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"description": "Moves a group one step up among the groups of its section, for a person who would rather press than drag."
|
|
388
|
+
},
|
|
389
|
+
"new-group-title": {
|
|
390
|
+
"type": "string",
|
|
391
|
+
"description": "The name a new area is made with, before the person types one."
|
|
392
|
+
},
|
|
393
|
+
"new-section-title": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "The name a new section is made with, before the person types one."
|
|
396
|
+
},
|
|
397
|
+
"no-match-text": {
|
|
398
|
+
"type": "string",
|
|
399
|
+
"description": "Said in place of the list when a search matches no field."
|
|
400
|
+
},
|
|
401
|
+
"open-full-label": {
|
|
402
|
+
"type": "string",
|
|
403
|
+
"description": "The accessible name of the open-full-page control, which appears only when the host sent an address."
|
|
404
|
+
},
|
|
405
|
+
"panel": {
|
|
406
|
+
"type": "boolean",
|
|
407
|
+
"default": false,
|
|
408
|
+
"description": "Render in a modeless panel beside the list the object was opened from, rather than in the work area. Modeless on purpose: the list stays visible and usable."
|
|
409
|
+
},
|
|
410
|
+
"panel-label": {
|
|
411
|
+
"type": "string",
|
|
412
|
+
"default": "",
|
|
413
|
+
"description": "The record's title in the panel header, and the panel's accessible name. It was the accessible name alone, which is true and invisible: a panel with no visible title tells nobody which record is open, and in a stack that is what a person most needs to know. The full header, with the collection and the star, is its own step."
|
|
414
|
+
},
|
|
415
|
+
"panel-size": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"default": "1",
|
|
418
|
+
"description": "How wide the panel is, on the drawer's own ladder.",
|
|
419
|
+
"enum": [
|
|
420
|
+
"1/2",
|
|
421
|
+
"1",
|
|
422
|
+
"2",
|
|
423
|
+
"full"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"size": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"default": "1",
|
|
429
|
+
"description": "The view's size: its text, field labels, titles and controls. 1/2 matches a table at 1/2.",
|
|
430
|
+
"enum": [
|
|
431
|
+
"1",
|
|
432
|
+
"1/2"
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
"mode": {
|
|
436
|
+
"type": "string",
|
|
437
|
+
"default": "auto",
|
|
438
|
+
"description": "What the surface is placed to do. view: show the object and offer no change, footer, delete or arranging whatever the person may do. auto: show it and offer what this person may do (record.edit, the lifecycle acts, the writable layers). edit: every group open at once, one record.save. create: an empty object of the collection read with record.load mode create, every field open, one record.create.",
|
|
439
|
+
"enum": [
|
|
440
|
+
"view",
|
|
441
|
+
"auto",
|
|
442
|
+
"edit",
|
|
443
|
+
"create"
|
|
444
|
+
]
|
|
445
|
+
},
|
|
446
|
+
"panel-width": {
|
|
447
|
+
"type": "string",
|
|
448
|
+
"default": "",
|
|
449
|
+
"description": "An exact panel width, for a consumer whose layout the ladder step does not fit. Empty leaves panel-size in charge; a length here wins over it. A stacked panel is narrowed from this width rather than from the ladder."
|
|
450
|
+
},
|
|
451
|
+
"personal-layer-text": {
|
|
452
|
+
"type": "string",
|
|
453
|
+
"description": "The layer only this person sees. Renamed from «Mine» on 2026-10-09: it stands in a list of named views now, beside «Обычный» and «Экспертный», where the word has to answer the same question the others do."
|
|
454
|
+
},
|
|
455
|
+
"rare-text": {
|
|
456
|
+
"type": "string",
|
|
457
|
+
"description": "Marks an entry the collection declares rare, beside its name."
|
|
458
|
+
},
|
|
459
|
+
"record-id": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"default": "",
|
|
462
|
+
"description": "Which object to read. Changing it re-reads through the port; the component keeps nothing from the previous one."
|
|
463
|
+
},
|
|
464
|
+
"remove-field-text": {
|
|
465
|
+
"type": "string",
|
|
466
|
+
"description": "Names the control that takes a field out of its area. The field joins the unplaced, where the area’s own list offers it back, and nothing about it is lost."
|
|
467
|
+
},
|
|
468
|
+
"remove-group-text": {
|
|
469
|
+
"type": "string",
|
|
470
|
+
"description": "Names the control that takes an area out of the view. Its fields join the unplaced rather than going with it."
|
|
471
|
+
},
|
|
472
|
+
"remove-section-text": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"description": "Names the control that takes a section out of the view. Its areas move to the section that remains."
|
|
475
|
+
},
|
|
476
|
+
"rename-text": {
|
|
477
|
+
"type": "string",
|
|
478
|
+
"description": "Names the pencil beside an area's or a section's name while the view is being arranged, and the field it opens."
|
|
479
|
+
},
|
|
480
|
+
"reset-view-ask-text": {
|
|
481
|
+
"type": "string",
|
|
482
|
+
"description": "The question the reset asks before it takes the layer away. A reset undoes everything a person arranged in this layer, which is more than one press of a button beside «done» should do."
|
|
483
|
+
},
|
|
484
|
+
"reset-view-text": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"description": "Returns the chosen layer to what lies beneath it."
|
|
487
|
+
},
|
|
488
|
+
"save-name-text": {
|
|
489
|
+
"type": "string",
|
|
490
|
+
"description": "Names the tick that writes a name being typed into the layer."
|
|
491
|
+
},
|
|
492
|
+
"save-text": {
|
|
493
|
+
"type": "string",
|
|
494
|
+
"description": "The caption that saves the open group. One press is one revision."
|
|
495
|
+
},
|
|
496
|
+
"section-icon-text": {
|
|
497
|
+
"type": "string",
|
|
498
|
+
"description": "Names the chooser of a section's glyph while the view is being arranged."
|
|
499
|
+
},
|
|
500
|
+
"section-icons": {
|
|
501
|
+
"type": "string",
|
|
502
|
+
"default": "",
|
|
503
|
+
"description": "The glyphs a section may be marked with, as names from the Framework's icon set separated by spaces or commas. Empty means the component's own hundred and twenty, the ones products reach for; a host with its own vocabulary replaces them rather than adding to them."
|
|
504
|
+
},
|
|
505
|
+
"sections-as": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"default": "list",
|
|
508
|
+
"description": "Where the sections are read: as a list beside the groups, which suits a settings screen with many of them, or as a row of tabs above them, which suits a record with a few. The sections are the same either way.",
|
|
509
|
+
"enum": [
|
|
510
|
+
"list",
|
|
511
|
+
"tabs"
|
|
512
|
+
]
|
|
513
|
+
},
|
|
514
|
+
"sections-label": {
|
|
515
|
+
"type": "string",
|
|
516
|
+
"description": "The accessible name of the section list. Defaults to the word for the page's language; the attribute overrides it."
|
|
517
|
+
},
|
|
518
|
+
"shared-layer-text": {
|
|
519
|
+
"type": "string",
|
|
520
|
+
"description": "The layer everyone sees. Drawn disabled with the host reason when this person may not write it, rather than left out -- an absent control reads as a missing feature."
|
|
521
|
+
},
|
|
522
|
+
"show-rare": {
|
|
523
|
+
"type": "boolean",
|
|
524
|
+
"default": false,
|
|
525
|
+
"description": "Show the sections, groups and fields the host marked rare. A view decision: it writes nothing and changes no value."
|
|
526
|
+
},
|
|
527
|
+
"show-rare-text": {
|
|
528
|
+
"type": "string",
|
|
529
|
+
"description": "Offers to show the entries the collection declares rare. Offered only when the record holds one."
|
|
530
|
+
},
|
|
531
|
+
"shown-text": {
|
|
532
|
+
"type": "string",
|
|
533
|
+
"description": "Names the control that shows or hides an entry in this layer."
|
|
534
|
+
},
|
|
535
|
+
"unplaced-hint-text": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"description": "Retired on 2026-10-09 and kept only until the sweep: the not-placed bin is the Framework's accordion now and draws no hint line, so this is parsed and ignored. Recorded in contracts/changes/journal.json as property-view-unplaced-hint-text."
|
|
538
|
+
},
|
|
539
|
+
"unplaced-title": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"description": "Names the area holding fields this view places in no group. Drawn only while the view is being arranged."
|
|
542
|
+
},
|
|
543
|
+
"variant-text": {
|
|
544
|
+
"type": "string",
|
|
545
|
+
"description": "Chooses the template variant, among the variants the host offers for that field."
|
|
546
|
+
},
|
|
547
|
+
"view-conflict-text": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"description": "Said when a layer moved underneath this person and the arrangement was read again."
|
|
550
|
+
},
|
|
551
|
+
"view-denied-text": {
|
|
552
|
+
"type": "string",
|
|
553
|
+
"description": "The fallback reason on a layer this person may not write, used when the host sends none of its own."
|
|
554
|
+
},
|
|
555
|
+
"width-text": {
|
|
556
|
+
"type": "string",
|
|
557
|
+
"description": "Names the switch that makes a field take the whole row rather than half of it."
|
|
558
|
+
},
|
|
559
|
+
"view-profile-label": {
|
|
560
|
+
"type": "string",
|
|
561
|
+
"description": "The accessible name of the chooser that picks which named view is shown. Unset, the component answers in the page language."
|
|
562
|
+
},
|
|
563
|
+
"add-view-text": {
|
|
564
|
+
"type": "string",
|
|
565
|
+
"description": "The words on the control that makes a new named view from the arrangement on screen. Unset, the component answers in the page language."
|
|
566
|
+
},
|
|
567
|
+
"new-view-text": {
|
|
568
|
+
"type": "string",
|
|
569
|
+
"description": "What a view is called the moment it is made, before the person types over it. A view called «New view» among four real ones is one nobody can tell from the others, which is why the name opens for typing straight away."
|
|
570
|
+
},
|
|
571
|
+
"delete-view-text": {
|
|
572
|
+
"type": "string",
|
|
573
|
+
"description": "The accessible name of the control that removes a named view."
|
|
574
|
+
},
|
|
575
|
+
"last-shared-view-text": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "Why removing is not offered for the last shared view: a scope with none has nothing for a person who has made none of their own. Shown on the control that is not offered rather than as a refusal after the press."
|
|
578
|
+
},
|
|
579
|
+
"full": {
|
|
580
|
+
"type": "boolean",
|
|
581
|
+
"default": false,
|
|
582
|
+
"description": "The record as the page: a panel draws in place instead of over the page (component.json settings.full)."
|
|
583
|
+
},
|
|
584
|
+
"open": {
|
|
585
|
+
"type": "boolean",
|
|
586
|
+
"default": true,
|
|
587
|
+
"description": "A panel shows while open and not hidden; open=false or hidden closes its drawer and takes it off the stack, and the same brings it back (component.json settings.open, simai/ui-pro#4)."
|
|
588
|
+
},
|
|
589
|
+
"aria-label": {
|
|
590
|
+
"type": "string",
|
|
591
|
+
"default": ""
|
|
592
|
+
}
|
|
593
|
+
},
|
|
594
|
+
"additionalProperties": false
|
|
595
|
+
},
|
|
596
|
+
"item_contract": {
|
|
597
|
+
"section": "A key, a label and its groups. The arrangement is the host's; the component never invents a section.",
|
|
598
|
+
"group": "A key, a label and its fields, in one or two columns.",
|
|
599
|
+
"field": "A key, a label and a propertyType the renderer set is addressed by. The host supplies the type; the Framework supplies the template.",
|
|
600
|
+
"host_slot": "A child with slot=\"actions\", slot=\"menu\" or slot=\"footer\". The composite gives it a place and a gap and styles nothing inside it."
|
|
601
|
+
},
|
|
602
|
+
"contracts": {
|
|
603
|
+
"rendering": {
|
|
604
|
+
"const": "Every field value is drawn by the published field renderer set. The component chooses no component for a value and carries no CSS for one."
|
|
605
|
+
},
|
|
606
|
+
"storage": {
|
|
607
|
+
"const": "The component stores no value and no revision. Reading is the only intent in this port version; a later version writes against the revision the read carried."
|
|
608
|
+
},
|
|
609
|
+
"sections": {
|
|
610
|
+
"const": "One section renders as groups alone, with no section list: a list of one is a control that cannot be used."
|
|
611
|
+
},
|
|
612
|
+
"saving": {
|
|
613
|
+
"const": "A group is saved by the button alone -- never on blur and never per field -- carrying only the fields the person changed, against the revision the read carried. A stale revision is answered with a conflict and what the person typed is kept."
|
|
614
|
+
},
|
|
615
|
+
"dom": {
|
|
616
|
+
"const": "Renders into its own light DOM, like every other Smart component. A shadow root would cut the field controls off from the Framework's component stylesheets, which is what the first version did."
|
|
617
|
+
},
|
|
618
|
+
"loading": {
|
|
619
|
+
"const": "Registered with the loader through rule.js, so the tag loads the composite and the components the renderer set can emit, including the icon font."
|
|
620
|
+
},
|
|
621
|
+
"formatting": {
|
|
622
|
+
"const": "A scalar may arrive as {value, text}: the data and the host's formatting of it. The Framework has no locale and does not acquire one through a renderer. A unit stays its own field so a column can align units."
|
|
623
|
+
},
|
|
624
|
+
"record_picker": {
|
|
625
|
+
"const": "A reference field is picked from the host's candidates when the host announces the field-options capability, a page at a time with the search answered by the host. Without the capability the field shows its current value read-only, which is better than an empty control over a value that exists."
|
|
626
|
+
},
|
|
627
|
+
"panel": {
|
|
628
|
+
"const": "The panel is modeless -- modal and overlay both off -- so the list it was opened from stays visible and usable. Esc is handled by the composite rather than by the drawer, because in a stack it must close the top window only."
|
|
629
|
+
},
|
|
630
|
+
"address": {
|
|
631
|
+
"const": "A window's address is the host's. The component copies it and announces it and never constructs one; without an address neither the copy nor the open control is rendered."
|
|
632
|
+
},
|
|
633
|
+
"file_upload": {
|
|
634
|
+
"const": "A file is taken by the host through field.upload, which answers with the stored file in the shape the field reads. The host reports its own progress; the component times nothing, because a bar over a transfer it does not perform would be a bar that lies. Removing a stored file is a value change saved by the button, not an upload intent -- otherwise it would be the one edit here that could not be cancelled."
|
|
635
|
+
},
|
|
636
|
+
"host_slots": {
|
|
637
|
+
"const": "Children marked slot=\"actions\", slot=\"menu\" or slot=\"footer\" are captured by the base element before the first render and returned as live nodes by reference, so a host's listeners and open state survive every render. The menu slot holds a host's own items inside the «…», under the ones the component offers, so the corner of the head is one place whatever the task puts in it. Both slots work in the panel and in the full-page layout; there is deliberately no slot inside a group or between fields, because content there could not survive the view configuration reordering around it."
|
|
638
|
+
},
|
|
639
|
+
"panel_stack": {
|
|
640
|
+
"const": "A stack is an order of elements, not one state held for several records: each window is its own sf-view-properties with its own record, open group and unsaved changes, so a half-edited window left underneath keeps them. The Framework owns the behaviour between windows -- Esc closes the top one, the others are dimmed and not interactive, and each depth is inset so the one below stays partly visible."
|
|
641
|
+
},
|
|
642
|
+
"opening_a_reference": {
|
|
643
|
+
"const": "Activating a reference raises record.open and nothing else. The component follows no href, because that would be routing for the consumer, and opens no window, because that would decide whether a half-edited window may be covered."
|
|
644
|
+
},
|
|
645
|
+
"panel_layout": {
|
|
646
|
+
"const": "The panel's body takes the height left to it and scrolls as one; the field columns follow the width of the panel through a container query, not the width of the window, because a panel is narrow inside a wide one."
|
|
647
|
+
},
|
|
648
|
+
"lookup": {
|
|
649
|
+
"const": "A lookup field (port 1.14.0) holds {value, label}, or a list of them when multiple, and is drawn by the renderer set's lookup templates. A list sent inline as options is chosen from in place and never asked for; otherwise the candidates are paged by field.options with the field's source and a limit, searched by the host, and asked for only of a host with the field-options capability -- without it the value is shown read-only."
|
|
650
|
+
},
|
|
651
|
+
"save_confirmation": {
|
|
652
|
+
"const": "A save the host will make only once confirmed is refused with reason confirm_required and confirm {summary, digest} (port 1.14.0). The summary is shown in the bar where save was pressed; confirming raises the same save again with confirm set to the digest, and a confirmation asked again is shown again. Going back sends nothing and keeps every entry."
|
|
653
|
+
},
|
|
654
|
+
"conditional_fields": {
|
|
655
|
+
"const": "A field's when.visible, when.required and when.enabled are conditions over the values on screen, evaluated by the component on every render (port 1.14.0). A field its condition hides is not drawn and not sent in a save, and it is not cleared: it keeps what it holds. A condition the component cannot read leaves the field as declared."
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
"methods": {
|
|
659
|
+
"refresh": {
|
|
660
|
+
"summary": "The action refresh.",
|
|
661
|
+
"arguments": [],
|
|
662
|
+
"returns": {
|
|
663
|
+
"type": "object"
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
"load": {
|
|
667
|
+
"summary": "Read the object again through the port.",
|
|
668
|
+
"arguments": [
|
|
669
|
+
{
|
|
670
|
+
"name": "reason",
|
|
671
|
+
"schema": {
|
|
672
|
+
"type": "string"
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
],
|
|
676
|
+
"returns": {
|
|
677
|
+
"type": "object",
|
|
678
|
+
"description": "A promise of the host answer to the read: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
"editGroup": {
|
|
682
|
+
"summary": "Open one group for editing.",
|
|
683
|
+
"arguments": [
|
|
684
|
+
{
|
|
685
|
+
"name": "section",
|
|
686
|
+
"schema": {
|
|
687
|
+
"type": "string"
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"name": "group",
|
|
692
|
+
"schema": {
|
|
693
|
+
"type": "string"
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
],
|
|
697
|
+
"returns": {
|
|
698
|
+
"type": "object",
|
|
699
|
+
"description": "The element, for chaining."
|
|
700
|
+
}
|
|
701
|
+
},
|
|
702
|
+
"cancelEdit": {
|
|
703
|
+
"summary": "Close the open group, dropping what was typed. Writes nothing.",
|
|
704
|
+
"arguments": [],
|
|
705
|
+
"returns": {
|
|
706
|
+
"type": "object",
|
|
707
|
+
"description": "The element, for chaining."
|
|
708
|
+
}
|
|
709
|
+
},
|
|
710
|
+
"saveGroup": {
|
|
711
|
+
"summary": "Save the changed fields of the open group as one revision.",
|
|
712
|
+
"arguments": [
|
|
713
|
+
{
|
|
714
|
+
"name": "options",
|
|
715
|
+
"schema": {
|
|
716
|
+
"type": "object",
|
|
717
|
+
"description": "{confirm}: the digest of a confirmation the host asked for; set by confirmSave."
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
],
|
|
721
|
+
"returns": {
|
|
722
|
+
"type": "object",
|
|
723
|
+
"description": "A promise of the host answer to the write: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
"selectSection": {
|
|
727
|
+
"summary": "Open one section.",
|
|
728
|
+
"arguments": [
|
|
729
|
+
{
|
|
730
|
+
"name": "key",
|
|
731
|
+
"schema": {
|
|
732
|
+
"type": "string"
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
],
|
|
736
|
+
"returns": {
|
|
737
|
+
"type": "object",
|
|
738
|
+
"description": "The element, for chaining."
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
"closePanel": {
|
|
742
|
+
"summary": "Announce that the panel should close. Closing is the host's decision.",
|
|
743
|
+
"arguments": [
|
|
744
|
+
{
|
|
745
|
+
"name": "reason",
|
|
746
|
+
"schema": {
|
|
747
|
+
"type": "string"
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
],
|
|
751
|
+
"returns": {
|
|
752
|
+
"type": "object",
|
|
753
|
+
"description": "The element, for chaining."
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
"copyAddress": {
|
|
757
|
+
"summary": "Copy the address the host gave, and say whether the browser allowed it.",
|
|
758
|
+
"arguments": [],
|
|
759
|
+
"returns": {
|
|
760
|
+
"type": "object",
|
|
761
|
+
"description": "A promise of whether the address reached the clipboard."
|
|
762
|
+
}
|
|
763
|
+
},
|
|
764
|
+
"openFullPage": {
|
|
765
|
+
"summary": "Announce that this object should open on a full page.",
|
|
766
|
+
"arguments": [],
|
|
767
|
+
"returns": {
|
|
768
|
+
"type": "object",
|
|
769
|
+
"description": "The element, for chaining."
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
"confirmSave": {
|
|
773
|
+
"summary": "Raise the save the host asked to confirm again, with the digest it issued (port 1.14.0).",
|
|
774
|
+
"arguments": [],
|
|
775
|
+
"returns": {
|
|
776
|
+
"type": "object",
|
|
777
|
+
"description": "A promise of the host answer to the write, or of null when nothing waits to be confirmed."
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
"cancelConfirmation": {
|
|
781
|
+
"summary": "Go back to editing from a confirmation the host asked for. Sends nothing and keeps every entry.",
|
|
782
|
+
"arguments": [],
|
|
783
|
+
"returns": {
|
|
784
|
+
"type": "object",
|
|
785
|
+
"description": "The element, for chaining."
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
"setHostPort": {
|
|
789
|
+
"summary": "Connect a host adapter exposing raise(intent, payload, {signal}), version and capabilities.",
|
|
790
|
+
"arguments": [
|
|
791
|
+
{
|
|
792
|
+
"name": "host",
|
|
793
|
+
"type": "object",
|
|
794
|
+
"required": true
|
|
795
|
+
}
|
|
796
|
+
],
|
|
797
|
+
"returns": {
|
|
798
|
+
"type": "object",
|
|
799
|
+
"description": "The element, for chaining."
|
|
800
|
+
}
|
|
801
|
+
},
|
|
802
|
+
"changeField": {
|
|
803
|
+
"summary": "Record that a field was changed; undefined takes the change back, so a save carries nothing for that field. Called by the edit template; a host does not need it.",
|
|
804
|
+
"arguments": [
|
|
805
|
+
{
|
|
806
|
+
"name": "field",
|
|
807
|
+
"type": "object",
|
|
808
|
+
"required": true
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"name": "value",
|
|
812
|
+
"type": "any",
|
|
813
|
+
"required": true
|
|
814
|
+
}
|
|
815
|
+
],
|
|
816
|
+
"returns": {
|
|
817
|
+
"type": "object",
|
|
818
|
+
"description": "The element, for chaining."
|
|
819
|
+
}
|
|
820
|
+
},
|
|
821
|
+
"getFieldOptionsPage": {
|
|
822
|
+
"summary": "The page of candidates the host last answered with for one field.",
|
|
823
|
+
"arguments": [
|
|
824
|
+
{
|
|
825
|
+
"name": "field",
|
|
826
|
+
"type": "object",
|
|
827
|
+
"required": true
|
|
828
|
+
}
|
|
829
|
+
],
|
|
830
|
+
"returns": {
|
|
831
|
+
"type": [
|
|
832
|
+
"object",
|
|
833
|
+
"null"
|
|
834
|
+
],
|
|
835
|
+
"description": "The options page loaded for the field, or null."
|
|
836
|
+
}
|
|
837
|
+
},
|
|
838
|
+
"getFieldOptionSearch": {
|
|
839
|
+
"summary": "What the person has typed into one field's picker.",
|
|
840
|
+
"arguments": [
|
|
841
|
+
{
|
|
842
|
+
"name": "field",
|
|
843
|
+
"type": "object",
|
|
844
|
+
"required": true
|
|
845
|
+
}
|
|
846
|
+
],
|
|
847
|
+
"returns": {
|
|
848
|
+
"type": "string",
|
|
849
|
+
"description": "The search text typed for the field's options."
|
|
850
|
+
}
|
|
851
|
+
},
|
|
852
|
+
"setFieldOptionSearch": {
|
|
853
|
+
"summary": "Record what the person typed, without asking the host.",
|
|
854
|
+
"arguments": [
|
|
855
|
+
{
|
|
856
|
+
"name": "field",
|
|
857
|
+
"type": "object",
|
|
858
|
+
"required": true
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"name": "text",
|
|
862
|
+
"type": "string",
|
|
863
|
+
"required": true
|
|
864
|
+
}
|
|
865
|
+
],
|
|
866
|
+
"returns": {
|
|
867
|
+
"type": "object",
|
|
868
|
+
"description": "The element, for chaining."
|
|
869
|
+
}
|
|
870
|
+
},
|
|
871
|
+
"loadFieldOptions": {
|
|
872
|
+
"summary": "Ask the host for a page of candidates for one field.",
|
|
873
|
+
"arguments": [
|
|
874
|
+
{
|
|
875
|
+
"name": "field",
|
|
876
|
+
"type": "object",
|
|
877
|
+
"required": true
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"name": "options",
|
|
881
|
+
"type": "object",
|
|
882
|
+
"required": false
|
|
883
|
+
}
|
|
884
|
+
],
|
|
885
|
+
"returns": {
|
|
886
|
+
"type": "object",
|
|
887
|
+
"description": "A promise of the host answer with the options page: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
"getFieldUploads": {
|
|
891
|
+
"summary": "The files in flight for one field, in the shape sf-file-upload reads.",
|
|
892
|
+
"arguments": [
|
|
893
|
+
{
|
|
894
|
+
"name": "field",
|
|
895
|
+
"type": "object",
|
|
896
|
+
"required": true
|
|
897
|
+
}
|
|
898
|
+
],
|
|
899
|
+
"returns": {
|
|
900
|
+
"type": "array",
|
|
901
|
+
"description": "The uploads in progress or done for the field."
|
|
902
|
+
}
|
|
903
|
+
},
|
|
904
|
+
"startFieldUpload": {
|
|
905
|
+
"summary": "Hand the host the files the person chose, one intent each.",
|
|
906
|
+
"arguments": [
|
|
907
|
+
{
|
|
908
|
+
"name": "field",
|
|
909
|
+
"type": "object",
|
|
910
|
+
"required": true
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
"name": "items",
|
|
914
|
+
"type": "array",
|
|
915
|
+
"required": true
|
|
916
|
+
}
|
|
917
|
+
],
|
|
918
|
+
"returns": {
|
|
919
|
+
"type": "object",
|
|
920
|
+
"description": "A promise of the element, settled when the uploads are raised."
|
|
921
|
+
}
|
|
922
|
+
},
|
|
923
|
+
"retryFieldUpload": {
|
|
924
|
+
"summary": "Send one failed file again.",
|
|
925
|
+
"arguments": [
|
|
926
|
+
{
|
|
927
|
+
"name": "field",
|
|
928
|
+
"type": "object",
|
|
929
|
+
"required": true
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
"name": "index",
|
|
933
|
+
"type": "number",
|
|
934
|
+
"required": true
|
|
935
|
+
}
|
|
936
|
+
],
|
|
937
|
+
"returns": {
|
|
938
|
+
"type": "object",
|
|
939
|
+
"description": "A promise of the element, settled when the upload is raised again."
|
|
940
|
+
}
|
|
941
|
+
},
|
|
942
|
+
"openReference": {
|
|
943
|
+
"summary": "Ask the host to open a reference the person activated.",
|
|
944
|
+
"arguments": [
|
|
945
|
+
{
|
|
946
|
+
"name": "field",
|
|
947
|
+
"type": "object",
|
|
948
|
+
"required": true
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"name": "value",
|
|
952
|
+
"type": "any",
|
|
953
|
+
"required": true
|
|
954
|
+
}
|
|
955
|
+
],
|
|
956
|
+
"returns": {
|
|
957
|
+
"type": "object",
|
|
958
|
+
"description": "A promise of the host answer to the opening: {answer: applied|conflict|refused|unavailable, …}, or of null when a newer request superseded it."
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
"events": {
|
|
963
|
+
"sf-view-properties-close": {
|
|
964
|
+
"summary": "The panel asks to be closed (by its close control, Esc or Cancel), carrying how many fields would be lost: changed and not saved, or entered and not yet a value.",
|
|
965
|
+
"payload": {
|
|
966
|
+
"type": "object",
|
|
967
|
+
"required": [
|
|
968
|
+
"reason",
|
|
969
|
+
"record_id",
|
|
970
|
+
"unsaved_fields"
|
|
971
|
+
],
|
|
972
|
+
"properties": {
|
|
973
|
+
"reason": {
|
|
974
|
+
"enum": [
|
|
975
|
+
"close",
|
|
976
|
+
"escape",
|
|
977
|
+
"cancelled",
|
|
978
|
+
"deleted",
|
|
979
|
+
"api"
|
|
980
|
+
]
|
|
981
|
+
},
|
|
982
|
+
"record_id": {},
|
|
983
|
+
"unsaved_fields": {
|
|
984
|
+
"type": "array"
|
|
985
|
+
}
|
|
986
|
+
},
|
|
987
|
+
"additionalProperties": true
|
|
988
|
+
},
|
|
989
|
+
"canonical": true
|
|
990
|
+
},
|
|
991
|
+
"sf-view-properties-open-full": {
|
|
992
|
+
"summary": "The person asked for this object on a full page, at the address the host gave.",
|
|
993
|
+
"payload": {
|
|
994
|
+
"type": "object",
|
|
995
|
+
"required": [
|
|
996
|
+
"id",
|
|
997
|
+
"address",
|
|
998
|
+
"record_id"
|
|
999
|
+
],
|
|
1000
|
+
"properties": {
|
|
1001
|
+
"id": {},
|
|
1002
|
+
"address": {
|
|
1003
|
+
"type": "string"
|
|
1004
|
+
},
|
|
1005
|
+
"record_id": {}
|
|
1006
|
+
},
|
|
1007
|
+
"additionalProperties": true
|
|
1008
|
+
},
|
|
1009
|
+
"canonical": true
|
|
1010
|
+
},
|
|
1011
|
+
"sf-view-properties-saved": {
|
|
1012
|
+
"summary": "The fact after an applied save (group.save or record.save), vocabulary §4: {id, revision}.",
|
|
1013
|
+
"payload": {
|
|
1014
|
+
"type": "object",
|
|
1015
|
+
"required": [
|
|
1016
|
+
"id"
|
|
1017
|
+
],
|
|
1018
|
+
"properties": {
|
|
1019
|
+
"id": {},
|
|
1020
|
+
"revision": {
|
|
1021
|
+
"type": "string"
|
|
1022
|
+
}
|
|
1023
|
+
},
|
|
1024
|
+
"additionalProperties": true
|
|
1025
|
+
},
|
|
1026
|
+
"canonical": true
|
|
1027
|
+
},
|
|
1028
|
+
"sf-view-properties-failed": {
|
|
1029
|
+
"summary": "The fact after a record that could not be read, {reason, message}: the host's code (record-unknown for a stale link) and its sentence.",
|
|
1030
|
+
"payload": {
|
|
1031
|
+
"type": "object",
|
|
1032
|
+
"required": [
|
|
1033
|
+
"reason"
|
|
1034
|
+
],
|
|
1035
|
+
"properties": {
|
|
1036
|
+
"reason": {
|
|
1037
|
+
"type": "string"
|
|
1038
|
+
},
|
|
1039
|
+
"message": {
|
|
1040
|
+
"type": "string"
|
|
1041
|
+
}
|
|
1042
|
+
},
|
|
1043
|
+
"additionalProperties": true
|
|
1044
|
+
},
|
|
1045
|
+
"canonical": true
|
|
1046
|
+
},
|
|
1047
|
+
"sf-view-properties-open": {
|
|
1048
|
+
"summary": "A referenced record was asked open, vocabulary §5 open: {field, value, answer}. The old sf-property-view-open-record follows once until 2026-12-01 (aliases.json).",
|
|
1049
|
+
"payload": {
|
|
1050
|
+
"type": "object",
|
|
1051
|
+
"required": [
|
|
1052
|
+
"field",
|
|
1053
|
+
"value",
|
|
1054
|
+
"answer"
|
|
1055
|
+
],
|
|
1056
|
+
"properties": {
|
|
1057
|
+
"field": {
|
|
1058
|
+
"type": "string"
|
|
1059
|
+
},
|
|
1060
|
+
"value": {
|
|
1061
|
+
"type": "object"
|
|
1062
|
+
},
|
|
1063
|
+
"answer": {
|
|
1064
|
+
"type": "string"
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
1067
|
+
"additionalProperties": true
|
|
1068
|
+
},
|
|
1069
|
+
"canonical": true
|
|
1070
|
+
},
|
|
1071
|
+
"sf-view-properties-delete": {
|
|
1072
|
+
"summary": "The record's delete was asked and answered, vocabulary §5 delete: {record_id, collection, revision, answer}. The old sf-property-view-delete-record follows once until 2026-12-01 (aliases.json).",
|
|
1073
|
+
"payload": {
|
|
1074
|
+
"type": "object",
|
|
1075
|
+
"required": [
|
|
1076
|
+
"collection",
|
|
1077
|
+
"revision",
|
|
1078
|
+
"answer",
|
|
1079
|
+
"record_id"
|
|
1080
|
+
],
|
|
1081
|
+
"properties": {
|
|
1082
|
+
"collection": {
|
|
1083
|
+
"type": "string"
|
|
1084
|
+
},
|
|
1085
|
+
"revision": {
|
|
1086
|
+
"type": "string"
|
|
1087
|
+
},
|
|
1088
|
+
"answer": {
|
|
1089
|
+
"type": "string"
|
|
1090
|
+
},
|
|
1091
|
+
"record_id": {}
|
|
1092
|
+
},
|
|
1093
|
+
"additionalProperties": true
|
|
1094
|
+
},
|
|
1095
|
+
"canonical": true
|
|
1096
|
+
},
|
|
1097
|
+
"sf-view-properties-created": {
|
|
1098
|
+
"summary": "A create surface made its object; the host may go on to its own place for it. The component shows the new object in auto mode.",
|
|
1099
|
+
"payload": {
|
|
1100
|
+
"type": "object",
|
|
1101
|
+
"required": [
|
|
1102
|
+
"collection",
|
|
1103
|
+
"record_id"
|
|
1104
|
+
],
|
|
1105
|
+
"properties": {
|
|
1106
|
+
"collection": {
|
|
1107
|
+
"type": [
|
|
1108
|
+
"string",
|
|
1109
|
+
"null"
|
|
1110
|
+
]
|
|
1111
|
+
},
|
|
1112
|
+
"record_id": {}
|
|
1113
|
+
},
|
|
1114
|
+
"additionalProperties": true
|
|
1115
|
+
},
|
|
1116
|
+
"canonical": true
|
|
1117
|
+
},
|
|
1118
|
+
"sf-view-properties-cancel": {
|
|
1119
|
+
"summary": "An edit was cancelled; what the person typed is dropped. A surface open all at once (edit, create) leaves scope absent and the host decides where that leads (a panel closes); a single group's cancel (since 1.7.0) carries scope group with its section and group, so a host tracking unsaved work learns the entries were dropped.",
|
|
1120
|
+
"payload": {
|
|
1121
|
+
"type": "object",
|
|
1122
|
+
"required": [
|
|
1123
|
+
"mode"
|
|
1124
|
+
],
|
|
1125
|
+
"properties": {
|
|
1126
|
+
"mode": {
|
|
1127
|
+
"enum": [
|
|
1128
|
+
"auto",
|
|
1129
|
+
"edit",
|
|
1130
|
+
"create"
|
|
1131
|
+
]
|
|
1132
|
+
},
|
|
1133
|
+
"scope": {
|
|
1134
|
+
"const": "group"
|
|
1135
|
+
},
|
|
1136
|
+
"section": {
|
|
1137
|
+
"type": "string"
|
|
1138
|
+
},
|
|
1139
|
+
"group": {
|
|
1140
|
+
"type": "string"
|
|
1141
|
+
}
|
|
1142
|
+
},
|
|
1143
|
+
"additionalProperties": true
|
|
1144
|
+
},
|
|
1145
|
+
"canonical": true
|
|
1146
|
+
},
|
|
1147
|
+
"sf-view-properties-state": {
|
|
1148
|
+
"summary": "Runtime event sf-property-view-state.",
|
|
1149
|
+
"payload": {
|
|
1150
|
+
"type": "object",
|
|
1151
|
+
"required": [
|
|
1152
|
+
"state",
|
|
1153
|
+
"message"
|
|
1154
|
+
],
|
|
1155
|
+
"properties": {
|
|
1156
|
+
"state": {
|
|
1157
|
+
"type": "string"
|
|
1158
|
+
},
|
|
1159
|
+
"message": {
|
|
1160
|
+
"type": "string"
|
|
1161
|
+
}
|
|
1162
|
+
},
|
|
1163
|
+
"additionalProperties": true
|
|
1164
|
+
},
|
|
1165
|
+
"canonical": true
|
|
1166
|
+
},
|
|
1167
|
+
"sf-view-properties-address-copy": {
|
|
1168
|
+
"summary": "The window's address was copied, or the browser refused the clipboard.",
|
|
1169
|
+
"payload": {
|
|
1170
|
+
"type": "object",
|
|
1171
|
+
"required": [],
|
|
1172
|
+
"properties": {},
|
|
1173
|
+
"additionalProperties": true
|
|
1174
|
+
},
|
|
1175
|
+
"canonical": true
|
|
1176
|
+
},
|
|
1177
|
+
"sf-view-properties-favourite": {
|
|
1178
|
+
"summary": "The star was pressed. Carries the record, the collection and the state being asked for; the component changes nothing until the host sets favourite back.",
|
|
1179
|
+
"payload": {
|
|
1180
|
+
"type": "object",
|
|
1181
|
+
"required": [
|
|
1182
|
+
"collection",
|
|
1183
|
+
"favourite",
|
|
1184
|
+
"record_id"
|
|
1185
|
+
],
|
|
1186
|
+
"properties": {
|
|
1187
|
+
"collection": {
|
|
1188
|
+
"type": [
|
|
1189
|
+
"string",
|
|
1190
|
+
"null"
|
|
1191
|
+
]
|
|
1192
|
+
},
|
|
1193
|
+
"favourite": {
|
|
1194
|
+
"type": "boolean"
|
|
1195
|
+
},
|
|
1196
|
+
"record_id": {}
|
|
1197
|
+
},
|
|
1198
|
+
"additionalProperties": true
|
|
1199
|
+
},
|
|
1200
|
+
"canonical": true
|
|
1201
|
+
},
|
|
1202
|
+
"sf-property-view-delete-record": {
|
|
1203
|
+
"summary": "The person asked for the record to be deleted; the host decides whether to ask first and whether to delete at all.",
|
|
1204
|
+
"payload": {
|
|
1205
|
+
"type": "object"
|
|
1206
|
+
},
|
|
1207
|
+
"alias_of": "sf-view-properties-delete"
|
|
1208
|
+
},
|
|
1209
|
+
"sf-property-view-open-record": {
|
|
1210
|
+
"summary": "A reference value was activated; the host decides what to open and where.",
|
|
1211
|
+
"payload": {
|
|
1212
|
+
"type": "object"
|
|
1213
|
+
},
|
|
1214
|
+
"alias_of": "sf-view-properties-open"
|
|
1215
|
+
},
|
|
1216
|
+
"sf-host-port-request": {
|
|
1217
|
+
"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`. Answered by calling `setHostPort` on the event target, at once or later.",
|
|
1218
|
+
"payload": {
|
|
1219
|
+
"type": "object",
|
|
1220
|
+
"properties": {
|
|
1221
|
+
"component": {
|
|
1222
|
+
"type": "object"
|
|
1223
|
+
},
|
|
1224
|
+
"context": {
|
|
1225
|
+
"type": "object",
|
|
1226
|
+
"description": "owner is «property-view», record is the record-id this element is showing, group is null."
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
},
|
|
1231
|
+
"sf-property-view-close": {
|
|
1232
|
+
"summary": "Dated alias of sf-view-properties-close until 2027-01-01 (same-detail).",
|
|
1233
|
+
"payload": {
|
|
1234
|
+
"type": "object"
|
|
1235
|
+
},
|
|
1236
|
+
"alias_of": "sf-view-properties-close"
|
|
1237
|
+
},
|
|
1238
|
+
"sf-property-view-open-full": {
|
|
1239
|
+
"summary": "Dated alias of sf-view-properties-open-full until 2027-01-01 (same-detail).",
|
|
1240
|
+
"payload": {
|
|
1241
|
+
"type": "object"
|
|
1242
|
+
},
|
|
1243
|
+
"alias_of": "sf-view-properties-open-full"
|
|
1244
|
+
},
|
|
1245
|
+
"sf-property-view-saved": {
|
|
1246
|
+
"summary": "Dated alias of sf-view-properties-saved until 2027-01-01 (same-detail).",
|
|
1247
|
+
"payload": {
|
|
1248
|
+
"type": "object"
|
|
1249
|
+
},
|
|
1250
|
+
"alias_of": "sf-view-properties-saved"
|
|
1251
|
+
},
|
|
1252
|
+
"sf-property-view-failed": {
|
|
1253
|
+
"summary": "Dated alias of sf-view-properties-failed until 2027-01-01 (same-detail).",
|
|
1254
|
+
"payload": {
|
|
1255
|
+
"type": "object"
|
|
1256
|
+
},
|
|
1257
|
+
"alias_of": "sf-view-properties-failed"
|
|
1258
|
+
},
|
|
1259
|
+
"sf-property-view-open": {
|
|
1260
|
+
"summary": "Dated alias of sf-view-properties-open until 2027-01-01 (same-detail).",
|
|
1261
|
+
"payload": {
|
|
1262
|
+
"type": "object"
|
|
1263
|
+
},
|
|
1264
|
+
"alias_of": "sf-view-properties-open"
|
|
1265
|
+
},
|
|
1266
|
+
"sf-property-view-delete": {
|
|
1267
|
+
"summary": "Dated alias of sf-view-properties-delete until 2027-01-01 (same-detail).",
|
|
1268
|
+
"payload": {
|
|
1269
|
+
"type": "object"
|
|
1270
|
+
},
|
|
1271
|
+
"alias_of": "sf-view-properties-delete"
|
|
1272
|
+
},
|
|
1273
|
+
"sf-property-view-created": {
|
|
1274
|
+
"summary": "Dated alias of sf-view-properties-created until 2027-01-01 (same-detail).",
|
|
1275
|
+
"payload": {
|
|
1276
|
+
"type": "object"
|
|
1277
|
+
},
|
|
1278
|
+
"alias_of": "sf-view-properties-created"
|
|
1279
|
+
},
|
|
1280
|
+
"sf-property-view-cancel": {
|
|
1281
|
+
"summary": "Dated alias of sf-view-properties-cancel until 2027-01-01 (same-detail).",
|
|
1282
|
+
"payload": {
|
|
1283
|
+
"type": "object"
|
|
1284
|
+
},
|
|
1285
|
+
"alias_of": "sf-view-properties-cancel"
|
|
1286
|
+
},
|
|
1287
|
+
"sf-property-view-state": {
|
|
1288
|
+
"summary": "Dated alias of sf-view-properties-state until 2027-01-01 (same-detail).",
|
|
1289
|
+
"payload": {
|
|
1290
|
+
"type": "object"
|
|
1291
|
+
},
|
|
1292
|
+
"alias_of": "sf-view-properties-state"
|
|
1293
|
+
},
|
|
1294
|
+
"sf-property-view-address-copy": {
|
|
1295
|
+
"summary": "Dated alias of sf-view-properties-address-copy until 2027-01-01 (same-detail).",
|
|
1296
|
+
"payload": {
|
|
1297
|
+
"type": "object"
|
|
1298
|
+
},
|
|
1299
|
+
"alias_of": "sf-view-properties-address-copy"
|
|
1300
|
+
},
|
|
1301
|
+
"sf-property-view-favourite": {
|
|
1302
|
+
"summary": "Dated alias of sf-view-properties-favourite until 2027-01-01 (same-detail).",
|
|
1303
|
+
"payload": {
|
|
1304
|
+
"type": "object"
|
|
1305
|
+
},
|
|
1306
|
+
"alias_of": "sf-view-properties-favourite"
|
|
1307
|
+
}
|
|
1308
|
+
},
|
|
1309
|
+
"state": {
|
|
1310
|
+
"machines": {
|
|
1311
|
+
"data": [
|
|
1312
|
+
"loading",
|
|
1313
|
+
"ready",
|
|
1314
|
+
"empty",
|
|
1315
|
+
"error"
|
|
1316
|
+
]
|
|
1317
|
+
},
|
|
1318
|
+
"visual_states": [
|
|
1319
|
+
"default",
|
|
1320
|
+
"loading",
|
|
1321
|
+
"empty",
|
|
1322
|
+
"error"
|
|
1323
|
+
]
|
|
1324
|
+
},
|
|
1325
|
+
"persistence": {
|
|
1326
|
+
"mode": "external-host",
|
|
1327
|
+
"source_of_truth": "host",
|
|
1328
|
+
"network_owner": "host",
|
|
1329
|
+
"revision_field": "revision"
|
|
1330
|
+
},
|
|
1331
|
+
"ownership": {
|
|
1332
|
+
"source": "simai/ui-admin",
|
|
1333
|
+
"data": "host",
|
|
1334
|
+
"effects": "host",
|
|
1335
|
+
"forbidden_client_responsibilities": [
|
|
1336
|
+
"access decisions",
|
|
1337
|
+
"database writes",
|
|
1338
|
+
"unspecified transport",
|
|
1339
|
+
"choosing a component for a property type"
|
|
1340
|
+
]
|
|
1341
|
+
},
|
|
1342
|
+
"security": {
|
|
1343
|
+
"permissions_owner": "host",
|
|
1344
|
+
"untrusted_inputs": [
|
|
1345
|
+
"record",
|
|
1346
|
+
"sections",
|
|
1347
|
+
"field values"
|
|
1348
|
+
],
|
|
1349
|
+
"network_policy": "deny"
|
|
1350
|
+
},
|
|
1351
|
+
"accessibility": {
|
|
1352
|
+
"role": "region",
|
|
1353
|
+
"accessible_name": "required",
|
|
1354
|
+
"keyboard": [
|
|
1355
|
+
"Native controls and child Smart components"
|
|
1356
|
+
],
|
|
1357
|
+
"focus": "No focus movement on re-read"
|
|
1358
|
+
},
|
|
1359
|
+
"presentation": {
|
|
1360
|
+
"skeleton": {
|
|
1361
|
+
"shape": "record",
|
|
1362
|
+
"while_loading": "template"
|
|
1363
|
+
},
|
|
1364
|
+
"themes": [
|
|
1365
|
+
"light",
|
|
1366
|
+
"dark"
|
|
1367
|
+
],
|
|
1368
|
+
"locales": [
|
|
1369
|
+
"ru",
|
|
1370
|
+
"en"
|
|
1371
|
+
],
|
|
1372
|
+
"responsive": [
|
|
1373
|
+
"The section list and the fields stack below the tablet breakpoint; child components own their own responsive behaviour"
|
|
1374
|
+
]
|
|
1375
|
+
},
|
|
1376
|
+
"adapter": {
|
|
1377
|
+
"kind": "generic",
|
|
1378
|
+
"protocol": "simai.smart-studio-adapter.v1",
|
|
1379
|
+
"module": null
|
|
1380
|
+
},
|
|
1381
|
+
"artifacts": {
|
|
1382
|
+
"fixtures": [],
|
|
1383
|
+
"scenarios": []
|
|
1384
|
+
},
|
|
1385
|
+
"readiness": {
|
|
1386
|
+
"level": "host-required",
|
|
1387
|
+
"required_checks": [
|
|
1388
|
+
"host-port",
|
|
1389
|
+
"property-view",
|
|
1390
|
+
"loader-rule",
|
|
1391
|
+
"generated-pair"
|
|
1392
|
+
]
|
|
1393
|
+
},
|
|
1394
|
+
"compatibility": {
|
|
1395
|
+
"contract_schema": {
|
|
1396
|
+
"id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json",
|
|
1397
|
+
"version": 2
|
|
1398
|
+
},
|
|
1399
|
+
"runtime_pair": {
|
|
1400
|
+
"ui_revision": "89834691fb9dce692be5353f3214df7aee3a7e27",
|
|
1401
|
+
"ui_smart_revision": "89834691fb9dce692be5353f3214df7aee3a7e27"
|
|
1402
|
+
},
|
|
1403
|
+
"aliases": [
|
|
1404
|
+
"<sf-property-view>"
|
|
1405
|
+
],
|
|
1406
|
+
"deprecations": [
|
|
1407
|
+
{
|
|
1408
|
+
"path": "<sf-property-view>",
|
|
1409
|
+
"since": "1.9.0",
|
|
1410
|
+
"replacement": "<sf-view-properties>"
|
|
1411
|
+
}
|
|
1412
|
+
],
|
|
1413
|
+
"replacement": null,
|
|
1414
|
+
"migrations": [
|
|
1415
|
+
{
|
|
1416
|
+
"from": "1.4.0",
|
|
1417
|
+
"to": "1.5.0",
|
|
1418
|
+
"changes": [
|
|
1419
|
+
"From component.json (standard simai.smart-component 1.3.8): sf-property-view-saved {id, revision} after an applied save and sf-property-view-failed {reason, message} after a record that could not be read; open and delete by the vocabulary's verbs with -open-record and -delete-record as dated aliases; close is a cancelable request; a panel honours hidden and open, and full draws it in place; the loading skeleton draws the section tabs; the actions answer outcomes.",
|
|
1420
|
+
"Port 1.15.0 (1.14.0 and earlier keep working): a host that announces group-load is asked group.load -- group null first, for the arrangement and the group the panel opens on, then each group of a section when the section starts (§7.2.1, reason started); a group not read yet draws its field_count as skeleton lines. Without group-load record.load is asked once per revision and every group is served from it. One revision per record, sent with group.save; a conflict keeps the input and reads what is shown again at the answer's revision; unknown-group reads the arrangement again."
|
|
1421
|
+
]
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"from": "1.6.0",
|
|
1425
|
+
"to": "1.7.0",
|
|
1426
|
+
"changes": [
|
|
1427
|
+
"Port 1.16.0 (1.15.0 and earlier keep working; consumer simai.main, agreed contract q-b0de123841): a string with field.mask is typed through the stock sf-input mask and saved as shown, fixed parts included; while any masked field of the surface is incomplete, Save is disabled -- group.save and record.save alike -- with the count of what is wrong beside it and the stock message under the field; each masked field is complete or not on its own; a cleared optional one saves null, or \"\" with nullable false. A choice with variant buttons is a segmented sf-button-group sized by field.size; pressing the chosen button again clears a field that is not required; read-only shows the choice, disabled by a condition draws the group disabled."
|
|
1428
|
+
]
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"from": "1.7.0",
|
|
1432
|
+
"to": "1.7.1",
|
|
1433
|
+
"changes": [
|
|
1434
|
+
"Cancelling one group's edit dispatches sf-property-view-cancel too, with detail {mode, scope: \"group\", section, group}; the whole-object cancel keeps its shape.",
|
|
1435
|
+
"«Add a view» opens a naming row first (Enter or the check makes the view through view.create with that name; Escape or the cross leaves without writing); it no longer makes «New view» at once. Nothing to change for a host."
|
|
1436
|
+
]
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"from": "1.7.1",
|
|
1440
|
+
"to": "1.7.2",
|
|
1441
|
+
"changes": [
|
|
1442
|
+
"Cancelling the arrangement mode with nothing changed raises no view.save: the layer is still the one entered with (same revision, or the same content), so nothing is written back. Nothing to change for a host."
|
|
1443
|
+
]
|
|
1444
|
+
},
|
|
1445
|
+
{
|
|
1446
|
+
"from": "1.7.2",
|
|
1447
|
+
"to": "1.7.3",
|
|
1448
|
+
"changes": [
|
|
1449
|
+
"A press on a link inside a field's value (a stored file's download, a URL) no longer opens the group for editing; the link does its own thing only. Nothing to change for a host."
|
|
1450
|
+
]
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
"from": "1.7.3",
|
|
1454
|
+
"to": "1.7.4",
|
|
1455
|
+
"changes": [
|
|
1456
|
+
"Inline and as the page the view fills its region (display block over the base's display: contents) and its arrangement scrolls inside, so a port-fed record holds its box from the first paint (gate 24). Nothing to change for a host."
|
|
1457
|
+
]
|
|
1458
|
+
},
|
|
1459
|
+
{
|
|
1460
|
+
"from": "1.7.4",
|
|
1461
|
+
"to": "1.7.5",
|
|
1462
|
+
"changes": [
|
|
1463
|
+
"The manifest composes the Pro table by its id, smart.view-table, alone; smart.table, its former name, is no longer listed beside it. Nothing to change for a host."
|
|
1464
|
+
]
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"from": "1.7.5",
|
|
1468
|
+
"to": "1.7.6",
|
|
1469
|
+
"changes": [
|
|
1470
|
+
"Entering the arrangement moves the focus to the arranging bar's first control, and Done or cancel moves it back to the panel's menu, where it is lost otherwise; a focus a person has already moved inside the panel is left alone. Nothing to change for a host."
|
|
1471
|
+
]
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
"from": "1.7.6",
|
|
1475
|
+
"to": "1.7.7",
|
|
1476
|
+
"changes": [
|
|
1477
|
+
"A press on any control inside a field's value -- sf-file-preview's download button as well as a link -- no longer opens the group for editing. Entering the arrangement focuses the view chooser rather than Reset. Nothing to change for a host."
|
|
1478
|
+
]
|
|
1479
|
+
},
|
|
1480
|
+
{
|
|
1481
|
+
"from": "1.7.7",
|
|
1482
|
+
"to": "1.7.8",
|
|
1483
|
+
"changes": [
|
|
1484
|
+
"Entering the arrangement on a cold page waits for the view chooser to be defined and drawn before placing the focus, so it lands on the chooser rather than Reset. Nothing to change for a host."
|
|
1485
|
+
]
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"from": "1.7.9",
|
|
1489
|
+
"to": "1.8.0",
|
|
1490
|
+
"changes": [
|
|
1491
|
+
"Port 1.17.0 (1.16.0 and earlier keep working; consumer Larena, msg-4208ef91ae5442ceb44b): a field of propertyType html is formatted text, an HTML string of the sf-rich-text subset; the Framework's field renderers edit it with sf-rich-text and show it cleaned when viewed. Nothing to change for a host that sends no html field."
|
|
1492
|
+
]
|
|
1493
|
+
},
|
|
1494
|
+
{
|
|
1495
|
+
"from": "1.8.0",
|
|
1496
|
+
"to": "1.8.1",
|
|
1497
|
+
"changes": [
|
|
1498
|
+
"Standard simai.smart-component 1.4: component.json and examples.json are the source; rule.js, aliases.json, probe.json and smart.manifest.json are generated from them. The registry gains the settings and events component.json declares, the dated event names with alias_of and canonical, the base settings root-class and root-style, and the Loader relations in composition.uses; a word setting's default is the page language's (default-from), so the registry names no fixed one. No runtime behaviour changes. Nothing to change for a host."
|
|
1499
|
+
]
|
|
1500
|
+
},
|
|
1501
|
+
{
|
|
1502
|
+
"from": "1.8.2",
|
|
1503
|
+
"to": "1.8.3",
|
|
1504
|
+
"changes": [
|
|
1505
|
+
"The standard menu is 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."
|
|
1506
|
+
]
|
|
1507
|
+
},
|
|
1508
|
+
{
|
|
1509
|
+
"from": "1.8.3",
|
|
1510
|
+
"to": "1.8.4",
|
|
1511
|
+
"changes": [
|
|
1512
|
+
"The focus after arranging is found with the layer stack's FOCUSABLE; needs core.runtime >= 1.19.0. No visible change. Nothing to change for a host on a pair from core.runtime 1.19.0 on."
|
|
1513
|
+
]
|
|
1514
|
+
},
|
|
1515
|
+
{
|
|
1516
|
+
"from": "1.8.4",
|
|
1517
|
+
"to": "1.8.5",
|
|
1518
|
+
"changes": [
|
|
1519
|
+
"Draws and finds the renamed Framework elements by their new tags (the editors are sf-input-date, sf-input-color, sf-input-country, sf-input-textarea, sf-slider-range and sf-button-copy, the buttons sf-button-icon, the standard menu sf-menu-context); 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."
|
|
1520
|
+
]
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
"from": "1.8.5",
|
|
1524
|
+
"to": "1.9.0",
|
|
1525
|
+
"changes": [
|
|
1526
|
+
"The tag is sf-view-properties (rename plan R2, naming decision 2026-11-02: sf-[set]-<block>); the folder view-properties, the id smart.view-properties and the bundle cl-view-properties follow it (were property-view, smart.property-view, cl-property-view). sf-property-view stays a dated alias until 2027-01-01: old markup upgrades as this element, the Loader forwards cl-property-view, and every event fires under its former name as well, with the same detail. Public CSS variables and classes keep their names. 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-properties."
|
|
1527
|
+
]
|
|
1528
|
+
},
|
|
1529
|
+
{
|
|
1530
|
+
"from": "1.9.1",
|
|
1531
|
+
"to": "1.10.0",
|
|
1532
|
+
"changes": [
|
|
1533
|
+
"A datetime or time field is one sf-input-date (mode datetime or time) instead of a day and a masked time field; the value written is the same ISO 8601. Dates the host does not format read in the page's language. A colour palette wraps in a half-width field. A closed panel shows no close button or shadow over the page. An entry put back to the stored value is not written. Nothing to change for a host; a host that read the pair's names («<label>: дата», «<label>: время») finds one control named by the label."
|
|
1534
|
+
]
|
|
1535
|
+
}
|
|
1536
|
+
]
|
|
1537
|
+
},
|
|
1538
|
+
"provenance": {
|
|
1539
|
+
"source_repository": "simai/ui-pro",
|
|
1540
|
+
"source_revision": "a5ac53753d95b49e2e70078c94fd89ccd3045993",
|
|
1541
|
+
"source_artifacts": [
|
|
1542
|
+
{
|
|
1543
|
+
"path": "src/smart/view-properties/index.js",
|
|
1544
|
+
"sha256": "94e290610bfe9056fbbc8e7f2856d73ab23f69a132ec6d3b04669c7c52766c2a"
|
|
1545
|
+
},
|
|
1546
|
+
{
|
|
1547
|
+
"path": "src/smart/view-properties/js/templates/default.js",
|
|
1548
|
+
"sha256": "9aaa4a7143ef16617609a2461ccaa5edbfdd5e6277f111dd83ced3d1736a9a24"
|
|
1549
|
+
},
|
|
1550
|
+
{
|
|
1551
|
+
"path": "src/smart/view-properties/js/templates/default.css",
|
|
1552
|
+
"sha256": "070ec7d9a02a683ce6dffa8631dd3c2722a5158dbb4e58541d9945312561ad21"
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"path": "src/smart/view-properties/js/conditions.js",
|
|
1556
|
+
"sha256": "bf48b0bf4d2affb43433d1142b1a0ca57e22dc26088c5bd0b28e3212fba7134b"
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"path": "src/smart/view-properties/rule.js",
|
|
1560
|
+
"sha256": "e23c095e11f5f42de3bad05a8d347f668c947dad90018994e3ef334832e1b887"
|
|
1561
|
+
},
|
|
1562
|
+
{
|
|
1563
|
+
"path": "src/core/contracts/ports/simai.property-view-port/1.4.0/port.json",
|
|
1564
|
+
"sha256": "9d9f43cf1abf9c900b74166ec7a7282f39d5dd176c28f5ea37e6c73df643e5f7"
|
|
1565
|
+
},
|
|
1566
|
+
{
|
|
1567
|
+
"path": "src/smart/view-properties/docs.md",
|
|
1568
|
+
"sha256": "335230ca6ea373effddc4737765befd00b0098e214794f483f35562ede7de708"
|
|
1569
|
+
}
|
|
1570
|
+
],
|
|
1571
|
+
"generated_runtime": []
|
|
1572
|
+
},
|
|
1573
|
+
"ai_guidance": {
|
|
1574
|
+
"use_when": "Use to show and edit the fields of one object -- a record, site settings, a user -- where the host owns the values and the arrangement.",
|
|
1575
|
+
"do_not": [
|
|
1576
|
+
"Do not pass a component or a CSS class for a field value: pass its property type and let the renderer set decide.",
|
|
1577
|
+
"Do not expect the component to hold a value or a revision between reads.",
|
|
1578
|
+
"Do not filter rare fields out of the answer: mark them and send them, or toggling the view twice shows two different objects."
|
|
1579
|
+
],
|
|
1580
|
+
"required_reads": [
|
|
1581
|
+
"host_port",
|
|
1582
|
+
"events",
|
|
1583
|
+
"ownership",
|
|
1584
|
+
"compatibility",
|
|
1585
|
+
"docs"
|
|
1586
|
+
],
|
|
1587
|
+
"minimal_example": "<sf-view-properties collection=\"storage\" record-id=\"42\" aria-label=\"Запись\"></sf-view-properties>",
|
|
1588
|
+
"owner_commands": [
|
|
1589
|
+
"node scripts/test.mjs",
|
|
1590
|
+
"node scripts/run-browser-probes.mjs <free output> <package output>"
|
|
1591
|
+
]
|
|
1592
|
+
}
|
|
1593
|
+
}
|