wimui 0.24.3 → 0.25.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/components/data-display/Kanban/Kanban.cjs +1 -1
- package/dist/components/data-display/Kanban/Kanban.js +11 -7
- package/dist/components/layout/Footer/Footer.cjs +1 -1
- package/dist/components/layout/Footer/Footer.d.ts +15 -0
- package/dist/components/layout/Footer/Footer.js +15 -12
- package/dist/components/navigation/CommandPalette/CommandPalette.cjs +1 -1
- package/dist/components/navigation/CommandPalette/CommandPalette.js +14 -7
- package/dist/components/navigation/KeyboardShortcuts/KeyboardShortcuts.cjs +1 -1
- package/dist/components/navigation/KeyboardShortcuts/KeyboardShortcuts.d.ts +22 -0
- package/dist/components/navigation/KeyboardShortcuts/KeyboardShortcuts.js +31 -28
- package/dist/components/overlay/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/overlay/ContextMenu/ContextMenu.js +16 -10
- package/dist/llms-full.txt +8 -1
- package/dist/llms.txt +1 -1
- package/dist/wimui.umd.js +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),i=require("../../../icon/more-horizontal.cjs"),a=require("../../media/Icon/Icon.cjs"),o=require("./kanban.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=(0,s.forwardRef)(({columns:e,onMove:r,onCardMove:i,className:a,forceMobileUI:u=!1,children:f,asChild:p=!1,...h},_)=>{let{t:v}=n.useWimTranslation(`common`),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(null),[C,w]=(0,s.useState)(null),T=r||i,E=(e,t,n)=>{b({itemId:t,columnId:n}),e.dataTransfer.setData(`text/plain`,`${n}:${t}`),e.dataTransfer.effectAllowed=`move`},D=(e,t)=>{e.preventDefault(),S(t)},O=(e,t)=>{e.preventDefault(),S(null);let[n,r]=e.dataTransfer.getData(`text/plain`).split(`:`);T?.(r,n,t),b(null)},k=(e,t,n)=>{T?.(e,t,n),w(null)},A=s.default.useMemo(()=>{if(e)return e;let t=[];return s.default.Children.forEach(f,e=>{if(s.default.isValidElement(e)){let n=e.props;typeof n.id==`string`&&typeof n.title==`string`&&t.push({id:n.id,title:n.title,items:[]})}}),t},[f,e]),j=()=>f||(e?e.map(e=>(0,l.jsx)(g,{id:e.id,title:e.title,cardCount:e.items.length,children:e.items.map(e=>(0,l.jsx)(m,{id:e.id,children:e.content},e.id))},e.id)):null),M=p?t.Root:`div`;return(0,l.jsx)(d.Provider,{value:{draggedItem:y,dragOverColumn:x,setDragOverColumn:S,handleDragStart:E,handleDragOver:D,handleDrop:O,handleMobileMove:k,activeMobileMenu:C,setActiveMobileMenu:w,columns:A},children:(0,l.jsx)(M,{...h,ref:_,className:(0,c.default)(`wim-kanban`,o.default.root,u&&o.default.touch,a),role:`region`,"aria-label":v(`a11y.kanban_board`),tabIndex:0,children:(0,l.jsx)(t.Slottable,{children:j()})})})}),d=s.default.createContext(null),f=()=>{let e=s.default.useContext(d);if(!e)throw Error(`Kanban compound components must be used within Kanban`);return e},p=({id:e,title:t,cardCount:i,children:a,className:
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),i=require("../../../icon/more-horizontal.cjs"),a=require("../../media/Icon/Icon.cjs"),o=require("./kanban.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=(0,s.forwardRef)(({columns:e,onMove:r,onCardMove:i,className:a,forceMobileUI:u=!1,children:f,asChild:p=!1,...h},_)=>{let{t:v}=n.useWimTranslation(`common`),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(null),[C,w]=(0,s.useState)(null),T=r||i,E=(e,t,n)=>{b({itemId:t,columnId:n}),e.dataTransfer.setData(`text/plain`,`${n}:${t}`),e.dataTransfer.effectAllowed=`move`},D=(e,t)=>{e.preventDefault(),S(t)},O=(e,t)=>{e.preventDefault(),S(null);let[n,r]=e.dataTransfer.getData(`text/plain`).split(`:`);T?.(r,n,t),b(null)},k=(e,t,n)=>{T?.(e,t,n),w(null)},A=s.default.useMemo(()=>{if(e)return e;let t=[];return s.default.Children.forEach(f,e=>{if(s.default.isValidElement(e)){let n=e.props;typeof n.id==`string`&&typeof n.title==`string`&&t.push({id:n.id,title:n.title,items:[]})}}),t},[f,e]),j=()=>f||(e?e.map(e=>(0,l.jsx)(g,{id:e.id,title:e.title,cardCount:e.items.length,children:e.items.map(e=>(0,l.jsx)(m,{id:e.id,children:e.content},e.id))},e.id)):null),M=p?t.Root:`div`;return(0,l.jsx)(d.Provider,{value:{draggedItem:y,dragOverColumn:x,setDragOverColumn:S,handleDragStart:E,handleDragOver:D,handleDrop:O,handleMobileMove:k,activeMobileMenu:C,setActiveMobileMenu:w,columns:A},children:(0,l.jsx)(M,{...h,ref:_,className:(0,c.default)(`wim-kanban`,o.default.root,u&&o.default.touch,a),role:`region`,"aria-label":v(`a11y.kanban_board`),tabIndex:0,children:(0,l.jsx)(t.Slottable,{children:j()})})})}),d=s.default.createContext(null),f=()=>{let e=s.default.useContext(d);if(!e)throw Error(`Kanban compound components must be used within Kanban`);return e},p=({id:e,title:t,cardCount:i,children:a,className:u})=>{let{dragOverColumn:d,handleDragOver:p,handleDrop:m,setDragOverColumn:h}=f(),{t:g}=n.useWimTranslation(`common`),_=s.default.useId();return(0,l.jsxs)(`div`,{className:(0,c.default)(o.default.column,{[o.default.dragOver]:d===e},u),role:`group`,"aria-labelledby":t?_:void 0,onDragOver:t=>p(t,e),onDrop:t=>m(t,e),onDragLeave:()=>h(null),children:[(0,l.jsxs)(`div`,{className:o.default.columnHeader,children:[(0,l.jsx)(`div`,{id:_,className:o.default.columnTitle,"aria-hidden":`true`,children:t}),i!==void 0&&(0,l.jsxs)(`div`,{className:o.default.columnCount,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,children:i}),(0,l.jsx)(r.VisuallyHidden,{children:g(`a11y.kanban_column_count`,{count:i})})]})]}),(0,l.jsx)(`div`,{className:o.default.columnBody,children:a})]})},m=({id:e,children:t,disabled:r,className:u})=>{let{t:d}=n.useWimTranslation(`common`),{draggedItem:p,handleDragStart:m,handleMobileMove:g,activeMobileMenu:_,setActiveMobileMenu:v,columns:y}=f(),b=s.default.useContext(h);return(0,l.jsxs)(`div`,{className:(0,c.default)(o.default.card,{[o.default.dragging]:p?.itemId===e,[o.default.disabled]:r},u),draggable:!r,onDragStart:t=>b&&m(t,e,b),children:[(0,l.jsx)(`div`,{className:o.default.cardContent,children:t}),(0,l.jsxs)(`div`,{className:o.default.cardMove,children:[(0,l.jsx)(`button`,{type:`button`,className:o.default.cardMoveBtn,onClick:()=>v(_===e?null:e),"aria-label":d(`a11y.move_card`),disabled:r,children:(0,l.jsx)(a.Icon,{component:i.default,size:`sm`})}),_===e&&(0,l.jsx)(`div`,{className:o.default.cardMoveMenu,role:`listbox`,"aria-label":d(`a11y.move_to_column`),children:y.filter(e=>e.id!==b).map(t=>(0,l.jsx)(`button`,{type:`button`,className:o.default.cardMoveOption,onClick:()=>b&&g(e,b,t.id),role:`option`,"aria-selected":!1,children:t.title},t.id))})]})]})},h=s.default.createContext(null),g=e=>(0,l.jsx)(h.Provider,{value:e.id,children:(0,l.jsx)(p,{...e})}),_=u;_.Column=g,_.Card=m,u.displayName=`Kanban`,_.displayName=`KanbanBoard`,p.displayName=`KanbanColumn`,m.displayName=`KanbanCard`,g.displayName=`KanbanColumnWrapper`,exports.Kanban=u,exports.KanbanBoard=_,exports.default=_,exports.KanbanCard=m,exports.KanbanColumn=p;
|
|
@@ -72,24 +72,28 @@ var p = c(({ columns: r, onMove: i, onCardMove: a, className: c, forceMobileUI:
|
|
|
72
72
|
let e = s.useContext(m);
|
|
73
73
|
if (!e) throw Error("Kanban compound components must be used within Kanban");
|
|
74
74
|
return e;
|
|
75
|
-
}, g = ({ id: e, title: t, cardCount: i, children: a, className:
|
|
76
|
-
let { dragOverColumn:
|
|
75
|
+
}, g = ({ id: e, title: t, cardCount: i, children: a, className: c }) => {
|
|
76
|
+
let { dragOverColumn: l, handleDragOver: p, handleDrop: m, setDragOverColumn: g } = h(), { t: _ } = n("common"), v = s.useId();
|
|
77
77
|
return /* @__PURE__ */ f("div", {
|
|
78
|
-
className: u(o.column, { [o.dragOver]:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
className: u(o.column, { [o.dragOver]: l === e }, c),
|
|
79
|
+
role: "group",
|
|
80
|
+
"aria-labelledby": t ? v : void 0,
|
|
81
|
+
onDragOver: (t) => p(t, e),
|
|
82
|
+
onDrop: (t) => m(t, e),
|
|
83
|
+
onDragLeave: () => g(null),
|
|
82
84
|
children: [/* @__PURE__ */ f("div", {
|
|
83
85
|
className: o.columnHeader,
|
|
84
86
|
children: [/* @__PURE__ */ d("div", {
|
|
87
|
+
id: v,
|
|
85
88
|
className: o.columnTitle,
|
|
89
|
+
"aria-hidden": "true",
|
|
86
90
|
children: t
|
|
87
91
|
}), i !== void 0 && /* @__PURE__ */ f("div", {
|
|
88
92
|
className: o.columnCount,
|
|
89
93
|
children: [/* @__PURE__ */ d("span", {
|
|
90
94
|
"aria-hidden": "true",
|
|
91
95
|
children: i
|
|
92
|
-
}), /* @__PURE__ */ d(r, { children:
|
|
96
|
+
}), /* @__PURE__ */ d(r, { children: _("a11y.kanban_column_count", { count: i }) })]
|
|
93
97
|
})]
|
|
94
98
|
}), /* @__PURE__ */ d("div", {
|
|
95
99
|
className: o.columnBody,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./footer.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=n.default.forwardRef(({className:e,children:n,bordered:a,fluid:o,background:s=`surface`,...c},l)=>(0,i.jsx)(`footer`,{ref:l,className:(0,r.default)(`wim-footer`,t.default.root,a&&t.default.bordered,s&&t.default[`bg-${s}`],e),"data-bordered":a,...c,children:(0,i.jsx)(`div`,{className:(0,r.default)(t.default.container,o&&t.default.fluid),children:n})}));a.displayName=`Footer`;var o=n.default.forwardRef(({className:e,children:n,title:a,...
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./footer.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=n.default.forwardRef(({className:e,children:n,bordered:a,fluid:o,background:s=`surface`,...c},l)=>(0,i.jsx)(`footer`,{ref:l,className:(0,r.default)(`wim-footer`,t.default.root,a&&t.default.bordered,s&&t.default[`bg-${s}`],e),"data-bordered":a,...c,children:(0,i.jsx)(`div`,{className:(0,r.default)(t.default.container,o&&t.default.fluid),children:n})}));a.displayName=`Footer`;var o=n.default.forwardRef(({className:e,children:n,title:a,titleLevel:o,...s},c)=>{let l=o?`h${o}`:null;return(0,i.jsxs)(`div`,{ref:c,className:(0,r.default)(t.default.section,e),...s,children:[a&&(l?(0,i.jsx)(l,{className:t.default.sectionTitle,children:a}):(0,i.jsx)(`p`,{className:t.default.sectionTitle,children:a})),(0,i.jsx)(`div`,{className:t.default.sectionContent,children:n})]})});o.displayName=`Footer.Section`;var s=n.default.forwardRef(({className:e,children:n,...a},o)=>(0,i.jsx)(`div`,{ref:o,className:(0,r.default)(t.default.bottom,e),...a,children:n}));s.displayName=`Footer.Bottom`;var c=Object.assign(a,{Section:o,Bottom:s});exports.Footer=c,exports.default=c,exports.FooterBottom=s,exports.FooterSection=o;
|
|
@@ -7,8 +7,23 @@ export interface FooterProps extends React.ComponentPropsWithoutRef<"footer"> {
|
|
|
7
7
|
/** Background color */
|
|
8
8
|
background?: "surface" | "surface-variant" | "inverse";
|
|
9
9
|
}
|
|
10
|
+
/** 見出しの段。`Dashboard` の `titleLevel` と同じ語彙に揃えてある(T211)。 */
|
|
11
|
+
export type FooterTitleLevel = 2 | 3 | 4 | 5 | 6;
|
|
10
12
|
export interface FooterSectionProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
11
13
|
title?: string;
|
|
14
|
+
/**
|
|
15
|
+
* `title` を見出しとして描くときの段(T211)。渡さなければ見出しにならず `p` のまま。
|
|
16
|
+
*
|
|
17
|
+
* 既定を見出しにしてはいけない(T191 の実績)── かつて `h4` 固定だった頃、ページに
|
|
18
|
+
* `h1` / `h2` があると段が飛んで axe の `heading-order` が鳴った
|
|
19
|
+
* (`Probes/SaginomiyaPool` で実際に出た)。フッタの欄名は文書の見出しではない、
|
|
20
|
+
* というのがそのときの判断で、ここはそれを踏襲する。
|
|
21
|
+
*
|
|
22
|
+
* ただし「欄名を見出しとして辿らせたい」ページも実在するので、段を明示したときだけ
|
|
23
|
+
* 見出しになるようにしてある。`Alert` の `titleTag`(既定 `div`)と同じ形。段を
|
|
24
|
+
* 決めるのはページ側の構造を知っている呼び出し元の仕事。
|
|
25
|
+
*/
|
|
26
|
+
titleLevel?: FooterTitleLevel;
|
|
12
27
|
}
|
|
13
28
|
export declare const FooterSection: React.ForwardRefExoticComponent<FooterSectionProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
29
|
export type FooterBottomProps = React.ComponentPropsWithoutRef<"div">;
|
|
@@ -15,18 +15,21 @@ var a = t.forwardRef(({ className: t, children: i, bordered: a, fluid: o, backgr
|
|
|
15
15
|
})
|
|
16
16
|
}));
|
|
17
17
|
a.displayName = "Footer";
|
|
18
|
-
var o = t.forwardRef(({ className: t, children: a, title: o,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
children: o
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
var o = t.forwardRef(({ className: t, children: a, title: o, titleLevel: s, ...c }, l) => {
|
|
19
|
+
let u = s ? `h${s}` : null;
|
|
20
|
+
return /* @__PURE__ */ i("div", {
|
|
21
|
+
ref: l,
|
|
22
|
+
className: n(e.section, t),
|
|
23
|
+
...c,
|
|
24
|
+
children: [o && r(u || "p", {
|
|
25
|
+
className: e.sectionTitle,
|
|
26
|
+
children: o
|
|
27
|
+
}), /* @__PURE__ */ r("div", {
|
|
28
|
+
className: e.sectionContent,
|
|
29
|
+
children: a
|
|
30
|
+
})]
|
|
31
|
+
});
|
|
32
|
+
});
|
|
30
33
|
o.displayName = "Footer.Section";
|
|
31
34
|
var s = t.forwardRef(({ className: t, children: i, ...a }, o) => /* @__PURE__ */ r("div", {
|
|
32
35
|
ref: o,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../overlay/Portal/Portal.cjs"),r=require("../../layout/Transition/Transition.cjs"),i=require("../../overlay/FocusTrap/FocusTrap.cjs"),a=require("../../../icon/search.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("../../_internal/BaseListItem/BaseListItem.cjs"),c=require("./command-palette.module.cjs");let l=require("react");l=e.__toESM(l,1);let u=require("classnames");u=e.__toESM(u,1);let d=require("react/jsx-runtime");var f=(0,l.createContext)(void 0),p=()=>{let e=(0,l.useContext)(f);if(!e)throw Error(`CommandPalette sub-components must be used within a CommandPalette`);return e},m=({children:e,open:t,onOpenChange:n})=>{let[r,i]=(0,l.useState)(!1),[a,o]=(0,l.useState)(``),[s,c]=(0,l.useState)(0),[u,p]=(0,l.useState)(!1),m=(0,l.useRef)(0),h=t!==void 0,g=h?t:r,_=(0,l.useCallback)(e=>{h||i(e),n?.(e),e||(o(``),c(0))},[h,n]),v=(0,l.useCallback)(()=>{let e=m.current;return m.current+=1,e},[]),y=(0,l.useCallback)(()=>{--m.current},[]);m.current=0,(0,l.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`k`&&(e.preventDefault(),p(!0),_(!g)),e.key===`Escape`&&g&&_(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[g,_]);let b=l.default.useMemo(()=>({open:g,onOpenChange:_,search:a,setSearch:o,activeIndex:s,setActiveIndex:c,registerItem:v,unregisterItem:y,isKeyboardNavigating:u,setIsKeyboardNavigating:p}),[g,_,a,s,v,y,u]);return(0,d.jsx)(f.Provider,{value:b,children:e})},h=({children:e,asChild:t,className:n})=>{let{onOpenChange:r,setIsKeyboardNavigating:i}=p(),a=e=>{i(e.detail===0),r(!0)};return t&&l.default.isValidElement(e)?l.default.cloneElement(e,{onClick:t=>{e.props.onClick?.(t),a(t)},className:(0,u.default)(n,e.props.className)}):(0,d.jsx)(`button`,{className:(0,u.default)(c.default.trigger,n),onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&i(!0)},children:e})},g=({children:e,className:a,"aria-label":o})=>{let{t:s}=t.useWimTranslation(`components`),{open:f,onOpenChange:m,activeIndex:h,setActiveIndex:g,isKeyboardNavigating:_,setIsKeyboardNavigating:v}=p(),y=(0,l.useRef)(null);return(0,d.jsx)(n.Portal,{children:(0,d.jsx)(r.Transition,{show:f,preset:`fade`,children:(0,d.jsx)(`div`,{role:`presentation`,className:c.default.overlay,onClick:e=>{e.target===e.currentTarget&&m(!1)},children:(0,d.jsx)(r.Transition,{show:f,preset:`scale`,children:(0,d.jsx)(i.FocusTrap,{active:f,children:(0,d.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":o??s(`command_palette.label`),className:(0,u.default)(`wim-command-palette`,c.default.content,a),onClick:e=>e.stopPropagation(),onMouseMove:e=>{if(!y.current){y.current={x:e.clientX,y:e.clientY};return}Math.sqrt((e.clientX-y.current.x)**2+(e.clientY-y.current.y)**2)>10&&v(!1),y.current={x:e.clientX,y:e.clientY}},"data-keyboard-nav":_,onKeyDown:e=>{v(!0);let t=e.currentTarget.querySelectorAll(`.${c.default.item}:not([aria-disabled="true"])`).length;t!==0&&(e.key===`ArrowDown`?(e.preventDefault(),g(e=>(e+1)%t)):e.key===`ArrowUp`?(e.preventDefault(),g(e=>(e-1+t)%t)):e.key===`Home`?(e.preventDefault(),g(0)):e.key===`End`?(e.preventDefault(),g(t-1)):e.key===`Enter`&&(e.preventDefault(),document.getElementById(`wim-command-palette-item-${h}`)?.click()))},children:e})})})})})})},_=({placeholder:e,value:t,onChange:n,rightSection:r})=>{let{search:i,setSearch:s,setActiveIndex:u,activeIndex:f}=p(),m=(0,l.useRef)(null);return(0,l.useEffect)(()=>{m.current?.focus()},[]),(0,d.jsxs)(`div`,{className:c.default.inputWrapper,children:[(0,d.jsx)(o.Icon,{component:a.default,size:`sm`}),(0,d.jsx)(`input`,{ref:m,className:c.default.input,placeholder:e,value:t??i,onChange:e=>{let t=e.target.value;s(t),u(0),n?.(t)},role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":!0,"aria-controls":`wim-command-palette-listbox`,"aria-activedescendant":`wim-command-palette-item-${f}`}),r&&(0,d.jsx)(`div`,{className:c.default.inputRight,children:r})]})},v=({children:e})=>(0,d.jsx)(`div`,{className:c.default.list,role:`listbox`,id:`wim-command-palette-listbox`,children:e}),y=({children:e,heading:t})=>(0,d.jsxs)(`div`,{className:c.default.group,children:[t&&(0,d.jsx)(`div`,{className:c.default.groupHeading,children:t}),e]}),b=({children:e,onSelect:t,icon:n,shortcut:r,disabled:i})=>{let{activeIndex:a,setActiveIndex:o,registerItem:u,onOpenChange:f}=p(),[m]=(0,l.useState)(()=>u()),h=a===m;return(0,l.useEffect)(()=>{h&&!i&&document.getElementById(`wim-command-palette-item-${m}`)?.scrollIntoView({block:`nearest`})},[h,i,m]),(0,d.jsx)(s.BaseListItem,{role:`option`,id:`wim-command-palette-item-${m}`,"aria-selected":h,className:c.default.item,active:h,disabled:i,icon:n,rightSection:r&&(0,d.jsx)(`div`,{className:c.default.shortcut,children:r.map(e=>(0,d.jsx)(`kbd`,{className:c.default.kbd,children:e},e))}),onMouseEnter:()=>!i&&o(m),onClick:()=>{i||(t?.(),f(!1))},children:e})},x=({children:e})=>{let{t:n}=t.useWimTranslation(`components`),r=e??n(`command_palette.no_results`),{open:i,search:a}=p(),[o,s]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(i){let e=setTimeout(()=>{let e=document.querySelectorAll(`.${c.default.item}`);s(e.length===0)},0);return()=>clearTimeout(e)}},[i,a]),!i||!o?null:(0,d.jsx)(`div`,{className:c.default.empty,children:r})},S=({children:e})=>(0,d.jsx)(`div`,{className:c.default.footer,children:e});exports.CommandPalette=m,exports.CommandPaletteContent=g,exports.CommandPaletteEmpty=x,exports.CommandPaletteFooter=S,exports.CommandPaletteGroup=y,exports.CommandPaletteInput=_,exports.CommandPaletteItem=b,exports.CommandPaletteList=v,exports.CommandPaletteTrigger=h;
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../overlay/Portal/Portal.cjs"),r=require("../../layout/Transition/Transition.cjs"),i=require("../../overlay/FocusTrap/FocusTrap.cjs"),a=require("../../../icon/search.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("../../_internal/BaseListItem/BaseListItem.cjs"),c=require("./command-palette.module.cjs");let l=require("react");l=e.__toESM(l,1);let u=require("classnames");u=e.__toESM(u,1);let d=require("react/jsx-runtime");var f=(0,l.createContext)(void 0),p=()=>{let e=(0,l.useContext)(f);if(!e)throw Error(`CommandPalette sub-components must be used within a CommandPalette`);return e},m=({children:e,open:t,onOpenChange:n})=>{let[r,i]=(0,l.useState)(!1),[a,o]=(0,l.useState)(``),[s,c]=(0,l.useState)(0),[u,p]=(0,l.useState)(!1),m=(0,l.useRef)(0),h=t!==void 0,g=h?t:r,_=(0,l.useCallback)(e=>{h||i(e),n?.(e),e||(o(``),c(0))},[h,n]),v=(0,l.useCallback)(()=>{let e=m.current;return m.current+=1,e},[]),y=(0,l.useCallback)(()=>{--m.current},[]);m.current=0,(0,l.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`k`&&(e.preventDefault(),p(!0),_(!g)),e.key===`Escape`&&g&&_(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[g,_]);let b=l.default.useMemo(()=>({open:g,onOpenChange:_,search:a,setSearch:o,activeIndex:s,setActiveIndex:c,registerItem:v,unregisterItem:y,isKeyboardNavigating:u,setIsKeyboardNavigating:p}),[g,_,a,s,v,y,u]);return(0,d.jsx)(f.Provider,{value:b,children:e})},h=({children:e,asChild:t,className:n})=>{let{onOpenChange:r,setIsKeyboardNavigating:i}=p(),a=e=>{i(e.detail===0),r(!0)};return t&&l.default.isValidElement(e)?l.default.cloneElement(e,{onClick:t=>{e.props.onClick?.(t),a(t)},className:(0,u.default)(n,e.props.className)}):(0,d.jsx)(`button`,{className:(0,u.default)(c.default.trigger,n),onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&i(!0)},children:e})},g=({children:e,className:a,"aria-label":o})=>{let{t:s}=t.useWimTranslation(`components`),{open:f,onOpenChange:m,activeIndex:h,setActiveIndex:g,isKeyboardNavigating:_,setIsKeyboardNavigating:v}=p(),y=(0,l.useRef)(null);return(0,d.jsx)(n.Portal,{children:(0,d.jsx)(r.Transition,{show:f,preset:`fade`,children:(0,d.jsx)(`div`,{role:`presentation`,className:c.default.overlay,onClick:e=>{e.target===e.currentTarget&&m(!1)},children:(0,d.jsx)(r.Transition,{show:f,preset:`scale`,children:(0,d.jsx)(i.FocusTrap,{active:f,children:(0,d.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":o??s(`command_palette.label`),className:(0,u.default)(`wim-command-palette`,c.default.content,a),onClick:e=>e.stopPropagation(),onMouseMove:e=>{if(!y.current){y.current={x:e.clientX,y:e.clientY};return}Math.sqrt((e.clientX-y.current.x)**2+(e.clientY-y.current.y)**2)>10&&v(!1),y.current={x:e.clientX,y:e.clientY}},"data-keyboard-nav":_,onKeyDown:e=>{v(!0);let t=e.currentTarget.querySelectorAll(`.${c.default.item}:not([aria-disabled="true"])`).length;t!==0&&(e.key===`ArrowDown`?(e.preventDefault(),g(e=>(e+1)%t)):e.key===`ArrowUp`?(e.preventDefault(),g(e=>(e-1+t)%t)):e.key===`Home`?(e.preventDefault(),g(0)):e.key===`End`?(e.preventDefault(),g(t-1)):e.key===`Enter`&&(e.preventDefault(),document.getElementById(`wim-command-palette-item-${h}`)?.click()))},children:e})})})})})})},_=({placeholder:e,value:t,onChange:n,rightSection:r})=>{let{search:i,setSearch:s,setActiveIndex:u,activeIndex:f}=p(),m=(0,l.useRef)(null);return(0,l.useEffect)(()=>{m.current?.focus()},[]),(0,d.jsxs)(`div`,{className:c.default.inputWrapper,children:[(0,d.jsx)(o.Icon,{component:a.default,size:`sm`}),(0,d.jsx)(`input`,{ref:m,className:c.default.input,placeholder:e,value:t??i,onChange:e=>{let t=e.target.value;s(t),u(0),n?.(t)},role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":!0,"aria-controls":`wim-command-palette-listbox`,"aria-activedescendant":`wim-command-palette-item-${f}`}),r&&(0,d.jsx)(`div`,{className:c.default.inputRight,children:r})]})},v=({children:e})=>(0,d.jsx)(`div`,{className:c.default.list,role:`listbox`,id:`wim-command-palette-listbox`,children:e}),y=({children:e,heading:t})=>{let n=l.default.useId();return(0,d.jsxs)(`div`,{className:c.default.group,role:`group`,"aria-labelledby":t?n:void 0,children:[t&&(0,d.jsx)(`div`,{id:n,className:c.default.groupHeading,"aria-hidden":`true`,children:t}),e]})},b=({children:e,onSelect:t,icon:n,shortcut:r,disabled:i})=>{let{activeIndex:a,setActiveIndex:o,registerItem:u,onOpenChange:f}=p(),[m]=(0,l.useState)(()=>u()),h=a===m;return(0,l.useEffect)(()=>{h&&!i&&document.getElementById(`wim-command-palette-item-${m}`)?.scrollIntoView({block:`nearest`})},[h,i,m]),(0,d.jsx)(s.BaseListItem,{role:`option`,id:`wim-command-palette-item-${m}`,"aria-selected":h,className:c.default.item,active:h,disabled:i,icon:n,rightSection:r&&(0,d.jsx)(`div`,{className:c.default.shortcut,children:r.map(e=>(0,d.jsx)(`kbd`,{className:c.default.kbd,children:e},e))}),onMouseEnter:()=>!i&&o(m),onClick:()=>{i||(t?.(),f(!1))},children:e})},x=({children:e})=>{let{t:n}=t.useWimTranslation(`components`),r=e??n(`command_palette.no_results`),{open:i,search:a}=p(),[o,s]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(i){let e=setTimeout(()=>{let e=document.querySelectorAll(`.${c.default.item}`);s(e.length===0)},0);return()=>clearTimeout(e)}},[i,a]),!i||!o?null:(0,d.jsx)(`div`,{className:c.default.empty,children:r})},S=({children:e})=>(0,d.jsx)(`div`,{className:c.default.footer,children:e});exports.CommandPalette=m,exports.CommandPaletteContent=g,exports.CommandPaletteEmpty=x,exports.CommandPaletteFooter=S,exports.CommandPaletteGroup=y,exports.CommandPaletteInput=_,exports.CommandPaletteItem=b,exports.CommandPaletteList=v,exports.CommandPaletteTrigger=h;
|
|
@@ -155,13 +155,20 @@ var v = l(void 0), y = () => {
|
|
|
155
155
|
role: "listbox",
|
|
156
156
|
id: "wim-command-palette-listbox",
|
|
157
157
|
children: e
|
|
158
|
-
}), T = ({ children: e, heading: t }) =>
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
className: s.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
158
|
+
}), T = ({ children: e, heading: t }) => {
|
|
159
|
+
let n = c.useId();
|
|
160
|
+
return /* @__PURE__ */ _("div", {
|
|
161
|
+
className: s.group,
|
|
162
|
+
role: "group",
|
|
163
|
+
"aria-labelledby": t ? n : void 0,
|
|
164
|
+
children: [t && /* @__PURE__ */ g("div", {
|
|
165
|
+
id: n,
|
|
166
|
+
className: s.groupHeading,
|
|
167
|
+
"aria-hidden": "true",
|
|
168
|
+
children: t
|
|
169
|
+
}), e]
|
|
170
|
+
});
|
|
171
|
+
}, E = ({ children: e, onSelect: t, icon: n, shortcut: r, disabled: i }) => {
|
|
165
172
|
let { activeIndex: a, setActiveIndex: c, registerItem: l, onOpenChange: u } = y(), [d] = m(() => l()), p = a === d;
|
|
166
173
|
return f(() => {
|
|
167
174
|
p && !i && document.getElementById(`wim-command-palette-item-${d}`)?.scrollIntoView({ block: "nearest" });
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../typography/Kbd/Kbd.cjs"),n=require("./keyboard-shortcuts.module.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("classnames");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=r.default.forwardRef(({shortcuts:e,title:o,separator:
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../typography/Kbd/Kbd.cjs"),n=require("./keyboard-shortcuts.module.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("classnames");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o=r.default.forwardRef(({shortcuts:e,title:o,titleLevel:s,separator:c=`+`,size:l=`md`,className:u,...d},f)=>{let p=s?`h${s}`:null;return(0,a.jsxs)(`div`,{className:(0,i.default)(`wim-keyboard-shortcuts`,n.default.root,n.default[l],u),children:[o&&(p?(0,a.jsx)(p,{className:n.default.title,children:o}):(0,a.jsx)(`p`,{className:n.default.title,children:o})),(0,a.jsx)(`dl`,{ref:f,className:n.default.list,...d,children:e.map((e,i)=>(0,a.jsxs)(`div`,{className:n.default.item,children:[(0,a.jsx)(`dt`,{className:n.default.label,children:e.label}),(0,a.jsx)(`dd`,{className:n.default.keys,children:e.keys.map((e,i)=>(0,a.jsxs)(r.default.Fragment,{children:[i>0&&(0,a.jsx)(`span`,{className:n.default.separator,"aria-hidden":`true`,children:c}),(0,a.jsx)(t.Kbd,{size:l,children:e})]},i))})]},i))})]})});o.displayName=`KeyboardShortcuts`,exports.KeyboardShortcuts=o;
|
|
@@ -6,11 +6,23 @@ export type ShortcutItem = {
|
|
|
6
6
|
/** Keys of the shortcut (e.g. ["Ctrl", "K"]) */
|
|
7
7
|
keys: string[];
|
|
8
8
|
};
|
|
9
|
+
/** 見出しの段。`Dashboard` の `titleLevel` と同じ語彙に揃えてある(T211)。 */
|
|
10
|
+
export type KeyboardShortcutsTitleLevel = 2 | 3 | 4 | 5 | 6;
|
|
9
11
|
export type KeyboardShortcutsProps = React.ComponentPropsWithoutRef<"dl"> & {
|
|
10
12
|
/** List of shortcuts to display */
|
|
11
13
|
shortcuts: ShortcutItem[];
|
|
12
14
|
/** Section title */
|
|
13
15
|
title?: string;
|
|
16
|
+
/**
|
|
17
|
+
* `title` を見出しとして描くときの段(T211)。渡さなければ見出しにならず `p` のまま。
|
|
18
|
+
*
|
|
19
|
+
* ショートカット一覧は「編集」「移動」のように節ごとに積んで使うので、段で辿れると
|
|
20
|
+
* 効く。ただし既定を見出しにはしない ── 段を決め打つとページに `h1` / `h2` がある
|
|
21
|
+
* 場合に段が飛び、axe の `heading-order` が鳴る(T191 で `Footer` が実際に踏んだ)。
|
|
22
|
+
* 段を決めるのはページ側の構造を知っている呼び出し元の仕事で、`Alert` の `titleTag`
|
|
23
|
+
* (既定 `div`)と同じ形。
|
|
24
|
+
*/
|
|
25
|
+
titleLevel?: KeyboardShortcutsTitleLevel;
|
|
14
26
|
/**
|
|
15
27
|
* Separator displayed between keys
|
|
16
28
|
* @default "+"
|
|
@@ -30,6 +42,16 @@ export declare const KeyboardShortcuts: React.ForwardRefExoticComponent<Omit<Rea
|
|
|
30
42
|
shortcuts: ShortcutItem[];
|
|
31
43
|
/** Section title */
|
|
32
44
|
title?: string;
|
|
45
|
+
/**
|
|
46
|
+
* `title` を見出しとして描くときの段(T211)。渡さなければ見出しにならず `p` のまま。
|
|
47
|
+
*
|
|
48
|
+
* ショートカット一覧は「編集」「移動」のように節ごとに積んで使うので、段で辿れると
|
|
49
|
+
* 効く。ただし既定を見出しにはしない ── 段を決め打つとページに `h1` / `h2` がある
|
|
50
|
+
* 場合に段が飛び、axe の `heading-order` が鳴る(T191 で `Footer` が実際に踏んだ)。
|
|
51
|
+
* 段を決めるのはページ側の構造を知っている呼び出し元の仕事で、`Alert` の `titleTag`
|
|
52
|
+
* (既定 `div`)と同じ形。
|
|
53
|
+
*/
|
|
54
|
+
titleLevel?: KeyboardShortcutsTitleLevel;
|
|
33
55
|
/**
|
|
34
56
|
* Separator displayed between keys
|
|
35
57
|
* @default "+"
|
|
@@ -5,34 +5,37 @@ import n from "react";
|
|
|
5
5
|
import r from "classnames";
|
|
6
6
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/navigation/KeyboardShortcuts/KeyboardShortcuts.tsx
|
|
8
|
-
var o = n.forwardRef(({ shortcuts: o, title: s,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
className: t.
|
|
12
|
-
children: s
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
children:
|
|
20
|
-
className: t.
|
|
21
|
-
children:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
className: t.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}))
|
|
8
|
+
var o = n.forwardRef(({ shortcuts: o, title: s, titleLevel: c, separator: l = "+", size: u = "md", className: d, ...f }, p) => {
|
|
9
|
+
let m = c ? `h${c}` : null;
|
|
10
|
+
return /* @__PURE__ */ a("div", {
|
|
11
|
+
className: r("wim-keyboard-shortcuts", t.root, t[u], d),
|
|
12
|
+
children: [s && i(m || "p", {
|
|
13
|
+
className: t.title,
|
|
14
|
+
children: s
|
|
15
|
+
}), /* @__PURE__ */ i("dl", {
|
|
16
|
+
ref: p,
|
|
17
|
+
className: t.list,
|
|
18
|
+
...f,
|
|
19
|
+
children: o.map((r, o) => /* @__PURE__ */ a("div", {
|
|
20
|
+
className: t.item,
|
|
21
|
+
children: [/* @__PURE__ */ i("dt", {
|
|
22
|
+
className: t.label,
|
|
23
|
+
children: r.label
|
|
24
|
+
}), /* @__PURE__ */ i("dd", {
|
|
25
|
+
className: t.keys,
|
|
26
|
+
children: r.keys.map((r, o) => /* @__PURE__ */ a(n.Fragment, { children: [o > 0 && /* @__PURE__ */ i("span", {
|
|
27
|
+
className: t.separator,
|
|
28
|
+
"aria-hidden": "true",
|
|
29
|
+
children: l
|
|
30
|
+
}), /* @__PURE__ */ i(e, {
|
|
31
|
+
size: u,
|
|
32
|
+
children: r
|
|
33
|
+
})] }, o))
|
|
34
|
+
})]
|
|
35
|
+
}, o))
|
|
36
|
+
})]
|
|
37
|
+
});
|
|
38
|
+
});
|
|
36
39
|
o.displayName = "KeyboardShortcuts";
|
|
37
40
|
//#endregion
|
|
38
41
|
export { o as KeyboardShortcuts };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../hooks/useMergedRef.cjs"),i=require("../../_internal/BaseListItem/BaseListItem.cjs"),a=require("./context-menu.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext(null),d=({children:e,menu:i,className:d,disabled:f=!1,asChild:p=!1})=>{let[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(null),[v,y]=(0,o.useState)(!1),b=(0,o.useRef)([]),x=(0,o.useRef)(null),S=r.useMergedRef(x),{refs:C,floatingStyles:w,context:T}=(0,l.useFloating)({open:m,onOpenChange:e=>{h(e),e||(_(null),y(!1))},strategy:`fixed`,middleware:[(0,l.flip)(),(0,l.shift)({padding:10})],whileElementsMounted:l.autoUpdate}),{getFloatingProps:E,getItemProps:D}=(0,l.useInteractions)([(0,l.useDismiss)(T),(0,l.useRole)(T,{role:`menu`}),(0,l.useListNavigation)(T,{listRef:b,activeIndex:g,onNavigate:_,loop:!0})]),O=(e,t,n)=>{C.setReference({getBoundingClientRect(){return{width:0,height:0,x:e,y:t,top:t,left:e,right:e,bottom:t}}}),y(n),h(!0),_(0)},k=e=>{if(e.preventDefault(),f)return;let t=e.clientX===0&&e.clientY===0;O(e.clientX,e.clientY,t)},A=e=>{if(!f&&(e.key===`Enter`||e.key===` `)){e.preventDefault();let t=x.current?.getBoundingClientRect();t&&O(t.left+t.width/2,t.top+t.height/2,!0)}},j=()=>{h(!1)};return(0,c.jsxs)(p?t.Root:`div`,{ref:S,className:(0,s.default)(`wim-context-menu`,!p&&a.default.container,f&&a.default.disabled,d),onContextMenu:k,onKeyDown:A,tabIndex:f?-1:0,"data-testid":`context-menu-trigger`,children:[(0,c.jsx)(t.Slottable,{children:e}),(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{show:m,preset:`fade`,children:(0,c.jsx)(l.FloatingFocusManager,{context:T,modal:!0,initialFocus:v?g??0:-1,children:(0,c.jsx)(`div`,{ref:C.setFloating,className:a.default.menu,style:w,...E({onClick:j,onKeyDown(e){e.key===`Escape`&&j()}}),children:(0,c.jsx)(u.Provider,{value:{activeIndex:g,getItemProps:D},children:(0,c.jsx)(l.FloatingList,{elementsRef:b,children:i})})})})})})]})},f=({children:e,onClick:t,disabled:n=!1,className:r,icon:d,danger:f=!1,asChild:p=!1})=>{let{ref:m,index:h}=(0,l.useListItem)(),g=(0,o.useContext)(u),_=()=>{n||t&&t()},v=g?g.getItemProps({index:h,onClick:()=>_(),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}}):{},y={ref:m,className:(0,s.default)(a.default.item,r),disabled:n,danger:f,icon:d,role:`menuitem`,tabIndex:g?.activeIndex===h?0:-1,...v};return p?(0,c.jsx)(`li`,{role:`none`,children:(0,c.jsx)(i.BaseListItem,{asChild:!0,...y,children:e})}):(0,c.jsx)(i.BaseListItem,{...y,children:e})},p=({className:e})=>(0,c.jsx)(`div`,{className:(0,s.default)(a.default.divider,e),role:`separator`}),m=({children:e,title:t,className:n})=>(0,c.jsxs)(`div`,{role:`group`,className:n,"data-testid":`context-menu-group`,children:[t&&(0,c.jsx)(`div`,{className:a.default.groupTitle,"data-testid":`context-menu-group-title`,children:t}),e]}),h=e=>(0,c.jsx)(d,{...e});h.displayName=`ContextMenu`,h.Item=f,h.Divider=p,h.Group=m,exports.ContextMenu=h,exports.default=h,exports.ContextMenuDivider=p,exports.ContextMenuGroup=m,exports.ContextMenuItem=f;
|
|
2
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../layout/Transition/Transition.cjs"),r=require("../../../hooks/useMergedRef.cjs"),i=require("../../_internal/BaseListItem/BaseListItem.cjs"),a=require("./context-menu.module.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("classnames");s=e.__toESM(s,1);let c=require("react/jsx-runtime"),l=require("@floating-ui/react");var u=o.default.createContext(null),d=({children:e,menu:i,className:d,disabled:f=!1,asChild:p=!1})=>{let[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(null),[v,y]=(0,o.useState)(!1),b=(0,o.useRef)([]),x=(0,o.useRef)(null),S=r.useMergedRef(x),{refs:C,floatingStyles:w,context:T}=(0,l.useFloating)({open:m,onOpenChange:e=>{h(e),e||(_(null),y(!1))},strategy:`fixed`,middleware:[(0,l.flip)(),(0,l.shift)({padding:10})],whileElementsMounted:l.autoUpdate}),{getFloatingProps:E,getItemProps:D}=(0,l.useInteractions)([(0,l.useDismiss)(T),(0,l.useRole)(T,{role:`menu`}),(0,l.useListNavigation)(T,{listRef:b,activeIndex:g,onNavigate:_,loop:!0})]),O=(e,t,n)=>{C.setReference({getBoundingClientRect(){return{width:0,height:0,x:e,y:t,top:t,left:e,right:e,bottom:t}}}),y(n),h(!0),_(0)},k=e=>{if(e.preventDefault(),f)return;let t=e.clientX===0&&e.clientY===0;O(e.clientX,e.clientY,t)},A=e=>{if(!f&&(e.key===`Enter`||e.key===` `)){e.preventDefault();let t=x.current?.getBoundingClientRect();t&&O(t.left+t.width/2,t.top+t.height/2,!0)}},j=()=>{h(!1)};return(0,c.jsxs)(p?t.Root:`div`,{ref:S,className:(0,s.default)(`wim-context-menu`,!p&&a.default.container,f&&a.default.disabled,d),onContextMenu:k,onKeyDown:A,tabIndex:f?-1:0,"data-testid":`context-menu-trigger`,children:[(0,c.jsx)(t.Slottable,{children:e}),(0,c.jsx)(l.FloatingPortal,{children:(0,c.jsx)(n.Transition,{show:m,preset:`fade`,children:(0,c.jsx)(l.FloatingFocusManager,{context:T,modal:!0,initialFocus:v?g??0:-1,children:(0,c.jsx)(`div`,{ref:C.setFloating,className:a.default.menu,style:w,...E({onClick:j,onKeyDown(e){e.key===`Escape`&&j()}}),children:(0,c.jsx)(u.Provider,{value:{activeIndex:g,getItemProps:D},children:(0,c.jsx)(l.FloatingList,{elementsRef:b,children:i})})})})})})]})},f=({children:e,onClick:t,disabled:n=!1,className:r,icon:d,danger:f=!1,asChild:p=!1})=>{let{ref:m,index:h}=(0,l.useListItem)(),g=(0,o.useContext)(u),_=()=>{n||t&&t()},v=g?g.getItemProps({index:h,onClick:()=>_(),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}}):{},y={ref:m,className:(0,s.default)(a.default.item,r),disabled:n,danger:f,icon:d,role:`menuitem`,tabIndex:g?.activeIndex===h?0:-1,...v};return p?(0,c.jsx)(`li`,{role:`none`,children:(0,c.jsx)(i.BaseListItem,{asChild:!0,...y,children:e})}):(0,c.jsx)(i.BaseListItem,{...y,children:e})},p=({className:e})=>(0,c.jsx)(`div`,{className:(0,s.default)(a.default.divider,e),role:`separator`}),m=({children:e,title:t,className:n})=>{let r=o.default.useId();return(0,c.jsxs)(`div`,{role:`group`,"aria-labelledby":t?r:void 0,className:n,"data-testid":`context-menu-group`,children:[t&&(0,c.jsx)(`div`,{id:r,className:a.default.groupTitle,"data-testid":`context-menu-group-title`,"aria-hidden":`true`,children:t}),e]})},h=e=>(0,c.jsx)(d,{...e});h.displayName=`ContextMenu`,h.Item=f,h.Divider=p,h.Group=m,exports.ContextMenu=h,exports.default=h,exports.ContextMenuDivider=p,exports.ContextMenuGroup=m,exports.ContextMenuItem=f;
|
|
@@ -124,16 +124,22 @@ var T = o.createContext(null), E = ({ children: i, menu: o, className: s, disabl
|
|
|
124
124
|
}, O = ({ className: e }) => /* @__PURE__ */ d("div", {
|
|
125
125
|
className: u(a.divider, e),
|
|
126
126
|
role: "separator"
|
|
127
|
-
}), k = ({ children: e, title: t, className: n }) =>
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
className:
|
|
133
|
-
"data-testid": "context-menu-group
|
|
134
|
-
children: t
|
|
135
|
-
|
|
136
|
-
|
|
127
|
+
}), k = ({ children: e, title: t, className: n }) => {
|
|
128
|
+
let r = o.useId();
|
|
129
|
+
return /* @__PURE__ */ f("div", {
|
|
130
|
+
role: "group",
|
|
131
|
+
"aria-labelledby": t ? r : void 0,
|
|
132
|
+
className: n,
|
|
133
|
+
"data-testid": "context-menu-group",
|
|
134
|
+
children: [t && /* @__PURE__ */ d("div", {
|
|
135
|
+
id: r,
|
|
136
|
+
className: a.groupTitle,
|
|
137
|
+
"data-testid": "context-menu-group-title",
|
|
138
|
+
"aria-hidden": "true",
|
|
139
|
+
children: t
|
|
140
|
+
}), e]
|
|
141
|
+
});
|
|
142
|
+
}, A = (e) => /* @__PURE__ */ d(E, { ...e });
|
|
137
143
|
A.displayName = "ContextMenu", A.Item = D, A.Divider = O, A.Group = k;
|
|
138
144
|
//#endregion
|
|
139
145
|
export { A as ContextMenu, A as default, O as ContextMenuDivider, k as ContextMenuGroup, D as ContextMenuItem };
|
package/dist/llms-full.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What this is
|
|
6
6
|
|
|
7
|
-
**wimui** v0.
|
|
7
|
+
**wimui** v0.25.0 — a React 19 component library: 218 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
|
|
8
8
|
|
|
9
9
|
## Install & required setup
|
|
10
10
|
|
|
@@ -2010,6 +2010,13 @@ follows the theme and never needs a hand-mixed colour.
|
|
|
2010
2010
|
- **KeyboardShortcuts** — Display a structured list of keyboard shortcuts
|
|
2011
2011
|
- `shortcuts: ShortcutItem[]` (required) — List of shortcuts to display
|
|
2012
2012
|
- `title: string` — Section title
|
|
2013
|
+
- `titleLevel: 2 | 3 | 4 | 5 | 6` — `title` を見出しとして描くときの段(T211)。渡さなければ見出しにならず `p` のまま。
|
|
2014
|
+
|
|
2015
|
+
ショートカット一覧は「編集」「移動」のように節ごとに積んで使うので、段で辿れると
|
|
2016
|
+
効く。ただし既定を見出しにはしない ── 段を決め打つとページに `h1` / `h2` がある
|
|
2017
|
+
場合に段が飛び、axe の `heading-order` が鳴る(T191 で `Footer` が実際に踏んだ)。
|
|
2018
|
+
段を決めるのはページ側の構造を知っている呼び出し元の仕事で、`Alert` の `titleTag`
|
|
2019
|
+
(既定 `div`)と同じ形。
|
|
2013
2020
|
- `separator: string` = "+" — Separator displayed between keys
|
|
2014
2021
|
@default "+"
|
|
2015
2022
|
- `size: Extract<ComponentSize, "sm" | "md" | "lg">` = "md" — Size of the list
|
package/dist/llms.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What this is
|
|
6
6
|
|
|
7
|
-
**wimui** v0.
|
|
7
|
+
**wimui** v0.25.0 — a React 19 component library: 218 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
|
|
8
8
|
|
|
9
9
|
## Install & required setup
|
|
10
10
|
|