@xeonr/platform-ui 1.2.0 → 1.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/kit/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpE,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmBjD,eAAO,MAAM,SAAS;;WAQrB,CAAC;AAEF,eAAO,MAAM,WAAW;;WAGvB,CAAC;AAkCF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAChF,IAAI,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IAC5C,yBAAyB;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAKA;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAe,EAAE,KAAW,EAAE,EAAE;IACxE,gFAAgF;IAChF,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,+BAuBA"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/kit/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpE,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgBjD,eAAO,MAAM,SAAS;;WAQrB,CAAC;AAEF,eAAO,MAAM,WAAW;;WAGvB,CAAC;AAkCF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAChF,IAAI,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IAC5C,yBAAyB;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAKA;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAe,EAAE,KAAW,EAAE,EAAE;IACxE,gFAAgF;IAChF,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,+BA6BA"}
package/dist/kit/Menu.js CHANGED
@@ -4,12 +4,9 @@ import styled from "styled-components";
4
4
  import { Link } from "react-router-dom";
5
5
  import { v } from "../theme/tokens.js";
6
6
  import { Icon } from "./Icon.js";
7
+ import { Anchored } from "./Anchored.js";
7
8
  const Wrap = styled.div `position: relative;`;
8
9
  const Dropdown = styled.div `
9
- position: absolute;
10
- top: calc(100% + 6px);
11
- ${(p) => (p.$align === "right" ? "right: 0;" : "left: 0;")}
12
- z-index: ${v.zPop};
13
10
  width: ${(p) => p.$width}px;
14
11
  max-height: 70vh;
15
12
  overflow-y: auto;
@@ -76,17 +73,21 @@ export function MenuItem({ icon, to, href, onClick, danger, disabled, children }
76
73
  export function Menu({ trigger, children, align = "right", width = 220 }) {
77
74
  const [open, setOpen] = useState(false);
78
75
  const ref = useRef(null);
76
+ const layer = useRef(null);
79
77
  useEffect(() => {
80
78
  if (!open)
81
79
  return;
82
- const onDown = (e) => { if (!ref.current?.contains(e.target))
83
- setOpen(false); };
80
+ const onDown = (e) => {
81
+ const t = e.target;
82
+ if (!ref.current?.contains(t) && !layer.current?.contains(t))
83
+ setOpen(false);
84
+ };
84
85
  const onKey = (e) => { if (e.key === "Escape")
85
86
  setOpen(false); };
86
87
  document.addEventListener("mousedown", onDown);
87
88
  document.addEventListener("keydown", onKey);
88
89
  return () => { document.removeEventListener("mousedown", onDown); document.removeEventListener("keydown", onKey); };
89
90
  }, [open]);
90
- return (_jsxs(Wrap, { ref: ref, children: [_jsx("div", { onClick: () => setOpen(!open), style: { display: "contents" }, children: trigger(open) }), open ? (_jsx(Dropdown, { role: "menu", "$align": align, "$width": width, onClick: () => setOpen(false), children: children })) : null] }));
91
+ return (_jsxs(Wrap, { ref: ref, children: [_jsx("div", { onClick: () => setOpen(!open), style: { display: "contents" }, children: trigger(open) }), open ? (_jsx(Anchored, { anchor: ref, align: align, layerRef: layer, children: _jsx(Dropdown, { role: "menu", "$width": width, onClick: () => setOpen(false), children: children }) })) : null] }));
91
92
  }
92
93
  //# sourceMappingURL=Menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/kit/Menu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAY,CAAC;AAEjD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA,qBAAqB,CAAC;AAE7C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAA8C;;;IAGrE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;aAC/C,CAAC,CAAC,IAAI;WACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;;;gBAGV,CAAC,CAAC,OAAO;sBACH,CAAC,CAAC,KAAK;mBACV,CAAC,CAAC,KAAK;gBACV,CAAC,CAAC,IAAI;;CAErB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;iBAClB,CAAC,CAAC,IAAI;;;;;WAKZ,CAAC,CAAC,KAAK;;CAEjB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;0BACX,CAAC,CAAC,IAAI;;CAE/B,CAAC;AAEF,MAAM,MAAM,GAAG;;;;;;;;;;;CAWd,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAmC;IAC9D,MAAM;WACC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;0BACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;CAEpH,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAmC;IAC3D,MAAM;WACC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;0BACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CACpH,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAmC;IACzD,MAAM;WACC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;0BACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CACpH,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAU7E;IACC,MAAM,KAAK,GAAG,8BAAG,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC;IAClE,IAAI,EAAE;QAAE,OAAO,KAAC,OAAO,IAAC,EAAE,EAAE,EAAE,aAAW,MAAM,YAAG,KAAK,GAAW,CAAC;IACnE,IAAI,IAAI;QAAE,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,aAAW,MAAM,YAAG,KAAK,GAAa,CAAC;IAC7E,OAAO,KAAC,SAAS,IAAC,IAAI,EAAC,QAAQ,aAAU,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,YAAG,KAAK,GAAa,CAAC;AAC7G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,GAAG,EAMrE;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,MAAC,IAAI,IAAC,GAAG,EAAE,GAAG,aACZ,cAAK,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAG,OAAO,CAAC,IAAI,CAAC,GAAO,EACxF,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,QAAQ,IAAC,IAAI,EAAC,MAAM,YAAS,KAAK,YAAU,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAC9E,QAAQ,GACA,CACZ,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/kit/Menu.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiCombobox.d.ts","sourceRoot":"","sources":["../../src/kit/MultiCombobox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAoFlD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAC9G,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAC3C,EAAE;IACD,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,wDAAwD;IACxD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IACzD,sFAAsF;IACtF,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,wFAAwF;IACxF,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,+BA2IA"}
1
+ {"version":3,"file":"MultiCombobox.d.ts","sourceRoot":"","sources":["../../src/kit/MultiCombobox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA+ElD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAC9G,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAC3C,EAAE;IACD,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,wDAAwD;IACxD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IACzD,sFAAsF;IACtF,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,wFAAwF;IACxF,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,+BAiJA"}
@@ -4,6 +4,7 @@ import styled from "styled-components";
4
4
  import { v } from "../theme/tokens.js";
5
5
  import { Input } from "./Form.js";
6
6
  import { Icon } from "./Icon.js";
7
+ import { Anchored } from "./Anchored.js";
7
8
  const Wrap = styled.div `position: relative;`;
8
9
  const Chips = styled.div `
