eidos-ui 4.1.1 → 4.2.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/chip/index.cjs +2 -2
- package/dist/chip/index.js +1 -1
- package/dist/{chunk-SONL2RCW.js → chunk-2LSQGDRH.js} +5 -5
- package/dist/{chunk-SOS4K7VC.js → chunk-45XFUEYG.js} +2 -2
- package/dist/{chunk-AWPJH3UB.js → chunk-4MURW4H3.js} +2 -2
- package/dist/{chunk-2WDL2ZVP.js → chunk-5TRO6CYR.js} +10 -4
- package/dist/chunk-5TRO6CYR.js.map +1 -0
- package/dist/{chunk-SJPCBRKR.cjs → chunk-5YTPZN6X.cjs} +3 -3
- package/dist/{chunk-SJPCBRKR.cjs.map → chunk-5YTPZN6X.cjs.map} +1 -1
- package/dist/{chunk-FSX7DDLO.js → chunk-A7K53LDB.js} +19 -11
- package/dist/chunk-A7K53LDB.js.map +1 -0
- package/dist/{chunk-D2PXPX56.js → chunk-AMVA62UC.js} +4 -4
- package/dist/{chunk-43DJ3GGR.js → chunk-CEVMMYJ5.js} +2 -2
- package/dist/{chunk-DCUIT7SI.js → chunk-CIDHX2EW.js} +2 -2
- package/dist/{chunk-MKQVDEHI.cjs → chunk-CPRNLW4M.cjs} +13 -16
- package/dist/chunk-CPRNLW4M.cjs.map +1 -0
- package/dist/{chunk-6JYXGRJ3.cjs → chunk-EAUTJAKV.cjs} +3 -3
- package/dist/{chunk-6JYXGRJ3.cjs.map → chunk-EAUTJAKV.cjs.map} +1 -1
- package/dist/{chunk-OERK3T7E.js → chunk-ECP5J27K.js} +13 -16
- package/dist/chunk-ECP5J27K.js.map +1 -0
- package/dist/{chunk-5HRVHEHE.cjs → chunk-EJS22Y4B.cjs} +3 -3
- package/dist/{chunk-5HRVHEHE.cjs.map → chunk-EJS22Y4B.cjs.map} +1 -1
- package/dist/{chunk-HKLLKNRQ.cjs → chunk-EM4WYYFN.cjs} +3 -3
- package/dist/{chunk-HKLLKNRQ.cjs.map → chunk-EM4WYYFN.cjs.map} +1 -1
- package/dist/{chunk-Z3OEYDNI.js → chunk-EUQQG5WH.js} +2 -2
- package/dist/{chunk-FFYPSLQV.js → chunk-F2FGZFWF.js} +8 -8
- package/dist/{chunk-FAGQGGT3.js → chunk-GVLQQGI3.js} +2 -2
- package/dist/{chunk-YHSCUPP6.cjs → chunk-J2GJGXGH.cjs} +23 -15
- package/dist/chunk-J2GJGXGH.cjs.map +1 -0
- package/dist/{chunk-LXRNFQEI.js → chunk-JJJXVJUW.js} +3 -3
- package/dist/{chunk-UTOTOWPS.js → chunk-LPSRS5GI.js} +3 -3
- package/dist/{chunk-3QBMSZSE.cjs → chunk-NLTNIQG7.cjs} +3 -3
- package/dist/{chunk-3QBMSZSE.cjs.map → chunk-NLTNIQG7.cjs.map} +1 -1
- package/dist/{chunk-MUMTPMWD.cjs → chunk-NNNMXVHI.cjs} +3 -3
- package/dist/{chunk-MUMTPMWD.cjs.map → chunk-NNNMXVHI.cjs.map} +1 -1
- package/dist/{chunk-57BVERWD.js → chunk-NODLZFCN.js} +3 -3
- package/dist/{chunk-DHOBGYRD.js → chunk-NQ2IY4A2.js} +3 -3
- package/dist/{chunk-SJKD3WCV.cjs → chunk-S3IZPWYP.cjs} +5 -5
- package/dist/{chunk-SJKD3WCV.cjs.map → chunk-S3IZPWYP.cjs.map} +1 -1
- package/dist/{chunk-GRKC4PIX.cjs → chunk-SHGRJX7B.cjs} +3 -3
- package/dist/{chunk-GRKC4PIX.cjs.map → chunk-SHGRJX7B.cjs.map} +1 -1
- package/dist/{chunk-VGMRIXW4.cjs → chunk-STVAB7FD.cjs} +25 -25
- package/dist/{chunk-VGMRIXW4.cjs.map → chunk-STVAB7FD.cjs.map} +1 -1
- package/dist/{chunk-BPVOQLCA.cjs → chunk-TFCOF5FC.cjs} +2 -2
- package/dist/chunk-TFCOF5FC.cjs.map +1 -0
- package/dist/{chunk-IJW6YCJB.cjs → chunk-TTFZKWPH.cjs} +5 -5
- package/dist/{chunk-IJW6YCJB.cjs.map → chunk-TTFZKWPH.cjs.map} +1 -1
- package/dist/{chunk-7VMF6LIC.cjs → chunk-TUNG4IDW.cjs} +9 -9
- package/dist/{chunk-7VMF6LIC.cjs.map → chunk-TUNG4IDW.cjs.map} +1 -1
- package/dist/{chunk-JO4NDJRA.cjs → chunk-U4B6C7OP.cjs} +6 -6
- package/dist/{chunk-JO4NDJRA.cjs.map → chunk-U4B6C7OP.cjs.map} +1 -1
- package/dist/{chunk-ADB7QRX5.cjs → chunk-U4MV7P4A.cjs} +5 -5
- package/dist/{chunk-ADB7QRX5.cjs.map → chunk-U4MV7P4A.cjs.map} +1 -1
- package/dist/{chunk-IBT535UH.js → chunk-UAAQVIZQ.js} +2 -2
- package/dist/chunk-UAAQVIZQ.js.map +1 -0
- package/dist/{chunk-VPN7AR7T.cjs → chunk-USGEUG2O.cjs} +4 -4
- package/dist/{chunk-VPN7AR7T.cjs.map → chunk-USGEUG2O.cjs.map} +1 -1
- package/dist/{chunk-TOLNPD7S.js → chunk-VA23PQTA.js} +2 -2
- package/dist/{chunk-BKUZF7CW.cjs → chunk-VY7DTPO3.cjs} +21 -15
- package/dist/chunk-VY7DTPO3.cjs.map +1 -0
- package/dist/{chunk-K6VEUJLY.cjs → chunk-YEBWP7FD.cjs} +18 -18
- package/dist/{chunk-K6VEUJLY.cjs.map → chunk-YEBWP7FD.cjs.map} +1 -1
- package/dist/{chunk-YYA5SWXD.js → chunk-ZBK4KYKJ.js} +2 -2
- package/dist/color-picker/index.cjs +3 -3
- package/dist/color-picker/index.js +2 -2
- package/dist/combobox/index.cjs +3 -3
- package/dist/combobox/index.js +2 -2
- package/dist/context-menu/index.cjs +4 -4
- package/dist/context-menu/index.js +3 -3
- package/dist/conversation/index.cjs +5 -5
- package/dist/conversation/index.js +4 -4
- package/dist/data-grid/index.cjs +10 -10
- package/dist/data-grid/index.js +9 -9
- package/dist/date-picker/index.cjs +4 -4
- package/dist/date-picker/index.js +3 -3
- package/dist/dropdown/index.cjs +2 -2
- package/dist/dropdown/index.d.cts +10 -0
- package/dist/dropdown/index.d.ts +10 -0
- package/dist/dropdown/index.js +1 -1
- package/dist/index.cjs +20 -20
- package/dist/index.css +1 -1
- package/dist/index.js +19 -19
- package/dist/menu/index.cjs +3 -3
- package/dist/menu/index.js +2 -2
- package/dist/page-layout/index.cjs +5 -5
- package/dist/page-layout/index.js +4 -4
- package/dist/pagination/index.cjs +4 -4
- package/dist/pagination/index.js +3 -3
- package/dist/select/index.cjs +3 -3
- package/dist/select/index.js +2 -2
- package/dist/split-button/index.cjs +4 -4
- package/dist/split-button/index.js +3 -3
- package/dist/split-chip/index.cjs +3 -3
- package/dist/split-chip/index.js +2 -2
- package/dist/table/index.cjs +9 -9
- package/dist/table/index.js +8 -8
- package/dist/tag-input/index.cjs +4 -4
- package/dist/tag-input/index.js +3 -3
- package/dist/theme-editor/index.cjs +5 -5
- package/dist/theme-editor/index.js +4 -4
- package/dist/toolbar/index.cjs +4 -4
- package/dist/toolbar/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-2WDL2ZVP.js.map +0 -1
- package/dist/chunk-BKUZF7CW.cjs.map +0 -1
- package/dist/chunk-BPVOQLCA.cjs.map +0 -1
- package/dist/chunk-FSX7DDLO.js.map +0 -1
- package/dist/chunk-IBT535UH.js.map +0 -1
- package/dist/chunk-MKQVDEHI.cjs.map +0 -1
- package/dist/chunk-OERK3T7E.js.map +0 -1
- package/dist/chunk-YHSCUPP6.cjs.map +0 -1
- /package/dist/{chunk-SONL2RCW.js.map → chunk-2LSQGDRH.js.map} +0 -0
- /package/dist/{chunk-SOS4K7VC.js.map → chunk-45XFUEYG.js.map} +0 -0
- /package/dist/{chunk-AWPJH3UB.js.map → chunk-4MURW4H3.js.map} +0 -0
- /package/dist/{chunk-D2PXPX56.js.map → chunk-AMVA62UC.js.map} +0 -0
- /package/dist/{chunk-43DJ3GGR.js.map → chunk-CEVMMYJ5.js.map} +0 -0
- /package/dist/{chunk-DCUIT7SI.js.map → chunk-CIDHX2EW.js.map} +0 -0
- /package/dist/{chunk-Z3OEYDNI.js.map → chunk-EUQQG5WH.js.map} +0 -0
- /package/dist/{chunk-FFYPSLQV.js.map → chunk-F2FGZFWF.js.map} +0 -0
- /package/dist/{chunk-FAGQGGT3.js.map → chunk-GVLQQGI3.js.map} +0 -0
- /package/dist/{chunk-LXRNFQEI.js.map → chunk-JJJXVJUW.js.map} +0 -0
- /package/dist/{chunk-UTOTOWPS.js.map → chunk-LPSRS5GI.js.map} +0 -0
- /package/dist/{chunk-57BVERWD.js.map → chunk-NODLZFCN.js.map} +0 -0
- /package/dist/{chunk-DHOBGYRD.js.map → chunk-NQ2IY4A2.js.map} +0 -0
- /package/dist/{chunk-TOLNPD7S.js.map → chunk-VA23PQTA.js.map} +0 -0
- /package/dist/{chunk-YYA5SWXD.js.map → chunk-ZBK4KYKJ.js.map} +0 -0
|
@@ -54,7 +54,7 @@ var Chip = ({
|
|
|
54
54
|
const hasBothControls = isClickable && isRemovable;
|
|
55
55
|
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
56
56
|
preIcon && renderIcon(preIcon, "eidos-chip--pre-icon"),
|
|
57
|
-
/* @__PURE__ */ jsx("span", { className: "eidos-chip--copy", children }),
|
|
57
|
+
children && /* @__PURE__ */ jsx("span", { className: "eidos-chip--copy", children }),
|
|
58
58
|
posIcon && renderIcon(posIcon, "eidos-chip--pos-icon")
|
|
59
59
|
] });
|
|
60
60
|
const renderLink = (linkHref, className2, attributes) => /* @__PURE__ */ jsx(
|
|
@@ -113,4 +113,4 @@ var Chip = ({
|
|
|
113
113
|
export {
|
|
114
114
|
Chip
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-UAAQVIZQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Chip/Chip.component.tsx"],"sourcesContent":["import React from 'react';\nimport { X } from 'lucide-react';\nimport type { ChipProps } from './Chip.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { renderIcon } from '../../utils';\nimport { EidosLink } from '../LinkProvider/Link.component';\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n fullWidth = false,\n tooltip,\n className = '',\n preIcon,\n posIcon,\n children,\n onClick,\n onRemove,\n href,\n target,\n rel,\n ...chipProps\n}) => {\n const isClickable = !!onClick || href !== undefined;\n const isRemovable = !!onRemove;\n\n // Build CSS classes\n const chipClasses = [\n 'eidos-chip',\n `eidos-chip--${variant}`,\n `eidos-chip--${color}`,\n `eidos-chip--${size}`,\n disabled && 'eidos-chip--disabled',\n isClickable && 'eidos-chip--clickable',\n isRemovable && 'eidos-chip--removable',\n fullWidth && 'eidos-chip--full-width',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (disabled || !onClick) return;\n onClick();\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent chip click when removing\n if (disabled || !onRemove) return;\n onRemove();\n };\n\n // A chip that is both clickable and removable holds *two* controls, so it\n // has to render them as siblings.\n //\n // The previous shape switched the outer element to a `<div>` when\n // removable - the comment said \"to avoid nested buttons\" - and then gave\n // that div `role=\"button\"` and `tabIndex={0}`. That is the same defect\n // wearing a different hat: a button containing a button, which is invalid\n // (`nested-interactive`) and leaves a screen reader announcing a control\n // inside a control. It is the same shape already fixed on `Dropdown` and\n // `DataGrid`'s rows.\n //\n // Now the outer element is a plain container whenever there is a remove\n // button, and the chip's own action moves to an inner `<button>` wrapping\n // just the content. Each control is separately reachable and separately\n // named.\n const hasBothControls = isClickable && isRemovable;\n\n const body = (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-chip--pre-icon')}\n\n {children && <span className=\"eidos-chip--copy\">{children}</span>}\n\n {posIcon && renderIcon(posIcon, 'eidos-chip--pos-icon')}\n </>\n );\n\n // A link chip follows the same two-control rule: alone, the chip *is* the\n // link; with a remove button, the link moves to the inner action slot so\n // the two stay siblings.\n const renderLink = (\n linkHref: string,\n className: string,\n attributes?: React.AnchorHTMLAttributes<HTMLAnchorElement>,\n ) => (\n <EidosLink\n {...attributes}\n href={linkHref}\n target={target}\n rel={rel}\n className={className}\n disabled={disabled}\n onClick={onClick ? handleClick : undefined}\n >\n {body}\n </EidosLink>\n );\n\n if (href !== undefined && !isRemovable) {\n const link = renderLink(href, chipClasses, chipProps);\n return tooltip ? <Tooltip message={tooltip}>{link}</Tooltip> : link;\n }\n\n const ChipElement = isClickable && !isRemovable ? 'button' : 'div';\n\n const chipContent = (\n <ChipElement\n className={chipClasses}\n disabled={ChipElement === 'button' ? disabled : undefined}\n onClick={isClickable && !hasBothControls ? handleClick : undefined}\n {...chipProps}\n >\n {hasBothControls ? (\n href !== undefined ? (\n renderLink(href, 'eidos-chip--action')\n ) : (\n <button\n type=\"button\"\n className=\"eidos-chip--action\"\n onClick={handleClick}\n disabled={disabled}\n >\n {body}\n </button>\n )\n ) : (\n body\n )}\n\n {isRemovable && (\n <button\n className=\"eidos-chip--remove-button\"\n onClick={handleRemove}\n disabled={disabled}\n aria-label=\"Remove\"\n type=\"button\"\n >\n <X className=\"eidos-chip--remove-icon\" />\n </button>\n )}\n </ChipElement>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{chipContent}</Tooltip> : chipContent;\n};\n"],"mappings":";;;;;;;;;;;AACA,SAAS,SAAS;AAuEd,mBAGe,KAHf;AAjEG,IAAM,OAA4B,CAAC;AAAA,EACxC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,CAAC,CAAC,WAAW,SAAS;AAC1C,QAAM,cAAc,CAAC,CAAC;AAGtB,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,eAAe,OAAO;AAAA,IACtB,eAAe,KAAK;AAAA,IACpB,eAAe,IAAI;AAAA,IACnB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb;AAAA,EACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,QAAM,cAAc,MAAM;AACxB,QAAI,YAAY,CAAC,QAAS;AAC1B,YAAQ;AAAA,EACV;AAEA,QAAM,eAAe,CAAC,MAAwB;AAC5C,MAAE,gBAAgB;AAClB,QAAI,YAAY,CAAC,SAAU;AAC3B,aAAS;AAAA,EACX;AAiBA,QAAM,kBAAkB,eAAe;AAEvC,QAAM,OACJ,iCACG;AAAA,eAAW,WAAW,SAAS,sBAAsB;AAAA,IAErD,YAAY,oBAAC,UAAK,WAAU,oBAAoB,UAAS;AAAA,IAEzD,WAAW,WAAW,SAAS,sBAAsB;AAAA,KACxD;AAMF,QAAM,aAAa,CACjB,UACAA,YACA,eAEA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,WAAWA;AAAA,MACX;AAAA,MACA,SAAS,UAAU,cAAc;AAAA,MAEhC;AAAA;AAAA,EACH;AAGF,MAAI,SAAS,UAAa,CAAC,aAAa;AACtC,UAAM,OAAO,WAAW,MAAM,aAAa,SAAS;AACpD,WAAO,UAAU,oBAAC,WAAQ,SAAS,SAAU,gBAAK,IAAa;AAAA,EACjE;AAEA,QAAM,cAAc,eAAe,CAAC,cAAc,WAAW;AAE7D,QAAM,cACJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,UAAU,gBAAgB,WAAW,WAAW;AAAA,MAChD,SAAS,eAAe,CAAC,kBAAkB,cAAc;AAAA,MACxD,GAAG;AAAA,MAEH;AAAA,0BACC,SAAS,SACP,WAAW,MAAM,oBAAoB,IAErC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS;AAAA,YACT;AAAA,YAEC;AAAA;AAAA,QACH,IAGF;AAAA,QAGD,eACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS;AAAA,YACT;AAAA,YACA,cAAW;AAAA,YACX,MAAK;AAAA,YAEL,8BAAC,KAAE,WAAU,2BAA0B;AAAA;AAAA,QACzC;AAAA;AAAA;AAAA,EAEJ;AAGF,SAAO,UAAU,oBAAC,WAAQ,SAAS,SAAU,uBAAY,IAAa;AACxE;","names":["className"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkCPRNLW4Mcjs = require('./chunk-CPRNLW4M.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkKVIL4EP4cjs = require('./chunk-KVIL4EP4.cjs');
|
|
@@ -151,7 +151,7 @@ var MenuPanel = ({
|
|
|
151
151
|
}
|
|
152
152
|
);
|
|
153
153
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { role: "none", className: `eidos-menu-nested-item`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
154
|
-
|
|
154
|
+
_chunkCPRNLW4Mcjs.Dropdown,
|
|
155
155
|
{
|
|
156
156
|
open: openSubmenuId === item.id,
|
|
157
157
|
onOpenChange: (next) => setOpenSubmenuId(next ? item.id : null),
|
|
@@ -201,7 +201,7 @@ var Menu = ({
|
|
|
201
201
|
{ "aria-haspopup": "menu", "aria-expanded": isOpen }
|
|
202
202
|
) : trigger;
|
|
203
203
|
const dropdown = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
204
|
-
|
|
204
|
+
_chunkCPRNLW4Mcjs.Dropdown,
|
|
205
205
|
{
|
|
206
206
|
open: isOpen,
|
|
207
207
|
onOpenChange: setIsOpen,
|
|
@@ -222,4 +222,4 @@ var Menu = ({
|
|
|
222
222
|
|
|
223
223
|
|
|
224
224
|
exports.MenuPanel = MenuPanel; exports.Menu = Menu;
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-USGEUG2O.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VPN7AR7T.cjs","../src/components/Menu/Menu.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VPN7AR7T.cjs","sourcesContent":[null,"import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport type { MenuProps, MenuItemType, MenuItem, MenuWrapperProps } from './Menu.types';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { Kbd } from '../Kbd/Kbd.component';\nimport { renderIcon, useDialogFocus } from '../../utils';\n\n/**\n * MenuPanel - the bare menu list, without any trigger or dropdown wrapper.\n * Exported for use in SplitButton, ContextMenu, and other consumers that need\n * to render the menu content inside their own Dropdown / portal.\n *\n * ## This element owns the menu semantics, not the overlay around it\n *\n * `role=\"menu\"` belongs on the element that directly contains the items, which\n * is this `<ul>`. It used to sit on `Dropdown`'s content `<div>` instead, one\n * level further out, so the menu's only child was a list and the items were\n * `listitem`s - `aria-required-children`, and a structure no screen reader\n * could present as a menu.\n *\n * ## The keyboard model is not optional\n *\n * The items were plain `<li onClick>`: no role, no `tabIndex`, no key handler.\n * Every menu in the library - `Menu`, `ContextMenu`, `SplitButton`, `Table` and\n * `DataGrid` row actions - was therefore **operable by mouse only**, which is\n * WCAG 2.1.1 (Level A). Axe reported none of it, because every menu story\n * renders closed and axe only sees what is on screen.\n *\n * A `menuitem` role is a promise that arrow keys work, so the two land\n * together: roving `tabIndex` (one tab stop for the whole menu), Up/Down to\n * move, Home/End to jump, Enter/Space to activate, ArrowRight to open a\n * submenu. Focus enters on open and returns to the trigger on close.\n */\nexport const MenuPanel: React.FC<MenuProps> = ({\n items,\n className = '',\n onItemClick,\n onRequestClose,\n}) => {\n const listRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef(new Map<string, HTMLElement>());\n\n const registerItem = useCallback((id: string, element: HTMLElement | null) => {\n if (element) itemRefs.current.set(id, element);\n else itemRefs.current.delete(id);\n }, []);\n\n // Moves focus into the menu when it opens and back to the trigger when it\n // closes. `trapTab: false` - a menu is not a dialog, and confining Tab to it\n // would strand the user; the hook's frame-retry loop is what matters here,\n // because `Dropdown`'s content is `visibility: hidden` until it has been\n // positioned and `.focus()` on a hidden element is a silent no-op.\n //\n // `active` is unconditionally true: this panel is only ever mounted by an\n // open overlay (`Dropdown` and `ContextMenu` both render content\n // conditionally), so mounting *is* opening.\n useDialogFocus(true, listRef, { trapTab: false });\n\n // Handle menu item click\n const handleItemClick = useCallback(\n (item: MenuItem) => {\n if (item.disabled) return;\n\n // Execute the item's onClick handler first\n if (item.onClick) {\n item.onClick();\n }\n\n // Then call the onItemClick callback (which will close the dropdown)\n if (onItemClick) {\n onItemClick(item);\n }\n },\n [onItemClick],\n );\n\n // The items arrow keys move between, in visual order. Separators are not\n // stops, `component` items own their own focusable content, and a disabled\n // item is skipped rather than being a dead stop.\n const navigableIds = useMemo(\n () =>\n items\n .filter((item) => (item.type === 'item' || item.type === 'nested') && !item.disabled)\n .map((item) => item.id),\n [items],\n );\n\n const [focusedId, setFocusedId] = useState<string | null>(null);\n // Which submenu is open, owned here rather than inside each nested overlay:\n // the trigger has to advertise `aria-expanded`, and `ArrowLeft` in the child\n // has to be able to close it. Both were impossible while the overlay kept\n // that state to itself.\n const [openSubmenuId, setOpenSubmenuId] = useState<string | null>(null);\n // Validated rather than trusted: `items` can change while the menu is open\n // (a filtered list, an action that disables its neighbour), which would\n // otherwise leave the roving tabIndex on an id that no longer renders - and\n // therefore no tab stop in the menu at all.\n const activeId =\n focusedId && navigableIds.includes(focusedId) ? focusedId : (navigableIds[0] ?? null);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\n // A `component` item may hold a real control - a text field, a switch -\n // whose own arrow keys must not be hijacked for menu navigation. Only\n // keys pressed on a menuitem drive the menu.\n if (!(event.target as HTMLElement).closest('[role=\"menuitem\"]')) return;\n if (navigableIds.length === 0) return;\n\n const focusAt = (index: number) => {\n const id = navigableIds[(index + navigableIds.length) % navigableIds.length];\n setFocusedId(id);\n itemRefs.current.get(id)?.focus();\n };\n const current = Math.max(0, navigableIds.indexOf(activeId ?? ''));\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n focusAt(current + 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n focusAt(current - 1);\n break;\n case 'Home':\n event.preventDefault();\n focusAt(0);\n break;\n case 'End':\n event.preventDefault();\n focusAt(navigableIds.length - 1);\n break;\n case 'ArrowLeft':\n // Only meaningful in a submenu. `stopPropagation` keeps the parent\n // panel - which is a React ancestor, portal notwithstanding - from\n // treating the same keypress as its own.\n if (onRequestClose) {\n event.preventDefault();\n event.stopPropagation();\n onRequestClose();\n }\n break;\n default:\n break;\n }\n },\n [navigableIds, activeId, onRequestClose],\n );\n\n // Render individual menu item\n const renderMenuItem = (item: MenuItemType): React.ReactNode => {\n switch (item.type) {\n case 'item':\n return (\n <li\n key={item.id}\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n // Roving tabIndex: the menu is one tab stop and arrows move within\n // it. Making every item a tab stop would bury whatever follows a\n // ten-item menu ten presses deep.\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n // `aria-disabled`, not the `disabled` attribute, which an `li` does\n // not have. The click handler already returns early.\n aria-disabled={item.disabled || undefined}\n className={[\n 'eidos-menu-item',\n item.disabled ? 'eidos-menu-item--disabled' : '',\n item.color ? `eidos-menu-item--${item.color}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => handleItemClick(item)}\n onKeyDown={(event) => {\n // An `li` is not a button, so Enter and Space produce no click of\n // their own - activation has to be wired by hand. Space is\n // prevented to stop the page scrolling underneath.\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n {item.shortcut && (\n <Kbd size=\"sm\" className=\"eidos-menu-shortcut\">\n {item.shortcut}\n </Kbd>\n )}\n </li>\n );\n\n case 'component':\n // `role=\"none\"` because the `li` is a wrapper: whatever the consumer\n // renders owns its own semantics, and calling it a `menuitem` would nest\n // that control inside an interactive role.\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-component-item`}>\n {item.component}\n </li>\n );\n\n case 'separator':\n return <li key={item.id} role=\"separator\" className={`eidos-menu-separator`} />;\n\n case 'nested': {\n const triggerElement = (\n <div\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={openSubmenuId === item.id}\n aria-disabled={item.disabled || undefined}\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n className={[\n 'eidos-menu-nested-trigger',\n item.disabled ? 'eidos-menu-nested-trigger--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={(event) => {\n if (item.disabled) return;\n // ArrowRight is the menu idiom for \"open this submenu\"; Enter and\n // Space do the same. This used to synthesise a click on itself so\n // the event would reach the overlay's trigger wrapper; the state\n // is now right here.\n if (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpenSubmenuId(item.id);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n <ChevronRight className={`eidos-menu-nested-arrow`} />\n </div>\n );\n\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-nested-item`}>\n <Dropdown\n open={openSubmenuId === item.id}\n onOpenChange={(next) => setOpenSubmenuId(next ? item.id : null)}\n trigger={triggerElement}\n content={\n <MenuPanel\n items={item.items}\n onItemClick={onItemClick}\n // Lets `ArrowLeft` in the child close this level. Focus\n // returns to the trigger on its own - `useDialogFocus`\n // restores it when the panel unmounts.\n onRequestClose={() => setOpenSubmenuId(null)}\n />\n }\n placement=\"right\"\n isNested={true}\n fullWidth\n // `disabled` was accepted on a nested item and then ignored, so a\n // disabled submenu opened like any other.\n disabled={item.disabled}\n />\n </li>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <ul ref={listRef} role=\"menu\" className={`eidos-menu ${className}`} onKeyDown={handleKeyDown}>\n {items.map(renderMenuItem)}\n </ul>\n );\n};\n\nexport const Menu: React.FC<MenuWrapperProps> = ({\n trigger,\n items,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = true,\n triggerRef,\n closeOnItemClick = true,\n tooltip,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleItemClick = useCallback(\n (_item: MenuItem) => {\n // `item.onClick` has already run, in `MenuPanel`. All that is left is\n // closing.\n //\n // This used to dispatch a synthetic `mousedown` at `document` on a 10ms\n // timer - a counterfeit \"click outside\" - because the overlay owned its\n // open state privately and that was the only lever available. It worked by\n // being indistinguishable from the click a mouse user had just made, and\n // it broke the moment nobody had clicked: activating an item with the\n // keyboard closed every other dropdown on the page that dismisses on\n // outside clicks.\n if (closeOnItemClick) setIsOpen(false);\n },\n [closeOnItemClick],\n );\n\n // The trigger opens a menu, and nothing said so: `Dropdown` adds no ARIA to\n // its trigger (deliberately - it does not know what its content is), so a\n // screen reader announced a plain button. `Menu` does know, and now that it\n // owns the open state it can describe that too (SC 4.1.2), which was the\n // missing half while the state was private.\n const describedTrigger = React.isValidElement(trigger)\n ? React.cloneElement(\n trigger as React.ReactElement<{ 'aria-haspopup'?: string; 'aria-expanded'?: boolean }>,\n { 'aria-haspopup': 'menu', 'aria-expanded': isOpen },\n )\n : trigger;\n\n const dropdown = (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={describedTrigger}\n content={<MenuPanel items={items} onItemClick={handleItemClick} />}\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n triggerRef={triggerRef}\n />\n );\n\n return tooltip ? <Tooltip message={tooltip}>{dropdown}</Tooltip> : dropdown;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-USGEUG2O.cjs","../src/components/Menu/Menu.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-USGEUG2O.cjs","sourcesContent":[null,"import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport type { MenuProps, MenuItemType, MenuItem, MenuWrapperProps } from './Menu.types';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { Kbd } from '../Kbd/Kbd.component';\nimport { renderIcon, useDialogFocus } from '../../utils';\n\n/**\n * MenuPanel - the bare menu list, without any trigger or dropdown wrapper.\n * Exported for use in SplitButton, ContextMenu, and other consumers that need\n * to render the menu content inside their own Dropdown / portal.\n *\n * ## This element owns the menu semantics, not the overlay around it\n *\n * `role=\"menu\"` belongs on the element that directly contains the items, which\n * is this `<ul>`. It used to sit on `Dropdown`'s content `<div>` instead, one\n * level further out, so the menu's only child was a list and the items were\n * `listitem`s - `aria-required-children`, and a structure no screen reader\n * could present as a menu.\n *\n * ## The keyboard model is not optional\n *\n * The items were plain `<li onClick>`: no role, no `tabIndex`, no key handler.\n * Every menu in the library - `Menu`, `ContextMenu`, `SplitButton`, `Table` and\n * `DataGrid` row actions - was therefore **operable by mouse only**, which is\n * WCAG 2.1.1 (Level A). Axe reported none of it, because every menu story\n * renders closed and axe only sees what is on screen.\n *\n * A `menuitem` role is a promise that arrow keys work, so the two land\n * together: roving `tabIndex` (one tab stop for the whole menu), Up/Down to\n * move, Home/End to jump, Enter/Space to activate, ArrowRight to open a\n * submenu. Focus enters on open and returns to the trigger on close.\n */\nexport const MenuPanel: React.FC<MenuProps> = ({\n items,\n className = '',\n onItemClick,\n onRequestClose,\n}) => {\n const listRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef(new Map<string, HTMLElement>());\n\n const registerItem = useCallback((id: string, element: HTMLElement | null) => {\n if (element) itemRefs.current.set(id, element);\n else itemRefs.current.delete(id);\n }, []);\n\n // Moves focus into the menu when it opens and back to the trigger when it\n // closes. `trapTab: false` - a menu is not a dialog, and confining Tab to it\n // would strand the user; the hook's frame-retry loop is what matters here,\n // because `Dropdown`'s content is `visibility: hidden` until it has been\n // positioned and `.focus()` on a hidden element is a silent no-op.\n //\n // `active` is unconditionally true: this panel is only ever mounted by an\n // open overlay (`Dropdown` and `ContextMenu` both render content\n // conditionally), so mounting *is* opening.\n useDialogFocus(true, listRef, { trapTab: false });\n\n // Handle menu item click\n const handleItemClick = useCallback(\n (item: MenuItem) => {\n if (item.disabled) return;\n\n // Execute the item's onClick handler first\n if (item.onClick) {\n item.onClick();\n }\n\n // Then call the onItemClick callback (which will close the dropdown)\n if (onItemClick) {\n onItemClick(item);\n }\n },\n [onItemClick],\n );\n\n // The items arrow keys move between, in visual order. Separators are not\n // stops, `component` items own their own focusable content, and a disabled\n // item is skipped rather than being a dead stop.\n const navigableIds = useMemo(\n () =>\n items\n .filter((item) => (item.type === 'item' || item.type === 'nested') && !item.disabled)\n .map((item) => item.id),\n [items],\n );\n\n const [focusedId, setFocusedId] = useState<string | null>(null);\n // Which submenu is open, owned here rather than inside each nested overlay:\n // the trigger has to advertise `aria-expanded`, and `ArrowLeft` in the child\n // has to be able to close it. Both were impossible while the overlay kept\n // that state to itself.\n const [openSubmenuId, setOpenSubmenuId] = useState<string | null>(null);\n // Validated rather than trusted: `items` can change while the menu is open\n // (a filtered list, an action that disables its neighbour), which would\n // otherwise leave the roving tabIndex on an id that no longer renders - and\n // therefore no tab stop in the menu at all.\n const activeId =\n focusedId && navigableIds.includes(focusedId) ? focusedId : (navigableIds[0] ?? null);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\n // A `component` item may hold a real control - a text field, a switch -\n // whose own arrow keys must not be hijacked for menu navigation. Only\n // keys pressed on a menuitem drive the menu.\n if (!(event.target as HTMLElement).closest('[role=\"menuitem\"]')) return;\n if (navigableIds.length === 0) return;\n\n const focusAt = (index: number) => {\n const id = navigableIds[(index + navigableIds.length) % navigableIds.length];\n setFocusedId(id);\n itemRefs.current.get(id)?.focus();\n };\n const current = Math.max(0, navigableIds.indexOf(activeId ?? ''));\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n focusAt(current + 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n focusAt(current - 1);\n break;\n case 'Home':\n event.preventDefault();\n focusAt(0);\n break;\n case 'End':\n event.preventDefault();\n focusAt(navigableIds.length - 1);\n break;\n case 'ArrowLeft':\n // Only meaningful in a submenu. `stopPropagation` keeps the parent\n // panel - which is a React ancestor, portal notwithstanding - from\n // treating the same keypress as its own.\n if (onRequestClose) {\n event.preventDefault();\n event.stopPropagation();\n onRequestClose();\n }\n break;\n default:\n break;\n }\n },\n [navigableIds, activeId, onRequestClose],\n );\n\n // Render individual menu item\n const renderMenuItem = (item: MenuItemType): React.ReactNode => {\n switch (item.type) {\n case 'item':\n return (\n <li\n key={item.id}\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n // Roving tabIndex: the menu is one tab stop and arrows move within\n // it. Making every item a tab stop would bury whatever follows a\n // ten-item menu ten presses deep.\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n // `aria-disabled`, not the `disabled` attribute, which an `li` does\n // not have. The click handler already returns early.\n aria-disabled={item.disabled || undefined}\n className={[\n 'eidos-menu-item',\n item.disabled ? 'eidos-menu-item--disabled' : '',\n item.color ? `eidos-menu-item--${item.color}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => handleItemClick(item)}\n onKeyDown={(event) => {\n // An `li` is not a button, so Enter and Space produce no click of\n // their own - activation has to be wired by hand. Space is\n // prevented to stop the page scrolling underneath.\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n {item.shortcut && (\n <Kbd size=\"sm\" className=\"eidos-menu-shortcut\">\n {item.shortcut}\n </Kbd>\n )}\n </li>\n );\n\n case 'component':\n // `role=\"none\"` because the `li` is a wrapper: whatever the consumer\n // renders owns its own semantics, and calling it a `menuitem` would nest\n // that control inside an interactive role.\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-component-item`}>\n {item.component}\n </li>\n );\n\n case 'separator':\n return <li key={item.id} role=\"separator\" className={`eidos-menu-separator`} />;\n\n case 'nested': {\n const triggerElement = (\n <div\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={openSubmenuId === item.id}\n aria-disabled={item.disabled || undefined}\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n className={[\n 'eidos-menu-nested-trigger',\n item.disabled ? 'eidos-menu-nested-trigger--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={(event) => {\n if (item.disabled) return;\n // ArrowRight is the menu idiom for \"open this submenu\"; Enter and\n // Space do the same. This used to synthesise a click on itself so\n // the event would reach the overlay's trigger wrapper; the state\n // is now right here.\n if (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpenSubmenuId(item.id);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n <ChevronRight className={`eidos-menu-nested-arrow`} />\n </div>\n );\n\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-nested-item`}>\n <Dropdown\n open={openSubmenuId === item.id}\n onOpenChange={(next) => setOpenSubmenuId(next ? item.id : null)}\n trigger={triggerElement}\n content={\n <MenuPanel\n items={item.items}\n onItemClick={onItemClick}\n // Lets `ArrowLeft` in the child close this level. Focus\n // returns to the trigger on its own - `useDialogFocus`\n // restores it when the panel unmounts.\n onRequestClose={() => setOpenSubmenuId(null)}\n />\n }\n placement=\"right\"\n isNested={true}\n fullWidth\n // `disabled` was accepted on a nested item and then ignored, so a\n // disabled submenu opened like any other.\n disabled={item.disabled}\n />\n </li>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <ul ref={listRef} role=\"menu\" className={`eidos-menu ${className}`} onKeyDown={handleKeyDown}>\n {items.map(renderMenuItem)}\n </ul>\n );\n};\n\nexport const Menu: React.FC<MenuWrapperProps> = ({\n trigger,\n items,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = true,\n triggerRef,\n closeOnItemClick = true,\n tooltip,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleItemClick = useCallback(\n (_item: MenuItem) => {\n // `item.onClick` has already run, in `MenuPanel`. All that is left is\n // closing.\n //\n // This used to dispatch a synthetic `mousedown` at `document` on a 10ms\n // timer - a counterfeit \"click outside\" - because the overlay owned its\n // open state privately and that was the only lever available. It worked by\n // being indistinguishable from the click a mouse user had just made, and\n // it broke the moment nobody had clicked: activating an item with the\n // keyboard closed every other dropdown on the page that dismisses on\n // outside clicks.\n if (closeOnItemClick) setIsOpen(false);\n },\n [closeOnItemClick],\n );\n\n // The trigger opens a menu, and nothing said so: `Dropdown` adds no ARIA to\n // its trigger (deliberately - it does not know what its content is), so a\n // screen reader announced a plain button. `Menu` does know, and now that it\n // owns the open state it can describe that too (SC 4.1.2), which was the\n // missing half while the state was private.\n const describedTrigger = React.isValidElement(trigger)\n ? React.cloneElement(\n trigger as React.ReactElement<{ 'aria-haspopup'?: string; 'aria-expanded'?: boolean }>,\n { 'aria-haspopup': 'menu', 'aria-expanded': isOpen },\n )\n : trigger;\n\n const dropdown = (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={describedTrigger}\n content={<MenuPanel items={items} onItemClick={handleItemClick} />}\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n triggerRef={triggerRef}\n />\n );\n\n return tooltip ? <Tooltip message={tooltip}>{dropdown}</Tooltip> : dropdown;\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Dropdown
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ECP5J27K.js";
|
|
4
4
|
import {
|
|
5
5
|
Kbd
|
|
6
6
|
} from "./chunk-LYH3EKKQ.js";
|
|
@@ -222,4 +222,4 @@ export {
|
|
|
222
222
|
MenuPanel,
|
|
223
223
|
Menu
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-VA23PQTA.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _chunkKF2OGUADcjs = require('./chunk-KF2OGUAD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkCPRNLW4Mcjs = require('./chunk-CPRNLW4M.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -80,6 +80,11 @@ var Select = _react2.default.forwardRef(
|
|
|
80
80
|
}
|
|
81
81
|
} else {
|
|
82
82
|
if (newSelectedValues.has(option.value)) {
|
|
83
|
+
if (!clearable) {
|
|
84
|
+
setIsOpen(false);
|
|
85
|
+
_optionalChain([inputRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.focus, 'call', _3 => _3()]);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
83
88
|
newSelectedValues.clear();
|
|
84
89
|
} else {
|
|
85
90
|
newSelectedValues.clear();
|
|
@@ -95,13 +100,14 @@ var Select = _react2.default.forwardRef(
|
|
|
95
100
|
}
|
|
96
101
|
if (!multiple) {
|
|
97
102
|
setIsOpen(false);
|
|
98
|
-
_optionalChain([inputRef, 'access',
|
|
103
|
+
_optionalChain([inputRef, 'access', _4 => _4.current, 'optionalAccess', _5 => _5.focus, 'call', _6 => _6()]);
|
|
99
104
|
}
|
|
100
105
|
},
|
|
101
|
-
[multiple, onChange, selectedValues, isControlled]
|
|
106
|
+
[multiple, onChange, selectedValues, isControlled, clearable]
|
|
102
107
|
);
|
|
103
108
|
const handleClear = _react.useCallback.call(void 0,
|
|
104
109
|
(e) => {
|
|
110
|
+
if (!clearable) return;
|
|
105
111
|
if (e) {
|
|
106
112
|
e.stopPropagation();
|
|
107
113
|
}
|
|
@@ -109,17 +115,17 @@ var Select = _react2.default.forwardRef(
|
|
|
109
115
|
setSelectedValues(/* @__PURE__ */ new Set());
|
|
110
116
|
}
|
|
111
117
|
setIsOpen(false);
|
|
112
|
-
_optionalChain([inputRef, 'access',
|
|
118
|
+
_optionalChain([inputRef, 'access', _7 => _7.current, 'optionalAccess', _8 => _8.focus, 'call', _9 => _9()]);
|
|
113
119
|
if (onChange) {
|
|
114
120
|
onChange(multiple ? [] : "");
|
|
115
121
|
}
|
|
116
122
|
},
|
|
117
|
-
[multiple, onChange, isControlled]
|
|
123
|
+
[multiple, onChange, isControlled, clearable]
|
|
118
124
|
);
|
|
119
125
|
_react.useEffect.call(void 0, () => {
|
|
120
126
|
const element = inputRef.current;
|
|
121
127
|
if (!element) return;
|
|
122
|
-
const named = (_nullishCoalesce(_optionalChain([element, 'access',
|
|
128
|
+
const named = (_nullishCoalesce(_optionalChain([element, 'access', _10 => _10.labels, 'optionalAccess', _11 => _11.length]), () => ( 0))) > 0 || element.hasAttribute("aria-label") || element.hasAttribute("aria-labelledby");
|
|
123
129
|
if (!named) {
|
|
124
130
|
_chunkR5WI5IGRcjs.devWarn.call(void 0,
|
|
125
131
|
"select-missing-label",
|
|
@@ -140,7 +146,7 @@ var Select = _react2.default.forwardRef(
|
|
|
140
146
|
setFocusedIndex((prev) => {
|
|
141
147
|
const nextIndex = prev < options.length - 1 ? prev + 1 : 0;
|
|
142
148
|
setTimeout(() => {
|
|
143
|
-
_optionalChain([optionRefs, 'access',
|
|
149
|
+
_optionalChain([optionRefs, 'access', _12 => _12.current, 'access', _13 => _13[nextIndex], 'optionalAccess', _14 => _14.scrollIntoView, 'call', _15 => _15({
|
|
144
150
|
block: "nearest",
|
|
145
151
|
behavior: "smooth"
|
|
146
152
|
})]);
|
|
@@ -158,7 +164,7 @@ var Select = _react2.default.forwardRef(
|
|
|
158
164
|
setFocusedIndex((prev) => {
|
|
159
165
|
const nextIndex = prev > 0 ? prev - 1 : options.length - 1;
|
|
160
166
|
setTimeout(() => {
|
|
161
|
-
_optionalChain([optionRefs, 'access',
|
|
167
|
+
_optionalChain([optionRefs, 'access', _16 => _16.current, 'access', _17 => _17[nextIndex], 'optionalAccess', _18 => _18.scrollIntoView, 'call', _19 => _19({
|
|
162
168
|
block: "nearest",
|
|
163
169
|
behavior: "smooth"
|
|
164
170
|
})]);
|
|
@@ -189,7 +195,7 @@ var Select = _react2.default.forwardRef(
|
|
|
189
195
|
e.preventDefault();
|
|
190
196
|
if (isOpen) {
|
|
191
197
|
setFocusedIndex(0);
|
|
192
|
-
_optionalChain([optionRefs, 'access',
|
|
198
|
+
_optionalChain([optionRefs, 'access', _20 => _20.current, 'access', _21 => _21[0], 'optionalAccess', _22 => _22.scrollIntoView, 'call', _23 => _23({
|
|
193
199
|
block: "nearest",
|
|
194
200
|
behavior: "smooth"
|
|
195
201
|
})]);
|
|
@@ -200,7 +206,7 @@ var Select = _react2.default.forwardRef(
|
|
|
200
206
|
if (isOpen) {
|
|
201
207
|
const lastIndex = options.length - 1;
|
|
202
208
|
setFocusedIndex(lastIndex);
|
|
203
|
-
_optionalChain([optionRefs, 'access',
|
|
209
|
+
_optionalChain([optionRefs, 'access', _24 => _24.current, 'access', _25 => _25[lastIndex], 'optionalAccess', _26 => _26.scrollIntoView, 'call', _27 => _27({
|
|
204
210
|
block: "nearest",
|
|
205
211
|
behavior: "smooth"
|
|
206
212
|
})]);
|
|
@@ -214,7 +220,7 @@ var Select = _react2.default.forwardRef(
|
|
|
214
220
|
);
|
|
215
221
|
if (foundIndex !== -1) {
|
|
216
222
|
setFocusedIndex(foundIndex);
|
|
217
|
-
_optionalChain([optionRefs, 'access',
|
|
223
|
+
_optionalChain([optionRefs, 'access', _28 => _28.current, 'access', _29 => _29[foundIndex], 'optionalAccess', _30 => _30.scrollIntoView, 'call', _31 => _31({
|
|
218
224
|
block: "nearest",
|
|
219
225
|
behavior: "smooth"
|
|
220
226
|
})]);
|
|
@@ -224,7 +230,7 @@ var Select = _react2.default.forwardRef(
|
|
|
224
230
|
);
|
|
225
231
|
if (foundFromStart !== -1) {
|
|
226
232
|
setFocusedIndex(foundFromStart);
|
|
227
|
-
_optionalChain([optionRefs, 'access',
|
|
233
|
+
_optionalChain([optionRefs, 'access', _32 => _32.current, 'access', _33 => _33[foundFromStart], 'optionalAccess', _34 => _34.scrollIntoView, 'call', _35 => _35({
|
|
228
234
|
block: "nearest",
|
|
229
235
|
behavior: "smooth"
|
|
230
236
|
})]);
|
|
@@ -242,7 +248,7 @@ var Select = _react2.default.forwardRef(
|
|
|
242
248
|
(option) => selectedValuesRef.current.has(option.value)
|
|
243
249
|
);
|
|
244
250
|
if (idx === -1) return;
|
|
245
|
-
_optionalChain([optionRefs, 'access',
|
|
251
|
+
_optionalChain([optionRefs, 'access', _36 => _36.current, 'access', _37 => _37[idx], 'optionalAccess', _38 => _38.scrollIntoView, 'call', _39 => _39({ block: "nearest" })]);
|
|
246
252
|
}, []);
|
|
247
253
|
const COMPACT_LABEL_THRESHOLD = 2;
|
|
248
254
|
const displayValue = _react.useMemo.call(void 0, () => {
|
|
@@ -328,7 +334,7 @@ var Select = _react2.default.forwardRef(
|
|
|
328
334
|
ref,
|
|
329
335
|
className: `${"eidos-select-container"} ${fullWidth ? "eidos-select-container--full-width" : ""} ${className}`,
|
|
330
336
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
331
|
-
|
|
337
|
+
_chunkCPRNLW4Mcjs.Dropdown,
|
|
332
338
|
{
|
|
333
339
|
open: isOpen,
|
|
334
340
|
onOpenChange: setIsOpen,
|
|
@@ -353,4 +359,4 @@ Select.displayName = "Select";
|
|
|
353
359
|
|
|
354
360
|
|
|
355
361
|
exports.Select = Select;
|
|
356
|
-
//# sourceMappingURL=chunk-
|
|
362
|
+
//# sourceMappingURL=chunk-VY7DTPO3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VY7DTPO3.cjs","../src/components/Select/Select.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VY7DTPO3.cjs","sourcesContent":[null,"import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { Input } from '../Input/Input.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport type { SelectProps, SelectOption } from './Select.types';\nimport { renderIcon, devWarn } from '../../utils';\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n value,\n defaultValue,\n onChange,\n className = '',\n multiple = false,\n label,\n placeholder = 'Select an option...',\n disabled = false,\n inputProps = {},\n name,\n id,\n required = false,\n fullWidth = false,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight = '300px',\n autoWidth = true,\n clearable = true,\n autoOpen = false,\n dropdownProps = {},\n },\n ref,\n ) => {\n const isControlled = value !== undefined;\n\n // Lazy initializer: seed from defaultValue in uncontrolled mode.\n const [selectedValues, setSelectedValues] = useState<Set<string>>(() => {\n if (defaultValue !== undefined) {\n const vals = Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n return new Set(vals.filter((v) => v !== ''));\n }\n return new Set();\n });\n\n const [focusedIndex, setFocusedIndex] = useState(-1);\n // `Select` owns the open state and hands it to `Dropdown` as a controlled\n // value. It used to keep this flag *and* force the dropdown closed by\n // remounting it through a changing `key`, because `Dropdown`'s own state was\n // private - which meant this flag drove the ARIA attributes while reaching\n // nothing that renders, so the keyboard could not open the listbox at all.\n const [isOpen, setIsOpen] = useState(autoOpen);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const optionRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n // Kept in sync every render so the mount-only callback ref below can\n // read the latest values without needing them in its dependency array\n // (see `handleOptionsMount`).\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n useEffect(() => {\n if (value !== undefined) {\n const values = Array.isArray(value) ? value : [value];\n\n const validValues = values.filter((v) => v !== '');\n setSelectedValues(new Set(validValues));\n }\n }, [value]);\n\n useEffect(() => {\n setFocusedIndex(-1);\n }, [options]);\n\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n const handleOptionSelect = useCallback(\n (option: SelectOption) => {\n if (option.disabled) return;\n\n const newSelectedValues = new Set(selectedValues);\n\n if (multiple) {\n if (newSelectedValues.has(option.value)) {\n newSelectedValues.delete(option.value);\n } else {\n newSelectedValues.add(option.value);\n }\n } else {\n if (newSelectedValues.has(option.value)) {\n if (!clearable) {\n // `clearable={false}` means the value is not allowed to\n // become empty - re-clicking the selected option changes\n // nothing and emits no `onChange`, but still closes the\n // dropdown like any selection so the control does not\n // feel broken.\n setIsOpen(false);\n inputRef.current?.focus();\n return;\n }\n newSelectedValues.clear();\n } else {\n newSelectedValues.clear();\n newSelectedValues.add(option.value);\n }\n }\n\n // In uncontrolled mode, own the state directly.\n // In controlled mode, let the parent drive via value prop + useEffect sync.\n if (!isControlled) {\n setSelectedValues(newSelectedValues);\n }\n\n if (onChange) {\n const newValue = multiple\n ? Array.from(newSelectedValues)\n : Array.from(newSelectedValues)[0] || '';\n onChange(newValue);\n }\n\n if (!multiple) {\n setIsOpen(false);\n // Focus is returned explicitly because a click lands on an option\n // `div`, which is not focusable - without this, choosing with the\n // mouse would leave focus on `<body>` and the field would be\n // unreachable by keyboard until tabbed to again.\n inputRef.current?.focus();\n }\n },\n [multiple, onChange, selectedValues, isControlled, clearable],\n );\n\n const handleClear = useCallback(\n (e?: React.MouseEvent) => {\n // `clearable` is the single meaning of \"the value may become\n // empty\" - the clear button is already hidden, this guards any\n // other path here (and any future one) reaching the same end.\n if (!clearable) return;\n if (e) {\n e.stopPropagation();\n }\n if (!isControlled) {\n setSelectedValues(new Set());\n }\n\n setIsOpen(false);\n inputRef.current?.focus();\n if (onChange) {\n onChange(multiple ? [] : '');\n }\n },\n [multiple, onChange, isControlled, clearable],\n );\n\n // A form control with no accessible name is announced as just \"combobox\".\n // `Select` was the only field in the library that could not be labelled\n // without knowing about `inputProps`, and three call sites duly shipped\n // without one - so the gap is closed from both ends: a first-class `label`\n // prop, and this warning.\n //\n // Measured from the DOM rather than from props, because a caller may name\n // the field with an external `<label for>` - `Pagination`'s page-size\n // picker does exactly that, and a props-only check would cry wolf at it.\n // `HTMLInputElement.labels` covers both wrapping and `for` labels.\n useEffect(() => {\n const element = inputRef.current;\n if (!element) return;\n const named =\n (element.labels?.length ?? 0) > 0 ||\n element.hasAttribute('aria-label') ||\n element.hasAttribute('aria-labelledby');\n if (!named) {\n devWarn(\n 'select-missing-label',\n 'Select: no accessible name. Pass `label` for a visible one, or `inputProps={{ \"aria-label\": \"...\" }}` where it must stay visually unlabelled - otherwise the field is announced as just \"combobox\". A placeholder is not a label, and disappears as soon as something is chosen.',\n );\n }\n }, []);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev < options.length - 1 ? prev + 1 : 0;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(options.length - 1);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev > 0 ? prev - 1 : options.length - 1;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else if (focusedIndex >= 0 && focusedIndex < options.length) {\n const focusedOption = options[focusedIndex];\n handleOptionSelect(focusedOption);\n }\n break;\n\n case 'Escape':\n e.preventDefault();\n if (isOpen) {\n setIsOpen(false);\n setFocusedIndex(-1);\n }\n break;\n\n case 'Home':\n e.preventDefault();\n if (isOpen) {\n setFocusedIndex(0);\n optionRefs.current[0]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n case 'End':\n e.preventDefault();\n if (isOpen) {\n const lastIndex = options.length - 1;\n setFocusedIndex(lastIndex);\n optionRefs.current[lastIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n default:\n if (isOpen && e.key.length === 1 && /[a-zA-Z0-9]/.test(e.key)) {\n const searchChar = e.key.toLowerCase();\n const foundIndex = options.findIndex(\n (option, index) =>\n index > focusedIndex && option.label.toLowerCase().startsWith(searchChar),\n );\n\n if (foundIndex !== -1) {\n setFocusedIndex(foundIndex);\n optionRefs.current[foundIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n } else {\n const foundFromStart = options.findIndex((option) =>\n option.label.toLowerCase().startsWith(searchChar),\n );\n if (foundFromStart !== -1) {\n setFocusedIndex(foundFromStart);\n optionRefs.current[foundFromStart]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n break;\n }\n },\n [disabled, isOpen, options, focusedIndex, handleOptionSelect],\n );\n\n // Scrolls the first selected option into view. Attached as the options\n // list's own ref below with an empty dependency array, so its identity\n // never changes and React only invokes it on genuine DOM mount/unmount -\n // i.e. exactly when the dropdown opens/closes (Dropdown unmounts its\n // `content` entirely while closed), not on every re-render while open.\n const handleOptionsMount = useCallback((el: HTMLDivElement | null) => {\n if (!el) return;\n const idx = optionsRef.current.findIndex((option) =>\n selectedValuesRef.current.has(option.value),\n );\n if (idx === -1) return;\n optionRefs.current[idx]?.scrollIntoView({ block: 'nearest' });\n }, []);\n\n // Past this many selections the full comma-joined label list becomes\n // unreadable in the trigger, so we switch to a compact \"N selected\" label.\n const COMPACT_LABEL_THRESHOLD = 2;\n\n const displayValue = useMemo(() => {\n if (selectedValues.size === 0) return '';\n\n if (multiple && selectedValues.size > COMPACT_LABEL_THRESHOLD) {\n return `${selectedValues.size} selected`;\n }\n\n const selectedOptions = options.filter((option) => selectedValues.has(option.value));\n const text = selectedOptions.map((option) => option.label).join(', ');\n return text;\n }, [options, selectedValues, multiple]);\n\n const selectContent = useMemo(\n () => (\n <div className={'eidos-select-options'} ref={handleOptionsMount}>\n {options.map((option, index) => {\n const isSelected = selectedValues.has(option.value);\n const isFocused = index === focusedIndex;\n return (\n <div\n key={option.id}\n // The trigger points `aria-activedescendant` at\n // `${id}-option-${focusedIndex}`, and nothing carried that id -\n // so the moment an option was hovered or arrowed to, the\n // attribute referenced an element that did not exist\n // (`aria-valid-attr-value`, critical). Invisible to axe until a\n // story left the listbox open, because the attribute is only\n // set once something is focused.\n id={`${id || 'select'}-option-${index}`}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n className={`\n\t\t\t\t\t\t\t\t\t\t${'eidos-select-option'}\n\t\t\t\t\t\t\t\t\t\t${isSelected ? 'eidos-select-option--selected' : ''}\n\t\t\t\t\t\t\t\t\t\t${option.disabled ? 'eidos-select-option--disabled' : ''}\n\t\t\t\t\t\t\t\t\t\t${isFocused ? 'eidos-select-option--focused' : ''}\n\t\t\t\t\t\t\t\t\t`.trim()}\n onClick={() => handleOptionSelect(option)}\n onMouseEnter={() => setFocusedIndex(index)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n >\n {option.icon && renderIcon(option.icon, 'eidos-select-option-icon')}\n <span className={'eidos-select-option-label'}>{option.label}</span>\n {isSelected && <Check className={'eidos-select-option-check-icon'} />}\n </div>\n );\n })}\n </div>\n ),\n [options, selectedValues, focusedIndex, handleOptionSelect, handleOptionsMount, id],\n );\n\n const triggerElement = (\n <div\n ref={triggerRef}\n className={`eidos-select-trigger ${fullWidth ? 'eidos-select-trigger--full-width' : ''}`}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : undefined}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n // Only while the listbox exists. An `aria-controls` pointing at an id\n // that is not in the document is invalid, and the listbox only renders\n // while open - `Combobox`, `TagInput` and `CommandPalette` already gate\n // theirs this way. It could not be gated here before, because `isOpen`\n // did not track whether the panel had actually rendered.\n aria-controls={isOpen ? `${id || 'select'}-options` : undefined}\n aria-activedescendant={\n focusedIndex >= 0 ? `${id || 'select'}-option-${focusedIndex}` : undefined\n }\n >\n <Input\n ref={inputRef}\n value={selectedValues.size > 0 ? displayValue : ''}\n placeholder={selectedValues.size === 0 ? placeholder : ''}\n posIcon={selectedValues.size > 0 && clearable ? X : undefined}\n posIconButton={selectedValues.size > 0 && clearable}\n onPosIconClick={selectedValues.size > 0 && clearable ? handleClear : undefined}\n posIconLabel=\"Clear selection\"\n disabled={disabled}\n readOnly={true}\n isSelect={true}\n label={label}\n name={name}\n id={id}\n required={required}\n fullWidth={fullWidth}\n {...inputProps}\n />\n </div>\n );\n\n return (\n <div\n ref={ref}\n className={`${'eidos-select-container'} ${\n fullWidth ? 'eidos-select-container--full-width' : ''\n } ${className}`}\n >\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={triggerElement}\n content={\n <div id={`${id || 'select'}-options`} role=\"listbox\" aria-multiselectable={multiple}>\n {selectContent}\n </div>\n }\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n fullWidth={fullWidth}\n triggerRef={triggerRef as React.RefObject<HTMLElement | null>}\n {...dropdownProps}\n />\n </div>\n );\n },\n);\n\nSelect.displayName = 'Select';\n"]}
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _chunkTUNG4IDWcjs = require('./chunk-TUNG4IDW.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunkS3IZPWYPcjs = require('./chunk-S3IZPWYP.cjs');
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkEAUTJAKVcjs = require('./chunk-EAUTJAKV.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
var _chunkYJNQLH2Lcjs = require('./chunk-YJNQLH2L.cjs');
|
|
@@ -29,7 +29,7 @@ var _chunkTROYIUDHcjs = require('./chunk-TROYIUDH.cjs');
|
|
|
29
29
|
var _chunkKV3V2CPHcjs = require('./chunk-KV3V2CPH.cjs');
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var _chunkCPRNLW4Mcjs = require('./chunk-CPRNLW4M.cjs');
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
var _chunkNSA7ASZ7cjs = require('./chunk-NSA7ASZ7.cjs');
|
|
@@ -80,10 +80,10 @@ function SortableColumnHeader({
|
|
|
80
80
|
stickyStyle,
|
|
81
81
|
onSortClick
|
|
82
82
|
}) {
|
|
83
|
-
const { attributes, listeners, setNodeRef, transform, transition, isDragging } =
|
|
83
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = _chunkTUNG4IDWcjs.useSortable.call(void 0, {
|
|
84
84
|
id
|
|
85
85
|
});
|
|
86
|
-
const transformStr =
|
|
86
|
+
const transformStr = _chunkTUNG4IDWcjs.CSS.Transform.toString(transform);
|
|
87
87
|
const thClassName = [
|
|
88
88
|
"eidos-table-header-cell",
|
|
89
89
|
`eidos-table-header-cell-${columnType}`,
|
|
@@ -399,10 +399,10 @@ var Table = ({
|
|
|
399
399
|
document.body.removeChild(link);
|
|
400
400
|
URL.revokeObjectURL(url);
|
|
401
401
|
};
|
|
402
|
-
const sensors =
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
coordinateGetter:
|
|
402
|
+
const sensors = _chunkTUNG4IDWcjs.useSensors.call(void 0,
|
|
403
|
+
_chunkTUNG4IDWcjs.useSensor.call(void 0, _chunkTUNG4IDWcjs.PointerSensor),
|
|
404
|
+
_chunkTUNG4IDWcjs.useSensor.call(void 0, _chunkTUNG4IDWcjs.KeyboardSensor, {
|
|
405
|
+
coordinateGetter: _chunkTUNG4IDWcjs.sortableKeyboardCoordinates
|
|
406
406
|
})
|
|
407
407
|
);
|
|
408
408
|
const handleDragEnd = (event) => {
|
|
@@ -413,7 +413,7 @@ var Table = ({
|
|
|
413
413
|
const oldIndex = columnOrder.indexOf(activeId);
|
|
414
414
|
const newIndex = columnOrder.indexOf(overId);
|
|
415
415
|
if (oldIndex === -1 || newIndex === -1) return;
|
|
416
|
-
const newOrder =
|
|
416
|
+
const newOrder = _chunkTUNG4IDWcjs.arrayMove.call(void 0, columnOrder, oldIndex, newIndex);
|
|
417
417
|
setColumnOrder(newOrder);
|
|
418
418
|
if (onColumnReorder) {
|
|
419
419
|
const orderMap = new Map(newOrder.map((key, idx) => [key, idx]));
|
|
@@ -623,7 +623,7 @@ var Table = ({
|
|
|
623
623
|
const isDisabled = typeof action.disabled === "function" ? action.disabled(selectedItems) : _nullishCoalesce(action.disabled, () => ( false));
|
|
624
624
|
if (action.type === "split-button") {
|
|
625
625
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
626
|
-
|
|
626
|
+
_chunkS3IZPWYPcjs.SplitButton,
|
|
627
627
|
{
|
|
628
628
|
size: "sm",
|
|
629
629
|
variant: _nullishCoalesce(action.variant, () => ( "outlined")),
|
|
@@ -673,7 +673,7 @@ var Table = ({
|
|
|
673
673
|
] }),
|
|
674
674
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-table-toolbar-right", children: [
|
|
675
675
|
showDensity && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
676
|
-
|
|
676
|
+
_chunkCPRNLW4Mcjs.Dropdown,
|
|
677
677
|
{
|
|
678
678
|
placement: "bottom",
|
|
679
679
|
align: "end",
|
|
@@ -683,7 +683,7 @@ var Table = ({
|
|
|
683
683
|
}
|
|
684
684
|
),
|
|
685
685
|
showColumnVisibility && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
686
|
-
|
|
686
|
+
_chunkCPRNLW4Mcjs.Dropdown,
|
|
687
687
|
{
|
|
688
688
|
placement: "bottom",
|
|
689
689
|
align: "end",
|
|
@@ -703,7 +703,7 @@ var Table = ({
|
|
|
703
703
|
}
|
|
704
704
|
),
|
|
705
705
|
showFilters && onFiltersChange && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
706
|
-
|
|
706
|
+
_chunkTUNG4IDWcjs.TableFiltersDropdown,
|
|
707
707
|
{
|
|
708
708
|
columns,
|
|
709
709
|
filters,
|
|
@@ -888,7 +888,7 @@ var Table = ({
|
|
|
888
888
|
) })
|
|
889
889
|
),
|
|
890
890
|
showFooter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-footer", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-footer-content", children: showPagination && data.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
891
|
-
|
|
891
|
+
_chunkEAUTJAKVcjs.Pagination,
|
|
892
892
|
{
|
|
893
893
|
page: currentPage,
|
|
894
894
|
totalPages,
|
|
@@ -910,7 +910,7 @@ var Table = ({
|
|
|
910
910
|
}
|
|
911
911
|
);
|
|
912
912
|
if (draggableColumns) {
|
|
913
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
913
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTUNG4IDWcjs.DndContext, { sensors, onDragEnd: handleDragEnd, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTUNG4IDWcjs.SortableContext, { items: sortableItems, strategy: _chunkTUNG4IDWcjs.horizontalListSortingStrategy, children: tableContent }) });
|
|
914
914
|
}
|
|
915
915
|
return tableContent;
|
|
916
916
|
};
|
|
@@ -918,4 +918,4 @@ var Table = ({
|
|
|
918
918
|
|
|
919
919
|
|
|
920
920
|
exports.Table = Table;
|
|
921
|
-
//# sourceMappingURL=chunk-
|
|
921
|
+
//# sourceMappingURL=chunk-YEBWP7FD.cjs.map
|