@stella-source/stellasource-dsl 4.0.0 → 5.1.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.
Files changed (30) hide show
  1. package/dist/cjs/index.js +103 -39
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/components/RadioButton/RadioButton.d.ts +4 -0
  4. package/dist/cjs/types/components/RadioButton/RadioButton.stories.d.ts +14 -0
  5. package/dist/cjs/types/components/RadioButton/styles.d.ts +38 -0
  6. package/dist/cjs/types/components/RadioButton/types.d.ts +13 -0
  7. package/dist/cjs/types/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -0
  8. package/dist/cjs/types/components/RadioButtonGroup/RadioButtonGroup.stories.d.ts +87 -0
  9. package/dist/cjs/types/components/RadioButtonGroup/styles.d.ts +8 -0
  10. package/dist/cjs/types/components/RadioButtonGroup/types.d.ts +22 -0
  11. package/dist/cjs/types/components/Table/Table.d.ts +1 -1
  12. package/dist/cjs/types/components/Table/Table.stories.d.ts +8 -0
  13. package/dist/cjs/types/components/Table/styles.d.ts +8 -1
  14. package/dist/cjs/types/components/Table/types.d.ts +4 -5
  15. package/dist/esm/index.esm.js +103 -39
  16. package/dist/esm/index.esm.js.map +1 -1
  17. package/dist/esm/types/components/RadioButton/RadioButton.d.ts +4 -0
  18. package/dist/esm/types/components/RadioButton/RadioButton.stories.d.ts +14 -0
  19. package/dist/esm/types/components/RadioButton/styles.d.ts +38 -0
  20. package/dist/esm/types/components/RadioButton/types.d.ts +13 -0
  21. package/dist/esm/types/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -0
  22. package/dist/esm/types/components/RadioButtonGroup/RadioButtonGroup.stories.d.ts +87 -0
  23. package/dist/esm/types/components/RadioButtonGroup/styles.d.ts +8 -0
  24. package/dist/esm/types/components/RadioButtonGroup/types.d.ts +22 -0
  25. package/dist/esm/types/components/Table/Table.d.ts +1 -1
  26. package/dist/esm/types/components/Table/Table.stories.d.ts +8 -0
  27. package/dist/esm/types/components/Table/styles.d.ts +8 -1
  28. package/dist/esm/types/components/Table/types.d.ts +4 -5
  29. package/dist/index.d.ts +5 -6
  30. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RadioButtonProps } from "./types";