9
10
  display: flex;
@@ -32,11 +33,6 @@ const ChipX = styled.button `
32
33
  &:hover { color: ${v.text}; background: ${v.hover}; }
33
34
  `;
34
35
  const List = styled.div `
35
- position: absolute;
36
- top: calc(100% + 5px);
37
- left: 0;
38
- right: 0;
39
- z-index: ${v.zPop};
40
36
  max-height: 300px;
41
37
  overflow-y: auto;
42
38
  background: ${v.surface};
@@ -97,6 +93,7 @@ export function MultiCombobox({ query, onQueryChange, options, selected, onChang
97
93
  const [open, setOpen] = useState(false);
98
94
  const [active, setActive] = useState(0);
99
95
  const ref = useRef(null);
96
+ const layer = useRef(null);
100
97
  // The highlight starts over when the options change. Adjusted during render
101
98
  // (React's pattern for state that follows a prop) rather than in an effect.
102
99
  const [seenOptions, setSeenOptions] = useState(options);
@@ -107,8 +104,11 @@ export function MultiCombobox({ query, onQueryChange, options, selected, onChang
107
104
  useEffect(() => {
108
105
  if (!open)
109
106
  return;
110
- const onDown = (e) => { if (!ref.current?.contains(e.target))
111
- setOpen(false); };
107
+ const onDown = (e) => {
108
+ const t = e.target;
109
+ if (!ref.current?.contains(t) && !layer.current?.contains(t))
110
+ setOpen(false);
111
+ };
112
112
  document.addEventListener("mousedown", onDown);
113
113
  return () => document.removeEventListener("mousedown", onDown);
114
114
  }, [open]);
@@ -168,10 +168,10 @@ export function MultiCombobox({ query, onQueryChange, options, selected, onChang
168
168
  e.preventDefault();
169
169
  onChange(selected.slice(0, -1));
170
170
  }
171
- } }), loading ? _jsx(Spin, { children: _jsx(Icon, { name: "spinner", spin: true }) }) : null, open && !disabled && (rows > 0 || emptyNote || newProblem) ? (_jsxs(List, { role: "listbox", "aria-multiselectable": true, children: [creatable ? (_jsxs(Option, { type: "button", role: "option", "aria-selected": false, "$on": active === 0, "$picked": false, onMouseEnter: () => setActive(0), onClick: () => pickActive(), children: [_jsx(Tick, { children: _jsx(Icon, { name: "add" }) }), createLabel ? createLabel(typed) : _jsxs(_Fragment, { children: ["Add \u201C", typed, "\u201D"] })] })) : null, newProblem ? _jsx(Note, { children: newProblem }) : null, options.map((o, i) => {
172
- const picked = selected.includes(o.key);
173
- const idx = creatable ? i + 1 : i;
174
- return (_jsxs(Option, { type: "button", role: "option", "aria-selected": picked, "$on": idx === active, "$picked": picked, onMouseEnter: () => setActive(idx), onClick: () => toggle(o.key), children: [_jsx(Tick, { children: picked ? _jsx(Icon, { name: "check" }) : null }), o.render] }, o.key));
175
- }), rows === 0 && !newProblem && emptyNote ? _jsx(Note, { children: emptyNote }) : null] })) : null] }));
171
+ } }), loading ? _jsx(Spin, { children: _jsx(Icon, { name: "spinner", spin: true }) }) : null, open && !disabled && (rows > 0 || emptyNote || newProblem) ? (_jsx(Anchored, { anchor: ref, align: "stretch", gap: 5, layerRef: layer, children: _jsxs(List, { role: "listbox", "aria-multiselectable": true, children: [creatable ? (_jsxs(Option, { type: "button", role: "option", "aria-selected": false, "$on": active === 0, "$picked": false, onMouseEnter: () => setActive(0), onClick: () => pickActive(), children: [_jsx(Tick, { children: _jsx(Icon, { name: "add" }) }), createLabel ? createLabel(typed) : _jsxs(_Fragment, { children: ["Add \u201C", typed, "\u201D"] })] })) : null, newProblem ? _jsx(Note, { children: newProblem }) : null, options.map((o, i) => {
172
+ const picked = selected.includes(o.key);
173
+ const idx = creatable ? i + 1 : i;
174
+ return (_jsxs(Option, { type: "button", role: "option", "aria-selected": picked, "$on": idx === active, "$picked": picked, onMouseEnter: () => setActive(idx), onClick: () => toggle(o.key), children: [_jsx(Tick, { children: picked ? _jsx(Icon, { name: "check" }) : null }), o.render] }, o.key));
175
+ }), rows === 0 && !newProblem && emptyNote ? _jsx(Note, { children: emptyNote }) : null] }) })) : null] }));
176
176
  }
177
177
  //# sourceMappingURL=MultiCombobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiCombobox.js","sourceRoot":"","sources":["../../src/kit/MultiCombobox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiCombobox.js","sourceRoot":"","sources":["../../src/kit/MultiCombobox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type ReactNode } from "react";
2
+ import type { ComboOption } from "./Combobox.tsx";
3
+ export interface PickerOption<T> extends ComboOption<T> {
4
+ /** plain text for type-ahead and search; defaults to `key` */
5
+ text?: string | undefined;
6
+ /** what the closed control shows once picked; defaults to `render` */
7
+ selectedRender?: ReactNode | undefined;
8
+ /** the second line: what choosing this does */
9
+ hint?: ReactNode | undefined;
10
+ /** cannot be picked; a string says why, as the row's title */
11
+ disabled?: boolean | string | undefined;
12
+ /** heading for a run of options; consecutive options share one */
13
+ group?: string | undefined;
14
+ }
15
+ export interface PickerProps<T> {
16
+ options: PickerOption<T>[];
17
+ /** the chosen option's key, or null for none */
18
+ value: string | null;
19
+ onChange: (key: string, value: T) => void;
20
+ /** shown while nothing is chosen */
21
+ placeholder?: ReactNode | undefined;
22
+ /** accessible name, when no Field label names it */
23
+ label?: string | undefined;
24
+ id?: string | undefined;
25
+ disabled?: boolean | undefined;
26
+ /** a search box at the top of the list, filtering on `text`; for long lists */
27
+ searchable?: boolean | undefined;
28
+ loading?: boolean | undefined;
29
+ /** shown when there are no options, or the search matches none */
30
+ emptyNote?: ReactNode | undefined;
31
+ /** submits the chosen key with a plain <form> under this name */
32
+ name?: string | undefined;
33
+ /** list width when it should not match the control, px */
34
+ width?: number | undefined;
35
+ }
36
+ /**
37
+ * Picker: choose one from a list whose options can say more than a word.
38
+ * The kit's replacement for `Select`. Options are `ComboOption`s, so a list
39
+ * built for Combobox works here unchanged.
40
+ */
41
+ export declare function Picker<T>({ options, value, onChange, placeholder, label, id, disabled, searchable, loading, emptyNote, name, width, }: PickerProps<T>): import("react").JSX.Element;
42
+ //# sourceMappingURL=Picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/kit/Picker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAO/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACrD,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,sEAAsE;IACtE,cAAc,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AA2ED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1C,oCAAoC;IACpC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,kEAAkE;IAClE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAKD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,EACxB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAuB,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,GACpH,EAAE,WAAW,CAAC,CAAC,CAAC,+BA2LhB"}
@@ -0,0 +1,225 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useId, useRef, useState } from "react";
3
+ import styled from "styled-components";
4
+ import { v } from "../theme/tokens.js";
5
+ import { ctl } from "./Form.js";
6
+ import { Icon } from "./Icon.js";
7
+ import { Anchored } from "./Anchored.js";
8
+ import { useEscapeLayer } from "./layers.js";
9
+ const Wrap = styled.div `position: relative; min-width: 0;`;
10
+ const Trigger = styled.button `
11
+ ${ctl}
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 8px;
15
+ text-align: left;
16
+ cursor: pointer;
17
+ color: ${(p) => (p.$placeholder ? v.faint : v.text)};
18
+ &[aria-expanded="true"] { border-color: ${v.brand55}; box-shadow: 0 0 0 3px ${v.brand08}; }
19
+ &:disabled { cursor: not-allowed; }
20
+ > .val { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: flex; align-items: center; gap: 8px; }
21
+ > .caret { flex: none; font-size: 10px; color: ${v.faint}; }
22
+ `;
23
+ const List = styled.div `
24
+ max-height: 300px;
25
+ display: flex;
26
+ flex-direction: column;
27
+ background: ${v.surface};
28
+ border: 1px solid ${v.line2};
29
+ border-radius: ${v.rCard};
30
+ box-shadow: ${v.elev};
31
+ overflow: hidden;
32
+ `;
33
+ const Rows = styled.div `
34
+ overflow-y: auto;
35
+ padding: 4px;
36
+ `;
37
+ const Find = styled.input `
38
+ ${ctl}
39
+ border: none;
40
+ border-bottom: 1px solid ${v.line};
41
+ border-radius: 0;
42
+ background: transparent;
43
+ &:focus { box-shadow: none; border-color: ${v.line}; }
44
+ `;
45
+ const Group = styled.div `
46
+ font-family: ${v.mono};
47
+ font-size: 9px;
48
+ font-weight: 600;
49
+ letter-spacing: 0.14em;
50
+ text-transform: uppercase;
51
+ color: ${v.faint};
52
+ padding: 8px 9px 4px;
53
+ `;
54
+ const Option = styled.div `
55
+ display: flex;
56
+ align-items: flex-start;
57
+ gap: 8px;
58
+ padding: 7px 9px;
59
+ border-radius: 7px;
60
+ font-size: 12px;
61
+ color: ${v.text};
62
+ cursor: ${(p) => (p.$disabled ? "not-allowed" : "pointer")};
63
+ opacity: ${(p) => (p.$disabled ? 0.45 : 1)};
64
+ background: ${(p) => (p.$on && !p.$disabled ? v.hover : p.$picked ? v.brand12 : "transparent")};
65
+ > .body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
66
+ > .body > .hint { font-size: 11px; color: ${v.faint}; }
67
+ > .tick { width: 12px; flex: 0 0 12px; color: ${v.brand}; font-size: 10px; padding-top: 2px; }
68
+ `;
69
+ const Note = styled.div `
70
+ padding: 9px 10px;
71
+ font-size: 11.5px;
72
+ color: ${v.faint};
73
+ `;
74
+ const textOf = (o) => (o.text ?? o.key).toLowerCase();
75
+ const enabled = (o) => !!o && !o.disabled;
76
+ /**
77
+ * Picker: choose one from a list whose options can say more than a word.
78
+ * The kit's replacement for `Select`. Options are `ComboOption`s, so a list
79
+ * built for Combobox works here unchanged.
80
+ */
81
+ export function Picker({ options, value, onChange, placeholder = "Choose…", label, id, disabled, searchable, loading, emptyNote, name, width, }) {
82
+ const [open, setOpen] = useState(false);
83
+ const [query, setQuery] = useState("");
84
+ const [active, setActive] = useState(-1);
85
+ const wrap = useRef(null);
86
+ const layer = useRef(null);
87
+ const trigger = useRef(null);
88
+ const find = useRef(null);
89
+ const typed = useRef({ buf: "", at: 0 });
90
+ const listId = useId();
91
+ const optId = (i) => `${listId}-o${i}`;
92
+ const q = query.trim().toLowerCase();
93
+ const shown = searchable && q ? options.filter((o) => textOf(o).includes(q)) : options;
94
+ const picked = options.find((o) => o.key === value);
95
+ const close = (refocus) => {
96
+ setOpen(false);
97
+ setQuery("");
98
+ if (refocus)
99
+ trigger.current?.focus();
100
+ };
101
+ const openAt = (i) => {
102
+ if (disabled)
103
+ return;
104
+ const at = i ?? options.findIndex((o) => o.key === value);
105
+ setActive(at >= 0 ? at : options.findIndex((o) => !o.disabled));
106
+ setOpen(true);
107
+ };
108
+ const pick = (i) => {
109
+ const o = shown[i];
110
+ if (!enabled(o))
111
+ return;
112
+ onChange(o.key, o.value);
113
+ close(true);
114
+ };
115
+ // Escape closes the list before any drawer or modal it sits in (CON-59)
116
+ useEscapeLayer(open, () => close(true));
117
+ useEffect(() => {
118
+ if (!open)
119
+ return;
120
+ const onDown = (e) => {
121
+ const t = e.target;
122
+ if (!wrap.current?.contains(t) && !layer.current?.contains(t)) {
123
+ setOpen(false);
124
+ setQuery("");
125
+ }
126
+ };
127
+ document.addEventListener("mousedown", onDown);
128
+ return () => document.removeEventListener("mousedown", onDown);
129
+ }, [open]);
130
+ useEffect(() => {
131
+ if (open && searchable)
132
+ find.current?.focus();
133
+ }, [open, searchable]);
134
+ // the highlighted row stays in view as the arrows walk a long list
135
+ useEffect(() => {
136
+ if (!open || active < 0)
137
+ return;
138
+ document.getElementById(optId(active))?.scrollIntoView?.({ block: "nearest" });
139
+ });
140
+ const step = (from, dir) => {
141
+ for (let i = from + dir; i >= 0 && i < shown.length; i += dir)
142
+ if (enabled(shown[i]))
143
+ return i;
144
+ return from;
145
+ };
146
+ const first = () => step(-1, 1);
147
+ const last = () => step(shown.length, -1);
148
+ // Type-ahead, as a native select does: letters typed within half a second
149
+ // build one prefix; the same letter again cycles through its matches.
150
+ const typeAhead = (ch, now) => {
151
+ const t = typed.current;
152
+ t.buf = now - t.at > 500 ? ch : t.buf + ch;
153
+ t.at = now;
154
+ const prefix = t.buf.split("").every((c) => c === t.buf[0]) ? t.buf[0] : t.buf;
155
+ const start = prefix.length === 1 ? active + 1 : Math.max(active, 0);
156
+ for (let n = 0; n < shown.length; n++) {
157
+ const i = (start + n) % shown.length;
158
+ if (enabled(shown[i]) && textOf(shown[i]).startsWith(prefix))
159
+ return i;
160
+ }
161
+ return -1;
162
+ };
163
+ const onKey = (e) => {
164
+ if (!open) {
165
+ if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter" || e.key === " ") {
166
+ e.preventDefault();
167
+ openAt();
168
+ }
169
+ else if (e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey && !searchable) {
170
+ // closed type-ahead changes the value directly, as a native select does
171
+ const i = typeAhead(e.key.toLowerCase(), e.timeStamp);
172
+ if (i >= 0) {
173
+ onChange(shown[i].key, shown[i].value);
174
+ setActive(i);
175
+ }
176
+ }
177
+ return;
178
+ }
179
+ if (e.key === "ArrowDown") {
180
+ e.preventDefault();
181
+ setActive((a) => step(a, 1));
182
+ }
183
+ else if (e.key === "ArrowUp") {
184
+ e.preventDefault();
185
+ setActive((a) => step(a, -1));
186
+ }
187
+ else if (e.key === "Home") {
188
+ e.preventDefault();
189
+ setActive(first());
190
+ }
191
+ else if (e.key === "End") {
192
+ e.preventDefault();
193
+ setActive(last());
194
+ }
195
+ else if (e.key === "Enter" || (e.key === " " && !searchable)) {
196
+ e.preventDefault();
197
+ pick(active);
198
+ }
199
+ else if (e.key === "Tab")
200
+ close(false);
201
+ else if (!searchable && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {
202
+ const i = typeAhead(e.key.toLowerCase(), e.timeStamp);
203
+ if (i >= 0)
204
+ setActive(i);
205
+ }
206
+ };
207
+ const rows = [];
208
+ let group;
209
+ shown.forEach((o, i) => {
210
+ if (o.group && o.group !== group)
211
+ rows.push(_jsx(Group, { role: "presentation", children: o.group }, `g-${o.group}-${i}`));
212
+ group = o.group;
213
+ const isPicked = o.key === value;
214
+ rows.push(_jsxs(Option, { id: optId(i), role: "option", "aria-selected": isPicked, "aria-disabled": o.disabled ? true : undefined, title: typeof o.disabled === "string" ? o.disabled : undefined, "$on": i === active, "$picked": isPicked, "$disabled": !!o.disabled, onMouseEnter: () => !o.disabled && setActive(i),
215
+ // keep focus on the trigger or search box, so the keyboard carries on
216
+ onMouseDown: (e) => e.preventDefault(), onClick: () => pick(i), children: [_jsx("span", { className: "tick", children: isPicked ? _jsx(Icon, { name: "check" }) : null }), _jsxs("span", { className: "body", children: [_jsx("span", { children: o.render }), o.hint ? _jsx("span", { className: "hint", children: o.hint }) : null] })] }, o.key));
217
+ });
218
+ return (_jsxs(Wrap, { ref: wrap, children: [_jsxs(Trigger, { ref: trigger, type: "button", id: id, role: "combobox", "aria-label": label, "aria-haspopup": "listbox", "aria-expanded": open, "aria-controls": open ? listId : undefined, "aria-activedescendant": open && !searchable && active >= 0 ? optId(active) : undefined, disabled: disabled, "$placeholder": !picked, onClick: () => (open ? close(false) : openAt()), onKeyDown: onKey, children: [_jsx("span", { className: "val", children: picked ? (picked.selectedRender ?? picked.render) : placeholder }), _jsx("span", { className: "caret", children: loading ? _jsx(Icon, { name: "spinner", spin: true }) : _jsx(Icon, { name: "chevron-down" }) })] }), name !== undefined ? _jsx("input", { type: "hidden", name: name, value: value ?? "" }) : null, open ? (_jsx(Anchored, { anchor: wrap, align: width ? "left" : "stretch", gap: 5, layerRef: layer, children: _jsxs(List, { style: width ? { width } : undefined, children: [searchable ? (_jsx(Find, { ref: find, value: query, placeholder: "Search\u2026", "aria-label": "Search options", "aria-controls": listId, "aria-activedescendant": active >= 0 ? optId(active) : undefined, autoComplete: "off", onChange: (e) => {
219
+ setQuery(e.target.value);
220
+ const nq = e.target.value.trim().toLowerCase();
221
+ const next = nq ? options.filter((o) => textOf(o).includes(nq)) : options;
222
+ setActive(next.findIndex((o) => !o.disabled));
223
+ }, onKeyDown: onKey })) : null, _jsxs(Rows, { id: listId, role: "listbox", "aria-label": label, children: [rows, shown.length === 0 ? _jsx(Note, { children: loading ? "Loading…" : (emptyNote ?? (q ? "Nothing matches" : "No options")) }) : null] })] }) })) : null] }));
224
+ }
225
+ //# sourceMappingURL=Picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../src/kit/Picker.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Range.d.ts","sourceRoot":"","sources":["../../src/kit/Range.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE/D,eAAO,MAAM,aAAa,EAAE,WAAW,EAQtC,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,SAA8C,CAAC;AAE3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG,MAAM,CAE3F;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,GAAE,IAAiB,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAGtI;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG,MAAM,CAG7F;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAItD;AAgFD,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAuB,EAAE,EAAE;IACxE,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CACrC,+BA4DA"}
1
+ {"version":3,"file":"Range.d.ts","sourceRoot":"","sources":["../../src/kit/Range.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE/D,eAAO,MAAM,aAAa,EAAE,WAAW,EAQtC,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,SAA8C,CAAC;AAE3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG,MAAM,CAE3F;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,GAAE,IAAiB,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAGtI;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,WAAW,EAAkB,GAAG,MAAM,CAG7F;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAItD;AA4ED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAuB,EAAE,EAAE;IACxE,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CACrC,+BAgEA"}
package/dist/kit/Range.js CHANGED
@@ -3,6 +3,7 @@ import { useEffect, useRef, useState } from "react";
3
3
  import styled from "styled-components";
4
4
  import { v } from "../theme/tokens.js";
5
5
  import { Icon } from "./Icon.js";
6
+ import { Anchored } from "./Anchored.js";
6
7
  export const RANGE_PRESETS = [
7
8
  { label: "5m", minutes: 5 },
8
9
  { label: "15m", minutes: 15 },
@@ -53,15 +54,11 @@ const Trigger = styled.button `
53
54
  svg { font-size: 10px; opacity: 0.7; }
