@revikornmann/muka-ui 0.24.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 +16 -24
- 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 +25 -9
- 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/PhotoUploader/PhotoUploader.js +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/TopBar/TopBar.css +29 -0
- package/dist/cjs/components/View/View.js +33 -1
- package/dist/cjs/components/View/View.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 +14 -22
- 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 +25 -9
- 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/PhotoUploader/PhotoUploader.js +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/TopBar/TopBar.css +29 -0
- package/dist/esm/components/View/View.js +30 -1
- package/dist/esm/components/View/View.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 +5910 -5666
- package/dist/styles/muka-dark.css +5910 -5666
- package/dist/styles/muka-light.css +5910 -5666
- package/dist/styles/wireframe-dark.css +5910 -5666
- package/dist/styles/wireframe-light.css +5910 -5666
- 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 +8 -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/View/View.d.ts +3 -0
- package/dist/types/components/View/View.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
|
@@ -18,7 +18,7 @@ require("./DropdownSelect.css");
|
|
|
18
18
|
* Not the native `<Select>` — use that for simple platform-native fields.
|
|
19
19
|
* Not free-text — use `Combobox` for creatable chip input.
|
|
20
20
|
*/
|
|
21
|
-
const DropdownSelect = ({ options, value, onValueChange, multiple = false, placeholder = 'Select item...', label, helperText, error = false, errorMessage, disabled = false, size = 'md', fullWidth = false, required = false, searchable = true, searchPlaceholder = 'Search', scrollbar = false, open: openProp, onOpenChange, defaultOpen, name, id, 'aria-label': ariaLabel, className = '', }) => {
|
|
21
|
+
const DropdownSelect = ({ options, value, onValueChange, multiple = false, placeholder = 'Select item...', label, helperText, error = false, errorMessage, disabled = false, size = 'md', fullWidth = false, required = false, searchable = true, searchPlaceholder = 'Search', scrollbar = false, open: openProp, onOpenChange, defaultOpen, name, id, 'aria-label': ariaLabel, className = '', portalContainer, }) => {
|
|
22
22
|
const generatedId = (0, react_1.useId)();
|
|
23
23
|
const fieldId = id || name || generatedId;
|
|
24
24
|
const helperTextId = `${fieldId}-helper`;
|
|
@@ -97,7 +97,7 @@ const DropdownSelect = ({ options, value, onValueChange, multiple = false, place
|
|
|
97
97
|
e.preventDefault();
|
|
98
98
|
e.stopPropagation();
|
|
99
99
|
removeValue(option.value);
|
|
100
|
-
}, children: option.label }, option.value))) })) : ((0, jsx_runtime_1.jsx)("span", { className: "muka-dropdown-select__value", children: selectedOptions[0].label })) })] }), (0, jsx_runtime_1.jsxs)(Menu_1.MenuContent, { align: "start", side: "bottom", sideOffset: 4, searchable: searchable, scrollbar: scrollbar, className: "muka-dropdown-select__menu", style: menuWidth && menuWidth > 280
|
|
100
|
+
}, children: option.label }, option.value))) })) : ((0, jsx_runtime_1.jsx)("span", { className: "muka-dropdown-select__value", children: selectedOptions[0].label })) })] }), (0, jsx_runtime_1.jsxs)(Menu_1.MenuContent, { align: "start", side: "bottom", sideOffset: 4, searchable: searchable, scrollbar: scrollbar, className: "muka-dropdown-select__menu", container: portalContainer, style: menuWidth && menuWidth > 280
|
|
101
101
|
? { minWidth: menuWidth }
|
|
102
102
|
: undefined, onCloseAutoFocus: (event) => event.preventDefault(), children: [searchable && ((0, jsx_runtime_1.jsx)(Menu_1.MenuSearch, { placeholder: searchPlaceholder, size: size === 'sm' ? 'sm' : 'md' })), multiple ? (options.map((option) => ((0, jsx_runtime_1.jsx)(Menu_1.MenuCheckboxItem, { checked: selectedSet.has(option.value), onCheckedChange: (checked) => toggleMulti(option.value, checked), disabled: option.disabled, indicator: "trailing", textValue: option.label, children: option.label }, option.value)))) : ((0, jsx_runtime_1.jsx)(Menu_1.MenuRadioGroup, { value: singleValue, onValueChange: (next) => onValueChange?.(next), children: options.map((option) => ((0, jsx_runtime_1.jsx)(Menu_1.MenuRadioItem, { value: option.value, disabled: option.disabled, indicator: "check", textValue: option.label, children: option.label }, option.value))) }))] })] }), showError && ((0, jsx_runtime_1.jsx)("p", { className: "muka-dropdown-select__error", id: errorMessageId, role: "alert", children: errorMessage })), !showError && helperText && ((0, jsx_runtime_1.jsx)("p", { className: "muka-dropdown-select__helper", id: helperTextId, children: helperText }))] }));
|
|
103
103
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownSelect.js","sourceRoot":"","sources":["../../../../components/DropdownSelect/DropdownSelect.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAA2E;AAC3E,kCAA+B;AAC/B,kCAA+B;AAC/B,kCAQiB;AACjB,gCAA8B;
|
|
1
|
+
{"version":3,"file":"DropdownSelect.js","sourceRoot":"","sources":["../../../../components/DropdownSelect/DropdownSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/* InputCounter — numeric field + joined decrement/increment buttons.
|
|
2
|
+
Label, helper and error text reuse Input.css (../Input/Input.css).
|
|
3
|
+
Field and button group share one radius per size:
|
|
4
|
+
sm/md → input.field.radius.md, lg → input.field.radius.lg. */
|
|
5
|
+
|
|
6
|
+
.muka-inputcounter {
|
|
7
|
+
--muka-inputcounter-radius: var(--input-field-radius-md);
|
|
8
|
+
--muka-inputcounter-height: var(--input-field-height-default);
|
|
9
|
+
--muka-inputcounter-pad: calc(var(--spacing-2) + var(--spacing-1));
|
|
10
|
+
--muka-inputcounter-min: var(--size-3xl);
|
|
11
|
+
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
gap: var(--spacing-2);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.muka-inputcounter--sm {
|
|
18
|
+
--muka-inputcounter-height: var(--input-field-height-sm);
|
|
19
|
+
--muka-inputcounter-pad: calc(var(--spacing-1) + var(--spacing-1));
|
|
20
|
+
--muka-inputcounter-min: var(--size-2xl);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.muka-inputcounter--lg {
|
|
24
|
+
--muka-inputcounter-radius: var(--input-field-radius-lg);
|
|
25
|
+
--muka-inputcounter-height: var(--input-field-height-lg);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Label row — label, info tooltip trigger, optional hint */
|
|
29
|
+
.muka-inputcounter__label-row {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
gap: var(--spacing-2);
|
|
33
|
+
min-height: var(--size-xl);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.muka-inputcounter__info {
|
|
37
|
+
display: inline-flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
padding: 0;
|
|
41
|
+
border: none;
|
|
42
|
+
border-radius: 50%;
|
|
43
|
+
background: transparent;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.muka-inputcounter__info .muka-icon {
|
|
48
|
+
color: var(--color-action-default);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.muka-inputcounter__info:focus-visible {
|
|
52
|
+
outline: 2px solid var(--color-border-focus);
|
|
53
|
+
outline-offset: 2px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.muka-inputcounter__optional {
|
|
57
|
+
font-family: var(--text-label-sm-regular-fontFamily);
|
|
58
|
+
font-weight: var(--text-label-sm-regular-fontWeight);
|
|
59
|
+
font-size: var(--text-label-sm-regular-fontSize);
|
|
60
|
+
line-height: var(--text-label-sm-regular-lineHeight);
|
|
61
|
+
color: var(--color-text-subtle-default);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Field + button group */
|
|
65
|
+
.muka-inputcounter__row {
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: var(--spacing-3);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Field — grows with the value (in ch), never narrower than the Figma width.
|
|
72
|
+
Padding sits on the native input so the 2px focus/error border doesn't
|
|
73
|
+
need compensating: content is centred in a fixed box. */
|
|
74
|
+
.muka-inputcounter__field {
|
|
75
|
+
position: relative;
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
height: var(--muka-inputcounter-height);
|
|
80
|
+
width: calc(
|
|
81
|
+
max(var(--muka-inputcounter-min), calc(var(--muka-inputcounter-chars, 1) * 1ch)) +
|
|
82
|
+
2 * var(--muka-inputcounter-pad) + 2 * var(--border-width-regular)
|
|
83
|
+
);
|
|
84
|
+
background-color: var(--input-field-color-default-background);
|
|
85
|
+
border: var(--border-width-regular) solid var(--input-field-color-default-border);
|
|
86
|
+
border-radius: var(--muka-inputcounter-radius);
|
|
87
|
+
transition: border-color 0.2s ease, background-color 0.2s ease;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.muka-inputcounter__field::after {
|
|
91
|
+
content: '';
|
|
92
|
+
position: absolute;
|
|
93
|
+
inset: 0;
|
|
94
|
+
border-radius: inherit;
|
|
95
|
+
box-shadow: var(--shadow-sunken);
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.muka-inputcounter__field--focused:not(.muka-inputcounter__field--disabled) {
|
|
100
|
+
border-width: var(--border-width-bold);
|
|
101
|
+
border-color: var(--input-field-color-focus-border);
|
|
102
|
+
background-color: var(--input-field-color-focus-background);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.muka-inputcounter__field--error:not(.muka-inputcounter__field--disabled) {
|
|
106
|
+
border-width: var(--border-width-bold);
|
|
107
|
+
border-color: var(--input-field-color-error-border);
|
|
108
|
+
background-color: var(--input-field-color-error-background);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.muka-inputcounter__field--disabled {
|
|
112
|
+
background-color: var(--input-field-color-disabled-background);
|
|
113
|
+
border-color: var(--input-field-color-disabled-border);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.muka-inputcounter__field--disabled::after {
|
|
117
|
+
display: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.muka-inputcounter__native {
|
|
121
|
+
width: 100%;
|
|
122
|
+
min-width: 0;
|
|
123
|
+
height: 100%;
|
|
124
|
+
box-sizing: border-box;
|
|
125
|
+
padding: 0 calc(var(--muka-inputcounter-pad) - var(--border-width-regular));
|
|
126
|
+
border: none;
|
|
127
|
+
outline: none;
|
|
128
|
+
background: transparent;
|
|
129
|
+
text-align: center;
|
|
130
|
+
font-variant-numeric: tabular-nums;
|
|
131
|
+
color: var(--input-field-color-default-foreground);
|
|
132
|
+
font-family: var(--text-input-md-fontFamily);
|
|
133
|
+
font-weight: var(--text-input-md-fontWeight);
|
|
134
|
+
font-size: var(--text-input-md-fontSize);
|
|
135
|
+
line-height: var(--text-input-md-lineHeight);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.muka-inputcounter--sm .muka-inputcounter__native {
|
|
139
|
+
font-family: var(--text-input-sm-fontFamily);
|
|
140
|
+
font-weight: var(--text-input-sm-fontWeight);
|
|
141
|
+
font-size: var(--text-input-sm-fontSize);
|
|
142
|
+
line-height: var(--text-input-sm-lineHeight);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.muka-inputcounter__field--disabled .muka-inputcounter__native {
|
|
146
|
+
color: var(--input-field-color-disabled-foreground);
|
|
147
|
+
cursor: not-allowed;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Button group — secondary icon-only Buttons joined by a divider.
|
|
151
|
+
Only the outer corners are rounded. */
|
|
152
|
+
.muka-inputcounter__group {
|
|
153
|
+
display: inline-flex;
|
|
154
|
+
align-items: stretch;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.muka-inputcounter__group .muka-button {
|
|
158
|
+
border-radius: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.muka-inputcounter__group .muka-button:first-child {
|
|
162
|
+
border-start-start-radius: var(--muka-inputcounter-radius);
|
|
163
|
+
border-end-start-radius: var(--muka-inputcounter-radius);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.muka-inputcounter__group .muka-button:last-child {
|
|
167
|
+
border-start-end-radius: var(--muka-inputcounter-radius);
|
|
168
|
+
border-end-end-radius: var(--muka-inputcounter-radius);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.muka-inputcounter__divider {
|
|
172
|
+
flex: none;
|
|
173
|
+
width: var(--border-width-regular);
|
|
174
|
+
background-color: var(--color-border-default);
|
|
175
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.InputCounter = void 0;
|
|
38
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const react_2 = require("@remixicon/react");
|
|
41
|
+
const accessibility_1 = require("../../utils/accessibility");
|
|
42
|
+
const Button_1 = require("../Button");
|
|
43
|
+
const Icon_1 = require("../Icon");
|
|
44
|
+
const Tooltip_1 = require("../Tooltip");
|
|
45
|
+
require("../Input/Input.css");
|
|
46
|
+
require("./InputCounter.css");
|
|
47
|
+
const decimalsOf = (n) => {
|
|
48
|
+
const [, fraction = ''] = String(n).split('.');
|
|
49
|
+
return fraction.length;
|
|
50
|
+
};
|
|
51
|
+
const BUTTON_ICON_SIZE = { sm: 'xs', md: 'sm', lg: 'md' };
|
|
52
|
+
/**
|
|
53
|
+
* InputCounter Component
|
|
54
|
+
*
|
|
55
|
+
* A compact numeric field with joined decrement/increment buttons, for small
|
|
56
|
+
* whole quantities (amounts, guests, items). Follows the WAI-ARIA spinbutton
|
|
57
|
+
* pattern: the field is the single tab stop and owns the keyboard; the buttons
|
|
58
|
+
* are pointer shortcuts.
|
|
59
|
+
*
|
|
60
|
+
* Tokens used:
|
|
61
|
+
* - input.field.color.{state}.{background|foreground|border}
|
|
62
|
+
* - input.field.radius.{md|lg} / input.field.height.{size}
|
|
63
|
+
* - button.color.secondary.* (via Button)
|
|
64
|
+
* - shadow.sunken / color.border.default
|
|
65
|
+
* - text.input.{size} / text.label.md.semibold / text.label.sm.regular
|
|
66
|
+
*
|
|
67
|
+
* @see https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/
|
|
68
|
+
*/
|
|
69
|
+
exports.InputCounter = react_1.default.forwardRef(function InputCounter({ value, defaultValue, onChange, min, max, step = 1, label, optional = false, optionalText = 'Optional', tooltip, tooltipLabel = 'More information', helperText, error = false, errorMessage, disabled = false, readOnly = false, required = false, size = 'md', decrementLabel = 'Decrease', incrementLabel = 'Increase', className = '', id, name, onBlur, onFocus, onKeyDown, inputMode, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, ...rest }, forwardedRef) {
|
|
70
|
+
const isControlled = value !== undefined;
|
|
71
|
+
const [internalValue, setInternalValue] = (0, react_1.useState)(() => defaultValue ?? min ?? 0);
|
|
72
|
+
// Text being typed; null when the field shows the committed value.
|
|
73
|
+
const [draft, setDraft] = (0, react_1.useState)(null);
|
|
74
|
+
const [isFocused, setIsFocused] = (0, react_1.useState)(false);
|
|
75
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
76
|
+
const generatedId = (0, react_1.useId)();
|
|
77
|
+
const inputId = id || name || generatedId;
|
|
78
|
+
const helperTextId = `${inputId}-helper`;
|
|
79
|
+
const errorMessageId = `${inputId}-error`;
|
|
80
|
+
const current = isControlled ? value : internalValue;
|
|
81
|
+
const display = draft ?? String(current);
|
|
82
|
+
const interactive = !disabled && !readOnly;
|
|
83
|
+
const canDecrement = interactive && (min === undefined || current > min);
|
|
84
|
+
const canIncrement = interactive && (max === undefined || current < max);
|
|
85
|
+
const showError = error && errorMessage;
|
|
86
|
+
const describedBy = (0, accessibility_1.mergeIds)(ariaDescribedBy, showError ? errorMessageId : helperText ? helperTextId : undefined);
|
|
87
|
+
/** Snap to the step grid (anchored at min) and clamp to min/max. */
|
|
88
|
+
const normalize = (n) => {
|
|
89
|
+
const base = min ?? 0;
|
|
90
|
+
const precision = Math.max(decimalsOf(step), decimalsOf(base));
|
|
91
|
+
let next = base + Math.round((n - base) / step) * step;
|
|
92
|
+
next = Number(next.toFixed(precision));
|
|
93
|
+
if (max !== undefined && next > max)
|
|
94
|
+
next = max;
|
|
95
|
+
if (min !== undefined && next < min)
|
|
96
|
+
next = min;
|
|
97
|
+
return next;
|
|
98
|
+
};
|
|
99
|
+
const commit = (n) => {
|
|
100
|
+
const next = normalize(n);
|
|
101
|
+
setDraft(null);
|
|
102
|
+
if (!isControlled)
|
|
103
|
+
setInternalValue(next);
|
|
104
|
+
if (next !== current)
|
|
105
|
+
onChange?.(next);
|
|
106
|
+
};
|
|
107
|
+
/** Value to step from: a typed-but-uncommitted draft wins over the prop. */
|
|
108
|
+
const base = () => {
|
|
109
|
+
if (draft === null)
|
|
110
|
+
return current;
|
|
111
|
+
const parsed = Number(draft.replace(',', '.'));
|
|
112
|
+
return draft.trim() !== '' && Number.isFinite(parsed) ? parsed : current;
|
|
113
|
+
};
|
|
114
|
+
const stepBy = (multiplier) => commit(base() + step * multiplier);
|
|
115
|
+
const commitDraft = () => {
|
|
116
|
+
if (draft === null)
|
|
117
|
+
return;
|
|
118
|
+
const parsed = Number(draft.replace(',', '.'));
|
|
119
|
+
if (draft.trim() === '' || !Number.isFinite(parsed)) {
|
|
120
|
+
setDraft(null);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
commit(parsed);
|
|
124
|
+
};
|
|
125
|
+
const handleKeyDown = (e) => {
|
|
126
|
+
onKeyDown?.(e);
|
|
127
|
+
if (e.defaultPrevented || !interactive)
|
|
128
|
+
return;
|
|
129
|
+
switch (e.key) {
|
|
130
|
+
case 'ArrowUp':
|
|
131
|
+
stepBy(1);
|
|
132
|
+
break;
|
|
133
|
+
case 'ArrowDown':
|
|
134
|
+
stepBy(-1);
|
|
135
|
+
break;
|
|
136
|
+
case 'PageUp':
|
|
137
|
+
stepBy(10);
|
|
138
|
+
break;
|
|
139
|
+
case 'PageDown':
|
|
140
|
+
stepBy(-10);
|
|
141
|
+
break;
|
|
142
|
+
case 'Home':
|
|
143
|
+
if (min === undefined)
|
|
144
|
+
return;
|
|
145
|
+
commit(min);
|
|
146
|
+
break;
|
|
147
|
+
case 'End':
|
|
148
|
+
if (max === undefined)
|
|
149
|
+
return;
|
|
150
|
+
commit(max);
|
|
151
|
+
break;
|
|
152
|
+
case 'Enter':
|
|
153
|
+
commitDraft();
|
|
154
|
+
return; // let Enter still submit a surrounding form
|
|
155
|
+
default:
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
e.preventDefault();
|
|
159
|
+
};
|
|
160
|
+
// Keep focus where it is — pressing a button must not blur the field
|
|
161
|
+
// (which would commit a half-typed draft mid-click).
|
|
162
|
+
const keepFocus = (e) => e.preventDefault();
|
|
163
|
+
const wrapperClasses = [
|
|
164
|
+
'muka-inputcounter',
|
|
165
|
+
`muka-inputcounter--${size}`,
|
|
166
|
+
className,
|
|
167
|
+
].filter(Boolean).join(' ');
|
|
168
|
+
const fieldClasses = [
|
|
169
|
+
'muka-inputcounter__field',
|
|
170
|
+
isFocused && 'muka-inputcounter__field--focused',
|
|
171
|
+
error && 'muka-inputcounter__field--error',
|
|
172
|
+
disabled && 'muka-inputcounter__field--disabled',
|
|
173
|
+
].filter(Boolean).join(' ');
|
|
174
|
+
const hasLabelRow = Boolean(label);
|
|
175
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: wrapperClasses, children: [hasLabelRow && ((0, jsx_runtime_1.jsxs)("div", { className: "muka-inputcounter__label-row", children: [(0, jsx_runtime_1.jsxs)("label", { className: "muka-input__label muka-input__label--md", htmlFor: inputId, children: [label, required && (0, jsx_runtime_1.jsx)("span", { className: "muka-input__required", "aria-hidden": "true", children: " *" })] }), tooltip && ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { content: tooltip, children: (0, jsx_runtime_1.jsx)("button", { type: "button", className: "muka-inputcounter__info", "aria-label": tooltipLabel, children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: "information", variant: "line", size: "md" }) }) })), optional && !required && ((0, jsx_runtime_1.jsx)("span", { className: "muka-inputcounter__optional", children: optionalText }))] })), (0, jsx_runtime_1.jsxs)("div", { className: "muka-inputcounter__row", children: [(0, jsx_runtime_1.jsx)("div", { className: fieldClasses, style: { '--muka-inputcounter-chars': display.length }, children: (0, jsx_runtime_1.jsx)("input", { ...rest, ref: (node) => {
|
|
176
|
+
inputRef.current = node;
|
|
177
|
+
if (typeof forwardedRef === 'function')
|
|
178
|
+
forwardedRef(node);
|
|
179
|
+
else if (forwardedRef)
|
|
180
|
+
forwardedRef.current =
|
|
181
|
+
node;
|
|
182
|
+
}, id: inputId, name: name, className: "muka-inputcounter__native", type: "text", role: "spinbutton", inputMode: inputMode ?? (Number.isInteger(step) ? 'numeric' : 'decimal'), autoComplete: rest.autoComplete ?? 'off', value: display, disabled: disabled, readOnly: readOnly, required: required, "aria-valuenow": current, "aria-valuemin": min, "aria-valuemax": max, "aria-invalid": ariaInvalid ?? (error || undefined), "aria-describedby": describedBy, onChange: (e) => {
|
|
183
|
+
// Digits, one leading minus and one decimal separator only.
|
|
184
|
+
if (/^-?\d*([.,]\d*)?$/.test(e.target.value))
|
|
185
|
+
setDraft(e.target.value);
|
|
186
|
+
}, onKeyDown: handleKeyDown, onFocus: (e) => {
|
|
187
|
+
setIsFocused(true);
|
|
188
|
+
onFocus?.(e);
|
|
189
|
+
}, onBlur: (e) => {
|
|
190
|
+
setIsFocused(false);
|
|
191
|
+
commitDraft();
|
|
192
|
+
onBlur?.(e);
|
|
193
|
+
} }) }), (0, jsx_runtime_1.jsxs)("div", { className: "muka-inputcounter__group", children: [(0, jsx_runtime_1.jsx)(Button_1.Button, { variant: "secondary", size: size, iconOnly: true, "aria-label": decrementLabel, "aria-controls": inputId, tabIndex: -1, disabled: !canDecrement, onMouseDown: keepFocus, onClick: () => stepBy(-1), children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { icon: react_2.RiSubtractLine, size: BUTTON_ICON_SIZE[size] }) }), (0, jsx_runtime_1.jsx)("span", { className: "muka-inputcounter__divider", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)(Button_1.Button, { variant: "secondary", size: size, iconOnly: true, "aria-label": incrementLabel, "aria-controls": inputId, tabIndex: -1, disabled: !canIncrement, onMouseDown: keepFocus, onClick: () => stepBy(1), children: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: "add", variant: "line", size: BUTTON_ICON_SIZE[size] }) })] })] }), showError && ((0, jsx_runtime_1.jsx)("p", { className: "muka-input__error", id: errorMessageId, role: "alert", children: errorMessage })), !showError && helperText && ((0, jsx_runtime_1.jsx)("p", { className: "muka-input__helper", id: helperTextId, children: helperText }))] }));
|
|
194
|
+
});
|
|
195
|
+
exports.default = exports.InputCounter;
|
|
196
|
+
//# sourceMappingURL=InputCounter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputCounter.js","sourceRoot":"","sources":["../../../../components/InputCounter/InputCounter.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = exports.InputCounter = void 0;
|
|
7
|
+
var InputCounter_1 = require("./InputCounter");
|
|
8
|
+
Object.defineProperty(exports, "InputCounter", { enumerable: true, get: function () { return InputCounter_1.InputCounter; } });
|
|
9
|
+
var InputCounter_2 = require("./InputCounter");
|
|
10
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(InputCounter_2).default; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/InputCounter/index.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAsE;AAA7D,4GAAA,YAAY,OAAA;AACrB,+CAAyC;AAAhC,wHAAA,OAAO,OAAA"}
|
|
@@ -43,8 +43,13 @@ const DropdownMenuPrimitive = __importStar(require("@radix-ui/react-dropdown-men
|
|
|
43
43
|
const ContextMenuPrimitive = __importStar(require("@radix-ui/react-context-menu"));
|
|
44
44
|
const Icon_1 = require("../Icon");
|
|
45
45
|
const Scrollbar_1 = require("../Scrollbar");
|
|
46
|
+
const usePortalContainer_1 = require("../../utils/usePortalContainer");
|
|
46
47
|
require("./Menu.css");
|
|
47
|
-
const MenuContext = (0, react_1.createContext)({
|
|
48
|
+
const MenuContext = (0, react_1.createContext)({
|
|
49
|
+
trigger: 'click',
|
|
50
|
+
open: false,
|
|
51
|
+
triggerRef: { current: null },
|
|
52
|
+
});
|
|
48
53
|
const MenuSearchContext = (0, react_1.createContext)({
|
|
49
54
|
query: '',
|
|
50
55
|
setQuery: () => { },
|
|
@@ -140,7 +145,8 @@ const Menu = ({ children, trigger = 'click', open, onOpenChange, defaultOpen, mo
|
|
|
140
145
|
}
|
|
141
146
|
onOpenChange?.(next);
|
|
142
147
|
}, [isControlled, onOpenChange]);
|
|
143
|
-
const
|
|
148
|
+
const triggerRef = (0, react_1.useRef)(null);
|
|
149
|
+
const value = (0, react_1.useMemo)(() => ({ trigger, open: isOpen, triggerRef }), [trigger, isOpen]);
|
|
144
150
|
if (trigger === 'context') {
|
|
145
151
|
return ((0, jsx_runtime_1.jsx)(MenuContext.Provider, { value: value, children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Root, { onOpenChange: handleOpenChange, modal: modal, children: children }) }));
|
|
146
152
|
}
|
|
@@ -153,15 +159,22 @@ exports.DropdownMenu = exports.Menu;
|
|
|
153
159
|
* MenuTrigger — opens the menu on click or right-click depending on `Menu.trigger`.
|
|
154
160
|
*/
|
|
155
161
|
exports.MenuTrigger = react_1.default.forwardRef(({ children, asChild = false, disabled = false, className = '' }, ref) => {
|
|
156
|
-
const { trigger } = (0, react_1.useContext)(MenuContext);
|
|
162
|
+
const { trigger, triggerRef } = (0, react_1.useContext)(MenuContext);
|
|
157
163
|
const Primitives = useMenuPrimitives();
|
|
164
|
+
const setRef = (0, react_1.useCallback)((node) => {
|
|
165
|
+
triggerRef.current = node;
|
|
166
|
+
if (typeof ref === 'function')
|
|
167
|
+
ref(node);
|
|
168
|
+
else if (ref)
|
|
169
|
+
ref.current = node;
|
|
170
|
+
}, [ref, triggerRef]);
|
|
158
171
|
if (trigger === 'context') {
|
|
159
172
|
const triggerClasses = ['muka-context-menu__trigger', className]
|
|
160
173
|
.filter(Boolean)
|
|
161
174
|
.join(' ');
|
|
162
|
-
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Trigger, { ref:
|
|
175
|
+
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Trigger, { ref: setRef, asChild: asChild, disabled: disabled, className: triggerClasses || undefined, children: children }));
|
|
163
176
|
}
|
|
164
|
-
return ((0, jsx_runtime_1.jsx)(Primitives.Trigger, { ref:
|
|
177
|
+
return ((0, jsx_runtime_1.jsx)(Primitives.Trigger, { ref: setRef, asChild: asChild, disabled: disabled, className: className || undefined, children: children }));
|
|
165
178
|
});
|
|
166
179
|
exports.MenuTrigger.displayName = 'MenuTrigger';
|
|
167
180
|
/**
|
|
@@ -189,7 +202,8 @@ function partitionMenuChildren(children) {
|
|
|
189
202
|
return { search, items };
|
|
190
203
|
}
|
|
191
204
|
exports.MenuContent = react_1.default.forwardRef(({ children, align = 'start', side = 'bottom', sideOffset = 4, alignOffset = 0, className = '', style, loop = true, onOpenAutoFocus, onCloseAutoFocus, searchable = false, scrollbar = false, container, }, ref) => {
|
|
192
|
-
const { trigger, open } = (0, react_1.useContext)(MenuContext);
|
|
205
|
+
const { trigger, open, triggerRef } = (0, react_1.useContext)(MenuContext);
|
|
206
|
+
const portalContainer = (0, usePortalContainer_1.usePortalContainer)(container, triggerRef);
|
|
193
207
|
const [query, setQuery] = (0, react_1.useState)('');
|
|
194
208
|
const [searchHits, setSearchHits] = (0, react_1.useState)(0);
|
|
195
209
|
const [highlightedId, setHighlightedId] = (0, react_1.useState)(null);
|
|
@@ -317,7 +331,7 @@ exports.MenuContent = react_1.default.forwardRef(({ children, align = 'start', s
|
|
|
317
331
|
onCloseAutoFocus,
|
|
318
332
|
children: body,
|
|
319
333
|
};
|
|
320
|
-
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Portal, { container:
|
|
334
|
+
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Portal, { container: portalContainer, children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Content, { ...contextContentProps }) }));
|
|
321
335
|
}
|
|
322
336
|
const dropdownContentProps = {
|
|
323
337
|
ref,
|
|
@@ -332,7 +346,7 @@ exports.MenuContent = react_1.default.forwardRef(({ children, align = 'start', s
|
|
|
332
346
|
onCloseAutoFocus,
|
|
333
347
|
children: body,
|
|
334
348
|
};
|
|
335
|
-
return ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { container:
|
|
349
|
+
return ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { container: portalContainer, children: (0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Content, { ...dropdownContentProps }) }));
|
|
336
350
|
});
|
|
337
351
|
exports.MenuContent.displayName = 'MenuContent';
|
|
338
352
|
/**
|
|
@@ -561,14 +575,15 @@ exports.MenuSubTrigger.displayName = 'MenuSubTrigger';
|
|
|
561
575
|
* MenuSubContent - The dropdown container for submenu items
|
|
562
576
|
*/
|
|
563
577
|
exports.MenuSubContent = react_1.default.forwardRef(({ children, sideOffset = 2, alignOffset = -4, className = '', loop = true, container }, ref) => {
|
|
564
|
-
const { trigger } = (0, react_1.useContext)(MenuContext);
|
|
578
|
+
const { trigger, triggerRef } = (0, react_1.useContext)(MenuContext);
|
|
579
|
+
const portalContainer = (0, usePortalContainer_1.usePortalContainer)(container, triggerRef);
|
|
565
580
|
const contentClasses = ['muka-menu__content', 'muka-menu__content--sub', className]
|
|
566
581
|
.filter(Boolean)
|
|
567
582
|
.join(' ');
|
|
568
583
|
if (trigger === 'context') {
|
|
569
|
-
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Portal, { container:
|
|
584
|
+
return ((0, jsx_runtime_1.jsx)(ContextMenuPrimitive.Portal, { container: portalContainer, children: (0, jsx_runtime_1.jsx)(ContextMenuPrimitive.SubContent, { ref: ref, sideOffset: sideOffset, alignOffset: alignOffset, className: contentClasses, loop: loop, children: children }) }));
|
|
570
585
|
}
|
|
571
|
-
return ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { container:
|
|
586
|
+
return ((0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.Portal, { container: portalContainer, children: (0, jsx_runtime_1.jsx)(DropdownMenuPrimitive.SubContent, { ref: ref, sideOffset: sideOffset, alignOffset: alignOffset, className: contentClasses, loop: loop, children: children }) }));
|
|
572
587
|
});
|
|
573
588
|
exports.MenuSubContent.displayName = 'MenuSubContent';
|
|
574
589
|
exports.default = exports.Menu;
|