@homebound/beam 2.185.0 → 2.186.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.
@@ -0,0 +1,11 @@
1
+ import { Dispatch, SetStateAction } from "react";
2
+ import { OverlayTriggerProps } from "../internal/OverlayTrigger";
3
+ import { GridColumn, Kinded } from "./GridTable";
4
+ interface EditColumnsButtonProps<R extends Kinded, S> extends Pick<OverlayTriggerProps, "trigger" | "placement" | "disabled" | "tooltip"> {
5
+ columns: GridColumn<R, S>[];
6
+ setColumns: Dispatch<SetStateAction<GridColumn<R, S>[]>>;
7
+ title?: string;
8
+ defaultOpen?: boolean;
9
+ }
10
+ export declare function EditColumnsButton<R extends Kinded, S = {}>(props: EditColumnsButtonProps<R, S>): import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EditColumnsButton = void 0;
4
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_aria_1 = require("react-aria");
7
+ const react_stately_1 = require("react-stately");
8
+ const inputs_1 = require("../../inputs");
9
+ const Css_1 = require("../../Css");
10
+ const utils_1 = require("../../utils");
11
+ const Button_1 = require("../Button");
12
+ const OverlayTrigger_1 = require("../internal/OverlayTrigger");
13
+ function EditColumnsButton(props) {
14
+ const { defaultOpen, disabled, columns, setColumns, trigger, title } = props;
15
+ const state = (0, react_stately_1.useMenuTriggerState)({ isOpen: defaultOpen });
16
+ const buttonRef = (0, react_1.useRef)(null);
17
+ const { menuTriggerProps } = (0, react_aria_1.useMenuTrigger)({ isDisabled: !!disabled }, state, buttonRef);
18
+ const tid = (0, utils_1.useTestIds)(props, (0, OverlayTrigger_1.isTextButton)(trigger) ? trigger.label : (0, OverlayTrigger_1.isIconButton)(trigger) ? trigger.icon : trigger.name);
19
+ const { options, selectedColumns } = (0, react_1.useMemo)(() => {
20
+ return columns.reduce((acc, column) => {
21
+ // Only include options that can be hidden and have the `name` property defined.
22
+ if (!column.canHide)
23
+ return acc;
24
+ if (!column.name || column.name.length === 0) {
25
+ console.warn("Column is missing 'name' property required by the Edit Columns button", column);
26
+ return acc;
27
+ }
28
+ // If currently visible, then add to selectedColumns
29
+ if (column.canHide && column.visible) {
30
+ acc.selectedColumns.push(column.name);
31
+ }
32
+ // Add current column as an option
33
+ return { ...acc, options: acc.options.concat({ label: column.name, value: column.name }) };
34
+ }, { options: [], selectedColumns: [] });
35
+ }, [columns]);
36
+ const [selectedValues, setSelectedValues] = (0, react_1.useState)(selectedColumns);
37
+ (0, react_1.useEffect)(() => {
38
+ setColumns(columns.filter((column) => (column.canHide ? selectedValues.includes(column.name) : true)));
39
+ }, [selectedValues]);
40
+ return ((0, jsx_runtime_1.jsx)(OverlayTrigger_1.OverlayTrigger, Object.assign({}, props, { menuTriggerProps: menuTriggerProps, state: state, buttonRef: buttonRef }, tid, { children: (0, jsx_runtime_1.jsxs)("div", Object.assign({ css: {
41
+ ...Css_1.Css.bgWhite.py5.px3.maxwPx(380).bshBasic.$,
42
+ "&:hover": Css_1.Css.bshHover.$,
43
+ } }, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ css: Css_1.Css.gray500.xsSb.mb1.ttu.$ }, { children: title || "Select columns to show" }), void 0), (0, jsx_runtime_1.jsx)(inputs_1.CheckboxGroup, { label: title || "Select columns to show", onChange: (values) => setSelectedValues(values), values: selectedValues, options: options, columns: 2, hideLabel: true }, void 0), (0, jsx_runtime_1.jsx)("div", Object.assign({ css: Css_1.Css.mt1.$ }, { children: (0, jsx_runtime_1.jsx)(Button_1.Button, { variant: "tertiary", label: "Clear selections", onClick: () => setSelectedValues([]) }, void 0) }), void 0)] }), void 0) }), void 0));
44
+ }
45
+ exports.EditColumnsButton = EditColumnsButton;
@@ -242,6 +242,10 @@ export declare type GridColumn<R extends Kinded, S = {}> = {
242
242
  isAction?: true;
243
243
  /** Column name that will be used to generate an unique identifier for every row cell */
244
244
  name?: string;
245
+ /** Flag that will allow to know which columns are hide-able */
246
+ canHide?: boolean;
247
+ /** Flag that will allow to know which hide-able columns are visible */
248
+ visible?: boolean;
245
249
  };
