react-asc 23.6.1 → 23.7.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.
@@ -6,4 +6,4 @@ export interface IDrawerProps extends React.ComponentProps<'div'> {
6
6
  permanent?: boolean;
7
7
  target?: HTMLElement;
8
8
  }
9
- export declare const Drawer: (props: IDrawerProps) => React.ReactPortal;
9
+ export declare const Drawer: (props: IDrawerProps) => JSX.Element;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export interface IPortalProps {
3
+ children: React.ReactNode;
4
+ target?: HTMLElement;
5
+ className?: string;
6
+ }
7
+ export declare const Portal: ({ children, target, className }: IPortalProps) => import("react").ReactPortal;
@@ -0,0 +1 @@
1
+ export * from './Portal';
package/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useRef, useEffect, useState, createContext, useContext, Fragment, Component, createRef, cloneElement } from 'react';
1
+ import React, { useRef, useEffect, useState, createContext, useContext, Fragment, Component, createRef, useMemo, cloneElement } from 'react';
2
2
  import { createPortal, render, unmountComponentAtNode } from 'react-dom';
3
3
  import { createPopper } from '@popperjs/core';
4
4
 
@@ -1535,6 +1535,18 @@ const DateSelect = (props) => {
1535
1535
  // return Math.ceil((((d - yearStart) / 86400000) + 1) / 7)
1536
1536
  // };
1537
1537
 
1538
+ const Portal = ({ children, target = document.body, className }) => {
1539
+ const containerEl = useMemo(() => document.createElement('div'), []);
1540
+ useEffect(() => {
1541
+ className && className.split(' ').forEach(cssClass => containerEl.classList.add(cssClass));
1542
+ target.appendChild(containerEl);
1543
+ return () => {
1544
+ target.removeChild(containerEl);
1545
+ };
1546
+ }, []);
1547
+ return createPortal(children, containerEl);
1548
+ };
1549
+
1538
1550
  var css_248z$z = ".Drawer-module_drawer__kdQCk {\n height: 100%;\n z-index: 1101;\n bottom: 0;\n position: fixed;\n background: white;\n min-width: 320px;\n overflow-y: auto;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_permanent__c-y8y {\n position: inherit;\n z-index: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_left__loQVO {\n order: 0;\n left: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_right__sJ3mZ {\n order: 2;\n right: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_shadow__Myo3n {\n box-shadow: var(--shadow);\n}\n\n.Drawer-module_drawerOpen__07ptP {\n overflow: hidden;\n}";
1539
1551
  var styles$z = {"drawer":"Drawer-module_drawer__kdQCk","permanent":"Drawer-module_permanent__c-y8y","left":"Drawer-module_left__loQVO","right":"Drawer-module_right__sJ3mZ","shadow":"Drawer-module_shadow__Myo3n","drawerOpen":"Drawer-module_drawerOpen__07ptP"};
1540
1552
  styleInject(css_248z$z);
@@ -1550,9 +1562,9 @@ const Drawer = (props) => {
1550
1562
  const handleClickBackdrop = () => {
1551
1563
  onClickBackdrop && onClickBackdrop();
1552
1564
  };
1553
- return createPortal(React.createElement(React.Fragment, null,
1565
+ return (React.createElement(Portal, { className: 'drawer-container', target: target },
1554
1566
  React.createElement(DrawerContent, Object.assign({ className: className, position: position, permanent: permanent, shadow: shadow }, rest), children),
1555
- !permanent && React.createElement(Backdrop, { onClick: handleClickBackdrop })), target);
1567
+ !permanent && React.createElement(Backdrop, { onClick: handleClickBackdrop })));
1556
1568
  };
1557
1569
  const DrawerContent = (props) => {
1558
1570
  const { children, className, position = 'left', permanent = false, shadow } = props, rest = __rest(props, ["children", "className", "position", "permanent", "shadow"]);
package/index.js CHANGED
@@ -1543,6 +1543,18 @@ const DateSelect = (props) => {
1543
1543
  // return Math.ceil((((d - yearStart) / 86400000) + 1) / 7)
1544
1544
  // };
1545
1545
 
1546
+ const Portal = ({ children, target = document.body, className }) => {
1547
+ const containerEl = React.useMemo(() => document.createElement('div'), []);
1548
+ React.useEffect(() => {
1549
+ className && className.split(' ').forEach(cssClass => containerEl.classList.add(cssClass));
1550
+ target.appendChild(containerEl);
1551
+ return () => {
1552
+ target.removeChild(containerEl);
1553
+ };
1554
+ }, []);
1555
+ return reactDom.createPortal(children, containerEl);
1556
+ };
1557
+
1546
1558
  var css_248z$z = ".Drawer-module_drawer__kdQCk {\n height: 100%;\n z-index: 1101;\n bottom: 0;\n position: fixed;\n background: white;\n min-width: 320px;\n overflow-y: auto;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_permanent__c-y8y {\n position: inherit;\n z-index: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_left__loQVO {\n order: 0;\n left: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_right__sJ3mZ {\n order: 2;\n right: 0;\n}\n.Drawer-module_drawer__kdQCk.Drawer-module_shadow__Myo3n {\n box-shadow: var(--shadow);\n}\n\n.Drawer-module_drawerOpen__07ptP {\n overflow: hidden;\n}";
1547
1559
  var styles$z = {"drawer":"Drawer-module_drawer__kdQCk","permanent":"Drawer-module_permanent__c-y8y","left":"Drawer-module_left__loQVO","right":"Drawer-module_right__sJ3mZ","shadow":"Drawer-module_shadow__Myo3n","drawerOpen":"Drawer-module_drawerOpen__07ptP"};
1548
1560
  styleInject(css_248z$z);
@@ -1558,9 +1570,9 @@ const Drawer = (props) => {
1558
1570
  const handleClickBackdrop = () => {
1559
1571
  onClickBackdrop && onClickBackdrop();
1560
1572
  };
1561
- return reactDom.createPortal(React__default["default"].createElement(React__default["default"].Fragment, null,
1573
+ return (React__default["default"].createElement(Portal, { className: 'drawer-container', target: target },
1562
1574
  React__default["default"].createElement(DrawerContent, Object.assign({ className: className, position: position, permanent: permanent, shadow: shadow }, rest), children),
1563
- !permanent && React__default["default"].createElement(Backdrop, { onClick: handleClickBackdrop })), target);
1575
+ !permanent && React__default["default"].createElement(Backdrop, { onClick: handleClickBackdrop })));
1564
1576
  };
1565
1577
  const DrawerContent = (props) => {
1566
1578
  const { children, className, position = 'left', permanent = false, shadow } = props, rest = __rest(props, ["children", "className", "position", "permanent", "shadow"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-asc",
3
- "version": "23.6.1",
3
+ "version": "23.7.0",
4
4
  "description": "handcrafted react components",
5
5
  "main": "index.js",
6
6
  "module": "index.es.js",
package/react-asc.scss CHANGED
@@ -248,6 +248,10 @@
248
248
  color: var(--muted);
249
249
  }
250
250
 
251
+ .flex-1 {
252
+ flex: 1;
253
+ }
254
+
251
255
  .d-flex {
252
256
  display: flex !important;
253
257
  }
@@ -288,8 +292,6 @@
288
292
  height: 100%;
289
293
  }
290
294
 
291
-
292
-
293
295
  .text-center {
294
296
  text-align: center;
295
297
  }
package/readme.md CHANGED
@@ -69,8 +69,10 @@ react-asc provides built-in ts definition
69
69
  - Menu
70
70
  - Modal + ModalService
71
71
  - NumberSelect
72
+ Portal
72
73
  - Select
73
74
  - Sidebar
75
+ - Skeleton (Avatar, Image, Text, SkeletonFooter)
74
76
  - Snackbar + SnackbarService
75
77
  - SpeedDial
76
78
  - Stepper (beta)