@simai-studio/view 1.0.0 → 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/README.md +1 -1
- package/dist/package-receipt.json +97 -96
- 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 +11 -16
- package/dist/smart/view/static/default/open-record.html.gz +0 -0
- package/dist/smart/view/static/default/reference.html +11 -16
- package/dist/smart/view/static/default/reference.html.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 +306 -171
- package/dist/smart/view-properties/js/view-properties.js.gz +0 -0
- package/dist/smart/view-properties/js/view-properties.min.js +92 -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 +12 -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 +8 -10
- 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 +375 -88
- package/dist/smart/view-table/js/view-table.js.gz +0 -0
- package/dist/smart/view-table/js/view-table.min.js +56 -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
|
@@ -69,6 +69,184 @@ function normalizeBadgeContract({
|
|
|
69
69
|
|
|
70
70
|
/***/ },
|
|
71
71
|
|
|
72
|
+
/***/ "e577837dd70a"
|
|
73
|
+
(module, __webpack_exports__, __webpack_require__) {
|
|
74
|
+
|
|
75
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
76
|
+
__webpack_require__.r(__webpack_exports__);
|
|
77
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
78
|
+
/* harmony export */ calendarDayOffset: () => (/* binding */ calendarDayOffset),
|
|
79
|
+
/* harmony export */ formatDate: () => (/* binding */ formatDate),
|
|
80
|
+
/* harmony export */ msUntilNextDay: () => (/* binding */ msUntilNextDay),
|
|
81
|
+
/* harmony export */ toDate: () => (/* reexport safe */ _format_intl_js__WEBPACK_IMPORTED_MODULE_0__.toDate)
|
|
82
|
+
/* harmony export */ });
|
|
83
|
+
/* harmony import */ var _format_intl_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("15b4e93ff6ed");
|
|
84
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_format_intl_js__WEBPACK_IMPORTED_MODULE_0__]);
|
|
85
|
+
var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
86
|
+
_format_intl_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_async_dependencies_result__[0];
|
|
87
|
+
// Dates in the page's language: formatDate, the calendar day offset and the
|
|
88
|
+
// next midnight, with no top-level side effects (format-intl.js). The same
|
|
89
|
+
// functions as core/js/format.js and SF.format; relative days and times are
|
|
90
|
+
// format-relative.js, so a bundle that writes a date does not carry them.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
const DAY_MS = 86400000;
|
|
94
|
+
|
|
95
|
+
function hasDateStyle(style) {
|
|
96
|
+
return style === 'short' || style === 'medium' || style === 'long' || style === 'full';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A date, a time or both in the locale.
|
|
100
|
+
*
|
|
101
|
+
* formatDate(at) 3 нояб. 2026 г. / Nov 3, 2026
|
|
102
|
+
* formatDate(at, {date: 'short'}) 03.11.2026 / 11/3/26
|
|
103
|
+
* formatDate(at, {date: 'long'}) 3 ноября 2026 г. / November 3, 2026
|
|
104
|
+
* formatDate(at, {time: 'short'}) 3 нояб. 2026 г., 14:05
|
|
105
|
+
* formatDate(at, {date: null, time: 'short'}) 14:05 / 2:05 PM
|
|
106
|
+
*
|
|
107
|
+
* `date` and `time` are Intl styles (short, medium, long, full); `intl` gives
|
|
108
|
+
* Intl.DateTimeFormat options outright, for a form the styles do not name (a
|
|
109
|
+
* chart's tick, «14:05» with two-digit hours). Anything that is not a date is
|
|
110
|
+
* `gap`, '' by default.
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
function formatDate(value, {
|
|
115
|
+
date = 'medium',
|
|
116
|
+
time = null,
|
|
117
|
+
intl = null,
|
|
118
|
+
gap = '',
|
|
119
|
+
...where
|
|
120
|
+
} = {}) {
|
|
121
|
+
const moment = (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.toDate)(value);
|
|
122
|
+
if (!moment) return gap;
|
|
123
|
+
let options = intl;
|
|
124
|
+
|
|
125
|
+
if (!options) {
|
|
126
|
+
options = {};
|
|
127
|
+
if (hasDateStyle(date)) options.dateStyle = date;
|
|
128
|
+
if (hasDateStyle(time)) options.timeStyle = time;
|
|
129
|
+
if (!options.dateStyle && !options.timeStyle) options.dateStyle = 'medium';
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.intlFormatter)('DateTimeFormat', (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.formatLocale)(where), options).format(moment);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Calendar days from `now` to the value in the reader's time zone: 0 today,
|
|
136
|
+
* -1 yesterday, 1 tomorrow; NaN when the value is no date. Counted on
|
|
137
|
+
* calendar dates, not 24-hour spans, so 23:59 yesterday is -1 at 00:01 and a
|
|
138
|
+
* day of a clock change is still one day.
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
function calendarDayOffset(value, {
|
|
142
|
+
now = new Date()
|
|
143
|
+
} = {}) {
|
|
144
|
+
const moment = (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.toDate)(value);
|
|
145
|
+
const today = (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.toDate)(now);
|
|
146
|
+
if (!moment || !today) return Number.NaN;
|
|
147
|
+
const day = Date.UTC(moment.getFullYear(), moment.getMonth(), moment.getDate());
|
|
148
|
+
const base = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());
|
|
149
|
+
return Math.round((day - base) / DAY_MS);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Milliseconds from `now` to the reader's next midnight, when every relative
|
|
153
|
+
* day on the screen moves by one. A component that shows them sets a timer
|
|
154
|
+
* for this long (plus a second's margin, so it wakes in the new day) and
|
|
155
|
+
* draws them again; «сегодня» said yesterday is wrong by morning.
|
|
156
|
+
*/
|
|
157
|
+
|
|
158
|
+
function msUntilNextDay(now = new Date()) {
|
|
159
|
+
const today = (0,_format_intl_js__WEBPACK_IMPORTED_MODULE_0__.toDate)(now) ?? new Date();
|
|
160
|
+
const next = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
|
|
161
|
+
return next.getTime() - today.getTime();
|
|
162
|
+
}
|
|
163
|
+
__webpack_async_result__();
|
|
164
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
165
|
+
|
|
166
|
+
/***/ },
|
|
167
|
+
|
|
168
|
+
/***/ "15b4e93ff6ed"
|
|
169
|
+
(module, __webpack_exports__, __webpack_require__) {
|
|
170
|
+
|
|
171
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
172
|
+
__webpack_require__.r(__webpack_exports__);
|
|
173
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
174
|
+
/* harmony export */ formatLocale: () => (/* binding */ formatLocale),
|
|
175
|
+
/* harmony export */ intlFormatter: () => (/* binding */ intlFormatter),
|
|
176
|
+
/* harmony export */ toDate: () => (/* binding */ toDate)
|
|
177
|
+
/* harmony export */ });
|
|
178
|
+
/* harmony import */ var _page_language_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("43090d1c8307");
|
|
179
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_page_language_js__WEBPACK_IMPORTED_MODULE_0__]);
|
|
180
|
+
var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
181
|
+
_page_language_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_async_dependencies_result__[0];
|
|
182
|
+
/* harmony import */ var _page_language_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_page_language_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
183
|
+
// The part every format module shares (core/js/format.js says what the
|
|
184
|
+
// helpers are): the locale a call formats in, a Date from what a host gives,
|
|
185
|
+
// and the Intl formatters, kept on a global every copy of these modules shares
|
|
186
|
+
// (bundles each carry their own module copy; page-language.js says why).
|
|
187
|
+
//
|
|
188
|
+
// No top-level side effects, here or in format-number.js, format-date.js,
|
|
189
|
+
// format-relative.js and format-file-size.js (ui-chart, 2026-11-05): a bundle
|
|
190
|
+
// that imports one function carries that function and what it calls, nothing
|
|
191
|
+
// else. The global is made on the first format, not on load, and SF.format is
|
|
192
|
+
// published by core's entry (index.js, publishFormat in format.js).
|
|
193
|
+
|
|
194
|
+
/** The locale a call formats in: the one it names, else its node's page language. */
|
|
195
|
+
|
|
196
|
+
function formatLocale({
|
|
197
|
+
locale,
|
|
198
|
+
node
|
|
199
|
+
} = {}) {
|
|
200
|
+
return String(locale || '').trim() || (0,_page_language_js__WEBPACK_IMPORTED_MODULE_0__.pageLocale)(node);
|
|
201
|
+
}
|
|
202
|
+
/** A Date from a Date, a time in milliseconds or a date string; null when it is none. */
|
|
203
|
+
|
|
204
|
+
function toDate(value) {
|
|
205
|
+
if (value === null || value === undefined || value === '') return null;
|
|
206
|
+
const date = value instanceof Date ? new Date(value.getTime()) : new Date(typeof value === 'string' && /^\d+$/u.test(value) ? Number(value) : value);
|
|
207
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
208
|
+
} // The formatters every copy shares, made on the first call.
|
|
209
|
+
|
|
210
|
+
function formatterCache() {
|
|
211
|
+
const root = typeof globalThis !== 'undefined' ? globalThis : {};
|
|
212
|
+
if (!root.__sfFormat) root.__sfFormat = {
|
|
213
|
+
formatters: new Map()
|
|
214
|
+
};
|
|
215
|
+
return root.__sfFormat.formatters;
|
|
216
|
+
} // One formatter per kind, locale and options. An unknown locale falls back to
|
|
217
|
+
// the browser's, and options the platform refuses (an unknown unit or
|
|
218
|
+
// currency) to a plain number, so a typo in a page never throws at a reader.
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
function intlFormatter(kind, locale, options) {
|
|
222
|
+
const key = `${kind}|${locale}|${JSON.stringify(options)}`;
|
|
223
|
+
const cache = formatterCache();
|
|
224
|
+
if (cache.has(key)) return cache.get(key);
|
|
225
|
+
const Make = Intl[kind];
|
|
226
|
+
let made;
|
|
227
|
+
|
|
228
|
+
try {
|
|
229
|
+
made = new Make(locale || undefined, options);
|
|
230
|
+
} catch {
|
|
231
|
+
try {
|
|
232
|
+
made = new Make(undefined, options);
|
|
233
|
+
} catch {
|
|
234
|
+
made = new Make(locale || undefined, kind === 'NumberFormat' ? {
|
|
235
|
+
maximumFractionDigits: 2
|
|
236
|
+
} : {});
|
|
237
|
+
}
|
|
238
|
+
} // A page that formats in many locales does not grow the cache for ever.
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
if (cache.size >= 256) cache.delete(cache.keys().next().value);
|
|
242
|
+
cache.set(key, made);
|
|
243
|
+
return made;
|
|
244
|
+
}
|
|
245
|
+
__webpack_async_result__();
|
|
246
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
247
|
+
|
|
248
|
+
/***/ },
|
|
249
|
+
|
|
72
250
|
/***/ "51250bf01ab0"
|
|
73
251
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
74
252
|
|
|
@@ -3498,21 +3676,25 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3498
3676
|
/* harmony import */ var _js_templates_default__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("9d9caaf4f796");
|
|
3499
3677
|
/* harmony import */ var _helpers_option_badge_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("b30ec5bc0edb");
|
|
3500
3678
|
/* harmony import */ var _field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("e5483002f3ea");
|
|
3501
|
-
/* harmony import */ var
|
|
3502
|
-
/* harmony import */ var
|
|
3503
|
-
/* harmony import */ var
|
|
3504
|
-
/* harmony import */ var
|
|
3505
|
-
/* harmony import */ var
|
|
3506
|
-
/* harmony import */ var
|
|
3507
|
-
/* harmony import */ var
|
|
3508
|
-
|
|
3509
|
-
|
|
3679
|
+
/* harmony import */ var _field_renderers_html_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("01ae054f01b4");
|
|
3680
|
+
/* harmony import */ var _js_format_value_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("2f31b00ad99a");
|
|
3681
|
+
/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("2a080a730149");
|
|
3682
|
+
/* harmony import */ var lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("8137feb490e0");
|
|
3683
|
+
/* harmony import */ var _core_js_page_language__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("43090d1c8307");
|
|
3684
|
+
/* harmony import */ var _helpers_dom__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("926043d18700");
|
|
3685
|
+
/* harmony import */ var _helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("870b5dfddc25");
|
|
3686
|
+
/* harmony import */ var _core_js_position_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__("116963e5e31b");
|
|
3687
|
+
/* harmony import */ var _core_js_preferences_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__("51250bf01ab0");
|
|
3688
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_core_js_smart_base__WEBPACK_IMPORTED_MODULE_0__, _core_js_element_manifest__WEBPACK_IMPORTED_MODULE_1__, _js_templates_default__WEBPACK_IMPORTED_MODULE_7__, _field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__, _js_format_value_js__WEBPACK_IMPORTED_MODULE_11__, lit__WEBPACK_IMPORTED_MODULE_12__, lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__, _core_js_page_language__WEBPACK_IMPORTED_MODULE_14__, _core_js_position_js__WEBPACK_IMPORTED_MODULE_17__]);
|
|
3689
|
+
([_core_js_smart_base__WEBPACK_IMPORTED_MODULE_0__, _core_js_element_manifest__WEBPACK_IMPORTED_MODULE_1__, _js_templates_default__WEBPACK_IMPORTED_MODULE_7__, _field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__, _js_format_value_js__WEBPACK_IMPORTED_MODULE_11__, lit__WEBPACK_IMPORTED_MODULE_12__, lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__, _core_js_page_language__WEBPACK_IMPORTED_MODULE_14__, _core_js_position_js__WEBPACK_IMPORTED_MODULE_17__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
3510
3690
|
/* harmony import */ var _core_js_smart_base__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_core_js_smart_base__WEBPACK_IMPORTED_MODULE_0__);
|
|
3511
3691
|
/* harmony import */ var _core_js_element_manifest__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_core_js_element_manifest__WEBPACK_IMPORTED_MODULE_1__);
|
|
3512
|
-
/* harmony import */ var
|
|
3513
|
-
/* harmony import */ var
|
|
3514
|
-
/* harmony import */ var
|
|
3515
|
-
/* harmony import */ var
|
|
3692
|
+
/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lit__WEBPACK_IMPORTED_MODULE_12__);
|
|
3693
|
+
/* harmony import */ var lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__);
|
|
3694
|
+
/* harmony import */ var _core_js_page_language__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_core_js_page_language__WEBPACK_IMPORTED_MODULE_14__);
|
|
3695
|
+
/* harmony import */ var _core_js_position_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_core_js_position_js__WEBPACK_IMPORTED_MODULE_17__);
|
|
3696
|
+
|
|
3697
|
+
|
|
3516
3698
|
|
|
3517
3699
|
|
|
3518
3700
|
|
|
@@ -3541,7 +3723,7 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_cor
|
|
|
3541
3723
|
// SF.Preferences, the Framework's one store of view preferences (core
|
|
3542
3724
|
// publishes it; this bundle's copy is the fallback).
|
|
3543
3725
|
|
|
3544
|
-
const preferences = () => globalThis.SF?.Preferences ||
|
|
3726
|
+
const preferences = () => globalThis.SF?.Preferences || _core_js_preferences_js__WEBPACK_IMPORTED_MODULE_18__["default"];
|
|
3545
3727
|
|
|
3546
3728
|
const tablePreferenceKey = key => `sf-table/${String(key).replace(/[^\w.:-]+/gu, "-")}`; // What a cell may draw as markup rather than as an element of its own.
|
|
3547
3729
|
|
|
@@ -3578,7 +3760,7 @@ const TABLE_TEXT = {
|
|
|
3578
3760
|
};
|
|
3579
3761
|
const SYSTEM_COLUMN_KEYS = new Set(["select", "settings", "actions"]);
|
|
3580
3762
|
|
|
3581
|
-
const positioning = () => globalThis.SF?.Position || (
|
|
3763
|
+
const positioning = () => globalThis.SF?.Position || (_core_js_position_js__WEBPACK_IMPORTED_MODULE_17___default()); // Published Composition ports (simai.composition.port-manifest.v1, sf-view-table@1.0.0).
|
|
3582
3764
|
|
|
3583
3765
|
|
|
3584
3766
|
const SF_TABLE_PORTS = Object.freeze({
|
|
@@ -4521,10 +4703,10 @@ class SfTable extends TableElement {
|
|
|
4521
4703
|
}
|
|
4522
4704
|
|
|
4523
4705
|
renderBulkActions() {
|
|
4524
|
-
if (!this.state.bulkActions?.length) return
|
|
4706
|
+
if (!this.state.bulkActions?.length) return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
|
|
4525
4707
|
const selected = this.getSelectedRecordIds();
|
|
4526
|
-
return (0,
|
|
4527
|
-
${this.state.bulkActions.map(action => (0,
|
|
4708
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<div class="flex flex-wrap gap-1/3">
|
|
4709
|
+
${this.state.bulkActions.map(action => (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<sf-button
|
|
4528
4710
|
text=${action.name} ?disabled=${selected.length === 0}
|
|
4529
4711
|
@click=${() => {
|
|
4530
4712
|
const ids = this.getSelectedRecordIds();
|
|
@@ -4661,7 +4843,7 @@ class SfTable extends TableElement {
|
|
|
4661
4843
|
if (action) this.requestToolbarAction(action.id);
|
|
4662
4844
|
};
|
|
4663
4845
|
|
|
4664
|
-
return (0,
|
|
4846
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
4665
4847
|
<sf-menu-context
|
|
4666
4848
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
4667
4849
|
:key=${x + y}
|
|
@@ -4720,7 +4902,7 @@ class SfTable extends TableElement {
|
|
|
4720
4902
|
|
|
4721
4903
|
const sortable = this.getColumns().filter(column => column?.sortable && !column.system && !["select", "settings", "actions"].includes(column.key));
|
|
4722
4904
|
const items = [option(this.text('sortNone'), null, null), ...sortable.flatMap(column => [option(`${column.label ?? column.key}, ${this.text('sortAscending')}`, column.key, 'asc'), option(`${column.label ?? column.key}, ${this.text('sortDescending')}`, column.key, 'desc')])];
|
|
4723
|
-
return (0,
|
|
4905
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
4724
4906
|
<sf-menu-context
|
|
4725
4907
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
4726
4908
|
:key=${x + y}
|
|
@@ -4757,7 +4939,7 @@ class SfTable extends TableElement {
|
|
|
4757
4939
|
if (item) this.requestCreateIntent(item.id);
|
|
4758
4940
|
};
|
|
4759
4941
|
|
|
4760
|
-
return (0,
|
|
4942
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
4761
4943
|
<sf-menu-context
|
|
4762
4944
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
4763
4945
|
:key=${x + y}
|
|
@@ -5340,7 +5522,7 @@ class SfTable extends TableElement {
|
|
|
5340
5522
|
if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean") return null;
|
|
5341
5523
|
|
|
5342
5524
|
if (LONG_TEXT_CELL_TYPES.has(column.propertyType ?? column.property_type ?? column.type) && typeof value !== "boolean") {
|
|
5343
|
-
const text =
|
|
5525
|
+
const text = this.cellText(column, value);
|
|
5344
5526
|
return {
|
|
5345
5527
|
kind: "text",
|
|
5346
5528
|
className: "sf-table-cell-clip",
|
|
@@ -6747,6 +6929,19 @@ class SfTable extends TableElement {
|
|
|
6747
6929
|
columnTakesFloor(column) {
|
|
6748
6930
|
if (!column?.key || SYSTEM_COLUMN_KEYS.has(column.key)) return false;
|
|
6749
6931
|
return !(column.colWidth ?? column.width ?? column.size ?? column.min_width ?? column.minWidth);
|
|
6932
|
+
} // The settings column carries two things: the gear in its head, which
|
|
6933
|
+
// opens the column settings (settings-menu), and the ≡ in each row, which
|
|
6934
|
+
// opens the row's menu of actions. With neither -- no column settings, no
|
|
6935
|
+
// row actions to list, no rows to put in order -- it is an empty column
|
|
6936
|
+
// of buttons that open nothing, and it is not drawn (Larena, the sites
|
|
6937
|
+
// list, 2026-11-05: a «≡» column beside every row of a list without
|
|
6938
|
+
// actions).
|
|
6939
|
+
|
|
6940
|
+
|
|
6941
|
+
settingsColumnHasUse(props = this.getPropsContext()) {
|
|
6942
|
+
if (props.settingsMenu !== false) return true;
|
|
6943
|
+
if (props.rowReorder === true) return true;
|
|
6944
|
+
return (this.ACTIONS_SETTINGS_ROW ?? []).length > 0;
|
|
6750
6945
|
}
|
|
6751
6946
|
|
|
6752
6947
|
getSystemColumns() {
|
|
@@ -6757,7 +6952,7 @@ class SfTable extends TableElement {
|
|
|
6757
6952
|
columns.push(this.getSelectColumn());
|
|
6758
6953
|
}
|
|
6759
6954
|
|
|
6760
|
-
if (props.settings) {
|
|
6955
|
+
if (props.settings && this.settingsColumnHasUse(props)) {
|
|
6761
6956
|
columns.push(this.TABLE_SETTINGS_COLUMN);
|
|
6762
6957
|
}
|
|
6763
6958
|
|
|
@@ -6877,7 +7072,7 @@ class SfTable extends TableElement {
|
|
|
6877
7072
|
position
|
|
6878
7073
|
} = data;
|
|
6879
7074
|
const template = this.getSelectedFilterTemplate();
|
|
6880
|
-
return (0,
|
|
7075
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
6881
7076
|
<sf-menu-context
|
|
6882
7077
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
6883
7078
|
:key=${x + y + this._renderToken}
|
|
@@ -6897,7 +7092,7 @@ class SfTable extends TableElement {
|
|
|
6897
7092
|
<div class="flex flex-col flex-1 gap-2" slot="content">
|
|
6898
7093
|
<div class="sf-table-context-top"><span class="sf-text-2 bold">Сохранение шаблона</span></div>
|
|
6899
7094
|
<div class="sf-table-context-main">
|
|
6900
|
-
<form ${(0,
|
|
7095
|
+
<form ${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(this.refs.templateForm)} id="save_template" class="flex flex-col gap-1/2">
|
|
6901
7096
|
<sf-input
|
|
6902
7097
|
size=${this.size}
|
|
6903
7098
|
appearance="filled"
|
|
@@ -7010,7 +7205,7 @@ class SfTable extends TableElement {
|
|
|
7010
7205
|
}
|
|
7011
7206
|
}
|
|
7012
7207
|
|
|
7013
|
-
return (0,
|
|
7208
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7014
7209
|
<sf-menu-context
|
|
7015
7210
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
7016
7211
|
:key=${x + y}
|
|
@@ -7442,14 +7637,14 @@ class SfTable extends TableElement {
|
|
|
7442
7637
|
return this.getColumnItems().filter(col => inGroup(col) && (!pin || col.system || this.matchesColumnQuery(col.label, query))).map(col => {
|
|
7443
7638
|
const itemRef = this.getItemRef(`${refPrefix}:${col.key}`) || false;
|
|
7444
7639
|
const isChecked = typeof checked === "function" ? Boolean(checked(col)) : Boolean(checked);
|
|
7445
|
-
const box = (0,
|
|
7640
|
+
const box = (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7446
7641
|
<sf-checkbox
|
|
7447
7642
|
size=${this.size}
|
|
7448
7643
|
label=${col.label}
|
|
7449
7644
|
position="end"
|
|
7450
7645
|
root-class="content-main-between"
|
|
7451
7646
|
?checked=${isChecked}
|
|
7452
|
-
${(0,
|
|
7647
|
+
${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(itemRef)}
|
|
7453
7648
|
@change=${event => onChange?.(col, event)}
|
|
7454
7649
|
></sf-checkbox>
|
|
7455
7650
|
`;
|
|
@@ -7462,12 +7657,12 @@ class SfTable extends TableElement {
|
|
|
7462
7657
|
|
|
7463
7658
|
|
|
7464
7659
|
const pinned = this.isColumnPinned(col);
|
|
7465
|
-
return (0,
|
|
7660
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7466
7661
|
<div class="sf-table-column-option flex items-cross-center gap-1/3"
|
|
7467
7662
|
data-column-key=${col.key}
|
|
7468
7663
|
data-sf-sortable-item=${col.key}
|
|
7469
7664
|
data-pinned=${pinned ? "1" : "0"}>
|
|
7470
|
-
${handle ? (0,
|
|
7665
|
+
${handle ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<sf-button-icon
|
|
7471
7666
|
size="1/2"
|
|
7472
7667
|
appearance="link"
|
|
7473
7668
|
scheme="on-surface"
|
|
@@ -7476,7 +7671,7 @@ class SfTable extends TableElement {
|
|
|
7476
7671
|
data-sf-sortable-handle
|
|
7477
7672
|
root-class="sf-table-column-move cursor-grab"
|
|
7478
7673
|
aria-label=${`${this.text("columnMoveLabel", "column-move-label")}: ${col.label || col.key}`}
|
|
7479
|
-
></sf-button-icon>` :
|
|
7674
|
+
></sf-button-icon>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
7480
7675
|
<span class="flex-1 min-w-0">${box}</span>
|
|
7481
7676
|
<!-- A pinned column's pin is filled and a loose one's is
|
|
7482
7677
|
outlined, the way a pinned filter template already
|
|
@@ -7572,14 +7767,14 @@ class SfTable extends TableElement {
|
|
|
7572
7767
|
label,
|
|
7573
7768
|
onIntent
|
|
7574
7769
|
}) {
|
|
7575
|
-
const list = (group, rows) => rows.length ? (0,
|
|
7770
|
+
const list = (group, rows) => rows.length ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<sf-sortable
|
|
7576
7771
|
group=${`${name}-${group}`}
|
|
7577
7772
|
data-group=${group}
|
|
7578
7773
|
label=${label}
|
|
7579
7774
|
class="flex flex-col gap-1/3"
|
|
7580
|
-
@sf-sortable-intent=${onIntent}>${rows}</sf-sortable>` :
|
|
7775
|
+
@sf-sortable-intent=${onIntent}>${rows}</sf-sortable>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
|
|
7581
7776
|
|
|
7582
|
-
return (0,
|
|
7777
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`${list('pinned', pinnedRows)}${list('loose', looseRows)}`;
|
|
7583
7778
|
}
|
|
7584
7779
|
|
|
7585
7780
|
getTableColsData(group = '') {
|
|
@@ -7908,7 +8103,31 @@ class SfTable extends TableElement {
|
|
|
7908
8103
|
// «2026-09-25T07:12:00+03:00» in a row, and a consumer had no way to
|
|
7909
8104
|
// change the second. The set still refuses to guess a format; this only
|
|
7910
8105
|
// lets the host say one (admin polygon, 2026-10-10).
|
|
7911
|
-
|
|
8106
|
+
const host = this.cellHost ?? null;
|
|
8107
|
+
const type = column.propertyType ?? column.property_type ?? column.type; // Several files are one value each, as several choices are tags: the
|
|
8108
|
+
// renderer set reads a file and not a list of them, so a column of
|
|
8109
|
+
// documents drew nothing at all (the Fields page, 2026-11-05). Each is
|
|
8110
|
+
// its name with its kind's icon, and what does not fit folds into «+N».
|
|
8111
|
+
|
|
8112
|
+
if (type === "file" && Array.isArray(value)) {
|
|
8113
|
+
const files = value.map(file => (0,_field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__.renderCellField)(column, file, host)).filter(item => item !== null && item !== undefined);
|
|
8114
|
+
return files.length ? files : null;
|
|
8115
|
+
}
|
|
8116
|
+
|
|
8117
|
+
const rendered = (0,_field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__.renderCellField)(column, value, host);
|
|
8118
|
+
if (rendered !== null && rendered !== undefined) return rendered; // A date the host did not format reads in the page's language rather
|
|
8119
|
+
// than as stored (format-date); the host's formatFieldValue still wins.
|
|
8120
|
+
|
|
8121
|
+
if (_js_format_value_js__WEBPACK_IMPORTED_MODULE_11__.DATE_TYPES.has(type)) return (0,_js_format_value_js__WEBPACK_IMPORTED_MODULE_11__.formatDateValue)(type, value, this) || null;
|
|
8122
|
+
return null;
|
|
8123
|
+
} // The text a long-text cell shows on its one line: formatted text is its
|
|
8124
|
+
// text, not its markup -- «<p>Этапы: <strong>дизайн</strong>…» stood in
|
|
8125
|
+
// the row as written (the Fields page, 2026-11-05).
|
|
8126
|
+
|
|
8127
|
+
|
|
8128
|
+
cellText(column = {}, value) {
|
|
8129
|
+
const type = column.propertyType ?? column.property_type ?? column.type;
|
|
8130
|
+
return type === "html" ? (0,_field_renderers_html_js__WEBPACK_IMPORTED_MODULE_10__.htmlText)(value) : String(value);
|
|
7912
8131
|
} // The filter controls were the Framework's only type-aware rendering, and
|
|
7913
8132
|
// Larena's request asks for one renderer set shared by the record view and
|
|
7914
8133
|
// the table's cells. Keeping these here as well would have made two maps
|
|
@@ -7939,20 +8158,20 @@ class SfTable extends TableElement {
|
|
|
7939
8158
|
const value = option.value ?? option.id ?? option.key ?? option.label ?? option.title;
|
|
7940
8159
|
const label = option.label || option.title || String(value || '');
|
|
7941
8160
|
const badge = field.filter?.optionRenderer === 'badge' ? (0,_helpers_option_badge_js__WEBPACK_IMPORTED_MODULE_8__.optionBadgeProps)(option) : null;
|
|
7942
|
-
return (0,
|
|
8161
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7943
8162
|
<div
|
|
7944
|
-
${(0,
|
|
8163
|
+
${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(this.getItemRef(option.label))}
|
|
7945
8164
|
class="flex items-cross-center gap-1/2 content-main-between">
|
|
7946
8165
|
<div class="flex items-cross-center gap-1/2 min-w-0">
|
|
7947
|
-
${badge ? (0,
|
|
8166
|
+
${badge ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7948
8167
|
<sf-badge
|
|
7949
8168
|
appearance="tonal"
|
|
7950
8169
|
scheme=${badge.scheme}
|
|
7951
|
-
root-style=${badge.rootStyle ||
|
|
7952
|
-
icon=${option.icon ||
|
|
8170
|
+
root-style=${badge.rootStyle || lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8171
|
+
icon=${option.icon || lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
7953
8172
|
text=${label}
|
|
7954
8173
|
></sf-badge>
|
|
7955
|
-
` : (0,
|
|
8174
|
+
` : (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7956
8175
|
${this.renderFilterOptionVisual(field, option)}
|
|
7957
8176
|
<span class="sf-text-1 truncate">${label}</span>
|
|
7958
8177
|
`}
|
|
@@ -7984,7 +8203,7 @@ class SfTable extends TableElement {
|
|
|
7984
8203
|
renderFilterOptionVisual(field = {}, option = {}) {
|
|
7985
8204
|
// A colour from the field's palette is shown as its swatch.
|
|
7986
8205
|
if (field.filter?.optionRenderer === 'swatch' && option.color) {
|
|
7987
|
-
return (0,
|
|
8206
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<span class="sf-table-filter-swatch" aria-hidden="true" style=${`background-color: ${option.color}`}></span>`;
|
|
7988
8207
|
}
|
|
7989
8208
|
|
|
7990
8209
|
if (field.filter?.optionRenderer !== 'avatar-checkbox') {
|
|
@@ -7992,7 +8211,7 @@ class SfTable extends TableElement {
|
|
|
7992
8211
|
}
|
|
7993
8212
|
|
|
7994
8213
|
if (option.imageUrl) {
|
|
7995
|
-
return (0,
|
|
8214
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
7996
8215
|
<sf-avatar
|
|
7997
8216
|
size=${this.size}
|
|
7998
8217
|
image-url="${option.imageUrl}"
|
|
@@ -8001,7 +8220,7 @@ class SfTable extends TableElement {
|
|
|
8001
8220
|
`;
|
|
8002
8221
|
}
|
|
8003
8222
|
|
|
8004
|
-
return (0,
|
|
8223
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8005
8224
|
<sf-avatar
|
|
8006
8225
|
size=${this.size}
|
|
8007
8226
|
heading="${option.avatarText || option.title || option.label || ''}"
|
|
@@ -8072,9 +8291,9 @@ class SfTable extends TableElement {
|
|
|
8072
8291
|
};
|
|
8073
8292
|
component = this.renderSmartElement(data.type, data.props);
|
|
8074
8293
|
} else {
|
|
8075
|
-
component = (0,
|
|
8294
|
+
component = (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8076
8295
|
<div class="flex items-cross-center gap-1/4 flex-1">
|
|
8077
|
-
<sf-input size=${this.size} ${(0,
|
|
8296
|
+
<sf-input size=${this.size} ${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(this.refs.renameInput)} root-class="flex-1"
|
|
8078
8297
|
default-value="${col.label}"></sf-input>
|
|
8079
8298
|
<div class="flex items-cross-center flex-none">
|
|
8080
8299
|
<sf-button-icon size=${this.size} segment="start" appearance="outline" scheme="on-surface" @click="${() => {
|
|
@@ -8100,16 +8319,16 @@ class SfTable extends TableElement {
|
|
|
8100
8319
|
</div>`;
|
|
8101
8320
|
}
|
|
8102
8321
|
|
|
8103
|
-
return (0,
|
|
8322
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8104
8323
|
<div
|
|
8105
8324
|
:key=${col.key}
|
|
8106
|
-
${(0,
|
|
8325
|
+
${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(this.getItemRef(col.label))}
|
|
8107
8326
|
class="sf-settings-context-menu-item flex items-cross-center flex-1 gap-1/3 ${col.deleted ? 'opacity-3' : ''}"
|
|
8108
8327
|
data-filter-template-key="${col.key}"
|
|
8109
8328
|
data-sf-sortable-item=${col.key}
|
|
8110
8329
|
data-pinned="${col.pinned ? "1" : "0"}"
|
|
8111
8330
|
>
|
|
8112
|
-
${!isActiveEdit ? (0,
|
|
8331
|
+
${!isActiveEdit ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8113
8332
|
<sf-button-icon size=${this.size}
|
|
8114
8333
|
id="${this.getInstanceId()}--template-move--${col.key}"
|
|
8115
8334
|
appearance="link"
|
|
@@ -8119,9 +8338,9 @@ class SfTable extends TableElement {
|
|
|
8119
8338
|
aria-label=${`${this.text("templateMoveLabel")}: ${col.label}`}
|
|
8120
8339
|
icon="drag_indicator"
|
|
8121
8340
|
root-class="cursor-move"
|
|
8122
|
-
></sf-button-icon>` :
|
|
8341
|
+
></sf-button-icon>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8123
8342
|
${component}
|
|
8124
|
-
${!isActiveEdit ? (0,
|
|
8343
|
+
${!isActiveEdit ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8125
8344
|
<div class="flex items-cross-center m-inline-start-auto gap-1/3">
|
|
8126
8345
|
<sf-button-icon
|
|
8127
8346
|
appearance="link"
|
|
@@ -8152,14 +8371,14 @@ class SfTable extends TableElement {
|
|
|
8152
8371
|
});
|
|
8153
8372
|
}}
|
|
8154
8373
|
></sf-button-icon>
|
|
8155
|
-
</div>` :
|
|
8374
|
+
</div>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8156
8375
|
</div>`;
|
|
8157
8376
|
});
|
|
8158
8377
|
const menuColumnCount = columnCount ?? columnsCount ?? this.contextMenuColumns ?? 1;
|
|
8159
8378
|
const colsData = this.getFilterTagColsData();
|
|
8160
8379
|
const columnGroups = this.splitItemsByColumns(colsData, menuColumnCount);
|
|
8161
8380
|
let contextItems = `${this.text('templatesTabText')}|${this.text('fieldsTabText')}`;
|
|
8162
|
-
return (0,
|
|
8381
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8163
8382
|
<sf-menu-context
|
|
8164
8383
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
8165
8384
|
:key=${x + y + this._renderToken}
|
|
@@ -8195,7 +8414,7 @@ class SfTable extends TableElement {
|
|
|
8195
8414
|
bottom, and the window keeps its width -- it grew under
|
|
8196
8415
|
the pointer when «Применить (2)» got longer. -->
|
|
8197
8416
|
<div class="sf-table-context-body flex flex-col flex-1" slot="content">
|
|
8198
|
-
${this._filterTab !== 'fields' ? (0,
|
|
8417
|
+
${this._filterTab !== 'fields' ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8199
8418
|
<div
|
|
8200
8419
|
class="sf-context-menu-columns flex flex-col gap-1/4 overflow-auto flex-1"
|
|
8201
8420
|
data-filter-template-list
|
|
@@ -8205,9 +8424,9 @@ class SfTable extends TableElement {
|
|
|
8205
8424
|
label: this.text('templatesTabText'),
|
|
8206
8425
|
onIntent: event => this.onFilterTemplateIntent(event)
|
|
8207
8426
|
})}
|
|
8208
|
-
</div>` : (0,
|
|
8427
|
+
</div>` : (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8209
8428
|
<div class="sf-context-menu-columns flex flex-1 gap-1 overflow-auto">
|
|
8210
|
-
${columnGroups.map(group => (0,
|
|
8429
|
+
${columnGroups.map(group => (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8211
8430
|
<div class="flex flex-col gap-1 flex-1">
|
|
8212
8431
|
${group}
|
|
8213
8432
|
</div>
|
|
@@ -8288,7 +8507,7 @@ class SfTable extends TableElement {
|
|
|
8288
8507
|
control: this.getCurrentFilterTags()?.[fieldKey]?.control || 'text'
|
|
8289
8508
|
}
|
|
8290
8509
|
};
|
|
8291
|
-
return (0,
|
|
8510
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8292
8511
|
<sf-menu-context
|
|
8293
8512
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
8294
8513
|
:key=${x + y + this._renderToken}
|
|
@@ -8407,7 +8626,7 @@ class SfTable extends TableElement {
|
|
|
8407
8626
|
// bulk actions in the band under the table, so a third place to find
|
|
8408
8627
|
// them taught nobody anything.
|
|
8409
8628
|
|
|
8410
|
-
return (0,
|
|
8629
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8411
8630
|
<sf-menu-context
|
|
8412
8631
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
8413
8632
|
:key=${x + y + this._renderToken}
|
|
@@ -8443,7 +8662,7 @@ class SfTable extends TableElement {
|
|
|
8443
8662
|
stays while the rows scroll, and its width is its own.
|
|
8444
8663
|
Esc, a click outside and the gear again close it too. -->
|
|
8445
8664
|
<div class="sf-table-context-body flex flex-col flex-1" slot="content">
|
|
8446
|
-
${this._settingsTab === 'view' ? this.renderTableViewSettings() : (0,
|
|
8665
|
+
${this._settingsTab === 'view' ? this.renderTableViewSettings() : (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8447
8666
|
<!-- The search: a site can have hundreds of fields, and
|
|
8448
8667
|
scrolling for one is not an answer. -->
|
|
8449
8668
|
<label class="sf-table-column-search flex flex-col">
|
|
@@ -8464,7 +8683,7 @@ class SfTable extends TableElement {
|
|
|
8464
8683
|
name: 'table-columns',
|
|
8465
8684
|
label: this.text('settingsColumnLabel'),
|
|
8466
8685
|
onIntent: event => this.onColumnSettingsIntent(event)
|
|
8467
|
-
}) : (0,
|
|
8686
|
+
}) : (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<div class="sf-table-column-empty p-1 color-on-surface-variant">
|
|
8468
8687
|
${this.text("columnSearchEmptyText", "column-search-empty-text")}
|
|
8469
8688
|
</div>`}
|
|
8470
8689
|
</div>
|
|
@@ -8491,7 +8710,7 @@ class SfTable extends TableElement {
|
|
|
8491
8710
|
const size = this.size === "1/2" ? "1/2" : "1";
|
|
8492
8711
|
const everywhere = this._viewEverywhere === true;
|
|
8493
8712
|
|
|
8494
|
-
const row = (label, control) => (0,
|
|
8713
|
+
const row = (label, control) => (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<div class="sf-table-settings-row">${control}<span>${label}</span></div>`;
|
|
8495
8714
|
|
|
8496
8715
|
const density = ["compact", "normal", "spacious"];
|
|
8497
8716
|
const label = {
|
|
@@ -8500,7 +8719,7 @@ class SfTable extends TableElement {
|
|
|
8500
8719
|
spacious: "viewDensitySpacious"
|
|
8501
8720
|
};
|
|
8502
8721
|
|
|
8503
|
-
const check = (field, text) => (0,
|
|
8722
|
+
const check = (field, text) => (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<label class="sf-table-settings-row" data-view-option=${field}>
|
|
8504
8723
|
<sf-checkbox size=${size} ?checked=${view[field] === true}
|
|
8505
8724
|
@change=${event => this.setTableView({
|
|
8506
8725
|
[field]: Boolean(event.target?.checked ?? event.detail?.checked)
|
|
@@ -8509,11 +8728,11 @@ class SfTable extends TableElement {
|
|
|
8509
8728
|
})}></sf-checkbox>
|
|
8510
8729
|
<span>${this.text(text)}</span></label>`;
|
|
8511
8730
|
|
|
8512
|
-
return (0,
|
|
8731
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8513
8732
|
<div class="sf-table-view-settings flex flex-col flex-1 gap-1/3" data-table-view-settings>
|
|
8514
8733
|
<div class="sf-table-settings-heading">${this.text('viewDensity')}</div>
|
|
8515
8734
|
<div role="radiogroup" aria-label=${this.text('viewDensity')} class="flex flex-col">
|
|
8516
|
-
${density.map(value => (0,
|
|
8735
|
+
${density.map(value => (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<label class="sf-table-settings-row" data-view-density=${value}>
|
|
8517
8736
|
<sf-radio size=${size} name=${`${this.getInstanceId()}-density`} value=${value} ?checked=${view.density === value}
|
|
8518
8737
|
@change=${() => this.setTableView({
|
|
8519
8738
|
density: value
|
|
@@ -8525,13 +8744,13 @@ class SfTable extends TableElement {
|
|
|
8525
8744
|
${check("stripes", "viewStripes")}
|
|
8526
8745
|
${check("lines", "viewLines")}
|
|
8527
8746
|
${check("singleLine", "viewSingleLine")}
|
|
8528
|
-
${this.getAttribute("vertical-scroll") === "page" ? check("stickyHead", "viewStickyHead") :
|
|
8529
|
-
${this.viewPreferenceKey ? (0,
|
|
8530
|
-
${row(this.text('viewEverywhere'), (0,
|
|
8747
|
+
${this.getAttribute("vertical-scroll") === "page" ? check("stickyHead", "viewStickyHead") : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8748
|
+
${this.viewPreferenceKey ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<div class="sf-table-settings-separator" role="separator"></div>
|
|
8749
|
+
${row(this.text('viewEverywhere'), (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`<sf-checkbox size=${size} data-view-everywhere ?checked=${everywhere}
|
|
8531
8750
|
@change=${event => {
|
|
8532
8751
|
this._viewEverywhere = Boolean(event.target?.checked ?? event.detail?.checked);
|
|
8533
8752
|
this.requestComponentUpdate('view-everywhere');
|
|
8534
|
-
}}></sf-checkbox>`)}` :
|
|
8753
|
+
}}></sf-checkbox>`)}` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8535
8754
|
</div>`;
|
|
8536
8755
|
}
|
|
8537
8756
|
|
|
@@ -8580,7 +8799,7 @@ class SfTable extends TableElement {
|
|
|
8580
8799
|
const temp = this.getFilterTemplateByKey(template.key, this.tempSettings?.filter || null);
|
|
8581
8800
|
let isDeleted = (temp || template).deleted;
|
|
8582
8801
|
const isDefaultTemplate = (temp || template).default === true;
|
|
8583
|
-
return (0,
|
|
8802
|
+
return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8584
8803
|
<sf-menu-context
|
|
8585
8804
|
size=${this.size === "1/2" ? "1/2" : "1"}
|
|
8586
8805
|
:key=${`${template.key || ''}-${x}-${y}`}
|
|
@@ -8648,7 +8867,7 @@ class SfTable extends TableElement {
|
|
|
8648
8867
|
return this.renderTemplateActionsContextSubmenu(data);
|
|
8649
8868
|
|
|
8650
8869
|
default:
|
|
8651
|
-
return
|
|
8870
|
+
return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
|
|
8652
8871
|
}
|
|
8653
8872
|
}
|
|
8654
8873
|
|
|
@@ -8661,26 +8880,26 @@ class SfTable extends TableElement {
|
|
|
8661
8880
|
}
|
|
8662
8881
|
|
|
8663
8882
|
if (!data?.open) {
|
|
8664
|
-
(0,
|
|
8883
|
+
(0,lit__WEBPACK_IMPORTED_MODULE_12__.render)(null, this.getPortalContainer());
|
|
8665
8884
|
this.hidePortal();
|
|
8666
|
-
return
|
|
8885
|
+
return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
|
|
8667
8886
|
}
|
|
8668
8887
|
|
|
8669
|
-
(0,
|
|
8888
|
+
(0,lit__WEBPACK_IMPORTED_MODULE_12__.render)((0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8670
8889
|
<div
|
|
8671
8890
|
class="sf-table-context-layer"
|
|
8672
|
-
data-sf-sheet=${this.isList && ["filter-settings", "tag-settings"].includes(data.menu) ? "" :
|
|
8673
|
-
${(0,
|
|
8891
|
+
data-sf-sheet=${this.isList && ["filter-settings", "tag-settings"].includes(data.menu) ? "" : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8892
|
+
${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_13__.ref)(this.refs.contextMenu)}
|
|
8674
8893
|
@click=${event => this.handleContextLayerClick(event)}
|
|
8675
8894
|
>
|
|
8676
8895
|
${this.renderMainContextMenu(data)}
|
|
8677
|
-
${data.submenu?.open ? this.renderContextSubmenu(data.submenu) :
|
|
8678
|
-
${this.isList && ["filter-settings", "tag-settings"].includes(data.menu) ? (0,
|
|
8896
|
+
${data.submenu?.open ? this.renderContextSubmenu(data.submenu) : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8897
|
+
${this.isList && ["filter-settings", "tag-settings"].includes(data.menu) ? (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
|
|
8679
8898
|
<div class="sf-table-sheet-close">
|
|
8680
8899
|
<sf-button-icon size=${this.size} appearance="link" scheme="on-surface"
|
|
8681
8900
|
icon="close" aria-label=${this.text('closeText')}
|
|
8682
8901
|
@click=${() => this.closeContextMenu()}></sf-button-icon>
|
|
8683
|
-
</div>` :
|
|
8902
|
+
</div>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
|
|
8684
8903
|
</div>
|
|
8685
8904
|
`, this.getPortalContainer());
|
|
8686
8905
|
this.showPortal();
|
|
@@ -8691,7 +8910,7 @@ class SfTable extends TableElement {
|
|
|
8691
8910
|
|
|
8692
8911
|
this.redrawWhenComponentsUpgrade(this.getPortalContainer());
|
|
8693
8912
|
});
|
|
8694
|
-
return
|
|
8913
|
+
return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
|
|
8695
8914
|
}
|
|
8696
8915
|
|
|
8697
8916
|
getActionItems() {
|
|
@@ -8935,7 +9154,7 @@ class SfTable extends TableElement {
|
|
|
8935
9154
|
start: () => {
|
|
8936
9155
|
state.dragging = true;
|
|
8937
9156
|
this._columnResizeState = state;
|
|
8938
|
-
(0,
|
|
9157
|
+
(0,_helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_16__.setLoaderDragState)(true);
|
|
8939
9158
|
document.documentElement.classList.add('sf-table-column-resizing');
|
|
8940
9159
|
},
|
|
8941
9160
|
apply: width => {
|
|
@@ -8955,7 +9174,7 @@ class SfTable extends TableElement {
|
|
|
8955
9174
|
},
|
|
8956
9175
|
end: () => {
|
|
8957
9176
|
document.documentElement.classList.remove('sf-table-column-resizing');
|
|
8958
|
-
(0,
|
|
9177
|
+
(0,_helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_16__.setLoaderDragState)(false);
|
|
8959
9178
|
this.suppressNextHeaderClick(); // The drag is over before the line goes: hidden while the
|
|
8960
9179
|
// state still said «resizing», it stayed on the edge.
|
|
8961
9180
|
|
|
@@ -9970,7 +10189,7 @@ class SfTable extends TableElement {
|
|
|
9970
10189
|
let parent = null;
|
|
9971
10190
|
|
|
9972
10191
|
if (opts.parent) {
|
|
9973
|
-
parent = (0,
|
|
10192
|
+
parent = (0,_helpers_dom__WEBPACK_IMPORTED_MODULE_15__.getParent)(event.target);
|
|
9974
10193
|
pos = parent.getBoundingClientRect();
|
|
9975
10194
|
anchor = parent;
|
|
9976
10195
|
}
|
|
@@ -10836,7 +11055,7 @@ class SfTable extends TableElement {
|
|
|
10836
11055
|
}
|
|
10837
11056
|
});
|
|
10838
11057
|
this.stopContextMenuPositions();
|
|
10839
|
-
(0,
|
|
11058
|
+
(0,lit__WEBPACK_IMPORTED_MODULE_12__.render)(null, this.getPortalContainer());
|
|
10840
11059
|
this.hidePortal();
|
|
10841
11060
|
|
|
10842
11061
|
if (this.refs.contextMenu) {
|
|
@@ -11063,7 +11282,7 @@ class SfTable extends TableElement {
|
|
|
11063
11282
|
this.contextTarget = null;
|
|
11064
11283
|
|
|
11065
11284
|
if (this._portalContainer) {
|
|
11066
|
-
(0,
|
|
11285
|
+
(0,lit__WEBPACK_IMPORTED_MODULE_12__.render)(null, this._portalContainer);
|
|
11067
11286
|
|
|
11068
11287
|
this._portalContainer.remove();
|
|
11069
11288
|
|
|
@@ -11086,7 +11305,7 @@ class SfTable extends TableElement {
|
|
|
11086
11305
|
|
|
11087
11306
|
|
|
11088
11307
|
text(key, attribute) {
|
|
11089
|
-
return attribute && this.getAttribute(attribute) || (0,
|
|
11308
|
+
return attribute && this.getAttribute(attribute) || (0,_core_js_page_language__WEBPACK_IMPORTED_MODULE_14__.pageText)(TABLE_TEXT, key, this);
|
|
11090
11309
|
}
|
|
11091
11310
|
|
|
11092
11311
|
templateContext() {
|
|
@@ -11122,7 +11341,7 @@ class SfTable extends TableElement {
|
|
|
11122
11341
|
return;
|
|
11123
11342
|
}
|
|
11124
11343
|
|
|
11125
|
-
const parentSpace = (0,
|
|
11344
|
+
const parentSpace = (0,_helpers_dom__WEBPACK_IMPORTED_MODULE_15__.setParentSpace)(this.refs.items);
|
|
11126
11345
|
|
|
11127
11346
|
if (!parentSpace) {
|
|
11128
11347
|
return;
|
|
@@ -11275,6 +11494,74 @@ __webpack_async_result__();
|
|
|
11275
11494
|
|
|
11276
11495
|
/***/ },
|
|
11277
11496
|
|
|
11497
|
+
/***/ "2f31b00ad99a"
|
|
11498
|
+
(module, __webpack_exports__, __webpack_require__) {
|
|
11499
|
+
|
|
11500
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
11501
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11502
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11503
|
+
/* harmony export */ DATE_TYPES: () => (/* binding */ DATE_TYPES),
|
|
11504
|
+
/* harmony export */ formatDateValue: () => (/* binding */ formatDateValue)
|
|
11505
|
+
/* harmony export */ });
|
|
11506
|
+
/* harmony import */ var _core_js_format_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e577837dd70a");
|
|
11507
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_core_js_format_date_js__WEBPACK_IMPORTED_MODULE_0__]);
|
|
11508
|
+
var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
11509
|
+
_core_js_format_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_async_dependencies_result__[0];
|
|
11510
|
+
// A date, a date and time or a time of day in the page's language, through
|
|
11511
|
+
// the SIMAI Framework's format-date module, for a value the host did not
|
|
11512
|
+
// format (formatFieldValue). The host's own text still wins; without one, a
|
|
11513
|
+
// date read «2026-11-02» where a person expects «2 нояб. 2026 г.».
|
|
11514
|
+
//
|
|
11515
|
+
// The forms are read as a host stores them: a day «YYYY-MM-DD» is that day on
|
|
11516
|
+
// the reader's calendar (not UTC midnight, which is the day before west of
|
|
11517
|
+
// Greenwich); a date and time with a zone is that moment in the reader's zone
|
|
11518
|
+
// and one without a zone is the wall clock as written; a time «hh:mm[:ss]» is
|
|
11519
|
+
// a time of day. Anything else is left for the caller to print as it came.
|
|
11520
|
+
|
|
11521
|
+
const DAY = /^(\d{4})-(\d{2})-(\d{2})$/u;
|
|
11522
|
+
const TIME = /^(\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?$/u;
|
|
11523
|
+
const DATE_TIME = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?$/u;
|
|
11524
|
+
const DATE_TYPES = new Set(['date', 'datetime', 'time']);
|
|
11525
|
+
|
|
11526
|
+
function readMoment(type, text) {
|
|
11527
|
+
const day = DAY.exec(text);
|
|
11528
|
+
if (day) return new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3]));
|
|
11529
|
+
const time = TIME.exec(text);
|
|
11530
|
+
if (time) return type === 'time' ? new Date(2000, 0, 1, Number(time[1]), Number(time[2]), Number(time[3] ?? 0)) : null;
|
|
11531
|
+
const stamp = DATE_TIME.exec(text);
|
|
11532
|
+
if (!stamp) return null;
|
|
11533
|
+
|
|
11534
|
+
if (stamp[7]) {
|
|
11535
|
+
const moment = new Date(text.replace(' ', 'T'));
|
|
11536
|
+
return Number.isNaN(moment.getTime()) ? null : moment;
|
|
11537
|
+
}
|
|
11538
|
+
|
|
11539
|
+
return new Date(Number(stamp[1]), Number(stamp[2]) - 1, Number(stamp[3]), Number(stamp[4]), Number(stamp[5]), Number(stamp[6] ?? 0));
|
|
11540
|
+
} // The text for a value of a date type, or '' when it is not one this reads.
|
|
11541
|
+
|
|
11542
|
+
|
|
11543
|
+
function formatDateValue(type, value, node) {
|
|
11544
|
+
if (!DATE_TYPES.has(type) || typeof value !== 'string' || !value.trim()) return '';
|
|
11545
|
+
const text = value.trim();
|
|
11546
|
+
const moment = readMoment(type, text);
|
|
11547
|
+
if (!moment) return '';
|
|
11548
|
+
const hasTime = type !== 'date' && !DAY.test(text);
|
|
11549
|
+
if (type === 'time') return (0,_core_js_format_date_js__WEBPACK_IMPORTED_MODULE_0__.formatDate)(moment, {
|
|
11550
|
+
date: null,
|
|
11551
|
+
time: 'short',
|
|
11552
|
+
node
|
|
11553
|
+
});
|
|
11554
|
+
return (0,_core_js_format_date_js__WEBPACK_IMPORTED_MODULE_0__.formatDate)(moment, {
|
|
11555
|
+
date: 'medium',
|
|
11556
|
+
time: hasTime ? 'short' : null,
|
|
11557
|
+
node
|
|
11558
|
+
});
|
|
11559
|
+
}
|
|
11560
|
+
__webpack_async_result__();
|
|
11561
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
11562
|
+
|
|
11563
|
+
/***/ },
|
|
11564
|
+
|
|
11278
11565
|
/***/ "17828be41e75"
|
|
11279
11566
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
11280
11567
|
|
|
@@ -12472,7 +12759,7 @@ function renderTableTemplate(context) {
|
|
|
12472
12759
|
|
|
12473
12760
|
|
|
12474
12761
|
if (LONG_TEXT_TYPES.has(column.propertyType ?? column.property_type ?? column.type) && (typeof value === "string" || typeof value === "number")) {
|
|
12475
|
-
const text = String(value);
|
|
12762
|
+
const text = context.component?.cellText?.(column, value) ?? String(value);
|
|
12476
12763
|
return (0,lit__WEBPACK_IMPORTED_MODULE_0__.html)`<span class="sf-table-cell-clip" title=${text}>${text}</span>`;
|
|
12477
12764
|
} // The renderer set is asked before the shapes below, because a typed
|
|
12478
12765
|
// cell's value is often an object -- a user or a related record arrives
|
|
@@ -13686,7 +13973,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$comment":"Dated aliases of sf-view-
|
|
|
13686
13973
|
/***/ "c1f17ed5a348"
|
|
13687
13974
|
(module) {
|
|
13688
13975
|
|
|
13689
|
-
module.exports = /*#__PURE__*/JSON.parse('{"id":"smart.view-table","tag":"sf-view-table","version":"1.
|
|
13976
|
+
module.exports = /*#__PURE__*/JSON.parse('{"id":"smart.view-table","tag":"sf-view-table","version":"1.15.0","kind":"leaf","settings":{"selectable":{"type":"boolean","default":true},"settings":{"type":"boolean","default":true},"actions":{"type":"boolean","default":true},"row-actions":{"type":"boolean","default":true},"creatable":{"type":"boolean","default":true},"filter-templates":{"type":"boolean","default":true},"settings-menu":{"type":"boolean","default":true},"pagin":{"type":"boolean","default":false},"filter-text":{"type":"string","default-from":"runtime.filter-text"},"clear-text":{"type":"string","default-from":"runtime.clear-text"},"search-placeholder":{"type":"string","default-from":"runtime.search-placeholder"},"create-text":{"type":"string","default-from":"runtime.create-text"},"pagination-total":{"type":"number","default":10,"integer":true,"min":0},"pagination-page-size":{"type":"number","default":10,"integer":true,"min":1,"max":100},"page-sizes":{"type":"string","default":"10,20,30,40"},"context-menu-columns":{"type":"number","default":1,"integer":true,"min":1,"max":4},"remember-widths":{"type":"boolean","default":false},"table-settings-key":{"type":"string","default":""},"data-state":{"type":"enum","values":["auto","loading","ready","populated","empty","error"],"default":"auto","x-alias":{"populated":"ready"}},"loading-text":{"type":"string","default-from":"runtime.loading-text"},"empty-text":{"type":"string","default-from":"runtime.empty-text"},"empty-description":{"type":"string"},"error-text":{"type":"string","default-from":"runtime.error-text"},"retry-text":{"type":"string","default-from":"runtime.retry-text"},"toolbar":{"type":"boolean","default":true},"pin-column-label":{"type":"string","default-from":"runtime.pin-column-label"},"unpin-column-label":{"type":"string","default-from":"runtime.unpin-column-label"},"column-move-label":{"type":"string","default-from":"runtime.column-move-label"},"column-search-placeholder":{"type":"string","default-from":"runtime.column-search-placeholder"},"column-search-empty-text":{"type":"string","default-from":"runtime.column-search-empty-text"},"vertical-scroll":{"type":"enum","values":["self","page"],"default":"self"},"filter-apply-text":{"type":"string","default-from":"runtime.filter-apply-text"},"layout":{"type":"enum","values":["auto","table","list"],"default":"table"},"list-below":{"type":"number","default":600},"list-fields":{"type":"number","default":3},"size":{"type":"enum","values":["1/2","1"],"default":"1"},"preferences-key":{"type":"string","default":""},"row-actions-visible":{"type":"enum","values":["hover","always"],"default":"hover"},"drag-rows":{"type":"boolean","default":false},"row-reorder":{"type":"boolean","default":false},"inline-edit":{"type":"boolean","default":false},"active-filter-fields":{"type":"list","entries":{"key":"id"}},"bulk-actions":{"type":"list"},"columns":{"type":"list","of":{"key":"string","label":"string"}},"create-items":{"type":"list"},"filter-fields":{"type":"list"},"rows":{"type":"list","entries":{"key":"id","changes":"revision"},"of":{"id":"id","revision":{"type":"string","optional":true}}},"table-data":{"type":"object"},"table-settings":{"type":"object"},"templates":{"type":"list"},"toolbar-actions":{"type":"list"},"sort":{"type":"list","of":{"key":"string","direction":{"type":"enum","values":["asc","desc"]}},"controlled":true},"current":{"type":"string","default":""}},"values":{"selected":{"type":"id","optional":true},"selection":{"type":"list","default":[]}},"events":{"select":{"carries":{"ids":"list"}},"apply":{"carries":{"action":"string","scope":{"type":"enum","values":["entry","selection","filter"]},"ids":"list","revisions":{"type":"object","optional":true}}},"save":{"carries":{"kind":{"type":"enum","values":["columns"]},"reason":"string","column-settings":{"type":"object"},"table-settings-key":{"type":"string"}}},"column-settings-reset":{"carries":{"target":{"type":"enum","values":["personal"]},"table-settings-key":{"type":"string","nullable":true}},"own-verb":true},"create":{"carries":{"item":{"type":"string","nullable":true,"optional":true}}},"filter-change":{"carries":{"template-key":{"type":"string"},"template-label":{"type":"string"},"values":{"type":"object"},"tags":{"type":"object"}},"own-verb":true},"query":{"carries":{"reason":"string","context":"object","sequence":{"type":"number","integer":true}}},"refresh":{"carries":{}},"search-change":{"carries":{"search":"string"},"own-verb":true},"sort-change":{"carries":{"key":{"type":"string","schema":{"minLength":1}},"direction":{"type":"enum","values":["asc","desc",null],"nullable":true}},"own-verb":true},"template-delete":{"carries":{"key":{"type":"string","schema":{"minLength":1}}},"own-verb":true},"template-save":{"carries":{},"own-verb":true},"template-select":{"carries":{"key":{"type":"string","schema":{"minLength":1}}},"own-verb":true},"toolbar-action":{"carries":{"action":"string","href":{"type":"string","nullable":true,"optional":true}},"cancelable":true,"own-verb":true},"reference-open":{"carries":{"field":"string","value":"object","href":"string"},"cancelable":true,"own-verb":true},"expand":{"carries":{"id":"id","expanded":{"type":"boolean","optional":true}}},"load-more":{"carries":{"direction":{"type":"enum","values":["after"]},"parent":{"type":"id","nullable":true},"cursor":{"type":"string","nullable":true}}},"rows-drag":{"carries":{"ids":{"type":"list","schema":{"items":{"type":"string"},"minItems":1}},"source":{"type":"string","nullable":true}},"own-verb":true},"move":{"carries":{"ids":"list","before":{"type":"id","nullable":true},"order":"list"}},"cell-set":{"carries":{"id":"object","key":"string","value":"object","revision":"object"},"own-verb":true},"view-change":{"carries":{"view":"object","everywhere":"boolean"},"own-verb":true},"window":{"carries":{"first":{"type":"number","integer":true},"last":{"type":"number","integer":true}},"own-verb":true}},"actions":{"add-rows":{"with":{"rows":"list"}},"apply-query-result":{"with":{"sequence":{"type":"number","integer":true,"schema":{"minimum":1}},"rows":"list"}},"clear-selection":{},"request-action-intent":{"with":{"action-id":{"type":"string","schema":{"minLength":1}},"record-ids":{"type":"list","schema":{"items":{"type":["string","integer"],"minLength":1},"minItems":1}}},"emits":"apply"},"request-create-intent":{"with":{"item-id":{"type":"string","optional":true,"nullable":true}},"emits":"create"},"request-retry":{"emits":"refresh"},"set-sort":{"with":{"key":{"type":"string","nullable":true},"direction":{"type":"enum","values":["asc","desc"],"nullable":true}}},"toggle-tree-row":{"with":{"row":"object"},"emits":"expand"},"request-tree-more":{"with":{"row":"object"},"emits":"load-more"},"focus-row":{"with":{"id":"id"}}},"port":{"id":"simai.dataview-port","version":"1.0.0","contract":"src/core/contracts/ports/simai.dataview-port/1.0.0/port.json"},"presentation":{"skeleton":{"late":["rows"]}},"host-states":{"data-sf-view-stripes":"boolean","data-sf-page-scroll":"boolean"},"css-variables":{"--sf-table-row-block-size-1/2":{"type":"length","state":"default"},"--sf-table-row-block-size-1":{"type":"length","state":"default"},"--sf-table-row-2-lines-block-size-1/2":{"type":"length","state":"default"},"--sf-table-row-2-lines-block-size-1":{"type":"length","state":"default"},"--sf-table-head-block-size-1/2":{"type":"length","state":"default"},"--sf-table-head-block-size-1":{"type":"length","state":"default"},"--sf-table-toolbar-block-size-1/2":{"type":"length","state":"default"},"--sf-table-toolbar-block-size-1":{"type":"length","state":"default"},"--sf-table-toolbar-gap":{"type":"length","state":"default"},"--sf-table-head--background-color":{"type":"color","state":"default"},"--sf-table-row--background-color":{"type":"color","state":"default"},"--sf-table--cell-spacing":{"type":"length","state":"default"},"--sf-table-cell--line-clamp":{"type":"number","state":"default"},"--sf-table-context-menu--z-index":{"type":"number","state":"open"},"--sf-table-context-menu--max-width":{"type":"length","state":"open"}}}');
|
|
13690
13977
|
|
|
13691
13978
|
/***/ },
|
|
13692
13979
|
|