3
+ declare const RadioButton: ({ id, name, value, className, label, checked, disabled, align, onChange, htmlProps, }: RadioButtonProps) => React.JSX.Element;
4
+ export default RadioButton;
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ declare const _default: {
3
+ title: string;
4
+ component: ({ id, name, value, className, label, checked, disabled, align, onChange, htmlProps, }: import("./types").RadioButtonProps) => React.JSX.Element;
5
+ tags: string[];
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ args: {
10
+ label: string;
11
+ };
12
+ };
13
+ export default _default;
14
+ export declare const Default: {};
@@ -0,0 +1,38 @@
1
+ export type RadioState = "selected" | "unselected" | "disabled";
2
+ interface RadioStateProps {
3
+ $state: RadioState;
4
+ }
5
+ export declare const RadioContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
6
+ export declare const RadioLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "$state"> & RadioStateProps, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "$state"> & RadioStateProps, never>>> & string;
7
+ export declare const RadioOuter: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$state"> & RadioStateProps, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$state"> & RadioStateProps, never>>> & string;
8
+ export declare const RadioDot: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$state"> & RadioStateProps, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$state"> & RadioStateProps, never>>> & string;
9
+ export declare const RadioInput: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, never>>> & string;
10
+ declare const IconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$disabled" | "$hasLabel"> & {
11
+ $disabled?: boolean;
12
+ $hasLabel?: boolean;
13
+ }, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$disabled" | "$hasLabel"> & {
14
+ $disabled?: boolean;
15
+ $hasLabel?: boolean;
16
+ }, never>>> & string;
17
+ declare const RadioButtonWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "$align" | "$disabled" | "$fontSize"> & {
18
+ $disabled?: boolean;
19
+ $align?: "top" | "center";
20
+ $fontSize?: string | null;
21
+ }, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "$align" | "$disabled" | "$fontSize"> & {
22
+ $disabled?: boolean;
23
+ $align?: "top" | "center";
24
+ $fontSize?: string | null;
25
+ }, never>>> & string;
26
+ declare const RadioIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$disabled" | "$hasLabel" | "$checked"> & {
27
+ $checked?: boolean;
28
+ $disabled?: boolean;
29
+ $hasLabel?: boolean;
30
+ }, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "$disabled" | "$hasLabel" | "$checked"> & {
31
+ $checked?: boolean;
32
+ $disabled?: boolean;
33
+ $hasLabel?: boolean;
34
+ }, never>>> & string;
35
+ declare const HiddenInput: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, keyof import("react").ClassAttributes<HTMLInputElement> | keyof import("react").InputHTMLAttributes<HTMLInputElement>> & import("react").ClassAttributes<HTMLInputElement> & import("react").InputHTMLAttributes<HTMLInputElement>, "type"> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, keyof import("react").ClassAttributes<HTMLInputElement> | keyof import("react").InputHTMLAttributes<HTMLInputElement>> & import("react").ClassAttributes<HTMLInputElement> & import("react").InputHTMLAttributes<HTMLInputElement>, "type">>> & string;
36
+ declare const LabelGroup: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
37
+ declare const MainLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>> & string;
38
+ export { RadioButtonWrapper, HiddenInput, LabelGroup, MainLabel, IconWrapper, RadioIcon, };
@@ -0,0 +1,13 @@
1
+ import { HTMLAttributes, ReactElement } from "react";
2
+ export interface RadioButtonProps {
3
+ id: string;
4
+ name: string;
5
+ value?: string;
6
+ label?: string | ReactElement;
7
+ checked?: boolean;
8
+ disabled?: boolean;
9
+ className?: string;
10
+ align?: "top" | "center";
11
+ onChange?: (id: string, value?: string, label?: string) => void;
12
+ htmlProps?: HTMLAttributes<HTMLInputElement>;
13
+ }
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RadioButtonGroupProps } from "./types";
3
+ declare const RadioButtonGroup: ({ name, id, options, onChange, defaultSelectedId, heading, required, tooltipText, disabled, className, isViewOnly, showError, errorMessage, }: RadioButtonGroupProps) => React.JSX.Element;
4
+ export default RadioButtonGroup;
@@ -0,0 +1,87 @@
1
+ import React from "react";
2
+ import { CheckBoxFontSizeVariant } from "../CheckBox/types";
3
+ declare const _default: {
4
+ title: string;
5
+ component: ({ name, id, options, onChange, defaultSelectedId, heading, required, tooltipText, disabled, className, isViewOnly, showError, errorMessage, }: import("./types").RadioButtonGroupProps) => React.JSX.Element;
6
+ tags: string[];
7
+ argTypes: {
8
+ heading: {
9
+ control: string;
10
+ };
11
+ disabled: {
12
+ control: string;
13
+ };
14
+ required: {
15
+ control: string;
16
+ };
17
+ tooltipText: {
18
+ control: string;
19
+ };
20
+ onChange: {
21
+ action: string;
22
+ };
23
+ isViewOnly: {
24
+ control: string;
25
+ };
26
+ showError: {
27
+ control: string;
28
+ };
29
+ errorMessage: {
30
+ control: string;
31
+ };
32
+ };
33
+ args: {
34
+ name: string;
35
+ heading: string;
36
+ disabled: boolean;
37
+ required: boolean;
38
+ fontSize: CheckBoxFontSizeVariant;
39
+ };
40
+ };
41
+ export default _default;
42
+ type StoryArgs = {
43
+ name?: string;
44
+ heading?: string;
45
+ defaultSelectedId?: string;
46
+ disabled?: boolean;
47
+ required?: boolean;
48
+ tooltipText?: string;
49
+ fontSize?: string;
50
+ isViewOnly?: boolean;
51
+ showError?: boolean;
52
+ errorMessage?: string;
53
+ };
54
+ export declare const Default: {
55
+ render: (args: StoryArgs) => React.JSX.Element;
56
+ };
57
+ export declare const WithDefaultSelected: {
58
+ render: (args: StoryArgs) => React.JSX.Element;
59
+ };
60
+ export declare const AllDisabled: {
61
+ render: (args: StoryArgs) => React.JSX.Element;
62
+ args: {
63
+ disabled: boolean;
64
+ defaultSelectedId: string;
65
+ };
66
+ };
67
+ export declare const RequiredWithTooltip: {
68
+ render: (args: StoryArgs) => React.JSX.Element;
69
+ args: {
70
+ heading: string;
71
+ required: boolean;
72
+ showError: boolean;
73
+ disabled: boolean;
74
+ tooltipText: string;
75
+ };
76
+ };
77
+ export declare const ViewOnlyMode: {
78
+ render: (args: StoryArgs) => React.JSX.Element;
79
+ args: {
80
+ heading: string;
81
+ required: boolean;
82
+ showError: boolean;
83
+ isViewOnly: boolean;
84
+ defaultSelectedId: string;
85
+ tooltipText: string;
86
+ };
87
+ };
@@ -0,0 +1,8 @@
1
+ import { HelperTextProps } from "../HelperText/types";
2
+ declare const GroupWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>, never>>> & string;
3
+ declare const HeadingRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
4
+ declare const Legend: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>, never>>> & string;
5
+ declare const CustomHelperText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<HelperTextProps, keyof HelperTextProps> & HelperTextProps, never> & Partial<Pick<import("styled-components").FastOmit<HelperTextProps, keyof HelperTextProps> & HelperTextProps, never>>> & string & Omit<({ id, className, affectLayout, text, type, htmlProps, }: HelperTextProps) => import("react").JSX.Element, keyof import("react").Component<any, {}, any>>;
6
+ declare const SelectedLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>> & string;
7
+ declare const OptionsWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
8
+ export { GroupWrapper, HeadingRow, Legend, CustomHelperText, SelectedLabel, OptionsWrapper, };
@@ -0,0 +1,22 @@
1
+ import { ReactElement } from "react";
2
+ export interface RadioButtonGroupOption {
3
+ id: string;
4
+ label: string | ReactElement;
5
+ value: string;
6
+ disabled?: boolean;
7
+ }
8
+ export interface RadioButtonGroupProps {
9
+ name: string;
10
+ id?: string;
11
+ options: RadioButtonGroupOption[];
12
+ onChange: (payload: RadioButtonGroupOption) => void;
13
+ defaultSelectedId?: string;
14
+ heading?: string;
15
+ required?: boolean;
16
+ tooltipText?: string;
17
+ disabled?: boolean;
18
+ className?: string;
19
+ isViewOnly?: boolean;
20
+ showError?: boolean;
21
+ errorMessage?: string;
22
+ }
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { TableProps } from "./types";
3
- declare function Table<T>({ columns, data, isLoading, serverSide, onPageChange, onSortChange, onFilterChange, onRowSelect, onRowClick, rowStatuses, showSelection, showRowOptions, showPagination, variant, paginationDetails, selectionMenuItems, dataAuto, dataTestId, id, className, htmlProps, resetTrigger, emptyTableState, defaultFilters, staticFilters, enableShowHide, globalActions, }: TableProps<T>): React.JSX.Element;
3
+ declare function Table<T>({ columns, data, isLoading, serverSide, onPageChange, onSortChange, onFilterChange, onRowSelect, onRowClick, rowStatuses, showSelection, showRowOptions, showPagination, variant, paginationDetails, selectionMenuItems, dataAuto, dataTestId, id, className, htmlProps, resetTrigger, emptyTableState, defaultFilters, staticFilters, enableShowHide, globalActions, showExpandedRowToggle, renderExpandedRow, }: TableProps<T>): React.JSX.Element;
4
4
  export default Table;
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import TableComponent from "./Table";
2
3
  import { TableProps } from "./types";
