@bwp-web/components 1.4.1 → 1.5.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/README.md +43 -31
- package/dist/BiampSidebar/BiampSidebar.d.ts +3 -0
- package/dist/BiampSidebar/BiampSidebar.d.ts.map +1 -1
- package/dist/BiampWrapper/BiampWrapper.d.ts +5 -1
- package/dist/BiampWrapper/BiampWrapper.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/useLoadingDelay.d.ts.map +1 -0
- package/dist/index.cjs +75 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +170 -145
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/BiampTable/useLoadingDelay.d.ts.map +0 -1
- /package/dist/{BiampTable → hooks}/useLoadingDelay.d.ts +0 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ npm install @bwp-web/components
|
|
|
10
10
|
|
|
11
11
|
### Peer Dependencies
|
|
12
12
|
|
|
13
|
-
- `@bwp-web/styles` >= 1.0.
|
|
13
|
+
- `@bwp-web/styles` >= 1.0.5
|
|
14
14
|
- `@bwp-web/assets` >= 1.0.2
|
|
15
15
|
- `@mui/material` >= 7.0.0
|
|
16
16
|
- `react` >= 18.0.0
|
|
@@ -22,36 +22,36 @@ For `BiampTable` only:
|
|
|
22
22
|
|
|
23
23
|
## Components
|
|
24
24
|
|
|
25
|
-
| Component | Description
|
|
26
|
-
| ---------------------------- |
|
|
27
|
-
| `BiampLayout` | Full-page layout shell with optional header and sidebar slots
|
|
28
|
-
| `BiampWrapper` | Full-page content wrapper with padding, rounded corners, and
|
|
29
|
-
| `BiampSidebar` | Expandable vertical sidebar (48px ↔ 240px) with animated toggle and copyright caption
|
|
30
|
-
| `BiampSidebarIconList` | Scrollable vertical list with 4px gaps for sidebar items
|
|
31
|
-
| `BiampSidebarIcon` | Selectable 48px-tall icon button for sidebar navigation, with optional `name` label
|
|
32
|
-
| `BiampSidebarComponent` | 48×48px rounded box for arbitrary sidebar content
|
|
33
|
-
| `BiampHeader` | Horizontal header container with padding
|
|
34
|
-
| `BiampHeaderTitle` | Title section with icon, optional title, and optional subtitle
|
|
35
|
-
| `BiampHeaderSearch` | Search input with leading search icon
|
|
36
|
-
| `BiampHeaderActions` | Flex container for grouping action buttons and profile
|
|
37
|
-
| `BiampHeaderButtonList` | Horizontal list with 4px gaps for header buttons
|
|
38
|
-
| `BiampHeaderButton` | Selectable 40×40px icon button for header actions
|
|
39
|
-
| `BiampHeaderProfile` | Profile button with image or custom children (e.g. `UserInitialsIcon`)
|
|
40
|
-
| `BiampAppPopover` | Styled popover for the app-launcher content
|
|
41
|
-
| `BiampBuildAppContent` | 2-column grid container for "Configure & Build" app tiles
|
|
42
|
-
| `BiampBuildAppContentItem` | App tile with image, name, description, and optional action button
|
|
43
|
-
| `BiampEndUserAppContent` | Responsive container for end-user app items: stack for one child, 2-column grid for many
|
|
44
|
-
| `BiampEndUserAppContentItem` | Row-style app item with image, name, description, and external link; supports `href`
|
|
45
|
-
| `BiampBanner` | Full-width animated notification banner
|
|
46
|
-
| `BiampBannerIcon` | Leading icon slot for `BiampBanner`
|
|
47
|
-
| `BiampBannerContent` | Center message slot for `BiampBanner`
|
|
48
|
-
| `BiampBannerActions` | Trailing actions slot for `BiampBanner`
|
|
49
|
-
| `BiampGlobalSearch` | Searchable autocomplete with icons, subtitles, chips, and keyboard hints
|
|
50
|
-
| `SegmentedButtonGroup` | Horizontal container for grouping segmented toggle buttons
|
|
51
|
-
| `SegmentedButton` | Individual toggle button for use inside `SegmentedButtonGroup`
|
|
52
|
-
| `BiampTable` | Composable data table with sorting, selection, pagination, and more
|
|
53
|
-
| `UserInitialsIcon` | Avatar-style icon showing a user's initials with a deterministic color
|
|
54
|
-
| `DynamicSvgIcon` | Renders a remotely-fetched SVG with a skeleton loader and required fallback
|
|
25
|
+
| Component | Description |
|
|
26
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
27
|
+
| `BiampLayout` | Full-page layout shell with optional header and sidebar slots |
|
|
28
|
+
| `BiampWrapper` | Full-page content wrapper with padding, rounded corners, scrollable overflow, and an optional debounced loading bar |
|
|
29
|
+
| `BiampSidebar` | Expandable vertical sidebar (48px ↔ 240px) with animated toggle and copyright caption |
|
|
30
|
+
| `BiampSidebarIconList` | Scrollable vertical list with 4px gaps for sidebar items; suppresses overscroll bounce |
|
|
31
|
+
| `BiampSidebarIcon` | Selectable 48px-tall icon button for sidebar navigation, with optional `name` label |
|
|
32
|
+
| `BiampSidebarComponent` | 48×48px rounded box for arbitrary sidebar content |
|
|
33
|
+
| `BiampHeader` | Horizontal header container with padding |
|
|
34
|
+
| `BiampHeaderTitle` | Title section with icon, optional title, and optional subtitle |
|
|
35
|
+
| `BiampHeaderSearch` | Search input with leading search icon |
|
|
36
|
+
| `BiampHeaderActions` | Flex container for grouping action buttons and profile |
|
|
37
|
+
| `BiampHeaderButtonList` | Horizontal list with 4px gaps for header buttons |
|
|
38
|
+
| `BiampHeaderButton` | Selectable 40×40px icon button for header actions |
|
|
39
|
+
| `BiampHeaderProfile` | Profile button with image or custom children (e.g. `UserInitialsIcon`) |
|
|
40
|
+
| `BiampAppPopover` | Styled popover for the app-launcher content |
|
|
41
|
+
| `BiampBuildAppContent` | 2-column grid container for "Configure & Build" app tiles |
|
|
42
|
+
| `BiampBuildAppContentItem` | App tile with image, name, description, and optional action button |
|
|
43
|
+
| `BiampEndUserAppContent` | Responsive container for end-user app items: stack for one child, 2-column grid for many |
|
|
44
|
+
| `BiampEndUserAppContentItem` | Row-style app item with image, name, description, and external link; supports `href` |
|
|
45
|
+
| `BiampBanner` | Full-width animated notification banner |
|
|
46
|
+
| `BiampBannerIcon` | Leading icon slot for `BiampBanner` |
|
|
47
|
+
| `BiampBannerContent` | Center message slot for `BiampBanner` |
|
|
48
|
+
| `BiampBannerActions` | Trailing actions slot for `BiampBanner` |
|
|
49
|
+
| `BiampGlobalSearch` | Searchable autocomplete with icons, subtitles, chips, and keyboard hints |
|
|
50
|
+
| `SegmentedButtonGroup` | Horizontal container for grouping segmented toggle buttons |
|
|
51
|
+
| `SegmentedButton` | Individual toggle button for use inside `SegmentedButtonGroup` |
|
|
52
|
+
| `BiampTable` | Composable data table with sorting, selection, pagination, and more |
|
|
53
|
+
| `UserInitialsIcon` | Avatar-style icon showing a user's initials with a deterministic color |
|
|
54
|
+
| `DynamicSvgIcon` | Renders a remotely-fetched SVG with a skeleton loader and required fallback |
|
|
55
55
|
|
|
56
56
|
## Usage
|
|
57
57
|
|
|
@@ -196,6 +196,18 @@ Full-page content wrapper with 16px padding, 8px border-radius, scrollable overf
|
|
|
196
196
|
<BiampWrapper>{/* page content */}</BiampWrapper>
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
+
Pass `loading` to show a debounced `LinearProgress` bar pinned to the top of the wrapper. The bar appears 150ms after `loading` flips true and stays visible for at least 500ms once shown, so fast loads don't flicker.
|
|
200
|
+
|
|
201
|
+
```tsx
|
|
202
|
+
<BiampWrapper loading={isLoading}>{/* page content */}</BiampWrapper>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### BiampWrapper Props
|
|
206
|
+
|
|
207
|
+
| Prop | Type | Default | Description |
|
|
208
|
+
| --------- | --------- | ------- | ----------------------------------------------------------------------------- |
|
|
209
|
+
| `loading` | `boolean` | `false` | Shows a debounced `LinearProgress` bar at the top of the wrapper while truthy |
|
|
210
|
+
|
|
199
211
|
### BiampSidebar
|
|
200
212
|
|
|
201
213
|
Vertical sidebar that animates between a collapsed (48px) and expanded (240px) width. A toggle button is rendered between the children and the bottom logo by default; pass `expandable={false}` to hide it. When expanded, each `BiampSidebarIcon`'s `name` fades in next to its icon and the optional `bottomLogoText` (auto-prefixed with `© [current year]`) appears next to the logo.
|
|
@@ -13,6 +13,9 @@ export declare function BiampSidebar({ children, bottomLogoIcon, bottomLogoText,
|
|
|
13
13
|
type BiampSidebarIconList = StackProps & {
|
|
14
14
|
children: React.ReactNode;
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Vertical, scrollable list container for sidebar items with 4px gaps.
|
|
18
|
+
*/
|
|
16
19
|
export declare function BiampSidebarIconList({ children, sx, ...props }: BiampSidebarIconList): import("react/jsx-runtime").JSX.Element;
|
|
17
20
|
type BiampSidebarIconProps = ListItemButtonProps & {
|
|
18
21
|
selected?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BiampSidebar.d.ts","sourceRoot":"","sources":["../../src/BiampSidebar/BiampSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,UAAU,EAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,GAAG,EAAuC,MAAM,OAAO,CAAC;AAUjE,KAAK,iBAAiB,GAAG,UAAU,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAiB,EACjB,QAAQ,EAAE,YAAY,EACtB,eAAuB,EACvB,gBAAgB,EAChB,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmFnB;AAED,KAAK,oBAAoB,GAAG,UAAU,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"BiampSidebar.d.ts","sourceRoot":"","sources":["../../src/BiampSidebar/BiampSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,UAAU,EAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,GAAG,EAAuC,MAAM,OAAO,CAAC;AAUjE,KAAK,iBAAiB,GAAG,UAAU,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAiB,EACjB,QAAQ,EAAE,YAAY,EACtB,eAAuB,EACvB,gBAAgB,EAChB,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmFnB;AAED,KAAK,oBAAoB,GAAG,UAAU,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAgBtB;AAED,KAAK,qBAAqB,GAAG,mBAAmB,GAAG;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAwDvB;AAED,KAAK,0BAA0B,GAAG,mBAAmB,GAAG;IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAoB5B"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StackProps } from '@mui/material';
|
|
3
3
|
export type BiampWrapperProps = StackProps & {
|
|
4
|
+
loading?: boolean;
|
|
4
5
|
children?: React.ReactNode;
|
|
5
6
|
};
|
|
6
7
|
/**
|
|
7
8
|
* A full-page content wrapper that stretches to fill all available space
|
|
8
9
|
* with 16px padding, 8px border radius, and scrollable overflow.
|
|
9
10
|
* Background: white (light) / `grey.800` (dark).
|
|
11
|
+
*
|
|
12
|
+
* Optional `loading` shows a `LinearProgress` bar pinned to the top,
|
|
13
|
+
* debounced via `useLoadingDelay` so fast loads don't flicker.
|
|
10
14
|
*/
|
|
11
|
-
export declare function BiampWrapper({ children, sx, ...props }: BiampWrapperProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function BiampWrapper({ loading, children, sx, ...props }: BiampWrapperProps): import("react/jsx-runtime").JSX.Element;
|
|
12
16
|
//# sourceMappingURL=BiampWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BiampWrapper.d.ts","sourceRoot":"","sources":["../../src/BiampWrapper/BiampWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"BiampWrapper.d.ts","sourceRoot":"","sources":["../../src/BiampWrapper/BiampWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA8B,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAe,EACf,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAsCnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLoadingDelay.d.ts","sourceRoot":"","sources":["../../src/hooks/useLoadingDelay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,EAAE,KAAW,EAAE,WAAiB,EAAE;;;CAAK,GACtC,OAAO,CAoCT"}
|
package/dist/index.cjs
CHANGED
|
@@ -465,15 +465,55 @@ module.exports = __toCommonJS(index_exports);
|
|
|
465
465
|
|
|
466
466
|
// src/BiampWrapper/BiampWrapper.tsx
|
|
467
467
|
var import_material = require("@mui/material");
|
|
468
|
+
|
|
469
|
+
// src/hooks/useLoadingDelay.ts
|
|
470
|
+
var import_react = require("react");
|
|
471
|
+
function useLoadingDelay(loading, { delay = 150, minDuration = 500 } = {}) {
|
|
472
|
+
const [status, setStatus] = (0, import_react.useState)("idle");
|
|
473
|
+
const timeoutRef = (0, import_react.useRef)(null);
|
|
474
|
+
function clearPending() {
|
|
475
|
+
if (timeoutRef.current !== null) {
|
|
476
|
+
clearTimeout(timeoutRef.current);
|
|
477
|
+
timeoutRef.current = null;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
(0, import_react.useEffect)(() => {
|
|
481
|
+
if (loading && status === "idle") {
|
|
482
|
+
clearPending();
|
|
483
|
+
timeoutRef.current = setTimeout(() => {
|
|
484
|
+
timeoutRef.current = setTimeout(() => {
|
|
485
|
+
setStatus("ending");
|
|
486
|
+
}, minDuration);
|
|
487
|
+
setStatus("loading");
|
|
488
|
+
}, delay);
|
|
489
|
+
setStatus("delaying");
|
|
490
|
+
}
|
|
491
|
+
if (!loading && status !== "loading") {
|
|
492
|
+
clearPending();
|
|
493
|
+
setStatus("idle");
|
|
494
|
+
}
|
|
495
|
+
}, [loading, delay, minDuration, status]);
|
|
496
|
+
(0, import_react.useEffect)(() => clearPending, []);
|
|
497
|
+
return status === "loading" || status === "ending";
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// src/BiampWrapper/BiampWrapper.tsx
|
|
468
501
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
469
|
-
function BiampWrapper({
|
|
470
|
-
|
|
502
|
+
function BiampWrapper({
|
|
503
|
+
loading = false,
|
|
504
|
+
children,
|
|
505
|
+
sx,
|
|
506
|
+
...props
|
|
507
|
+
}) {
|
|
508
|
+
const showLoading = useLoadingDelay(loading);
|
|
509
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
471
510
|
import_material.Stack,
|
|
472
511
|
{
|
|
473
512
|
direction: "column",
|
|
474
513
|
padding: "16px",
|
|
475
514
|
alignItems: "flex-start",
|
|
476
515
|
sx: {
|
|
516
|
+
position: "relative",
|
|
477
517
|
flex: 1,
|
|
478
518
|
height: "100%",
|
|
479
519
|
width: "100%",
|
|
@@ -484,7 +524,22 @@ function BiampWrapper({ children, sx, ...props }) {
|
|
|
484
524
|
...sx
|
|
485
525
|
},
|
|
486
526
|
...props,
|
|
487
|
-
children
|
|
527
|
+
children: [
|
|
528
|
+
showLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
529
|
+
import_material.Box,
|
|
530
|
+
{
|
|
531
|
+
sx: ({ zIndex }) => ({
|
|
532
|
+
position: "absolute",
|
|
533
|
+
top: 0,
|
|
534
|
+
left: 0,
|
|
535
|
+
width: "100%",
|
|
536
|
+
zIndex: zIndex.appBar + 1
|
|
537
|
+
}),
|
|
538
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.LinearProgress, {})
|
|
539
|
+
}
|
|
540
|
+
),
|
|
541
|
+
children
|
|
542
|
+
]
|
|
488
543
|
}
|
|
489
544
|
);
|
|
490
545
|
}
|
|
@@ -492,9 +547,9 @@ function BiampWrapper({ children, sx, ...props }) {
|
|
|
492
547
|
// src/BiampSidebar/BiampSidebar.tsx
|
|
493
548
|
var import_material2 = require("@mui/material");
|
|
494
549
|
var import_assets = require("@bwp-web/assets");
|
|
495
|
-
var
|
|
550
|
+
var import_react2 = require("react");
|
|
496
551
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
497
|
-
var BiampSidebarContext = (0,
|
|
552
|
+
var BiampSidebarContext = (0, import_react2.createContext)({
|
|
498
553
|
expanded: false
|
|
499
554
|
});
|
|
500
555
|
function BiampSidebar({
|
|
@@ -508,7 +563,7 @@ function BiampSidebar({
|
|
|
508
563
|
sx,
|
|
509
564
|
...props
|
|
510
565
|
}) {
|
|
511
|
-
const [internalExpanded, setInternalExpanded] = (0,
|
|
566
|
+
const [internalExpanded, setInternalExpanded] = (0, import_react2.useState)(defaultExpanded);
|
|
512
567
|
const isControlled = expandedProp !== void 0;
|
|
513
568
|
const expanded = isControlled ? expandedProp : internalExpanded;
|
|
514
569
|
const toggleExpanded = () => {
|
|
@@ -570,7 +625,7 @@ function BiampSidebar({
|
|
|
570
625
|
{
|
|
571
626
|
variant: "caption",
|
|
572
627
|
fontWeight: 500,
|
|
573
|
-
color: "
|
|
628
|
+
color: "text.secondary",
|
|
574
629
|
noWrap: true,
|
|
575
630
|
sx: {
|
|
576
631
|
opacity: expanded ? 1 : 0,
|
|
@@ -601,6 +656,7 @@ function BiampSidebarIconList({
|
|
|
601
656
|
minHeight: 0,
|
|
602
657
|
gap: "4px",
|
|
603
658
|
overflowY: "auto",
|
|
659
|
+
overscrollBehavior: "none",
|
|
604
660
|
...sx
|
|
605
661
|
},
|
|
606
662
|
...props,
|
|
@@ -616,7 +672,7 @@ function BiampSidebarIcon({
|
|
|
616
672
|
sx,
|
|
617
673
|
...props
|
|
618
674
|
}) {
|
|
619
|
-
const { expanded } = (0,
|
|
675
|
+
const { expanded } = (0, import_react2.useContext)(BiampSidebarContext);
|
|
620
676
|
const displayedSelectedIcon = selectedIcon ?? icon;
|
|
621
677
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
622
678
|
import_material2.ListItemButton,
|
|
@@ -701,7 +757,7 @@ function BiampSidebarComponent({
|
|
|
701
757
|
|
|
702
758
|
// src/BiampHeader/BiampHeader.tsx
|
|
703
759
|
var import_material3 = require("@mui/material");
|
|
704
|
-
var
|
|
760
|
+
var import_react3 = require("react");
|
|
705
761
|
var import_assets2 = require("@bwp-web/assets");
|
|
706
762
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
707
763
|
function BiampHeader({ children, sx, ...props }) {
|
|
@@ -944,7 +1000,7 @@ function BiampEndUserAppContent({
|
|
|
944
1000
|
sx,
|
|
945
1001
|
...props
|
|
946
1002
|
}) {
|
|
947
|
-
const isGrid =
|
|
1003
|
+
const isGrid = import_react3.Children.count(children) > 1;
|
|
948
1004
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
949
1005
|
import_material3.Stack,
|
|
950
1006
|
{
|
|
@@ -1099,7 +1155,7 @@ var import_assets3 = require("@bwp-web/assets");
|
|
|
1099
1155
|
|
|
1100
1156
|
// src/BiampTable/BiampTableStatusMessage.tsx
|
|
1101
1157
|
var import_material5 = require("@mui/material");
|
|
1102
|
-
var
|
|
1158
|
+
var import_react4 = require("react");
|
|
1103
1159
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1104
1160
|
function BiampTableStatusMessage({
|
|
1105
1161
|
icon,
|
|
@@ -1109,7 +1165,7 @@ function BiampTableStatusMessage({
|
|
|
1109
1165
|
...stackProps
|
|
1110
1166
|
}) {
|
|
1111
1167
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.Stack, { alignItems: "center", gap: 1.5, ...stackProps, children: [
|
|
1112
|
-
(0,
|
|
1168
|
+
(0, import_react4.cloneElement)(icon, {
|
|
1113
1169
|
"aria-hidden": true,
|
|
1114
1170
|
sx: { width: 56, height: 56, ...icon.props.sx }
|
|
1115
1171
|
}),
|
|
@@ -1152,24 +1208,24 @@ function BiampTableErrorState({
|
|
|
1152
1208
|
var import_material8 = require("@mui/material");
|
|
1153
1209
|
var import_assets5 = require("@bwp-web/assets");
|
|
1154
1210
|
var import_react_table = require("@tanstack/react-table");
|
|
1155
|
-
var
|
|
1211
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
1156
1212
|
|
|
1157
1213
|
// src/BiampTable/BiampTableTruncatedCell.tsx
|
|
1158
1214
|
var import_material6 = require("@mui/material");
|
|
1159
|
-
var
|
|
1215
|
+
var import_react5 = require("react");
|
|
1160
1216
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1161
1217
|
function BiampTableTruncatedCell({
|
|
1162
1218
|
children
|
|
1163
1219
|
}) {
|
|
1164
|
-
const textRef = (0,
|
|
1165
|
-
const [open, setOpen] = (0,
|
|
1166
|
-
const handleMouseEnter = (0,
|
|
1220
|
+
const textRef = (0, import_react5.useRef)(null);
|
|
1221
|
+
const [open, setOpen] = (0, import_react5.useState)(false);
|
|
1222
|
+
const handleMouseEnter = (0, import_react5.useCallback)(() => {
|
|
1167
1223
|
const el = textRef.current;
|
|
1168
1224
|
if (el && el.scrollWidth > el.clientWidth) {
|
|
1169
1225
|
setOpen(true);
|
|
1170
1226
|
}
|
|
1171
1227
|
}, []);
|
|
1172
|
-
const handleMouseLeave = (0,
|
|
1228
|
+
const handleMouseLeave = (0, import_react5.useCallback)(() => {
|
|
1173
1229
|
setOpen(false);
|
|
1174
1230
|
}, []);
|
|
1175
1231
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
@@ -1563,42 +1619,11 @@ function BiampTableRowInner({
|
|
|
1563
1619
|
function biampTableRowPropsAreEqual(prev, next) {
|
|
1564
1620
|
return prev.row.id === next.row.id && prev.row.original === next.row.original && prev.isSelected === next.isSelected && prev.isExpanded === next.isExpanded && prev.row.getVisibleCells().length === next.row.getVisibleCells().length && prev.enableRowSelection === next.enableRowSelection && prev.enableExpanding === next.enableExpanding && prev.alwaysExpanded === next.alwaysExpanded && prev.hasExpandableRows === next.hasExpandableRows && prev.selectChildrenWithParent === next.selectChildrenWithParent && prev.showExpandGuidelines === next.showExpandGuidelines && prev.onRowClick === next.onRowClick && prev.isRowClickable === next.isRowClickable && prev.getRowLabel === next.getRowLabel && prev.customColor === next.customColor && prev.rowSlotProps === next.rowSlotProps && prev.cellSlotProps === next.cellSlotProps;
|
|
1565
1621
|
}
|
|
1566
|
-
var BiampTableRow =
|
|
1622
|
+
var BiampTableRow = import_react6.default.memo(
|
|
1567
1623
|
BiampTableRowInner,
|
|
1568
1624
|
biampTableRowPropsAreEqual
|
|
1569
1625
|
);
|
|
1570
1626
|
|
|
1571
|
-
// src/BiampTable/useLoadingDelay.ts
|
|
1572
|
-
var import_react6 = require("react");
|
|
1573
|
-
function useLoadingDelay(loading, { delay = 150, minDuration = 500 } = {}) {
|
|
1574
|
-
const [status, setStatus] = (0, import_react6.useState)("idle");
|
|
1575
|
-
const timeoutRef = (0, import_react6.useRef)(null);
|
|
1576
|
-
function clearPending() {
|
|
1577
|
-
if (timeoutRef.current !== null) {
|
|
1578
|
-
clearTimeout(timeoutRef.current);
|
|
1579
|
-
timeoutRef.current = null;
|
|
1580
|
-
}
|
|
1581
|
-
}
|
|
1582
|
-
(0, import_react6.useEffect)(() => {
|
|
1583
|
-
if (loading && status === "idle") {
|
|
1584
|
-
clearPending();
|
|
1585
|
-
timeoutRef.current = setTimeout(() => {
|
|
1586
|
-
timeoutRef.current = setTimeout(() => {
|
|
1587
|
-
setStatus("ending");
|
|
1588
|
-
}, minDuration);
|
|
1589
|
-
setStatus("loading");
|
|
1590
|
-
}, delay);
|
|
1591
|
-
setStatus("delaying");
|
|
1592
|
-
}
|
|
1593
|
-
if (!loading && status !== "loading") {
|
|
1594
|
-
clearPending();
|
|
1595
|
-
setStatus("idle");
|
|
1596
|
-
}
|
|
1597
|
-
}, [loading, delay, minDuration, status]);
|
|
1598
|
-
(0, import_react6.useEffect)(() => clearPending, []);
|
|
1599
|
-
return status === "loading" || status === "ending";
|
|
1600
|
-
}
|
|
1601
|
-
|
|
1602
1627
|
// src/BiampTable/BiampTable.tsx
|
|
1603
1628
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1604
1629
|
var overlaySx = {
|