246
250
  export declare const nonKindGridColumnKeys: string[];
247
251
  /** Allows rendering a specific cell. */
@@ -1,5 +1,6 @@
1
1
  export * from "./CollapseToggle";
2
2
  export * from "./columns";
3
+ export { EditColumnsButton } from "./EditColumnsButton";
3
4
  export type { GridRowLookup } from "./GridRowLookup";
4
5
  export { GridSortContext } from "./GridSortContext";
5
6
  export { ASC, DESC, GridTable, setDefaultStyle, setGridTableDefaults } from "./GridTable";
@@ -12,3 +13,4 @@ export { simpleDataRows, simpleHeader } from "./simpleHelpers";
12
13
  export type { SimpleHeaderAndData } from "./simpleHelpers";
13
14
  export { SortHeader } from "./SortHeader";
14
15
  export { cardStyle, condensedStyle, defaultStyle, getTableStyles } from "./styles";
16
+ export { useColumns } from "./useColumns";
@@ -10,9 +10,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.getTableStyles = exports.defaultStyle = exports.condensedStyle = exports.cardStyle = exports.SortHeader = exports.simpleHeader = exports.simpleDataRows = exports.RowStateContext = exports.RowState = exports.useGridTableApi = exports.setGridTableDefaults = exports.setDefaultStyle = exports.GridTable = exports.DESC = exports.ASC = exports.GridSortContext = void 0;
13
+ exports.useColumns = exports.getTableStyles = exports.defaultStyle = exports.condensedStyle = exports.cardStyle = exports.SortHeader = exports.simpleHeader = exports.simpleDataRows = exports.RowStateContext = exports.RowState = exports.useGridTableApi = exports.setGridTableDefaults = exports.setDefaultStyle = exports.GridTable = exports.DESC = exports.ASC = exports.GridSortContext = exports.EditColumnsButton = void 0;
14
14
  __exportStar(require("./CollapseToggle"), exports);
15
15
  __exportStar(require("./columns"), exports);
16
+ var EditColumnsButton_1 = require("./EditColumnsButton");
17
+ Object.defineProperty(exports, "EditColumnsButton", { enumerable: true, get: function () { return EditColumnsButton_1.EditColumnsButton; } });
16
18
  var GridSortContext_1 = require("./GridSortContext");
17
19
  Object.defineProperty(exports, "GridSortContext", { enumerable: true, get: function () { return GridSortContext_1.GridSortContext; } });
18
20
  var GridTable_1 = require("./GridTable");