3
4
  interface Person {
@@ -21,3 +22,10 @@ export declare const Table: {
21
22
  variant: string;
22
23
  };
23
24
  };
25
+ export declare const ExpandedRows: {
26
+ args: {
27
+ id: string;
28
+ renderExpandedRow: (row: any) => React.JSX.Element | null;
29
+ showExpandedRowToggle: boolean;
30
+ };
31
+ };
@@ -80,6 +80,13 @@ declare const EmptyTableSection: import("styled-components/dist/types").IStyledC
80
80
  declare const EmptyTableHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never>>> & string;
81
81
  declare const EmptyTableSubHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, never>>> & string;
82
82
  declare const ClearFilterButtonRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
83
+ declare const ExpandedContentRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>, never>>> & string;
84
+ declare const ExpandedContentCell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, never>>> & string;
85
+ declare const ExpandChevronButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "$expanded"> & {
86
+ $expanded: boolean;
87
+ }, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "$expanded"> & {
88
+ $expanded: boolean;
89
+ }, never>>> & string;
83
90
  declare const ActionBar: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
84
91
  declare const GlobalActionWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
85
- export { HeaderCell, TableWrapper, TableWrapperScroll, StyledTable, CustomIconButton, SortButton, HeaderRow, FilterMenu, Checkbox, BodyCell, HeaderCellPosition, MenuButton, MenuItem, FilterBoxLabel, LoadingShimmer, FilterLabelTransparent, CustomPagination, CellRow, MenuItemGroup, KebabAlign, MenuItemOption, EmptyTableCell, EmptyTableSection, EmptyTableHeader, EmptyTableSubHeader, ClearFilterButtonRow, ActionBar, GlobalActionWrapper, };
92
+ export { HeaderCell, TableWrapper, TableWrapperScroll, StyledTable, CustomIconButton, SortButton, HeaderRow, FilterMenu, Checkbox, BodyCell, HeaderCellPosition, MenuButton, MenuItem, FilterBoxLabel, LoadingShimmer, FilterLabelTransparent, CustomPagination, CellRow, MenuItemGroup, KebabAlign, MenuItemOption, EmptyTableCell, EmptyTableSection, EmptyTableHeader, EmptyTableSubHeader, ClearFilterButtonRow, ActionBar, GlobalActionWrapper, ExpandedContentRow, ExpandedContentCell, ExpandChevronButton, };
@@ -1,5 +1,5 @@
1
1
  import { ColumnDef, ColumnFiltersState, Row, Table } from "@tanstack/react-table";
