@flipdish/ui-library 0.9.2 → 0.11.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/components/atoms/Button/index.cjs +4 -1
- package/dist/components/atoms/Button/index.cjs.map +1 -1
- package/dist/components/atoms/Button/index.d.ts +2 -0
- package/dist/components/atoms/Button/index.d.ts.map +1 -1
- package/dist/components/atoms/Button/index.js +4 -1
- package/dist/components/atoms/Button/index.js.map +1 -1
- package/dist/components/atoms/Checkbox/index.cjs +4 -2
- package/dist/components/atoms/Checkbox/index.cjs.map +1 -1
- package/dist/components/atoms/Checkbox/index.d.ts +3 -1
- package/dist/components/atoms/Checkbox/index.d.ts.map +1 -1
- package/dist/components/atoms/Checkbox/index.js +4 -2
- package/dist/components/atoms/Checkbox/index.js.map +1 -1
- package/dist/components/atoms/Input/index.cjs +7 -4
- package/dist/components/atoms/Input/index.cjs.map +1 -1
- package/dist/components/atoms/Input/index.d.ts +6 -2
- package/dist/components/atoms/Input/index.d.ts.map +1 -1
- package/dist/components/atoms/Input/index.js +7 -4
- package/dist/components/atoms/Input/index.js.map +1 -1
- package/dist/components/atoms/RadioButton/index.cjs +8 -4
- package/dist/components/atoms/RadioButton/index.cjs.map +1 -1
- package/dist/components/atoms/RadioButton/index.d.ts +8 -3
- package/dist/components/atoms/RadioButton/index.d.ts.map +1 -1
- package/dist/components/atoms/RadioButton/index.js +8 -4
- package/dist/components/atoms/RadioButton/index.js.map +1 -1
- package/dist/components/atoms/Toggle/index.cjs +4 -2
- package/dist/components/atoms/Toggle/index.cjs.map +1 -1
- package/dist/components/atoms/Toggle/index.d.ts +3 -1
- package/dist/components/atoms/Toggle/index.d.ts.map +1 -1
- package/dist/components/atoms/Toggle/index.js +4 -2
- package/dist/components/atoms/Toggle/index.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.cjs +3 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.cjs.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.js +3 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-account-item.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs +9 -5
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts +5 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js +9 -5
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.cjs +4 -2
- package/dist/components/molecules/Breadcrumbs/index.cjs.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.d.ts +8 -2
- package/dist/components/molecules/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.js +4 -2
- package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
- package/dist/components/molecules/Pagination/components/pagination-base.cjs +11 -4
- package/dist/components/molecules/Pagination/components/pagination-base.cjs.map +1 -1
- package/dist/components/molecules/Pagination/components/pagination-base.d.ts +8 -1
- package/dist/components/molecules/Pagination/components/pagination-base.d.ts.map +1 -1
- package/dist/components/molecules/Pagination/components/pagination-base.js +11 -4
- package/dist/components/molecules/Pagination/components/pagination-base.js.map +1 -1
- package/dist/components/molecules/Pagination/index.cjs +1 -1
- package/dist/components/molecules/Pagination/index.cjs.map +1 -1
- package/dist/components/molecules/Pagination/index.js +1 -1
- package/dist/components/molecules/Pagination/index.js.map +1 -1
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.cjs +16 -16
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.cjs.map +1 -1
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.d.ts +8 -8
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.d.ts.map +1 -1
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.js +16 -16
- package/dist/components/molecules/ProgressSteps/components/progress-step-base.js.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.cjs +19 -12
- package/dist/components/molecules/ProgressSteps/index.cjs.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.d.ts +3 -3
- package/dist/components/molecules/ProgressSteps/index.d.ts.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.js +19 -12
- package/dist/components/molecules/ProgressSteps/index.js.map +1 -1
- package/dist/components/molecules/ProgressSteps/progressSteps.types.d.ts +10 -0
- package/dist/components/molecules/ProgressSteps/progressSteps.types.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-avatar.js.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-checkbox.js.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-card.js.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-icon-simple.js.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-payment-icon.js.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.cjs +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.cjs.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.d.ts +3 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.d.ts.map +1 -1
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.js +4 -2
- package/dist/components/molecules/RadioGroup/components/radio-group-radio-button.js.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.cjs +39 -4
- package/dist/components/molecules/Select/components/multi-select.cjs.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.d.ts +3 -1
- package/dist/components/molecules/Select/components/multi-select.d.ts.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.js +40 -5
- package/dist/components/molecules/Select/components/multi-select.js.map +1 -1
- package/dist/components/molecules/Select/components/select-item.cjs +6 -3
- package/dist/components/molecules/Select/components/select-item.cjs.map +1 -1
- package/dist/components/molecules/Select/components/select-item.d.ts +3 -1
- package/dist/components/molecules/Select/components/select-item.d.ts.map +1 -1
- package/dist/components/molecules/Select/components/select-item.js +6 -3
- package/dist/components/molecules/Select/components/select-item.js.map +1 -1
- package/dist/components/molecules/Select/components/select-shared.cjs.map +1 -1
- package/dist/components/molecules/Select/components/select-shared.d.ts +6 -0
- package/dist/components/molecules/Select/components/select-shared.d.ts.map +1 -1
- package/dist/components/molecules/Select/components/select-shared.js.map +1 -1
- package/dist/components/molecules/Select/index.cjs +8 -4
- package/dist/components/molecules/Select/index.cjs.map +1 -1
- package/dist/components/molecules/Select/index.d.ts +9 -1
- package/dist/components/molecules/Select/index.d.ts.map +1 -1
- package/dist/components/molecules/Select/index.js +7 -4
- package/dist/components/molecules/Select/index.js.map +1 -1
- package/dist/components/molecules/Tabs/index.cjs +24 -8
- package/dist/components/molecules/Tabs/index.cjs.map +1 -1
- package/dist/components/molecules/Tabs/index.d.ts +17 -7
- package/dist/components/molecules/Tabs/index.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/index.js +24 -8
- package/dist/components/molecules/Tabs/index.js.map +1 -1
- package/dist/components/organisms/ActivityFeed/index.cjs +8 -2
- package/dist/components/organisms/ActivityFeed/index.cjs.map +1 -1
- package/dist/components/organisms/ActivityFeed/index.d.ts +3 -1
- package/dist/components/organisms/ActivityFeed/index.d.ts.map +1 -1
- package/dist/components/organisms/ActivityFeed/index.js +8 -2
- package/dist/components/organisms/ActivityFeed/index.js.map +1 -1
- package/dist/components/organisms/CommandMenu/components/command-menu-item.cjs +5 -1
- package/dist/components/organisms/CommandMenu/components/command-menu-item.cjs.map +1 -1
- package/dist/components/organisms/CommandMenu/components/command-menu-item.d.ts +2 -0
- package/dist/components/organisms/CommandMenu/components/command-menu-item.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/components/command-menu-item.js +5 -1
- package/dist/components/organisms/CommandMenu/components/command-menu-item.js.map +1 -1
- package/dist/components/organisms/CommandMenu/index.cjs +6 -4
- package/dist/components/organisms/CommandMenu/index.cjs.map +1 -1
- package/dist/components/organisms/CommandMenu/index.d.ts +8 -2
- package/dist/components/organisms/CommandMenu/index.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/index.js +6 -4
- package/dist/components/organisms/CommandMenu/index.js.map +1 -1
- package/dist/components/organisms/DatePicker/components/date-range-picker.d.ts +1 -2
- package/dist/components/organisms/DatePicker/components/date-range-picker.d.ts.map +1 -1
- package/dist/components/organisms/DatePicker/components/range-calendar.d.ts +1 -1
- package/dist/components/organisms/DatePicker/components/range-calendar.d.ts.map +1 -1
- package/dist/components/organisms/DatePicker/index.d.ts +2 -2
- package/dist/components/organisms/DatePicker/index.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs +3 -2
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.d.ts +6 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.js +3 -2
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs +9 -6
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts +10 -2
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js +9 -6
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-button.cjs +2 -2
- package/dist/components/organisms/HeaderNavigation/components/nav-button.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-button.d.ts +3 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-button.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-button.js +2 -2
- package/dist/components/organisms/HeaderNavigation/components/nav-button.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs +4 -4
- package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.d.ts +3 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.js +4 -4
- package/dist/components/organisms/HeaderNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs +9 -3
- package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.d.ts +3 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.js +9 -3
- package/dist/components/organisms/HeaderNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/headerNavigation.types.d.ts +17 -8
- package/dist/components/organisms/HeaderNavigation/headerNavigation.types.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.cjs +9 -2
- package/dist/components/organisms/HeaderNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.d.ts +10 -1
- package/dist/components/organisms/HeaderNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.js +10 -3
- package/dist/components/organisms/HeaderNavigation/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts +8 -2
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +15 -5
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +12 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js +15 -5
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts +3 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +4 -4
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts +3 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js +4 -4
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs +9 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.d.ts +3 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js +9 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts +3 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.cjs +10 -6
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts +7 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +11 -7
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/sidebarNavigation.types.d.ts +21 -8
- package/dist/components/organisms/SidebarNavigation/sidebarNavigation.types.d.ts.map +1 -1
- package/dist/components/organisms/Table/index.cjs +13 -8
- package/dist/components/organisms/Table/index.cjs.map +1 -1
- package/dist/components/organisms/Table/index.d.ts +17 -3
- package/dist/components/organisms/Table/index.d.ts.map +1 -1
- package/dist/components/organisms/Table/index.js +13 -8
- package/dist/components/organisms/Table/index.js.map +1 -1
- package/dist/utilities/testIdUtils/index.cjs +70 -0
- package/dist/utilities/testIdUtils/index.cjs.map +1 -0
- package/dist/utilities/testIdUtils/index.d.ts +57 -0
- package/dist/utilities/testIdUtils/index.d.ts.map +1 -0
- package/dist/utilities/testIdUtils/index.js +58 -0
- package/dist/utilities/testIdUtils/index.js.map +1 -0
- package/package.json +1 -1
- package/dist/components/molecules/MultiSelect/index.cjs +0 -8
- package/dist/components/molecules/MultiSelect/index.cjs.map +0 -1
- package/dist/components/molecules/MultiSelect/index.d.ts +0 -8
- package/dist/components/molecules/MultiSelect/index.d.ts.map +0 -1
- package/dist/components/molecules/MultiSelect/index.js +0 -2
- package/dist/components/molecules/MultiSelect/index.js.map +0 -1
|
@@ -16,9 +16,14 @@ interface TableCardHeaderProps {
|
|
|
16
16
|
}
|
|
17
17
|
interface TableRootProps extends AriaTableProps, Omit<ComponentPropsWithRef<'table'>, 'className' | 'slot' | 'style'> {
|
|
18
18
|
size?: 'sm' | 'md';
|
|
19
|
+
/**
|
|
20
|
+
* Overrides the root `data-testid`. Defaults to `fd-table`. Rows and columns derive
|
|
21
|
+
* structural testids from this prefix (e.g. `<root>--row-42`, `<root>--col-name`).
|
|
22
|
+
*/
|
|
23
|
+
'data-testid'?: string;
|
|
19
24
|
}
|
|
20
25
|
declare const TableRoot: {
|
|
21
|
-
({ className, size, ...props }: TableRootProps): import("react").JSX.Element;
|
|
26
|
+
({ className, size, "data-testid": dataTestId, ...props }: TableRootProps): import("react").JSX.Element;
|
|
22
27
|
displayName: string;
|
|
23
28
|
};
|
|
24
29
|
interface TableHeaderProps<T extends object> extends AriaTableHeaderProps<T>, Omit<ComponentPropsWithRef<'thead'>, 'children' | 'className' | 'slot' | 'style'> {
|
|
@@ -32,22 +37,31 @@ declare const TableHeader: {
|
|
|
32
37
|
interface TableHeadProps extends AriaColumnProps, Omit<ThHTMLAttributes<HTMLTableCellElement>, 'children' | 'className' | 'style' | 'id'> {
|
|
33
38
|
label?: string;
|
|
34
39
|
tooltip?: string;
|
|
40
|
+
/** Overrides the derived `data-testid` for the column (defaults to `<root>--col-<id>`). */
|
|
41
|
+
'data-testid'?: string;
|
|
35
42
|
}
|
|
36
43
|
declare const TableHead: {
|
|
37
|
-
({ className, tooltip, label, children, ...props }: TableHeadProps): import("react").JSX.Element;
|
|
44
|
+
({ className, tooltip, label, children, "data-testid": dataTestId, ...props }: TableHeadProps): import("react").JSX.Element;
|
|
38
45
|
displayName: string;
|
|
39
46
|
};
|
|
40
47
|
interface TableRowProps<T extends object> extends AriaRowProps<T>, Omit<ComponentPropsWithRef<'tr'>, 'children' | 'className' | 'onClick' | 'slot' | 'style' | 'id'> {
|
|
41
48
|
highlightSelectedRow?: boolean;
|
|
42
49
|
size?: 'sm' | 'md';
|
|
50
|
+
/** Overrides the derived `data-testid` for the row (defaults to `<root>--row-<id>`). */
|
|
51
|
+
'data-testid'?: string;
|
|
43
52
|
}
|
|
44
53
|
declare const TableRow: {
|
|
45
|
-
<T extends object>({ columns, children, className, highlightSelectedRow, size: sizeProp, ...props }: TableRowProps<T>): import("react").JSX.Element;
|
|
54
|
+
<T extends object>({ columns, children, className, highlightSelectedRow, size: sizeProp, "data-testid": dataTestId, ...props }: TableRowProps<T>): import("react").JSX.Element;
|
|
46
55
|
displayName: string;
|
|
47
56
|
};
|
|
48
57
|
interface TableCellProps extends AriaCellProps, Omit<TdHTMLAttributes<HTMLTableCellElement>, 'children' | 'className' | 'style' | 'id'> {
|
|
49
58
|
ref?: Ref<HTMLTableCellElement>;
|
|
50
59
|
size?: 'sm' | 'md';
|
|
60
|
+
/**
|
|
61
|
+
* Optional `data-testid` for the cell. Cells are intentionally not defaulted (to avoid
|
|
62
|
+
* high-cardinality noise); pass one explicitly when a specific cell needs targeting.
|
|
63
|
+
*/
|
|
64
|
+
'data-testid'?: string;
|
|
51
65
|
}
|
|
52
66
|
declare const TableCell: {
|
|
53
67
|
({ className, children, size: sizeProp, ...props }: TableCellProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Table/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Table/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Checkbox } from '@flipdish/ui-library/components/atoms/Checkbox';
|
|
|
5
5
|
import { Tooltip, TooltipTrigger } from '@flipdish/ui-library/components/atoms/Tooltip';
|
|
6
6
|
import { Dropdown } from '@flipdish/ui-library/components/molecules/Dropdown';
|
|
7
7
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
8
|
+
import { useResolvedTestId, joinTestId, slugifyTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
8
9
|
import { createContext, useContext, isValidElement } from 'react';
|
|
9
10
|
import { Table as Table$1, TableBody, useTableOptions, TableHeader as TableHeader$1, Column, Collection, Group, Row, Cell } from 'react-aria-components';
|
|
10
11
|
|
|
@@ -17,9 +18,9 @@ const TableCardHeader = ({ title, badge, description, contentTrailing, className
|
|
|
17
18
|
const { size } = useContext(TableContext);
|
|
18
19
|
return (jsxs("div", { className: cx('relative flex flex-col items-start gap-4 border-b border-secondary bg-primary px-4 md:flex-row', size === 'sm' ? 'py-4 md:px-5' : 'py-5 md:px-6', className), children: [jsxs("div", { className: "flex flex-1 flex-col gap-0.5", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("h2", { className: "text-md font-semibold text-primary", children: title }), badge ? (isValidElement(badge) ? (badge) : (jsx(Badge, { color: "gray", size: "sm", type: "modern", children: badge }))) : null] }), description && jsx("p", { className: "text-sm text-tertiary", children: description })] }), contentTrailing] }));
|
|
19
20
|
};
|
|
20
|
-
const TableRoot = ({ className, size = 'md', ...props }) => {
|
|
21
|
-
const
|
|
22
|
-
return (jsx(TableContext.Provider, { value: { size:
|
|
21
|
+
const TableRoot = ({ className, size = 'md', 'data-testid': dataTestId, ...props }) => {
|
|
22
|
+
const rootTestId = useResolvedTestId({ testId: dataTestId, segment: 'table', rootName: 'table' });
|
|
23
|
+
return (jsx(TableContext.Provider, { value: { size, testIdPrefix: rootTestId }, children: jsx("div", { className: "overflow-x-auto", children: jsx(Table$1, { "data-testid": rootTestId, className: (state) => cx('w-full overflow-x-hidden', typeof className === 'function' ? className(state) : className), ...props }) }) }));
|
|
23
24
|
};
|
|
24
25
|
TableRoot.displayName = 'Table';
|
|
25
26
|
const TableHeader = ({ columns, children, bordered = true, className, size: sizeProp, ...props }) => {
|
|
@@ -32,19 +33,23 @@ const TableHeader = ({ columns, children, bordered = true, className, size: size
|
|
|
32
33
|
'[&>tr>th]:after:pointer-events-none [&>tr>th]:after:absolute [&>tr>th]:after:inset-x-0 [&>tr>th]:after:bottom-0 [&>tr>th]:after:h-px [&>tr>th]:after:bg-border-secondary [&>tr>th]:focus-visible:after:bg-transparent', typeof className === 'function' ? className(state) : className), children: [selectionBehavior === 'toggle' && (jsx(Column, { className: cx('relative py-2 pr-0 pl-4', size === 'sm' ? 'w-9 md:pl-5' : 'w-11 md:pl-6'), children: selectionMode === 'multiple' && (jsx("div", { className: "flex items-start", children: jsx(Checkbox, { slot: "selection", size: "md" }) })) })), jsx(Collection, { items: columns, children: children })] }));
|
|
33
34
|
};
|
|
34
35
|
TableHeader.displayName = 'TableHeader';
|
|
35
|
-
const TableHead = ({ className, tooltip, label, children, ...props }) => {
|
|
36
|
+
const TableHead = ({ className, tooltip, label, children, 'data-testid': dataTestId, ...props }) => {
|
|
36
37
|
const { selectionBehavior } = useTableOptions();
|
|
37
|
-
|
|
38
|
+
const { testIdPrefix } = useContext(TableContext);
|
|
39
|
+
const colTestId = dataTestId ?? (testIdPrefix && props.id !== undefined ? joinTestId(testIdPrefix, `col-${slugifyTestId(String(props.id))}`) : undefined);
|
|
40
|
+
return (jsx(Column, { ...props, "data-testid": colTestId, className: (state) => cx('relative p-0 px-6 py-2 outline-hidden focus-visible:z-1 focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-bg-primary focus-visible:ring-inset', selectionBehavior === 'toggle' && 'nth-2:pl-3', state.allowsSorting && 'cursor-pointer', typeof className === 'function' ? className(state) : className), children: (state) => (jsxs(Group, { className: "flex items-center gap-1", children: [jsxs("div", { className: "flex items-center gap-1", children: [label && jsx("span", { className: "text-xs font-semibold whitespace-nowrap text-quaternary", children: label }), typeof children === 'function' ? children(state) : children] }), tooltip && (jsx(Tooltip, { title: tooltip, placement: "top", children: jsx(TooltipTrigger, { className: "cursor-pointer text-fg-quaternary transition duration-100 ease-linear hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover", children: jsx(HelpCircle, { className: "size-4" }) }) })), state.allowsSorting &&
|
|
38
41
|
(state.sortDirection ? (jsx(ArrowDown, { className: cx('size-3 stroke-[3px] text-fg-quaternary', state.sortDirection === 'ascending' && 'rotate-180') })) : (jsx(ChevronSelectorVertical, { size: 12, strokeWidth: 3, className: "text-fg-quaternary" })))] })) }));
|
|
39
42
|
};
|
|
40
43
|
TableHead.displayName = 'TableHead';
|
|
41
|
-
const TableRow = ({ columns, children, className, highlightSelectedRow = true, size: sizeProp, ...props }) => {
|
|
44
|
+
const TableRow = ({ columns, children, className, highlightSelectedRow = true, size: sizeProp, 'data-testid': dataTestId, ...props }) => {
|
|
42
45
|
const context = useContext(TableContext);
|
|
43
46
|
const { selectionBehavior } = useTableOptions();
|
|
44
47
|
const size = sizeProp ?? context.size;
|
|
45
|
-
|
|
48
|
+
const rowTestId = dataTestId ??
|
|
49
|
+
(context.testIdPrefix && props.id !== undefined ? joinTestId(context.testIdPrefix, `row-${slugifyTestId(String(props.id))}`) : undefined);
|
|
50
|
+
return (jsxs(Row, { ...props, "data-testid": rowTestId, className: (state) => cx('relative outline-focus-ring transition-colors after:pointer-events-none hover:bg-secondary focus-visible:outline-2 focus-visible:-outline-offset-2', size === 'sm' ? 'h-14' : 'h-18', highlightSelectedRow && 'selected:bg-secondary',
|
|
46
51
|
// Row border—using an "after" pseudo-element to avoid the border taking up space.
|
|
47
|
-
'[&>td]:after:absolute [&>td]:after:inset-x-0 [&>td]:after:bottom-0 [&>td]:after:h-px [&>td]:after:w-full [&>td]:after:bg-border-secondary last:[&>td]:after:hidden [&>td]:focus-visible:after:opacity-0 focus-visible:[&>td]:after:opacity-0', typeof className === 'function' ? className(state) : className), children: [selectionBehavior === 'toggle' && (jsx(Cell, { className: cx('relative py-2 pr-0 pl-4', size === 'sm' ? 'md:pl-5' : 'md:pl-6'), children: jsx("div", { className: "flex items-end", children: jsx(Checkbox, { slot: "selection", size: "md" }) }) })), jsx(Collection, { items: columns, children: children })] }));
|
|
52
|
+
'[&>td]:after:absolute [&>td]:after:inset-x-0 [&>td]:after:bottom-0 [&>td]:after:h-px [&>td]:after:w-full [&>td]:after:bg-border-secondary last:[&>td]:after:hidden [&>td]:focus-visible:after:opacity-0 focus-visible:[&>td]:after:opacity-0', typeof className === 'function' ? className(state) : className), children: [selectionBehavior === 'toggle' && (jsx(Cell, { className: cx('relative py-2 pr-0 pl-4', size === 'sm' ? 'md:pl-5' : 'md:pl-6'), children: jsx("div", { className: "flex items-end", children: jsx(Checkbox, { slot: "selection", size: "md", "data-testid": rowTestId ? joinTestId(rowTestId, 'selection') : undefined }) }) })), jsx(Collection, { items: columns, children: children })] }));
|
|
48
53
|
};
|
|
49
54
|
TableRow.displayName = 'TableRow';
|
|
50
55
|
const TableCell = ({ className, children, size: sizeProp, ...props }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/Table/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","AriaTable","AriaTableHeader","AriaColumn","AriaCollection","AriaGroup","AriaRow","AriaCell","AriaTableBody"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/Table/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","AriaTable","AriaTableHeader","AriaColumn","AriaCollection","AriaGroup","AriaRow","AriaCell","AriaTableBody"],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Test-id convention for `@flipdish/ui-library`.
|
|
7
|
+
*
|
|
8
|
+
* Every component exposes an overridable `data-testid`. When omitted, a default
|
|
9
|
+
* is derived so automated tests always have a stable hook:
|
|
10
|
+
*
|
|
11
|
+
* - Root components default to `fd-<kebab-name>` (e.g. `fd-sidebar-navigation`).
|
|
12
|
+
* - Nested components inherit the ancestor's *resolved* testid as their prefix
|
|
13
|
+
* and append `--<segment>`, so the `fd-` prefix appears exactly once at the
|
|
14
|
+
* front: `fd-sidebar-navigation--nav-item-orders`.
|
|
15
|
+
* - A consumer-provided `data-testid` always wins and re-roots the prefix for
|
|
16
|
+
* everything beneath it.
|
|
17
|
+
*
|
|
18
|
+
* Pure React (no DOM / react-aria dependency), so it is safe to import from any
|
|
19
|
+
* layer. Consumed as `@flipdish/ui-library/utilities/testIdUtils`.
|
|
20
|
+
*/
|
|
21
|
+
/** Namespace prepended to every root-level testid. */
|
|
22
|
+
const TEST_ID_PREFIX = 'fd';
|
|
23
|
+
/** Separator placed between hierarchy levels (within a segment, use single `-`). */
|
|
24
|
+
const TEST_ID_SEPARATOR = '--';
|
|
25
|
+
/** Convert an arbitrary string into a kebab-case, testid-safe segment. */
|
|
26
|
+
const slugifyTestId = (value) => value
|
|
27
|
+
.toLowerCase()
|
|
28
|
+
.trim()
|
|
29
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
30
|
+
.replace(/^-+|-+$/g, '');
|
|
31
|
+
/** Build a root-level testid, e.g. `rootTestId('sidebar-navigation')` -> `fd-sidebar-navigation`. */
|
|
32
|
+
const rootTestId = (kebabName) => `${TEST_ID_PREFIX}-${kebabName}`;
|
|
33
|
+
/** Append a child segment to a parent testid, e.g. `joinTestId('fd-x', 'nav-item-orders')` -> `fd-x--nav-item-orders`. */
|
|
34
|
+
const joinTestId = (prefix, segment) => `${prefix}${TEST_ID_SEPARATOR}${segment}`;
|
|
35
|
+
/** Return the override when provided, otherwise the fallback (explicit-child case). */
|
|
36
|
+
const resolveTestId = (override, fallback) => override ?? fallback;
|
|
37
|
+
/**
|
|
38
|
+
* Spread helper for the resolved testid. Returns `{ 'data-testid': value }` when
|
|
39
|
+
* a value is present, otherwise an empty object. Centralising this keeps the
|
|
40
|
+
* emitted attribute name in one place (a React Native sibling can map it to
|
|
41
|
+
* `testID` in a follow-up without touching call sites).
|
|
42
|
+
*/
|
|
43
|
+
const testIdProps = (testId) => (testId ? { 'data-testid': testId } : {});
|
|
44
|
+
/** Context carrying the current resolved testid, used as the prefix for descendant components. */
|
|
45
|
+
const TestIdContext = React.createContext(undefined);
|
|
46
|
+
/** Provides a resolved testid as the prefix for descendant library components. */
|
|
47
|
+
const TestIdProvider = TestIdContext.Provider;
|
|
48
|
+
/** Read the testid prefix contributed by an ancestor component (`undefined` at the root). */
|
|
49
|
+
const useTestIdPrefix = () => React.useContext(TestIdContext);
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a component's testid: an explicit override wins; otherwise derive
|
|
52
|
+
* `<ancestorPrefix>--<segment>` when nested, or `fd-<rootName>` at the root.
|
|
53
|
+
*/
|
|
54
|
+
const useResolvedTestId = ({ testId, segment, rootName }) => {
|
|
55
|
+
const prefix = useTestIdPrefix();
|
|
56
|
+
return testId ?? (prefix ? joinTestId(prefix, segment) : rootTestId(rootName));
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
exports.TEST_ID_PREFIX = TEST_ID_PREFIX;
|
|
60
|
+
exports.TEST_ID_SEPARATOR = TEST_ID_SEPARATOR;
|
|
61
|
+
exports.TestIdContext = TestIdContext;
|
|
62
|
+
exports.TestIdProvider = TestIdProvider;
|
|
63
|
+
exports.joinTestId = joinTestId;
|
|
64
|
+
exports.resolveTestId = resolveTestId;
|
|
65
|
+
exports.rootTestId = rootTestId;
|
|
66
|
+
exports.slugifyTestId = slugifyTestId;
|
|
67
|
+
exports.testIdProps = testIdProps;
|
|
68
|
+
exports.useResolvedTestId = useResolvedTestId;
|
|
69
|
+
exports.useTestIdPrefix = useTestIdPrefix;
|
|
70
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/utilities/testIdUtils/index.ts"],"sourcesContent":[null],"names":["createContext","useContext"],"mappings":";;;;AAIA;;;;;;;;;;;;;;;AAeG;AAEH;AACO,MAAM,cAAc,GAAG;AAE9B;AACO,MAAM,iBAAiB,GAAG;AAEjC;MACa,aAAa,GAAG,CAAC,KAAa,KACzC;AACG,KAAA,WAAW;AACX,KAAA,IAAI;AACJ,KAAA,OAAO,CAAC,aAAa,EAAE,GAAG;AAC1B,KAAA,OAAO,CAAC,UAAU,EAAE,EAAE;AAE3B;AACO,MAAM,UAAU,GAAG,CAAC,SAAiB,KAAa,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS;AAEvF;AACO,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAe,KAAa,GAAG,MAAM,CAAA,EAAG,iBAAiB,CAAA,EAAG,OAAO;AAE9G;AACO,MAAM,aAAa,GAAG,CAAC,QAA4B,EAAE,QAAgB,KAAa,QAAQ,IAAI;AAErG;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,MAA0B,MAAkC,MAAM,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE;AAE/H;MACa,aAAa,GAAGA,mBAAa,CAAqB,SAAS;AAExE;AACO,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C;AACO,MAAM,eAAe,GAAG,MAA0BC,gBAAU,CAAC,aAAa;AAWjF;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAA4B,KAAY;AACnG,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE;IAChC,OAAO,MAAM,KAAK,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChF;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-id convention for `@flipdish/ui-library`.
|
|
3
|
+
*
|
|
4
|
+
* Every component exposes an overridable `data-testid`. When omitted, a default
|
|
5
|
+
* is derived so automated tests always have a stable hook:
|
|
6
|
+
*
|
|
7
|
+
* - Root components default to `fd-<kebab-name>` (e.g. `fd-sidebar-navigation`).
|
|
8
|
+
* - Nested components inherit the ancestor's *resolved* testid as their prefix
|
|
9
|
+
* and append `--<segment>`, so the `fd-` prefix appears exactly once at the
|
|
10
|
+
* front: `fd-sidebar-navigation--nav-item-orders`.
|
|
11
|
+
* - A consumer-provided `data-testid` always wins and re-roots the prefix for
|
|
12
|
+
* everything beneath it.
|
|
13
|
+
*
|
|
14
|
+
* Pure React (no DOM / react-aria dependency), so it is safe to import from any
|
|
15
|
+
* layer. Consumed as `@flipdish/ui-library/utilities/testIdUtils`.
|
|
16
|
+
*/
|
|
17
|
+
/** Namespace prepended to every root-level testid. */
|
|
18
|
+
export declare const TEST_ID_PREFIX = "fd";
|
|
19
|
+
/** Separator placed between hierarchy levels (within a segment, use single `-`). */
|
|
20
|
+
export declare const TEST_ID_SEPARATOR = "--";
|
|
21
|
+
/** Convert an arbitrary string into a kebab-case, testid-safe segment. */
|
|
22
|
+
export declare const slugifyTestId: (value: string) => string;
|
|
23
|
+
/** Build a root-level testid, e.g. `rootTestId('sidebar-navigation')` -> `fd-sidebar-navigation`. */
|
|
24
|
+
export declare const rootTestId: (kebabName: string) => string;
|
|
25
|
+
/** Append a child segment to a parent testid, e.g. `joinTestId('fd-x', 'nav-item-orders')` -> `fd-x--nav-item-orders`. */
|
|
26
|
+
export declare const joinTestId: (prefix: string, segment: string) => string;
|
|
27
|
+
/** Return the override when provided, otherwise the fallback (explicit-child case). */
|
|
28
|
+
export declare const resolveTestId: (override: string | undefined, fallback: string) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Spread helper for the resolved testid. Returns `{ 'data-testid': value }` when
|
|
31
|
+
* a value is present, otherwise an empty object. Centralising this keeps the
|
|
32
|
+
* emitted attribute name in one place (a React Native sibling can map it to
|
|
33
|
+
* `testID` in a follow-up without touching call sites).
|
|
34
|
+
*/
|
|
35
|
+
export declare const testIdProps: (testId: string | undefined) => {
|
|
36
|
+
"data-testid"?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Context carrying the current resolved testid, used as the prefix for descendant components. */
|
|
39
|
+
export declare const TestIdContext: import("react").Context<string | undefined>;
|
|
40
|
+
/** Provides a resolved testid as the prefix for descendant library components. */
|
|
41
|
+
export declare const TestIdProvider: import("react").Provider<string | undefined>;
|
|
42
|
+
/** Read the testid prefix contributed by an ancestor component (`undefined` at the root). */
|
|
43
|
+
export declare const useTestIdPrefix: () => string | undefined;
|
|
44
|
+
export interface UseResolvedTestIdOptions {
|
|
45
|
+
/** Consumer-provided override; wins over any derived value. */
|
|
46
|
+
testId?: string;
|
|
47
|
+
/** Segment appended to the inherited prefix when nested. */
|
|
48
|
+
segment: string;
|
|
49
|
+
/** Kebab component name used to build the root default when not nested. */
|
|
50
|
+
rootName: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a component's testid: an explicit override wins; otherwise derive
|
|
54
|
+
* `<ancestorPrefix>--<segment>` when nested, or `fd-<rootName>` at the root.
|
|
55
|
+
*/
|
|
56
|
+
export declare const useResolvedTestId: ({ testId, segment, rootName }: UseResolvedTestIdOptions) => string;
|
|
57
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/testIdUtils/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,sDAAsD;AACtD,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,0EAA0E;AAC1E,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAKlB,CAAC;AAE7B,qGAAqG;AACrG,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,KAAG,MAA0C,CAAC;AAE1F,0HAA0H;AAC1H,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAAmD,CAAC;AAEjH,uFAAuF;AACvF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,UAAU,MAAM,KAAG,MAA8B,CAAC;AAE9G;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,GAAG,SAAS,KAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAA+C,CAAC;AAEjI,kGAAkG;AAClG,eAAO,MAAM,aAAa,6CAA+C,CAAC;AAE1E,kFAAkF;AAClF,eAAO,MAAM,cAAc,8CAAyB,CAAC;AAErD,6FAA6F;AAC7F,eAAO,MAAM,eAAe,QAAO,MAAM,GAAG,SAAsC,CAAC;AAEnF,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,+BAA+B,wBAAwB,KAAG,MAG3F,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Test-id convention for `@flipdish/ui-library`.
|
|
5
|
+
*
|
|
6
|
+
* Every component exposes an overridable `data-testid`. When omitted, a default
|
|
7
|
+
* is derived so automated tests always have a stable hook:
|
|
8
|
+
*
|
|
9
|
+
* - Root components default to `fd-<kebab-name>` (e.g. `fd-sidebar-navigation`).
|
|
10
|
+
* - Nested components inherit the ancestor's *resolved* testid as their prefix
|
|
11
|
+
* and append `--<segment>`, so the `fd-` prefix appears exactly once at the
|
|
12
|
+
* front: `fd-sidebar-navigation--nav-item-orders`.
|
|
13
|
+
* - A consumer-provided `data-testid` always wins and re-roots the prefix for
|
|
14
|
+
* everything beneath it.
|
|
15
|
+
*
|
|
16
|
+
* Pure React (no DOM / react-aria dependency), so it is safe to import from any
|
|
17
|
+
* layer. Consumed as `@flipdish/ui-library/utilities/testIdUtils`.
|
|
18
|
+
*/
|
|
19
|
+
/** Namespace prepended to every root-level testid. */
|
|
20
|
+
const TEST_ID_PREFIX = 'fd';
|
|
21
|
+
/** Separator placed between hierarchy levels (within a segment, use single `-`). */
|
|
22
|
+
const TEST_ID_SEPARATOR = '--';
|
|
23
|
+
/** Convert an arbitrary string into a kebab-case, testid-safe segment. */
|
|
24
|
+
const slugifyTestId = (value) => value
|
|
25
|
+
.toLowerCase()
|
|
26
|
+
.trim()
|
|
27
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
28
|
+
.replace(/^-+|-+$/g, '');
|
|
29
|
+
/** Build a root-level testid, e.g. `rootTestId('sidebar-navigation')` -> `fd-sidebar-navigation`. */
|
|
30
|
+
const rootTestId = (kebabName) => `${TEST_ID_PREFIX}-${kebabName}`;
|
|
31
|
+
/** Append a child segment to a parent testid, e.g. `joinTestId('fd-x', 'nav-item-orders')` -> `fd-x--nav-item-orders`. */
|
|
32
|
+
const joinTestId = (prefix, segment) => `${prefix}${TEST_ID_SEPARATOR}${segment}`;
|
|
33
|
+
/** Return the override when provided, otherwise the fallback (explicit-child case). */
|
|
34
|
+
const resolveTestId = (override, fallback) => override ?? fallback;
|
|
35
|
+
/**
|
|
36
|
+
* Spread helper for the resolved testid. Returns `{ 'data-testid': value }` when
|
|
37
|
+
* a value is present, otherwise an empty object. Centralising this keeps the
|
|
38
|
+
* emitted attribute name in one place (a React Native sibling can map it to
|
|
39
|
+
* `testID` in a follow-up without touching call sites).
|
|
40
|
+
*/
|
|
41
|
+
const testIdProps = (testId) => (testId ? { 'data-testid': testId } : {});
|
|
42
|
+
/** Context carrying the current resolved testid, used as the prefix for descendant components. */
|
|
43
|
+
const TestIdContext = createContext(undefined);
|
|
44
|
+
/** Provides a resolved testid as the prefix for descendant library components. */
|
|
45
|
+
const TestIdProvider = TestIdContext.Provider;
|
|
46
|
+
/** Read the testid prefix contributed by an ancestor component (`undefined` at the root). */
|
|
47
|
+
const useTestIdPrefix = () => useContext(TestIdContext);
|
|
48
|
+
/**
|
|
49
|
+
* Resolve a component's testid: an explicit override wins; otherwise derive
|
|
50
|
+
* `<ancestorPrefix>--<segment>` when nested, or `fd-<rootName>` at the root.
|
|
51
|
+
*/
|
|
52
|
+
const useResolvedTestId = ({ testId, segment, rootName }) => {
|
|
53
|
+
const prefix = useTestIdPrefix();
|
|
54
|
+
return testId ?? (prefix ? joinTestId(prefix, segment) : rootTestId(rootName));
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export { TEST_ID_PREFIX, TEST_ID_SEPARATOR, TestIdContext, TestIdProvider, joinTestId, resolveTestId, rootTestId, slugifyTestId, testIdProps, useResolvedTestId, useTestIdPrefix };
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utilities/testIdUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;;;;;;;;;;;;;AAeG;AAEH;AACO,MAAM,cAAc,GAAG;AAE9B;AACO,MAAM,iBAAiB,GAAG;AAEjC;MACa,aAAa,GAAG,CAAC,KAAa,KACzC;AACG,KAAA,WAAW;AACX,KAAA,IAAI;AACJ,KAAA,OAAO,CAAC,aAAa,EAAE,GAAG;AAC1B,KAAA,OAAO,CAAC,UAAU,EAAE,EAAE;AAE3B;AACO,MAAM,UAAU,GAAG,CAAC,SAAiB,KAAa,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS;AAEvF;AACO,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAe,KAAa,GAAG,MAAM,CAAA,EAAG,iBAAiB,CAAA,EAAG,OAAO;AAE9G;AACO,MAAM,aAAa,GAAG,CAAC,QAA4B,EAAE,QAAgB,KAAa,QAAQ,IAAI;AAErG;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,MAA0B,MAAkC,MAAM,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE;AAE/H;MACa,aAAa,GAAG,aAAa,CAAqB,SAAS;AAExE;AACO,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C;AACO,MAAM,eAAe,GAAG,MAA0B,UAAU,CAAC,aAAa;AAWjF;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAA4B,KAAY;AACnG,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE;IAChC,OAAO,MAAM,KAAK,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChF;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* An interactive dropdown that lets the user select multiple options from a
|
|
3
|
-
* searchable list, with built-in Reset and Select all footer actions.
|
|
4
|
-
*
|
|
5
|
-
* @summary pick multiple options from a searchable dropdown list
|
|
6
|
-
*/
|
|
7
|
-
export { MultiSelect } from '../Select/components/multi-select';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/MultiSelect/index.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|