@almadar/ui 5.126.0 → 5.127.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/avl/index.cjs +52 -39
- package/dist/avl/index.js +53 -40
- package/dist/components/index.cjs +51 -38
- package/dist/components/index.d.cts +27 -1
- package/dist/components/index.d.ts +27 -1
- package/dist/components/index.js +51 -38
- package/dist/providers/index.cjs +51 -38
- package/dist/providers/index.js +51 -38
- package/dist/runtime/index.cjs +52 -39
- package/dist/runtime/index.js +53 -40
- package/package.json +5 -5
package/dist/runtime/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
11
11
|
import { createPortal } from 'react-dom';
|
|
12
12
|
import { useTranslate } from '@almadar/ui/hooks';
|
|
13
13
|
import { useUISlots, UISlotProvider, useTheme } from '@almadar/ui/context';
|
|
14
|
-
import { evaluateGuard, evaluate, createMinimalContext, executeEffects } from '@almadar/evaluator';
|
|
14
|
+
import { evaluateGuard, evaluateListenPayloadExpr, evaluate, createMinimalContext, executeEffects } from '@almadar/evaluator';
|
|
15
15
|
import { wrapCallbackForEvent, prepareSchemaForPreview, perfStore, pushPerfEntry, collectTraitRefsFromResolvedTrait, buildOrbitalsByTrait, collectEmbeddedTraits } from '@almadar/runtime/ui';
|
|
16
16
|
export { PERF_NAMESPACE, adjustSchemaForMockData, buildMockData, clearPerf, perfEnd, perfStart, perfTime, prepareSchemaForPreview, wrapCallbackForEvent } from '@almadar/runtime/ui';
|
|
17
17
|
import { Link, Outlet, useLocation } from 'react-router-dom';
|
|
@@ -18437,6 +18437,32 @@ var init_ButtonGroup = __esm({
|
|
|
18437
18437
|
ButtonGroup.displayName = "ButtonGroup";
|
|
18438
18438
|
}
|
|
18439
18439
|
});
|
|
18440
|
+
|
|
18441
|
+
// lib/getNestedValue.ts
|
|
18442
|
+
function getNestedValue(obj, path) {
|
|
18443
|
+
if (obj === null || obj === void 0 || !path) {
|
|
18444
|
+
return void 0;
|
|
18445
|
+
}
|
|
18446
|
+
if (!path.includes(".")) {
|
|
18447
|
+
return obj[path];
|
|
18448
|
+
}
|
|
18449
|
+
const parts = path.split(".");
|
|
18450
|
+
let value = obj;
|
|
18451
|
+
for (const part of parts) {
|
|
18452
|
+
if (value === null || value === void 0) {
|
|
18453
|
+
return void 0;
|
|
18454
|
+
}
|
|
18455
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
18456
|
+
return void 0;
|
|
18457
|
+
}
|
|
18458
|
+
value = value[part];
|
|
18459
|
+
}
|
|
18460
|
+
return value;
|
|
18461
|
+
}
|
|
18462
|
+
var init_getNestedValue = __esm({
|
|
18463
|
+
"lib/getNestedValue.ts"() {
|
|
18464
|
+
}
|
|
18465
|
+
});
|
|
18440
18466
|
function dayWindowForViewport(width) {
|
|
18441
18467
|
if (width <= 640) return 1;
|
|
18442
18468
|
if (width <= 1024) return 3;
|
|
@@ -18483,11 +18509,15 @@ function getWeekDays(start) {
|
|
|
18483
18509
|
}
|
|
18484
18510
|
return days;
|
|
18485
18511
|
}
|
|
18486
|
-
function
|
|
18512
|
+
function eventStartDate(event, startField) {
|
|
18513
|
+
const raw = getNestedValue(event, startField);
|
|
18514
|
+
return new Date(raw ?? "");
|
|
18515
|
+
}
|
|
18516
|
+
function generateDefaultTimeSlots(events2, startField) {
|
|
18487
18517
|
let first = DEFAULT_FIRST_HOUR;
|
|
18488
18518
|
let last = DEFAULT_LAST_HOUR;
|
|
18489
18519
|
for (const ev of events2) {
|
|
18490
|
-
const start =
|
|
18520
|
+
const start = eventStartDate(ev, startField);
|
|
18491
18521
|
if (Number.isNaN(start.getTime())) continue;
|
|
18492
18522
|
const hour = start.getHours();
|
|
18493
18523
|
if (hour < first) first = hour;
|
|
@@ -18499,8 +18529,8 @@ function generateDefaultTimeSlots(events2) {
|
|
|
18499
18529
|
}
|
|
18500
18530
|
return slots;
|
|
18501
18531
|
}
|
|
18502
|
-
function eventInSlot(event, day, slotTime) {
|
|
18503
|
-
const eventStart =
|
|
18532
|
+
function eventInSlot(event, day, slotTime, startField) {
|
|
18533
|
+
const eventStart = eventStartDate(event, startField);
|
|
18504
18534
|
if (Number.isNaN(eventStart.getTime())) return false;
|
|
18505
18535
|
const [slotHour] = slotTime.split(":").map(Number);
|
|
18506
18536
|
return eventStart.toDateString() === day.toDateString() && eventStart.getHours() === slotHour;
|
|
@@ -18517,7 +18547,12 @@ function CalendarGrid({
|
|
|
18517
18547
|
longPressPayload,
|
|
18518
18548
|
swipeLeftEvent,
|
|
18519
18549
|
swipeRightEvent,
|
|
18520
|
-
dayWindow = "auto"
|
|
18550
|
+
dayWindow = "auto",
|
|
18551
|
+
titleField = "title",
|
|
18552
|
+
startField = "startTime",
|
|
18553
|
+
colorField = "color",
|
|
18554
|
+
children,
|
|
18555
|
+
renderItem
|
|
18521
18556
|
}) {
|
|
18522
18557
|
const evs = Array.isArray(events2) ? events2 : events2 ? [events2] : [];
|
|
18523
18558
|
const eventBus = useEventBus();
|
|
@@ -18532,8 +18567,8 @@ function CalendarGrid({
|
|
|
18532
18567
|
[resolvedWeekStart]
|
|
18533
18568
|
);
|
|
18534
18569
|
const resolvedTimeSlots = useMemo(
|
|
18535
|
-
() => timeSlots ?? generateDefaultTimeSlots(evs),
|
|
18536
|
-
[timeSlots, evs]
|
|
18570
|
+
() => timeSlots ?? generateDefaultTimeSlots(evs, startField),
|
|
18571
|
+
[timeSlots, evs, startField]
|
|
18537
18572
|
);
|
|
18538
18573
|
const visibleCount = useDayWindow(dayWindow);
|
|
18539
18574
|
const [dayOffset, setDayOffset] = useState(0);
|
|
@@ -18570,9 +18605,9 @@ function CalendarGrid({
|
|
|
18570
18605
|
);
|
|
18571
18606
|
const eventsForDayCount = useCallback(
|
|
18572
18607
|
(day) => evs.filter(
|
|
18573
|
-
(ev) =>
|
|
18608
|
+
(ev) => eventStartDate(ev, startField).toDateString() === day.toDateString()
|
|
18574
18609
|
).length,
|
|
18575
|
-
[events2]
|
|
18610
|
+
[events2, startField]
|
|
18576
18611
|
);
|
|
18577
18612
|
const swipeCallbacks = useMemo(() => ({
|
|
18578
18613
|
onSwipeLeft: swipeLeftEvent ? () => eventBus.emit(`UI:${swipeLeftEvent}`, {}) : void 0,
|
|
@@ -18591,8 +18626,11 @@ function CalendarGrid({
|
|
|
18591
18626
|
eventBus.emit(`UI:${longPressEvent}`, { date: day.toISOString(), time, ...longPressPayload });
|
|
18592
18627
|
}, 500);
|
|
18593
18628
|
}, [longPressEvent, longPressPayload, eventBus]);
|
|
18629
|
+
const renderChip = children ?? renderItem;
|
|
18594
18630
|
const renderEvent = (event) => {
|
|
18595
|
-
const color = event
|
|
18631
|
+
const color = getNestedValue(event, colorField);
|
|
18632
|
+
const label = String(getNestedValue(event, titleField) ?? "");
|
|
18633
|
+
const eventIndex = evs.indexOf(event);
|
|
18596
18634
|
return /* @__PURE__ */ jsx(
|
|
18597
18635
|
Box,
|
|
18598
18636
|
{
|
|
@@ -18604,7 +18642,7 @@ function CalendarGrid({
|
|
|
18604
18642
|
color ? color : "bg-primary/10 border-primary/30 text-primary"
|
|
18605
18643
|
),
|
|
18606
18644
|
onClick: (e) => handleEventClick(event, e),
|
|
18607
|
-
children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children:
|
|
18645
|
+
children: renderChip ? renderChip(event, eventIndex) : /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children: label })
|
|
18608
18646
|
},
|
|
18609
18647
|
event.id
|
|
18610
18648
|
);
|
|
@@ -18688,7 +18726,7 @@ function CalendarGrid({
|
|
|
18688
18726
|
) }),
|
|
18689
18727
|
visibleDays.map((day) => {
|
|
18690
18728
|
const slotEvents = evs.filter(
|
|
18691
|
-
(ev) => eventInSlot(ev, day, time)
|
|
18729
|
+
(ev) => eventInSlot(ev, day, time, startField)
|
|
18692
18730
|
);
|
|
18693
18731
|
const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
18694
18732
|
return /* @__PURE__ */ jsx(
|
|
@@ -18725,6 +18763,7 @@ var init_CalendarGrid = __esm({
|
|
|
18725
18763
|
"components/core/molecules/CalendarGrid.tsx"() {
|
|
18726
18764
|
"use client";
|
|
18727
18765
|
init_cn();
|
|
18766
|
+
init_getNestedValue();
|
|
18728
18767
|
init_Box();
|
|
18729
18768
|
init_Button();
|
|
18730
18769
|
init_Stack();
|
|
@@ -18741,32 +18780,6 @@ var init_CalendarGrid = __esm({
|
|
|
18741
18780
|
CalendarGrid.displayName = "CalendarGrid";
|
|
18742
18781
|
}
|
|
18743
18782
|
});
|
|
18744
|
-
|
|
18745
|
-
// lib/getNestedValue.ts
|
|
18746
|
-
function getNestedValue(obj, path) {
|
|
18747
|
-
if (obj === null || obj === void 0 || !path) {
|
|
18748
|
-
return void 0;
|
|
18749
|
-
}
|
|
18750
|
-
if (!path.includes(".")) {
|
|
18751
|
-
return obj[path];
|
|
18752
|
-
}
|
|
18753
|
-
const parts = path.split(".");
|
|
18754
|
-
let value = obj;
|
|
18755
|
-
for (const part of parts) {
|
|
18756
|
-
if (value === null || value === void 0) {
|
|
18757
|
-
return void 0;
|
|
18758
|
-
}
|
|
18759
|
-
if (typeof value !== "object" || Array.isArray(value)) {
|
|
18760
|
-
return void 0;
|
|
18761
|
-
}
|
|
18762
|
-
value = value[part];
|
|
18763
|
-
}
|
|
18764
|
-
return value;
|
|
18765
|
-
}
|
|
18766
|
-
var init_getNestedValue = __esm({
|
|
18767
|
-
"lib/getNestedValue.ts"() {
|
|
18768
|
-
}
|
|
18769
|
-
});
|
|
18770
18783
|
var Pagination;
|
|
18771
18784
|
var init_Pagination = __esm({
|
|
18772
18785
|
"components/core/molecules/Pagination.tsx"() {
|
|
@@ -45336,7 +45349,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
|
|
|
45336
45349
|
crossTraitLog.debug("listen:fired", { busKey, targetTrait: binding.trait.name, triggers: listen.triggers });
|
|
45337
45350
|
enqueueAndDrain(
|
|
45338
45351
|
listen.triggers,
|
|
45339
|
-
applyListenPayloadMapping(listen.payloadMapping, event.payload),
|
|
45352
|
+
applyListenPayloadMapping(listen.payloadMapping, event.payload, evaluateListenPayloadExpr),
|
|
45340
45353
|
binding.trait.name
|
|
45341
45354
|
);
|
|
45342
45355
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@almadar/ui",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.127.0",
|
|
4
4
|
"description": "React UI components, hooks, and providers for Almadar",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -117,11 +117,11 @@
|
|
|
117
117
|
"access": "public"
|
|
118
118
|
},
|
|
119
119
|
"dependencies": {
|
|
120
|
-
"@almadar/core": "^10.
|
|
121
|
-
"@almadar/evaluator": "^2.
|
|
120
|
+
"@almadar/core": "^10.35.0",
|
|
121
|
+
"@almadar/evaluator": "^2.36.0",
|
|
122
122
|
"@almadar/logger": "^1.10.0",
|
|
123
|
-
"@almadar/runtime": "^6.
|
|
124
|
-
"@almadar/std": "^16.
|
|
123
|
+
"@almadar/runtime": "^6.38.0",
|
|
124
|
+
"@almadar/std": "^16.145.0",
|
|
125
125
|
"@almadar/syntax": "^1.12.0",
|
|
126
126
|
"@dnd-kit/core": "^6.3.1",
|
|
127
127
|
"@dnd-kit/sortable": "^10.0.0",
|