54
55
  `;
55
56
  const Menu = styled.div `
56
- position: absolute;
57
- top: calc(100% + 6px);
58
- right: 0;
59
57
  min-width: 280px;
60
58
  background: ${v.surface2};
61
59
  border: 1px solid ${v.line2};
62
60
  border-radius: ${v.rCard};
63
61
  box-shadow: ${v.elev};
64
- z-index: ${v.zPop};
65
62
  padding: 8px;
66
63
  `;
67
64
  const Presets = styled.div `display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px;`;
@@ -105,6 +102,7 @@ function toLocalInput(d) {
105
102
  export function RangePicker({ range, onChange, presets = RANGE_PRESETS }) {
106
103
  const [open, setOpen] = useState(false);
107
104
  const wrap = useRef(null);
105
+ const layer = useRef(null);
108
106
  const bounds = rangeBounds(range, new Date(), presets);
109
107
  const [from, setFrom] = useState(toLocalInput(bounds.from));
110
108
  const [to, setTo] = useState(toLocalInput(bounds.to));
@@ -123,7 +121,8 @@ export function RangePicker({ range, onChange, presets = RANGE_PRESETS }) {
123
121
  if (!open)
124
122
  return;
125
123
  const onDown = (e) => {
126
- if (wrap.current && !wrap.current.contains(e.target))
124
+ const t = e.target;
125
+ if (wrap.current && !wrap.current.contains(t) && !layer.current?.contains(t))
127
126
  setOpen(false);
128
127
  };
129
128
  document.addEventListener("mousedown", onDown);
@@ -137,6 +136,6 @@ export function RangePicker({ range, onChange, presets = RANGE_PRESETS }) {
137
136
  onChange({ kind: "absolute", from: f, to: t });
138
137
  setOpen(false);
139
138
  };
140
- return (_jsxs(Wrap, { ref: wrap, children: [_jsxs(Trigger, { type: "button", "$active": range.kind === "absolute", "aria-expanded": open, onClick: toggle, title: range.kind === "absolute" ? "Showing a fixed window" : undefined, children: [_jsx(Icon, { name: "clock" }), describeRange(range), _jsx(Icon, { name: "chevron-down" })] }), open ? (_jsxs(Menu, { children: [_jsx(Presets, { children: presets.map((p) => (_jsx(Preset, { type: "button", "$on": range.kind === "relative" && range.preset === p.label, onClick: () => { onChange({ kind: "relative", preset: p.label }); setOpen(false); }, children: p.label }, p.label))) }), _jsx(Rule, {}), _jsxs(Row, { children: ["From", _jsx(Stamp, { type: "datetime-local", value: from, onChange: (e) => setFrom(e.target.value) })] }), _jsxs(Row, { children: ["To", _jsx(Stamp, { type: "datetime-local", value: to, onChange: (e) => setTo(e.target.value) })] }), _jsx(Apply, { type: "button", onClick: applyAbsolute, children: "Apply fixed window" })] })) : null] }));
139
+ return (_jsxs(Wrap, { ref: wrap, children: [_jsxs(Trigger, { type: "button", "$active": range.kind === "absolute", "aria-expanded": open, onClick: toggle, title: range.kind === "absolute" ? "Showing a fixed window" : undefined, children: [_jsx(Icon, { name: "clock" }), describeRange(range), _jsx(Icon, { name: "chevron-down" })] }), open ? (_jsx(Anchored, { anchor: wrap, align: "right", layerRef: layer, children: _jsxs(Menu, { children: [_jsx(Presets, { children: presets.map((p) => (_jsx(Preset, { type: "button", "$on": range.kind === "relative" && range.preset === p.label, onClick: () => { onChange({ kind: "relative", preset: p.label }); setOpen(false); }, children: p.label }, p.label))) }), _jsx(Rule, {}), _jsxs(Row, { children: ["From", _jsx(Stamp, { type: "datetime-local", value: from, onChange: (e) => setFrom(e.target.value) })] }), _jsxs(Row, { children: ["To", _jsx(Stamp, { type: "datetime-local", value: to, onChange: (e) => setTo(e.target.value) })] }), _jsx(Apply, { type: "button", onClick: applyAbsolute, children: "Apply fixed window" })] }) })) : null] }));
141
140
  }
142
141
  //# sourceMappingURL=Range.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Range.js","sourceRoot":"","sources":["../../src/kit/Range.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Range.js","sourceRoot":"","sources":["../../src/kit/Range.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabStrip.d.ts","sourceRoot":"","sources":["../../src/kit/TabStrip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TabStrip.d.ts","sourceRoot":"","sources":["../../src/kit/TabStrip.tsx"],"names":[],"mappings":"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"}
@@ -20,7 +20,9 @@ import { v } from "../theme/tokens.js";
20
20
  const Strip = styled.div `
