@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.
Files changed (45) hide show
  1. package/README.md +1 -1
  2. package/dist/package-receipt.json +97 -96
  3. package/dist/smart/view/component.json +10 -2
  4. package/dist/smart/view/component.json.gz +0 -0
  5. package/dist/smart/view/js/view.js +23 -6
  6. package/dist/smart/view/js/view.js.gz +0 -0
  7. package/dist/smart/view/js/view.min.js +1 -1
  8. package/dist/smart/view/js/view.min.js.gz +0 -0
  9. package/dist/smart/view/smart.manifest.json +10 -3
  10. package/dist/smart/view/smart.manifest.json.gz +0 -0
  11. package/dist/smart/view/static/default/open-record.html +11 -16
  12. package/dist/smart/view/static/default/open-record.html.gz +0 -0
  13. package/dist/smart/view/static/default/reference.html +11 -16
  14. package/dist/smart/view/static/default/reference.html.gz +0 -0
  15. package/dist/smart/view-properties/component.json +10 -2
  16. package/dist/smart/view-properties/component.json.gz +0 -0
  17. package/dist/smart/view-properties/css/view-properties.css +24 -19
  18. package/dist/smart/view-properties/css/view-properties.css.gz +0 -0
  19. package/dist/smart/view-properties/css/view-properties.min.css +1 -1
  20. package/dist/smart/view-properties/css/view-properties.min.css.gz +0 -0
  21. package/dist/smart/view-properties/js/view-properties.js +306 -171
  22. package/dist/smart/view-properties/js/view-properties.js.gz +0 -0
  23. package/dist/smart/view-properties/js/view-properties.min.js +92 -121
  24. package/dist/smart/view-properties/js/view-properties.min.js.gz +0 -0
  25. package/dist/smart/view-properties/lang/en.json +0 -7
  26. package/dist/smart/view-properties/lang/en.json.gz +0 -0
  27. package/dist/smart/view-properties/lang/ru.json +0 -7
  28. package/dist/smart/view-properties/lang/ru.json.gz +0 -0
  29. package/dist/smart/view-properties/smart.manifest.json +12 -9
  30. package/dist/smart/view-properties/smart.manifest.json.gz +0 -0
  31. package/dist/smart/view-properties/template/default.css +22 -19
  32. package/dist/smart/view-properties/template/default.css.gz +0 -0
  33. package/dist/smart/view-properties/template/default.js +8 -10
  34. package/dist/smart/view-properties/template/default.js.gz +0 -0
  35. package/dist/smart/view-table/component.json +10 -2
  36. package/dist/smart/view-table/component.json.gz +0 -0
  37. package/dist/smart/view-table/js/view-table.js +375 -88
  38. package/dist/smart/view-table/js/view-table.js.gz +0 -0
  39. package/dist/smart/view-table/js/view-table.min.js +56 -56
  40. package/dist/smart/view-table/js/view-table.min.js.gz +0 -0
  41. package/dist/smart/view-table/smart.manifest.json +11 -4
  42. package/dist/smart/view-table/smart.manifest.json.gz +0 -0
  43. package/dist/smart/view-table/template/default.js +1 -1
  44. package/dist/smart/view-table/template/default.js.gz +0 -0
  45. 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 lit__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("2a080a730149");
3502
- /* harmony import */ var lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("8137feb490e0");
3503
- /* harmony import */ var _core_js_page_language__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("43090d1c8307");
3504
- /* harmony import */ var _helpers_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("926043d18700");
3505
- /* harmony import */ var _helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("870b5dfddc25");
3506
- /* harmony import */ var _core_js_position_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("116963e5e31b");
3507
- /* harmony import */ var _core_js_preferences_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("51250bf01ab0");
3508
- 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__, lit__WEBPACK_IMPORTED_MODULE_10__, lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__, _core_js_page_language__WEBPACK_IMPORTED_MODULE_12__, _core_js_position_js__WEBPACK_IMPORTED_MODULE_15__]);
3509
- ([_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__, lit__WEBPACK_IMPORTED_MODULE_10__, lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__, _core_js_page_language__WEBPACK_IMPORTED_MODULE_12__, _core_js_position_js__WEBPACK_IMPORTED_MODULE_15__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
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 lit__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lit__WEBPACK_IMPORTED_MODULE_10__);
3513
- /* harmony import */ var lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__);
3514
- /* harmony import */ var _core_js_page_language__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_core_js_page_language__WEBPACK_IMPORTED_MODULE_12__);
3515
- /* harmony import */ var _core_js_position_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_core_js_position_js__WEBPACK_IMPORTED_MODULE_15__);
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 || _core_js_preferences_js__WEBPACK_IMPORTED_MODULE_16__["default"];
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 || (_core_js_position_js__WEBPACK_IMPORTED_MODULE_15___default()); // Published Composition ports (simai.composition.port-manifest.v1, sf-view-table@1.0.0).
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 lit__WEBPACK_IMPORTED_MODULE_10__.nothing;
4706
+ if (!this.state.bulkActions?.length) return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
4525
4707
  const selected = this.getSelectedRecordIds();
