impact-ui 4.0.0-alpha.4 โ 4.0.0-alpha.5
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 +195 -4
- package/dist/components/FilterPanel/index.d.ts.map +1 -1
- package/dist/components/FilterPanel/index.js +98 -42
- package/dist/components/Notification/index.d.ts.map +1 -1
- package/dist/components/Notification/index.js +84 -58
- package/dist/components/Panel/index.d.ts.map +1 -1
- package/dist/components/Panel/index.js +22 -0
- package/dist/mcp-component-registry.json +1 -1
- package/dist/styles/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Impact Analytics UI Component Library - A modern, accessible React component library built with TypeScript and Vite (private npm package).
|
|
4
4
|
|
|
5
|
+
**Build Optimization & TypeScript Migration by: Narendra Kumar**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
5
9
|
## Features
|
|
6
10
|
|
|
7
11
|
- ๐จ **48+ Production-Ready Components** - Comprehensive UI component library
|
|
@@ -11,6 +15,154 @@ Impact Analytics UI Component Library - A modern, accessible React component lib
|
|
|
11
15
|
- ๐ญ **Storybook** - Interactive component documentation
|
|
12
16
|
- ๐งช **Well Tested** - Unit tests with accessibility checks
|
|
13
17
|
- ๐ฆ **Tree Shakeable** - Import only what you need
|
|
18
|
+
- ๐ **Optimized Build** - 77% smaller bundle size through advanced optimizations
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Build Optimization Journey (v4.0)
|
|
23
|
+
|
|
24
|
+
### Overview
|
|
25
|
+
|
|
26
|
+
The impact-ui library underwent a comprehensive build optimization overhaul, reducing the production bundle from **~12 MB to ~2 MB** - a **77% reduction** in bundle size. This optimization ensures faster install times, quicker CI/CD pipelines, and improved developer experience.
|
|
27
|
+
|
|
28
|
+
### Build Size Comparison
|
|
29
|
+
|
|
30
|
+
| Metric | Before Optimization | After Optimization | Reduction |
|
|
31
|
+
|--------|--------------------:|-------------------:|----------:|
|
|
32
|
+
| **Total dist size** | 12.0 MB | 2.0 MB | **-83%** |
|
|
33
|
+
| **JavaScript (runtime)** | 5.55 MB | 0.95 MB | **-83%** |
|
|
34
|
+
| **CSS bundle** | 2.06 MB | 0.57 MB | **-72%** |
|
|
35
|
+
| **TypeScript definitions** | 0.39 MB | 0.39 MB | 0% |
|
|
36
|
+
| **Bundled node_modules** | 3.1 MB | 0.02 MB | **-99%** |
|
|
37
|
+
| **Asset files (SVG/images)** | 2.7 MB | 0.12 MB | **-96%** |
|
|
38
|
+
|
|
39
|
+
### Optimization Techniques Applied
|
|
40
|
+
|
|
41
|
+
#### 1. Dependency Externalization Strategy
|
|
42
|
+
|
|
43
|
+
Moved all runtime dependencies to `external` in Rollup config, ensuring they are provided by the consuming application rather than bundled:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// vite.config.ts - EXTERNAL_DEPS array
|
|
47
|
+
const EXTERNAL_DEPS: (string | RegExp)[] = [
|
|
48
|
+
// React ecosystem
|
|
49
|
+
'react', 'react-dom', 'react/jsx-runtime',
|
|
50
|
+
|
|
51
|
+
// MUI & Emotion (prevents dual-instance conflicts)
|
|
52
|
+
/^@mui\//, /^@emotion\//,
|
|
53
|
+
|
|
54
|
+
// Heavy libraries externalized
|
|
55
|
+
/^@tiptap\//, /^prosemirror-/,
|
|
56
|
+
'react-select', 'react-hook-form',
|
|
57
|
+
'emoji-picker-react', 'tippy.js',
|
|
58
|
+
// ... 40+ packages externalized
|
|
59
|
+
];
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Impact:** Removed 3.1 MB from `dist/node_modules/`
|
|
63
|
+
|
|
64
|
+
#### 2. SVG Asset Optimization
|
|
65
|
+
|
|
66
|
+
Created `scripts/shrink-raster-svgs.mjs` to compress embedded raster images in SVG files:
|
|
67
|
+
|
|
68
|
+
| SVG File | Before | After | Savings |
|
|
69
|
+
|----------|-------:|------:|--------:|
|
|
70
|
+
| commentEmptyStateIcon.svg | 664 KB | 65 KB | **-90%** |
|
|
71
|
+
| no-filter-results.svg | 671 KB | 50 KB | **-93%** |
|
|
72
|
+
| excel-icon.svg | 254 KB | 16 KB | **-94%** |
|
|
73
|
+
| tableChat_bg.svg | 457 KB | 201 KB | **-56%** |
|
|
74
|
+
| file-upload.svg | 45 KB | 6 KB | **-87%** |
|
|
75
|
+
|
|
76
|
+
**Total SVG savings:** 2.14 MB reduced to 410 KB
|
|
77
|
+
|
|
78
|
+
#### 3. GIF Animation Compression
|
|
79
|
+
|
|
80
|
+
Applied lossy compression to animated GIFs in landing page assets:
|
|
81
|
+
|
|
82
|
+
| GIF File | Before | After | Savings |
|
|
83
|
+
|----------|-------:|------:|--------:|
|
|
84
|
+
| alan-gif.gif | 264 KB | 165 KB | **-37%** |
|
|
85
|
+
| multi-level.gif | 78 KB | 27 KB | **-65%** |
|
|
86
|
+
| aiml.gif | 57 KB | 27 KB | **-53%** |
|
|
87
|
+
| strategic-objectives.gif | 22 KB | 11 KB | **-50%** |
|
|
88
|
+
|
|
89
|
+
#### 4. Build Analyzer Relocation
|
|
90
|
+
|
|
91
|
+
Moved `rollup-plugin-visualizer` output from `dist/` to `build-reports/`:
|
|
92
|
+
- **Savings:** 567 KB removed from npm package
|
|
93
|
+
- **Benefit:** Build analysis available locally without shipping to consumers
|
|
94
|
+
|
|
95
|
+
#### 5. CSS Optimization
|
|
96
|
+
|
|
97
|
+
- Enabled `cssnano` for CSS minification
|
|
98
|
+
- Removed 70% base64-inlined images from CSS
|
|
99
|
+
- Configured `assetsInlineLimit` to emit files instead of inline data URIs
|
|
100
|
+
|
|
101
|
+
### TypeScript Migration Highlights
|
|
102
|
+
|
|
103
|
+
| Aspect | Legacy (v3.x) | Current (v4.0) |
|
|
104
|
+
|--------|---------------|----------------|
|
|
105
|
+
| **Type System** | PropTypes (runtime) | TypeScript (compile-time) |
|
|
106
|
+
| **Type Coverage** | 0% | **100%** |
|
|
107
|
+
| **IDE Support** | Limited | Full IntelliSense |
|
|
108
|
+
| **Build Tool** | Webpack | Vite (10x faster) |
|
|
109
|
+
| **Module Format** | CJS + UMD | Pure ESM |
|
|
110
|
+
| **Tree Shaking** | Partial | Full support |
|
|
111
|
+
| **Declaration Files** | Manual | Auto-generated |
|
|
112
|
+
|
|
113
|
+
### Build Performance
|
|
114
|
+
|
|
115
|
+
| Build Metric | Before | After | Improvement |
|
|
116
|
+
|--------------|-------:|------:|------------:|
|
|
117
|
+
| Cold build time | ~45s | ~8s | **5.6x faster** |
|
|
118
|
+
| Hot rebuild | ~12s | ~2s | **6x faster** |
|
|
119
|
+
| Type checking | N/A | ~6s | New capability |
|
|
120
|
+
| npm install (consumer) | ~15s | ~5s | **3x faster** |
|
|
121
|
+
|
|
122
|
+
### Vite Configuration Optimizations
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// Key optimizations in vite.config.ts
|
|
126
|
+
|
|
127
|
+
export default defineConfig({
|
|
128
|
+
build: {
|
|
129
|
+
// Tree-shaking: Each component is a separate entry
|
|
130
|
+
preserveModules: true,
|
|
131
|
+
preserveModulesRoot: 'src',
|
|
132
|
+
|
|
133
|
+
// Minification with Terser
|
|
134
|
+
minify: 'terser',
|
|
135
|
+
terserOptions: {
|
|
136
|
+
compress: { passes: 1 },
|
|
137
|
+
format: { comments: false },
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
// Prevent base64 bloat
|
|
141
|
+
assetsInlineLimit: () => false,
|
|
142
|
+
|
|
143
|
+
// Single CSS file for easy import
|
|
144
|
+
cssCodeSplit: false,
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Scripts Added for Optimization
|
|
150
|
+
|
|
151
|
+
| Script | Purpose |
|
|
152
|
+
|--------|---------|
|
|
153
|
+
| `scripts/shrink-raster-svgs.mjs` | Compress embedded PNGs in SVG files |
|
|
154
|
+
| `scripts/clean-dist.mjs` | Robust dist cleaning (handles macOS races) |
|
|
155
|
+
| `scripts/optimize-images.mjs` | SVGO + WebP conversion pipeline |
|
|
156
|
+
|
|
157
|
+
### Consumer Benefits
|
|
158
|
+
|
|
159
|
+
1. **Faster Installation:** npm install reduced from ~15s to ~5s
|
|
160
|
+
2. **Smaller Bundles:** Consumer app bundles are 77% smaller
|
|
161
|
+
3. **Better Tree Shaking:** Import only what you use
|
|
162
|
+
4. **Type Safety:** Full TypeScript support with auto-complete
|
|
163
|
+
5. **No Duplicate Dependencies:** Externalized deps use consumer's versions
|
|
164
|
+
|
|
165
|
+
---
|
|
14
166
|
|
|
15
167
|
## Installation
|
|
16
168
|
|
|
@@ -20,17 +172,39 @@ npm install @impactsmartsuite/impact-ui
|
|
|
20
172
|
|
|
21
173
|
## Usage
|
|
22
174
|
|
|
175
|
+
### Required Setup
|
|
176
|
+
|
|
177
|
+
This library uses MUI components internally. To ensure styles render correctly, wrap your app with `StyledEngineProvider`:
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
import { StyledEngineProvider } from '@mui/material/styles';
|
|
181
|
+
import '@impactsmartsuite/impact-ui/styles';
|
|
182
|
+
|
|
183
|
+
function App() {
|
|
184
|
+
return (
|
|
185
|
+
<StyledEngineProvider injectFirst>
|
|
186
|
+
{/* Your app content */}
|
|
187
|
+
</StyledEngineProvider>
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
> **Why is this needed?** impact-ui uses SCSS for styling, while MUI uses Emotion CSS-in-JS. Without `injectFirst`, MUI's styles are injected after your CSS, causing style conflicts. The `injectFirst` prop ensures MUI styles load first, allowing impact-ui's SCSS to take precedence.
|
|
193
|
+
|
|
23
194
|
### Basic Example
|
|
24
195
|
|
|
25
196
|
```typescript
|
|
197
|
+
import { StyledEngineProvider } from '@mui/material/styles';
|
|
26
198
|
import { Button } from '@impactsmartsuite/impact-ui';
|
|
27
199
|
import '@impactsmartsuite/impact-ui/styles';
|
|
28
200
|
|
|
29
201
|
function App() {
|
|
30
202
|
return (
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
203
|
+
<StyledEngineProvider injectFirst>
|
|
204
|
+
<Button variant="primary" size="large">
|
|
205
|
+
Click Me
|
|
206
|
+
</Button>
|
|
207
|
+
</StyledEngineProvider>
|
|
34
208
|
);
|
|
35
209
|
}
|
|
36
210
|
```
|
|
@@ -168,6 +342,23 @@ MIT
|
|
|
168
342
|
|
|
169
343
|
## Version
|
|
170
344
|
|
|
171
|
-
Current version: 4.0.0-alpha.
|
|
345
|
+
Current version: 4.0.0-alpha.4
|
|
172
346
|
|
|
173
347
|
See [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) for upgrading from v3.x.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Credits
|
|
352
|
+
|
|
353
|
+
**Build Optimization & TypeScript Migration:** Narendra Kumar
|
|
354
|
+
|
|
355
|
+
### Optimization Changelog
|
|
356
|
+
|
|
357
|
+
- Externalized 40+ runtime dependencies (3.1 MB saved)
|
|
358
|
+
- Created SVG raster compression pipeline (2.14 MB โ 410 KB)
|
|
359
|
+
- Implemented GIF lossy compression (50% average reduction)
|
|
360
|
+
- Removed base64 bloat from CSS bundle (70% โ 12%)
|
|
361
|
+
- Relocated build analyzer output from dist/
|
|
362
|
+
- Migrated entire codebase to TypeScript with 100% type coverage
|
|
363
|
+
- Configured Vite for optimal tree-shaking with preserveModules
|
|
364
|
+
- Added `StyledEngineProvider` requirement for MUI/SCSS compatibility
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FilterPanel/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,2BAA2B,CAAC;AAEnC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FilterPanel/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,2BAA2B,CAAC;AAEnC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAuC9C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,IAAc,EACd,MAAgB,EAChB,MAAM,EACN,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,YAAoB,EACpB,aAAa,EAAE,UAAU,EACzB,GAAG,WAAW,EACf,EAAE,gBAAgB,2CA+HlB;yBAzJe,WAAW"}
|
|
@@ -12,6 +12,21 @@ function getSizeClass(size) {
|
|
|
12
12
|
return "impact_drawer_filter_container_large";
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
+
const paperStyle = {
|
|
16
|
+
backgroundColor: "#ffffff",
|
|
17
|
+
background: "#ffffff"
|
|
18
|
+
};
|
|
19
|
+
const drawerRootSx = {
|
|
20
|
+
// Reset any background color set on the modal root by the theme
|
|
21
|
+
"&.MuiModal-root": {
|
|
22
|
+
background: "transparent",
|
|
23
|
+
backgroundColor: "transparent"
|
|
24
|
+
},
|
|
25
|
+
"&.MuiDrawer-root": {
|
|
26
|
+
background: "transparent",
|
|
27
|
+
backgroundColor: "transparent"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
15
30
|
function FilterPanel({
|
|
16
31
|
className,
|
|
17
32
|
title,
|
|
@@ -58,51 +73,92 @@ function FilterPanel({
|
|
|
58
73
|
const activeContent = (_a = activeItems[0]) == null ? void 0 : _a.children;
|
|
59
74
|
const containerClass = ["impact_drawer_filter_container", getSizeClass(size), className ?? ""].filter(Boolean).join(" ");
|
|
60
75
|
const bodyClass = hasFooter ? "impact_drawer_filter_body" : "impact_drawer_filter_body impact_drawer_filter_footer_no_buttons";
|
|
76
|
+
const { PaperProps: consumerPaperProps, sx: consumerSx, ...restDrawerProps } = drawerProps;
|
|
61
77
|
if (!hasFooter) {
|
|
62
|
-
return /* @__PURE__ */ jsx(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/* @__PURE__ */ jsxs("div", { className: "impact_drawer_filter_container_right_panel", children: [
|
|
75
|
-
alwaysRender ? filters.map((item) => /* @__PURE__ */ jsx(
|
|
76
|
-
"div",
|
|
77
|
-
{
|
|
78
|
-
className: "impact_drawer_filter_body",
|
|
79
|
-
style: {
|
|
80
|
-
display: item.value === active ? "block" : "none"
|
|
81
|
-
},
|
|
82
|
-
children: item.children
|
|
83
|
-
},
|
|
84
|
-
item.id ?? item.value
|
|
85
|
-
)) : /* @__PURE__ */ jsx("div", { className: "impact_drawer_filter_body", children: activeContent }),
|
|
86
|
-
/* @__PURE__ */ jsx(
|
|
87
|
-
PanelFooter,
|
|
88
|
-
{
|
|
89
|
-
primaryButtonLabel,
|
|
90
|
-
primaryButtonProps,
|
|
91
|
-
quaternaryButtonLabel,
|
|
92
|
-
quaternaryButtonProps,
|
|
93
|
-
secondaryButtonLabel,
|
|
94
|
-
secondaryButtonProps,
|
|
95
|
-
tertiaryButtonLabel,
|
|
96
|
-
tertiaryButtonProps,
|
|
97
|
-
onPrimaryButtonClick,
|
|
98
|
-
onQuaternaryButtonClick,
|
|
99
|
-
onSecondaryButtonClick,
|
|
100
|
-
onTertiaryButtonClick
|
|
78
|
+
return /* @__PURE__ */ jsx(
|
|
79
|
+
Drawer,
|
|
80
|
+
{
|
|
81
|
+
anchor,
|
|
82
|
+
open: isOpen,
|
|
83
|
+
onClose: handleToggleDrawer,
|
|
84
|
+
...restDrawerProps,
|
|
85
|
+
PaperProps: {
|
|
86
|
+
...consumerPaperProps,
|
|
87
|
+
style: {
|
|
88
|
+
...consumerPaperProps == null ? void 0 : consumerPaperProps.style,
|
|
89
|
+
...paperStyle
|
|
101
90
|
}
|
|
102
|
-
|
|
91
|
+
},
|
|
92
|
+
sx: {
|
|
93
|
+
...consumerSx,
|
|
94
|
+
...drawerRootSx
|
|
95
|
+
},
|
|
96
|
+
children: /* @__PURE__ */ jsxs("div", { className: containerClass, "data-testid": dataTestId, children: [
|
|
97
|
+
/* @__PURE__ */ jsx(FilterPanelHeader, { title, toggleDrawer: closeHandler }),
|
|
98
|
+
/* @__PURE__ */ jsxs("div", { className: "impact-drawer-filter-main-container", children: [
|
|
99
|
+
/* @__PURE__ */ jsx(PanelSidebar, { active, filters, setActive }),
|
|
100
|
+
/* @__PURE__ */ jsx("div", { className: "impact_drawer_filter_container_right_panel", children: /* @__PURE__ */ jsx("div", { className: bodyClass, children: activeContent }) })
|
|
101
|
+
] })
|
|
102
|
+
] })
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
return /* @__PURE__ */ jsx(
|
|
107
|
+
Drawer,
|
|
108
|
+
{
|
|
109
|
+
anchor,
|
|
110
|
+
open: isOpen,
|
|
111
|
+
onClose: handleToggleDrawer,
|
|
112
|
+
...restDrawerProps,
|
|
113
|
+
PaperProps: {
|
|
114
|
+
...consumerPaperProps,
|
|
115
|
+
style: {
|
|
116
|
+
...consumerPaperProps == null ? void 0 : consumerPaperProps.style,
|
|
117
|
+
...paperStyle
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
sx: {
|
|
121
|
+
...consumerSx,
|
|
122
|
+
...drawerRootSx
|
|
123
|
+
},
|
|
124
|
+
children: /* @__PURE__ */ jsxs("div", { className: containerClass, "data-testid": dataTestId, children: [
|
|
125
|
+
/* @__PURE__ */ jsx(FilterPanelHeader, { title, toggleDrawer: closeHandler }),
|
|
126
|
+
/* @__PURE__ */ jsxs("div", { className: "impact-drawer-filter-main-container", children: [
|
|
127
|
+
/* @__PURE__ */ jsx(PanelSidebar, { active, filters, setActive }),
|
|
128
|
+
/* @__PURE__ */ jsxs("div", { className: "impact_drawer_filter_container_right_panel", children: [
|
|
129
|
+
alwaysRender ? filters.map((item) => /* @__PURE__ */ jsx(
|
|
130
|
+
"div",
|
|
131
|
+
{
|
|
132
|
+
className: "impact_drawer_filter_body",
|
|
133
|
+
style: {
|
|
134
|
+
display: item.value === active ? "block" : "none"
|
|
135
|
+
},
|
|
136
|
+
children: item.children
|
|
137
|
+
},
|
|
138
|
+
item.id ?? item.value
|
|
139
|
+
)) : /* @__PURE__ */ jsx("div", { className: "impact_drawer_filter_body", children: activeContent }),
|
|
140
|
+
/* @__PURE__ */ jsx(
|
|
141
|
+
PanelFooter,
|
|
142
|
+
{
|
|
143
|
+
primaryButtonLabel,
|
|
144
|
+
primaryButtonProps,
|
|
145
|
+
quaternaryButtonLabel,
|
|
146
|
+
quaternaryButtonProps,
|
|
147
|
+
secondaryButtonLabel,
|
|
148
|
+
secondaryButtonProps,
|
|
149
|
+
tertiaryButtonLabel,
|
|
150
|
+
tertiaryButtonProps,
|
|
151
|
+
onPrimaryButtonClick,
|
|
152
|
+
onQuaternaryButtonClick,
|
|
153
|
+
onSecondaryButtonClick,
|
|
154
|
+
onTertiaryButtonClick
|
|
155
|
+
}
|
|
156
|
+
)
|
|
157
|
+
] })
|
|
158
|
+
] })
|
|
103
159
|
] })
|
|
104
|
-
|
|
105
|
-
|
|
160
|
+
}
|
|
161
|
+
);
|
|
106
162
|
}
|
|
107
163
|
FilterPanel.displayName = "FilterPanel";
|
|
108
164
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Notification/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,4BAA4B,CAAC;AAEpC,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAwB1D,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAgB,EAChB,MAAM,EACN,SAAS,EACT,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAA0B,EAC1B,4BAA4B,EAC5B,aAAa,EACb,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,aAA4B,EAC5B,4BAA4B,EAC5B,eAAe,EACf,YAAmB,EACnB,aAAqB,EACrB,iBAAyB,EACzB,qBAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,EAAE,iBAAiB,2CAqFnB;yBA3He,YAAY"}
|
|
@@ -5,6 +5,20 @@ import { NotificationBody } from "./NotificationBody/index.js";
|
|
|
5
5
|
import { NotificationFooter } from "./NotificationFooter.js";
|
|
6
6
|
import { NotificationHeader } from "./NotificationHeader.js";
|
|
7
7
|
/* empty css */
|
|
8
|
+
const paperStyle = {
|
|
9
|
+
backgroundColor: "#ffffff",
|
|
10
|
+
background: "#ffffff"
|
|
11
|
+
};
|
|
12
|
+
const drawerRootSx = {
|
|
13
|
+
"&.MuiModal-root": {
|
|
14
|
+
background: "transparent",
|
|
15
|
+
backgroundColor: "transparent"
|
|
16
|
+
},
|
|
17
|
+
"&.MuiDrawer-root": {
|
|
18
|
+
background: "transparent",
|
|
19
|
+
backgroundColor: "transparent"
|
|
20
|
+
}
|
|
21
|
+
};
|
|
8
22
|
function Notification({
|
|
9
23
|
title,
|
|
10
24
|
anchor = "right",
|
|
@@ -60,66 +74,78 @@ function Notification({
|
|
|
60
74
|
},
|
|
61
75
|
[handleClose, isOpen, setIsOpen]
|
|
62
76
|
);
|
|
63
|
-
return /* @__PURE__ */ jsx(
|
|
64
|
-
|
|
77
|
+
return /* @__PURE__ */ jsx(
|
|
78
|
+
Drawer,
|
|
65
79
|
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
80
|
+
anchor,
|
|
81
|
+
open: isOpen,
|
|
82
|
+
PaperProps: {
|
|
83
|
+
style: paperStyle
|
|
84
|
+
},
|
|
85
|
+
sx: drawerRootSx,
|
|
86
|
+
onClose: toggleDrawer(anchor, false),
|
|
87
|
+
children: /* @__PURE__ */ jsxs(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
className: `impact-notification-container ${expand ? "impact-notification-container-expand" : ""} ${className ?? ""}`.trim(),
|
|
91
|
+
children: [
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
NotificationHeader,
|
|
94
|
+
{
|
|
95
|
+
anchor,
|
|
96
|
+
expand,
|
|
97
|
+
setExpand,
|
|
98
|
+
showBadgeLoader,
|
|
99
|
+
title,
|
|
100
|
+
toggleDrawer
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx("div", { className: "impact-notification-body-container" }), children: /* @__PURE__ */ jsx(
|
|
104
|
+
BodyComponent,
|
|
105
|
+
{
|
|
106
|
+
activeBadge,
|
|
107
|
+
activeNotiTab,
|
|
108
|
+
badgesList,
|
|
109
|
+
customNotificationJsx,
|
|
110
|
+
displayFormat,
|
|
111
|
+
emptyStateDescription,
|
|
112
|
+
emptyStateTitle,
|
|
113
|
+
expand: !primaryButtonLabel && !secondaryButtonLabel,
|
|
114
|
+
handleMarkReadAll,
|
|
115
|
+
handleMoveAllPending,
|
|
116
|
+
handleNotificationDeleteAll,
|
|
117
|
+
handleSelectAll,
|
|
118
|
+
handleTabChange,
|
|
119
|
+
isChipsExpandable,
|
|
120
|
+
isDeleteAlwaysVisible,
|
|
121
|
+
isEmptyState,
|
|
122
|
+
isHoverOnCard,
|
|
123
|
+
isWithSearch,
|
|
124
|
+
moveToPendingDropdownOptions,
|
|
125
|
+
notificationPanels: notificationPanels ?? [],
|
|
126
|
+
notificationTabs: notificationTabs ?? [],
|
|
127
|
+
scrollThreshold,
|
|
128
|
+
setNotificationPanels,
|
|
129
|
+
showBadgeLoader,
|
|
130
|
+
showNotificationListLoader,
|
|
131
|
+
onNotificationScrollToBottom,
|
|
132
|
+
onSettingButtonClick
|
|
133
|
+
}
|
|
134
|
+
) }),
|
|
135
|
+
/* @__PURE__ */ jsx(
|
|
136
|
+
NotificationFooter,
|
|
137
|
+
{
|
|
138
|
+
primaryButtonLabel,
|
|
139
|
+
secondaryButtonLabel,
|
|
140
|
+
onPrimaryButtonClick,
|
|
141
|
+
onSecondaryButtonClick
|
|
142
|
+
}
|
|
143
|
+
)
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
)
|
|
121
147
|
}
|
|
122
|
-
)
|
|
148
|
+
);
|
|
123
149
|
}
|
|
124
150
|
Notification.displayName = "Notification";
|
|
125
151
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Panel/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Panel/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAC3D,OAAO,qBAAqB,CAAC;AAE7B,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAiCxE,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,KAAK,EACL,IAAI,EACJ,MAAgB,EAChB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,EACL,MAAa,EACb,GAAG,IAAI,EACR,EAAE,UAAU,2CA2GZ"}
|
|
@@ -10,6 +10,20 @@ function getSize(size) {
|
|
|
10
10
|
return "impact_drawer_container_large";
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
const paperStyle = {
|
|
14
|
+
backgroundColor: "#ffffff",
|
|
15
|
+
background: "#ffffff"
|
|
16
|
+
};
|
|
17
|
+
const drawerRootSx = {
|
|
18
|
+
"&.MuiModal-root": {
|
|
19
|
+
background: "transparent",
|
|
20
|
+
backgroundColor: "transparent"
|
|
21
|
+
},
|
|
22
|
+
"&.MuiDrawer-root": {
|
|
23
|
+
background: "transparent",
|
|
24
|
+
backgroundColor: "transparent"
|
|
25
|
+
}
|
|
26
|
+
};
|
|
13
27
|
function Panel({
|
|
14
28
|
className,
|
|
15
29
|
title,
|
|
@@ -45,7 +59,11 @@ function Panel({
|
|
|
45
59
|
{
|
|
46
60
|
anchor,
|
|
47
61
|
open,
|
|
62
|
+
PaperProps: {
|
|
63
|
+
style: paperStyle
|
|
64
|
+
},
|
|
48
65
|
sx: {
|
|
66
|
+
...drawerRootSx,
|
|
49
67
|
"& .MuiDrawer-paper": {
|
|
50
68
|
zIndex: `${zIndex}`
|
|
51
69
|
}
|
|
@@ -87,7 +105,11 @@ function Panel({
|
|
|
87
105
|
{
|
|
88
106
|
anchor,
|
|
89
107
|
open,
|
|
108
|
+
PaperProps: {
|
|
109
|
+
style: paperStyle
|
|
110
|
+
},
|
|
90
111
|
sx: {
|
|
112
|
+
...drawerRootSx,
|
|
91
113
|
"& .MuiDrawer-paper": {
|
|
92
114
|
zIndex: `${zIndex}`
|
|
93
115
|
}
|