21
21
  display: flex;
22
22
  align-items: flex-end;
23
- border-bottom: 1px solid ${v.line};
23
+ /* the rule is an inset shadow, not a border: the tabs' underline paints
24
+ over it from inside the strip, so no tab has to hang below its scroller */
25
+ box-shadow: inset 0 -1px 0 ${v.line};
24
26
  ${(p) => p.$track && css `background: ${v.surface2}; border-radius: ${v.rCtl} ${v.rCtl} 0 0; padding: 0 4px;`}
25
27
  margin: 14px 0 0;
26
28
  > .actions { margin-left: auto; padding: 0 0 6px 12px; display: inline-flex; align-items: center; gap: 8px; flex: none; }
@@ -36,7 +38,10 @@ const Scroll = styled.div `
36
38
  gap: 2px;
37
39
  flex: 1 1 auto;
38
40
  min-width: 0;
41
+ /* overflow-x alone makes overflow-y auto as well, and then a stray pixel of
42
+ height lets the tabs scroll up and down under a trackpad */
39
43
  overflow-x: auto;
44
+ overflow-y: hidden;
40
45
  `;
41
46
  /** Scroll the selected tab into the strip's view on mount and on change, without moving the page. */
42
47
  function useActiveInView(dep) {
@@ -61,7 +66,6 @@ const tabText = css `
61
66
  font-weight: 500;
62
67
  color: ${v.faint};
63
68
  border-bottom: 2px solid transparent;
64
- margin-bottom: -1px;
65
69
  white-space: nowrap;
66
70
  text-decoration: none;
67
71
  display: inline-flex; align-items: center; gap: 6px;
@@ -88,6 +92,7 @@ const Boxed = styled.div `
88
92
  background: ${v.field};
89
93
  max-width: 100%;
90
94
  overflow-x: auto;
95
+ overflow-y: hidden;
91
96
  > .after { margin-left: 8px; font-size: 10.5px; color: ${v.faint}; white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; padding-right: 4px; }
92
97
  `;
93
98
  const BoxTab = styled.button `