@revikornmann/muka-ui 0.25.0 → 0.26.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/cjs/components/Autocomplete/Autocomplete.css +63 -0
- package/dist/cjs/components/Autocomplete/Autocomplete.js +190 -0
- package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/cjs/components/Autocomplete/index.js +6 -0
- package/dist/cjs/components/Autocomplete/index.js.map +1 -0
- package/dist/cjs/components/Combobox/Combobox.js +7 -23
- package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
- package/dist/cjs/components/ContextSelect/ContextSelect.js +2 -2
- package/dist/cjs/components/ContextSelect/ContextSelect.js.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.js +9 -1
- package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
- package/dist/cjs/components/DropdownSelect/DropdownSelect.js +2 -2
- package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/cjs/components/InputCounter/InputCounter.css +175 -0
- package/dist/cjs/components/InputCounter/InputCounter.js +196 -0
- package/dist/cjs/components/InputCounter/InputCounter.js.map +1 -0
- package/dist/cjs/components/InputCounter/index.js +11 -0
- package/dist/cjs/components/InputCounter/index.js.map +1 -0
- package/dist/cjs/components/Menu/Menu.js +26 -11
- package/dist/cjs/components/Menu/Menu.js.map +1 -1
- package/dist/cjs/components/Popover/Popover.js +10 -8
- package/dist/cjs/components/Popover/Popover.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +7 -2
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/index.js +7 -3
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/utils/suggestionList.js +27 -0
- package/dist/cjs/utils/suggestionList.js.map +1 -0
- package/dist/cjs/utils/usePortalContainer.js +33 -0
- package/dist/cjs/utils/usePortalContainer.js.map +1 -0
- package/dist/esm/components/Autocomplete/Autocomplete.css +63 -0
- package/dist/esm/components/Autocomplete/Autocomplete.js +187 -0
- package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/esm/components/Autocomplete/index.js +2 -0
- package/dist/esm/components/Autocomplete/index.js.map +1 -0
- package/dist/esm/components/Combobox/Combobox.js +5 -21
- package/dist/esm/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/ContextSelect/ContextSelect.js +2 -2
- package/dist/esm/components/ContextSelect/ContextSelect.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +9 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/DropdownSelect/DropdownSelect.js +2 -2
- package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/esm/components/InputCounter/InputCounter.css +175 -0
- package/dist/esm/components/InputCounter/InputCounter.js +160 -0
- package/dist/esm/components/InputCounter/InputCounter.js.map +1 -0
- package/dist/esm/components/InputCounter/index.js +3 -0
- package/dist/esm/components/InputCounter/index.js.map +1 -0
- package/dist/esm/components/Menu/Menu.js +26 -11
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +10 -5
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +7 -2
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/utils/suggestionList.js +22 -0
- package/dist/esm/utils/suggestionList.js.map +1 -0
- package/dist/esm/utils/usePortalContainer.js +29 -0
- package/dist/esm/utils/usePortalContainer.js.map +1 -0
- package/dist/styles/components/Autocomplete.css +63 -0
- package/dist/styles/components/InputCounter.css +175 -0
- package/dist/styles/index.css +449 -205
- package/dist/styles/muka-dark.css +449 -205
- package/dist/styles/muka-light.css +449 -205
- package/dist/styles/wireframe-dark.css +449 -205
- package/dist/styles/wireframe-light.css +449 -205
- package/dist/types/components/Autocomplete/Autocomplete.d.ts +105 -0
- package/dist/types/components/Autocomplete/Autocomplete.d.ts.map +1 -0
- package/dist/types/components/Autocomplete/index.d.ts +2 -0
- package/dist/types/components/Autocomplete/index.d.ts.map +1 -0
- package/dist/types/components/Combobox/Combobox.d.ts +2 -2
- package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/ContextSelect/ContextSelect.d.ts +6 -0
- package/dist/types/components/ContextSelect/ContextSelect.d.ts.map +1 -1
- package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +6 -0
- package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -1
- package/dist/types/components/InputCounter/InputCounter.d.ts +79 -0
- package/dist/types/components/InputCounter/InputCounter.d.ts.map +1 -0
- package/dist/types/components/InputCounter/index.d.ts +3 -0
- package/dist/types/components/InputCounter/index.d.ts.map +1 -0
- package/dist/types/components/Menu/Menu.d.ts +4 -4
- package/dist/types/components/Menu/Menu.d.ts.map +1 -1
- package/dist/types/components/Popover/Popover.d.ts +12 -0
- package/dist/types/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/utils/suggestionList.d.ts +13 -0
- package/dist/types/utils/suggestionList.d.ts.map +1 -0
- package/dist/types/utils/usePortalContainer.d.ts +19 -0
- package/dist/types/utils/usePortalContainer.d.ts.map +1 -0
- package/docs/consumers/README.md +2 -2
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
4
|
if (k2 === undefined) k2 = k;
|
|
4
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -32,29 +33,30 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
33
|
return result;
|
|
33
34
|
};
|
|
34
35
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
37
|
exports.PopoverClose = exports.PopoverTrigger = exports.PopoverRoot = exports.PopoverContent = exports.Popover = void 0;
|
|
40
38
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
41
|
-
const react_1 =
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
42
40
|
const PopoverPrimitive = __importStar(require("@radix-ui/react-popover"));
|
|
41
|
+
const usePortalContainer_1 = require("../../utils/usePortalContainer");
|
|
43
42
|
require("./Popover.css");
|
|
44
|
-
const Popover = ({ children, content, side = 'bottom', align = 'center', sideOffset = 8, open, defaultOpen, onOpenChange, modal = false, showArrow = true, maxWidth, className = '', }) => {
|
|
43
|
+
const Popover = ({ children, content, side = 'bottom', align = 'center', sideOffset = 8, open, defaultOpen, onOpenChange, modal = false, showArrow = true, maxWidth, className = '', portalContainer, }) => {
|
|
44
|
+
const triggerRef = (0, react_1.useRef)(null);
|
|
45
|
+
const container = (0, usePortalContainer_1.usePortalContainer)(portalContainer, triggerRef);
|
|
45
46
|
const contentClasses = ['muka-popover__content', className].filter(Boolean).join(' ');
|
|
46
47
|
const contentStyle = maxWidth
|
|
47
48
|
? { maxWidth: typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth }
|
|
48
49
|
: undefined;
|
|
49
|
-
return ((0, jsx_runtime_1.jsxs)(PopoverPrimitive.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, modal: modal, children: [(0, jsx_runtime_1.jsx)(PopoverPrimitive.Trigger, { asChild: true, children: children }), (0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(PopoverPrimitive.Content, { className: contentClasses, side: side, align: align, sideOffset: sideOffset, style: contentStyle, children: [content, showArrow && ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Arrow, { className: "muka-popover__arrow", width: 12, height: 6 }))] }) })] }));
|
|
50
|
+
return ((0, jsx_runtime_1.jsxs)(PopoverPrimitive.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, modal: modal, children: [(0, jsx_runtime_1.jsx)(PopoverPrimitive.Trigger, { asChild: true, ref: triggerRef, children: children }), (0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { container: container, children: (0, jsx_runtime_1.jsxs)(PopoverPrimitive.Content, { className: contentClasses, side: side, align: align, sideOffset: sideOffset, style: contentStyle, children: [content, showArrow && ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Arrow, { className: "muka-popover__arrow", width: 12, height: 6 }))] }) })] }));
|
|
50
51
|
};
|
|
51
52
|
exports.Popover = Popover;
|
|
52
|
-
exports.PopoverContent = react_1.default.forwardRef(({ children, side = 'bottom', align = 'center', sideOffset = 8, showArrow = true, maxWidth, className = '' }, ref) => {
|
|
53
|
+
exports.PopoverContent = react_1.default.forwardRef(({ children, side = 'bottom', align = 'center', sideOffset = 8, showArrow = true, maxWidth, className = '', portalContainer }, ref) => {
|
|
54
|
+
const container = (0, usePortalContainer_1.usePortalContainer)(portalContainer);
|
|
53
55
|
const contentClasses = ['muka-popover__content', className].filter(Boolean).join(' ');
|
|
54
56
|
const contentStyle = maxWidth
|
|
55
57
|
? { maxWidth: typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth }
|
|
56
58
|
: undefined;
|
|
57
|
-
return ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(PopoverPrimitive.Content, { ref: ref, className: contentClasses, side: side, align: align, sideOffset: sideOffset, style: contentStyle, children: [children, showArrow && ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Arrow, { className: "muka-popover__arrow", width: 12, height: 6 }))] }) }));
|
|
59
|
+
return ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Portal, { container: container, children: (0, jsx_runtime_1.jsxs)(PopoverPrimitive.Content, { ref: ref, className: contentClasses, side: side, align: align, sideOffset: sideOffset, style: contentStyle, children: [children, showArrow && ((0, jsx_runtime_1.jsx)(PopoverPrimitive.Arrow, { className: "muka-popover__arrow", width: 12, height: 6 }))] }) }));
|
|
58
60
|
});
|
|
59
61
|
exports.PopoverContent.displayName = 'PopoverContent';
|
|
60
62
|
// Re-export primitives for compositional use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../../components/Popover/Popover.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../../components/Popover/Popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
4
|
if (k2 === undefined) k2 = k;
|
|
4
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -35,14 +36,18 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
37
|
exports.Tooltip = void 0;
|
|
37
38
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
const react_1 = require("react");
|
|
38
40
|
const TooltipPrimitive = __importStar(require("@radix-ui/react-tooltip"));
|
|
41
|
+
const usePortalContainer_1 = require("../../utils/usePortalContainer");
|
|
39
42
|
require("./Tooltip.css");
|
|
40
|
-
const Tooltip = ({ children, content, side = 'top', align = 'center', delayDuration = 400, disabled = false, open, onOpenChange, className = '', }) => {
|
|
43
|
+
const Tooltip = ({ children, content, side = 'top', align = 'center', delayDuration = 400, disabled = false, open, onOpenChange, className = '', portalContainer, }) => {
|
|
44
|
+
const triggerRef = (0, react_1.useRef)(null);
|
|
45
|
+
const container = (0, usePortalContainer_1.usePortalContainer)(portalContainer, triggerRef);
|
|
41
46
|
if (disabled) {
|
|
42
47
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
43
48
|
}
|
|
44
49
|
const contentClasses = ['muka-tooltip__content', className].filter(Boolean).join(' ');
|
|
45
|
-
return ((0, jsx_runtime_1.jsx)(TooltipPrimitive.Provider, { delayDuration: delayDuration, children: (0, jsx_runtime_1.jsxs)(TooltipPrimitive.Root, { open: open, onOpenChange: onOpenChange, children: [(0, jsx_runtime_1.jsx)(TooltipPrimitive.Trigger, { asChild: true, children: children }), (0, jsx_runtime_1.jsx)(TooltipPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(TooltipPrimitive.Content, { className: contentClasses, side: side, align: align, sideOffset: 6, children: [content, (0, jsx_runtime_1.jsx)("div", { className: "muka-tooltip__arrow-wrapper", children: (0, jsx_runtime_1.jsx)(TooltipPrimitive.Arrow, { className: "muka-tooltip__arrow", width: 12, height: 6 }) })] }) })] }) }));
|
|
50
|
+
return ((0, jsx_runtime_1.jsx)(TooltipPrimitive.Provider, { delayDuration: delayDuration, children: (0, jsx_runtime_1.jsxs)(TooltipPrimitive.Root, { open: open, onOpenChange: onOpenChange, children: [(0, jsx_runtime_1.jsx)(TooltipPrimitive.Trigger, { asChild: true, ref: triggerRef, children: children }), (0, jsx_runtime_1.jsx)(TooltipPrimitive.Portal, { container: container, children: (0, jsx_runtime_1.jsxs)(TooltipPrimitive.Content, { className: contentClasses, side: side, align: align, sideOffset: 6, children: [content, (0, jsx_runtime_1.jsx)("div", { className: "muka-tooltip__arrow-wrapper", children: (0, jsx_runtime_1.jsx)(TooltipPrimitive.Arrow, { className: "muka-tooltip__arrow", width: 12, height: 6 }) })] }) })] }) }));
|
|
46
51
|
};
|
|
47
52
|
exports.Tooltip = Tooltip;
|
|
48
53
|
exports.default = exports.Tooltip;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,iCAAsC;AACtC,0EAA4D;AAC5D,uEAAoE;AACpE,yBAAuB;AA6BhB,MAAM,OAAO,GAA2B,CAAC,EAC9C,QAAQ,EACR,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,QAAQ,EAChB,aAAa,GAAG,GAAG,EACnB,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,YAAY,EACZ,SAAS,GAAG,EAAE,EACd,eAAe,GAChB,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,IAAA,cAAM,EAAoB,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAA,uCAAkB,EAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAElE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,2DAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtF,OAAO,CACL,uBAAC,gBAAgB,CAAC,QAAQ,IAAC,aAAa,EAAE,aAAa,YACrD,wBAAC,gBAAgB,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,aAC3D,uBAAC,gBAAgB,CAAC,OAAO,IAAC,OAAO,QAAC,GAAG,EAAE,UAAU,YAC9C,QAAQ,GACgB,EAC3B,uBAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,YAC3C,wBAAC,gBAAgB,CAAC,OAAO,IACvB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,aAEZ,OAAO,EACR,gCAAK,SAAS,EAAC,6BAA6B,YAC1C,uBAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAI,GAC5E,IACmB,GACH,IACJ,GACE,CAC7B,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,OAAO,WA2ClB;AAEF,kBAAe,eAAO,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.TextLink = exports.PhotoUploader = exports.Thumbnail = exports.SocialSignInButton = exports.LicensePlateInput = exports.PullToRefresh = exports.SwipeActions = exports.Combobox = exports.ChatAttachmentChip = exports.TypingIndicator = exports.AgentTaskList = exports.DEFAULT_EMOJI = exports.EmojiPicker = exports.PhotoDraftStrip = exports.VOICE_PEAK_COUNT = exports.isVoiceRecordingSupported = exports.formatClock = exports.downsamplePeaks = exports.useVoiceRecorder = exports.VoiceMessage = exports.RecordingBar = exports.Waveform = exports.ChatComposer = exports.ChatPhotoGrid = exports.ChatMessageList = exports.ChatMessageStack = exports.ChatMessage = exports.SearchInput = exports.ActionSheet = exports.FAB = exports.SpecRow = exports.SpecList = void 0;
|
|
3
|
+
exports.Table = exports.RangeSlider = exports.DataPieChart = exports.PieChart = exports.Progress = exports.ProfileBadge = exports.AvatarGroup = exports.Avatar = exports.BadgeNumber = exports.Badge = exports.Container = exports.Section = exports.NavigationTransition = exports.AppShell = exports.View = exports.Dialog = exports.BottomBarTab = exports.BottomBar = exports.ControlBar = exports.TopBar = exports.ProgressAccordeon = exports.ProgressTracker = exports.EmptyState = exports.Toast = exports.Alert = exports.RadioTile = exports.CheckboxTile = exports.Toggle = exports.Checkbox = exports.Radio = exports.TabPanel = exports.Tab = exports.TabList = exports.Tabs = exports.DropdownSelect = exports.Select = exports.Divider = exports.Chip = exports.listRegisteredIcons = exports.registerIcon = exports.Icon = exports.Label = exports.Card = exports.InputCounter = exports.NumberInput = exports.useForm = exports.Form = exports.Input = exports.ListItem = exports.Button = void 0;
|
|
4
|
+
exports.Sheet = exports.AccordionContent = exports.AccordionTrigger = exports.AccordionItem = exports.Accordion = exports.PopoverClose = exports.PopoverTrigger = exports.PopoverRoot = exports.PopoverContent = exports.Popover = exports.Tooltip = exports.Drawer = exports.Pagination = exports.Breadcrumb = exports.Skeleton = exports.Textarea = exports.Scrollbar = exports.ContextSelect = exports.useMenuSearch = exports.highlightMenuMatch = exports.MenuSubContent = exports.MenuSubTrigger = exports.MenuSub = exports.MenuRadioItem = exports.MenuRadioGroup = exports.MenuCheckboxItem = exports.MenuGroup = exports.MenuSeparator = exports.MenuItem = exports.MenuSearch = exports.MenuContent = exports.MenuTrigger = exports.DropdownMenu = exports.Menu = exports.FileUploadItem = exports.FileUpload = exports.SmsOtpField = exports.DocumentViewer = exports.Tile = exports.PriceTag = exports.SegmentGroup = exports.DatePicker = exports.DataTable = exports.useTableSelection = exports.TablePagination = exports.TableHeaderCell = exports.TableCell = exports.TableRow = exports.TableBody = exports.TableHead = void 0;
|
|
5
|
+
exports.TextLink = exports.PhotoUploader = exports.Thumbnail = exports.SocialSignInButton = exports.LicensePlateInput = exports.PullToRefresh = exports.SwipeActions = exports.Autocomplete = exports.Combobox = exports.ChatAttachmentChip = exports.TypingIndicator = exports.AgentTaskList = exports.DEFAULT_EMOJI = exports.EmojiPicker = exports.PhotoDraftStrip = exports.VOICE_PEAK_COUNT = exports.isVoiceRecordingSupported = exports.formatClock = exports.downsamplePeaks = exports.useVoiceRecorder = exports.VoiceMessage = exports.RecordingBar = exports.Waveform = exports.ChatComposer = exports.ChatPhotoGrid = exports.ChatMessageList = exports.ChatMessageStack = exports.ChatMessage = exports.SearchInput = exports.ActionSheet = exports.FAB = exports.SpecRow = exports.SpecList = exports.Spinner = void 0;
|
|
6
6
|
// Muka Design System Components
|
|
7
7
|
var Button_1 = require("./Button");
|
|
8
8
|
Object.defineProperty(exports, "Button", { enumerable: true, get: function () { return Button_1.Button; } });
|
|
@@ -15,6 +15,8 @@ Object.defineProperty(exports, "Form", { enumerable: true, get: function () { re
|
|
|
15
15
|
Object.defineProperty(exports, "useForm", { enumerable: true, get: function () { return Form_1.useForm; } });
|
|
16
16
|
var NumberInput_1 = require("./NumberInput");
|
|
17
17
|
Object.defineProperty(exports, "NumberInput", { enumerable: true, get: function () { return NumberInput_1.NumberInput; } });
|
|
18
|
+
var InputCounter_1 = require("./InputCounter");
|
|
19
|
+
Object.defineProperty(exports, "InputCounter", { enumerable: true, get: function () { return InputCounter_1.InputCounter; } });
|
|
18
20
|
var Card_1 = require("./Card");
|
|
19
21
|
Object.defineProperty(exports, "Card", { enumerable: true, get: function () { return Card_1.Card; } });
|
|
20
22
|
var Label_1 = require("./Label");
|
|
@@ -210,6 +212,8 @@ var ChatAttachmentChip_1 = require("./ChatAttachmentChip");
|
|
|
210
212
|
Object.defineProperty(exports, "ChatAttachmentChip", { enumerable: true, get: function () { return ChatAttachmentChip_1.ChatAttachmentChip; } });
|
|
211
213
|
var Combobox_1 = require("./Combobox");
|
|
212
214
|
Object.defineProperty(exports, "Combobox", { enumerable: true, get: function () { return Combobox_1.Combobox; } });
|
|
215
|
+
var Autocomplete_1 = require("./Autocomplete");
|
|
216
|
+
Object.defineProperty(exports, "Autocomplete", { enumerable: true, get: function () { return Autocomplete_1.Autocomplete; } });
|
|
213
217
|
var SwipeActions_1 = require("./SwipeActions");
|
|
214
218
|
Object.defineProperty(exports, "SwipeActions", { enumerable: true, get: function () { return SwipeActions_1.SwipeActions; } });
|
|
215
219
|
var PullToRefresh_1 = require("./PullToRefresh");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared helpers for text fields with a suggestion `Menu` (Combobox,
|
|
4
|
+
* Autocomplete): highlight navigation that skips disabled rows.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.nextEnabledIndex = exports.firstEnabledIndex = void 0;
|
|
8
|
+
/** Index of the first enabled row, or 0 when every row is disabled. */
|
|
9
|
+
const firstEnabledIndex = (items) => {
|
|
10
|
+
const index = items.findIndex((item) => !item.disabled);
|
|
11
|
+
return index === -1 ? 0 : index;
|
|
12
|
+
};
|
|
13
|
+
exports.firstEnabledIndex = firstEnabledIndex;
|
|
14
|
+
/** Next enabled row from `from` in `direction`, wrapping around. */
|
|
15
|
+
const nextEnabledIndex = (items, from, direction) => {
|
|
16
|
+
if (items.length === 0)
|
|
17
|
+
return 0;
|
|
18
|
+
let index = from;
|
|
19
|
+
for (let step = 0; step < items.length; step += 1) {
|
|
20
|
+
index = (index + direction + items.length) % items.length;
|
|
21
|
+
if (!items[index]?.disabled)
|
|
22
|
+
return index;
|
|
23
|
+
}
|
|
24
|
+
return from;
|
|
25
|
+
};
|
|
26
|
+
exports.nextEnabledIndex = nextEnabledIndex;
|
|
27
|
+
//# sourceMappingURL=suggestionList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestionList.js","sourceRoot":"","sources":["../../../utils/suggestionList.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,uEAAuE;AAChE,MAAM,iBAAiB,GAAG,CAAC,KAAkB,EAAU,EAAE;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAEF,oEAAoE;AAC7D,MAAM,gBAAgB,GAAG,CAC9B,KAAkB,EAClB,IAAY,EACZ,SAAiB,EACT,EAAE;IACV,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAClD,KAAK,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ;YAAE,OAAO,KAAK,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAZW,QAAA,gBAAgB,oBAY3B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PortalContainerContext = void 0;
|
|
5
|
+
exports.usePortalContainer = usePortalContainer;
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
/**
|
|
8
|
+
* The element overlays should portal into instead of `document.body`.
|
|
9
|
+
*
|
|
10
|
+
* `Dialog` provides its native `<dialog>` here. A modal `<dialog>` opened with
|
|
11
|
+
* `showModal()` sits in the browser's top layer and makes the rest of the
|
|
12
|
+
* document inert, so an overlay portaled to `document.body` would render
|
|
13
|
+
* behind it and could not be interacted with.
|
|
14
|
+
*/
|
|
15
|
+
exports.PortalContainerContext = (0, react_1.createContext)(null);
|
|
16
|
+
/**
|
|
17
|
+
* Resolve where a Radix-portaled overlay (Tooltip, Popover, Menu…) renders.
|
|
18
|
+
*
|
|
19
|
+
* Order: the explicit `override` → the enclosing `Dialog` (context) → the
|
|
20
|
+
* closest native `<dialog>` above `anchorRef` → `undefined` (Radix default,
|
|
21
|
+
* `document.body`). An explicit `null` override also falls through.
|
|
22
|
+
*/
|
|
23
|
+
function usePortalContainer(override, anchorRef) {
|
|
24
|
+
const fromContext = (0, react_1.useContext)(exports.PortalContainerContext);
|
|
25
|
+
const [closestDialog, setClosestDialog] = (0, react_1.useState)(null);
|
|
26
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
27
|
+
if (!anchorRef)
|
|
28
|
+
return;
|
|
29
|
+
setClosestDialog(anchorRef.current?.closest('dialog') ?? null);
|
|
30
|
+
}, [anchorRef]);
|
|
31
|
+
return override ?? fromContext ?? closestDialog ?? undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=usePortalContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePortalContainer.js","sourceRoot":"","sources":["../../../utils/usePortalContainer.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAsBb,gDAaC;AAjCD,iCAA6E;AAG7E;;;;;;;GAOG;AACU,QAAA,sBAAsB,GAAG,IAAA,qBAAa,EAAqB,IAAI,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,QAA6B,EAC7B,SAAqC;IAErC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,8BAAsB,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAqB,IAAI,CAAC,CAAC;IAE7E,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAc,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9E,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,QAAQ,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* Autocomplete — Figma Input Autocomplete (Input field + single-line suggestion Menu).
|
|
2
|
+
The field reuses the Input styles (.muka-input*); only the menu wiring lives here. */
|
|
3
|
+
|
|
4
|
+
.muka-autocomplete {
|
|
5
|
+
min-width: 200px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Covers the field's outer edge so the menu matches its full width. The menu
|
|
9
|
+
is only open while focused, when the field has the bold border. */
|
|
10
|
+
.muka-autocomplete__menu-anchor {
|
|
11
|
+
position: absolute;
|
|
12
|
+
inset: calc(-1 * var(--border-width-bold));
|
|
13
|
+
z-index: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
padding: 0;
|
|
16
|
+
border: none;
|
|
17
|
+
background: transparent;
|
|
18
|
+
pointer-events: none;
|
|
19
|
+
opacity: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Keep the field content above the invisible anchor. */
|
|
23
|
+
.muka-autocomplete__field > :not(.muka-autocomplete__menu-anchor) {
|
|
24
|
+
position: relative;
|
|
25
|
+
z-index: 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Figma: the menu is as wide as the field (never below the menu min-width token). */
|
|
29
|
+
.muka-autocomplete__menu {
|
|
30
|
+
width: var(--radix-dropdown-menu-trigger-width);
|
|
31
|
+
max-width: calc(100vw - 2rem);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Suggestions are single-line; long labels truncate. */
|
|
35
|
+
.muka-autocomplete__menu .muka-menu__item-label {
|
|
36
|
+
overflow: hidden;
|
|
37
|
+
text-overflow: ellipsis;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Loading and empty rows: menu-row geometry, not selectable. */
|
|
41
|
+
.muka-autocomplete__status {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: var(--menu-item-gap);
|
|
45
|
+
min-height: var(--menu-item-height);
|
|
46
|
+
padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
|
|
47
|
+
color: var(--color-text-subtle-default);
|
|
48
|
+
font-family: var(--text-label-md-regular-fontFamily);
|
|
49
|
+
font-size: var(--text-label-md-regular-fontSize);
|
|
50
|
+
font-weight: var(--text-label-md-regular-fontWeight);
|
|
51
|
+
line-height: var(--text-label-md-regular-lineHeight);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.muka-autocomplete__footer {
|
|
55
|
+
flex-shrink: 0;
|
|
56
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
57
|
+
border-top: var(--border-width-regular) solid var(--color-border-default);
|
|
58
|
+
color: var(--color-text-subtle-default);
|
|
59
|
+
font-family: var(--text-label-sm-regular-fontFamily);
|
|
60
|
+
font-size: var(--text-label-sm-regular-fontSize);
|
|
61
|
+
font-weight: var(--text-label-sm-regular-fontWeight);
|
|
62
|
+
line-height: var(--text-label-sm-regular-lineHeight);
|
|
63
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
5
|
+
import { Menu, MenuContent, MenuItem, MenuTrigger, highlightMenuMatch, } from '../Menu';
|
|
6
|
+
import { Spinner } from '../Spinner';
|
|
7
|
+
import { mergeIds, VISUALLY_HIDDEN_CLASS } from '../../utils/accessibility';
|
|
8
|
+
import { firstEnabledIndex, nextEnabledIndex } from '../../utils/suggestionList';
|
|
9
|
+
import { usePortalContainer } from '../../utils/usePortalContainer';
|
|
10
|
+
import '../Input/Input.css';
|
|
11
|
+
import './Autocomplete.css';
|
|
12
|
+
/**
|
|
13
|
+
* Autocomplete — single-value free-input text field with a suggestion Menu.
|
|
14
|
+
*
|
|
15
|
+
* Matches Figma "Input Autocomplete". The consumer supplies the suggestions
|
|
16
|
+
* (typically fetched as the user types); picking one writes its label into
|
|
17
|
+
* the field. Typed text that matches nothing is kept as is.
|
|
18
|
+
*
|
|
19
|
+
* For multiple values as chips, use `Combobox`.
|
|
20
|
+
*/
|
|
21
|
+
export function Autocomplete({ value, onInputChange, options, onSelect, loading = false, minChars = 1, emptyMessage, filter = false, menuFooter, clearable = true, clearLabel = 'Clear', loadingLabel = 'Loading suggestions', resultsLabel = (count) => `${count} suggestions`, placeholder, label, helperText, error = false, errorMessage, disabled = false, readOnly = false, size = 'md', fullWidth = false, iconLeft, name, id, required = false, className = '', 'aria-label': ariaLabel, onBlur, onFocus, portalContainer, }) {
|
|
22
|
+
const generatedId = useId();
|
|
23
|
+
const fieldId = id || name || generatedId;
|
|
24
|
+
const helperTextId = `${fieldId}-helper`;
|
|
25
|
+
const errorMessageId = `${fieldId}-error`;
|
|
26
|
+
const listboxId = `${fieldId}-listbox`;
|
|
27
|
+
const inputRef = useRef(null);
|
|
28
|
+
const rootRef = useRef(null);
|
|
29
|
+
const menuRef = useRef(null);
|
|
30
|
+
const menuContainer = usePortalContainer(portalContainer, rootRef);
|
|
31
|
+
// Drives the focused treatment: true only while focus is inside the field
|
|
32
|
+
// or its (portaled) menu (MUK-86).
|
|
33
|
+
const [focused, setFocused] = useState(false);
|
|
34
|
+
// Closed by a pick, Escape or an outside press; reopens on the next keystroke
|
|
35
|
+
// or ArrowDown, or when focus comes back into the field.
|
|
36
|
+
const [dismissed, setDismissed] = useState(false);
|
|
37
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
38
|
+
const query = value.trim();
|
|
39
|
+
const interactive = !disabled && !readOnly;
|
|
40
|
+
const visibleOptions = useMemo(() => {
|
|
41
|
+
if (!filter)
|
|
42
|
+
return options;
|
|
43
|
+
const q = query.toLowerCase();
|
|
44
|
+
return options.filter((option) => filter(option, q));
|
|
45
|
+
}, [options, filter, query]);
|
|
46
|
+
const hasOptions = visibleOptions.length > 0;
|
|
47
|
+
const showLoadingRow = loading && !hasOptions;
|
|
48
|
+
const showEmptyRow = !loading && !hasOptions && Boolean(emptyMessage);
|
|
49
|
+
const showMenu = interactive &&
|
|
50
|
+
focused &&
|
|
51
|
+
!dismissed &&
|
|
52
|
+
query.length >= minChars &&
|
|
53
|
+
(hasOptions || showLoadingRow || showEmptyRow);
|
|
54
|
+
const optionKey = visibleOptions.map((option) => option.value).join('\0');
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
setActiveIndex(firstEnabledIndex(visibleOptions));
|
|
57
|
+
// Reset only when the set of options changes, not on every render.
|
|
58
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
59
|
+
}, [optionKey]);
|
|
60
|
+
const optionId = (index) => `${listboxId}-option-${index}`;
|
|
61
|
+
const activeOption = showMenu && hasOptions ? visibleOptions[activeIndex] : undefined;
|
|
62
|
+
const announcement = !showMenu
|
|
63
|
+
? ''
|
|
64
|
+
: hasOptions
|
|
65
|
+
? resultsLabel(visibleOptions.length)
|
|
66
|
+
: showLoadingRow
|
|
67
|
+
? loadingLabel
|
|
68
|
+
: typeof emptyMessage === 'string'
|
|
69
|
+
? emptyMessage
|
|
70
|
+
: '';
|
|
71
|
+
const showError = error && errorMessage;
|
|
72
|
+
const describedBy = mergeIds(showError ? errorMessageId : helperText ? helperTextId : undefined);
|
|
73
|
+
const selectOption = (option) => {
|
|
74
|
+
if (option.disabled)
|
|
75
|
+
return;
|
|
76
|
+
onInputChange(option.label, 'select');
|
|
77
|
+
onSelect?.(option);
|
|
78
|
+
setDismissed(true);
|
|
79
|
+
inputRef.current?.focus();
|
|
80
|
+
};
|
|
81
|
+
const handleInputChange = (event) => {
|
|
82
|
+
setDismissed(false);
|
|
83
|
+
onInputChange(event.target.value, 'input');
|
|
84
|
+
};
|
|
85
|
+
const handleClear = () => {
|
|
86
|
+
onInputChange('', 'clear');
|
|
87
|
+
setDismissed(false);
|
|
88
|
+
inputRef.current?.focus();
|
|
89
|
+
};
|
|
90
|
+
const handleFocus = () => {
|
|
91
|
+
if (disabled)
|
|
92
|
+
return;
|
|
93
|
+
setFocused(true);
|
|
94
|
+
};
|
|
95
|
+
// Moving between the field and the portaled menu keeps focus "inside";
|
|
96
|
+
// only a real exit drops the focused style, closes the menu and calls onBlur.
|
|
97
|
+
const handleBlur = (event) => {
|
|
98
|
+
const next = event.relatedTarget;
|
|
99
|
+
if (next && (rootRef.current?.contains(next) || menuRef.current?.contains(next))) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
setFocused(false);
|
|
103
|
+
setDismissed(false);
|
|
104
|
+
onBlur?.(event);
|
|
105
|
+
};
|
|
106
|
+
const handleKeyDown = (event) => {
|
|
107
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
108
|
+
if (!showMenu) {
|
|
109
|
+
if (event.key === 'ArrowDown' && dismissed) {
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
setDismissed(false);
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
setActiveIndex((current) => nextEnabledIndex(visibleOptions, current, event.key === 'ArrowDown' ? 1 : -1));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (event.key === 'Enter') {
|
|
120
|
+
// Only intercept Enter when it picks a row, so a form can still submit.
|
|
121
|
+
if (activeOption && !activeOption.disabled) {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
selectOption(activeOption);
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (event.key === 'Escape' && showMenu) {
|
|
128
|
+
// Close the menu only; don't let Escape also close an enclosing Dialog.
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
event.stopPropagation();
|
|
131
|
+
setDismissed(true);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const showClear = clearable && interactive && value.length > 0;
|
|
135
|
+
const iconSize = size === 'sm' ? 'xs' : size === 'lg' ? 'md' : 'sm';
|
|
136
|
+
const rootClasses = [
|
|
137
|
+
'muka-input',
|
|
138
|
+
'muka-autocomplete',
|
|
139
|
+
fullWidth && 'muka-input--full-width',
|
|
140
|
+
className,
|
|
141
|
+
]
|
|
142
|
+
.filter(Boolean)
|
|
143
|
+
.join(' ');
|
|
144
|
+
const fieldClasses = [
|
|
145
|
+
'muka-input__field',
|
|
146
|
+
`muka-input__field--${size}`,
|
|
147
|
+
'muka-autocomplete__field',
|
|
148
|
+
focused && 'muka-input__field--focused',
|
|
149
|
+
error && 'muka-input__field--error',
|
|
150
|
+
disabled && 'muka-input__field--disabled',
|
|
151
|
+
iconLeft && 'muka-input__field--has-icon-left',
|
|
152
|
+
showClear && 'muka-input__field--has-icon-right',
|
|
153
|
+
]
|
|
154
|
+
.filter(Boolean)
|
|
155
|
+
.join(' ');
|
|
156
|
+
return (_jsxs("div", { className: rootClasses, ref: rootRef, children: [label && (_jsxs("label", { className: `muka-input__label muka-input__label--${size}`, htmlFor: fieldId, children: [label, required && _jsx("span", { className: "muka-input__required", "aria-hidden": "true", children: " *" })] })), _jsxs(Menu, { trigger: "click", open: showMenu, onOpenChange: (next) => {
|
|
157
|
+
// Radix closes on an outside press; it never opens the menu itself.
|
|
158
|
+
if (!next)
|
|
159
|
+
setDismissed(true);
|
|
160
|
+
}, modal: false, children: [_jsxs("div", { className: fieldClasses, onFocus: handleFocus, onBlur: handleBlur, onPointerDown: (event) => {
|
|
161
|
+
if (disabled)
|
|
162
|
+
return;
|
|
163
|
+
// A press on the padding or the clear button must not blur the
|
|
164
|
+
// input. Presses on the input keep native caret placement.
|
|
165
|
+
if (event.target !== inputRef.current)
|
|
166
|
+
event.preventDefault();
|
|
167
|
+
}, onClick: (event) => {
|
|
168
|
+
if (disabled)
|
|
169
|
+
return;
|
|
170
|
+
// Focus on click, never on pointerdown: on iOS Safari an early
|
|
171
|
+
// focus opens the keyboard and scrolls mid-tap, so the tap lands
|
|
172
|
+
// on whatever slid under the finger (MUK-88).
|
|
173
|
+
const target = event.target;
|
|
174
|
+
if (target === inputRef.current || target.closest('button'))
|
|
175
|
+
return;
|
|
176
|
+
inputRef.current?.focus();
|
|
177
|
+
}, children: [iconLeft && (_jsx("span", { className: "muka-input__icon muka-input__icon--left", "aria-hidden": "true", children: iconLeft })), _jsx("input", { ref: inputRef, id: fieldId, name: name, type: "text", className: "muka-input__native", value: value, onChange: handleInputChange, onKeyDown: handleKeyDown, onFocus: onFocus, placeholder: placeholder, disabled: disabled, readOnly: readOnly, required: required, "aria-label": label ? undefined : ariaLabel || placeholder, "aria-invalid": error || undefined, "aria-describedby": describedBy, role: "combobox", "aria-autocomplete": "list", "aria-controls": listboxId, "aria-expanded": showMenu, "aria-activedescendant": activeOption ? optionId(activeIndex) : undefined, autoComplete: "off", autoCorrect: "off", spellCheck: false }), showClear && (_jsx("button", { type: "button", className: "muka-input__clear", "aria-label": clearLabel, tabIndex: -1, onClick: handleClear, children: _jsx(Icon, { name: "close", variant: "line", size: iconSize }) })), _jsx(MenuTrigger, { asChild: true, disabled: disabled, children: _jsx("button", { type: "button", className: "muka-autocomplete__menu-anchor", tabIndex: -1, "aria-hidden": "true", disabled: disabled }) })] }), _jsxs(MenuContent, { align: "start", side: "bottom", sideOffset: 4, className: "muka-autocomplete__menu", onOpenAutoFocus: (event) => {
|
|
178
|
+
// Keep the caret in the text field while suggestions are open.
|
|
179
|
+
event.preventDefault();
|
|
180
|
+
inputRef.current?.focus();
|
|
181
|
+
}, onCloseAutoFocus: (event) => event.preventDefault(), loop: false, container: menuContainer, children: [_jsxs("div", { ref: menuRef, id: listboxId, role: "listbox", "aria-label": label || ariaLabel || placeholder, onBlur: handleBlur, children: [visibleOptions.map((option, index) => (_jsx(MenuItem, { id: optionId(index), hint: "enter", disabled: option.disabled, highlighted: index === activeIndex, textValue: option.label, onSelect: (event) => {
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
selectOption(option);
|
|
184
|
+
}, children: highlightMenuMatch(option.label, query) }, `${option.value}-${index}`))), showLoadingRow && (_jsxs("div", { className: "muka-autocomplete__status", "aria-hidden": "true", children: [_jsx(Spinner, { size: "sm", label: loadingLabel }), _jsx("span", { children: loadingLabel })] })), showEmptyRow && (_jsx("div", { className: "muka-autocomplete__status", "aria-hidden": "true", children: emptyMessage }))] }), menuFooter && _jsx("div", { className: "muka-autocomplete__footer", children: menuFooter })] })] }), _jsx("span", { className: VISUALLY_HIDDEN_CLASS, "aria-live": "polite", "aria-atomic": "true", children: announcement }), showError && (_jsx("p", { className: "muka-input__error", id: errorMessageId, role: "alert", children: errorMessage })), !showError && helperText && (_jsx("p", { className: "muka-input__helper", id: helperTextId, children: helperText }))] }));
|
|
185
|
+
}
|
|
186
|
+
export default Autocomplete;
|
|
187
|
+
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sourceRoot":"","sources":["../../../../components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/Autocomplete/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAIb,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useId,
|
|
3
|
+
import { useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Chip } from '../Chip';
|
|
5
5
|
import { Menu, MenuContent, MenuItem, MenuTrigger, } from '../Menu';
|
|
6
|
+
import { firstEnabledIndex, nextEnabledIndex } from '../../utils/suggestionList';
|
|
7
|
+
import { usePortalContainer } from '../../utils/usePortalContainer';
|
|
6
8
|
import './Combobox.css';
|
|
7
9
|
const defaultFilter = (option, query) => {
|
|
8
10
|
if (!query)
|
|
@@ -10,21 +12,6 @@ const defaultFilter = (option, query) => {
|
|
|
10
12
|
const hay = `${option.label} ${option.caption ?? ''}`.toLowerCase();
|
|
11
13
|
return hay.includes(query);
|
|
12
14
|
};
|
|
13
|
-
const firstEnabledIndex = (items) => {
|
|
14
|
-
const index = items.findIndex((item) => !item.disabled);
|
|
15
|
-
return index === -1 ? 0 : index;
|
|
16
|
-
};
|
|
17
|
-
const nextEnabledIndex = (items, from, direction) => {
|
|
18
|
-
if (items.length === 0)
|
|
19
|
-
return 0;
|
|
20
|
-
let index = from;
|
|
21
|
-
for (let step = 0; step < items.length; step += 1) {
|
|
22
|
-
index = (index + direction + items.length) % items.length;
|
|
23
|
-
if (!items[index]?.disabled)
|
|
24
|
-
return index;
|
|
25
|
-
}
|
|
26
|
-
return from;
|
|
27
|
-
};
|
|
28
15
|
/**
|
|
29
16
|
* Combobox — free-input multi-value field with chips and a suggestion Menu.
|
|
30
17
|
*
|
|
@@ -46,10 +33,7 @@ export const Combobox = ({ value, onChange, options = [], placeholder = 'Hint te
|
|
|
46
33
|
const menuRef = useRef(null);
|
|
47
34
|
// A native <dialog> opened with showModal() lives in the top layer and makes
|
|
48
35
|
// everything outside it inert, so a body-level portal would be unreachable.
|
|
49
|
-
const
|
|
50
|
-
useLayoutEffect(() => {
|
|
51
|
-
setDialogContainer(rootRef.current?.closest('dialog') ?? null);
|
|
52
|
-
}, []);
|
|
36
|
+
const menuContainer = usePortalContainer(portalContainer, rootRef);
|
|
53
37
|
const [query, setQuery] = useState('');
|
|
54
38
|
const [open, setOpen] = useState(false);
|
|
55
39
|
// Drives the focused treatment: true only while focus is inside the field
|
|
@@ -238,7 +222,7 @@ export const Combobox = ({ value, onChange, options = [], placeholder = 'Hint te
|
|
|
238
222
|
// Keep the blinking caret in the text field while suggestions open.
|
|
239
223
|
event.preventDefault();
|
|
240
224
|
inputRef.current?.focus();
|
|
241
|
-
}, onCloseAutoFocus: (event) => event.preventDefault(), loop: false, container:
|
|
225
|
+
}, onCloseAutoFocus: (event) => event.preventDefault(), loop: false, container: menuContainer, children: _jsx("div", { ref: menuRef, id: listboxId, role: "listbox", "aria-label": label || placeholder, onBlur: handleBlur, children: suggestions.map((suggestion, index) => (_jsx(MenuItem, { id: suggestion.id, hint: "enter", disabled: suggestion.disabled, highlighted: index === activeIndex, textValue: suggestion.label, onSelect: (event) => {
|
|
242
226
|
event.preventDefault();
|
|
243
227
|
if (!suggestion.disabled)
|
|
244
228
|
commitValue(suggestion.value);
|