pne-ui 3.0.9 → 3.0.15
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/cjs/common/responsive/breakpoints.d.ts +3 -0
- package/cjs/common/responsive/breakpoints.js +21 -0
- package/cjs/common/responsive/breakpoints.js.map +1 -0
- package/cjs/component/cloudscape/CloudscapeBoardStyles.d.ts +10 -0
- package/cjs/component/cloudscape/CloudscapeBoardStyles.js +46 -0
- package/cjs/component/cloudscape/CloudscapeBoardStyles.js.map +1 -0
- package/cjs/component/cloudscape/CloudscapeThemeProvider.d.ts +8 -0
- package/cjs/component/cloudscape/CloudscapeThemeProvider.js +20 -0
- package/cjs/component/cloudscape/CloudscapeThemeProvider.js.map +1 -0
- package/cjs/component/cloudscape/boardI18n.d.ts +10 -0
- package/cjs/component/cloudscape/boardI18n.js +51 -0
- package/cjs/component/cloudscape/boardI18n.js.map +1 -0
- package/cjs/component/cloudscape/cloudscapeTheme.d.ts +6 -0
- package/cjs/component/cloudscape/cloudscapeTheme.js +14 -0
- package/cjs/component/cloudscape/cloudscapeTheme.js.map +1 -0
- package/cjs/component/fab/PneFloatingActionButtons.d.ts +27 -0
- package/cjs/component/fab/PneFloatingActionButtons.js +41 -0
- package/cjs/component/fab/PneFloatingActionButtons.js.map +1 -0
- package/cjs/component/overlay/PneOverlayHost.d.ts +17 -0
- package/cjs/component/overlay/PneOverlayHost.js +82 -0
- package/cjs/component/overlay/PneOverlayHost.js.map +1 -0
- package/cjs/component/overlay/overlayStore.d.ts +11 -0
- package/cjs/component/overlay/overlayStore.js +38 -0
- package/cjs/component/overlay/overlayStore.js.map +1 -0
- package/cjs/component/overlay/types.d.ts +26 -0
- package/cjs/component/overlay/types.js +3 -0
- package/cjs/component/overlay/types.js.map +1 -0
- package/cjs/component/responsive/useBreakpoint.d.ts +8 -0
- package/cjs/component/responsive/useBreakpoint.js +21 -0
- package/cjs/component/responsive/useBreakpoint.js.map +1 -0
- package/cjs/component/widget-board/WidgetBoard.d.ts +7 -0
- package/cjs/component/widget-board/WidgetBoard.js +302 -0
- package/cjs/component/widget-board/WidgetBoard.js.map +1 -0
- package/cjs/component/widget-board/index.d.ts +2 -0
- package/cjs/component/widget-board/index.js +6 -0
- package/cjs/component/widget-board/index.js.map +1 -0
- package/cjs/component/widget-board/types.d.ts +66 -0
- package/cjs/component/widget-board/types.js +3 -0
- package/cjs/component/widget-board/types.js.map +1 -0
- package/cjs/exports/buttons.d.ts +2 -0
- package/cjs/exports/buttons.js +11 -0
- package/cjs/exports/buttons.js.map +1 -0
- package/cjs/exports/cloudscape.d.ts +5 -0
- package/cjs/exports/cloudscape.js +15 -0
- package/cjs/exports/cloudscape.js.map +1 -0
- package/cjs/exports/entities.d.ts +2 -0
- package/cjs/exports/entities.js +8 -0
- package/cjs/exports/entities.js.map +1 -0
- package/cjs/exports/fab.d.ts +1 -0
- package/cjs/exports/fab.js +6 -0
- package/cjs/exports/fab.js.map +1 -0
- package/cjs/exports/inputs.d.ts +10 -0
- package/cjs/exports/inputs.js +23 -0
- package/cjs/exports/inputs.js.map +1 -0
- package/cjs/exports/modals.d.ts +2 -0
- package/cjs/exports/modals.js +11 -0
- package/cjs/exports/modals.js.map +1 -0
- package/cjs/exports/overlay.d.ts +3 -0
- package/cjs/exports/overlay.js +11 -0
- package/cjs/exports/overlay.js.map +1 -0
- package/cjs/exports/search.d.ts +7 -0
- package/cjs/exports/search.js +21 -0
- package/cjs/exports/search.js.map +1 -0
- package/cjs/exports/table.d.ts +12 -0
- package/cjs/exports/table.js +25 -0
- package/cjs/exports/table.js.map +1 -0
- package/cjs/exports/theme.d.ts +2 -0
- package/cjs/exports/theme.js +6 -0
- package/cjs/exports/theme.js.map +1 -0
- package/cjs/exports/utils.d.ts +4 -0
- package/cjs/exports/utils.js +16 -0
- package/cjs/exports/utils.js.map +1 -0
- package/cjs/index.d.ts +12 -37
- package/cjs/index.js +11 -70
- package/cjs/index.js.map +1 -1
- package/esm/common/responsive/breakpoints.d.ts +3 -0
- package/esm/common/responsive/breakpoints.js +17 -0
- package/esm/common/responsive/breakpoints.js.map +1 -0
- package/esm/component/cloudscape/CloudscapeBoardStyles.d.ts +10 -0
- package/esm/component/cloudscape/CloudscapeBoardStyles.js +41 -0
- package/esm/component/cloudscape/CloudscapeBoardStyles.js.map +1 -0
- package/esm/component/cloudscape/CloudscapeThemeProvider.d.ts +8 -0
- package/esm/component/cloudscape/CloudscapeThemeProvider.js +15 -0
- package/esm/component/cloudscape/CloudscapeThemeProvider.js.map +1 -0
- package/esm/component/cloudscape/boardI18n.d.ts +10 -0
- package/esm/component/cloudscape/boardI18n.js +47 -0
- package/esm/component/cloudscape/boardI18n.js.map +1 -0
- package/esm/component/cloudscape/cloudscapeTheme.d.ts +6 -0
- package/esm/component/cloudscape/cloudscapeTheme.js +11 -0
- package/esm/component/cloudscape/cloudscapeTheme.js.map +1 -0
- package/esm/component/fab/PneFloatingActionButtons.d.ts +27 -0
- package/esm/component/fab/PneFloatingActionButtons.js +36 -0
- package/esm/component/fab/PneFloatingActionButtons.js.map +1 -0
- package/esm/component/overlay/PneOverlayHost.d.ts +17 -0
- package/esm/component/overlay/PneOverlayHost.js +77 -0
- package/esm/component/overlay/PneOverlayHost.js.map +1 -0
- package/esm/component/overlay/overlayStore.d.ts +11 -0
- package/esm/component/overlay/overlayStore.js +35 -0
- package/esm/component/overlay/overlayStore.js.map +1 -0
- package/esm/component/overlay/types.d.ts +26 -0
- package/esm/component/overlay/types.js +2 -0
- package/esm/component/overlay/types.js.map +1 -0
- package/esm/component/responsive/useBreakpoint.d.ts +8 -0
- package/esm/component/responsive/useBreakpoint.js +17 -0
- package/esm/component/responsive/useBreakpoint.js.map +1 -0
- package/esm/component/widget-board/WidgetBoard.d.ts +7 -0
- package/esm/component/widget-board/WidgetBoard.js +298 -0
- package/esm/component/widget-board/WidgetBoard.js.map +1 -0
- package/esm/component/widget-board/index.d.ts +2 -0
- package/esm/component/widget-board/index.js +3 -0
- package/esm/component/widget-board/index.js.map +1 -0
- package/esm/component/widget-board/types.d.ts +66 -0
- package/esm/component/widget-board/types.js +2 -0
- package/esm/component/widget-board/types.js.map +1 -0
- package/esm/exports/buttons.d.ts +2 -0
- package/esm/exports/buttons.js +3 -0
- package/esm/exports/buttons.js.map +1 -0
- package/esm/exports/cloudscape.d.ts +5 -0
- package/esm/exports/cloudscape.js +6 -0
- package/esm/exports/cloudscape.js.map +1 -0
- package/esm/exports/entities.d.ts +2 -0
- package/esm/exports/entities.js +3 -0
- package/esm/exports/entities.js.map +1 -0
- package/esm/exports/fab.d.ts +1 -0
- package/esm/exports/fab.js +2 -0
- package/esm/exports/fab.js.map +1 -0
- package/esm/exports/inputs.d.ts +10 -0
- package/esm/exports/inputs.js +9 -0
- package/esm/exports/inputs.js.map +1 -0
- package/esm/exports/modals.d.ts +2 -0
- package/esm/exports/modals.js +3 -0
- package/esm/exports/modals.js.map +1 -0
- package/esm/exports/overlay.d.ts +3 -0
- package/esm/exports/overlay.js +4 -0
- package/esm/exports/overlay.js.map +1 -0
- package/esm/exports/search.d.ts +7 -0
- package/esm/exports/search.js +7 -0
- package/esm/exports/search.js.map +1 -0
- package/esm/exports/table.d.ts +12 -0
- package/esm/exports/table.js +10 -0
- package/esm/exports/table.js.map +1 -0
- package/esm/exports/theme.d.ts +2 -0
- package/esm/exports/theme.js +2 -0
- package/esm/exports/theme.js.map +1 -0
- package/esm/exports/utils.d.ts +4 -0
- package/esm/exports/utils.js +5 -0
- package/esm/exports/utils.js.map +1 -0
- package/esm/index.d.ts +12 -37
- package/esm/index.js +11 -33
- package/esm/index.js.map +1 -1
- package/package.json +139 -133
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveBreakpoint = exports.DEFAULT_BREAKPOINTS = void 0;
|
|
4
|
+
exports.DEFAULT_BREAKPOINTS = [360, 640, 800, 1024, 1600, 2500];
|
|
5
|
+
const resolveBreakpoint = (width, breakpoints = exports.DEFAULT_BREAKPOINTS) => {
|
|
6
|
+
if (!width || Number.isNaN(width)) {
|
|
7
|
+
return breakpoints[0];
|
|
8
|
+
}
|
|
9
|
+
let match = breakpoints[0];
|
|
10
|
+
for (const breakpoint of breakpoints) {
|
|
11
|
+
if (width >= breakpoint) {
|
|
12
|
+
match = breakpoint;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return match;
|
|
19
|
+
};
|
|
20
|
+
exports.resolveBreakpoint = resolveBreakpoint;
|
|
21
|
+
//# sourceMappingURL=breakpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../../src/common/responsive/breakpoints.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAItE,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,cAAiC,2BAAmB,EAAU,EAAE;IAC9G,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAC1B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;YACtB,KAAK,GAAG,UAAU,CAAA;QACtB,CAAC;aAAM,CAAC;YACJ,MAAK;QACT,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAfY,QAAA,iBAAiB,qBAe7B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type CloudscapeBoardStylesProps = {
|
|
3
|
+
hideNavigationArrows?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Global CSS overrides for Cloudscape Board containers to flatten chrome
|
|
7
|
+
* and trim padding on small screens. Keeps arrows hidden by default.
|
|
8
|
+
*/
|
|
9
|
+
export declare function CloudscapeBoardStyles({ hideNavigationArrows }: CloudscapeBoardStylesProps): React.JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudscapeBoardStyles = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
/**
|
|
8
|
+
* Global CSS overrides for Cloudscape Board containers to flatten chrome
|
|
9
|
+
* and trim padding on small screens. Keeps arrows hidden by default.
|
|
10
|
+
*/
|
|
11
|
+
function CloudscapeBoardStyles({ hideNavigationArrows = true }) {
|
|
12
|
+
const navigationStyles = hideNavigationArrows
|
|
13
|
+
? {
|
|
14
|
+
'.awsui_direction-button-wrapper, [class*="direction-button-wrapper"]': {
|
|
15
|
+
display: 'none !important',
|
|
16
|
+
visibility: 'hidden !important',
|
|
17
|
+
opacity: '0 !important',
|
|
18
|
+
pointerEvents: 'none !important',
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
: {};
|
|
22
|
+
return (react_1.default.createElement(material_1.GlobalStyles, { styles: {
|
|
23
|
+
'[class^="awsui_container-override"], [class*=" awsui_container-override"]': {
|
|
24
|
+
boxShadow: 'none !important',
|
|
25
|
+
border: '1px solid #e6e6e6 !important',
|
|
26
|
+
borderRadius: '0 !important',
|
|
27
|
+
},
|
|
28
|
+
'[class^="awsui_root_"], [class*=" awsui_root_"]': {
|
|
29
|
+
boxShadow: 'none !important',
|
|
30
|
+
borderRadius: '0 !important',
|
|
31
|
+
},
|
|
32
|
+
...navigationStyles,
|
|
33
|
+
'@media (max-width: 600px)': {
|
|
34
|
+
'[data-awsui-board]': {
|
|
35
|
+
paddingLeft: '0 !important',
|
|
36
|
+
paddingRight: '0 !important',
|
|
37
|
+
},
|
|
38
|
+
'[data-awsui-board-item]': {
|
|
39
|
+
marginLeft: '0 !important',
|
|
40
|
+
marginRight: '0 !important',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
} }));
|
|
44
|
+
}
|
|
45
|
+
exports.CloudscapeBoardStyles = CloudscapeBoardStyles;
|
|
46
|
+
//# sourceMappingURL=CloudscapeBoardStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudscapeBoardStyles.js","sourceRoot":"","sources":["../../../src/component/cloudscape/CloudscapeBoardStyles.tsx"],"names":[],"mappings":";;;;AAAA,4CAA4C;AAC5C,0DAAyB;AAMzB;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,EAA8B;IAC7F,MAAM,gBAAgB,GAAG,oBAAoB;QACzC,CAAC,CAAC;YACE,sEAAsE,EAAE;gBACpE,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,mBAAmB;gBAC/B,OAAO,EAAE,cAAc;gBACvB,aAAa,EAAE,iBAAiB;aACnC;SACJ;QACD,CAAC,CAAC,EAAE,CAAA;IAER,OAAO,CACH,8BAAC,uBAAY,IACT,MAAM,EAAE;YACJ,2EAA2E,EAAE;gBACzE,SAAS,EAAE,iBAAiB;gBAC5B,MAAM,EAAE,8BAA8B;gBACtC,YAAY,EAAE,cAAc;aAC/B;YACD,iDAAiD,EAAE;gBAC/C,SAAS,EAAE,iBAAiB;gBAC5B,YAAY,EAAE,cAAc;aAC/B;YACD,GAAG,gBAAgB;YACnB,2BAA2B,EAAE;gBACzB,oBAAoB,EAAE;oBAClB,WAAW,EAAE,cAAc;oBAC3B,YAAY,EAAE,cAAc;iBAC/B;gBACD,yBAAyB,EAAE;oBACvB,UAAU,EAAE,cAAc;oBAC1B,WAAW,EAAE,cAAc;iBAC9B;aACJ;SACJ,GACH,CACL,CAAA;AACL,CAAC;AAtCD,sDAsCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Runtime Cloudscape theming hook. Applies our theme on mount and resets on unmount.
|
|
4
|
+
*/
|
|
5
|
+
export declare function CloudscapeThemeProvider({ children }: {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}): React.JSX.Element;
|
|
8
|
+
export default CloudscapeThemeProvider;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudscapeThemeProvider = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const theming_1 = require("@cloudscape-design/components/theming");
|
|
6
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
const cloudscapeTheme_1 = require("./cloudscapeTheme");
|
|
8
|
+
/**
|
|
9
|
+
* Runtime Cloudscape theming hook. Applies our theme on mount and resets on unmount.
|
|
10
|
+
*/
|
|
11
|
+
function CloudscapeThemeProvider({ children }) {
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
const { reset } = (0, theming_1.applyTheme)({ theme: cloudscapeTheme_1.cloudscapeTheme });
|
|
14
|
+
return () => reset();
|
|
15
|
+
}, []);
|
|
16
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
17
|
+
}
|
|
18
|
+
exports.CloudscapeThemeProvider = CloudscapeThemeProvider;
|
|
19
|
+
exports.default = CloudscapeThemeProvider;
|
|
20
|
+
//# sourceMappingURL=CloudscapeThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudscapeThemeProvider.js","sourceRoot":"","sources":["../../../src/component/cloudscape/CloudscapeThemeProvider.tsx"],"names":[],"mappings":";;;;AAAA,mEAAkE;AAClE,uDAAwC;AACxC,uDAAmD;AAEnD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAiC;IAC/E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAU,EAAC,EAAE,KAAK,EAAE,iCAAe,EAAE,CAAC,CAAA;QACxD,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,8DAAG,QAAQ,CAAI,CAAA;AAC1B,CAAC;AAPD,0DAOC;AAED,kBAAe,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BoardProps } from '@cloudscape-design/board-components/board';
|
|
2
|
+
import type { BoardItemProps } from '@cloudscape-design/board-components/board-item';
|
|
3
|
+
/**
|
|
4
|
+
* Shared i18n strings for Cloudscape board items.
|
|
5
|
+
*/
|
|
6
|
+
export declare const boardItemI18nStrings: BoardItemProps.I18nStrings;
|
|
7
|
+
/**
|
|
8
|
+
* Generates Cloudscape board i18n strings that reuse a title getter for announcements.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createBoardI18nStrings<T>(getTitle: (item: BoardProps.Item<T>) => string): BoardProps.I18nStrings<T>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBoardI18nStrings = exports.boardItemI18nStrings = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Shared i18n strings for Cloudscape board items.
|
|
6
|
+
*/
|
|
7
|
+
exports.boardItemI18nStrings = {
|
|
8
|
+
dragHandleAriaLabel: 'Drag handle',
|
|
9
|
+
dragHandleAriaDescription: 'Use Space or Enter to activate drag, arrow keys to move, Space or Enter to submit, or Escape to discard. Temporarily disable screen reader navigation if it interferes with arrow keys.',
|
|
10
|
+
resizeHandleAriaLabel: 'Resize handle',
|
|
11
|
+
resizeHandleAriaDescription: 'Use Space or Enter to activate resize, arrow keys to move, Space or Enter to submit, or Escape to discard. Temporarily disable screen reader navigation if it interferes with arrow keys.',
|
|
12
|
+
};
|
|
13
|
+
function createAnnouncement(operationAnnouncement, conflicts, disturbed, getTitle) {
|
|
14
|
+
const conflictsAnnouncement = conflicts.length > 0 ? `Conflicts with ${conflicts.map(c => getTitle(c)).join(', ')}.` : '';
|
|
15
|
+
const disturbedAnnouncement = disturbed.length > 0 ? `Disturbed ${disturbed.length} items.` : '';
|
|
16
|
+
return [operationAnnouncement, conflictsAnnouncement, disturbedAnnouncement].filter(Boolean).join(' ');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generates Cloudscape board i18n strings that reuse a title getter for announcements.
|
|
20
|
+
*/
|
|
21
|
+
function createBoardI18nStrings(getTitle) {
|
|
22
|
+
return {
|
|
23
|
+
liveAnnouncementDndStarted: operationType => (operationType === 'resize' ? 'Resizing' : 'Dragging'),
|
|
24
|
+
liveAnnouncementDndItemReordered: operation => {
|
|
25
|
+
const columns = `column ${operation.placement.x + 1}`;
|
|
26
|
+
const rows = `row ${operation.placement.y + 1}`;
|
|
27
|
+
return createAnnouncement(`Item moved to ${operation.direction === 'horizontal' ? columns : rows}.`, operation.conflicts, operation.disturbed, getTitle);
|
|
28
|
+
},
|
|
29
|
+
liveAnnouncementDndItemResized: operation => {
|
|
30
|
+
const columnsConstraint = operation.isMinimalColumnsReached ? ' (minimal)' : '';
|
|
31
|
+
const rowsConstraint = operation.isMinimalRowsReached ? ' (minimal)' : '';
|
|
32
|
+
const sizeAnnouncement = operation.direction === 'horizontal'
|
|
33
|
+
? `columns ${operation.placement.width}${columnsConstraint}`
|
|
34
|
+
: `rows ${operation.placement.height}${rowsConstraint}`;
|
|
35
|
+
return createAnnouncement(`Item resized to ${sizeAnnouncement}.`, operation.conflicts, operation.disturbed, getTitle);
|
|
36
|
+
},
|
|
37
|
+
liveAnnouncementDndItemInserted: operation => {
|
|
38
|
+
const columns = `column ${operation.placement.x + 1}`;
|
|
39
|
+
const rows = `row ${operation.placement.y + 1}`;
|
|
40
|
+
return createAnnouncement(`Item inserted to ${columns}, ${rows}.`, operation.conflicts, operation.disturbed, getTitle);
|
|
41
|
+
},
|
|
42
|
+
liveAnnouncementDndCommitted: operationType => `${operationType} committed`,
|
|
43
|
+
liveAnnouncementDndDiscarded: operationType => `${operationType} discarded`,
|
|
44
|
+
liveAnnouncementItemRemoved: op => createAnnouncement(`Removed item ${getTitle(op.item)}.`, [], op.disturbed, getTitle),
|
|
45
|
+
navigationAriaLabel: 'Board navigation',
|
|
46
|
+
navigationAriaDescription: 'Click on non-empty item to move focus over',
|
|
47
|
+
navigationItemAriaLabel: item => (item ? getTitle(item) : 'Empty'),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
exports.createBoardI18nStrings = createBoardI18nStrings;
|
|
51
|
+
//# sourceMappingURL=boardI18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boardI18n.js","sourceRoot":"","sources":["../../../src/component/cloudscape/boardI18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloudscapeTheme = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Cloudscape theme tokens tuned to match our board widgets.
|
|
6
|
+
* Border radius is flattened and divider color aligned with UI palette.
|
|
7
|
+
*/
|
|
8
|
+
exports.cloudscapeTheme = {
|
|
9
|
+
tokens: {
|
|
10
|
+
borderRadiusContainer: '0px',
|
|
11
|
+
colorBorderDividerDefault: 'rgba(230, 230, 230, 1)',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=cloudscapeTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudscapeTheme.js","sourceRoot":"","sources":["../../../src/component/cloudscape/cloudscapeTheme.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,eAAe,GAAU;IAClC,MAAM,EAAE;QACJ,qBAAqB,EAAE,KAAK;QAC5B,yBAAyB,EAAE,wBAAwB;KACtD;CACJ,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type PneFabAction = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
icon?: React.ReactNode;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
tooltip?: string;
|
|
9
|
+
};
|
|
10
|
+
export type PneFloatingActionButtonsProps = {
|
|
11
|
+
actions: PneFabAction[];
|
|
12
|
+
breakpoints?: readonly number[];
|
|
13
|
+
mobileBreakpoint?: number;
|
|
14
|
+
position?: {
|
|
15
|
+
bottom?: number;
|
|
16
|
+
right?: number;
|
|
17
|
+
};
|
|
18
|
+
fabLabel?: React.ReactNode;
|
|
19
|
+
fabIcon?: React.ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Responsive FAB menu: shows a single floating button with a menu on small screens,
|
|
24
|
+
* and a sticky action rail on larger screens. Breakpoint set defaults to 6-step layout.
|
|
25
|
+
*/
|
|
26
|
+
export declare function PneFloatingActionButtons({ actions, breakpoints, mobileBreakpoint, position, fabLabel, fabIcon, className, }: PneFloatingActionButtonsProps): React.JSX.Element;
|
|
27
|
+
export default PneFloatingActionButtons;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PneFloatingActionButtons = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const Add_1 = tslib_1.__importDefault(require("@mui/icons-material/Add"));
|
|
7
|
+
const material_1 = require("@mui/material");
|
|
8
|
+
const breakpoints_1 = require("../../common/responsive/breakpoints");
|
|
9
|
+
const useBreakpoint_1 = require("../responsive/useBreakpoint");
|
|
10
|
+
/**
|
|
11
|
+
* Responsive FAB menu: shows a single floating button with a menu on small screens,
|
|
12
|
+
* and a sticky action rail on larger screens. Breakpoint set defaults to 6-step layout.
|
|
13
|
+
*/
|
|
14
|
+
function PneFloatingActionButtons({ actions, breakpoints = breakpoints_1.DEFAULT_BREAKPOINTS, mobileBreakpoint = 800, position = { bottom: 24, right: 24 }, fabLabel = 'Actions', fabIcon = react_1.default.createElement(Add_1.default, null), className, }) {
|
|
15
|
+
const breakpoint = (0, useBreakpoint_1.useBreakpoint)({ breakpoints });
|
|
16
|
+
const isMobile = breakpoint <= mobileBreakpoint;
|
|
17
|
+
const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
|
|
18
|
+
const handleOpen = (event) => setAnchorEl(event.currentTarget);
|
|
19
|
+
const handleClose = () => setAnchorEl(null);
|
|
20
|
+
const handleAction = (action) => {
|
|
21
|
+
handleClose();
|
|
22
|
+
action.onClick();
|
|
23
|
+
};
|
|
24
|
+
const renderedActions = (0, react_1.useMemo)(() => actions.map(action => (react_1.default.createElement(material_1.Tooltip, { key: action.id, title: action.tooltip ?? '', placement: 'left' },
|
|
25
|
+
react_1.default.createElement("span", null,
|
|
26
|
+
react_1.default.createElement(material_1.Button, { onClick: () => handleAction(action), startIcon: action.icon, disabled: action.disabled, fullWidth: true, variant: 'contained', color: 'primary', size: 'small', sx: { justifyContent: 'flex-start', textTransform: 'none' } }, action.label))))), [actions]);
|
|
27
|
+
if (isMobile) {
|
|
28
|
+
return (react_1.default.createElement(material_1.Box, { position: 'fixed', bottom: position.bottom ?? 24, right: position.right ?? 24, zIndex: 1300, className: className },
|
|
29
|
+
react_1.default.createElement(material_1.Tooltip, { title: fabLabel },
|
|
30
|
+
react_1.default.createElement(material_1.Fab, { color: 'primary', onClick: handleOpen, "aria-label": typeof fabLabel === 'string' ? fabLabel : 'Actions' }, fabIcon)),
|
|
31
|
+
react_1.default.createElement(material_1.Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: handleClose, anchorOrigin: { vertical: 'top', horizontal: 'left' } }, actions.map(action => (react_1.default.createElement(material_1.MenuItem, { key: action.id, disabled: action.disabled, onClick: () => handleAction(action) },
|
|
32
|
+
action.icon ? react_1.default.createElement(material_1.ListItemIcon, null, action.icon) : null,
|
|
33
|
+
react_1.default.createElement(material_1.ListItemText, null, action.label)))))));
|
|
34
|
+
}
|
|
35
|
+
return (react_1.default.createElement(material_1.Box, { position: 'fixed', bottom: position.bottom ?? 24, right: position.right ?? 24, zIndex: 1300, className: className },
|
|
36
|
+
react_1.default.createElement(material_1.Paper, { elevation: 3, sx: { borderRadius: 2, p: 1, minWidth: 200 } },
|
|
37
|
+
react_1.default.createElement(material_1.Stack, { spacing: 1 }, renderedActions))));
|
|
38
|
+
}
|
|
39
|
+
exports.PneFloatingActionButtons = PneFloatingActionButtons;
|
|
40
|
+
exports.default = PneFloatingActionButtons;
|
|
41
|
+
//# sourceMappingURL=PneFloatingActionButtons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneFloatingActionButtons.js","sourceRoot":"","sources":["../../../src/component/fab/PneFloatingActionButtons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type SnackbarOrigin } from '@mui/material';
|
|
3
|
+
import type { PermanentOverlayRender, PermanentPosition } from './types';
|
|
4
|
+
type PneOverlayHostProps = {
|
|
5
|
+
anchorOrigin?: SnackbarOrigin;
|
|
6
|
+
maxSnack?: number;
|
|
7
|
+
breakpoints?: readonly number[];
|
|
8
|
+
renderPermanent?: PermanentOverlayRender;
|
|
9
|
+
permanent?: React.ReactNode;
|
|
10
|
+
permanentPosition?: PermanentPosition;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Renders overlay elements (currently snackbars) driven by the shared overlay store.
|
|
14
|
+
* Mount this once near the root of the app and trigger notifications via `overlayActions`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function PneOverlayHost({ anchorOrigin, maxSnack, breakpoints, renderPermanent, permanent, permanentPosition, }: PneOverlayHostProps): React.JSX.Element;
|
|
17
|
+
export default PneOverlayHost;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PneOverlayHost = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const material_1 = require("@mui/material");
|
|
7
|
+
const breakpoints_1 = require("../../common/responsive/breakpoints");
|
|
8
|
+
const useBreakpoint_1 = require("../responsive/useBreakpoint");
|
|
9
|
+
const overlayStore_1 = require("./overlayStore");
|
|
10
|
+
const material_2 = require("@mui/material");
|
|
11
|
+
const STACK_GAP = 12;
|
|
12
|
+
const STACK_OFFSET = 24;
|
|
13
|
+
/**
|
|
14
|
+
* Renders overlay elements (currently snackbars) driven by the shared overlay store.
|
|
15
|
+
* Mount this once near the root of the app and trigger notifications via `overlayActions`.
|
|
16
|
+
*/
|
|
17
|
+
function PneOverlayHost({ anchorOrigin = { vertical: 'bottom', horizontal: 'left' }, maxSnack = 10, breakpoints = breakpoints_1.DEFAULT_BREAKPOINTS, renderPermanent, permanent, permanentPosition, }) {
|
|
18
|
+
const snackbars = (0, overlayStore_1.useOverlayStore)(state => state.snackbars);
|
|
19
|
+
const removeSnackbar = (0, overlayStore_1.useOverlayStore)(state => state.removeSnackbar);
|
|
20
|
+
const breakpoint = (0, useBreakpoint_1.useBreakpoint)({ breakpoints });
|
|
21
|
+
const visibleSnackbars = (0, react_1.useMemo)(() => {
|
|
22
|
+
if (typeof maxSnack === 'number' && maxSnack > 0 && snackbars.length > maxSnack) {
|
|
23
|
+
return snackbars.slice(snackbars.length - maxSnack);
|
|
24
|
+
}
|
|
25
|
+
return snackbars;
|
|
26
|
+
}, [maxSnack, snackbars]);
|
|
27
|
+
const groupedSnackbars = (0, react_1.useMemo)(() => {
|
|
28
|
+
const groups = [];
|
|
29
|
+
const map = new Map();
|
|
30
|
+
visibleSnackbars.forEach(snack => {
|
|
31
|
+
const anchor = snack.anchorOrigin ?? anchorOrigin;
|
|
32
|
+
const key = `${anchor.vertical}-${anchor.horizontal}`;
|
|
33
|
+
if (!map.has(key)) {
|
|
34
|
+
const group = { anchor, items: [] };
|
|
35
|
+
map.set(key, group);
|
|
36
|
+
groups.push(group);
|
|
37
|
+
}
|
|
38
|
+
map.get(key).items.push(snack);
|
|
39
|
+
});
|
|
40
|
+
return groups;
|
|
41
|
+
}, [anchorOrigin, visibleSnackbars]);
|
|
42
|
+
const permanentContent = renderPermanent?.({ breakpoint }) ?? permanent ?? null;
|
|
43
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
44
|
+
groupedSnackbars.map(group => {
|
|
45
|
+
const { anchor, items } = group;
|
|
46
|
+
const horizontalStyles = anchor.horizontal === 'left'
|
|
47
|
+
? { left: STACK_OFFSET, right: 'auto', transform: 'none' }
|
|
48
|
+
: anchor.horizontal === 'right'
|
|
49
|
+
? { right: STACK_OFFSET, left: 'auto', transform: 'none' }
|
|
50
|
+
: { left: '50%', transform: 'translateX(-50%)' };
|
|
51
|
+
const verticalStyles = anchor.vertical === 'top'
|
|
52
|
+
? { top: STACK_OFFSET, bottom: 'auto', flexDirection: 'column-reverse' }
|
|
53
|
+
: { bottom: STACK_OFFSET, top: 'auto', flexDirection: 'column-reverse' };
|
|
54
|
+
return (react_1.default.createElement(material_2.Box, { key: `${anchor.vertical}-${anchor.horizontal}`, sx: {
|
|
55
|
+
position: 'fixed',
|
|
56
|
+
zIndex: 1400,
|
|
57
|
+
display: 'flex',
|
|
58
|
+
gap: `${STACK_GAP}px`,
|
|
59
|
+
pointerEvents: 'none',
|
|
60
|
+
...horizontalStyles,
|
|
61
|
+
...verticalStyles,
|
|
62
|
+
} }, items.map(snack => (react_1.default.createElement(material_1.Snackbar, { key: snack.id, open: true, anchorOrigin: anchor, autoHideDuration: snack.autoHideMs, onClose: (_event, reason) => {
|
|
63
|
+
if (reason === 'clickaway')
|
|
64
|
+
return;
|
|
65
|
+
snack.id && removeSnackbar(snack.id);
|
|
66
|
+
}, sx: { position: 'static', transform: 'none', pointerEvents: 'auto', minWidth: 288 } },
|
|
67
|
+
react_1.default.createElement(material_1.Alert, { elevation: 1, onClose: () => snack.id && removeSnackbar(snack.id), severity: snack.variant ?? 'info', action: snack.action, sx: { alignItems: 'center' } }, snack.message))))));
|
|
68
|
+
}),
|
|
69
|
+
permanentContent
|
|
70
|
+
? permanentPosition
|
|
71
|
+
? (react_1.default.createElement(material_2.Box, { sx: {
|
|
72
|
+
position: 'fixed',
|
|
73
|
+
zIndex: permanentPosition.zIndex ?? 1300,
|
|
74
|
+
[permanentPosition.vertical ?? 'bottom']: permanentPosition.offset ?? 24,
|
|
75
|
+
[permanentPosition.horizontal ?? 'right']: permanentPosition.offset ?? 24,
|
|
76
|
+
} }, permanentContent))
|
|
77
|
+
: permanentContent
|
|
78
|
+
: null));
|
|
79
|
+
}
|
|
80
|
+
exports.PneOverlayHost = PneOverlayHost;
|
|
81
|
+
exports.default = PneOverlayHost;
|
|
82
|
+
//# sourceMappingURL=PneOverlayHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneOverlayHost.js","sourceRoot":"","sources":["../../../src/component/overlay/PneOverlayHost.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OverlayState, SnackbarOptions } from './types';
|
|
2
|
+
export declare const useOverlayStore: import("zustand").UseBoundStore<import("zustand").StoreApi<OverlayState>>;
|
|
3
|
+
export declare const overlayActions: {
|
|
4
|
+
showSnackbar: (snackbar: SnackbarOptions) => void;
|
|
5
|
+
showSuccess: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
|
|
6
|
+
showError: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
|
|
7
|
+
showWarning: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
|
|
8
|
+
showInfo: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
|
|
9
|
+
removeSnackbar: (id: string) => void;
|
|
10
|
+
clearSnackbars: () => void;
|
|
11
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overlayActions = exports.useOverlayStore = void 0;
|
|
4
|
+
const zustand_1 = require("zustand");
|
|
5
|
+
const defaultAutoHideMs = 5000;
|
|
6
|
+
const makeId = () => {
|
|
7
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
8
|
+
return crypto.randomUUID();
|
|
9
|
+
}
|
|
10
|
+
return `snackbar-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
11
|
+
};
|
|
12
|
+
exports.useOverlayStore = (0, zustand_1.create)(set => ({
|
|
13
|
+
snackbars: [],
|
|
14
|
+
enqueueSnackbar: snackbar => set(state => ({
|
|
15
|
+
snackbars: [
|
|
16
|
+
...state.snackbars,
|
|
17
|
+
{
|
|
18
|
+
id: snackbar.id ?? makeId(),
|
|
19
|
+
variant: snackbar.variant ?? 'info',
|
|
20
|
+
autoHideMs: snackbar.autoHideMs ?? (snackbar.variant === 'error' ? undefined : defaultAutoHideMs),
|
|
21
|
+
...snackbar,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
})),
|
|
25
|
+
removeSnackbar: id => set(state => ({ snackbars: state.snackbars.filter(snack => snack.id !== id) })),
|
|
26
|
+
clearSnackbars: () => set({ snackbars: [] }),
|
|
27
|
+
}));
|
|
28
|
+
const showWithVariant = (variant) => (snackbar) => exports.useOverlayStore.getState().enqueueSnackbar({ ...snackbar, variant });
|
|
29
|
+
exports.overlayActions = {
|
|
30
|
+
showSnackbar: (snackbar) => exports.useOverlayStore.getState().enqueueSnackbar(snackbar),
|
|
31
|
+
showSuccess: showWithVariant('success'),
|
|
32
|
+
showError: showWithVariant('error'),
|
|
33
|
+
showWarning: showWithVariant('warning'),
|
|
34
|
+
showInfo: showWithVariant('info'),
|
|
35
|
+
removeSnackbar: (id) => exports.useOverlayStore.getState().removeSnackbar(id),
|
|
36
|
+
clearSnackbars: () => exports.useOverlayStore.getState().clearSnackbars(),
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=overlayStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayStore.js","sourceRoot":"","sources":["../../../src/component/overlay/overlayStore.ts"],"names":[],"mappings":";;;AAAA,qCAAgC;AAGhC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,MAAM,MAAM,GAAG,GAAG,EAAE;IAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1E,CAAC,CAAA;AAEY,QAAA,eAAe,GAAG,IAAA,gBAAM,EAAe,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,QAAQ,CAAC,EAAE,CACxB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,SAAS,EAAE;YACP,GAAG,KAAK,CAAC,SAAS;YAClB;gBACI,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,MAAM,EAAE;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,MAAM;gBACnC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBACjG,GAAG,QAAQ;aACd;SACJ;KACJ,CAAC,CAAC;IACP,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;CAC/C,CAAC,CAAC,CAAA;AAEH,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAE,EAAE,CAAC,CAAC,QAA0C,EAAE,EAAE,CACjG,uBAAe,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AAE3D,QAAA,cAAc,GAAG;IAC1B,YAAY,EAAE,CAAC,QAAyB,EAAE,EAAE,CAAC,uBAAe,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;IACjG,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC;IACvC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC;IACnC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC;IACvC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,uBAAe,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7E,cAAc,EAAE,GAAG,EAAE,CAAC,uBAAe,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE;CACpE,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SnackbarOrigin } from '@mui/material';
|
|
2
|
+
import type React from 'react';
|
|
3
|
+
export type SnackbarVariant = 'info' | 'success' | 'warning' | 'error';
|
|
4
|
+
export type SnackbarOptions = {
|
|
5
|
+
id?: string;
|
|
6
|
+
message: React.ReactNode;
|
|
7
|
+
variant?: SnackbarVariant;
|
|
8
|
+
autoHideMs?: number;
|
|
9
|
+
action?: React.ReactNode;
|
|
10
|
+
anchorOrigin?: SnackbarOrigin;
|
|
11
|
+
};
|
|
12
|
+
export type OverlayState = {
|
|
13
|
+
snackbars: SnackbarOptions[];
|
|
14
|
+
enqueueSnackbar: (snackbar: SnackbarOptions) => void;
|
|
15
|
+
removeSnackbar: (id: string) => void;
|
|
16
|
+
clearSnackbars: () => void;
|
|
17
|
+
};
|
|
18
|
+
export type PermanentOverlayRender = (context: {
|
|
19
|
+
breakpoint: number;
|
|
20
|
+
}) => React.ReactNode;
|
|
21
|
+
export type PermanentPosition = {
|
|
22
|
+
vertical?: 'top' | 'bottom';
|
|
23
|
+
horizontal?: 'left' | 'right';
|
|
24
|
+
offset?: number;
|
|
25
|
+
zIndex?: number;
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/component/overlay/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useBreakpoint = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const breakpoints_1 = require("../../common/responsive/breakpoints");
|
|
6
|
+
/**
|
|
7
|
+
* Returns the nearest configured breakpoint for the current window width.
|
|
8
|
+
*/
|
|
9
|
+
function useBreakpoint({ breakpoints = breakpoints_1.DEFAULT_BREAKPOINTS } = {}) {
|
|
10
|
+
const [current, setCurrent] = (0, react_1.useState)(() => typeof window !== 'undefined' ? (0, breakpoints_1.resolveBreakpoint)(window.innerWidth, breakpoints) : breakpoints[0]);
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
if (typeof window === 'undefined')
|
|
13
|
+
return;
|
|
14
|
+
const handler = () => setCurrent((0, breakpoints_1.resolveBreakpoint)(window.innerWidth, breakpoints));
|
|
15
|
+
window.addEventListener('resize', handler);
|
|
16
|
+
return () => window.removeEventListener('resize', handler);
|
|
17
|
+
}, [breakpoints]);
|
|
18
|
+
return current;
|
|
19
|
+
}
|
|
20
|
+
exports.useBreakpoint = useBreakpoint;
|
|
21
|
+
//# sourceMappingURL=useBreakpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBreakpoint.js","sourceRoot":"","sources":["../../../src/component/responsive/useBreakpoint.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAC3C,qEAA4F;AAM5F;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAE,WAAW,GAAG,iCAAmB,KAA2B,EAAE;IAC1F,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CACxC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAA,+BAAiB,EAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CACrG,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QACzC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,IAAA,+BAAiB,EAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,OAAO,CAAA;AAClB,CAAC;AAbD,sCAaC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { WidgetBoardProps } from './types';
|
|
3
|
+
export type WidgetBoardHandle = {
|
|
4
|
+
resetLayout: () => void;
|
|
5
|
+
restoreHidden: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const WidgetBoard: React.ForwardRefExoticComponent<WidgetBoardProps & React.RefAttributes<WidgetBoardHandle>>;
|