@object-ui/plugin-timeline 17.3.0 → 17.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,400 @@
1
1
  # @object-ui/plugin-timeline
2
2
 
3
+ ## 17.6.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [88085e3]
8
+ - Updated dependencies [69251bf]
9
+ - Updated dependencies [57e668f]
10
+ - Updated dependencies [516663d]
11
+ - Updated dependencies [41ac1b7]
12
+ - Updated dependencies [1eaf0a1]
13
+ - Updated dependencies [460c4d0]
14
+ - Updated dependencies [0ae27f7]
15
+ - Updated dependencies [2533ec5]
16
+ - Updated dependencies [78c0f9a]
17
+ - Updated dependencies [bbe8b86]
18
+ - Updated dependencies [8477be5]
19
+ - Updated dependencies [279fb13]
20
+ - Updated dependencies [2e82ab2]
21
+ - Updated dependencies [ad07b65]
22
+ - Updated dependencies [41f498b]
23
+ - Updated dependencies [ef0d150]
24
+ - Updated dependencies [f34226e]
25
+ - Updated dependencies [564b605]
26
+ - Updated dependencies [e1d4251]
27
+ - Updated dependencies [40d3a33]
28
+ - Updated dependencies [8b9dc62]
29
+ - Updated dependencies [1184192]
30
+ - Updated dependencies [a2a9747]
31
+ - Updated dependencies [a1609a6]
32
+ - Updated dependencies [53f23bc]
33
+ - Updated dependencies [c4533dc]
34
+ - Updated dependencies [be60815]
35
+ - Updated dependencies [37f6844]
36
+ - Updated dependencies [93de4f6]
37
+ - Updated dependencies [2b50261]
38
+ - Updated dependencies [384f30d]
39
+ - Updated dependencies [ac600e5]
40
+ - Updated dependencies [97fba31]
41
+ - Updated dependencies [232f61a]
42
+ - Updated dependencies [d374caf]
43
+ - Updated dependencies [5673576]
44
+ - Updated dependencies [c1ef923]
45
+ - Updated dependencies [911ceaa]
46
+ - Updated dependencies [98eab36]
47
+ - Updated dependencies [af5e292]
48
+ - Updated dependencies [3fbbea1]
49
+ - Updated dependencies [5458414]
50
+ - Updated dependencies [7f96b10]
51
+ - Updated dependencies [167ec42]
52
+ - Updated dependencies [616a2a5]
53
+ - Updated dependencies [0046d8f]
54
+ - Updated dependencies [f1d4748]
55
+ - Updated dependencies [bea374e]
56
+ - Updated dependencies [b1119ec]
57
+ - Updated dependencies [9f23d2b]
58
+ - Updated dependencies [578e025]
59
+ - Updated dependencies [af025ee]
60
+ - Updated dependencies [d109a4d]
61
+ - Updated dependencies [598c89a]
62
+ - Updated dependencies [4a0bd17]
63
+ - Updated dependencies [b8b9af4]
64
+ - Updated dependencies [31676be]
65
+ - Updated dependencies [8c0d52e]
66
+ - Updated dependencies [aff10e2]
67
+ - Updated dependencies [70a774b]
68
+ - Updated dependencies [9ce096f]
69
+ - Updated dependencies [e05db88]
70
+ - Updated dependencies [7458a41]
71
+ - Updated dependencies [ad13d63]
72
+ - Updated dependencies [5ffcc14]
73
+ - Updated dependencies [d971e51]
74
+ - Updated dependencies [97abb24]
75
+ - Updated dependencies [deb157a]
76
+ - Updated dependencies [9c60144]
77
+ - Updated dependencies [d2ce342]
78
+ - Updated dependencies [9695da7]
79
+ - Updated dependencies [75444e3]
80
+ - Updated dependencies [58b8346]
81
+ - Updated dependencies [2d0bd16]
82
+ - Updated dependencies [a9e17b4]
83
+ - Updated dependencies [b8ce7dc]
84
+ - Updated dependencies [dad51e5]
85
+ - Updated dependencies [1c9c342]
86
+ - Updated dependencies [787c738]
87
+ - Updated dependencies [8396656]
88
+ - Updated dependencies [dbbd38a]
89
+ - Updated dependencies [8871c14]
90
+ - Updated dependencies [93fe362]
91
+ - Updated dependencies [dfc6975]
92
+ - Updated dependencies [3cf4de0]
93
+ - Updated dependencies [c9dc811]
94
+ - Updated dependencies [144ef9b]
95
+ - Updated dependencies [138ab04]
96
+ - Updated dependencies [a0b9e91]
97
+ - Updated dependencies [99bd015]
98
+ - Updated dependencies [21e4585]
99
+ - @object-ui/types@17.6.0
100
+ - @object-ui/i18n@17.6.0
101
+ - @object-ui/react@17.6.0
102
+ - @object-ui/components@17.6.0
103
+ - @object-ui/core@17.6.0
104
+ - @object-ui/mobile@17.6.0
105
+
106
+ ## 17.5.0
107
+
108
+ ### Minor Changes
109
+
110
+ - 01c9188: fix(plugin-timeline): dates follow the active locale instead of a hardcoded en-US
111
+
112
+ A `zh` console rendered a fully Chinese timeline widget whose axis read
113
+ `Aug 11` / `Sep 2026` and whose item dates read `August 11, 2026`
114
+ (objectui#4513). `renderer.tsx` handed `Intl` a literal `'en-US'` at four sites
115
+ — the hour, day and month gantt headers, and the `long` item date — so nothing
116
+ a user or a tenant configured could reach them.
117
+
118
+ A fifth site was the same defect spelled as an omission: the `short` item date
119
+ called `toLocaleDateString()` with no tag at all, which means the _machine's_
120
+ locale. It agreed with the other four only by the accident of an en-US runner,
121
+ and rendered a third locale on anyone else's machine.
122
+
123
+ All five now resolve through `useDisplayLocale()` from `@object-ui/i18n`
124
+ (tenant regional default → active UI language → `en`) — the one channel every
125
+ field, number and currency renderer already uses, converged there in
126
+ objectui#4468. The locale is read once in `TimelineRenderer` and threaded into
127
+ the two module-level date helpers, which cannot host a hook themselves.
128
+
129
+ English output is byte-identical at all five sites: `'en'` and the retired
130
+ `'en-US'` produce the same forms, and `generateTimeScaleHeaders` gained an
131
+ optional trailing `locale` parameter that defaults to `'en'`, so existing
132
+ three-argument callers are unaffected. The locale-free header vocabularies
133
+ (`Week n`, `Qn YYYY`, `YYYY`) and all non-date rendering are untouched.
134
+
135
+ - 0082db8: The timeline's gantt bucket labels and its row-label default speak the session language
136
+
137
+ objectui#4513 routed every `Intl` call in the timeline renderer through `useDisplayLocale()`, so a Chinese session renders `2026年8月` on the month axis and `2026年8月11日` on item dates. Three sibling strings in the same renderer never went through `Intl` at all and stayed English on that same Chinese axis: the `week` header (`Week 1`), the `quarter` header (`Q3 2026`), and the gantt row-label column default (`Items`). The half-fixed state was the visible one — a Chinese date axis with English bucket labels beside it.
138
+
139
+ They are a translation concern rather than a locale-resolver one, and that distinction is the fix: a locale TAG formats a date, only a TRANSLATION spells a word. All three now resolve through the package's existing channel — `useTimelineTranslation` / `TIMELINE_DEFAULT_TRANSLATIONS`, the `createSafeTranslation` factory `ObjectTimeline` already uses for `timeline.bucket.*` — under three new keys carried by all ten locale packs: `timeline.scale.week`, `timeline.scale.quarter`, `timeline.gantt.rowLabel`.
140
+
141
+ The week number and the quarter/year ride the channel's own `{{hole}}` parameters rather than being concatenated, because the word order belongs to the translation: Chinese puts the year first (`2026年第3季度`), which no `Q${q} ${year}` template can produce at all. Only the row-label DEFAULT moved — an author who writes `rowLabel` still supplies their own string, and the `year` scale stays a bare `String(getFullYear())` with no vocabulary in it to translate.
142
+
143
+ English output is byte-identical to the retired literals: the `en` pack values are the same two templates the code used to interpolate by hand. `generateTimeScaleHeaders` is a pure exported function and cannot host a hook, so the translate fn is threaded in as an optional fifth parameter on the seam #4513 opened for `locale`, defaulting to the package's own defaults table — the same lookup the channel serves with no `I18nProvider` mounted. Existing three- and four-argument call sites are unaffected.
144
+
145
+ One consequence is worth stating because it looks like a bug and is not: dates and vocabulary resolve through different channels on purpose. `useDisplayLocale()` puts the tenant's regional default first (how this organization writes dates), while `t` follows the UI language (what this user reads). A tenant configured `en` whose user reads Chinese chrome therefore sees `Aug 2026` beside `第 1 周` — the same split `timeline.bucket.*` has always had.
146
+
147
+ ### Patch Changes
148
+
149
+ - Updated dependencies [0e67b53]
150
+ - Updated dependencies [ceccdcf]
151
+ - Updated dependencies [d6e5124]
152
+ - Updated dependencies [debad27]
153
+ - Updated dependencies [dc2aa3e]
154
+ - Updated dependencies [ee66e2e]
155
+ - Updated dependencies [ee26e65]
156
+ - Updated dependencies [5900ac5]
157
+ - Updated dependencies [932cbcd]
158
+ - Updated dependencies [734d186]
159
+ - Updated dependencies [f650253]
160
+ - Updated dependencies [3d9769a]
161
+ - Updated dependencies [8f85f8b]
162
+ - Updated dependencies [d0c3b26]
163
+ - Updated dependencies [3fc2971]
164
+ - Updated dependencies [aca27fa]
165
+ - Updated dependencies [dde7283]
166
+ - Updated dependencies [f7c6430]
167
+ - Updated dependencies [4dadf0d]
168
+ - Updated dependencies [ae10a01]
169
+ - Updated dependencies [92876f0]
170
+ - Updated dependencies [f279deb]
171
+ - Updated dependencies [4b70d28]
172
+ - Updated dependencies [eb7f586]
173
+ - Updated dependencies [e901131]
174
+ - Updated dependencies [d9d3463]
175
+ - Updated dependencies [2a40f69]
176
+ - Updated dependencies [bec3e14]
177
+ - Updated dependencies [613b167]
178
+ - Updated dependencies [b4d3c22]
179
+ - Updated dependencies [1f9b905]
180
+ - Updated dependencies [cb13400]
181
+ - Updated dependencies [828549a]
182
+ - Updated dependencies [e1ade8f]
183
+ - Updated dependencies [bc64bfe]
184
+ - Updated dependencies [abb0f81]
185
+ - Updated dependencies [38ab505]
186
+ - Updated dependencies [3e19fe7]
187
+ - Updated dependencies [bb58d1d]
188
+ - Updated dependencies [5cc847c]
189
+ - Updated dependencies [fa21254]
190
+ - Updated dependencies [33c32bf]
191
+ - Updated dependencies [66fb4fa]
192
+ - Updated dependencies [b953a97]
193
+ - Updated dependencies [d7f3e30]
194
+ - Updated dependencies [6d641c9]
195
+ - Updated dependencies [7e4f0e5]
196
+ - Updated dependencies [c911544]
197
+ - Updated dependencies [a84385b]
198
+ - Updated dependencies [45e1949]
199
+ - Updated dependencies [92250d6]
200
+ - Updated dependencies [c1d939f]
201
+ - Updated dependencies [58bebf6]
202
+ - Updated dependencies [405e808]
203
+ - Updated dependencies [49ae9f4]
204
+ - Updated dependencies [a3ae404]
205
+ - Updated dependencies [bfdf3d4]
206
+ - Updated dependencies [bb68488]
207
+ - Updated dependencies [c0f9a4b]
208
+ - Updated dependencies [b1e42d0]
209
+ - Updated dependencies [2459a3e]
210
+ - Updated dependencies [ac853ce]
211
+ - Updated dependencies [fa51109]
212
+ - Updated dependencies [d6aa172]
213
+ - Updated dependencies [fe52a04]
214
+ - Updated dependencies [d46f9b8]
215
+ - Updated dependencies [3f5f87c]
216
+ - Updated dependencies [2fea4d2]
217
+ - Updated dependencies [f5e1143]
218
+ - Updated dependencies [7f1cb33]
219
+ - Updated dependencies [f148a64]
220
+ - Updated dependencies [bb68488]
221
+ - Updated dependencies [2e3b0c0]
222
+ - Updated dependencies [9461dd3]
223
+ - Updated dependencies [78fa331]
224
+ - Updated dependencies [47f551b]
225
+ - Updated dependencies [31ab1ac]
226
+ - Updated dependencies [0082db8]
227
+ - Updated dependencies [ab04728]
228
+ - Updated dependencies [5bf09fd]
229
+ - Updated dependencies [06915b0]
230
+ - Updated dependencies [ff84b05]
231
+ - @object-ui/i18n@17.5.0
232
+ - @object-ui/react@17.5.0
233
+ - @object-ui/components@17.5.0
234
+ - @object-ui/core@17.5.0
235
+ - @object-ui/types@17.5.0
236
+ - @object-ui/mobile@17.5.0
237
+
238
+ ## 17.4.0
239
+
240
+ ### Patch Changes
241
+
242
+ - 022002a: `PageComponentSchema.dataSource` now reaches the remaining object-bound public
243
+ blocks: `object-gantt` / `object-timeline` / `object-map` / `object-pivot` /
244
+ `object-master-detail-form` / `embeddable-form` / `record:line_items`
245
+ (objectstack#7121).
246
+
247
+ objectstack#6953 wired the spec's per-element data binding
248
+ (`dataSource: { object, view?, filter?, sort?, limit? }`) to the eight blocks it
249
+ named and left the same declaration inert on these seven. Each gates its fetch on
250
+ its own object key and nothing mapped `dataSource.object` onto it, so a page
251
+ written the way the spec documents rendered an empty gantt / an empty timeline
252
+ rail / a map with no markers / an empty cross-tab / a field-less form — with no
253
+ request and no diagnostic anywhere. Spec-valid metadata rendering nothing is the
254
+ objectstack#4413 shape.
255
+
256
+ Composition follows objectstack#5576's landed semantics unchanged, through the
257
+ shared `ElementDataSourceGate` (no change to it or to the resolution layer): a
258
+ named saved view supplies the baseline, a key written on the component itself
259
+ overrides it, an explicit binding key overrides both, `filter` AND-combines
260
+ ("additional filter criteria" — a binding can narrow a view, never widen it), and
261
+ a `view` name that does not resolve renders a configuration error on every one of
262
+ these blocks instead of degrading to the object's full scope.
263
+
264
+ Each block maps **only** the keys it genuinely reads, which for this batch means
265
+ several keys stay deliberately unmapped rather than being parked somewhere
266
+ plausible:
267
+
268
+ - `object-gantt` and `object-map` take `object` / `filter` / `sort`; neither has a
269
+ row cap or a field-list read site.
270
+ - `object-pivot` takes `object` / `filter`; a cross-tab orders itself by its own
271
+ row/column grouping and cannot be computed over a truncated page.
272
+ - `object-timeline` takes `object` only — its fetch is
273
+ `find(objectName, { options: { $top: 100 } })`, with no filter/sort read site
274
+ at all, so a named view is error-checked and then contributes nothing.
275
+ - `embeddable-form` and `object-master-detail-form` take `object` only (the
276
+ parent object, in the master-detail case); a form that writes one record has no
277
+ collection query for `filter` / `sort` / `limit` to narrow.
278
+ - `record:line_items` takes `object` onto **`childObject`** — the collection it
279
+ actually lists — and nothing else: its query is the parent FK plus a fixed
280
+ `$top: 500`, and its `columns` are editable `GridColumn` objects rather than a
281
+ field-name projection a view could supply.
282
+
283
+ The per-block coverage table, including every residual gap named above, is in
284
+ `content/docs/guide/data-source.md`.
285
+
286
+ No behaviour change for a block that carries no `dataSource`: the binding-free
287
+ path returns the schema by reference, so nothing remounts and nothing refetches.
288
+
289
+ - 523be48: `object-timeline` and `record:line_items` now apply the filter / sort / row cap they are given, so a named `dataSource.view` narrows them instead of contributing nothing
290
+
291
+ These were the two residual gaps in objectstack#7121's per-block coverage table
292
+ (objectstack#7137). Both blocks are object-bound lists, both accepted the spec's
293
+ per-element `dataSource` binding, and neither had a read site for `filter` or
294
+ `sort` anywhere in its fetch:
295
+
296
+ - `object-timeline`'s entire query was
297
+ `find(objectName, { options: { $top: 100 } })`.
298
+ - `record:line_items`' was the parent FK plus a fixed `$top: 500`.
299
+
300
+ So `dataSource: { object, view: 'hot' }` resolved the view — a typo still reported
301
+ a configuration error, it never degraded into an unfiltered query — and then
302
+ dropped everything the view said. The rendered rows could be **wider than the view
303
+ they named**, silently, which is exactly the class of mistake AI-authored metadata
304
+ hides best: the page looks like it works. objectstack#7121 deliberately left the
305
+ keys unmapped and recorded the gap rather than writing composed values onto schema
306
+ keys nobody read; this closes it at the fetch instead.
307
+
308
+ What each block now reads:
309
+
310
+ - **`object-timeline`** — `$filter: schema.filter`,
311
+ `$orderby: convertSortToQueryParams(schema.sort)`, and
312
+ `$top: schema.limit ?? 100`, matching the form `object-gantt` / `object-map` /
313
+ `object-calendar` already use. Its registry mapping gains
314
+ `filter` / `sort` / `limit`; `columns` stays unmapped, because a timeline
315
+ projects the fields its `timeline` config names.
316
+ - **`record:line_items`** — the composed filter is **AND-combined** with the parent
317
+ relationship condition through `mergeFilterNodes`, never substituted for it, the
318
+ same way `record:related_list` composes its own since objectstack#7118: a
319
+ line-items panel is always scoped to the record it sits on, so an _additional_
320
+ criterion can only narrow this parent's children and can never surface another
321
+ parent's rows. `sort` becomes the load order and `limit` the row cap (default
322
+ 500). `columns` stays unmapped — here they are `GridColumn[]` driving an editable
323
+ grid, not a field-name projection, so a view's column list would be the wrong
324
+ _shape_ rather than merely a wider answer.
325
+
326
+ **Behaviour change worth knowing about:** the timeline's default window is now a
327
+ real cap. `{ options: { $top: 100 } }` nested the limit under a key that is not a
328
+ `QueryParams` field and that no adapter in this repo reads (`convertQueryParams`
329
+ maps `params.$top`), so the intended window never reached the wire and a timeline
330
+ over a large object fetched whatever the server chose to return. It is now sent as
331
+ `$top`, and authorable via `limit` or a view's `pagination.pageSize`.
332
+
333
+ `@object-ui/core` gains `convertSortToQueryParams`, the sort→`$orderby` lowering
334
+ the three sibling blocks each inline privately. It is shared rather than copied
335
+ twice more, and is slightly more faithful to the declared contract than those
336
+ copies: a sort entry that omits `order` means ascending instead of being dropped
337
+ (the string spelling `"amount"` already meant ascending in the same copies), and
338
+ nothing orderable yields `undefined` rather than a truthy empty `{}`. Migrating
339
+ the three existing copies onto it is objectstack#7148 and is not done here.
340
+
341
+ - Updated dependencies [794c497]
342
+ - Updated dependencies [993336f]
343
+ - Updated dependencies [f0a625a]
344
+ - Updated dependencies [b5980f4]
345
+ - Updated dependencies [8aad9fd]
346
+ - Updated dependencies [6719877]
347
+ - Updated dependencies [56ff091]
348
+ - Updated dependencies [7864f03]
349
+ - Updated dependencies [0cbdca8]
350
+ - Updated dependencies [d229dfa]
351
+ - Updated dependencies [ecae400]
352
+ - Updated dependencies [4bc6c23]
353
+ - Updated dependencies [d3e738a]
354
+ - Updated dependencies [c3b01a7]
355
+ - Updated dependencies [f5f8744]
356
+ - Updated dependencies [7ed3360]
357
+ - Updated dependencies [69becd2]
358
+ - Updated dependencies [5e52495]
359
+ - Updated dependencies [0fa5e4d]
360
+ - Updated dependencies [b750823]
361
+ - Updated dependencies [5bfaabd]
362
+ - Updated dependencies [e06810e]
363
+ - Updated dependencies [ab3ad4f]
364
+ - Updated dependencies [c2fd122]
365
+ - Updated dependencies [ac2139c]
366
+ - Updated dependencies [b14ab3a]
367
+ - Updated dependencies [e24d767]
368
+ - Updated dependencies [8c60819]
369
+ - Updated dependencies [aca561a]
370
+ - Updated dependencies [e64a52e]
371
+ - Updated dependencies [844d17f]
372
+ - Updated dependencies [48132f7]
373
+ - Updated dependencies [4dcd52a]
374
+ - Updated dependencies [42ae5c6]
375
+ - Updated dependencies [0ef9dfd]
376
+ - Updated dependencies [1d723e3]
377
+ - Updated dependencies [0109f54]
378
+ - Updated dependencies [7e5bb5d]
379
+ - Updated dependencies [fbc23e0]
380
+ - Updated dependencies [6d762da]
381
+ - Updated dependencies [e6fdbdc]
382
+ - Updated dependencies [54233b1]
383
+ - Updated dependencies [f9faa7d]
384
+ - Updated dependencies [97b63d7]
385
+ - Updated dependencies [6bb454a]
386
+ - Updated dependencies [523be48]
387
+ - Updated dependencies [7e2b7e9]
388
+ - Updated dependencies [33526fd]
389
+ - Updated dependencies [32413ec]
390
+ - Updated dependencies [c1e1e6b]
391
+ - @object-ui/components@17.4.0
392
+ - @object-ui/react@17.4.0
393
+ - @object-ui/core@17.4.0
394
+ - @object-ui/i18n@17.4.0
395
+ - @object-ui/types@17.4.0
396
+ - @object-ui/mobile@17.4.0
397
+
3
398
  ## 17.3.0
4
399
 
5
400
  ### Patch Changes
@@ -1078,6 +1473,7 @@
1078
1473
  ### Patch Changes
1079
1474
 
1080
1475
  - 1b6dc64: fix: complete Tailwind v3→v4 migration cleanup
1476
+
1081
1477
  - Rename deprecated `flex-shrink-0` → `shrink-0` and `flex-grow-N` →
1082
1478
  `grow-N` (Tailwind v4 dropped the long-form aliases). Affects
1083
1479
  data-table, fields/index, FileField, ChatbotEnhanced,
@@ -1140,6 +1536,7 @@
1140
1536
  Library builds (vite lib mode) now externalize every non-relative import instead of bundling third-party CJS dependencies into the published dist. This avoids inlined `require("react")` / `require("react-dom")` calls that cause `Calling \`require\` for "react" in an environment that doesn't expose the \`require\` function` runtime errors when consumer apps re-bundle the published dist.
1141
1537
 
1142
1538
  Specifically fixes:
1539
+
1143
1540
  - `@object-ui/plugin-dashboard` no longer inlines `react-grid-layout` (and its transitive `react-draggable` / `react-resizable` CJS bundles). `react-grid-layout` is now declared as a peer dependency so consumers install a single ESM-friendly copy.
1144
1541
  - `@object-ui/components`, `@object-ui/plugin-calendar`, `@object-ui/plugin-charts`, `@object-ui/plugin-designer` no longer inline `react-i18next` / `i18next` / `use-sync-external-store` CJS shims.
1145
1542
  - All plugin packages now use a unified `external: (id) => !/^[./]/.test(id) && !id.startsWith(__dirname)` rule, ensuring future additions of CJS deps are automatically externalized.
@@ -1198,15 +1595,18 @@
1198
1595
  - b2be122: fix(mobile): round 2 — kanban readability, calendar default view, timeline dot clipping
1199
1596
 
1200
1597
  **Kanban**
1598
+
1201
1599
  - Remove `font-mono` from card titles, descriptions, column headers, and empty-state labels — CRM cards no longer render in a monospace font.
1202
1600
  - Constrain column body height (`max-h-full min-h-0` + `h-full` on the layout root) so `ScrollArea` activates and cards don't bleed past the viewport bottom.
1203
1601
  - Opportunistically derive `description` (e.g. `$60K · Acme Corp · @owner`) and up to two `badges` (priority/severity/industry/rating) in `ObjectKanban` when the schema/source omits them, giving mobile cards more context at a glance.
1204
1602
 
1205
1603
  **Calendar**
1604
+
1206
1605
  - `ObjectCalendar` previously hardcoded `view={schema.defaultView ?? 'month'}`, making the view-selector dropdown a no-op. Wire the `view` state through to the `<Calendar>` prop so user selection is respected.
1207
1606
  - On mobile (viewport < 768 px) coerce `day` defaults to `month` via a synchronous lazy initialiser and a resize/orientation effect — avoids the useless 24-hour empty-hour grid for date-only events.
1208
1607
 
1209
1608
  **Timeline**
1609
+
1210
1610
  - Add `ml-3` to the `<Timeline>` `<ol>` so the `absolute -left-3` marker dots are no longer clipped at the scroll-container edge.
1211
1611
 
1212
1612
  - Updated dependencies [a2d7023]
package/README.md CHANGED
@@ -75,17 +75,6 @@ const schema = {
75
75
  };
76
76
  ```
77
77
 
78
- <!-- release-metadata:v3.3.0 -->
79
-
80
- ## Compatibility
81
-
82
- - **React:** 18.x or 19.x
83
- - **Node.js:** ≥ 18
84
- - **TypeScript:** ≥ 5.0 (strict mode)
85
- - **`@objectstack/spec`:** ^3.3.0
86
- - **`@objectstack/client`:** ^3.3.0
87
- - **Tailwind CSS:** ≥ 3.4 (for packages with UI)
88
-
89
78
  ## Links
90
79
 
91
80
  - 📚 [Documentation](https://www.objectui.org/docs/plugins/plugin-timeline)
@@ -1,5 +1,15 @@
1
1
  import { default as React } from 'react';
2
2
  import { DataSource, TimelineSchema, ListViewTimelineConfig } from '@object-ui/types';
3
+ /**
4
+ * Rows fetched when the author declared no `limit`.
5
+ *
6
+ * The number is the one this component has always intended: before
7
+ * objectstack#7137 the fetch passed `{ options: { $top: 100 } }`, and `options`
8
+ * is not a `QueryParams` key — no adapter in this repo reads it, so the cap never
9
+ * reached the wire and the timeline fetched whatever the server chose to return.
10
+ * The window is now real, and authorable.
11
+ */
12
+ export declare const DEFAULT_TIMELINE_LIMIT = 100;
3
13
  export interface ObjectTimelineProps {
4
14
  schema: TimelineSchema & {
5
15
  objectName?: string;
@@ -9,6 +19,31 @@ export interface ObjectTimelineProps {
9
19
  * has always declared on it, and that this renderer now actually reads.
10
20
  */
11
21
  timeline?: ListViewTimelineConfig;
22
+ /**
23
+ * Query filter for the object fetch, in any shape `toFilterNode` accepts
24
+ * (spec `ViewFilterRule[]`, ObjectQL AST nodes, or a MongoDB-style object).
25
+ *
26
+ * Read here, not merged here: when a `dataSource` binding is present,
27
+ * `ElementDataSourceGate` has already AND-combined this key with the view's
28
+ * filter and the binding's own before the schema reaches this component
29
+ * (objectstack#7137) — the same single sink every other object-bound block
30
+ * composes through.
31
+ */
32
+ filter?: any[] | Record<string, any>;
33
+ /**
34
+ * Query ordering — the legacy `"name desc"` clause or the spec's
35
+ * `SortConfig[]`, both lowered through `convertSortToQueryParams`.
36
+ */
37
+ sort?: string | Array<{
38
+ field?: string;
39
+ order?: 'asc' | 'desc';
40
+ }>;
41
+ /**
42
+ * Row cap for the fetch. Defaults to {@link DEFAULT_TIMELINE_LIMIT}; a
43
+ * timeline renders one rail with no pagination control, so this is the
44
+ * author's window rather than a page size.
45
+ */
46
+ limit?: number;
12
47
  /** @deprecated Use timeline.titleField instead */
13
48
  titleField?: string;
14
49
  /** @deprecated Use timeline.startDateField instead */
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectTimeline.d.ts","sourceRoot":"","sources":["../src/ObjectTimeline.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAmD3F,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,GAAG;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;QAClC,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,sDAAsD;QACtD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sDAAsD;QACtD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,oDAAoD;QACpD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oDAAoD;QACpD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,6CAA6C;QAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;QAE/D,OAAO,CAAC,EAAE;YACR,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAA;KACF,CAAC;IACF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyVxD,CAAA"}
1
+ {"version":3,"file":"ObjectTimeline.d.ts","sourceRoot":"","sources":["../src/ObjectTimeline.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAS3F;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAuB1C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,GAAG;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;QAClC;;;;;;;;;WASG;QACH,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrC;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;SAAE,CAAC,CAAC;QAClE;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,sDAAsD;QACtD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sDAAsD;QACtD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,oDAAoD;QACpD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oDAAoD;QACpD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,6CAA6C;QAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;QAE/D,OAAO,CAAC,EAAE;YACR,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAA;KACF,CAAC;IACF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0WxD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAA,MAAM,QAAQ,iHASZ,CAAA;AAGF,QAAA,MAAM,oBAAoB;;8EASxB,CAAA;AAEF,QAAA,MAAM,YAAY;;qHAShB,CAAA;AAGF,QAAA,MAAM,sBAAsB;;8EAiB3B,CAAA;AAED,KAAK,qBAAqB,GAAG,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAA;AAEnF,QAAA,MAAM,cAAc;cAGN,qBAAqB;wCAUjC,CAAA;AAGF,QAAA,MAAM,eAAe,6GASnB,CAAA;AAGF,QAAA,MAAM,aAAa,qHASjB,CAAA;AAGF,QAAA,MAAM,YAAY,mHAShB,CAAA;AAGF,QAAA,MAAM,mBAAmB,yHASvB,CAAA;AAIF,QAAA,MAAM,kBAAkB,6GAStB,CAAA;AAGF,QAAA,MAAM,sBAAsB,6GAS1B,CAAA;AAIF,QAAA,MAAM,aAAa,6GASjB,CAAA;AAGF,QAAA,MAAM,mBAAmB,6GASvB,CAAA;AAGF,QAAA,MAAM,sBAAsB,6GAS1B,CAAA;AAGF,QAAA,MAAM,iBAAiB,6GASrB,CAAA;AAGF,QAAA,MAAM,gBAAgB,6GASpB,CAAA;AAGF,QAAA,MAAM,kBAAkB,6GAStB,CAAA;AAGF,QAAA,MAAM,gBAAgB;YAGV,MAAM;YACN,MAAM;cACJ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM;wCA0BjE,CAAA;AAGF,QAAA,MAAM,uBAAuB,6GAS3B,CAAA;AAGF,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,CAAA;AAGD,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAO5D,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAGhD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAA,MAAM,QAAQ,iHASZ,CAAA;AAGF,QAAA,MAAM,oBAAoB;;8EASxB,CAAA;AAEF,QAAA,MAAM,YAAY;;qHAShB,CAAA;AAGF,QAAA,MAAM,sBAAsB;;8EAiB3B,CAAA;AAED,KAAK,qBAAqB,GAAG,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAA;AAEnF,QAAA,MAAM,cAAc;cAGN,qBAAqB;wCAUjC,CAAA;AAGF,QAAA,MAAM,eAAe,6GASnB,CAAA;AAGF,QAAA,MAAM,aAAa,qHASjB,CAAA;AAGF,QAAA,MAAM,YAAY,mHAShB,CAAA;AAGF,QAAA,MAAM,mBAAmB,yHASvB,CAAA;AAIF,QAAA,MAAM,kBAAkB,6GAStB,CAAA;AAGF,QAAA,MAAM,sBAAsB,6GAS1B,CAAA;AAIF,QAAA,MAAM,aAAa,6GASjB,CAAA;AAGF,QAAA,MAAM,mBAAmB,6GASvB,CAAA;AAGF,QAAA,MAAM,sBAAsB,6GAS1B,CAAA;AAGF,QAAA,MAAM,iBAAiB,6GASrB,CAAA;AAGF,QAAA,MAAM,gBAAgB,6GASpB,CAAA;AAGF,QAAA,MAAM,kBAAkB,6GAStB,CAAA;AAGF,QAAA,MAAM,gBAAgB;YAGV,MAAM;YACN,MAAM;cACJ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM;wCA0BjE,CAAA;AAGF,QAAA,MAAM,uBAAuB,6GAS3B,CAAA;AAGF,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,CAAA;AAGD,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiC5D,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAiBhD,CAAC"}