@revolist/ui 4.0.3-rc → 4.0.5-rc
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/OWNERSHIP.md +1 -1
- package/README.md +16 -0
- package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
- package/_chunks/badge.view-D30pMUfi.js +14 -0
- package/_chunks/calculator-CDWOuAcp.js +4 -0
- package/_chunks/{calendar-xpZ0v3xf.js → calendar-DsXIhybL.js} +19 -19
- package/_chunks/chart-frame-CuZABXVI.js +141 -0
- package/_chunks/check-BwI7iCAm.js +4 -0
- package/_chunks/choice-chips-BhP8MZjs.js +126 -0
- package/_chunks/{color-palette-D8vyPfld.js → color-palette-DMJUChWC.js} +20 -22
- package/_chunks/color-picker-B4TQvxxB.js +143 -0
- package/_chunks/{component-C_T2VN5u.js → component-qKctqdzk.js} +281 -265
- package/_chunks/configurator-actions-C19O1rda.js +155 -0
- package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
- package/_chunks/{control-AHKXD5Eu.js → control-BkWukVt9.js} +13 -13
- package/_chunks/{controls-DsNi8V8I.js → controls-BLQnWEd7.js} +147 -155
- package/_chunks/{date-control-DrVFX13g.js → date-control-Cgw5PwlZ.js} +1 -1
- package/_chunks/date-time-B8rK5gpC.js +784 -0
- package/_chunks/{dialog.parts-CKGkC5zP.js → dialog.parts-BSbvnEwX.js} +21 -21
- package/_chunks/{duration-CL68Em0o.js → duration-DwFXonEV.js} +1 -4
- package/_chunks/editor-popup-BaaxL89T.js +81 -0
- package/_chunks/field-configurator-1eQP0tKy.js +223 -0
- package/_chunks/icon-toolbar-xbqa0hu9.js +128 -0
- package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
- package/_chunks/minus-BOAR3A1C.js +4 -0
- package/_chunks/mount-D1i5DLRn.js +266 -0
- package/_chunks/native-control-DO0d1kgx.js +636 -0
- package/_chunks/{number-input-BKwA5FnM.js → number-input-s9ddPwX6.js} +7 -7
- package/_chunks/{picker-h1P5RUgp.js → picker-AY05b41W.js} +2 -2
- package/_chunks/plus-CbGRkIGl.js +4 -0
- package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
- package/_chunks/{popup-CT2uD3go.js → popup-UXGCiv3n.js} +97 -97
- package/_chunks/{rating-choice-DZgmaic0.js → rating-choice-BEs_QFZC.js} +1 -1
- package/_chunks/{reorder-list-CSlqAGHw.js → reorder-list-A49l172e.js} +1 -1
- package/_chunks/request-trail-DCOfa5zw.js +753 -0
- package/_chunks/rich-text-xfMWadGi.js +842 -0
- package/_chunks/rotate-left-BF6G883o.js +4 -0
- package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
- package/_chunks/tooltip-D4xkio5G.js +54 -0
- package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
- package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
- package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
- package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
- package/ai/_chat.scss +28 -3
- package/ai/_style.scss +55 -2
- package/ai/chat.d.ts +3 -1
- package/ai/components.d.ts +13 -2
- package/ai/index.d.ts +1 -0
- package/ai/index.js +3 -3
- package/ai/mount.d.ts +17 -1
- package/ai/results/_style.scss +80 -0
- package/ai/results/index.d.ts +11 -0
- package/ai/results/metrics.d.ts +5 -0
- package/ai/results/table.d.ts +5 -0
- package/ai/results/text.d.ts +5 -0
- package/ai/results/types.d.ts +29 -0
- package/ai/transcript.d.ts +2 -0
- package/ai/translations.d.ts +1 -1
- package/assignee/index.js +2 -2
- package/avatar/index.js +32 -31
- package/badge.view.d.ts +8 -0
- package/brush-range/component.js +28 -27
- package/buttons/svg-button.d.ts +1 -1
- package/buttons/svg-button.js +16 -16
- package/calendar/_calendar.scss +2 -2
- package/calendar/calendar.js +1 -1
- package/calendar/index.js +2 -2
- package/choice-chips/index.d.ts +3 -1
- package/choice-chips/index.js +1 -1
- package/color-palette/color-palette.js +1 -1
- package/color-palette/color-palette.style.scss +1 -1
- package/color-palette/color-picker.js +2 -2
- package/component-catalog.d.ts +6 -1
- package/configurator-actions.d.ts +67 -0
- package/configurator-actions.js +1 -0
- package/configurator-aggregation-list.d.ts +14 -0
- package/configurator-aggregation-list.js +61 -0
- package/configurator-drop-zone.d.ts +38 -0
- package/configurator-drop-zone.js +64 -0
- package/configurator-field-icon.d.ts +10 -0
- package/configurator-field-icon.js +1 -0
- package/configurator-focus.d.ts +4 -0
- package/configurator-focus.js +39 -0
- package/configurator-sections.d.ts +42 -0
- package/configurator-sections.js +71 -0
- package/control-presentation.js +24 -19
- package/controls.d.ts +1 -2
- package/controls.js +4 -3
- package/core/editor-popup.js +1 -1
- package/core/popover-controller.d.ts +35 -0
- package/core/popup-ownership.d.ts +2 -0
- package/core/title-tooltip.d.ts +2 -0
- package/core/tooltip-session.d.ts +29 -0
- package/core/tooltip-surface.d.ts +13 -0
- package/core/tooltip-text.d.ts +6 -0
- package/core/tooltip.d.ts +35 -0
- package/core/top-layer-popup.d.ts +4 -0
- package/core/top-layer-popup.js +1 -23
- package/date-time/index.js +1 -1
- package/date-time/style.scss +50 -7
- package/date-time/time-selection.d.ts +3 -1
- package/dialog/dialog.dom.js +8 -8
- package/dialog/dialog.parts.js +1 -1
- package/distribution-chart/_distribution-chart.scss +1 -57
- package/distribution-chart/area-chart.js +1 -1
- package/distribution-chart/bar-chart.js +1 -1
- package/distribution-chart/line-chart.js +1 -1
- package/dropdown/content.js +1 -1
- package/dropdown/control.js +1 -1
- package/dropdown/index.js +2 -2
- package/dropdown/lookup-field.js +2 -1
- package/dropdown/popup.d.ts +2 -2
- package/dropdown/popup.js +1 -1
- package/duration/index.js +1 -1
- package/editor-actions.js +1 -1
- package/field-configurator.d.ts +19 -0
- package/field-configurator.js +4 -170
- package/field-expansion.d.ts +9 -0
- package/filter/filters/slider/_slider.scss +0 -17
- package/filter/filters/slider/control.js +2 -0
- package/filter/filters/slider/runtime.js +49 -22
- package/filter/filters/slider/single.js +1 -1
- package/filter-badge.js +1 -1
- package/filter-controls.js +1 -1
- package/form-controls/index.js +6 -6
- package/form-controls/presentation.js +12 -12
- package/formatting/control-tooltip.d.ts +2 -27
- package/formatting/index.js +22 -21
- package/formatting/styles.scss +2 -47
- package/framework.js +215 -208
- package/history-controls.js +27 -1
- package/icon-toolbar.d.ts +58 -0
- package/icon-toolbar.js +1 -0
- package/masked-input/index.js +1 -1
- package/native-control.d.ts +1 -2
- package/native-control.js +1 -1
- package/native-styles.css +1 -1
- package/native.js +45 -42
- package/number-input/index.js +1 -1
- package/package.json +71 -2
- package/pagination.js +1 -1
- package/pdf-viewer/index.js +1 -1
- package/pickers.d.ts +5 -1
- package/preact-mount.js +1 -1
- package/preact.d.ts +7 -0
- package/preact.js +68 -61
- package/rating-choice.js +1 -1
- package/react.d.ts +5 -0
- package/react.js +67 -65
- package/reorder-list.js +1 -1
- package/resource-picker/resource-picker-popup.js +1 -1
- package/resource-picker/resource-picker.js +4 -4
- package/rich-text/engine.d.ts +1 -0
- package/rich-text/format-html.d.ts +2 -0
- package/rich-text/index.d.ts +4 -0
- package/rich-text/index.js +1 -1
- package/rich-text/model.d.ts +2 -0
- package/rich-text/style.scss +165 -70
- package/rich-text/syntax.d.ts +5 -0
- package/rich-text/translations.d.ts +2 -0
- package/select.d.ts +3 -1
- package/select.js +1 -1
- package/status-feedback/exit-snapshot.js +4 -4
- package/status-feedback/popover.js +4 -4
- package/styles/_compositions.scss +3 -3
- package/styles/_field-configurator.scss +146 -0
- package/styles/_fields-grid.scss +35 -0
- package/styles/_primitives.scss +25 -18
- package/styles/configurator-actions.scss +141 -0
- package/styles/legacy-pagination.css +19 -2
- package/styles.css +1 -1
- package/surfaces.d.ts +3 -0
- package/surfaces.js +34 -131
- package/surfaces.view.d.ts +4 -34
- package/svelte.js +1 -1
- package/switch/index.js +15 -14
- package/time-grid.js +37 -36
- package/timeline-track/index.js +2 -2
- package/ui.css +1 -1
- package/vue.d.ts +24 -9
- package/vue.js +118 -116
- package/_chunks/chart-frame-Cmc7xU1i.js +0 -130
- package/_chunks/choice-chips-CHQTUdLs.js +0 -110
- package/_chunks/color-picker-CudqPYZo.js +0 -138
- package/_chunks/control-tooltip-uscKfAnV.js +0 -100
- package/_chunks/date-time-qIhp5vaX.js +0 -768
- package/_chunks/editor-popup-WDdtVDNA.js +0 -81
- package/_chunks/history-controls-B3u3INEK.js +0 -27
- package/_chunks/mount-DQ1cpppK.js +0 -257
- package/_chunks/native-control-C_yok8_-.js +0 -605
- package/_chunks/request-trail-DSlFix6i.js +0 -618
- package/_chunks/rich-text-CH7gIqOS.js +0 -636
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { i as e } from "./_chunks/preact.module-BBM36DnO.js";
|
|
2
|
+
import { t } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
|
|
3
|
+
import { a as n, f as r, o as i, p as a, v as o } from "./_chunks/field-configurator-1eQP0tKy.js";
|
|
4
|
+
import { useFieldDropTarget as s } from "./field-reorder.hook.js";
|
|
5
|
+
//#region src/configurator-drop-zone.tsx
|
|
6
|
+
function c({ title: c, label: l, footer: u, removeLabel: d, headerActions: f, renderActions: p, allowFieldRemoving: m = !0, panel: h, items: g, itemKeys: _, dimensions: v, placeholder: y, i18n: b, renderItem: x, onRemove: S, onDrop: C, onDragOver: w, canDrop: T = () => !0, onDragEnter: E, onItemDragStart: D, onItemDragEnd: O, allowFieldDragging: k = !0, dragActive: A, renderIcon: j }) {
|
|
7
|
+
let M = g.length === 0, N = s(g.length, {
|
|
8
|
+
enabled: k,
|
|
9
|
+
active: A,
|
|
10
|
+
canDrop: T,
|
|
11
|
+
onDragOver: w,
|
|
12
|
+
onDrop: (e, t) => C(h, e, t)
|
|
13
|
+
});
|
|
14
|
+
return /* @__PURE__ */ t(i, {
|
|
15
|
+
...N.list,
|
|
16
|
+
className: "pivot-layout-zone",
|
|
17
|
+
"aria-label": l,
|
|
18
|
+
"data-pivot-area": h,
|
|
19
|
+
heading: c,
|
|
20
|
+
headingClassName: "zone-title",
|
|
21
|
+
actions: f,
|
|
22
|
+
children: [/* @__PURE__ */ t(r, {
|
|
23
|
+
empty: M,
|
|
24
|
+
placeholder: y ?? b.dragHere,
|
|
25
|
+
className: `min-h-[3rem] overflow-auto grow panel-card ${M ? "empty" : ""} ${N.isOver ? "drag-over" : ""}`,
|
|
26
|
+
...N.list,
|
|
27
|
+
onDragEnter: E,
|
|
28
|
+
children: g.map((r, i) => {
|
|
29
|
+
let s = v.get(r), l = N.position(i);
|
|
30
|
+
return /* @__PURE__ */ t(o, {
|
|
31
|
+
...N.row(i),
|
|
32
|
+
draggable: k,
|
|
33
|
+
onDragStart: (e) => {
|
|
34
|
+
k ? (e.dataTransfer?.setData("text/plain", String(r)), e.dataTransfer && (e.dataTransfer.effectAllowed = "move"), N.start(i), D(i, r, e)) : e.preventDefault();
|
|
35
|
+
},
|
|
36
|
+
onDragEnd: () => {
|
|
37
|
+
N.clear(), O();
|
|
38
|
+
},
|
|
39
|
+
indicator: l && /* @__PURE__ */ t(n, {
|
|
40
|
+
position: l,
|
|
41
|
+
index: N.boundary ?? void 0,
|
|
42
|
+
className: `pivot-zone-drop-divider ${l}`
|
|
43
|
+
}),
|
|
44
|
+
contentClassName: "pivot-dimension-cell",
|
|
45
|
+
icon: j?.(s),
|
|
46
|
+
label: /* @__PURE__ */ t("span", {
|
|
47
|
+
className: "pivot-zone-field-caption flex grow",
|
|
48
|
+
children: x?.(i, s) ?? s?.name ?? r
|
|
49
|
+
}),
|
|
50
|
+
actions: /* @__PURE__ */ t(e, { children: [p?.(i, r), m && /* @__PURE__ */ t(a, {
|
|
51
|
+
className: "pivot-remove-button",
|
|
52
|
+
onClick: () => S(i),
|
|
53
|
+
locale: {
|
|
54
|
+
title: d?.(i, r) ?? b.remove,
|
|
55
|
+
ariaLabel: d?.(i, r) ?? b.remove
|
|
56
|
+
}
|
|
57
|
+
})] })
|
|
58
|
+
}, _?.[i] ?? `${c}-${i}`);
|
|
59
|
+
})
|
|
60
|
+
}), u]
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { c as ConfiguratorDropZone };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ConfiguratorFieldMetadata {
|
|
2
|
+
columnType?: string;
|
|
3
|
+
dataType?: 'string' | 'number' | 'date' | 'boolean';
|
|
4
|
+
}
|
|
5
|
+
/** Shared descriptive field identity; never infers or formats source values. */
|
|
6
|
+
export declare function resolveConfiguratorFieldIcon(dimension?: ConfiguratorFieldMetadata): {
|
|
7
|
+
kind: string;
|
|
8
|
+
svg: string;
|
|
9
|
+
label: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as resolveConfiguratorFieldIcon } from "./_chunks/configurator-field-icon-CmcM_sPs.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Return focus only from this editor. Release a temporary tab stop on blur or disposal. */
|
|
2
|
+
export declare function focusConfiguratorOrigin(origin: HTMLElement, root: HTMLElement | null): () => void;
|
|
3
|
+
/** A single mounted owner's lease; synchronous focus callbacks cannot revive a disposed lease. */
|
|
4
|
+
export declare function useConfiguratorOriginFocus(): (origin: HTMLElement, root: HTMLElement | null) => void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { r as e, t } from "./_chunks/hooks.module-CG3gN83z.js";
|
|
2
|
+
//#region src/configurator-focus.ts
|
|
3
|
+
var n = () => {};
|
|
4
|
+
function r(e, t) {
|
|
5
|
+
if (!e.isConnected || !t?.isConnected || e.ownerDocument !== t.ownerDocument) return !1;
|
|
6
|
+
let n = e.ownerDocument.activeElement;
|
|
7
|
+
return !n || n === e.ownerDocument.body || n === e || t.contains(n);
|
|
8
|
+
}
|
|
9
|
+
function i(e, t) {
|
|
10
|
+
if (!r(e, t)) return n;
|
|
11
|
+
let i = e.ownerDocument, a = i.activeElement;
|
|
12
|
+
if (e.focus({ preventScroll: !0 }), i.activeElement === e || e.hasAttribute("tabindex") || !e.isConnected || !t.isConnected || i.activeElement !== a && i.activeElement !== i.body) return n;
|
|
13
|
+
let o = !0, s = () => {
|
|
14
|
+
o && (o = !1, e.removeEventListener("blur", s), e.getAttribute("tabindex") === "-1" && e.removeAttribute("tabindex"));
|
|
15
|
+
};
|
|
16
|
+
e.setAttribute("tabindex", "-1"), e.addEventListener("blur", s);
|
|
17
|
+
try {
|
|
18
|
+
e.focus({ preventScroll: !0 }), (i.activeElement !== e || !e.isConnected || !t.isConnected) && s();
|
|
19
|
+
} catch (e) {
|
|
20
|
+
throw s(), e;
|
|
21
|
+
}
|
|
22
|
+
return s;
|
|
23
|
+
}
|
|
24
|
+
function a() {
|
|
25
|
+
let a = t(n), o = t(0), s = t(!0);
|
|
26
|
+
return e(() => (s.current = !0, () => {
|
|
27
|
+
s.current = !1, o.current++;
|
|
28
|
+
let e = a.current;
|
|
29
|
+
a.current = n, e();
|
|
30
|
+
}), []), (e, t) => {
|
|
31
|
+
if (!s.current || !r(e, t)) return;
|
|
32
|
+
let c = ++o.current, l = a.current;
|
|
33
|
+
if (a.current = n, l(), !s.current || c !== o.current) return;
|
|
34
|
+
let u = i(e, t);
|
|
35
|
+
!s.current || c !== o.current ? u() : a.current = u;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { i as focusConfiguratorOrigin, a as useConfiguratorOriginFocus };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { h, ComponentChildren } from './_vendor/preact/src/index';
|
|
2
|
+
/** Application-owned content. Return cleanup when mounting another framework or UI. */
|
|
3
|
+
export interface ConfiguratorSection {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
hidden?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
render?: () => ComponentChildren;
|
|
9
|
+
mount?: (host: HTMLElement) => void | (() => void);
|
|
10
|
+
}
|
|
11
|
+
export interface ConfiguratorSectionsConfig {
|
|
12
|
+
/** Custom tabs appended after the built-in tabs. IDs must be unique and cannot replace built-ins. */
|
|
13
|
+
sections?: readonly ConfiguratorSection[];
|
|
14
|
+
initialSection?: string;
|
|
15
|
+
onSectionChange?: (id: string) => void;
|
|
16
|
+
}
|
|
17
|
+
/** Selection follows current availability, without discarding mounted editor drafts. */
|
|
18
|
+
export declare function useConfiguratorSections(config: ConfiguratorSectionsConfig, builtins: readonly ConfiguratorSection[], disabled?: boolean): {
|
|
19
|
+
sections: ConfiguratorSection[];
|
|
20
|
+
custom: ConfiguratorSection[];
|
|
21
|
+
active: string | undefined;
|
|
22
|
+
select: (id: string) => void;
|
|
23
|
+
};
|
|
24
|
+
/** Shared switch spacing and opaque sticky backdrop for every configurator. */
|
|
25
|
+
export declare function ConfiguratorHeader({ children, className }: {
|
|
26
|
+
children?: ComponentChildren;
|
|
27
|
+
className?: string;
|
|
28
|
+
}): h.JSX.Element;
|
|
29
|
+
export declare function ConfiguratorSectionTabs({ sections, active, onChange, prefix, label, className }: {
|
|
30
|
+
sections: readonly ConfiguratorSection[];
|
|
31
|
+
active?: string;
|
|
32
|
+
onChange: (id: string) => void;
|
|
33
|
+
prefix: string;
|
|
34
|
+
label: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
}): h.JSX.Element;
|
|
37
|
+
/** Inactive sections retain chat transcripts and host drafts until removed. */
|
|
38
|
+
export declare function ConfiguratorSectionPanels({ sections, active, prefix }: {
|
|
39
|
+
sections: readonly ConfiguratorSection[];
|
|
40
|
+
active?: string;
|
|
41
|
+
prefix: string;
|
|
42
|
+
}): h.JSX.Element;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { i as e } from "./_chunks/preact.module-BBM36DnO.js";
|
|
2
|
+
import { i as t, r as n, t as r } from "./_chunks/hooks.module-CG3gN83z.js";
|
|
3
|
+
import { t as i } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
|
|
4
|
+
import { SegmentedSwitch as a } from "./segmented-switch/index.js";
|
|
5
|
+
//#region src/configurator-sections.tsx
|
|
6
|
+
function o(e, n, r = !1) {
|
|
7
|
+
let i = new Set(n.map((e) => e.id)), a = (e.sections ?? []).filter((e) => !e.id || i.has(e.id) ? !1 : (i.add(e.id), !0)), o = [...n, ...a].filter((e) => !e.hidden).map((e) => r ? {
|
|
8
|
+
...e,
|
|
9
|
+
disabled: !0
|
|
10
|
+
} : e), [s, c] = t(e.initialSection ?? n[0]?.id), l = o.find((e) => e.id === s && (r || !e.disabled))?.id ?? o.find((e) => !e.disabled)?.id ?? (r ? o[0]?.id : void 0);
|
|
11
|
+
return {
|
|
12
|
+
sections: o,
|
|
13
|
+
custom: o.filter((e) => !n.some((t) => t.id === e.id)),
|
|
14
|
+
active: l,
|
|
15
|
+
select: (t) => {
|
|
16
|
+
t !== l && o.some((e) => e.id === t && !e.disabled) && (c(t), e.onSectionChange?.(t));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function s({ children: e, className: t = "" }) {
|
|
21
|
+
return /* @__PURE__ */ i("header", {
|
|
22
|
+
className: `rv-configurator-header ${t}`,
|
|
23
|
+
children: e
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function c({ sections: e, active: t, onChange: n, prefix: r, label: o, className: s = "" }) {
|
|
27
|
+
return /* @__PURE__ */ i(a, {
|
|
28
|
+
value: t ?? "",
|
|
29
|
+
ariaLabel: o,
|
|
30
|
+
role: "tablist",
|
|
31
|
+
className: `rv-configurator-section-tabs ${s}`,
|
|
32
|
+
options: e.map((e) => ({
|
|
33
|
+
value: e.id,
|
|
34
|
+
label: e.label,
|
|
35
|
+
disabled: e.disabled,
|
|
36
|
+
id: `${r}-tab-${e.id}`,
|
|
37
|
+
ariaControls: `${r}-panel-${e.id}`
|
|
38
|
+
})),
|
|
39
|
+
onChange: n
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function l({ section: e }) {
|
|
43
|
+
let t = r(null);
|
|
44
|
+
return n(() => {
|
|
45
|
+
if (t.current && e.mount) return e.mount(t.current);
|
|
46
|
+
}, [e.mount]), /* @__PURE__ */ i("div", {
|
|
47
|
+
ref: t,
|
|
48
|
+
class: "rv-configurator-section-content",
|
|
49
|
+
children: e.render?.()
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function u({ sections: t, active: n, prefix: r }) {
|
|
53
|
+
return /* @__PURE__ */ i(e, { children: t.map((e) => /* @__PURE__ */ i(d, {
|
|
54
|
+
section: e,
|
|
55
|
+
active: n === e.id,
|
|
56
|
+
prefix: r
|
|
57
|
+
}, e.id)) });
|
|
58
|
+
}
|
|
59
|
+
function d({ section: e, active: t, prefix: n }) {
|
|
60
|
+
let a = r(!1);
|
|
61
|
+
return t && (a.current = !0), /* @__PURE__ */ i("section", {
|
|
62
|
+
hidden: !t,
|
|
63
|
+
role: "tabpanel",
|
|
64
|
+
id: `${n}-panel-${e.id}`,
|
|
65
|
+
"aria-labelledby": `${n}-tab-${e.id}`,
|
|
66
|
+
class: "rv-configurator-custom-section",
|
|
67
|
+
children: a.current && /* @__PURE__ */ i(l, { section: e })
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { s as ConfiguratorHeader, u as ConfiguratorSectionPanels, c as ConfiguratorSectionTabs, o as useConfiguratorSections };
|
package/control-presentation.js
CHANGED
|
@@ -1,36 +1,41 @@
|
|
|
1
1
|
import { c as e } from "./_chunks/preact.module-BBM36DnO.js";
|
|
2
2
|
import { t } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
|
|
3
3
|
import { createPreactElement as n } from "./preact-mount.js";
|
|
4
|
-
import {
|
|
4
|
+
import { n as r } from "./_chunks/popover-controller-D-AvKQ7B.js";
|
|
5
|
+
import { controlAttributes as i, controlClassName as a } from "./control-attributes.js";
|
|
5
6
|
//#region src/control-presentation.view.tsx
|
|
6
|
-
function
|
|
7
|
+
function o(e, t, n, ...r) {
|
|
7
8
|
let a = n ?? {};
|
|
8
9
|
if (t === "button" && a.busy === !0) {
|
|
9
|
-
let n =
|
|
10
|
-
return e(t,
|
|
10
|
+
let n = r.length ? r : [a.children];
|
|
11
|
+
return e(t, i(t, a), e("span", {
|
|
11
12
|
class: "rv-button-spinner",
|
|
12
13
|
"aria-hidden": "true"
|
|
13
14
|
}), ...n);
|
|
14
15
|
}
|
|
15
|
-
return e(t,
|
|
16
|
+
return e(t, i(t, a), ...r);
|
|
16
17
|
}
|
|
17
|
-
function
|
|
18
|
-
let
|
|
19
|
-
return i.onChange && !(r === "button" && i.busy) && Object.assign(
|
|
18
|
+
function s(t, r, i = {}) {
|
|
19
|
+
let a = o(e, r, i);
|
|
20
|
+
return i.onChange && !(r === "button" && i.busy) && Object.assign(a.props, { onChange: i.onChange }), n(t, a);
|
|
20
21
|
}
|
|
21
|
-
var
|
|
22
|
-
function
|
|
23
|
-
return
|
|
22
|
+
var c = /* @__PURE__ */ new WeakMap();
|
|
23
|
+
function l(e, t) {
|
|
24
|
+
return c.set(e, t), e;
|
|
24
25
|
}
|
|
25
|
-
function
|
|
26
|
-
return typeof e == "string" ? e : e && (typeof e == "function" || typeof e == "object") ?
|
|
26
|
+
function u(e) {
|
|
27
|
+
return typeof e == "string" ? e : e && (typeof e == "function" || typeof e == "object") ? c.get(e) : void 0;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
var d = /* @__PURE__ */ new WeakMap();
|
|
30
|
+
function f(e, i) {
|
|
31
|
+
e.classList.add("rv-btn", "rv-btn-ghost", "rv-btn-icon"), e.setAttribute("aria-label", i), d.get(e)?.(), e.removeAttribute("title"), e.querySelector(".rv-control-tooltip")?.remove();
|
|
32
|
+
let a = n(e.ownerDocument, /* @__PURE__ */ t("span", {
|
|
30
33
|
class: "rv-control-tooltip",
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
role: "tooltip",
|
|
35
|
+
hidden: !0,
|
|
36
|
+
children: i
|
|
37
|
+
}));
|
|
38
|
+
e.append(a), d.set(e, new r().bind(e, i, { surface: a }));
|
|
34
39
|
}
|
|
35
40
|
//#endregion
|
|
36
|
-
export {
|
|
41
|
+
export { i as controlAttributes, a as controlClassName, s as createControl, f as decorateIconAction, u as nativeControlTag, l as registerControl, o as renderControl };
|
package/controls.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BadgeOptions } from './badge';
|
|
2
1
|
import { h, ComponentChildren, JSX } from './_vendor/preact/src/index';
|
|
3
2
|
import { SegmentedSwitchProps, SegmentedSwitchValue } from './segmented-switch';
|
|
4
3
|
import { EditorPane, EditorSplitLayout } from './editor-layout';
|
|
@@ -106,7 +105,7 @@ export declare function Panel({ children, className, label }: ShellProps): h.JSX
|
|
|
106
105
|
export declare function Toolbar({ children, className, label }: ShellProps): h.JSX.Element;
|
|
107
106
|
export declare function ToolbarGroup({ children, className, label }: ShellProps): h.JSX.Element;
|
|
108
107
|
export declare function ToolbarSeparator(): h.JSX.Element;
|
|
109
|
-
export
|
|
108
|
+
export { Badge } from './badge.view';
|
|
110
109
|
export declare function CountBadge({ count, label }: {
|
|
111
110
|
count: number;
|
|
112
111
|
label: string;
|
package/controls.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, N as c, O as l, P as u,
|
|
2
|
-
import { EditorList as
|
|
3
|
-
|
|
1
|
+
import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, N as c, O as l, P as u, S as d, T as f, _ as p, a as m, b as h, c as g, d as _, f as v, g as y, h as b, i as x, j as S, k as C, l as w, m as T, n as E, o as D, p as O, r as k, s as A, t as j, u as M, v as N, w as P, x as F, y as I } from "./_chunks/controls-BLQnWEd7.js";
|
|
2
|
+
import { EditorList as L, EditorListGroup as R, EditorListItem as z, EditorListItemContent as B, EditorPane as V, EditorSplitLayout as H } from "./editor-layout/index.js";
|
|
3
|
+
import { t as U } from "./_chunks/badge.view-D30pMUfi.js";
|
|
4
|
+
export { o as Alert, U as Badge, j as Button, E as ButtonGroup, k as Chip, x as CircularProgress, m as CountBadge, D as DateInput, A as DateTimeInput, g as Disclosure, w as EmptyState, M as FieldError, _ as FieldHint, v as FormSection, O as IconButton, L as Listbox, R as ListboxGroup, z as ListboxOption, B as ListboxOptionContent, T as LoadingOverlay, b as Menu, y as MenuItem, p as MenuSeparator, N as NumberInput, I as NumberStepper, h as Pagination, V as Pane, F as Panel, d as RadioGroup, t as Rating, P as ResizeHandle, f as SegmentedControl, r as Spinner, H as SplitLayout, n as Submenu, l as TabPanel, C as Tabs, e as TextInput, S as Textarea, s as TimeInput, c as ToggleButton, u as Toolbar, i as ToolbarGroup, a as ToolbarSeparator };
|
package/core/editor-popup.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as mountEditorPopup } from "../_chunks/editor-popup-
|
|
1
|
+
export { t as mountEditorPopup } from "../_chunks/editor-popup-BaaxL89T.js";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface PopoverOptions {
|
|
2
|
+
anchor: HTMLElement | SVGElement;
|
|
3
|
+
placement?: 'above';
|
|
4
|
+
content: HTMLElement;
|
|
5
|
+
/** Defaults to the document body. */
|
|
6
|
+
appendTo?: HTMLElement;
|
|
7
|
+
onClose?: () => void;
|
|
8
|
+
restoreFocus?: boolean;
|
|
9
|
+
closeOnOutside?: boolean;
|
|
10
|
+
closeOnEscape?: boolean;
|
|
11
|
+
display?: string;
|
|
12
|
+
}
|
|
13
|
+
/** One owner for native top-layer promotion, viewport positioning and disposal. */
|
|
14
|
+
export declare class PopoverController {
|
|
15
|
+
private active?;
|
|
16
|
+
get isOpen(): boolean;
|
|
17
|
+
open(options: PopoverOptions): {
|
|
18
|
+
close: (restoreFocus?: boolean) => void;
|
|
19
|
+
refresh: () => void;
|
|
20
|
+
};
|
|
21
|
+
refresh(): void;
|
|
22
|
+
close(restoreFocus?: boolean): void;
|
|
23
|
+
destroy(): void;
|
|
24
|
+
}
|
|
25
|
+
export declare function createTooltipElement(document: Document, className?: string): HTMLDivElement;
|
|
26
|
+
/** Imperative binding adapter over the same session used by useTooltip. */
|
|
27
|
+
export declare class TooltipController {
|
|
28
|
+
private release?;
|
|
29
|
+
bind(anchor: HTMLElement | SVGElement, text: string, options?: {
|
|
30
|
+
trigger?: 'hover' | 'click';
|
|
31
|
+
surface?: HTMLElement;
|
|
32
|
+
onEscape?: () => void;
|
|
33
|
+
}): () => void;
|
|
34
|
+
destroy(): void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type TooltipAnchor = HTMLElement | SVGElement;
|
|
2
|
+
/** One lifecycle for declarative and imperative tooltip adapters. */
|
|
3
|
+
export declare class TooltipSession {
|
|
4
|
+
private anchor?;
|
|
5
|
+
private surface?;
|
|
6
|
+
private timer?;
|
|
7
|
+
private mode?;
|
|
8
|
+
private cleanup?;
|
|
9
|
+
private mounted;
|
|
10
|
+
private pointerFocus;
|
|
11
|
+
private open;
|
|
12
|
+
private addedDescription;
|
|
13
|
+
onHide?: () => void;
|
|
14
|
+
onEscape?: () => void;
|
|
15
|
+
delay: number;
|
|
16
|
+
get isOpen(): boolean;
|
|
17
|
+
get isPending(): boolean;
|
|
18
|
+
setSurface(surface: HTMLElement | null): void;
|
|
19
|
+
show(anchor: TooltipAnchor): void;
|
|
20
|
+
private present;
|
|
21
|
+
hide(): void;
|
|
22
|
+
focus(anchor: TooltipAnchor): void;
|
|
23
|
+
blur(): void;
|
|
24
|
+
pointerDown(): void;
|
|
25
|
+
leave(anchor?: TooltipAnchor): void;
|
|
26
|
+
keyDown(event: KeyboardEvent): void;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
private listen;
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Shared presentation for text hints and rich product/chart tooltip content. */
|
|
2
|
+
export declare const TOOLTIP_STYLES = "\n.rv-tooltip.rv-tooltip {\n box-sizing: border-box;\n position: fixed;\n z-index: 100000;\n margin: 0;\n inset: auto;\n transform: none;\n opacity: 1;\n visibility: visible;\n padding: 6px 10px;\n border: 0;\n border-radius: 6px;\n background: var(--rv-tooltip-bg, #191919);\n color: var(--rv-tooltip-fg, #fff);\n box-shadow: 0 4px 14px var(--rv-ui-shadow, rgb(0 0 0 / 18%));\n font: 12px/1.4 var(--rv-ui-font-family, Inter, ui-sans-serif, system-ui, sans-serif);\n font-weight: 400;\n text-align: start;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n max-width: min(360px, calc(100vw - 16px));\n max-height: calc(100dvh - 16px);\n overflow: auto;\n pointer-events: none;\n}\n.rv-tooltip[hidden], .rv-tooltip[data-visible=\"false\"] { display: none; }\n.rv-tooltip[data-overflow] { pointer-events: auto; }\n@media (forced-colors: active) {\n .rv-tooltip.rv-tooltip { color: CanvasText; background: Canvas; border: 1px solid CanvasText; }\n}\n";
|
|
3
|
+
/** Also installs into shadow roots/fullscreen roots used by standalone charts. */
|
|
4
|
+
export declare function ensureTooltipStyles(root: Document | ShadowRoot): void;
|
|
5
|
+
export declare function prepareTooltipSurface(element: HTMLElement): void;
|
|
6
|
+
/** Shared hint placement: centered above the trigger, with a bounded below fallback. */
|
|
7
|
+
export declare function calculateTooltipPosition(anchor: DOMRect, popup: DOMRect, viewport: {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}): import('./anchored-popover').AnchoredPopoverPosition | {
|
|
11
|
+
left: number;
|
|
12
|
+
top: number;
|
|
13
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { JSX } from '../_vendor/preact/src/index';
|
|
2
|
+
/** Wrapper-free shared hint for otherwise native text and label elements. */
|
|
3
|
+
export declare function TooltipText({ as, title, children, ...attributes }: Omit<JSX.HTMLAttributes<HTMLElement>, 'title'> & {
|
|
4
|
+
as?: 'span' | 'label' | 'div';
|
|
5
|
+
title?: string;
|
|
6
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { h, ComponentChildren, TargetedEvent } from '../_vendor/preact/src/index';
|
|
2
|
+
type TooltipPresentation = {
|
|
3
|
+
className?: string;
|
|
4
|
+
placement?: 'above';
|
|
5
|
+
delay?: number;
|
|
6
|
+
content?: ComponentChildren;
|
|
7
|
+
};
|
|
8
|
+
/** Preact adapter; the session owns all tooltip behavior and DOM lifecycle. */
|
|
9
|
+
export declare function useControlTooltip(text: string, _floating?: boolean, presentation?: TooltipPresentation): {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly hide: () => void;
|
|
12
|
+
readonly triggerProps: {
|
|
13
|
+
readonly 'aria-describedby': string;
|
|
14
|
+
readonly onFocus: (event: TargetedEvent<HTMLElement>) => void;
|
|
15
|
+
readonly onBlur: () => void;
|
|
16
|
+
readonly onMouseEnter: (event: TargetedEvent<HTMLElement>) => void;
|
|
17
|
+
readonly onMouseLeave: (event?: TargetedEvent<HTMLElement>) => void;
|
|
18
|
+
readonly onPointerDown: (_event: TargetedEvent<HTMLElement>) => void;
|
|
19
|
+
readonly onPointerCancel: () => void;
|
|
20
|
+
readonly onKeyDown: (event: KeyboardEvent) => void;
|
|
21
|
+
};
|
|
22
|
+
readonly tooltip: h.JSX.Element;
|
|
23
|
+
};
|
|
24
|
+
/** Controlled surface adapter retained for existing consumers. */
|
|
25
|
+
export declare function ControlTooltip({ id, text, content, visible, anchor, className }: {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly text: string;
|
|
28
|
+
readonly content?: ComponentChildren;
|
|
29
|
+
readonly visible: boolean;
|
|
30
|
+
readonly anchor?: HTMLElement | null;
|
|
31
|
+
readonly className?: string;
|
|
32
|
+
readonly placement?: 'above';
|
|
33
|
+
}): h.JSX.Element;
|
|
34
|
+
export declare const useTooltip: typeof useControlTooltip;
|
|
35
|
+
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { ensureTooltipStyles, prepareTooltipSurface, TOOLTIP_STYLES } from './tooltip-surface';
|
|
2
|
+
export { ownsPopupTarget } from './popup-ownership';
|
|
1
3
|
export type TopLayerPopupMode = 'popover' | 'fallback';
|
|
2
4
|
export type TopLayerPopupElement = HTMLElement & {
|
|
3
5
|
showPopover?: () => void;
|
|
@@ -7,3 +9,5 @@ export type TopLayerPopupElement = HTMLElement & {
|
|
|
7
9
|
export declare function showTopLayerPopup(element: TopLayerPopupElement, visibleDisplay?: string): TopLayerPopupMode;
|
|
8
10
|
/** Hides an overlay opened by `showTopLayerPopup`; safe to call repeatedly. */
|
|
9
11
|
export declare function hideTopLayerPopup(element: TopLayerPopupElement, mode?: TopLayerPopupMode): void;
|
|
12
|
+
/** Includes portalled popup content linked by descendant aria-controls triggers. */
|
|
13
|
+
export declare function popupOwnsTarget(panel: HTMLElement, target: Node | null): boolean;
|
package/core/top-layer-popup.js
CHANGED
|
@@ -1,23 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var e = /* @__PURE__ */ new WeakMap();
|
|
3
|
-
function t(t, n = "flex") {
|
|
4
|
-
if (e.has(t) || e.set(t, t.getAttribute("data-rv-ui-surface")), t.setAttribute("data-rv-ui-surface", ""), t.style.display = n, typeof t.showPopover == "function") {
|
|
5
|
-
t.setAttribute("popover", "manual");
|
|
6
|
-
try {
|
|
7
|
-
return t.showPopover(), "popover";
|
|
8
|
-
} catch {
|
|
9
|
-
t.removeAttribute("popover");
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return t.style.display = n, "fallback";
|
|
13
|
-
}
|
|
14
|
-
function n(t, n) {
|
|
15
|
-
let r = e.get(t);
|
|
16
|
-
if (r !== void 0 && (r === null ? t.removeAttribute("data-rv-ui-surface") : t.setAttribute("data-rv-ui-surface", r), e.delete(t)), n === "popover" && typeof t.hidePopover == "function") try {
|
|
17
|
-
t.hidePopover(), t.style.removeProperty("display");
|
|
18
|
-
return;
|
|
19
|
-
} catch {}
|
|
20
|
-
t.style.display = "none";
|
|
21
|
-
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { n as hideTopLayerPopup, t as showTopLayerPopup };
|
|
1
|
+
export { a as TOOLTIP_STYLES, s as ensureTooltipStyles, t as hideTopLayerPopup, i as ownsPopupTarget, n as popupOwnsTarget, c as prepareTooltipSurface, r as showTopLayerPopup } from "../_chunks/top-layer-popup-CNSDdfJV.js";
|
package/date-time/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { r as DateTimeField, i as TemporalDraft, a as TemporalPicker, n as attachTemporalPicker, o as defaultTemporalPickerText, t as renderTemporalValue, s as temporalPickerLabel } from "../_chunks/date-time-
|
|
1
|
+
export { r as DateTimeField, i as TemporalDraft, a as TemporalPicker, n as attachTemporalPicker, o as defaultTemporalPickerText, t as renderTemporalValue, s as temporalPickerLabel } from "../_chunks/date-time-B8rK5gpC.js";
|
package/date-time/style.scss
CHANGED
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
width: 100%;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
+
|
|
29
|
+
// Validation follows the picker's width without contributing to popup sizing.
|
|
30
|
+
.rv-temporal-picker > .rv-alert,
|
|
31
|
+
.rv-temporal-draft > .rv-alert {
|
|
32
|
+
inline-size: 0;
|
|
33
|
+
min-inline-size: 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
.rv-date-time-field {
|
|
29
37
|
display: inline-flex;
|
|
30
38
|
align-items: center;
|
|
@@ -66,12 +74,13 @@
|
|
|
66
74
|
display: flex;
|
|
67
75
|
align-items: center;
|
|
68
76
|
gap: 6px;
|
|
69
|
-
flex: 0 1
|
|
77
|
+
flex: 0 1 224px;
|
|
70
78
|
min-width: 0;
|
|
71
|
-
|
|
79
|
+
// Ten date characters plus the control's horizontal padding and borders.
|
|
80
|
+
> .rv-control { flex: 0 0 auto; min-width: 0; width: calc(10ch + 26px); }
|
|
72
81
|
> .rv-temporal-picker__time { flex: 0 1 100px; min-width: 86px; }
|
|
73
82
|
}
|
|
74
|
-
.rv-temporal-picker__endpoint:not(:has(.rv-temporal-picker__time)) { flex
|
|
83
|
+
.rv-temporal-picker__endpoint:not(:has(.rv-temporal-picker__time)) { flex: 0 0 auto; }
|
|
75
84
|
|
|
76
85
|
.rv-temporal-picker .rv-temporal-picker__endpoint > .rv-temporal-picker__time { flex: 0 1 100px; }
|
|
77
86
|
|
|
@@ -80,19 +89,25 @@
|
|
|
80
89
|
min-width: min(240px, calc(100vw - 16px));
|
|
81
90
|
width: 240px;
|
|
82
91
|
}
|
|
83
|
-
.rv-editor-popup.rv-editor-popup--datetime { width: min(540px, calc(100vw - 16px)); }
|
|
84
92
|
.rv-temporal-picker__body { display: flex; align-items: start; flex-wrap: wrap; gap: 16px; }
|
|
85
|
-
.rv-temporal-picker--datetime .rv-temporal-picker__body
|
|
93
|
+
.rv-temporal-picker--datetime .rv-temporal-picker__body { flex-direction: column; align-items: stretch; }
|
|
94
|
+
.rv-temporal-picker--datetime .rv-temporal-picker__body > .rv-time-selection { flex: 0 0 auto; }
|
|
86
95
|
.rv-temporal-picker--time .rv-temporal-picker__body > .rv-time-selection { flex: 1 1 0; }
|
|
87
96
|
.rv-temporal-picker--time .rv-temporal-picker__header { margin: 0; }
|
|
88
97
|
.rv-temporal-picker__times { flex-wrap: wrap; }
|
|
89
98
|
.rv-temporal-picker__times > .rv-time-selection { flex: 1 1 196px; }
|
|
90
99
|
.rv-time-selection {
|
|
100
|
+
max-width: 208px;
|
|
91
101
|
display: grid;
|
|
92
102
|
gap: 12px;
|
|
93
103
|
min-width: 0;
|
|
94
104
|
width: 100%;
|
|
95
105
|
font-variant-numeric: tabular-nums;
|
|
106
|
+
&__entry-row { display: flex; align-items: end; gap: 4px; min-width: 0; }
|
|
107
|
+
&__entry-row > .rv-time-selection__entry { flex: 1 1 0; }
|
|
108
|
+
&__clock { display: grid; gap: 12px; min-width: 0; }
|
|
109
|
+
&__toggle { flex: 0 0 auto; }
|
|
110
|
+
&__toggle[aria-expanded='true'] .rv-svg-icon { transform: rotate(180deg); }
|
|
96
111
|
&__entry { display: grid; gap: 6px; min-width: 0; font-size: 12px; font-weight: 500; }
|
|
97
112
|
&__entry > .rv-control { width: 100%; min-width: 0; height: var(--rv-control-height, 32px); font: inherit; font-size: var(--rv-control-font-size, 0.875rem); font-weight: 400; }
|
|
98
113
|
&__entry input[type='time']::-webkit-calendar-picker-indicator { display: none; }
|
|
@@ -107,9 +122,37 @@
|
|
|
107
122
|
&__period .rv-editor-list__item { flex: 1 1 0; }
|
|
108
123
|
&__empty { margin: 0; color: var(--rv-ui-text-muted); font-size: 12px; }
|
|
109
124
|
}
|
|
125
|
+
.rv-editor-popup .rv-temporal-draft .rv-editor-actions { position: static; }
|
|
110
126
|
.rv-temporal-draft--time .rv-editor-actions { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rv-ui-border); }
|
|
111
127
|
.rv-temporal-draft--time .rv-editor-actions__clear { margin-inline-end: auto; }
|
|
128
|
+
|
|
129
|
+
// One calendar keeps its clock visible alongside it; multi-month calendars keep
|
|
130
|
+
// the optional clock below the calendar panels.
|
|
131
|
+
.rv-editor-popup:has(.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-time-selection) {
|
|
132
|
+
width: min(480px, calc(100vw - 16px));
|
|
133
|
+
}
|
|
134
|
+
.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body {
|
|
135
|
+
flex-direction: row;
|
|
136
|
+
}
|
|
137
|
+
.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body > .rv-time-selection {
|
|
138
|
+
flex: 0 1 208px;
|
|
139
|
+
}
|
|
112
140
|
@media (max-width: 540px) {
|
|
113
|
-
.rv-temporal-picker--datetime .rv-temporal-picker__body { flex-direction: column;
|
|
114
|
-
.rv-temporal-picker--datetime .rv-temporal-picker__body > .rv-time-selection { flex-basis: auto; }
|
|
141
|
+
.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body { flex-direction: column; }
|
|
142
|
+
.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .rv-temporal-picker__body > .rv-time-selection { flex-basis: auto; }
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.rv-editor-popup:has(.rv-temporal-picker--datetime:not(.rv-temporal-picker--multi-month) .revo-calendar--week-numbers):has(.rv-time-selection) {
|
|
146
|
+
width: min(512px, calc(100vw - 16px));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Paired clocks need a wider surface than a single time-only field.
|
|
150
|
+
.rv-editor-popup:has(.rv-temporal-picker--time > .rv-temporal-picker__times) {
|
|
151
|
+
width: min(458px, calc(100vw - 16px));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Grid adapters and standalone fields share the same compact single-clock size.
|
|
155
|
+
.rv-editor-popup:has(.rv-temporal-picker--time):not(:has(.rv-temporal-picker__times)) {
|
|
156
|
+
min-width: min(234px, calc(100vw - 16px));
|
|
157
|
+
width: 234px;
|
|
115
158
|
}
|
|
@@ -10,6 +10,8 @@ export interface TimeSelectionProps {
|
|
|
10
10
|
min?: string;
|
|
11
11
|
max?: string;
|
|
12
12
|
step?: number;
|
|
13
|
+
/** Calendar compositions keep clock columns behind an explicit toggle. */
|
|
14
|
+
collapsible?: boolean;
|
|
13
15
|
}
|
|
14
16
|
/** Shared typed entry and bounded clock columns for time-only and date-time pickers. */
|
|
15
|
-
export declare function TimeSelection({ value, label, text, onChange, format, precision, locale, min, max, step }: TimeSelectionProps): import("../_vendor/preact/src/index").JSX.Element;
|
|
17
|
+
export declare function TimeSelection({ value, label, text, onChange, format, precision, locale, min, max, step, collapsible }: TimeSelectionProps): import("../_vendor/preact/src/index").JSX.Element;
|