@burojs/ui-shadcn 0.7.0 → 0.9.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/dist/{bulk-summary-CrEij5vq.cjs → bulk-summary-2HLgz7Il.cjs} +31 -5
- package/dist/bulk-summary-2HLgz7Il.cjs.map +1 -0
- package/dist/{bulk-summary-BWSAS7k2.js → bulk-summary-D6A0ua21.js} +32 -6
- package/dist/bulk-summary-D6A0ua21.js.map +1 -0
- package/dist/{candidates-relation-picker-CS_JZ4Fd.js → candidates-relation-picker-QvoY2bOQ.js} +3 -3
- package/dist/{candidates-relation-picker-CS_JZ4Fd.js.map → candidates-relation-picker-QvoY2bOQ.js.map} +1 -1
- package/dist/{candidates-relation-picker-y5M6_oe4.cjs → candidates-relation-picker-pEAWKQEY.cjs} +3 -3
- package/dist/{candidates-relation-picker-y5M6_oe4.cjs.map → candidates-relation-picker-pEAWKQEY.cjs.map} +1 -1
- package/dist/{check-confirm-dialog-2j0gOd7x.js → check-confirm-dialog-B-CbJTln.js} +68 -8
- package/dist/{check-confirm-dialog-2j0gOd7x.js.map → check-confirm-dialog-B-CbJTln.js.map} +1 -1
- package/dist/{check-confirm-dialog-C-NHgMST.cjs → check-confirm-dialog-W-8WOmGh.cjs} +72 -6
- package/dist/check-confirm-dialog-W-8WOmGh.cjs.map +1 -0
- package/dist/{filter-builder-DaWHUZuV.js → filter-builder-04nas3eq.js} +127 -61
- package/dist/filter-builder-04nas3eq.js.map +1 -0
- package/dist/{filter-builder-DFu0JP-1.cjs → filter-builder-DQX-TMFh.cjs} +140 -68
- package/dist/filter-builder-DQX-TMFh.cjs.map +1 -0
- package/dist/{flow-runtime-DyqTmK3H.js → flow-runtime-BEIyym7d.js} +7 -4
- package/dist/{flow-runtime-DyqTmK3H.js.map → flow-runtime-BEIyym7d.js.map} +1 -1
- package/dist/{flow-runtime-BpmrIUb6.cjs → flow-runtime-DyNIYfUP.cjs} +7 -4
- package/dist/{flow-runtime-BpmrIUb6.cjs.map → flow-runtime-DyNIYfUP.cjs.map} +1 -1
- package/dist/{flow-screen-DCdli6Ha.js → flow-screen-DY1Z9PbG.js} +56 -15
- package/dist/flow-screen-DY1Z9PbG.js.map +1 -0
- package/dist/{flow-screen-Bcz9NF2V.cjs → flow-screen-FE5Xhb3t.cjs} +54 -13
- package/dist/flow-screen-FE5Xhb3t.cjs.map +1 -0
- package/dist/index.cjs +564 -170
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +235 -95
- package/dist/index.d.ts +235 -95
- package/dist/index.js +562 -169
- package/dist/index.js.map +1 -1
- package/dist/{inline-flow-host-C0rI9B7f.js → inline-flow-host-D6u-RlsV.js} +3 -3
- package/dist/{inline-flow-host-C0rI9B7f.js.map → inline-flow-host-D6u-RlsV.js.map} +1 -1
- package/dist/{inline-flow-host-3vw7LzzD.cjs → inline-flow-host-yVLo6-sM.cjs} +3 -3
- package/dist/{inline-flow-host-3vw7LzzD.cjs.map → inline-flow-host-yVLo6-sM.cjs.map} +1 -1
- package/dist/{lazy-relation-picker-dialog-CAScLPb2.js → lazy-relation-picker-dialog-BaORufxQ.js} +2 -2
- package/dist/{lazy-relation-picker-dialog-CAScLPb2.js.map → lazy-relation-picker-dialog-BaORufxQ.js.map} +1 -1
- package/dist/{lazy-relation-picker-dialog-Bt8lrEIu.cjs → lazy-relation-picker-dialog-C_VlGlDz.cjs} +2 -2
- package/dist/{lazy-relation-picker-dialog-Bt8lrEIu.cjs.map → lazy-relation-picker-dialog-C_VlGlDz.cjs.map} +1 -1
- package/dist/{page-flow-route-BHUEpn0I.js → page-flow-route-CyMzUidK.js} +8 -9
- package/dist/page-flow-route-CyMzUidK.js.map +1 -0
- package/dist/{page-flow-route-DS8IVTVH.cjs → page-flow-route-OFx7h7Ja.cjs} +8 -9
- package/dist/page-flow-route-OFx7h7Ja.cjs.map +1 -0
- package/dist/{place-node-CNb3w-c7.cjs → place-node-BZF5Af6x.cjs} +224 -151
- package/dist/place-node-BZF5Af6x.cjs.map +1 -0
- package/dist/{place-node-CfzQvh4Y.js → place-node-DRjmJGQ_.js} +210 -125
- package/dist/place-node-DRjmJGQ_.js.map +1 -0
- package/dist/{related-list-cards-BIqqY69Y.js → related-list-cards-2hLitVkg.js} +3 -3
- package/dist/{related-list-cards-BIqqY69Y.js.map → related-list-cards-2hLitVkg.js.map} +1 -1
- package/dist/{related-list-cards-CelMxl4q.cjs → related-list-cards-xVvgSlu-.cjs} +3 -3
- package/dist/{related-list-cards-CelMxl4q.cjs.map → related-list-cards-xVvgSlu-.cjs.map} +1 -1
- package/dist/related-list-timeline-CxJqe6eK.js +167 -0
- package/dist/related-list-timeline-CxJqe6eK.js.map +1 -0
- package/dist/related-list-timeline-Dsf5WewG.cjs +167 -0
- package/dist/related-list-timeline-Dsf5WewG.cjs.map +1 -0
- package/dist/{related-rows-MPnLCmPF.cjs → related-rows-DDhp9axl.cjs} +4 -4
- package/dist/{related-rows-MPnLCmPF.cjs.map → related-rows-DDhp9axl.cjs.map} +1 -1
- package/dist/{related-rows--uP2iKQC.js → related-rows-DL6CWsrj.js} +4 -4
- package/dist/{related-rows--uP2iKQC.js.map → related-rows-DL6CWsrj.js.map} +1 -1
- package/dist/{relation-create-C43cdPQt.js → relation-create-6WicROWA.js} +33 -5
- package/dist/relation-create-6WicROWA.js.map +1 -0
- package/dist/{relation-create-DDEYcKfw.cjs → relation-create-_SFuPQGM.cjs} +37 -3
- package/dist/relation-create-_SFuPQGM.cjs.map +1 -0
- package/dist/{relation-many-picker-DzuGJpEl.cjs → relation-many-picker-BBNsmkaX.cjs} +18 -11
- package/dist/relation-many-picker-BBNsmkaX.cjs.map +1 -0
- package/dist/{relation-many-picker-BJhaEqxz.js → relation-many-picker-mGEQDWo2.js} +18 -11
- package/dist/relation-many-picker-mGEQDWo2.js.map +1 -0
- package/dist/{relation-picker-D-tBBZW_.js → relation-picker-BbO41cFV.js} +19 -11
- package/dist/relation-picker-BbO41cFV.js.map +1 -0
- package/dist/{relation-picker-dialog-DoEY8EkH.js → relation-picker-dialog-BgSG_8bU.js} +5 -5
- package/dist/relation-picker-dialog-BgSG_8bU.js.map +1 -0
- package/dist/{relation-picker-dialog-9Vg5vvR1.cjs → relation-picker-dialog-Duqy2r0n.cjs} +5 -5
- package/dist/relation-picker-dialog-Duqy2r0n.cjs.map +1 -0
- package/dist/{relation-picker-DaIMzf2H.cjs → relation-picker-jk9D_uwn.cjs} +19 -11
- package/dist/relation-picker-jk9D_uwn.cjs.map +1 -0
- package/dist/{relation-select-Cr3CfNLy.cjs → relation-select-C3aV18kT.cjs} +2 -2
- package/dist/{relation-select-Cr3CfNLy.cjs.map → relation-select-C3aV18kT.cjs.map} +1 -1
- package/dist/{relation-select-B8Fq4o-t.js → relation-select-CjQT9LpS.js} +2 -2
- package/dist/{relation-select-B8Fq4o-t.js.map → relation-select-CjQT9LpS.js.map} +1 -1
- package/dist/{resource-page-router-Diw6S6TK.js → resource-page-router-CzaNATSp.js} +209 -30
- package/dist/resource-page-router-CzaNATSp.js.map +1 -0
- package/dist/{resource-page-router-C_kGW2o_.cjs → resource-page-router-dmVIeu5s.cjs} +235 -32
- package/dist/resource-page-router-dmVIeu5s.cjs.map +1 -0
- package/dist/{success-notices-Dl3M1fZP.cjs → success-notices-Cl4b6MLQ.cjs} +3 -2
- package/dist/success-notices-Cl4b6MLQ.cjs.map +1 -0
- package/dist/{success-notices-LDEgEkc4.js → success-notices-CrcWOGSo.js} +3 -2
- package/dist/success-notices-CrcWOGSo.js.map +1 -0
- package/dist/{use-dialog-filter-state-B_MqzHaT.js → use-dialog-filter-state-CJoeY-1j.js} +2 -2
- package/dist/{use-dialog-filter-state-B_MqzHaT.js.map → use-dialog-filter-state-CJoeY-1j.js.map} +1 -1
- package/dist/{use-dialog-filter-state-tNvqAAjh.cjs → use-dialog-filter-state-lsTJxrB4.cjs} +2 -2
- package/dist/{use-dialog-filter-state-tNvqAAjh.cjs.map → use-dialog-filter-state-lsTJxrB4.cjs.map} +1 -1
- package/dist/use-record-subtitle-BJ9rnj6F.cjs +67 -0
- package/dist/use-record-subtitle-BJ9rnj6F.cjs.map +1 -0
- package/dist/use-record-subtitle-w3ZhXNlf.js +50 -0
- package/dist/use-record-subtitle-w3ZhXNlf.js.map +1 -0
- package/package.json +9 -9
- package/dist/bulk-summary-BWSAS7k2.js.map +0 -1
- package/dist/bulk-summary-CrEij5vq.cjs.map +0 -1
- package/dist/check-confirm-dialog-C-NHgMST.cjs.map +0 -1
- package/dist/filter-builder-DFu0JP-1.cjs.map +0 -1
- package/dist/filter-builder-DaWHUZuV.js.map +0 -1
- package/dist/flow-screen-Bcz9NF2V.cjs.map +0 -1
- package/dist/flow-screen-DCdli6Ha.js.map +0 -1
- package/dist/page-flow-route-BHUEpn0I.js.map +0 -1
- package/dist/page-flow-route-DS8IVTVH.cjs.map +0 -1
- package/dist/place-node-CNb3w-c7.cjs.map +0 -1
- package/dist/place-node-CfzQvh4Y.js.map +0 -1
- package/dist/related-list-timeline-CRh7xwLD.js +0 -141
- package/dist/related-list-timeline-CRh7xwLD.js.map +0 -1
- package/dist/related-list-timeline-DsLdi8sv.cjs +0 -141
- package/dist/related-list-timeline-DsLdi8sv.cjs.map +0 -1
- package/dist/relation-create-C43cdPQt.js.map +0 -1
- package/dist/relation-create-DDEYcKfw.cjs.map +0 -1
- package/dist/relation-many-picker-BJhaEqxz.js.map +0 -1
- package/dist/relation-many-picker-DzuGJpEl.cjs.map +0 -1
- package/dist/relation-picker-D-tBBZW_.js.map +0 -1
- package/dist/relation-picker-DaIMzf2H.cjs.map +0 -1
- package/dist/relation-picker-dialog-9Vg5vvR1.cjs.map +0 -1
- package/dist/relation-picker-dialog-DoEY8EkH.js.map +0 -1
- package/dist/resource-page-router-C_kGW2o_.cjs.map +0 -1
- package/dist/resource-page-router-Diw6S6TK.js.map +0 -1
- package/dist/success-notices-Dl3M1fZP.cjs.map +0 -1
- package/dist/success-notices-LDEgEkc4.js.map +0 -1
|
@@ -2,15 +2,16 @@ import { l as cn } from "./use-theme-dnE3Od3I.js";
|
|
|
2
2
|
import { m as PopoverTrigger, p as PopoverContent, u as Popover } from "./toaster-Ct_YHGs6.js";
|
|
3
3
|
import { t as Button } from "./button-MWVeZaqj.js";
|
|
4
4
|
import { t as Input } from "./input-CUPStzZO.js";
|
|
5
|
-
import {
|
|
5
|
+
import { D as CommandItem, E as CommandInput, O as CommandList, S as Command, T as CommandGroup, m as useRowTitle, o as narrowSearchDecl, w as CommandEmpty } from "./relation-create-6WicROWA.js";
|
|
6
6
|
import { t as Skeleton } from "./skeleton-U2noefj5.js";
|
|
7
|
-
import { EMPTY_FILTER_GROUP, canonicalResourceKey, convertValueForOp, declaredText, enumValueText, formatEntityRef, isCompletePredicate, isFilterGroup, opArity, resolveEnumLabel, resolveSurfaceUi } from "@burojs/core";
|
|
8
|
-
import { DEFAULT_LANGUAGE_STORAGE_KEY, scopeValueOf, useApp, useChromeT, useEnumValues, useFieldDisplayText, useFieldImplementation, useFieldMeta, useFieldMetaSources, useI18nCaps, useImplementationTexts, useList, useListAccess, useLocale, useOptionalLocale, useOptionalT, useRelatedRecord, useResolvedFieldOptions } from "@burojs/react";
|
|
7
|
+
import { EMPTY_FILTER_GROUP, canonicalInstant, canonicalResourceKey, convertValueForOp, declaredText, enumValueText, formatEntityRef, formatTimeValue, instantToWall, isCalendarDate, isCompletePredicate, isFilterGroup, isWallTime, opArity, resolveEnumLabel, resolveSurfaceUi, resolveTimeZone, wallToInstant } from "@burojs/core";
|
|
8
|
+
import { DEFAULT_LANGUAGE_STORAGE_KEY, scopeValueOf, useApp, useChromeT, useEnumValues, useFieldDisplayText, useFieldImplementation, useFieldMeta, useFieldMetaSources, useI18nCaps, useImplementationTexts, useList, useListAccess, useLocale, useOptionalLocale, useOptionalT, useRelatedRecord, useResolvedFieldOptions, useTimeContext, useTimeZone } from "@burojs/react";
|
|
9
9
|
import { IconCheck, IconChevronDown, IconChevronUp, IconCirclePlus, IconFilter, IconFolderPlus, IconLoader2, IconPlus, IconX } from "@tabler/icons-react";
|
|
10
10
|
import * as React from "react";
|
|
11
11
|
import { Fragment, createElement, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
12
12
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { cva } from "class-variance-authority";
|
|
14
|
+
import { normaliseFieldZone } from "@burojs/core/internal";
|
|
14
15
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
15
16
|
//#region src/layout/language-storage.ts
|
|
16
17
|
function loadLocale(storageKey = DEFAULT_LANGUAGE_STORAGE_KEY) {
|
|
@@ -99,6 +100,7 @@ const SEMANTIC_KEYS = Object.freeze([
|
|
|
99
100
|
"empty",
|
|
100
101
|
"default",
|
|
101
102
|
"constraints",
|
|
103
|
+
"zone",
|
|
102
104
|
"texts",
|
|
103
105
|
"options",
|
|
104
106
|
"items",
|
|
@@ -128,9 +130,11 @@ function projectUiSelection(input) {
|
|
|
128
130
|
const selection = {};
|
|
129
131
|
const inputId = ownSelection(input, "input");
|
|
130
132
|
const displayId = ownSelection(input, "display");
|
|
133
|
+
const layout = ownData(input, "layout").value;
|
|
131
134
|
if (inputId !== void 0) selection.input = inputId;
|
|
132
135
|
if (displayId !== void 0) selection.display = displayId;
|
|
133
|
-
|
|
136
|
+
if (Array.isArray(layout)) selection.layout = layout;
|
|
137
|
+
return Object.keys(selection).length === 0 ? void 0 : Object.freeze(selection);
|
|
134
138
|
}
|
|
135
139
|
function projectFieldDeclaration(input) {
|
|
136
140
|
const type = ownString(input, "type");
|
|
@@ -149,7 +153,16 @@ function projectFieldDeclaration(input) {
|
|
|
149
153
|
}
|
|
150
154
|
if (type === "object") {
|
|
151
155
|
const properties = ownData(input, "properties").value;
|
|
152
|
-
if (
|
|
156
|
+
if (Array.isArray(properties)) {
|
|
157
|
+
const output = {};
|
|
158
|
+
for (let index = 0; index < properties.length; index += 1) {
|
|
159
|
+
const entry = ownData(properties, index).value;
|
|
160
|
+
const name = ownString(entry, "name");
|
|
161
|
+
const child = projectFieldDeclaration(entry);
|
|
162
|
+
if (name !== void 0 && child !== void 0) output[name] = child;
|
|
163
|
+
}
|
|
164
|
+
projected.properties = Object.freeze(output);
|
|
165
|
+
} else if (properties !== null && typeof properties === "object") {
|
|
153
166
|
const output = {};
|
|
154
167
|
for (const key of Object.keys(properties)) {
|
|
155
168
|
const child = projectFieldDeclaration(ownData(properties, key).value);
|
|
@@ -206,6 +219,7 @@ function lowerLegacyField(field) {
|
|
|
206
219
|
const items = type === "array" ? projectFieldDeclaration(ownData(field, "items").value) ?? mapping?.items ?? STRING_ITEM : void 0;
|
|
207
220
|
const meta = ownData(field, "meta");
|
|
208
221
|
const texts = ownData(field, "texts");
|
|
222
|
+
const zone = ownData(field, "zone");
|
|
209
223
|
const options = kind === "enum" ? enumValueOptions(field) : void 0;
|
|
210
224
|
const required = ownData(field, "required");
|
|
211
225
|
const nullable = ownData(field, "nullable");
|
|
@@ -221,6 +235,7 @@ function lowerLegacyField(field) {
|
|
|
221
235
|
...meta.present && meta.value !== void 0 ? { meta: meta.value } : {},
|
|
222
236
|
...options === void 0 ? {} : { options },
|
|
223
237
|
...texts.present && texts.value !== void 0 ? { texts: texts.value } : {},
|
|
238
|
+
...zone.present && zone.value !== void 0 ? { zone: zone.value } : {},
|
|
224
239
|
...requiredValue === true ? { required: true } : {},
|
|
225
240
|
...nullableValue === true ? { nullable: true } : {}
|
|
226
241
|
});
|
|
@@ -372,7 +387,7 @@ function useFieldImplementationDiagnostic(diagnostic) {
|
|
|
372
387
|
console.warn("[buro/ui-shadcn] missing-field-implementation; rendering fallback.", diagnostic);
|
|
373
388
|
}, [diagnostic]);
|
|
374
389
|
}
|
|
375
|
-
function ResolvedFieldDisplay({ resource, name, field: source, value, record, testId, fallback, presentation, metaSources, uiSurface = "display", columnEntry }) {
|
|
390
|
+
function ResolvedFieldDisplay({ resource, name, field: source, value, record, testId, fallback, presentation, metaSources, uiSurface = "display", columnEntry, absentPaths, pathStatus }) {
|
|
376
391
|
const { sourceAtEdge, field, ui } = useLoweredField(source);
|
|
377
392
|
const surfaceField = useMemo(() => sourceAtEdge.ui === void 0 ? field : Object.freeze({
|
|
378
393
|
...field,
|
|
@@ -397,10 +412,19 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
397
412
|
const text = useFieldDisplayText(textField, value, {
|
|
398
413
|
surface: uiSurface,
|
|
399
414
|
...columnEntry === void 0 ? {} : { entry: columnEntry },
|
|
400
|
-
resource: canonicalResourceKey(resource)
|
|
415
|
+
resource: canonicalResourceKey(resource),
|
|
416
|
+
...record === void 0 ? {} : { record }
|
|
401
417
|
});
|
|
402
418
|
const options = useContextOptions(field, name, metaState.status === "ready" ? metaState.meta : void 0, ui, resource);
|
|
403
419
|
const texts = useContextTexts(field, name, resolved, resource);
|
|
420
|
+
const dateDisplay = resolveSurfaceUi(surfaceField, uiSurface, columnEntry).dateDisplay;
|
|
421
|
+
const contextUi = useMemo(() => dateDisplay === void 0 ? ui : Object.freeze({
|
|
422
|
+
...ui,
|
|
423
|
+
display: Object.freeze({
|
|
424
|
+
...typeof ui.display === "object" && ui.display !== null ? ui.display : {},
|
|
425
|
+
...dateDisplay
|
|
426
|
+
})
|
|
427
|
+
}), [ui, dateDisplay]);
|
|
404
428
|
useFieldMetaDiagnostic(metaState, resource, name, surfaceField, uiSurface, columnEntry);
|
|
405
429
|
useFieldImplementationDiagnostic(resolved.diagnostic);
|
|
406
430
|
if (resolved.Component === void 0) return jsx(Fragment$1, { children: fallback });
|
|
@@ -411,11 +435,13 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
411
435
|
resource,
|
|
412
436
|
field,
|
|
413
437
|
path: Object.freeze([name]),
|
|
438
|
+
...absentPaths === void 0 || absentPaths.length === 0 ? {} : { absentPaths },
|
|
439
|
+
...pathStatus === void 0 ? {} : { pathStatus },
|
|
414
440
|
surface: "display",
|
|
415
441
|
presentation: presentation ?? "default",
|
|
416
442
|
record,
|
|
417
443
|
meta: metaState.meta,
|
|
418
|
-
ui,
|
|
444
|
+
ui: contextUi,
|
|
419
445
|
options,
|
|
420
446
|
texts,
|
|
421
447
|
...text === void 0 ? {} : { text },
|
|
@@ -438,7 +464,7 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
438
464
|
value
|
|
439
465
|
});
|
|
440
466
|
}
|
|
441
|
-
function ResolvedFieldInput({ resource, name, field: source, value, record, form, testId, inputId, onChange, onBlur, disabled, required, placeholder, descriptionId, labelId, errorId, errorMessage, pending = false, touched = errorMessage != null, issues: suppliedIssues, relationSeeds, fixedFilters, link, metaSources, fallback }) {
|
|
467
|
+
function ResolvedFieldInput({ resource, name, field: source, value, record, form, testId, inputId, onChange, onBlur, disabled, required, placeholder, descriptionId, labelId, errorId, errorMessage, pending = false, touched = errorMessage != null, issues: suppliedIssues, relationSeeds, fixedFilters, optionSubtitle, link, metaSources, baseline, fallback, absentPaths, pathStatus }) {
|
|
442
468
|
const { sourceAtEdge, field: base } = useLoweredField(source);
|
|
443
469
|
const field = useMemo(() => required === void 0 || required === base.required ? base : Object.freeze({
|
|
444
470
|
...base,
|
|
@@ -480,6 +506,8 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
480
506
|
resource,
|
|
481
507
|
field,
|
|
482
508
|
path: Object.freeze([name]),
|
|
509
|
+
...absentPaths === void 0 || absentPaths.length === 0 ? {} : { absentPaths },
|
|
510
|
+
...pathStatus === void 0 ? {} : { pathStatus },
|
|
483
511
|
surface: "input",
|
|
484
512
|
presentation: "default",
|
|
485
513
|
record,
|
|
@@ -510,8 +538,10 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
510
538
|
disabled,
|
|
511
539
|
relationSeeds,
|
|
512
540
|
fixedFilters,
|
|
541
|
+
optionSubtitle,
|
|
513
542
|
link,
|
|
514
|
-
metaSources: runtimeContext.metaSources
|
|
543
|
+
metaSources: runtimeContext.metaSources,
|
|
544
|
+
...baseline === void 0 ? {} : { baseline }
|
|
515
545
|
});
|
|
516
546
|
return createElement(Component, {
|
|
517
547
|
...context,
|
|
@@ -522,8 +552,10 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
522
552
|
disabled,
|
|
523
553
|
relationSeeds,
|
|
524
554
|
fixedFilters,
|
|
555
|
+
optionSubtitle,
|
|
525
556
|
link,
|
|
526
|
-
metaSources: runtimeContext.metaSources
|
|
557
|
+
metaSources: runtimeContext.metaSources,
|
|
558
|
+
...baseline === void 0 ? {} : { baseline }
|
|
527
559
|
});
|
|
528
560
|
}
|
|
529
561
|
//#endregion
|
|
@@ -599,7 +631,15 @@ const TableCaption = React.forwardRef(({ className, ...props }, ref) => jsx("cap
|
|
|
599
631
|
TableCaption.displayName = "TableCaption";
|
|
600
632
|
//#endregion
|
|
601
633
|
//#region src/primitives/select.tsx
|
|
602
|
-
|
|
634
|
+
function Select({ onValueChange, ...props }) {
|
|
635
|
+
return jsx(SelectPrimitive.Root, {
|
|
636
|
+
...props,
|
|
637
|
+
...onValueChange === void 0 ? {} : { onValueChange: (next) => {
|
|
638
|
+
if (next !== "") onValueChange(next);
|
|
639
|
+
} }
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
Select.displayName = SelectPrimitive.Root.displayName;
|
|
603
643
|
const SelectGroup = SelectPrimitive.Group;
|
|
604
644
|
const SelectValue = SelectPrimitive.Value;
|
|
605
645
|
const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => jsxs(SelectPrimitive.Trigger, {
|
|
@@ -677,8 +717,6 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
|
677
717
|
function localeTag(locale) {
|
|
678
718
|
return locale || loadLocale() || "en-US";
|
|
679
719
|
}
|
|
680
|
-
const dateCache = new Map();
|
|
681
|
-
const dateTimeCache = new Map();
|
|
682
720
|
const numberCache = new Map();
|
|
683
721
|
function cached(cache, key, make) {
|
|
684
722
|
const hit = cache.get(key);
|
|
@@ -692,24 +730,6 @@ function cached(cache, key, make) {
|
|
|
692
730
|
cache.set(key, made);
|
|
693
731
|
return made;
|
|
694
732
|
}
|
|
695
|
-
function formatDate(d, locale) {
|
|
696
|
-
const tag = localeTag(locale);
|
|
697
|
-
return cached(dateCache, tag, (t) => new Intl.DateTimeFormat(t, {
|
|
698
|
-
year: "numeric",
|
|
699
|
-
month: "short",
|
|
700
|
-
day: "numeric"
|
|
701
|
-
})).format(d);
|
|
702
|
-
}
|
|
703
|
-
function formatDateTime(d, locale) {
|
|
704
|
-
const tag = localeTag(locale);
|
|
705
|
-
return cached(dateTimeCache, tag, (t) => new Intl.DateTimeFormat(t, {
|
|
706
|
-
year: "numeric",
|
|
707
|
-
month: "short",
|
|
708
|
-
day: "numeric",
|
|
709
|
-
hour: "2-digit",
|
|
710
|
-
minute: "2-digit"
|
|
711
|
-
})).format(d);
|
|
712
|
-
}
|
|
713
733
|
function formatNumber(n, locale) {
|
|
714
734
|
const tag = localeTag(locale);
|
|
715
735
|
return cached(numberCache, tag, (t) => new Intl.NumberFormat(t)).format(n);
|
|
@@ -723,7 +743,7 @@ function describeValue(value, chromeT, spec, formatValue) {
|
|
|
723
743
|
const optionLabel = spec?.options?.find((o) => o.value === String(value))?.label;
|
|
724
744
|
if (optionLabel !== void 0) return optionLabel;
|
|
725
745
|
if (spec && formatValue) {
|
|
726
|
-
const formatted = formatValue(spec.kind, value);
|
|
746
|
+
const formatted = formatValue(spec.kind, value, spec.zone);
|
|
727
747
|
if (formatted !== void 0) return formatted;
|
|
728
748
|
}
|
|
729
749
|
return String(value);
|
|
@@ -804,7 +824,7 @@ function RelationLabelResolver(props) {
|
|
|
804
824
|
const { to, id, by, onResolve } = props;
|
|
805
825
|
const targetDef = useApp().registry.get(to);
|
|
806
826
|
const { record } = useRelatedRecord(to, id, by === void 0 ? void 0 : { by });
|
|
807
|
-
const rowTitle = useRowTitle(to, targetDef?.displayField);
|
|
827
|
+
const rowTitle = useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
808
828
|
useEffect(() => {
|
|
809
829
|
if (!record) return;
|
|
810
830
|
onResolve(relationLabelKey(to, by, id), rowTitle(record));
|
|
@@ -880,6 +900,8 @@ function FilterBadges(props) {
|
|
|
880
900
|
const { group, setGroup, available, fixed, testIdBase, onOpenAt, onRemoved, pinnedFields = [], pinnedValue = [], setPinnedValue } = props;
|
|
881
901
|
const chromeT = useChromeT();
|
|
882
902
|
const locale = useOptionalLocale();
|
|
903
|
+
const viewer = useTimeZone();
|
|
904
|
+
const timeContext = useTimeContext();
|
|
883
905
|
const tt = (key, params, fallback) => chromeT(key, {
|
|
884
906
|
params,
|
|
885
907
|
...typeof params?.count === "number" ? { count: params.count } : {},
|
|
@@ -887,13 +909,18 @@ function FilterBadges(props) {
|
|
|
887
909
|
});
|
|
888
910
|
const removeLabel = chromeT("filters.removeRow", { defaultValue: "Remove filter" });
|
|
889
911
|
const { enumLabels, relationLabels, onEnumResolved, onRelationResolved } = useFormatValueMaps();
|
|
890
|
-
const formatValue = (kind, value) => {
|
|
912
|
+
const formatValue = (kind, value, fieldZone) => {
|
|
891
913
|
if (kind.kind === "enum") return enumLabels[kind.enumName]?.[String(value)];
|
|
892
914
|
if (kind.kind === "relation") return relationLabels[relationLabelKey(kind.to, kind.by, String(value))];
|
|
893
|
-
if (kind.kind === "date") {
|
|
894
|
-
const
|
|
895
|
-
if (
|
|
896
|
-
return kind.time ?
|
|
915
|
+
if (kind.kind === "date" && viewer.status === "ready") {
|
|
916
|
+
const zone = resolveTimeZone(timeContext.levels, fieldZone, timeContext.sources);
|
|
917
|
+
if (zone.status === "pending") return void 0;
|
|
918
|
+
return formatTimeValue(kind.time ? "dateTime" : "date", String(value), {
|
|
919
|
+
zone: zone.zone,
|
|
920
|
+
viewerZone: viewer.zone,
|
|
921
|
+
locale: localeTag(locale),
|
|
922
|
+
params: {}
|
|
923
|
+
});
|
|
897
924
|
}
|
|
898
925
|
};
|
|
899
926
|
const orphanPinned = useMemo(() => {
|
|
@@ -1330,7 +1357,7 @@ function EnumValueControl(props) {
|
|
|
1330
1357
|
function useRelatedLabels(to, ids, by) {
|
|
1331
1358
|
const targetDef = useApp().registry.get(to);
|
|
1332
1359
|
const idField = (targetDef?.data)?.idField;
|
|
1333
|
-
const rowTitle = useRowTitle(to, targetDef?.displayField);
|
|
1360
|
+
const rowTitle = useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
1334
1361
|
const field = by ?? (typeof idField === "string" && idField.length > 0 ? idField : "id");
|
|
1335
1362
|
const query = useList(to, {
|
|
1336
1363
|
pagination: {
|
|
@@ -1374,7 +1401,7 @@ function RelationValueControl(props) {
|
|
|
1374
1401
|
arity,
|
|
1375
1402
|
onChange
|
|
1376
1403
|
});
|
|
1377
|
-
const rowTitle = useRowTitle(to, targetDef?.displayField);
|
|
1404
|
+
const rowTitle = useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
1378
1405
|
const access = useListAccess(to);
|
|
1379
1406
|
const searchable = useMemo(() => access.status === "ready" && narrowSearchDecl({ fields: [displayField] }, (name) => access.fieldVisible(name)) !== void 0, [access, displayField]);
|
|
1380
1407
|
const listQuery = useList(to, {
|
|
@@ -1480,21 +1507,56 @@ function RelationValueControl(props) {
|
|
|
1480
1507
|
});
|
|
1481
1508
|
}
|
|
1482
1509
|
//#endregion
|
|
1510
|
+
//#region src/fields/field-time-zone.ts
|
|
1511
|
+
function useFieldTimeZone(zone, row) {
|
|
1512
|
+
const { sources: session } = useTimeContext();
|
|
1513
|
+
const sources = useMemo(() => row === void 0 ? session : {
|
|
1514
|
+
...session,
|
|
1515
|
+
record: {
|
|
1516
|
+
status: "ready",
|
|
1517
|
+
value: row,
|
|
1518
|
+
refreshing: false
|
|
1519
|
+
}
|
|
1520
|
+
}, [session, row]);
|
|
1521
|
+
const fieldZone = useMemo(() => normaliseFieldZone(zone), [zone]);
|
|
1522
|
+
return useTimeZone(fieldZone, sources);
|
|
1523
|
+
}
|
|
1524
|
+
const DATE_KEYS = [
|
|
1525
|
+
"dateStyle",
|
|
1526
|
+
"timeStyle",
|
|
1527
|
+
"zoneName"
|
|
1528
|
+
];
|
|
1529
|
+
function dateDisplayParams(ui) {
|
|
1530
|
+
const display = ui?.display;
|
|
1531
|
+
if (display === null || typeof display !== "object") return {};
|
|
1532
|
+
const params = {};
|
|
1533
|
+
for (const key of DATE_KEYS) {
|
|
1534
|
+
const value = display[key];
|
|
1535
|
+
if (value !== void 0) params[key] = value;
|
|
1536
|
+
}
|
|
1537
|
+
return params;
|
|
1538
|
+
}
|
|
1539
|
+
//#endregion
|
|
1483
1540
|
//#region src/fields/local-date-time.ts
|
|
1484
|
-
function toLocalDateTimeText(value) {
|
|
1541
|
+
function toLocalDateTimeText(value, zone) {
|
|
1485
1542
|
if (value === void 0 || value === null || value === "") return "";
|
|
1486
|
-
const
|
|
1487
|
-
if (
|
|
1488
|
-
const
|
|
1489
|
-
return `${
|
|
1543
|
+
const instant = canonicalInstant(value instanceof Date ? value.toISOString() : String(value));
|
|
1544
|
+
if (instant === void 0) return "";
|
|
1545
|
+
const { date, time } = instantToWall(instant, zone);
|
|
1546
|
+
return `${date}T${time.slice(0, 5)}`;
|
|
1490
1547
|
}
|
|
1491
|
-
function fromLocalDateTimeText(text) {
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1548
|
+
function fromLocalDateTimeText(text, zone) {
|
|
1549
|
+
const [date, time, ...rest] = text.split("T");
|
|
1550
|
+
if (date === void 0 || time === void 0 || rest.length > 0) return void 0;
|
|
1551
|
+
if (!isCalendarDate(date) || !isWallTime(time)) return void 0;
|
|
1552
|
+
return wallToInstant(date, time, zone);
|
|
1495
1553
|
}
|
|
1496
1554
|
//#endregion
|
|
1497
1555
|
//#region src/list-kit/filter-builder/values/scalar-value-input.tsx
|
|
1556
|
+
function useFilterZone(fieldZone) {
|
|
1557
|
+
const zone = useFieldTimeZone(fieldZone, void 0);
|
|
1558
|
+
return zone.status === "ready" ? zone.zone : "UTC";
|
|
1559
|
+
}
|
|
1498
1560
|
function isDateTime(kind) {
|
|
1499
1561
|
return kind.kind === "date" && kind.time === true;
|
|
1500
1562
|
}
|
|
@@ -1505,18 +1567,18 @@ function inputTypeFor(kind) {
|
|
|
1505
1567
|
default: return "text";
|
|
1506
1568
|
}
|
|
1507
1569
|
}
|
|
1508
|
-
function toText(kind, value) {
|
|
1509
|
-
if (isDateTime(kind)) return toLocalDateTimeText(value);
|
|
1570
|
+
function toText(kind, value, zone) {
|
|
1571
|
+
if (isDateTime(kind)) return toLocalDateTimeText(value, zone);
|
|
1510
1572
|
if (value === void 0 || value === null || value === "") return "";
|
|
1511
1573
|
return String(value);
|
|
1512
1574
|
}
|
|
1513
|
-
function parseOne(kind, raw) {
|
|
1575
|
+
function parseOne(kind, raw, zone) {
|
|
1514
1576
|
if (raw === "") return void 0;
|
|
1515
1577
|
if (kind.kind === "number") {
|
|
1516
1578
|
const n = Number(raw);
|
|
1517
1579
|
return Number.isFinite(n) ? n : void 0;
|
|
1518
1580
|
}
|
|
1519
|
-
if (isDateTime(kind)) return fromLocalDateTimeText(raw);
|
|
1581
|
+
if (isDateTime(kind)) return fromLocalDateTimeText(raw, zone);
|
|
1520
1582
|
return raw;
|
|
1521
1583
|
}
|
|
1522
1584
|
function ScalarValueInput(props) {
|
|
@@ -1539,7 +1601,8 @@ function ScalarValueInput(props) {
|
|
|
1539
1601
|
}
|
|
1540
1602
|
function ScalarSingleInput(props) {
|
|
1541
1603
|
const { value, onChange, kind, testId, autoFocus, inputType, ariaLabel, debounceMs = 300 } = props;
|
|
1542
|
-
const
|
|
1604
|
+
const zone = useFilterZone(props.zone);
|
|
1605
|
+
const storedText = toText(kind, value, zone);
|
|
1543
1606
|
const [text, setText] = useState(storedText);
|
|
1544
1607
|
const lastPushedRef = useRef(storedText);
|
|
1545
1608
|
const timerRef = useRef(null);
|
|
@@ -1547,8 +1610,8 @@ function ScalarSingleInput(props) {
|
|
|
1547
1610
|
const commitRef = useRef(() => {});
|
|
1548
1611
|
useEffect(() => {
|
|
1549
1612
|
commitRef.current = (raw) => {
|
|
1550
|
-
const parsed = parseOne(kind, raw);
|
|
1551
|
-
lastPushedRef.current = toText(kind, parsed);
|
|
1613
|
+
const parsed = parseOne(kind, raw, zone);
|
|
1614
|
+
lastPushedRef.current = toText(kind, parsed, zone);
|
|
1552
1615
|
pendingRawRef.current = null;
|
|
1553
1616
|
onChange(parsed);
|
|
1554
1617
|
};
|
|
@@ -1597,8 +1660,9 @@ function ScalarMultiInput(props) {
|
|
|
1597
1660
|
const { value, onChange, kind, testId, autoFocus, inputType, ariaLabel } = props;
|
|
1598
1661
|
const chips = Array.isArray(value) ? value.map((v) => String(v)) : [];
|
|
1599
1662
|
const [draft, setDraft] = useState("");
|
|
1663
|
+
const zone = useFilterZone(props.zone);
|
|
1600
1664
|
const addChip = () => {
|
|
1601
|
-
const parsed = parseOne(kind, draft.trim());
|
|
1665
|
+
const parsed = parseOne(kind, draft.trim(), zone);
|
|
1602
1666
|
if (parsed === void 0) return;
|
|
1603
1667
|
const text = String(parsed);
|
|
1604
1668
|
setDraft("");
|
|
@@ -1788,6 +1852,7 @@ function FilterRow(props) {
|
|
|
1788
1852
|
debounceMs,
|
|
1789
1853
|
fieldLabel: spec.label,
|
|
1790
1854
|
options: spec.options,
|
|
1855
|
+
...spec.zone === void 0 ? {} : { zone: spec.zone },
|
|
1791
1856
|
fill: true
|
|
1792
1857
|
})
|
|
1793
1858
|
}),
|
|
@@ -2089,7 +2154,8 @@ function PinnedControl(props) {
|
|
|
2089
2154
|
testId: `${testIdBase}:pinned:${spec.field}`,
|
|
2090
2155
|
fieldLabel: spec.label,
|
|
2091
2156
|
placeholder: spec.label,
|
|
2092
|
-
options: spec.options
|
|
2157
|
+
options: spec.options,
|
|
2158
|
+
...spec.zone === void 0 ? {} : { zone: spec.zone }
|
|
2093
2159
|
});
|
|
2094
2160
|
}
|
|
2095
2161
|
//#endregion
|
|
@@ -2347,6 +2413,6 @@ function FilterBuilder(props) {
|
|
|
2347
2413
|
] });
|
|
2348
2414
|
}
|
|
2349
2415
|
//#endregion
|
|
2350
|
-
export {
|
|
2416
|
+
export { TableHeader as A, DEFAULT_LANGUAGE_STORAGE_KEY as B, SelectTrigger as C, TableCaption as D, TableBody as E, ResolvedFieldDisplay as F, saveLocale as H, ResolvedFieldInput as I, useFieldMetaDiagnostic as L, Badge as M, badgeVariants as N, TableCell as O, MetaPlaceholder as P, fieldDescription as R, SelectSeparator as S, Table as T, loadLocale as V, SelectGroup as _, PinnedFilterControls as a, SelectScrollDownButton as b, fromLocalDateTimeText as c, useFieldTimeZone as d, FilterBadges as f, SelectContent as g, Select as h, FacetedFilterPicker as i, TableRow as j, TableHead as k, toLocalDateTimeText as l, localeTag as m, PresetFilterControls as n, FilterPanel as o, formatNumber as p, DataTableFacetedFilter as r, FilterValueControl as s, FilterBuilder as t, dateDisplayParams as u, SelectItem as v, SelectValue as w, SelectScrollUpButton as x, SelectLabel as y, lowerLegacyField as z };
|
|
2351
2417
|
|
|
2352
|
-
//# sourceMappingURL=filter-builder-
|
|
2418
|
+
//# sourceMappingURL=filter-builder-04nas3eq.js.map
|