@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,7 +2,7 @@ const require_use_theme = require("./use-theme-DFlpXils.cjs");
|
|
|
2
2
|
const require_toaster = require("./toaster-BbByOytP.cjs");
|
|
3
3
|
const require_button = require("./button-BxnnE28H.cjs");
|
|
4
4
|
const require_input = require("./input-BI0czGyI.cjs");
|
|
5
|
-
const require_relation_create = require("./relation-create-
|
|
5
|
+
const require_relation_create = require("./relation-create-_SFuPQGM.cjs");
|
|
6
6
|
const require_skeleton = require("./skeleton-_1gP7wan.cjs");
|
|
7
7
|
let _burojs_core = require("@burojs/core");
|
|
8
8
|
let _burojs_react = require("@burojs/react");
|
|
@@ -11,6 +11,7 @@ let react = require("react");
|
|
|
11
11
|
react = require_use_theme.__toESM(react, 1);
|
|
12
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
13
13
|
let class_variance_authority = require("class-variance-authority");
|
|
14
|
+
let _burojs_core_internal = require("@burojs/core/internal");
|
|
14
15
|
let _radix_ui_react_select = require("@radix-ui/react-select");
|
|
15
16
|
_radix_ui_react_select = require_use_theme.__toESM(_radix_ui_react_select, 1);
|
|
16
17
|
//#region src/layout/language-storage.ts
|
|
@@ -100,6 +101,7 @@ const SEMANTIC_KEYS = Object.freeze([
|
|
|
100
101
|
"empty",
|
|
101
102
|
"default",
|
|
102
103
|
"constraints",
|
|
104
|
+
"zone",
|
|
103
105
|
"texts",
|
|
104
106
|
"options",
|
|
105
107
|
"items",
|
|
@@ -129,9 +131,11 @@ function projectUiSelection(input) {
|
|
|
129
131
|
const selection = {};
|
|
130
132
|
const inputId = ownSelection(input, "input");
|
|
131
133
|
const displayId = ownSelection(input, "display");
|
|
134
|
+
const layout = ownData(input, "layout").value;
|
|
132
135
|
if (inputId !== void 0) selection.input = inputId;
|
|
133
136
|
if (displayId !== void 0) selection.display = displayId;
|
|
134
|
-
|
|
137
|
+
if (Array.isArray(layout)) selection.layout = layout;
|
|
138
|
+
return Object.keys(selection).length === 0 ? void 0 : Object.freeze(selection);
|
|
135
139
|
}
|
|
136
140
|
function projectFieldDeclaration(input) {
|
|
137
141
|
const type = ownString(input, "type");
|
|
@@ -150,7 +154,16 @@ function projectFieldDeclaration(input) {
|
|
|
150
154
|
}
|
|
151
155
|
if (type === "object") {
|
|
152
156
|
const properties = ownData(input, "properties").value;
|
|
153
|
-
if (
|
|
157
|
+
if (Array.isArray(properties)) {
|
|
158
|
+
const output = {};
|
|
159
|
+
for (let index = 0; index < properties.length; index += 1) {
|
|
160
|
+
const entry = ownData(properties, index).value;
|
|
161
|
+
const name = ownString(entry, "name");
|
|
162
|
+
const child = projectFieldDeclaration(entry);
|
|
163
|
+
if (name !== void 0 && child !== void 0) output[name] = child;
|
|
164
|
+
}
|
|
165
|
+
projected.properties = Object.freeze(output);
|
|
166
|
+
} else if (properties !== null && typeof properties === "object") {
|
|
154
167
|
const output = {};
|
|
155
168
|
for (const key of Object.keys(properties)) {
|
|
156
169
|
const child = projectFieldDeclaration(ownData(properties, key).value);
|
|
@@ -207,6 +220,7 @@ function lowerLegacyField(field) {
|
|
|
207
220
|
const items = type === "array" ? projectFieldDeclaration(ownData(field, "items").value) ?? mapping?.items ?? STRING_ITEM : void 0;
|
|
208
221
|
const meta = ownData(field, "meta");
|
|
209
222
|
const texts = ownData(field, "texts");
|
|
223
|
+
const zone = ownData(field, "zone");
|
|
210
224
|
const options = kind === "enum" ? enumValueOptions(field) : void 0;
|
|
211
225
|
const required = ownData(field, "required");
|
|
212
226
|
const nullable = ownData(field, "nullable");
|
|
@@ -222,6 +236,7 @@ function lowerLegacyField(field) {
|
|
|
222
236
|
...meta.present && meta.value !== void 0 ? { meta: meta.value } : {},
|
|
223
237
|
...options === void 0 ? {} : { options },
|
|
224
238
|
...texts.present && texts.value !== void 0 ? { texts: texts.value } : {},
|
|
239
|
+
...zone.present && zone.value !== void 0 ? { zone: zone.value } : {},
|
|
225
240
|
...requiredValue === true ? { required: true } : {},
|
|
226
241
|
...nullableValue === true ? { nullable: true } : {}
|
|
227
242
|
});
|
|
@@ -373,7 +388,7 @@ function useFieldImplementationDiagnostic(diagnostic) {
|
|
|
373
388
|
console.warn("[buro/ui-shadcn] missing-field-implementation; rendering fallback.", diagnostic);
|
|
374
389
|
}, [diagnostic]);
|
|
375
390
|
}
|
|
376
|
-
function ResolvedFieldDisplay({ resource, name, field: source, value, record, testId, fallback, presentation, metaSources, uiSurface = "display", columnEntry }) {
|
|
391
|
+
function ResolvedFieldDisplay({ resource, name, field: source, value, record, testId, fallback, presentation, metaSources, uiSurface = "display", columnEntry, absentPaths, pathStatus }) {
|
|
377
392
|
const { sourceAtEdge, field, ui } = useLoweredField(source);
|
|
378
393
|
const surfaceField = (0, react.useMemo)(() => sourceAtEdge.ui === void 0 ? field : Object.freeze({
|
|
379
394
|
...field,
|
|
@@ -398,10 +413,19 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
398
413
|
const text = (0, _burojs_react.useFieldDisplayText)(textField, value, {
|
|
399
414
|
surface: uiSurface,
|
|
400
415
|
...columnEntry === void 0 ? {} : { entry: columnEntry },
|
|
401
|
-
resource: (0, _burojs_core.canonicalResourceKey)(resource)
|
|
416
|
+
resource: (0, _burojs_core.canonicalResourceKey)(resource),
|
|
417
|
+
...record === void 0 ? {} : { record }
|
|
402
418
|
});
|
|
403
419
|
const options = useContextOptions(field, name, metaState.status === "ready" ? metaState.meta : void 0, ui, resource);
|
|
404
420
|
const texts = useContextTexts(field, name, resolved, resource);
|
|
421
|
+
const dateDisplay = (0, _burojs_core.resolveSurfaceUi)(surfaceField, uiSurface, columnEntry).dateDisplay;
|
|
422
|
+
const contextUi = (0, react.useMemo)(() => dateDisplay === void 0 ? ui : Object.freeze({
|
|
423
|
+
...ui,
|
|
424
|
+
display: Object.freeze({
|
|
425
|
+
...typeof ui.display === "object" && ui.display !== null ? ui.display : {},
|
|
426
|
+
...dateDisplay
|
|
427
|
+
})
|
|
428
|
+
}), [ui, dateDisplay]);
|
|
405
429
|
useFieldMetaDiagnostic(metaState, resource, name, surfaceField, uiSurface, columnEntry);
|
|
406
430
|
useFieldImplementationDiagnostic(resolved.diagnostic);
|
|
407
431
|
if (resolved.Component === void 0) return (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: fallback });
|
|
@@ -412,11 +436,13 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
412
436
|
resource,
|
|
413
437
|
field,
|
|
414
438
|
path: Object.freeze([name]),
|
|
439
|
+
...absentPaths === void 0 || absentPaths.length === 0 ? {} : { absentPaths },
|
|
440
|
+
...pathStatus === void 0 ? {} : { pathStatus },
|
|
415
441
|
surface: "display",
|
|
416
442
|
presentation: presentation ?? "default",
|
|
417
443
|
record,
|
|
418
444
|
meta: metaState.meta,
|
|
419
|
-
ui,
|
|
445
|
+
ui: contextUi,
|
|
420
446
|
options,
|
|
421
447
|
texts,
|
|
422
448
|
...text === void 0 ? {} : { text },
|
|
@@ -439,7 +465,7 @@ function ResolvedFieldDisplay({ resource, name, field: source, value, record, te
|
|
|
439
465
|
value
|
|
440
466
|
});
|
|
441
467
|
}
|
|
442
|
-
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 }) {
|
|
468
|
+
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 }) {
|
|
443
469
|
const { sourceAtEdge, field: base } = useLoweredField(source);
|
|
444
470
|
const field = (0, react.useMemo)(() => required === void 0 || required === base.required ? base : Object.freeze({
|
|
445
471
|
...base,
|
|
@@ -481,6 +507,8 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
481
507
|
resource,
|
|
482
508
|
field,
|
|
483
509
|
path: Object.freeze([name]),
|
|
510
|
+
...absentPaths === void 0 || absentPaths.length === 0 ? {} : { absentPaths },
|
|
511
|
+
...pathStatus === void 0 ? {} : { pathStatus },
|
|
484
512
|
surface: "input",
|
|
485
513
|
presentation: "default",
|
|
486
514
|
record,
|
|
@@ -511,8 +539,10 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
511
539
|
disabled,
|
|
512
540
|
relationSeeds,
|
|
513
541
|
fixedFilters,
|
|
542
|
+
optionSubtitle,
|
|
514
543
|
link,
|
|
515
|
-
metaSources: runtimeContext.metaSources
|
|
544
|
+
metaSources: runtimeContext.metaSources,
|
|
545
|
+
...baseline === void 0 ? {} : { baseline }
|
|
516
546
|
});
|
|
517
547
|
return (0, react.createElement)(Component, {
|
|
518
548
|
...context,
|
|
@@ -523,8 +553,10 @@ function ResolvedFieldInput({ resource, name, field: source, value, record, form
|
|
|
523
553
|
disabled,
|
|
524
554
|
relationSeeds,
|
|
525
555
|
fixedFilters,
|
|
556
|
+
optionSubtitle,
|
|
526
557
|
link,
|
|
527
|
-
metaSources: runtimeContext.metaSources
|
|
558
|
+
metaSources: runtimeContext.metaSources,
|
|
559
|
+
...baseline === void 0 ? {} : { baseline }
|
|
528
560
|
});
|
|
529
561
|
}
|
|
530
562
|
//#endregion
|
|
@@ -600,7 +632,15 @@ const TableCaption = react.forwardRef(({ className, ...props }, ref) => (0, reac
|
|
|
600
632
|
TableCaption.displayName = "TableCaption";
|
|
601
633
|
//#endregion
|
|
602
634
|
//#region src/primitives/select.tsx
|
|
603
|
-
|
|
635
|
+
function Select({ onValueChange, ...props }) {
|
|
636
|
+
return (0, react_jsx_runtime.jsx)(_radix_ui_react_select.Root, {
|
|
637
|
+
...props,
|
|
638
|
+
...onValueChange === void 0 ? {} : { onValueChange: (next) => {
|
|
639
|
+
if (next !== "") onValueChange(next);
|
|
640
|
+
} }
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
Select.displayName = _radix_ui_react_select.Root.displayName;
|
|
604
644
|
const SelectGroup = _radix_ui_react_select.Group;
|
|
605
645
|
const SelectValue = _radix_ui_react_select.Value;
|
|
606
646
|
const SelectTrigger = react.forwardRef(({ className, children, ...props }, ref) => (0, react_jsx_runtime.jsxs)(_radix_ui_react_select.Trigger, {
|
|
@@ -678,8 +718,6 @@ SelectSeparator.displayName = _radix_ui_react_select.Separator.displayName;
|
|
|
678
718
|
function localeTag(locale) {
|
|
679
719
|
return locale || loadLocale() || "en-US";
|
|
680
720
|
}
|
|
681
|
-
const dateCache = new Map();
|
|
682
|
-
const dateTimeCache = new Map();
|
|
683
721
|
const numberCache = new Map();
|
|
684
722
|
function cached(cache, key, make) {
|
|
685
723
|
const hit = cache.get(key);
|
|
@@ -693,24 +731,6 @@ function cached(cache, key, make) {
|
|
|
693
731
|
cache.set(key, made);
|
|
694
732
|
return made;
|
|
695
733
|
}
|
|
696
|
-
function formatDate(d, locale) {
|
|
697
|
-
const tag = localeTag(locale);
|
|
698
|
-
return cached(dateCache, tag, (t) => new Intl.DateTimeFormat(t, {
|
|
699
|
-
year: "numeric",
|
|
700
|
-
month: "short",
|
|
701
|
-
day: "numeric"
|
|
702
|
-
})).format(d);
|
|
703
|
-
}
|
|
704
|
-
function formatDateTime(d, locale) {
|
|
705
|
-
const tag = localeTag(locale);
|
|
706
|
-
return cached(dateTimeCache, tag, (t) => new Intl.DateTimeFormat(t, {
|
|
707
|
-
year: "numeric",
|
|
708
|
-
month: "short",
|
|
709
|
-
day: "numeric",
|
|
710
|
-
hour: "2-digit",
|
|
711
|
-
minute: "2-digit"
|
|
712
|
-
})).format(d);
|
|
713
|
-
}
|
|
714
734
|
function formatNumber(n, locale) {
|
|
715
735
|
const tag = localeTag(locale);
|
|
716
736
|
return cached(numberCache, tag, (t) => new Intl.NumberFormat(t)).format(n);
|
|
@@ -724,7 +744,7 @@ function describeValue(value, chromeT, spec, formatValue) {
|
|
|
724
744
|
const optionLabel = spec?.options?.find((o) => o.value === String(value))?.label;
|
|
725
745
|
if (optionLabel !== void 0) return optionLabel;
|
|
726
746
|
if (spec && formatValue) {
|
|
727
|
-
const formatted = formatValue(spec.kind, value);
|
|
747
|
+
const formatted = formatValue(spec.kind, value, spec.zone);
|
|
728
748
|
if (formatted !== void 0) return formatted;
|
|
729
749
|
}
|
|
730
750
|
return String(value);
|
|
@@ -805,7 +825,7 @@ function RelationLabelResolver(props) {
|
|
|
805
825
|
const { to, id, by, onResolve } = props;
|
|
806
826
|
const targetDef = (0, _burojs_react.useApp)().registry.get(to);
|
|
807
827
|
const { record } = (0, _burojs_react.useRelatedRecord)(to, id, by === void 0 ? void 0 : { by });
|
|
808
|
-
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField);
|
|
828
|
+
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
809
829
|
(0, react.useEffect)(() => {
|
|
810
830
|
if (!record) return;
|
|
811
831
|
onResolve(relationLabelKey(to, by, id), rowTitle(record));
|
|
@@ -881,6 +901,8 @@ function FilterBadges(props) {
|
|
|
881
901
|
const { group, setGroup, available, fixed, testIdBase, onOpenAt, onRemoved, pinnedFields = [], pinnedValue = [], setPinnedValue } = props;
|
|
882
902
|
const chromeT = (0, _burojs_react.useChromeT)();
|
|
883
903
|
const locale = (0, _burojs_react.useOptionalLocale)();
|
|
904
|
+
const viewer = (0, _burojs_react.useTimeZone)();
|
|
905
|
+
const timeContext = (0, _burojs_react.useTimeContext)();
|
|
884
906
|
const tt = (key, params, fallback) => chromeT(key, {
|
|
885
907
|
params,
|
|
886
908
|
...typeof params?.count === "number" ? { count: params.count } : {},
|
|
@@ -888,13 +910,18 @@ function FilterBadges(props) {
|
|
|
888
910
|
});
|
|
889
911
|
const removeLabel = chromeT("filters.removeRow", { defaultValue: "Remove filter" });
|
|
890
912
|
const { enumLabels, relationLabels, onEnumResolved, onRelationResolved } = useFormatValueMaps();
|
|
891
|
-
const formatValue = (kind, value) => {
|
|
913
|
+
const formatValue = (kind, value, fieldZone) => {
|
|
892
914
|
if (kind.kind === "enum") return enumLabels[kind.enumName]?.[String(value)];
|
|
893
915
|
if (kind.kind === "relation") return relationLabels[relationLabelKey(kind.to, kind.by, String(value))];
|
|
894
|
-
if (kind.kind === "date") {
|
|
895
|
-
const
|
|
896
|
-
if (
|
|
897
|
-
return kind.time ?
|
|
916
|
+
if (kind.kind === "date" && viewer.status === "ready") {
|
|
917
|
+
const zone = (0, _burojs_core.resolveTimeZone)(timeContext.levels, fieldZone, timeContext.sources);
|
|
918
|
+
if (zone.status === "pending") return void 0;
|
|
919
|
+
return (0, _burojs_core.formatTimeValue)(kind.time ? "dateTime" : "date", String(value), {
|
|
920
|
+
zone: zone.zone,
|
|
921
|
+
viewerZone: viewer.zone,
|
|
922
|
+
locale: localeTag(locale),
|
|
923
|
+
params: {}
|
|
924
|
+
});
|
|
898
925
|
}
|
|
899
926
|
};
|
|
900
927
|
const orphanPinned = (0, react.useMemo)(() => {
|
|
@@ -1331,7 +1358,7 @@ function EnumValueControl(props) {
|
|
|
1331
1358
|
function useRelatedLabels(to, ids, by) {
|
|
1332
1359
|
const targetDef = (0, _burojs_react.useApp)().registry.get(to);
|
|
1333
1360
|
const idField = (targetDef?.data)?.idField;
|
|
1334
|
-
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField);
|
|
1361
|
+
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
1335
1362
|
const field = by ?? (typeof idField === "string" && idField.length > 0 ? idField : "id");
|
|
1336
1363
|
const query = (0, _burojs_react.useList)(to, {
|
|
1337
1364
|
pagination: {
|
|
@@ -1375,7 +1402,7 @@ function RelationValueControl(props) {
|
|
|
1375
1402
|
arity,
|
|
1376
1403
|
onChange
|
|
1377
1404
|
});
|
|
1378
|
-
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField);
|
|
1405
|
+
const rowTitle = require_relation_create.useRowTitle(to, targetDef?.displayField, { recordTitle: true });
|
|
1379
1406
|
const access = (0, _burojs_react.useListAccess)(to);
|
|
1380
1407
|
const searchable = (0, react.useMemo)(() => access.status === "ready" && require_relation_create.narrowSearchDecl({ fields: [displayField] }, (name) => access.fieldVisible(name)) !== void 0, [access, displayField]);
|
|
1381
1408
|
const listQuery = (0, _burojs_react.useList)(to, {
|
|
@@ -1481,21 +1508,56 @@ function RelationValueControl(props) {
|
|
|
1481
1508
|
});
|
|
1482
1509
|
}
|
|
1483
1510
|
//#endregion
|
|
1511
|
+
//#region src/fields/field-time-zone.ts
|
|
1512
|
+
function useFieldTimeZone(zone, row) {
|
|
1513
|
+
const { sources: session } = (0, _burojs_react.useTimeContext)();
|
|
1514
|
+
const sources = (0, react.useMemo)(() => row === void 0 ? session : {
|
|
1515
|
+
...session,
|
|
1516
|
+
record: {
|
|
1517
|
+
status: "ready",
|
|
1518
|
+
value: row,
|
|
1519
|
+
refreshing: false
|
|
1520
|
+
}
|
|
1521
|
+
}, [session, row]);
|
|
1522
|
+
const fieldZone = (0, react.useMemo)(() => (0, _burojs_core_internal.normaliseFieldZone)(zone), [zone]);
|
|
1523
|
+
return (0, _burojs_react.useTimeZone)(fieldZone, sources);
|
|
1524
|
+
}
|
|
1525
|
+
const DATE_KEYS = [
|
|
1526
|
+
"dateStyle",
|
|
1527
|
+
"timeStyle",
|
|
1528
|
+
"zoneName"
|
|
1529
|
+
];
|
|
1530
|
+
function dateDisplayParams(ui) {
|
|
1531
|
+
const display = ui?.display;
|
|
1532
|
+
if (display === null || typeof display !== "object") return {};
|
|
1533
|
+
const params = {};
|
|
1534
|
+
for (const key of DATE_KEYS) {
|
|
1535
|
+
const value = display[key];
|
|
1536
|
+
if (value !== void 0) params[key] = value;
|
|
1537
|
+
}
|
|
1538
|
+
return params;
|
|
1539
|
+
}
|
|
1540
|
+
//#endregion
|
|
1484
1541
|
//#region src/fields/local-date-time.ts
|
|
1485
|
-
function toLocalDateTimeText(value) {
|
|
1542
|
+
function toLocalDateTimeText(value, zone) {
|
|
1486
1543
|
if (value === void 0 || value === null || value === "") return "";
|
|
1487
|
-
const
|
|
1488
|
-
if (
|
|
1489
|
-
const
|
|
1490
|
-
return `${
|
|
1544
|
+
const instant = (0, _burojs_core.canonicalInstant)(value instanceof Date ? value.toISOString() : String(value));
|
|
1545
|
+
if (instant === void 0) return "";
|
|
1546
|
+
const { date, time } = (0, _burojs_core.instantToWall)(instant, zone);
|
|
1547
|
+
return `${date}T${time.slice(0, 5)}`;
|
|
1491
1548
|
}
|
|
1492
|
-
function fromLocalDateTimeText(text) {
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1549
|
+
function fromLocalDateTimeText(text, zone) {
|
|
1550
|
+
const [date, time, ...rest] = text.split("T");
|
|
1551
|
+
if (date === void 0 || time === void 0 || rest.length > 0) return void 0;
|
|
1552
|
+
if (!(0, _burojs_core.isCalendarDate)(date) || !(0, _burojs_core.isWallTime)(time)) return void 0;
|
|
1553
|
+
return (0, _burojs_core.wallToInstant)(date, time, zone);
|
|
1496
1554
|
}
|
|
1497
1555
|
//#endregion
|
|
1498
1556
|
//#region src/list-kit/filter-builder/values/scalar-value-input.tsx
|
|
1557
|
+
function useFilterZone(fieldZone) {
|
|
1558
|
+
const zone = useFieldTimeZone(fieldZone, void 0);
|
|
1559
|
+
return zone.status === "ready" ? zone.zone : "UTC";
|
|
1560
|
+
}
|
|
1499
1561
|
function isDateTime(kind) {
|
|
1500
1562
|
return kind.kind === "date" && kind.time === true;
|
|
1501
1563
|
}
|
|
@@ -1506,18 +1568,18 @@ function inputTypeFor(kind) {
|
|
|
1506
1568
|
default: return "text";
|
|
1507
1569
|
}
|
|
1508
1570
|
}
|
|
1509
|
-
function toText(kind, value) {
|
|
1510
|
-
if (isDateTime(kind)) return toLocalDateTimeText(value);
|
|
1571
|
+
function toText(kind, value, zone) {
|
|
1572
|
+
if (isDateTime(kind)) return toLocalDateTimeText(value, zone);
|
|
1511
1573
|
if (value === void 0 || value === null || value === "") return "";
|
|
1512
1574
|
return String(value);
|
|
1513
1575
|
}
|
|
1514
|
-
function parseOne(kind, raw) {
|
|
1576
|
+
function parseOne(kind, raw, zone) {
|
|
1515
1577
|
if (raw === "") return void 0;
|
|
1516
1578
|
if (kind.kind === "number") {
|
|
1517
1579
|
const n = Number(raw);
|
|
1518
1580
|
return Number.isFinite(n) ? n : void 0;
|
|
1519
1581
|
}
|
|
1520
|
-
if (isDateTime(kind)) return fromLocalDateTimeText(raw);
|
|
1582
|
+
if (isDateTime(kind)) return fromLocalDateTimeText(raw, zone);
|
|
1521
1583
|
return raw;
|
|
1522
1584
|
}
|
|
1523
1585
|
function ScalarValueInput(props) {
|
|
@@ -1540,7 +1602,8 @@ function ScalarValueInput(props) {
|
|
|
1540
1602
|
}
|
|
1541
1603
|
function ScalarSingleInput(props) {
|
|
1542
1604
|
const { value, onChange, kind, testId, autoFocus, inputType, ariaLabel, debounceMs = 300 } = props;
|
|
1543
|
-
const
|
|
1605
|
+
const zone = useFilterZone(props.zone);
|
|
1606
|
+
const storedText = toText(kind, value, zone);
|
|
1544
1607
|
const [text, setText] = (0, react.useState)(storedText);
|
|
1545
1608
|
const lastPushedRef = (0, react.useRef)(storedText);
|
|
1546
1609
|
const timerRef = (0, react.useRef)(null);
|
|
@@ -1548,8 +1611,8 @@ function ScalarSingleInput(props) {
|
|
|
1548
1611
|
const commitRef = (0, react.useRef)(() => {});
|
|
1549
1612
|
(0, react.useEffect)(() => {
|
|
1550
1613
|
commitRef.current = (raw) => {
|
|
1551
|
-
const parsed = parseOne(kind, raw);
|
|
1552
|
-
lastPushedRef.current = toText(kind, parsed);
|
|
1614
|
+
const parsed = parseOne(kind, raw, zone);
|
|
1615
|
+
lastPushedRef.current = toText(kind, parsed, zone);
|
|
1553
1616
|
pendingRawRef.current = null;
|
|
1554
1617
|
onChange(parsed);
|
|
1555
1618
|
};
|
|
@@ -1598,8 +1661,9 @@ function ScalarMultiInput(props) {
|
|
|
1598
1661
|
const { value, onChange, kind, testId, autoFocus, inputType, ariaLabel } = props;
|
|
1599
1662
|
const chips = Array.isArray(value) ? value.map((v) => String(v)) : [];
|
|
1600
1663
|
const [draft, setDraft] = (0, react.useState)("");
|
|
1664
|
+
const zone = useFilterZone(props.zone);
|
|
1601
1665
|
const addChip = () => {
|
|
1602
|
-
const parsed = parseOne(kind, draft.trim());
|
|
1666
|
+
const parsed = parseOne(kind, draft.trim(), zone);
|
|
1603
1667
|
if (parsed === void 0) return;
|
|
1604
1668
|
const text = String(parsed);
|
|
1605
1669
|
setDraft("");
|
|
@@ -1789,6 +1853,7 @@ function FilterRow(props) {
|
|
|
1789
1853
|
debounceMs,
|
|
1790
1854
|
fieldLabel: spec.label,
|
|
1791
1855
|
options: spec.options,
|
|
1856
|
+
...spec.zone === void 0 ? {} : { zone: spec.zone },
|
|
1792
1857
|
fill: true
|
|
1793
1858
|
})
|
|
1794
1859
|
}),
|
|
@@ -2090,7 +2155,8 @@ function PinnedControl(props) {
|
|
|
2090
2155
|
testId: `${testIdBase}:pinned:${spec.field}`,
|
|
2091
2156
|
fieldLabel: spec.label,
|
|
2092
2157
|
placeholder: spec.label,
|
|
2093
|
-
options: spec.options
|
|
2158
|
+
options: spec.options,
|
|
2159
|
+
...spec.zone === void 0 ? {} : { zone: spec.zone }
|
|
2094
2160
|
});
|
|
2095
2161
|
}
|
|
2096
2162
|
//#endregion
|
|
@@ -2528,22 +2594,16 @@ Object.defineProperty(exports, "badgeVariants", {
|
|
|
2528
2594
|
return badgeVariants;
|
|
2529
2595
|
}
|
|
2530
2596
|
});
|
|
2531
|
-
Object.defineProperty(exports, "
|
|
2597
|
+
Object.defineProperty(exports, "dateDisplayParams", {
|
|
2532
2598
|
enumerable: true,
|
|
2533
2599
|
get: function() {
|
|
2534
|
-
return
|
|
2600
|
+
return dateDisplayParams;
|
|
2535
2601
|
}
|
|
2536
2602
|
});
|
|
2537
|
-
Object.defineProperty(exports, "
|
|
2538
|
-
enumerable: true,
|
|
2539
|
-
get: function() {
|
|
2540
|
-
return formatDate;
|
|
2541
|
-
}
|
|
2542
|
-
});
|
|
2543
|
-
Object.defineProperty(exports, "formatDateTime", {
|
|
2603
|
+
Object.defineProperty(exports, "fieldDescription", {
|
|
2544
2604
|
enumerable: true,
|
|
2545
2605
|
get: function() {
|
|
2546
|
-
return
|
|
2606
|
+
return fieldDescription;
|
|
2547
2607
|
}
|
|
2548
2608
|
});
|
|
2549
2609
|
Object.defineProperty(exports, "formatNumber", {
|
|
@@ -2564,6 +2624,12 @@ Object.defineProperty(exports, "loadLocale", {
|
|
|
2564
2624
|
return loadLocale;
|
|
2565
2625
|
}
|
|
2566
2626
|
});
|
|
2627
|
+
Object.defineProperty(exports, "localeTag", {
|
|
2628
|
+
enumerable: true,
|
|
2629
|
+
get: function() {
|
|
2630
|
+
return localeTag;
|
|
2631
|
+
}
|
|
2632
|
+
});
|
|
2567
2633
|
Object.defineProperty(exports, "lowerLegacyField", {
|
|
2568
2634
|
enumerable: true,
|
|
2569
2635
|
get: function() {
|
|
@@ -2588,5 +2654,11 @@ Object.defineProperty(exports, "useFieldMetaDiagnostic", {
|
|
|
2588
2654
|
return useFieldMetaDiagnostic;
|
|
2589
2655
|
}
|
|
2590
2656
|
});
|
|
2657
|
+
Object.defineProperty(exports, "useFieldTimeZone", {
|
|
2658
|
+
enumerable: true,
|
|
2659
|
+
get: function() {
|
|
2660
|
+
return useFieldTimeZone;
|
|
2661
|
+
}
|
|
2662
|
+
});
|
|
2591
2663
|
|
|
2592
|
-
//# sourceMappingURL=filter-builder-
|
|
2664
|
+
//# sourceMappingURL=filter-builder-DQX-TMFh.cjs.map
|