@antscorp/antsomi-ui 1.3.5-beta.134 → 1.3.5-beta.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import type { DrawerDetailProps } from './types';
3
+ export declare const DrawerDetail: React.FC<DrawerDetailProps>;
@@ -0,0 +1,44 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ // Libraries
13
+ import React from 'react';
14
+ // Components
15
+ import { Flex, Icon, Tooltip } from '../../atoms';
16
+ // Styled
17
+ import { CloseBtn, Content, LeftMenu, MenuFooter, MenuItem, StyledDrawer } from './styled';
18
+ // Constants
19
+ const DRAWER_WIDTH_DEFAULT = 'calc(100vw - 70px)';
20
+ export const DrawerDetail = props => {
21
+ const { width = DRAWER_WIDTH_DEFAULT, fullScreen, children, menuProps, closeIconProps } = props, restProps = __rest(props, ["width", "fullScreen", "children", "menuProps", "closeIconProps"]);
22
+ const { show: showMenu = true, showClose = true, items, selectedKeys, footer, onClick = () => { }, } = menuProps || {};
23
+ const { onClose = () => { } } = props;
24
+ const _a = closeIconProps || {}, { show: showCloseIcon, onClick: onCloseIconClick = () => { } } = _a, restOfCloseIcon = __rest(_a, ["show", "onClick"]);
25
+ return (React.createElement(StyledDrawer, Object.assign({}, restProps, { closable: false, width: fullScreen ? '100vw' : width, classNames: {
26
+ body: 'drawer-detail-body',
27
+ } }),
28
+ showCloseIcon && (React.createElement("div", Object.assign({ className: "close-btn" }, restOfCloseIcon, { onClick: e => {
29
+ onCloseIconClick(e);
30
+ onClose(e);
31
+ } }),
32
+ React.createElement(Icon, { type: "icon-ants-remove-slim", size: 14 }))),
33
+ showMenu && (React.createElement(LeftMenu, { className: "animate__animated animate__fadeInLeft animate__fast" },
34
+ React.createElement("div", null,
35
+ showClose && (React.createElement(CloseBtn, { onClick: onClose },
36
+ React.createElement(Icon, { type: "icon-ants-remove-slim", size: 14 }))),
37
+ React.createElement(Flex, { vertical: true, gap: 10, align: "center", justify: "center" }, items === null || items === void 0 ? void 0 : items.map((item) => (React.createElement(Tooltip, { key: item === null || item === void 0 ? void 0 : item.key, title: item === null || item === void 0 ? void 0 : item.label, mouseEnterDelay: 0.3 },
38
+ React.createElement(MenuItem, { key: item === null || item === void 0 ? void 0 : item.key, className: (selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.includes(item.key)) ? 'active' : '', onClick: () => onClick && onClick(item) }, item.icon)))))),
39
+ React.createElement(MenuFooter, null, footer))),
40
+ React.createElement(Content, null, children)));
41
+ };
42
+ DrawerDetail.defaultProps = {
43
+ width: DRAWER_WIDTH_DEFAULT,
44
+ };
@@ -0,0 +1,2 @@
1
+ export { DrawerDetail } from './DrawerDetail';
2
+ export type * from './types';
@@ -0,0 +1 @@
1
+ export { DrawerDetail } from './DrawerDetail';
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export declare const StyledDrawer: import("styled-components").StyledComponent<import("react").FC<import("@antscorp/antsomi-ui/es/components/molecules/Drawer/Drawer").DrawerProps>, any, {}, never>;
3
+ export declare const Content: import("styled-components").StyledComponent<"div", any, {}, never>;
4
+ export declare const LeftMenu: import("styled-components").StyledComponent<"div", any, {}, never>;
5
+ export declare const CloseBtn: import("styled-components").StyledComponent<"div", any, {}, never>;
6
+ export declare const MenuItem: import("styled-components").StyledComponent<"div", any, {}, never>;
7
+ export declare const MenuFooter: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,95 @@
1
+ var _a, _b, _c, _d;
2
+ // Libraries
3
+ import styled from 'styled-components';
4
+ // Drawer
5
+ import { Drawer } from '../Drawer';
6
+ // Constants
7
+ import { THEME } from '@antscorp/antsomi-ui/es/constants';
8
+ export const StyledDrawer = styled(Drawer) `
9
+ &.antsomi-drawer-content {
10
+ .drawer-detail-body {
11
+ display: flex;
12
+ width: 100%;
13
+ padding: 0px;
14
+ }
15
+
16
+ .close-btn {
17
+ position: absolute;
18
+ top: 24.5px;
19
+ right: 25px;
20
+ width: 24px;
21
+ height: 24px;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ color: ${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.bw8};
26
+ transition: all 0.3s;
27
+ cursor: pointer;
28
+
29
+ &:hover {
30
+ color: #000;
31
+ }
32
+ }
33
+ }
34
+ `;
35
+ export const Content = styled.div `
36
+ flex: 1 1 0%;
37
+ `;
38
+ export const LeftMenu = styled.div `
39
+ width: 46px;
40
+ height: 100%;
41
+ background-color: #eaf1fb;
42
+ padding: 8px 5px;
43
+ box-sizing: border-box;
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ justify-content: space-between;
48
+ flex-shrink: 0;
49
+ gap: 5px;
50
+ `;
51
+ export const CloseBtn = styled.div `
52
+ width: 36px;
53
+ height: 36px;
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ color: ${(_b = THEME.token) === null || _b === void 0 ? void 0 : _b.bw8};
58
+ transition: all 0.3s;
59
+ cursor: pointer;
60
+
61
+ &:hover {
62
+ color: #000;
63
+ }
64
+ `;
65
+ export const MenuItem = styled.div `
66
+ height: 36px;
67
+ width: 36px;
68
+ border-radius: 3px;
69
+ background-color: transparent;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ cursor: pointer;
74
+ transition: all 0.2s;
75
+
76
+ * {
77
+ color: ${(_c = THEME.token) === null || _c === void 0 ? void 0 : _c.bw8};
78
+ }
79
+
80
+ i {
81
+ font-size: 24px;
82
+ height: 24px;
83
+ width: 24px;
84
+ }
85
+
86
+ &.active,
87
+ &:hover {
88
+ background-color: #d3e3fd;
89
+
90
+ * {
91
+ color: ${(_d = THEME.token) === null || _d === void 0 ? void 0 : _d.colorPrimary};
92
+ }
93
+ }
94
+ `;
95
+ export const MenuFooter = styled.div ``;
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ import type { DrawerProps, MenuProps as AntdProps } from 'antd';
3
+ import { ItemType } from 'antd/es/menu/hooks/useItems';
4
+ export interface DrawerDetailProps extends Omit<DrawerProps, 'closeIcon'> {
5
+ fullScreen?: boolean;
6
+ menuProps?: DrawerDetailMenuProps;
7
+ closeIconProps?: DrawerDetailCloseIconProps;
8
+ }
9
+ export interface DrawerDetailCloseIconProps extends React.HtmlHTMLAttributes<HTMLDivElement> {
10
+ show?: boolean;
11
+ }
12
+ export interface DrawerDetailMenuProps extends Omit<AntdProps, 'onClick'> {
13
+ show?: boolean;
14
+ showClose?: boolean;
15
+ footer?: ReactNode;
16
+ onClick?: (item: ItemType) => void;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -38,6 +38,7 @@ export { ModalV2 } from './ModalV2';
38
38
  export { TemplateSaveAs, TemplateSaveAsModal, useTemplateSave } from './TemplateSaveAs';
39
39
  export * from './PreviewModal';
40
40
  export * from './Drawer';
41
+ export * from './DrawerDetail';
41
42
  export { EditorScript } from './EditorScript';
42
43
  export { CalendarSelection, CalendarSelectionConstants } from './CalendarSelection';
43
44
  export type { AdvancedPickerProps, TAdvancedPickerOption, TAdvancedRangePickerTimeRange, } from './DatePicker';
@@ -38,5 +38,6 @@ export { ModalV2 } from './ModalV2';
38
38
  export { TemplateSaveAs, TemplateSaveAsModal, useTemplateSave } from './TemplateSaveAs';
39
39
  export * from './PreviewModal';
40
40
  export * from './Drawer';
41
+ export * from './DrawerDetail';
41
42
  export { EditorScript } from './EditorScript';
42
43
  export { CalendarSelection, CalendarSelectionConstants } from './CalendarSelection';
@@ -5,3 +5,4 @@ export * from './useIntersectionObserver';
5
5
  export * from './useEffectOnlyOnce';
6
6
  export * from './useForceUpdate';
7
7
  export * from './useListingItemResize';
8
+ export * from './useToggle';
package/es/hooks/index.js CHANGED
@@ -24,3 +24,4 @@ export * from './useIntersectionObserver';
24
24
  export * from './useEffectOnlyOnce';
25
25
  export * from './useForceUpdate';
26
26
  export * from './useListingItemResize';
27
+ export * from './useToggle';
@@ -0,0 +1,2 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ export declare function useToggle(defaultValue?: boolean): [boolean, (value?: boolean) => void, Dispatch<SetStateAction<boolean>>];
@@ -0,0 +1,8 @@
1
+ import { useCallback, useState } from 'react';
2
+ export function useToggle(defaultValue) {
3
+ const [value, setValue] = useState(!!defaultValue);
4
+ const toggle = useCallback((value) => {
5
+ setValue(x => (typeof value === 'boolean' ? value : !x));
6
+ }, []);
7
+ return [value, toggle, setValue];
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antscorp/antsomi-ui",
3
- "version": "1.3.5-beta.134",
3
+ "version": "1.3.5-beta.136",
4
4
  "description": "An enterprise-class UI design language and React UI library.",
5
5
  "sideEffects": [
6
6
  "dist/*",