@@ -37,3 +39,5 @@ Object.defineProperty(exports, "cardStyle", { enumerable: true, get: function ()
37
39
  Object.defineProperty(exports, "condensedStyle", { enumerable: true, get: function () { return styles_1.condensedStyle; } });
38
40
  Object.defineProperty(exports, "defaultStyle", { enumerable: true, get: function () { return styles_1.defaultStyle; } });
39
41
  Object.defineProperty(exports, "getTableStyles", { enumerable: true, get: function () { return styles_1.getTableStyles; } });
42
+ var useColumns_1 = require("./useColumns");
43
+ Object.defineProperty(exports, "useColumns", { enumerable: true, get: function () { return useColumns_1.useColumns; } });
@@ -0,0 +1,3 @@
1
+ import { Dispatch, SetStateAction } from "react";
2
+ import { GridColumn, Kinded } from "./GridTable";
3
+ export declare function useColumns<R extends Kinded, S = {}>(tableColumns: GridColumn<R, S>[]): [GridColumn<R, S>[], Dispatch<SetStateAction<GridColumn<R, S>[]>>];
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useColumns = void 0;
4
+ const react_1 = require("react");
5
+ function useColumns(tableColumns) {
6
+ const [columns, setColumns] = (0, react_1.useState)(tableColumns.filter((column) => (column.canHide ? column.visible : true)));
7
+ return [columns, setColumns];
8
+ }
9
+ exports.useColumns = useColumns;
@@ -7,6 +7,8 @@ export * from "./Accordion";
7
7
  export * from "./AccordionList";
8
8
  export * from "./Alert";
9
9
  export * from "./AutoSaveIndicator";
10
+ export * from "./Avatar";
11
+ export * from "./AvatarButton";
10
12
  export { BeamProvider } from "./BeamContext";
11
13
  export * from "./Button";
12
14
  export * from "./ButtonDatePicker";
@@ -20,6 +20,8 @@ __exportStar(require("./Accordion"), exports);
20
20
  __exportStar(require("./AccordionList"), exports);
21
21
  __exportStar(require("./Alert"), exports);
22
22
  __exportStar(require("./AutoSaveIndicator"), exports);
23
+ __exportStar(require("./Avatar"), exports);
24
+ __exportStar(require("./AvatarButton"), exports);
23
25
  var BeamContext_1 = require("./BeamContext");
24
26
  Object.defineProperty(exports, "BeamProvider", { enumerable: true, get: function () { return BeamContext_1.BeamProvider; } });
25
27
  __exportStar(require("./Button"), exports);
@@ -21,5 +21,9 @@ export interface CheckboxGroupProps {
21
21
  onBlur?: () => void;
22
22
  /** Called when the component is in focus */
23
23
  onFocus?: () => void;
24
+ /** Number of columns to display checkboxes */
25
+ columns?: number;
26
+ /** Hide label if it is not needed */
27
+ hideLabel?: boolean;
24
28
  }
25
29
  export declare function CheckboxGroup(props: CheckboxGroupProps): import("@emotion/react/jsx-runtime").JSX.Element;
@@ -12,11 +12,11 @@ const CheckboxBase_1 = require("./CheckboxBase");
12
12
  const ErrorMessage_1 = require("./ErrorMessage");
13
13
  const utils_1 = require("../utils");
14
14
  function CheckboxGroup(props) {
15
- const { options, label, values, errorMsg, helperText, onBlur, onFocus } = props;
15
+ const { options, label, values, errorMsg, helperText, onBlur, onFocus, columns = 1, hideLabel = false } = props;
16
16
  const state = (0, react_stately_1.useCheckboxGroupState)({ ...props, value: values });
17
17
  const { groupProps, labelProps } = (0, react_aria_1.useCheckboxGroup)(props, state);
18
18
  const tid = (0, utils_1.useTestIds)(props);
19
- return ((0, jsx_runtime_1.jsxs)("div", Object.assign({}, groupProps, { onBlur: onBlur, onFocus: onFocus }, tid, { children: [(0, jsx_runtime_1.jsx)(Label_1.Label, Object.assign({ label: label }, labelProps, tid.label), void 0), (0, jsx_runtime_1.jsx)("div", Object.assign({ css: Css_1.Css.dg.gap2.$ }, { children: options.map((option) => ((0, jsx_runtime_1.jsx)(CheckboxGroupItem, Object.assign({}, option, { groupState: state, selected: state.value.includes(option.value) }), option.value))) }), void 0), errorMsg && (0, jsx_runtime_1.jsx)(ErrorMessage_1.ErrorMessage, Object.assign({ errorMsg: errorMsg }, tid.errorMsg), void 0), helperText && (0, jsx_runtime_1.jsx)(HelperText_1.HelperText, Object.assign({ helperText: helperText }, tid.helperText), void 0)] }), void 0));
19
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({}, groupProps, { onBlur: onBlur, onFocus: onFocus }, tid, { children: [!hideLabel && (0, jsx_runtime_1.jsx)(Label_1.Label, Object.assign({ label: label }, labelProps, tid.label), void 0), (0, jsx_runtime_1.jsx)("div", Object.assign({ css: Css_1.Css.dg.gtc(`repeat(${columns}, auto)`).gap2.$ }, { children: options.map((option) => ((0, jsx_runtime_1.jsx)(CheckboxGroupItem, Object.assign({}, option, { groupState: state, selected: state.value.includes(option.value) }), option.value))) }), void 0), errorMsg && (0, jsx_runtime_1.jsx)(ErrorMessage_1.ErrorMessage, Object.assign({ errorMsg: errorMsg }, tid.errorMsg), void 0), helperText && (0, jsx_runtime_1.jsx)(HelperText_1.HelperText, Object.assign({ helperText: helperText }, tid.helperText), void 0)] }), void 0));
20
20
  }
21
21
  exports.CheckboxGroup = CheckboxGroup;
22
22
  function CheckboxGroupItem(props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homebound/beam",
3
- "version": "2.185.0",
3
+ "version": "2.186.1",
4
4
  "author": "Homebound",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",