@overmap-ai/blocks 1.0.15 → 1.0.17-add-error-boundary-component.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.
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ type ErrorBoundaryProps = React.PropsWithChildren;
3
+ export declare const OvermapErrorBoundary: React.MemoExoticComponent<(props: ErrorBoundaryProps) => import("react/jsx-runtime").JSX.Element>;
4
+ export {};
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import type { StoryObj } from "@storybook/react";
3
+ import { OvermapErrorBoundary } from "./OvermapErrorBoundary.tsx";
4
+ declare const meta: {
5
+ title: string;
6
+ component: import("react").MemoExoticComponent<(props: {
7
+ children?: import("react").ReactNode;
8
+ }) => import("react/jsx-runtime").JSX.Element>;
9
+ tags: string[];
10
+ args: {
11
+ children: import("react/jsx-runtime").JSX.Element;
12
+ };
13
+ };
14
+ export default meta;
15
+ type Story = StoryObj<typeof OvermapErrorBoundary>;
16
+ export declare const Basic: Story;
@@ -43,6 +43,7 @@ export interface TableProps {
43
43
  description?: string | ReactNode;
44
44
  defaultRowsPerPage?: number;
45
45
  rowsPerPage?: number[];
46
+ fixHeader?: boolean;
46
47
  showSearchBar?: boolean;
47
48
  searchBarPlaceholder?: string;
48
49
  showSelect?: boolean;
package/dist/blocks.js CHANGED
@@ -187,6 +187,12 @@ function useTextFilter(values, filterFunction) {
187
187
  }, [filterFunction, filterValue, values]);
188
188
  return [filteredOptions, filterValue, setFilterValue];
189
189
  }
