@coopdigital/react 1.4.1 → 1.5.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/components/AlertBanner/AlertBanner.d.ts +12 -2
- package/dist/components/AlertBanner/AlertBanner.js +3 -2
- package/dist/components/Author/Author.d.ts +7 -1
- package/dist/components/Author/Author.js +1 -0
- package/dist/components/Button/Button.d.ts +7 -1
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Card/Card.d.ts +41 -7
- package/dist/components/Card/Card.js +7 -6
- package/dist/components/Checkbox/Checkbox.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.js +8 -6
- package/dist/components/DatePicker/DatePicker.d.ts +8 -3
- package/dist/components/DatePicker/DatePicker.js +11 -12
- package/dist/components/Expandable/Expandable.d.ts +21 -5
- package/dist/components/Expandable/Expandable.js +4 -3
- package/dist/components/Field/Field.context.d.ts +14 -0
- package/dist/components/Field/Field.context.js +13 -0
- package/dist/components/Field/Field.d.ts +30 -8
- package/dist/components/Field/Field.js +32 -34
- package/dist/components/Field/index.js +1 -0
- package/dist/components/FieldMarkers/Label.d.ts +1 -1
- package/dist/components/FieldMarkers/Label.js +4 -0
- package/dist/components/FieldMarkers/Legend.d.ts +1 -1
- package/dist/components/Fieldset/Fieldset.d.ts +36 -8
- package/dist/components/Fieldset/Fieldset.js +6 -5
- package/dist/components/Flourish/Flourish.d.ts +7 -1
- package/dist/components/Flourish/Flourish.js +1 -0
- package/dist/components/Form/Form.d.ts +7 -1
- package/dist/components/Form/Form.js +1 -0
- package/dist/components/Image/Image.d.ts +7 -1
- package/dist/components/Image/Image.js +1 -0
- package/dist/components/Pill/Pill.d.ts +13 -3
- package/dist/components/Pill/Pill.js +3 -2
- package/dist/components/Popover/Popover.d.ts +33 -5
- package/dist/components/Popover/Popover.js +6 -5
- package/dist/components/Popover/index.js +1 -0
- package/dist/components/Radio/Radio.d.ts +6 -4
- package/dist/components/Radio/Radio.js +8 -6
- package/dist/components/RootSVG/RootSVG.d.ts +7 -1
- package/dist/components/RootSVG/RootSVG.js +1 -0
- package/dist/components/Searchbox/Searchbox.context.d.ts +13 -0
- package/dist/components/Searchbox/Searchbox.context.js +11 -0
- package/dist/components/Searchbox/Searchbox.d.ts +16 -12
- package/dist/components/Searchbox/Searchbox.js +25 -29
- package/dist/components/Select/Select.d.ts +18 -5
- package/dist/components/Select/Select.js +8 -9
- package/dist/components/Signpost/Signpost.d.ts +7 -1
- package/dist/components/Signpost/Signpost.js +1 -0
- package/dist/components/SkipNav/SkipNav.d.ts +7 -1
- package/dist/components/SkipNav/SkipNav.js +1 -0
- package/dist/components/Squircle/Squircle.d.ts +7 -1
- package/dist/components/Squircle/Squircle.js +1 -0
- package/dist/components/Tag/Tag.d.ts +7 -1
- package/dist/components/Tag/Tag.js +1 -0
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/TextInput/TextInput.js +5 -6
- package/dist/components/Textarea/Textarea.d.ts +4 -3
- package/dist/components/Textarea/Textarea.js +4 -7
- package/dist/components/ValidationSummary/ValidationSummary.d.ts +26 -4
- package/dist/components/ValidationSummary/ValidationSummary.js +7 -6
- package/dist/components/icons/AccountCircleFilledIcon.d.ts +1 -1
- package/dist/components/icons/AccountCircleIcon.d.ts +1 -1
- package/dist/components/icons/AccountFilledIcon.d.ts +1 -1
- package/dist/components/icons/AccountIcon.d.ts +1 -1
- package/dist/components/icons/AddIcon.d.ts +1 -1
- package/dist/components/icons/AppsFilledIcon.d.ts +1 -1
- package/dist/components/icons/AppsIcon.d.ts +1 -1
- package/dist/components/icons/ArrowDownIcon.d.ts +1 -1
- package/dist/components/icons/ArrowLeftIcon.d.ts +1 -1
- package/dist/components/icons/ArrowRightIcon.d.ts +1 -1
- package/dist/components/icons/ArrowUpIcon.d.ts +1 -1
- package/dist/components/icons/BackspaceFilledIcon.d.ts +1 -1
- package/dist/components/icons/BackspaceIcon.d.ts +1 -1
- package/dist/components/icons/BasketFilledIcon.d.ts +1 -1
- package/dist/components/icons/BasketIcon.d.ts +1 -1
- package/dist/components/icons/BellFilledIcon.d.ts +1 -1
- package/dist/components/icons/BellIcon.d.ts +1 -1
- package/dist/components/icons/BroomIcon.d.ts +1 -1
- package/dist/components/icons/CalendarFilledIcon.d.ts +1 -1
- package/dist/components/icons/CalendarIcon.d.ts +1 -1
- package/dist/components/icons/CashFilledIcon.d.ts +1 -1
- package/dist/components/icons/CashIcon.d.ts +1 -1
- package/dist/components/icons/ChevronDownIcon.d.ts +1 -1
- package/dist/components/icons/ChevronLeftIcon.d.ts +1 -1
- package/dist/components/icons/ChevronRightIcon.d.ts +1 -1
- package/dist/components/icons/ChevronUpIcon.d.ts +1 -1
- package/dist/components/icons/CircleBurgerFilledIcon.d.ts +1 -1
- package/dist/components/icons/CircleBurgerIcon.d.ts +1 -1
- package/dist/components/icons/ClipboardFilledIcon.d.ts +1 -1
- package/dist/components/icons/ClipboardIcon.d.ts +1 -1
- package/dist/components/icons/ClockFilledIcon.d.ts +1 -1
- package/dist/components/icons/ClockIcon.d.ts +1 -1
- package/dist/components/icons/CloseAltFilledIcon.d.ts +1 -1
- package/dist/components/icons/CloseAltIcon.d.ts +1 -1
- package/dist/components/icons/CogIcon.d.ts +1 -1
- package/dist/components/icons/CommunityFilledIcon.d.ts +1 -1
- package/dist/components/icons/CommunityIcon.d.ts +1 -1
- package/dist/components/icons/ComputerIcon.d.ts +1 -1
- package/dist/components/icons/ContactFilledIcon.d.ts +1 -1
- package/dist/components/icons/ContactIcon.d.ts +1 -1
- package/dist/components/icons/ContactlessFilledIcon.d.ts +1 -1
- package/dist/components/icons/ContactlessIcon.d.ts +1 -1
- package/dist/components/icons/CoopLiveIcon.d.ts +1 -1
- package/dist/components/icons/CoopLocationFilledIcon.d.ts +1 -1
- package/dist/components/icons/CoopLogoIcon.d.ts +1 -1
- package/dist/components/icons/CoopMembershipCardFilledIcon.d.ts +1 -1
- package/dist/components/icons/CreditCardFilledIcon.d.ts +1 -1
- package/dist/components/icons/CreditCardIcon.d.ts +1 -1
- package/dist/components/icons/CrossIcon.d.ts +1 -1
- package/dist/components/icons/DocumentIcon.d.ts +1 -1
- package/dist/components/icons/DownloadIcon.d.ts +1 -1
- package/dist/components/icons/EnterStoreIcon.d.ts +1 -1
- package/dist/components/icons/ExitStoreIcon.d.ts +1 -1
- package/dist/components/icons/EyeFilledIcon.d.ts +1 -1
- package/dist/components/icons/EyeIcon.d.ts +1 -1
- package/dist/components/icons/EyeStrikeFilledIcon.d.ts +1 -1
- package/dist/components/icons/EyeStrikeIcon.d.ts +1 -1
- package/dist/components/icons/FeedbackFilledIcon.d.ts +1 -1
- package/dist/components/icons/FeedbackIcon.d.ts +1 -1
- package/dist/components/icons/FilterIcon.d.ts +1 -1
- package/dist/components/icons/GiftCardFilledIcon.d.ts +1 -1
- package/dist/components/icons/GiftCardIcon.d.ts +1 -1
- package/dist/components/icons/GiftFilledIcon.d.ts +1 -1
- package/dist/components/icons/GiftIcon.d.ts +1 -1
- package/dist/components/icons/HelpFilledIcon.d.ts +1 -1
- package/dist/components/icons/HelpIcon.d.ts +1 -1
- package/dist/components/icons/HomeFilledIcon.d.ts +1 -1
- package/dist/components/icons/HomeIcon.d.ts +1 -1
- package/dist/components/icons/HowDoIAssistantIcon.d.ts +1 -1
- package/dist/components/icons/InfoIcon.d.ts +1 -1
- package/dist/components/icons/KebabIcon.d.ts +1 -1
- package/dist/components/icons/LoadingIcon.d.ts +1 -1
- package/dist/components/icons/LocationFilledIcon.d.ts +1 -1
- package/dist/components/icons/LocationIcon.d.ts +1 -1
- package/dist/components/icons/LogoutIcon.d.ts +1 -1
- package/dist/components/icons/MailIcon.d.ts +1 -1
- package/dist/components/icons/MenuIcon.d.ts +1 -1
- package/dist/components/icons/MessageIcon.d.ts +1 -1
- package/dist/components/icons/MinusIcon.d.ts +1 -1
- package/dist/components/icons/NotesFilledIcon.d.ts +1 -1
- package/dist/components/icons/NotesIcon.d.ts +1 -1
- package/dist/components/icons/OpenNewIcon.d.ts +1 -1
- package/dist/components/icons/OwnBagIcon.d.ts +1 -1
- package/dist/components/icons/PadlockIcon.d.ts +1 -1
- package/dist/components/icons/PencilIcon.d.ts +1 -1
- package/dist/components/icons/PhoneIcon.d.ts +1 -1
- package/dist/components/icons/PowerIcon.d.ts +1 -1
- package/dist/components/icons/SaveFilledIcon.d.ts +1 -1
- package/dist/components/icons/SaveIcon.d.ts +1 -1
- package/dist/components/icons/ScooterIcon.d.ts +1 -1
- package/dist/components/icons/SearchFilledIcon.d.ts +1 -1
- package/dist/components/icons/SearchIcon.d.ts +1 -1
- package/dist/components/icons/SendIcon.d.ts +1 -1
- package/dist/components/icons/SpannerIcon.d.ts +1 -1
- package/dist/components/icons/StarFilledIcon.d.ts +1 -1
- package/dist/components/icons/StarIcon.d.ts +1 -1
- package/dist/components/icons/TickAltFilledIcon.d.ts +1 -1
- package/dist/components/icons/TickAltIcon.d.ts +1 -1
- package/dist/components/icons/TickIcon.d.ts +1 -1
- package/dist/components/icons/TruckIcon.d.ts +1 -1
- package/dist/components/icons/UserWipeIcon.d.ts +1 -1
- package/dist/components/icons/VoucherFilledIcon.d.ts +1 -1
- package/dist/components/icons/VoucherIcon.d.ts +1 -1
- package/dist/components/icons/WarningFilledIcon.d.ts +1 -1
- package/dist/components/icons/WarningIcon.d.ts +1 -1
- package/dist/components/icons/WifiIcon.d.ts +1 -1
- package/dist/components/icons/WriteIcon.d.ts +1 -1
- package/dist/hooks/useSlots.d.ts +4 -2
- package/dist/hooks/useSlots.js +33 -7
- package/dist/index.js +10 -10
- package/dist/types/index.d.ts +14 -14
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +9 -7
- package/package.json +12 -11
- package/src/components/AlertBanner/AlertBanner.tsx +5 -2
- package/src/components/Author/Author.tsx +4 -1
- package/src/components/Button/Button.tsx +5 -1
- package/src/components/Card/Card.tsx +8 -6
- package/src/components/Checkbox/Checkbox.tsx +13 -9
- package/src/components/DatePicker/DatePicker.tsx +15 -15
- package/src/components/Expandable/Expandable.tsx +5 -8
- package/src/components/Field/Field.context.ts +29 -0
- package/src/components/Field/Field.tsx +61 -56
- package/src/components/FieldMarkers/Label.tsx +4 -0
- package/src/components/Fieldset/Fieldset.tsx +7 -5
- package/src/components/Flourish/Flourish.tsx +4 -1
- package/src/components/Form/Form.tsx +4 -1
- package/src/components/Image/Image.tsx +4 -1
- package/src/components/Pill/Pill.tsx +4 -2
- package/src/components/Popover/Popover.tsx +7 -5
- package/src/components/Radio/Radio.tsx +12 -9
- package/src/components/RootSVG/RootSVG.tsx +4 -1
- package/src/components/Searchbox/Searchbox.context.tsx +20 -0
- package/src/components/Searchbox/Searchbox.tsx +55 -44
- package/src/components/Select/Select.tsx +11 -11
- package/src/components/Signpost/Signpost.tsx +4 -1
- package/src/components/SkipNav/SkipNav.tsx +4 -1
- package/src/components/Squircle/Squircle.tsx +4 -1
- package/src/components/Tag/Tag.tsx +4 -1
- package/src/components/TextInput/TextInput.tsx +8 -8
- package/src/components/Textarea/Textarea.tsx +7 -8
- package/src/components/ValidationSummary/ValidationSummary.tsx +12 -5
- package/src/hooks/useSlots.ts +37 -9
- package/src/types/index.ts +18 -14
- package/src/utils/index.ts +8 -6
- package/dist/node_modules/merge-refs/dist/index.js +0 -36
package/src/hooks/useSlots.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react"
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { LazyComponent, SlotConfig } from "../types"
|
|
4
4
|
|
|
5
5
|
type Slots<T> = Record<keyof T, React.ReactNode>
|
|
6
6
|
|
|
@@ -8,22 +8,50 @@ export function isKey<T extends object>(x: T, k: PropertyKey): k is keyof T {
|
|
|
8
8
|
return k in x
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
export function isLazy<T extends React.ComponentType<any>>(
|
|
13
|
+
type: unknown
|
|
14
|
+
): type is LazyComponent<T> {
|
|
15
|
+
return typeof type === "object" && type !== null && "_payload" in type && "_init" in type
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function resolveComponentName(child: React.ReactNode): string | null {
|
|
19
|
+
if (child && typeof child === "object" && "type" in child) {
|
|
20
|
+
const type = child.type
|
|
21
|
+
|
|
22
|
+
if (isLazy(type)) {
|
|
23
|
+
try {
|
|
24
|
+
const resolved = type._init(type._payload)
|
|
25
|
+
if ("slot" in resolved) return (resolved.slot as SlotConfig).name
|
|
26
|
+
return resolved.displayName ?? resolved.name ?? null
|
|
27
|
+
} catch {
|
|
28
|
+
// _init throws a Promise if the payload is still pending
|
|
29
|
+
return null
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (typeof type === "function") {
|
|
34
|
+
if ("slot" in type) return (type.slot as SlotConfig).name
|
|
35
|
+
return (type as React.FC).displayName ?? (type as React.FC).name ?? null
|
|
36
|
+
}
|
|
19
37
|
}
|
|
38
|
+
return null
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getSlotName(node: React.ReactNode): string | false {
|
|
42
|
+
const slotName = resolveComponentName(node)
|
|
20
43
|
|
|
44
|
+
if (slotName) {
|
|
45
|
+
return slotName.replaceAll(".", "")
|
|
46
|
+
// return root && !safeName.startsWith(root) ? root + safeName : safeName
|
|
47
|
+
}
|
|
21
48
|
return false
|
|
22
49
|
}
|
|
23
50
|
|
|
24
51
|
export function useSlots<T>(
|
|
25
52
|
componentSlots: Slots<T>,
|
|
26
53
|
children: React.ReactNode,
|
|
54
|
+
|
|
27
55
|
options?: { collect?: string[] }
|
|
28
56
|
): Slots<T> {
|
|
29
57
|
return React.Children.toArray(children).reduce(
|
package/src/types/index.ts
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
export type StandardSizes = "sm" | "md" | "lg"
|
|
2
2
|
|
|
3
|
-
export type FormFieldError = { message?: string; type?: string } | boolean | null | undefined
|
|
3
|
+
// export type FormFieldError = { message?: string; type?: string } | boolean | null | undefined
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
export interface SlotConfig {
|
|
6
|
+
field?: boolean
|
|
7
|
+
inline?: boolean
|
|
8
|
+
name: string
|
|
9
|
+
suffix?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface LazyPayload<T> {
|
|
13
|
+
default: T
|
|
14
|
+
}
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
export interface LazyComponent<T extends React.ComponentType<any>> {
|
|
18
|
+
_init: (payload: unknown) => T
|
|
19
|
+
_payload: Promise<LazyPayload<T>> | LazyPayload<T>
|
|
20
|
+
$$typeof: typeof REACT_LAZY_TYPE
|
|
19
21
|
}
|
|
22
|
+
|
|
23
|
+
export const REACT_LAZY_TYPE = Symbol.for("react.lazy")
|
package/src/utils/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isValidElement } from "react"
|
|
2
|
+
|
|
1
3
|
export const bgPropToClass = (color: string, userClasses?: string) =>
|
|
2
4
|
userClasses?.includes("bg-") ? "" : `bg-${color}`
|
|
3
5
|
|
|
@@ -11,11 +13,11 @@ export const hasUserBorder = (userClasses?: string) => {
|
|
|
11
13
|
|
|
12
14
|
export const bgClassToColor = (userClasses: string) => {
|
|
13
15
|
return /bg-([^\s]+)/.exec(userClasses)?.[1] ?? null
|
|
16
|
+
}
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
// )
|
|
18
|
+
export function getSlotProp<R = unknown>(slot: React.ReactNode, prop: string): R | undefined {
|
|
19
|
+
if (isValidElement(slot) && prop in (slot.props as object)) {
|
|
20
|
+
return (slot.props as Record<string, unknown>)[prop] as R
|
|
21
|
+
}
|
|
22
|
+
return undefined
|
|
21
23
|
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A function that merges React refs into one.
|
|
3
|
-
* Supports both functions and ref objects created using createRef() and useRef().
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* ```tsx
|
|
7
|
-
* <div ref={mergeRefs(ref1, ref2, ref3)} />
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* @param {(React.Ref<T> | undefined)[]} inputRefs Array of refs
|
|
11
|
-
* @returns {React.Ref<T> | React.RefCallback<T>} Merged refs
|
|
12
|
-
*/
|
|
13
|
-
function mergeRefs() {
|
|
14
|
-
var inputRefs = [];
|
|
15
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
16
|
-
inputRefs[_i] = arguments[_i];
|
|
17
|
-
}
|
|
18
|
-
var filteredInputRefs = inputRefs.filter(Boolean);
|
|
19
|
-
if (filteredInputRefs.length <= 1) {
|
|
20
|
-
var firstRef = filteredInputRefs[0];
|
|
21
|
-
return firstRef || null;
|
|
22
|
-
}
|
|
23
|
-
return function mergedRefs(ref) {
|
|
24
|
-
for (var _i = 0, filteredInputRefs_1 = filteredInputRefs; _i < filteredInputRefs_1.length; _i++) {
|
|
25
|
-
var inputRef = filteredInputRefs_1[_i];
|
|
26
|
-
if (typeof inputRef === 'function') {
|
|
27
|
-
inputRef(ref);
|
|
28
|
-
}
|
|
29
|
-
else if (inputRef) {
|
|
30
|
-
inputRef.current = ref;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export { mergeRefs as default };
|