@jobber/components 8.23.0 → 8.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Autocomplete/index.cjs +1 -1
- package/dist/Autocomplete/index.mjs +1 -1
- package/dist/Card/index.cjs +4 -4
- package/dist/Card/index.mjs +4 -4
- package/dist/Chip/index.cjs +1 -1
- package/dist/Chip/index.mjs +1 -1
- package/dist/Chips/InternalChipDismissible/hooks/index.cjs +1 -1
- package/dist/Chips/InternalChipDismissible/hooks/index.mjs +1 -1
- package/dist/Chips/InternalChipDismissible/index.cjs +1 -1
- package/dist/Chips/InternalChipDismissible/index.mjs +1 -1
- package/dist/Chips/index.cjs +1 -1
- package/dist/Chips/index.mjs +1 -1
- package/dist/ComboboxChipRemove-cjs.js +668 -379
- package/dist/ComboboxChipRemove-es.js +508 -219
- package/dist/ConfirmationModal/index.cjs +1 -1
- package/dist/ConfirmationModal/index.mjs +1 -1
- package/dist/DataDump/index.cjs +4 -4
- package/dist/DataDump/index.mjs +4 -4
- package/dist/DataList/components/DataListActions/index.cjs +1 -1
- package/dist/DataList/components/DataListActions/index.mjs +1 -1
- package/dist/DataList/components/DataListBulkActions/index.cjs +1 -1
- package/dist/DataList/components/DataListBulkActions/index.mjs +1 -1
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +1 -1
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +1 -1
- package/dist/DataList/components/DataListFilters/index.cjs +1 -1
- package/dist/DataList/components/DataListFilters/index.mjs +1 -1
- package/dist/DataList/components/DataListHeader/index.cjs +1 -1
- package/dist/DataList/components/DataListHeader/index.mjs +1 -1
- package/dist/DataList/components/DataListItem/index.cjs +1 -1
- package/dist/DataList/components/DataListItem/index.mjs +1 -1
- package/dist/DataList/components/DataListItemActions/index.cjs +1 -1
- package/dist/DataList/components/DataListItemActions/index.mjs +1 -1
- package/dist/DataList/components/DataListItemActionsOverflow/index.cjs +1 -1
- package/dist/DataList/components/DataListItemActionsOverflow/index.mjs +1 -1
- package/dist/DataList/components/DataListItems/index.cjs +1 -1
- package/dist/DataList/components/DataListItems/index.mjs +1 -1
- package/dist/DataList/components/DataListLayout/index.cjs +1 -1
- package/dist/DataList/components/DataListLayout/index.mjs +1 -1
- package/dist/DataList/components/DataListLayoutActions/index.cjs +1 -1
- package/dist/DataList/components/DataListLayoutActions/index.mjs +1 -1
- package/dist/DataList/index.cjs +1 -1
- package/dist/DataList/index.mjs +1 -1
- package/dist/DatePicker/index.cjs +1 -1
- package/dist/DatePicker/index.mjs +1 -1
- package/dist/Dialog/index.cjs +3 -3
- package/dist/Dialog/index.mjs +3 -3
- package/dist/DrawerDescription-cjs.js +32 -33
- package/dist/DrawerDescription-es.js +19 -20
- package/dist/DrawerTitle-cjs.js +7 -5
- package/dist/DrawerTitle-es.js +7 -5
- package/dist/FilterPicker/components/FilterPickerActivator/index.cjs +1 -1
- package/dist/FilterPicker/components/FilterPickerActivator/index.mjs +1 -1
- package/dist/FilterPicker/components/FilterPickerContent/index.cjs +1 -1
- package/dist/FilterPicker/components/FilterPickerContent/index.mjs +1 -1
- package/dist/FilterPicker/components/FilterPickerTrigger/index.cjs +1 -1
- package/dist/FilterPicker/components/FilterPickerTrigger/index.mjs +1 -1
- package/dist/FilterPicker/index.cjs +1 -1
- package/dist/FilterPicker/index.mjs +1 -1
- package/dist/FormFieldWrapper-cjs.js +2 -2
- package/dist/FormFieldWrapper-es.js +2 -2
- package/dist/FormatFile/index.cjs +1 -1
- package/dist/FormatFile/index.mjs +1 -1
- package/dist/Gallery/index.cjs +1 -1
- package/dist/Gallery/index.mjs +1 -1
- package/dist/InputDate/index.cjs +1 -1
- package/dist/InputDate/index.mjs +1 -1
- package/dist/InputNumberExperimental-cjs.js +319 -102
- package/dist/InputNumberExperimental-es.js +321 -104
- package/dist/LightBox/index.cjs +1 -1
- package/dist/LightBox/index.mjs +1 -1
- package/dist/Menu/index.cjs +4 -4
- package/dist/Menu/index.mjs +4 -4
- package/dist/MenuSubmenuTrigger-cjs.js +545 -498
- package/dist/MenuSubmenuTrigger-es.js +490 -443
- package/dist/Modal/index.cjs +1 -1
- package/dist/Modal/index.mjs +1 -1
- package/dist/NumberFieldInput-cjs.js +609 -496
- package/dist/NumberFieldInput-es.js +612 -498
- package/dist/Page/index.cjs +4 -4
- package/dist/Page/index.mjs +4 -4
- package/dist/Popover/index.cjs +1 -1
- package/dist/Popover/index.mjs +1 -1
- package/dist/ScrollAreaViewport-cjs.js +326 -601
- package/dist/ScrollAreaViewport-es.js +278 -548
- package/dist/SelectGroupLabel-cjs.js +494 -528
- package/dist/SelectGroupLabel-es.js +411 -445
- package/dist/Separator-cjs.js +1 -0
- package/dist/Separator-es.js +1 -0
- package/dist/Tooltip/index.cjs +1 -1
- package/dist/Tooltip/index.mjs +1 -1
- package/dist/docs/InputTime/InputTime.md +8 -0
- package/dist/docs/SelectPrimitive/SelectPrimitive.md +38 -25
- package/dist/floating-ui.react-cjs.js +586 -10
- package/dist/floating-ui.react-dom-cjs.js +92 -92
- package/dist/floating-ui.react-dom-es.js +1 -1
- package/dist/floating-ui.react-es.js +580 -4
- package/dist/floating-ui.utils-cjs.js +159 -0
- package/dist/floating-ui.utils-es.js +136 -0
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +4 -4
- package/dist/{ToolbarRootContext-cjs.js → isElementDisabled-cjs.js} +5 -0
- package/dist/{ToolbarRootContext-es.js → isElementDisabled-es.js} +5 -1
- package/dist/primitives/BottomSheet/index.cjs +3 -3
- package/dist/primitives/BottomSheet/index.mjs +3 -3
- package/dist/primitives/ComboboxPrimitive/index.cjs +2 -2
- package/dist/primitives/ComboboxPrimitive/index.mjs +2 -2
- package/dist/primitives/InputNumberExperimental/index.cjs +1 -1
- package/dist/primitives/InputNumberExperimental/index.mjs +1 -1
- package/dist/primitives/SelectPrimitive/index.cjs +5 -5
- package/dist/primitives/SelectPrimitive/index.mjs +5 -5
- package/dist/primitives/index.cjs +4 -4
- package/dist/primitives/index.mjs +4 -4
- package/dist/resolveAriaLabelledBy-cjs.js +5 -0
- package/dist/resolveAriaLabelledBy-es.js +5 -1
- package/dist/{CSPContext-cjs.js → scrollEdges-cjs.js} +30 -2
- package/dist/{CSPContext-es.js → scrollEdges-es.js} +28 -3
- package/dist/styles.css +9 -3
- package/dist/unstyledPrimitives/index.cjs +1217 -639
- package/dist/unstyledPrimitives/index.mjs +1163 -585
- package/dist/useButton-cjs.js +283 -317
- package/dist/useButton-es.js +277 -298
- package/dist/useCompositeListItem-cjs.js +328 -279
- package/dist/useCompositeListItem-es.js +293 -246
- package/dist/useLabel-cjs.js +11 -1
- package/dist/useLabel-es.js +11 -2
- package/dist/useLabelableId-cjs.js +37 -91
- package/dist/useLabelableId-es.js +37 -90
- package/dist/useRenderElement-cjs.js +81 -26
- package/dist/useRenderElement-es.js +81 -27
- package/dist/{InternalBackdrop-cjs.js → useScrollLock-cjs.js} +1286 -1220
- package/dist/{InternalBackdrop-es.js → useScrollLock-es.js} +1250 -1207
- package/package.json +3 -3
- package/dist/index.esm-cjs.js +0 -738
- package/dist/index.esm-es.js +0 -712
|
@@ -35,7 +35,7 @@ const EMPTY_PROPS = {};
|
|
|
35
35
|
* Props can either be provided as objects or as functions that take the previous props as an argument.
|
|
36
36
|
* The function will receive the merged props up to that point (going from left to right):
|
|
37
37
|
* so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.
|
|
38
|
-
* The function is responsible for chaining event handlers if needed (
|
|
38
|
+
* The function is responsible for chaining event handlers if needed (that is, we don't run the merge logic).
|
|
39
39
|
*
|
|
40
40
|
* Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.
|
|
41
41
|
* They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.
|
|
@@ -51,21 +51,23 @@ const EMPTY_PROPS = {};
|
|
|
51
51
|
*/
|
|
52
52
|
|
|
53
53
|
function mergeProps(a, b, c, d, e) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
if (!c && !d && !e && !a) {
|
|
55
|
+
return createInitialMergedProps(b);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// We need to mutably own `merged`.
|
|
59
|
+
let merged = createInitialMergedProps(a);
|
|
58
60
|
if (b) {
|
|
59
|
-
merged =
|
|
61
|
+
merged = mergeInto(merged, b);
|
|
60
62
|
}
|
|
61
63
|
if (c) {
|
|
62
|
-
merged =
|
|
64
|
+
merged = mergeInto(merged, c);
|
|
63
65
|
}
|
|
64
66
|
if (d) {
|
|
65
|
-
merged =
|
|
67
|
+
merged = mergeInto(merged, d);
|
|
66
68
|
}
|
|
67
69
|
if (e) {
|
|
68
|
-
merged =
|
|
70
|
+
merged = mergeInto(merged, e);
|
|
69
71
|
}
|
|
70
72
|
return merged;
|
|
71
73
|
}
|
|
@@ -89,24 +91,46 @@ function mergePropsN(props) {
|
|
|
89
91
|
return EMPTY_PROPS;
|
|
90
92
|
}
|
|
91
93
|
if (props.length === 1) {
|
|
92
|
-
return
|
|
94
|
+
return createInitialMergedProps(props[0]);
|
|
93
95
|
}
|
|
94
96
|
|
|
95
|
-
// We need to mutably own `merged
|
|
96
|
-
let merged =
|
|
97
|
-
...resolvePropsGetter(props[0], EMPTY_PROPS)
|
|
98
|
-
};
|
|
97
|
+
// We need to mutably own `merged`.
|
|
98
|
+
let merged = createInitialMergedProps(props[0]);
|
|
99
99
|
for (let i = 1; i < props.length; i += 1) {
|
|
100
|
-
merged =
|
|
100
|
+
merged = mergeInto(merged, props[i]);
|
|
101
101
|
}
|
|
102
102
|
return merged;
|
|
103
103
|
}
|
|
104
|
-
function
|
|
104
|
+
function createInitialMergedProps(inputProps) {
|
|
105
105
|
if (isPropsGetter(inputProps)) {
|
|
106
|
-
|
|
106
|
+
// Getter-returned handlers intentionally keep their existing semantics.
|
|
107
|
+
return {
|
|
108
|
+
...resolvePropsGetter(inputProps, EMPTY_PROPS)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return copyInitialProps(inputProps);
|
|
112
|
+
}
|
|
113
|
+
function mergeInto(merged, inputProps) {
|
|
114
|
+
if (isPropsGetter(inputProps)) {
|
|
115
|
+
return resolvePropsGetter(inputProps, merged);
|
|
107
116
|
}
|
|
108
117
|
return mutablyMergeInto(merged, inputProps);
|
|
109
118
|
}
|
|
119
|
+
function copyInitialProps(inputProps) {
|
|
120
|
+
const copiedProps = {
|
|
121
|
+
...inputProps
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// `copiedProps` is our fresh own-object copy, so iterating with `for...in` is safe here.
|
|
125
|
+
// eslint-disable-next-line guard-for-in
|
|
126
|
+
for (const propName in copiedProps) {
|
|
127
|
+
const propValue = copiedProps[propName];
|
|
128
|
+
if (isEventHandler(propName, propValue)) {
|
|
129
|
+
copiedProps[propName] = wrapEventHandler(propValue);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return copiedProps;
|
|
133
|
+
}
|
|
110
134
|
|
|
111
135
|
/**
|
|
112
136
|
* Merges two sets of props. In case of conflicts, the external props take precedence.
|
|
@@ -163,23 +187,36 @@ function mergeEventHandlers(ourHandler, theirHandler) {
|
|
|
163
187
|
return ourHandler;
|
|
164
188
|
}
|
|
165
189
|
if (!ourHandler) {
|
|
166
|
-
return theirHandler;
|
|
190
|
+
return wrapEventHandler(theirHandler);
|
|
167
191
|
}
|
|
168
|
-
return
|
|
192
|
+
return (...args) => {
|
|
193
|
+
const event = args[0];
|
|
169
194
|
if (isSyntheticEvent(event)) {
|
|
170
195
|
const baseUIEvent = event;
|
|
171
196
|
makeEventPreventable(baseUIEvent);
|
|
172
|
-
const result = theirHandler(
|
|
197
|
+
const result = theirHandler(...args);
|
|
173
198
|
if (!baseUIEvent.baseUIHandlerPrevented) {
|
|
174
|
-
ourHandler?.(
|
|
199
|
+
ourHandler?.(...args);
|
|
175
200
|
}
|
|
176
201
|
return result;
|
|
177
202
|
}
|
|
178
|
-
const result = theirHandler(
|
|
179
|
-
ourHandler?.(
|
|
203
|
+
const result = theirHandler(...args);
|
|
204
|
+
ourHandler?.(...args);
|
|
180
205
|
return result;
|
|
181
206
|
};
|
|
182
207
|
}
|
|
208
|
+
function wrapEventHandler(handler) {
|
|
209
|
+
if (!handler) {
|
|
210
|
+
return handler;
|
|
211
|
+
}
|
|
212
|
+
return (...args) => {
|
|
213
|
+
const event = args[0];
|
|
214
|
+
if (isSyntheticEvent(event)) {
|
|
215
|
+
makeEventPreventable(event);
|
|
216
|
+
}
|
|
217
|
+
return handler(...args);
|
|
218
|
+
};
|
|
219
|
+
}
|
|
183
220
|
function makeEventPreventable(event) {
|
|
184
221
|
event.preventBaseUIHandler = () => {
|
|
185
222
|
event.baseUIHandlerPrevented = true;
|
|
@@ -464,7 +501,12 @@ function useRenderElementProps(componentProps, params = {}) {
|
|
|
464
501
|
const className = enabled ? resolveClassName(classNameProp, state) : undefined;
|
|
465
502
|
const style = enabled ? resolveStyle(styleProp, state) : undefined;
|
|
466
503
|
const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;
|
|
467
|
-
const
|
|
504
|
+
const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : undefined;
|
|
505
|
+
|
|
506
|
+
// Ensure outProps is always a new mutable object when enabled, never EMPTY_OBJECT.
|
|
507
|
+
// This prevents potential TypeError when setting ref, className, or style properties,
|
|
508
|
+
// since EMPTY_OBJECT is frozen and mutations would fail in strict mode.
|
|
509
|
+
const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
|
|
468
510
|
|
|
469
511
|
// SAFETY: The `useMergedRefs` functions use a single hook to store the same value,
|
|
470
512
|
// switching between them at runtime is safe. If this assertion fails, React will
|
|
@@ -492,12 +534,20 @@ function useRenderElementProps(componentProps, params = {}) {
|
|
|
492
534
|
}
|
|
493
535
|
return outProps;
|
|
494
536
|
}
|
|
537
|
+
function resolveRenderFunctionProps(props) {
|
|
538
|
+
if (Array.isArray(props)) {
|
|
539
|
+
return mergePropsN(props);
|
|
540
|
+
}
|
|
541
|
+
return mergeProps(undefined, props);
|
|
542
|
+
}
|
|
495
543
|
|
|
496
544
|
// The symbol React uses internally for lazy components
|
|
497
545
|
// https://github.com/facebook/react/blob/a0566250b210499b4c5677f5ac2eedbd71d51a1b/packages/shared/ReactSymbols.js#L31
|
|
498
546
|
//
|
|
499
547
|
// TODO delete once https://github.com/facebook/react/issues/32392 is fixed
|
|
500
548
|
const REACT_LAZY_TYPE = Symbol.for('react.lazy');
|
|
549
|
+
const COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
|
|
550
|
+
const LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
|
|
501
551
|
function evaluateRenderProp(element, render, props, state) {
|
|
502
552
|
if (render) {
|
|
503
553
|
if (typeof render === 'function') {
|
|
@@ -526,6 +576,8 @@ function evaluateRenderProp(element, render, props, state) {
|
|
|
526
576
|
// so we can throw before with custom message.
|
|
527
577
|
if (process.env.NODE_ENV !== 'production') {
|
|
528
578
|
if (! /*#__PURE__*/React.isValidElement(newElement)) {
|
|
579
|
+
// TODO: fix mui/no-guarded-throw
|
|
580
|
+
// eslint-disable-next-line mui/no-guarded-throw
|
|
529
581
|
throw new Error(['Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.', 'A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.', 'https://base-ui.com/r/invalid-render-prop'].join('\n'));
|
|
530
582
|
}
|
|
531
583
|
}
|
|
@@ -545,8 +597,10 @@ function warnIfRenderPropLooksLikeComponent(renderFn) {
|
|
|
545
597
|
if (functionName.length === 0) {
|
|
546
598
|
return;
|
|
547
599
|
}
|
|
548
|
-
|
|
549
|
-
|
|
600
|
+
if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {
|
|
550
604
|
return;
|
|
551
605
|
}
|
|
552
606
|
warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, 'This usually means a React component was passed directly as `render={Component}`.', 'Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.', 'If this is an intentional render callback, rename it to start with a lowercase letter.', 'Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.', 'https://base-ui.com/r/invalid-render-prop');
|
|
@@ -569,4 +623,4 @@ function renderTag(Tag, props) {
|
|
|
569
623
|
return /*#__PURE__*/React.createElement(Tag, props);
|
|
570
624
|
}
|
|
571
625
|
|
|
572
|
-
export { EMPTY_OBJECT as E, NOOP as N, useRefWithInit as a,
|
|
626
|
+
export { EMPTY_OBJECT as E, NOOP as N, useRefWithInit as a, EMPTY_ARRAY as b, useMergedRefs as c, makeEventPreventable as d, formatErrorMessage as f, isReactVersionAtLeast as i, mergeProps as m, useRenderElement as u, warn as w };
|