4526
- return (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<div class="flex flex-wrap gap-1/3">
4527
- ${this.state.bulkActions.map(action => (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<sf-button
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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 = String(value);
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(this.refs.templateForm)} id="save_template" class="flex flex-col gap-1/2">
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(itemRef)}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<sf-button-icon
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>` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<sf-sortable
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>` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing;
7775
+ @sf-sortable-intent=${onIntent}>${rows}</sf-sortable>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
7581
7776
 
7582
- return (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`${list('pinned', pinnedRows)}${list('loose', looseRows)}`;
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
- return (0,_field_renderers_index_js__WEBPACK_IMPORTED_MODULE_9__.renderCellField)(column, value, this.cellHost ?? null);
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
8161
+ return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
7943
8162
  <div
7944
- ${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(this.getItemRef(option.label))}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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 || lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
7952
- icon=${option.icon || lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<span class="sf-table-filter-swatch" aria-hidden="true" style=${`background-color: ${option.color}`}></span>`;
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(this.refs.renameInput)} root-class="flex-1"
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
8322
+ return (0,lit__WEBPACK_IMPORTED_MODULE_12__.html)`
8104
8323
  <div
8105
8324
  :key=${col.key}
8106
- ${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(this.getItemRef(col.label))}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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>` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
8341
+ ></sf-button-icon>` : lit__WEBPACK_IMPORTED_MODULE_12__.nothing}
8123
8342
  ${component}
8124
- ${!isActiveEdit ? (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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>` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<div class="sf-table-column-empty p-1 color-on-surface-variant">
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<div class="sf-table-settings-row">${control}<span>${label}</span></div>`;
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<label class="sf-table-settings-row" data-view-option=${field}>
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<label class="sf-table-settings-row" data-view-density=${value}>
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") : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
8529
- ${this.viewPreferenceKey ? (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<div class="sf-table-settings-separator" role="separator"></div>
8530
- ${row(this.text('viewEverywhere'), (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`<sf-checkbox size=${size} data-view-everywhere ?checked=${everywhere}
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>`)}` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
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,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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 lit__WEBPACK_IMPORTED_MODULE_10__.nothing;
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,lit__WEBPACK_IMPORTED_MODULE_10__.render)(null, this.getPortalContainer());
8883
+ (0,lit__WEBPACK_IMPORTED_MODULE_12__.render)(null, this.getPortalContainer());
8665
8884
  this.hidePortal();
8666
- return lit__WEBPACK_IMPORTED_MODULE_10__.nothing;
8885
+ return lit__WEBPACK_IMPORTED_MODULE_12__.nothing;
8667
8886
  }
8668
8887
 
8669
- (0,lit__WEBPACK_IMPORTED_MODULE_10__.render)((0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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) ? "" : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
8673
- ${(0,lit_directives_ref_js__WEBPACK_IMPORTED_MODULE_11__.ref)(this.refs.contextMenu)}
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) : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
8678
- ${this.isList && ["filter-settings", "tag-settings"].includes(data.menu) ? (0,lit__WEBPACK_IMPORTED_MODULE_10__.html)`
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>` : lit__WEBPACK_IMPORTED_MODULE_10__.nothing}
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 lit__WEBPACK_IMPORTED_MODULE_10__.nothing;
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,_helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_14__.setLoaderDragState)(true);
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,_helpers_loaderDragState__WEBPACK_IMPORTED_MODULE_14__.setLoaderDragState)(false);
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,_helpers_dom__WEBPACK_IMPORTED_MODULE_13__.getParent)(event.target);
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,lit__WEBPACK_IMPORTED_MODULE_10__.render)(null, this.getPortalContainer());
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,lit__WEBPACK_IMPORTED_MODULE_10__.render)(null, this._portalContainer);
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,_core_js_page_language__WEBPACK_IMPORTED_MODULE_12__.pageText)(TABLE_TEXT, key, this);
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,_helpers_dom__WEBPACK_IMPORTED_MODULE_13__.setParentSpace)(this.refs.items);
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.14.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"}}}');
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