2
- import { HTMLAttributes, ReactElement } from "react";
2
+ import React, { HTMLAttributes, ReactElement } from "react";
3
3
  declare enum TableVariant {
4
4
  PRIMARY = "Primary",
5
5
  SECONDARY = "Secondary"
@@ -13,6 +13,8 @@ export interface TableProps<T> {
13
13
  columns: ColumnDef<T, any>[];
14
14
  data: T[];
15
15
  isLoading?: boolean;
16
+ showExpandedRowToggle?: boolean;
17
+ renderExpandedRow?: (row: Row<T>) => React.ReactNode | null;
16
18
  serverSide?: boolean;
17
19
  onPageChange?: (page: number, pageSize: number) => void;
18
20
  onSortChange?: (sort: {
@@ -54,10 +56,7 @@ export interface TableProps<T> {
54
56
  value: unknown;
55
57
  }[];
56
58
  enableShowHide?: boolean;
57
- globalActions?: {
58
- element: ReactElement;
59
- onChange?: (table?: Table<T>) => void;
60
- }[];
59
+ globalActions?: (table: Table<T>) => ReactElement;
61
60
  }
62
61
  export interface CustomColumnMeta {
63
62
  headerAlign?: "left" | "right";
@@ -22358,6 +22358,37 @@ const ClearFilterButtonRow = styled.div `
22358
22358
  align-items: "center";
22359
22359
  text-align: "center";
22360
22360
  `;
22361
+ const ExpandedContentRow = styled.tr `
22362
+ background-color: ${Styles.color.grey.pale};
22363
+ `;
22364
+ const ExpandedContentCell = styled.td `
22365
+ padding: 12px 16px;
22366
+ border-bottom: 1px solid ${Styles.color.grey.light};
22367
+ background-color: ${Styles.color.grey.pale};
22368
+ `;
22369
+ const ExpandChevronButton = styled.button `
22370
+ display: flex;
22371
+ align-items: center;
22372
+ justify-content: center;
22373
+ background: none;
22374
+ border: none;
22375
+ cursor: pointer;
22376
+ padding: 4px;
22377
+ border-radius: 4px;
22378
+ transition:
22379
+ transform 0.2s ease,
22380
+ background-color 0.15s ease;
22381
+
22382
+ & > svg {
22383
+ transition: transform 0.2s ease;
22384
+ transform: ${({ $expanded }) => $expanded ? "rotate(90deg)" : "rotate(0deg)"};
22385
+ fill: ${Styles.color.grey.charcoal};
22386
+ }
22387
+
22388
+ &:hover {
22389
+ background-color: ${Styles.color.grey.light};
22390
+ }
22391
+ `;
22361
22392
  const ActionBar = styled.div `
22362
22393
  display: flex;
22363
22394
  justify-content: space-between;
@@ -22598,7 +22629,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22598
22629
  startingPage: 1,
22599
22630
  rowsPerPage: 10,
22600
22631
  totalRows: data.length,
22601
- }, selectionMenuItems, dataAuto, dataTestId, id, className, htmlProps, resetTrigger, emptyTableState, defaultFilters, staticFilters, enableShowHide, globalActions, }) {
22632
+ }, selectionMenuItems, dataAuto, dataTestId, id, className, htmlProps, resetTrigger, emptyTableState, defaultFilters, staticFilters, enableShowHide, globalActions, showExpandedRowToggle = false, renderExpandedRow, }) {
22602
22633
  const [rowSelection, setRowSelection] = useState({});
22603
22634
  const [selectedRows] = useState({});
22604
22635
  const [pageIndex, setPageIndex] = useState(paginationDetails?.startingPage);
@@ -22658,6 +22689,14 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22658
22689
  });
22659
22690
  const [rowStatusesState, setRowStatusesState] = useState(rowStatuses || {});
22660
22691
  const [filterMenuOpen, setFilterMenuOpen] = useState({});
22692
+ const [expandedRows, setExpandedRows] = useState(new Set());
22693
+ const toggleRowExpanded = (rowId) => {
22694
+ setExpandedRows((prev) => {
22695
+ const next = new Set(prev);
22696
+ next.has(rowId) ? next.delete(rowId) : next.add(rowId);
22697
+ return next;
22698
+ });
22699
+ };
22661
22700
  useEffect(() => {
22662
22701
  setRowStatusesState(rowStatuses || {});
22663
22702
  }, [rowStatuses]);
@@ -22731,6 +22770,18 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22731
22770
  };
22732
22771
  const enhancedColumns = useMemo$1(() => {
22733
22772
  const cols = [];
22773
+ if (showExpandedRowToggle) {
22774
+ cols.push({
22775
+ id: "expand",
22776
+ header: "",
22777
+ cell: ({ row }) => !!renderExpandedRow?.(row) ? (a__default.createElement(ExpandChevronButton, { "$expanded": expandedRows.has(row.id), onClick: (e) => {
22778
+ e.stopPropagation();
22779
+ toggleRowExpanded(row.id);
22780
+ }, "aria-label": expandedRows.has(row.id) ? "Collapse row" : "Expand row" },
22781
+ a__default.createElement(StellaIcon, { iconName: "chevron-right", size: 14 }))) : (a__default.createElement(a__default.Fragment, null)),
22782
+ size: 36,
22783
+ });
22784
+ }
22734
22785
  if (showSelection) {
22735
22786
  cols.push({
22736
22787
  id: "select",
@@ -22762,6 +22813,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22762
22813
  onRowSelect,
22763
22814
  showSelection,
22764
22815
  showRowOptions,
22816
+ expandedRows,
22765
22817
  ]);
22766
22818
  const table = useReactTable({
22767
22819
  data: localData,
@@ -22867,7 +22919,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22867
22919
  };
22868
22920
  return (a__default.createElement(a__default.Fragment, null,
22869
22921
  !isLoading && (a__default.createElement(ActionBar, null,
22870
- a__default.createElement(GlobalActionWrapper, null, globalActions?.map((action) => action.element)),
22922
+ a__default.createElement(GlobalActionWrapper, null, globalActions?.(table)),
22871
22923
  a__default.createElement(GlobalActionWrapper, null, enableShowHide && (a__default.createElement(a__default.Fragment, null,
22872
22924
  a__default.createElement(IconButton, { ref: visibilityButtonRef, ariaLabel: "Column show hide button", variant: "tertiary", iconName: "table", onClick: () => {
22873
22925
  const rect = visibilityButtonRef.current?.getBoundingClientRect();
@@ -22945,44 +22997,56 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
22945
22997
  }))))),
22946
22998
  a__default.createElement("tbody", null,
22947
22999
  table.getRowModel().rows.length === 0 && (a__default.createElement(EmptyTableState, { header: emptyTableState?.header || "No data available.", subHeader: emptyTableState?.subHeader, showClearFilterButton: emptyTableState?.showClearFilterButton, onClearFilters: resetTable, colSpan: table.getVisibleLeafColumns().length, size: "large" })),
22948
- table.getRowModel().rows.map((row) => (a__default.createElement(CellRow, { key: row.id, onClick: () => onRowClick?.(row.original), "$isClickable": !!onRowClick }, row.getVisibleCells().map((cell) => {
22949
- const value = flexRender(cell.column.columnDef.cell, {
22950
- ...cell.getContext(),
22951
- localValue: rowState[row.id]?.[cell.column.id],
22952
- onLocalChange: (val) => handleInputChange(row.id, cell.column.id, val),
22953
- });
22954
- const meta = cell.column.columnDef
22955
- .meta;
22956
- return (a__default.createElement(BodyCell, { key: cell.id, style: {
22957
- width: cell.column.getSize(),
22958
- textAlign: meta?.cellAlign ||
22959
- (typeof cell.getValue() === "number" ||
22960
- meta?.dataType === "number"
22961
- ? "right"
22962
- : "left"),
22963
- boxShadow: scrollState.atLeft &&
22964
- cell.column.getIsPinned() === "left"
22965
- ? "none"
22966
- : scrollState.atRight &&
22967
- cell.column.getIsPinned() === "right"
23000
+ table.getRowModel().rows.map((row) => (a__default.createElement(a__default.Fragment, { key: row.id },
23001
+ a__default.createElement(CellRow, { onClick: () => {
23002
+ if (!showExpandedRowToggle &&
23003
+ !!renderExpandedRow?.(row))
23004
+ toggleRowExpanded(row.id);
23005
+ onRowClick?.(row.original);
23006
+ }, "$isClickable": !!onRowClick }, row.getVisibleCells().map((cell) => {
23007
+ const value = flexRender(cell.column.columnDef.cell, {
23008
+ ...cell.getContext(),
23009
+ localValue: rowState[row.id]?.[cell.column.id],
23010
+ onLocalChange: (val) => handleInputChange(row.id, cell.column.id, val),
23011
+ });
23012
+ const meta = cell.column.columnDef
23013
+ .meta;
23014
+ return (a__default.createElement(BodyCell, { key: cell.id, style: {
23015
+ width: cell.column.getSize(),
23016
+ textAlign: meta?.cellAlign ||
23017
+ (typeof cell.getValue() === "number" ||
23018
+ meta?.dataType === "number"
23019
+ ? "right"
23020
+ : "left"),
23021
+ boxShadow: scrollState.atLeft &&
23022
+ cell.column.getIsPinned() === "left"
22968
23023
  ? "none"
22969
- : undefined,
22970
- backgroundColor: table
22971
- .getSelectedRowModel()
22972
- .rows.find((r) => r.id === row.id)
22973
- ? "#EBF0FA"
22974
- : rowStatusesState?.[row.id] === "action-pending"
22975
- ? "#FFFDEB"
22976
- : rowStatusesState?.[row.id] === "completed"
22977
- ? "#F5F5F5"
22978
- : "",
22979
- }, "$isPinnedLeft": cell.column.getIsPinned() === "left", "$isPinnedRight": cell.column.getIsPinned() === "right", "$columnInfo": cell.column, "$isLastRow": serverSide
22980
- ? row.index ===
22981
- table.getRowModel().rows.length - 1
22982
- : row.index -
22983
- pagination.pageSize * pagination.pageIndex ===
22984
- table.getRowModel().rows.length - 1 }, value));
22985
- })))))))),
23024
+ : scrollState.atRight &&
23025
+ cell.column.getIsPinned() === "right"
23026
+ ? "none"
23027
+ : undefined,
23028
+ backgroundColor: table
23029
+ .getSelectedRowModel()
23030
+ .rows.find((r) => r.id === row.id)
23031
+ ? "#EBF0FA"
23032
+ : rowStatusesState?.[row.id] ===
23033
+ "action-pending"
23034
+ ? "#FFFDEB"
23035
+ : rowStatusesState?.[row.id] === "completed"
23036
+ ? "#F5F5F5"
23037
+ : "",
23038
+ }, "$isPinnedLeft": cell.column.getIsPinned() === "left", "$isPinnedRight": cell.column.getIsPinned() === "right", "$columnInfo": cell.column, "$isLastRow": serverSide
23039
+ ? row.index ===
23040
+ table.getRowModel().rows.length - 1
23041
+ : row.index -
23042
+ pagination.pageSize *
23043
+ pagination.pageIndex ===
23044
+ table.getRowModel().rows.length - 1 }, value));
23045
+ })),
23046
+ expandedRows.has(row.id) &&
23047
+ renderExpandedRow &&
23048
+ !!renderExpandedRow(row) && (a__default.createElement(ExpandedContentRow, null,
23049
+ a__default.createElement(ExpandedContentCell, { colSpan: table.getVisibleLeafColumns().length }, renderExpandedRow(row))))))))))),
22986
23050
  showPagination && paginationDetails?.totalRows > 0 && (a__default.createElement(CustomPagination, { "$hasData": table.getRowModel().rows.length > 0, totalRows: serverSide ? totalData : table.getFilteredRowModel().rows.length, isLoading: isLoading, rowsPerPage: paginationDetails?.rowsPerPage, startingPage: pageIndex, onPageChange: (page, pageSize) => {
22987
23051
  table.toggleAllRowsSelected(false);
22988
23052
  setPageIndex(page);