190
+ const splitTextForEllipsisAndExpansion = (text, numChars) => {
191
+ const indexOfSpace = text.indexOf(" ", numChars);
192
+ const firstLine = indexOfSpace === -1 ? text : text.substring(0, indexOfSpace);
193
+ const secondLine = indexOfSpace === -1 ? "" : text.substring(indexOfSpace);
194
+ return [firstLine, secondLine];
195
+ };
190
196
  const _Badge = forwardRef(function Badge2({ className, severity = "primary", color, children, ...rest }, ref) {
191
197
  const severityColor = useSeverityColor(severity);
192
198
  return /* @__PURE__ */ jsx(
@@ -1840,11 +1846,11 @@ const LeftAndRightPanels = memo(function Panels({
1840
1846
  }
1841
1847
  );
1842
1848
  });
1843
- const multiPagePopover = "_multiPagePopover_spfw7_1";
1844
- const pageTitle = "_pageTitle_spfw7_12";
1845
- const buttonContainer = "_buttonContainer_spfw7_17";
1846
- const optionsButtonContainer = "_optionsButtonContainer_spfw7_22";
1847
- const optionsButton = "_optionsButton_spfw7_22";
1849
+ const multiPagePopover = "_multiPagePopover_16xvh_1";
1850
+ const pageTitle = "_pageTitle_16xvh_12";
1851
+ const buttonContainer = "_buttonContainer_16xvh_16";
1852
+ const optionsButtonContainer = "_optionsButtonContainer_16xvh_21";
1853
+ const optionsButton = "_optionsButton_16xvh_21";
1848
1854
  const styles$9 = {
1849
1855
  multiPagePopover,
1850
1856
  pageTitle,
@@ -1875,7 +1881,7 @@ function getMultiPagePopoverContent(popoverOption, setMultiPagePopoverContent, d
1875
1881
  `${option.value}-page-${page}-button-${i}`
1876
1882
  ));
1877
1883
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1878
- popoverOption.title && /* @__PURE__ */ jsx("div", { className: styles$9.pageTitle, children: popoverOption.title }),
1884
+ popoverOption.title && /* @__PURE__ */ jsx(Text$2, { className: styles$9.pageTitle, size: "3", children: popoverOption.title }),
1879
1885
  popoverOption.content,
1880
1886
  /* @__PURE__ */ jsx(
1881
1887
  "div",
@@ -2967,25 +2973,28 @@ const SelectAllCheckbox = memo(function SelectAllCheckbox2({
2967
2973
  childrenWithProps
2968
2974
  ] });
2969
2975
  });
2970
- const tableContainer = "_tableContainer_boacd_1";
2971
- const headerContainer = "_headerContainer_boacd_14";
2972
- const tableTopContainer = "_tableTopContainer_boacd_18";
2973
- const searchContainer = "_searchContainer_boacd_22";
2974
- const columnFilterSelect = "_columnFilterSelect_boacd_32";
2975
- const table = "_table_boacd_1";
2976
- const tableHeaderCell = "_tableHeaderCell_boacd_50";
2977
- const showSortIcon = "_showSortIcon_boacd_59";
2978
- const tableRow = "_tableRow_boacd_63";
2979
- const tableCell = "_tableCell_boacd_78";
2980
- const noDataTextContainer = "_noDataTextContainer_boacd_88";
2981
- const tableBottomContainer = "_tableBottomContainer_boacd_94";
2982
- const rowsPerPageContainer = "_rowsPerPageContainer_boacd_98";
2983
- const rowsPerPageText = "_rowsPerPageText_boacd_108";
2984
- const pageText = "_pageText_boacd_113";
2976
+ const outerTableContainer = "_outerTableContainer_1wqc9_1";
2977
+ const headerContainer = "_headerContainer_1wqc9_13";
2978
+ const tableTopContainer = "_tableTopContainer_1wqc9_17";
2979
+ const tableContainer = "_tableContainer_1wqc9_21";
2980
+ const searchContainer = "_searchContainer_1wqc9_26";
2981
+ const columnFilterSelect = "_columnFilterSelect_1wqc9_36";
2982
+ const table = "_table_1wqc9_17";
2983
+ const tableHeaderCell = "_tableHeaderCell_1wqc9_54";
2984
+ const showSortIcon = "_showSortIcon_1wqc9_70";
2985
+ const tableRow = "_tableRow_1wqc9_74";
2986
+ const tableCell = "_tableCell_1wqc9_89";
2987
+ const noDataTextContainer = "_noDataTextContainer_1wqc9_99";
2988
+ const tableBottomContainer = "_tableBottomContainer_1wqc9_105";
2989
+ const rowsPerPageContainer = "_rowsPerPageContainer_1wqc9_109";
2990
+ const rowsPerPageText = "_rowsPerPageText_1wqc9_119";
2991
+ const pageText = "_pageText_1wqc9_124";
2992
+ const descriptionSecondLine = "_descriptionSecondLine_1wqc9_128";
2985
2993
  const styles$1 = {
2986
- tableContainer,
2994
+ outerTableContainer,
2987
2995
  headerContainer,
2988
2996
  tableTopContainer,
2997
+ tableContainer,
2989
2998
  searchContainer,
2990
2999
  columnFilterSelect,
2991
3000
  table,
@@ -2997,7 +3006,8 @@ const styles$1 = {
2997
3006
  tableBottomContainer,
2998
3007
  rowsPerPageContainer,
2999
3008
  rowsPerPageText,
3000
- pageText
3009
+ pageText,
3010
+ descriptionSecondLine
3001
3011
  };
3002
3012
  const _Table = forwardRef(function Table2(props, ref) {
3003
3013
  var _a;
@@ -3008,6 +3018,7 @@ const _Table = forwardRef(function Table2(props, ref) {
3008
3018
  title = "",
3009
3019
  description = "",
3010
3020
  rowsPerPage = [10, 20, 30, 40, 50],
3021
+ fixHeader = false,
3011
3022
  showSearchBar,
3012
3023
  searchBarPlaceholder,
3013
3024
  showSelect,
@@ -3197,6 +3208,7 @@ const _Table = forwardRef(function Table2(props, ref) {
3197
3208
  );
3198
3209
  const columnFilterPopoverContent = useMemo(
3199
3210
  () => ({
3211
+ title: "Filter by:",
3200
3212
  options: columns.filter((column) => column.filter).map((column) => ({
3201
3213
  label: column.label,
3202
3214
  value: column.id.toString(),
@@ -3257,7 +3269,15 @@ const _Table = forwardRef(function Table2(props, ref) {
3257
3269
  );
3258
3270
  const columnCells = columnsData.map((column) => {
3259
3271
  const Component = column.sort ? HeaderCellSort : HeaderCell;
3260
- return /* @__PURE__ */ jsx(HoverUtility, { children: ({ isHovered, ...props2 }) => /* @__PURE__ */ jsx(
3272
+ let firstLine = column.label;
3273
+ let secondLine = void 0;
3274
+ if (column.label && typeof column.label === "string") {
3275
+ const numChars = 31;
3276
+ const [first, second] = splitTextForEllipsisAndExpansion(column.label, numChars);
3277
+ firstLine = first;
3278
+ secondLine = second;
3279
+ }
3280
+ return /* @__PURE__ */ jsx(HoverUtility, { children: ({ isHovered, ...props2 }) => /* @__PURE__ */ jsxs(
3261
3281
  Component,
3262
3282
  {
3263
3283
  className: classNames(
@@ -3268,12 +3288,18 @@ const _Table = forwardRef(function Table2(props, ref) {
3268
3288
  ),
3269
3289
  sortKey: column.sort ? column.id.toString().toUpperCase() : "",
3270
3290
  ...props2,
3271
- children: column.label
3291
+ children: [
3292
+ firstLine && /* @__PURE__ */ jsx("div", { children: firstLine }),
3293
+ secondLine && /* @__PURE__ */ jsxs("div", { className: styles$1.descriptionSecondLine, children: [
3294
+ " ",
3295
+ secondLine
3296
+ ] })
3297
+ ]
3272
3298
  }
3273
3299
  ) }, column.id);
3274
3300
  });
3275
3301
  const SelectedModeButton = isMobile ? IconButton : Button2;
3276
- const layout = useMemo(() => ({ custom: true }), []);
3302
+ const layout = useMemo(() => ({ custom: true, ...fixHeader && { fixedHeader: true } }), [fixHeader]);
3277
3303
  const theme = useTheme({
3278
3304
  Table: `
3279
3305
  --data-table-library_grid-template-columns: ${gridTemplateColumns} !important;
@@ -3305,7 +3331,7 @@ const _Table = forwardRef(function Table2(props, ref) {
3305
3331
  }
3306
3332
  }
3307
3333
  }, [rowsPerPage, rows.length, numRowsPerPage, pagination, showPageNavigation]);
3308
- return /* @__PURE__ */ jsxs("div", { className: classNames({ [styles$1.tableContainer]: showContainer }), children: [
3334
+ return /* @__PURE__ */ jsxs(Flex$1, { className: classNames({ [styles$1.outerTableContainer]: showContainer }), direction: "column", height: "100%", children: [
3309
3335
  (!!title || !!description) && /* @__PURE__ */ jsxs("div", { className: styles$1.headerContainer, children: [
3310
3336
  !!title && /* @__PURE__ */ jsx(Text$1, { weight: "bold", size: "5", children: title }),
3311
3337
  !!description && /* @__PURE__ */ jsx(Text$1, { as: "div", children: description })
@@ -3330,8 +3356,8 @@ const _Table = forwardRef(function Table2(props, ref) {
3330
3356
  children: (_Close) => ""
3331
3357
  }
3332
3358
  ),
3333
- showFilterButton && isColumnFilterValueSelected && /* @__PURE__ */ jsxs(
3334
- Button2,
3359
+ showFilterButton && isColumnFilterValueSelected && /* @__PURE__ */ jsx(
3360
+ IconButton,
3335
3361
  {
3336
3362
  variant: "surface",
3337
3363
  color: "crimson",
@@ -3339,10 +3365,8 @@ const _Table = forwardRef(function Table2(props, ref) {
3339
3365
  setColumnFilterValues(defaultColumnFilterValues);
3340
3366
  pagination.fns.onSetPage(0);
3341
3367
  },
3342
- children: [
3343
- /* @__PURE__ */ jsx(Cross2Icon, {}),
3344
- "Clear filters"
3345
- ]
3368
+ "aria-label": "Clear filters",
3369
+ children: /* @__PURE__ */ jsx(Cross2Icon, {})
3346
3370
  }
3347
3371
  )
3348
3372
  ] }),
@@ -3359,7 +3383,7 @@ const _Table = forwardRef(function Table2(props, ref) {
3359
3383
  ] })
3360
3384
  ] }),
3361
3385
  children,
3362
- /* @__PURE__ */ jsx(
3386
+ /* @__PURE__ */ jsx("div", { className: styles$1.tableContainer, children: /* @__PURE__ */ jsx(
3363
3387
  Table$1,
3364
3388
  {
3365
3389
  className: classNames(styles$1.table, className),
@@ -3405,7 +3429,7 @@ const _Table = forwardRef(function Table2(props, ref) {
3405
3429
  ] })
3406
3430
  ] })
3407
3431
  }
3408
- ),
3432
+ ) }),
3409
3433
  showBottomBar && /* @__PURE__ */ jsxs(Flex$1, { className: styles$1.tableBottomContainer, wrap: "wrap", direction: isMobile ? "column" : "row", children: [
3410
3434
  showRowsPerPage && /* @__PURE__ */ jsxs(Flex$1, { className: styles$1.rowsPerPageContainer, children: [
3411
3435
  /* @__PURE__ */ jsx(Text$1, { className: styles$1.rowsPerPageText, size: "2", children: "Rows per page:" }),
@@ -3668,6 +3692,7 @@ export {
3668
3692
  Toolbar,
3669
3693
  Tooltip,
3670
3694
  divButtonProps,
3695
+ splitTextForEllipsisAndExpansion,
3671
3696
  unsafeShowToast,
3672
3697
  updateThemeAppearanceClass,
3673
3698
  useAlertDialog,