@simai-studio/view 1.0.0 → 1.2.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/README.md +5 -5
- package/dist/package-receipt.json +356 -114
- package/dist/set.json +35 -2
- package/dist/smart/rule.js +94 -0
- package/dist/smart/rule.js.gz +0 -0
- package/dist/smart/view/component.json +10 -2
- package/dist/smart/view/component.json.gz +0 -0
- package/dist/smart/view/js/view.js +23 -6
- package/dist/smart/view/js/view.js.gz +0 -0
- package/dist/smart/view/js/view.min.js +1 -1
- package/dist/smart/view/js/view.min.js.gz +0 -0
- package/dist/smart/view/smart.manifest.json +10 -3
- package/dist/smart/view/smart.manifest.json.gz +0 -0
- package/dist/smart/view/static/default/open-record.html +12 -17
- package/dist/smart/view/static/default/open-record.html.gz +0 -0
- package/dist/smart/view/static/default/reference.html +12 -17
- package/dist/smart/view/static/default/reference.html.gz +0 -0
- package/dist/smart/view-flow/component.json +612 -0
- package/dist/smart/view-flow/component.json.gz +0 -0
- package/dist/smart/view-flow/css/view-flow.css +203 -0
- package/dist/smart/view-flow/css/view-flow.css.gz +0 -0
- package/dist/smart/view-flow/css/view-flow.min.css +2 -0
- package/dist/smart/view-flow/css/view-flow.min.css.gz +0 -0
- package/dist/smart/view-flow/examples.json +452 -0
- package/dist/smart/view-flow/examples.json.gz +0 -0
- package/dist/smart/view-flow/js/view-flow.js +5858 -0
- package/dist/smart/view-flow/js/view-flow.js.gz +0 -0
- package/dist/smart/view-flow/js/view-flow.min.js +638 -0
- package/dist/smart/view-flow/js/view-flow.min.js.gz +0 -0
- package/dist/smart/view-flow/lang/en.json +24 -0
- package/dist/smart/view-flow/lang/en.json.gz +0 -0
- package/dist/smart/view-flow/lang/ru.json +24 -0
- package/dist/smart/view-flow/lang/ru.json.gz +0 -0
- package/dist/smart/view-flow/probe.json +149 -0
- package/dist/smart/view-flow/probe.json.gz +0 -0
- package/dist/smart/view-flow/smart.manifest.json +478 -0
- package/dist/smart/view-flow/smart.manifest.json.gz +0 -0
- package/dist/smart/view-flow/static/default/answered.html +57 -0
- package/dist/smart/view-flow/static/default/answered.html.gz +0 -0
- package/dist/smart/view-flow/static/default/ask.html +146 -0
- package/dist/smart/view-flow/static/default/ask.html.gz +0 -0
- package/dist/smart/view-flow/static/default/expired.html +16 -0
- package/dist/smart/view-flow/static/default/expired.html.gz +0 -0
- package/dist/smart/view-flow/static/default/groups.html +44 -0
- package/dist/smart/view-flow/static/default/groups.html.gz +0 -0
- package/dist/smart/view-flow/static/default/reference.html +72 -0
- package/dist/smart/view-flow/static/default/reference.html.gz +0 -0
- package/dist/smart/view-flow/static/default/untitled.html +41 -0
- package/dist/smart/view-flow/static/default/untitled.html.gz +0 -0
- package/dist/smart/view-flow/static/sheets.json +443 -0
- package/dist/smart/view-flow/static/sheets.json.gz +0 -0
- package/dist/smart/view-flow/template/default.css +180 -0
- package/dist/smart/view-flow/template/default.css.gz +0 -0
- package/dist/smart/view-flow/template/default.js +136 -0
- package/dist/smart/view-flow/template/default.js.gz +0 -0
- package/dist/smart/view-properties/component.json +10 -2
- package/dist/smart/view-properties/component.json.gz +0 -0
- package/dist/smart/view-properties/css/view-properties.css +24 -19
- package/dist/smart/view-properties/css/view-properties.css.gz +0 -0
- package/dist/smart/view-properties/css/view-properties.min.css +1 -1
- package/dist/smart/view-properties/css/view-properties.min.css.gz +0 -0
- package/dist/smart/view-properties/js/view-properties.js +358 -185
- package/dist/smart/view-properties/js/view-properties.js.gz +0 -0
- package/dist/smart/view-properties/js/view-properties.min.js +94 -121
- package/dist/smart/view-properties/js/view-properties.min.js.gz +0 -0
- package/dist/smart/view-properties/lang/en.json +0 -7
- package/dist/smart/view-properties/lang/en.json.gz +0 -0
- package/dist/smart/view-properties/lang/ru.json +0 -7
- package/dist/smart/view-properties/lang/ru.json.gz +0 -0
- package/dist/smart/view-properties/smart.manifest.json +16 -9
- package/dist/smart/view-properties/smart.manifest.json.gz +0 -0
- package/dist/smart/view-properties/template/default.css +22 -19
- package/dist/smart/view-properties/template/default.css.gz +0 -0
- package/dist/smart/view-properties/template/default.js +1 -79
- package/dist/smart/view-properties/template/default.js.gz +0 -0
- package/dist/smart/view-table/component.json +10 -2
- package/dist/smart/view-table/component.json.gz +0 -0
- package/dist/smart/view-table/js/view-table.js +377 -88
- package/dist/smart/view-table/js/view-table.js.gz +0 -0
- package/dist/smart/view-table/js/view-table.min.js +58 -56
- package/dist/smart/view-table/js/view-table.min.js.gz +0 -0
- package/dist/smart/view-table/smart.manifest.json +11 -4
- package/dist/smart/view-table/smart.manifest.json.gz +0 -0
- package/dist/smart/view-table/template/default.js +1 -1
- package/dist/smart/view-table/template/default.js.gz +0 -0
- package/package.json +1 -1
|
Binary file
|
|
@@ -29,10 +29,6 @@
|
|
|
29
29
|
"conflict-text": "The record changed; read it again",
|
|
30
30
|
"copy-link-label": "Copy link",
|
|
31
31
|
"create-text": "Create",
|
|
32
|
-
"date-invalid-text": "The date is not a calendar date",
|
|
33
|
-
"date-missing-text": "Enter the date",
|
|
34
|
-
"date-time-date-label": "{label}: date",
|
|
35
|
-
"date-time-time-label": "{label}: time",
|
|
36
32
|
"delete-text": "Delete",
|
|
37
33
|
"delete-view-text": "Remove the view",
|
|
38
34
|
"done-configuring-text": "Done",
|
|
@@ -80,9 +76,6 @@
|
|
|
80
76
|
"state-loading": "Reading the record",
|
|
81
77
|
"state-port-not-connected": "The record port is not connected",
|
|
82
78
|
"state-unavailable": "The record is unavailable",
|
|
83
|
-
"time-invalid-text": "Enter the time as hh:mm, from 00:00 to 23:59",
|
|
84
|
-
"time-missing-text": "Enter the time",
|
|
85
|
-
"time-placeholder-text": "hh:mm",
|
|
86
79
|
"unplaced-hint-text": "Fields this view does not show. Drag one into a group to place it, or drag a field here to take it out.",
|
|
87
80
|
"unplaced-title": "Not placed",
|
|
88
81
|
"variant-text": "Template",
|
|
Binary file
|
|
@@ -29,10 +29,6 @@
|
|
|
29
29
|
"conflict-text": "Запись изменилась, обновите её",
|
|
30
30
|
"copy-link-label": "Копировать ссылку",
|
|
31
31
|
"create-text": "Создать",
|
|
32
|
-
"date-invalid-text": "Дата указана неверно",
|
|
33
|
-
"date-missing-text": "Укажите дату",
|
|
34
|
-
"date-time-date-label": "{label}: дата",
|
|
35
|
-
"date-time-time-label": "{label}: время",
|
|
36
32
|
"delete-text": "Удалить",
|
|
37
33
|
"delete-view-text": "Удалить вид",
|
|
38
34
|
"done-configuring-text": "Готово",
|
|
@@ -80,9 +76,6 @@
|
|
|
80
76
|
"state-loading": "Загрузка записи",
|
|
81
77
|
"state-port-not-connected": "Порт записи не подключён",
|
|
82
78
|
"state-unavailable": "Запись недоступна",
|
|
83
|
-
"time-invalid-text": "Укажите время в виде чч:мм, от 00:00 до 23:59",
|
|
84
|
-
"time-missing-text": "Укажите время",
|
|
85
|
-
"time-placeholder-text": "чч:мм",
|
|
86
79
|
"unplaced-hint-text": "Поля, которых нет в этом виде. Перетащите поле в группу, чтобы разместить, или сюда, чтобы убрать.",
|
|
87
80
|
"unplaced-title": "Не размещённые",
|
|
88
81
|
"variant-text": "Вид",
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 2,
|
|
3
3
|
"id": "smart.view-properties",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.10.1",
|
|
5
5
|
"title": "Property view",
|
|
6
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
7
|
"kind": "composite",
|
|
@@ -1525,6 +1525,13 @@
|
|
|
1525
1525
|
"changes": [
|
|
1526
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
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
|
+
]
|
|
1528
1535
|
}
|
|
1529
1536
|
]
|
|
1530
1537
|
},
|
|
@@ -1534,24 +1541,24 @@
|
|
|
1534
1541
|
"source_artifacts": [
|
|
1535
1542
|
{
|
|
1536
1543
|
"path": "src/smart/view-properties/index.js",
|
|
1537
|
-
"sha256": "
|
|
1544
|
+
"sha256": "94e290610bfe9056fbbc8e7f2856d73ab23f69a132ec6d3b04669c7c52766c2a"
|
|
1538
1545
|
},
|
|
1539
1546
|
{
|
|
1540
1547
|
"path": "src/smart/view-properties/js/templates/default.js",
|
|
1541
|
-
"sha256": "
|
|
1548
|
+
"sha256": "f279e28558ccf50841b59c311ac39f8861f78e43bcce333eb4501d38aac6048b"
|
|
1542
1549
|
},
|
|
1543
1550
|
{
|
|
1544
1551
|
"path": "src/smart/view-properties/js/templates/default.css",
|
|
1545
|
-
"sha256": "
|
|
1546
|
-
},
|
|
1547
|
-
{
|
|
1548
|
-
"path": "src/smart/view-properties/js/datetime-edit.js",
|
|
1549
|
-
"sha256": "2edcd0a30a00f2decc4a8bd51507dbe4b265e089435694e169ca4fc20d3cf8d5"
|
|
1552
|
+
"sha256": "070ec7d9a02a683ce6dffa8631dd3c2722a5158dbb4e58541d9945312561ad21"
|
|
1550
1553
|
},
|
|
1551
1554
|
{
|
|
1552
1555
|
"path": "src/smart/view-properties/js/conditions.js",
|
|
1553
1556
|
"sha256": "bf48b0bf4d2affb43433d1142b1a0ca57e22dc26088c5bd0b28e3212fba7134b"
|
|
1554
1557
|
},
|
|
1558
|
+
{
|
|
1559
|
+
"path": "src/smart/view-properties/js/field-value.js",
|
|
1560
|
+
"sha256": "18194d28683ab6dc3f876cd4f39928745017b5e03f2abd310876c079ffe74188"
|
|
1561
|
+
},
|
|
1555
1562
|
{
|
|
1556
1563
|
"path": "src/smart/view-properties/rule.js",
|
|
1557
1564
|
"sha256": "e23c095e11f5f42de3bad05a8d347f668c947dad90018994e3ef334832e1b887"
|
|
@@ -1562,7 +1569,7 @@
|
|
|
1562
1569
|
},
|
|
1563
1570
|
{
|
|
1564
1571
|
"path": "src/smart/view-properties/docs.md",
|
|
1565
|
-
"sha256": "
|
|
1572
|
+
"sha256": "335230ca6ea373effddc4737765befd00b0098e214794f483f35562ede7de708"
|
|
1566
1573
|
}
|
|
1567
1574
|
],
|
|
1568
1575
|
"generated_runtime": []
|
|
Binary file
|
|
@@ -468,29 +468,20 @@
|
|
|
468
468
|
display: flex;
|
|
469
469
|
}
|
|
470
470
|
|
|
471
|
-
/* A
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
.sf-property-view-
|
|
478
|
-
|
|
479
|
-
align-items: center;
|
|
480
|
-
gap: var(--sf-space-2);
|
|
471
|
+
/* A colour with a palette wraps inside its field: the chip, the code, the
|
|
472
|
+
swatches and the reset stood on one unwrapping line of 463px in a
|
|
473
|
+
half-width field of 266, and the swatches ran over the field beside it
|
|
474
|
+
(the Fields page, 2026-11-05). sf-input-color's painted root is the flex
|
|
475
|
+
item (the host is display: contents); its row wraps, and the swatches wrap
|
|
476
|
+
among themselves on a line of their own when they have to. */
|
|
477
|
+
.sf-property-view-field-value .sf-color {
|
|
478
|
+
flex-wrap: wrap;
|
|
481
479
|
max-inline-size: 100%;
|
|
482
480
|
min-inline-size: 0;
|
|
483
481
|
}
|
|
484
482
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
.sf-property-view-datetime > sf-input-date > .sf-datepicker-wrap {
|
|
488
|
-
flex: 0 1 auto;
|
|
489
|
-
min-inline-size: 0;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
.sf-property-view-datetime .sf-property-view-datetime-time-field {
|
|
493
|
-
flex: 0 0 6.5em;
|
|
483
|
+
.sf-property-view-field-value .sf-color-swatches {
|
|
484
|
+
flex-wrap: wrap;
|
|
494
485
|
min-inline-size: 0;
|
|
495
486
|
}
|
|
496
487
|
|
|
@@ -912,6 +903,18 @@
|
|
|
912
903
|
.sf-property-view-edge sf-button-icon button {
|
|
913
904
|
border-radius: 50%;
|
|
914
905
|
}
|
|
906
|
+
/* Closed is nothing drawn. sf-drawer slides a closed panel past the window's
|
|
907
|
+
edge, and its edge strip -- this panel's close and copy-link -- stays where
|
|
908
|
+
it stood, so a closed panel left its round close button over the page, and
|
|
909
|
+
the panel's shadow along the window's edge (2026-11-05). The strip goes at
|
|
910
|
+
once; the panel when its slide out is over, so the close still moves. */
|
|
911
|
+
.sf-drawer:not(.is-open) .sf-drawer-edge:has(> .sf-property-view-edge) {
|
|
912
|
+
visibility: hidden;
|
|
913
|
+
}
|
|
914
|
+
.sf-drawer:not(.is-open) .sf-drawer-panel:has(.sf-property-view-panel) {
|
|
915
|
+
visibility: hidden;
|
|
916
|
+
transition: transform var(--sf-duration-normal) var(--sf-ease-exit), visibility 0s linear var(--sf-duration-normal);
|
|
917
|
+
}
|
|
915
918
|
/* A panel filling the screen has the strip inside it, in a row along its top
|
|
916
919
|
at the drawer's inline step (space-1). The head starts its line after the
|
|
917
920
|
strip and a step more, so the record's name is not under the controls
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {html, nothing} from 'lit';
|
|
2
2
|
import "./default.css";
|
|
3
3
|
import {renderViewField, renderEditField} from '../../../field-renderers/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import {renderFieldValue} from '../field-value.js';
|
|
5
5
|
|
|
6
6
|
// The arrangement, drawn in the component's own light DOM. Not in a shadow root:
|
|
7
7
|
// the field controls are Smart elements whose stylesheets are document-level, and
|
|
@@ -10,84 +10,6 @@ import {renderDateTimeEdit} from '../datetime-edit.js';
|
|
|
10
10
|
// of this composite built them inside a shadow root and every control came out
|
|
11
11
|
// with its markup and none of its CSS.
|
|
12
12
|
|
|
13
|
-
function renderFieldValue(context, field, editing, {disabled = false} = {}) {
|
|
14
|
-
const key = String(field.key ?? '');
|
|
15
|
-
const editHost = {
|
|
16
|
-
setFieldValue: (target, value) => context.component.changeField(target, value),
|
|
17
|
-
// A control that knows its entry is not a value yet says so here (port
|
|
18
|
-
// 1.16.0: a masked string that does not fill its mask); the view holds
|
|
19
|
-
// both saves until it is completed or cleared.
|
|
20
|
-
setFieldError: (target, message) => context.component.reportFieldError(target, message),
|
|
21
|
-
...(context.canUploadFiles
|
|
22
|
-
? {
|
|
23
|
-
getFieldUploads: (target) => context.component.getFieldUploads(target),
|
|
24
|
-
startFieldUpload: (target, items) => context.component.startFieldUpload(target, items),
|
|
25
|
-
retryFieldUpload: (target, index) => context.component.retryFieldUpload(target, index),
|
|
26
|
-
}
|
|
27
|
-
: {}),
|
|
28
|
-
...(context.canPickRecords
|
|
29
|
-
? {
|
|
30
|
-
getFieldOptionsPage: (target) => context.component.getFieldOptionsPage(target),
|
|
31
|
-
getFieldOptionSearch: (target) => context.component.getFieldOptionSearch(target),
|
|
32
|
-
setFieldOptionSearch: (target, text) => context.component.setFieldOptionSearch(target, text),
|
|
33
|
-
loadFieldOptions: (target, request) => context.component.loadFieldOptions(target, request),
|
|
34
|
-
}
|
|
35
|
-
: {}),
|
|
36
|
-
};
|
|
37
|
-
// A datetime is edited as a day and a time (../datetime-edit.js): the
|
|
38
|
-
// shared set's control edits the day alone. A readonly one is shown, as the
|
|
39
|
-
// set shows every readonly field.
|
|
40
|
-
const type = field.propertyType || field.type || field.dataType;
|
|
41
|
-
const content = editing && type === 'datetime' && field.readonly !== true
|
|
42
|
-
? renderDateTimeEdit(context, field, context.changed.has(key) ? context.changed.get(key) : field.value)
|
|
43
|
-
: editing
|
|
44
|
-
? renderEditField(
|
|
45
|
-
field,
|
|
46
|
-
context.changed.has(key) ? context.changed.get(key) : field.value,
|
|
47
|
-
editHost,
|
|
48
|
-
// A field its condition turns off is drawn disabled where the set
|
|
49
|
-
// draws disabled apart from read-only (a choice as buttons).
|
|
50
|
-
{size: context.size, ...(disabled ? {disabled: true} : {})},
|
|
51
|
-
)
|
|
52
|
-
: renderViewField(field, field.value, context.hostPort, {size: context.size});
|
|
53
|
-
|
|
54
|
-
const reference = ['record', 'relation', 'user'].includes(field.propertyType || field.type)
|
|
55
|
-
&& field.value && typeof field.value === 'object';
|
|
56
|
-
if (!editing && reference && content) {
|
|
57
|
-
return html`<span
|
|
58
|
-
class="sf-property-view-reference"
|
|
59
|
-
@click=${(event) => {
|
|
60
|
-
event.preventDefault();
|
|
61
|
-
// And no further: the field in view is a button that opens
|
|
62
|
-
// the group for editing, so a press that reached it put the
|
|
63
|
-
// whole group into edit behind the record that had just
|
|
64
|
-
// opened (owner, 2026-10-08). Following a reference is one
|
|
65
|
-
// intent, not two.
|
|
66
|
-
event.stopPropagation();
|
|
67
|
-
context.component.openReference(field, field.value);
|
|
68
|
-
}}
|
|
69
|
-
>${content}</span>`;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// An edit control the set cannot build is not an empty value. record and
|
|
73
|
-
// relation have no editor until the picker's host methods exist, and the
|
|
74
|
-
// first version showed «не заполнено» over a field that had a value -- a
|
|
75
|
-
// consumer read it as the value having been lost. Fall back to the view, so
|
|
76
|
-
// the value is shown and plainly not editable yet.
|
|
77
|
-
if (editing && (content === null || typeof content === 'undefined' || content === nothing)) {
|
|
78
|
-
const shown = renderViewField(field, field.value, context.hostPort, {size: context.size});
|
|
79
|
-
if (shown !== null && typeof shown !== 'undefined' && shown !== nothing) {
|
|
80
|
-
return html`<span class="sf-property-view-readonly color-on-surface-variant" data-readonly="true">${shown}</span>`;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (content === null || typeof content === 'undefined' || content === nothing) {
|
|
85
|
-
return html`<span class="sf-property-view-empty color-on-surface-variant">${context.emptyText}</span>`;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return content;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
13
|
// While the view is being configured every entry is listed, hidden and rare ones
|
|
92
14
|
// included: a hidden field a person cannot see is a field they cannot show again,
|
|
93
15
|
// and «показать редкие поля» is a reading choice rather than part of the
|
|
Binary file
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$comment": "sf-table from its component.json (standard simai.smart-component 1.3.8, vocabulary 1.1.5), migrated from ui-control control/smart-architecture/migration/out/table (convert-1.3.8.mjs over ui-pro 9cbe061); every x-todo decided in x-decisions.",
|
|
3
3
|
"id": "smart.view-table",
|
|
4
4
|
"tag": "sf-view-table",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.15.0",
|
|
6
6
|
"kind": "leaf",
|
|
7
7
|
"family": "table",
|
|
8
8
|
"settings": {
|
|
@@ -1441,7 +1441,8 @@
|
|
|
1441
1441
|
"docs": "docs/docs.md, where the folder keeps it.",
|
|
1442
1442
|
"loader-ensure": "version 1.13.5: the windows' portal is read by the Loader as the page (SF.Loader.watch, core.runtime 1.19.0), so the lazy elements a window draws need no list by name; the window's elements, sf-resizer, sf-sortable and the row menu's sf-context-menu are asked for through SF.Loader.ensure, 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: over an older Loader the calls are no-ops and the table falls back as before where it checks customElements.get.",
|
|
1443
1443
|
"framework-tag-renames": "version 1.13.6: 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 row and column menus are sf-menu-context (its sf-menu-context-* events), the icon buttons sf-button-icon, the typed cells and editors sf-input-color, sf-input-country, sf-input-date and sf-slider-range; a component type that names a former tag (a host's {type: 'icon-button'}) draws the element under its current tag (canonicalTag of the Smart base). 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).",
|
|
1444
|
-
"tag-rename": "version 1.14.0: the tag is sf-view-table (naming decision 2026-11-02: sf-[set]-<block>[-<variant>]; rename plan R2); the folder view-table, the id smart.view-table and the bundle cl-view-table follow it. sf-table 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-table, sf-table), its events named after the tag followed by their former names (ui-source change journal tag-sf-table-to-sf-view-table, path-smart-table-to-view-table)."
|
|
1444
|
+
"tag-rename": "version 1.14.0: the tag is sf-view-table (naming decision 2026-11-02: sf-[set]-<block>[-<variant>]; rename plan R2); the folder view-table, the id smart.view-table and the bundle cl-view-table follow it. sf-table 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-table, sf-table), its events named after the tag followed by their former names (ui-source change journal tag-sf-table-to-sf-view-table, path-smart-table-to-view-table).",
|
|
1445
|
+
"cell-formats": "version 1.15.0: four cells read as what they hold (the Fields page and Larena, 2026-11-05). A date, date and time or time of day the host did not format (formatFieldValue) reads in the page's language through SIMAI Framework's format-date (js/format-value.js); the host's text still wins. Formatted text (html) is its text on the row's one line, never its markup, on both the class-markup path and the full renderer (field-renderers/html.js htmlText). Several files are each their name with their kind's icon, wrapping and folding into «+N» as several tags do; a column of documents drew nothing. The settings column is drawn only when it has something to open: the gear (settings-menu), a row menu with actions, or row reordering; a list with none of them had a column of «≡» that opened an empty menu."
|
|
1445
1446
|
},
|
|
1446
1447
|
"x-registry": {
|
|
1447
1448
|
"kind": "composite",
|
|
@@ -2176,6 +2177,13 @@
|
|
|
2176
2177
|
"changes": [
|
|
2177
2178
|
"The tag is sf-view-table (rename plan R2, naming decision 2026-11-02: sf-[set]-<block>); the folder view-table, the id smart.view-table and the bundle cl-view-table follow it (were table, smart.data-view, cl-table). sf-table stays a dated alias until 2027-01-01: old markup upgrades as this element, the Loader forwards cl-table, 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-table."
|
|
2178
2179
|
]
|
|
2180
|
+
},
|
|
2181
|
+
{
|
|
2182
|
+
"from": "1.14.0",
|
|
2183
|
+
"to": "1.15.0",
|
|
2184
|
+
"changes": [
|
|
2185
|
+
"A date, date and time or time the host does not format reads in the page's language («2 нояб. 2026 г.», «15 нояб. 2026 г., 10:30», «09:30») instead of as stored; a host's formatFieldValue still wins. An html cell shows its text, not its markup; a cell of several files shows each file's name with its icon. The settings column is left out when it would open nothing (no settings-menu, no row actions, no row-reorder). Nothing to change for a host; a host that relied on stored dates in cells formats them in formatFieldValue."
|
|
2186
|
+
]
|
|
2179
2187
|
}
|
|
2180
2188
|
]
|
|
2181
2189
|
},
|
|
Binary file
|