@yqg/easy-ui
Advanced tools
| import React from 'react'; | ||
| import { LoadingProps } from './PropsType'; | ||
| import './style/index.less'; | ||
| declare const Loading: React.FC<LoadingProps>; | ||
| export default Loading; | ||
| export * from './PropsType'; | ||
| export { Loading }; |
| import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; | ||
| import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; | ||
| import clsx from 'clsx'; | ||
| import React, { useMemo } from 'react'; | ||
| import { addUnit, createNamespace, getSizeStyle } from "../utils"; | ||
| import "./style/index.less"; | ||
| import { jsx as _jsx } from "react/jsx-runtime"; | ||
| import { Fragment as _Fragment } from "react/jsx-runtime"; | ||
| import { jsxs as _jsxs } from "react/jsx-runtime"; | ||
| var SpinIcon = function SpinIcon(_ref) { | ||
| var bem = _ref.bem; | ||
| return /*#__PURE__*/_jsx(_Fragment, { | ||
| children: Array(12).fill(null).map(function (_, index) { | ||
| return /*#__PURE__*/_jsx("i", { | ||
| className: clsx(bem('line', String(index + 1))) | ||
| }, index); | ||
| }) | ||
| }); | ||
| }; | ||
| var CircularIcon = function CircularIcon(_ref2) { | ||
| var bem = _ref2.bem; | ||
| return /*#__PURE__*/_jsx("svg", { | ||
| className: clsx(bem('circular')), | ||
| viewBox: "25 25 50 50", | ||
| children: /*#__PURE__*/_jsx("circle", { | ||
| cx: "50", | ||
| cy: "50", | ||
| r: "20", | ||
| fill: "none" | ||
| }) | ||
| }); | ||
| }; | ||
| var BallIcon = function BallIcon(_ref3) { | ||
| var bem = _ref3.bem; | ||
| return /*#__PURE__*/_jsxs("div", { | ||
| className: clsx(bem('ball')), | ||
| children: [/*#__PURE__*/_jsx("div", {}), /*#__PURE__*/_jsx("div", {}), /*#__PURE__*/_jsx("div", {})] | ||
| }); | ||
| }; | ||
| var Icon = function Icon(bem) { | ||
| return { | ||
| spinner: /*#__PURE__*/_jsx(SpinIcon, { | ||
| bem: bem | ||
| }), | ||
| circular: /*#__PURE__*/_jsx(CircularIcon, { | ||
| bem: bem | ||
| }), | ||
| ball: /*#__PURE__*/_jsx(BallIcon, { | ||
| bem: bem | ||
| }) | ||
| }; | ||
| }; | ||
| var _createNamespace = createNamespace('loading'), | ||
| _createNamespace2 = _slicedToArray(_createNamespace, 1), | ||
| bem = _createNamespace2[0]; | ||
| var Loading = function Loading(props) { | ||
| var className = props.className, | ||
| _props$type = props.type, | ||
| type = _props$type === void 0 ? 'circular' : _props$type, | ||
| vertical = props.vertical, | ||
| color = props.color, | ||
| size = props.size, | ||
| textColor = props.textColor, | ||
| children = props.children, | ||
| textSize = props.textSize; | ||
| var spinnerStyle = useMemo(function () { | ||
| return _objectSpread({ | ||
| color: color | ||
| }, getSizeStyle(size)); | ||
| }, [color, size]); | ||
| var renderText = function renderText() { | ||
| if (children) { | ||
| return /*#__PURE__*/_jsx("span", { | ||
| className: clsx(bem('text')), | ||
| style: { | ||
| fontSize: addUnit(textSize), | ||
| color: textColor !== null && textColor !== void 0 ? textColor : color | ||
| }, | ||
| children: children | ||
| }); | ||
| } | ||
| return null; | ||
| }; | ||
| return /*#__PURE__*/_jsxs("div", { | ||
| className: clsx(className, bem([type, { | ||
| vertical: vertical | ||
| }])), | ||
| style: props.style, | ||
| children: [/*#__PURE__*/_jsx("span", { | ||
| className: clsx(bem('spinner', type)), | ||
| style: spinnerStyle, | ||
| children: Icon(bem)[type] | ||
| }), renderText()] | ||
| }); | ||
| }; | ||
| export default Loading; | ||
| export * from "./PropsType"; | ||
| export { Loading }; |
| /// <reference types="react" /> | ||
| export type LoadingType = 'circular' | 'spinner' | 'ball'; | ||
| export interface LoadingProps { | ||
| size?: string | number; | ||
| color?: string; | ||
| vertical?: boolean; | ||
| textSize?: string | number; | ||
| textColor?: string; | ||
| type?: LoadingType; | ||
| style?: React.CSSProperties | any; | ||
| className?: string; | ||
| children?: React.ReactNode; | ||
| } |
| export {}; |
| @import './var.less'; | ||
| :root { | ||
| --easy-loading-text-color: @loading-text-color; | ||
| --easy-loading-text-font-size: @loading-text-font-size; | ||
| --easy-loading-spinner-color: @loading-spinner-color; | ||
| --easy-loading-spinner-size: @loading-spinner-size; | ||
| --easy-loading-spinner-animation-duration: @loading-spinner-animation-duration; | ||
| --easy-padding-xs: @padding-xs; | ||
| } | ||
| .@{prefix}-loading { | ||
| position: relative; | ||
| color: @loading-spinner-color; | ||
| font-size: 0; | ||
| vertical-align: middle; | ||
| &__spinner { | ||
| position: relative; | ||
| display: inline-block; | ||
| width: var(--easy-loading-spinner-size); | ||
| // compatible for 1.x, users may set width or height in root element | ||
| max-width: 100%; | ||
| height: var(--easy-loading-spinner-size); | ||
| max-height: 100%; | ||
| vertical-align: middle; | ||
| animation: easy-rotate var(--easy-loading-spinner-animation-duration) linear | ||
| infinite; | ||
| &--spinner { | ||
| animation-timing-function: steps(12); | ||
| } | ||
| &--circular { | ||
| animation-duration: 2s; | ||
| } | ||
| &--ball { | ||
| animation: none; | ||
| } | ||
| } | ||
| &__line { | ||
| position: absolute; | ||
| top: 0; | ||
| left: 0; | ||
| width: 100%; | ||
| height: 100%; | ||
| &::before { | ||
| display: block; | ||
| width: 2px; | ||
| height: 25%; | ||
| margin: 0 auto; | ||
| background-color: currentcolor; | ||
| border-radius: 40%; | ||
| content: ' '; | ||
| } | ||
| } | ||
| &__circular { | ||
| display: block; | ||
| width: 100%; | ||
| height: 100%; | ||
| circle { | ||
| animation: easy-circular 1.5s ease-in-out infinite; | ||
| stroke: currentcolor; | ||
| stroke-width: 3; | ||
| stroke-linecap: round; | ||
| } | ||
| } | ||
| &__text { | ||
| display: inline-block; | ||
| margin-left: var(--easy-padding-xs); | ||
| color: var(--easy-loading-text-color); | ||
| font-size: var(--easy-loading-text-font-size); | ||
| vertical-align: middle; | ||
| } | ||
| &--vertical { | ||
| display: flex; | ||
| flex-direction: column; | ||
| align-items: center; | ||
| .@{prefix}-loading__text { | ||
| margin: var(--easy-padding-xs) 0 0; | ||
| } | ||
| } | ||
| &__ball { | ||
| position: relative; | ||
| display: flex; | ||
| align-items: center; | ||
| width: 100%; | ||
| height: 100%; | ||
| transform: translateZ(0) scale(1); | ||
| transform-origin: 0 0; /* see note above */ | ||
| backface-visibility: hidden; | ||
| div { | ||
| position: absolute; | ||
| box-sizing: content-box; | ||
| width: 12 * @hd; | ||
| height: 12 * @hd; | ||
| border-radius: 50%; | ||
| } | ||
| div:nth-child(1) { | ||
| background: #448aff; | ||
| animation: easy-ball-right 1s linear infinite; | ||
| animation-delay: -0.5s; | ||
| } | ||
| div:nth-child(2) { | ||
| background: #ef5350; | ||
| animation: easy-ball-right 1s linear infinite; | ||
| animation-delay: 0s; | ||
| } | ||
| div:nth-child(3) { | ||
| background: #448aff; | ||
| animation: easy-ball 1s linear infinite; | ||
| animation-delay: -0.5s; | ||
| } | ||
| } | ||
| } | ||
| @keyframes easy-ball { | ||
| 0% { | ||
| transform: translate(0 0); | ||
| opacity: 1; | ||
| } | ||
| 49.99% { | ||
| transform: translate(24 * @hd, 0); | ||
| opacity: 1; | ||
| } | ||
| 50% { | ||
| transform: translate(24 * @hd, 0); | ||
| opacity: 0; | ||
| } | ||
| 100% { | ||
| transform: translate(0, 0); | ||
| opacity: 0; | ||
| } | ||
| } | ||
| @keyframes easy-ball-right { | ||
| 0% { | ||
| transform: translate(0, 0); | ||
| } | ||
| 50% { | ||
| transform: translate(24 * @hd, 0); | ||
| } | ||
| 100% { | ||
| transform: translate(0, 0); | ||
| } | ||
| } | ||
| /* generated by https://loading.io/ */ | ||
| @keyframes easy-circular { | ||
| 0% { | ||
| stroke-dasharray: 1, 200; | ||
| stroke-dashoffset: 0; | ||
| } | ||
| 50% { | ||
| stroke-dasharray: 90, 150; | ||
| stroke-dashoffset: -40; | ||
| } | ||
| 100% { | ||
| stroke-dasharray: 90, 150; | ||
| stroke-dashoffset: -120; | ||
| } | ||
| } | ||
| .generate-spinner(@n, @i: 1) when (@i =< @n) { | ||
| .@{prefix}-loading__spinner--spinner i:nth-of-type(@{i}) { | ||
| transform: rotate(@i * 30deg); | ||
| opacity: 1 - (0.75 / 12) * (@i - 1); | ||
| } | ||
| .generate-spinner(@n, (@i + 1)); | ||
| } | ||
| .generate-spinner(12); | ||
| @keyframes easy-rotate { | ||
| from { | ||
| transform: rotate(0deg); | ||
| } | ||
| to { | ||
| transform: rotate(360deg); | ||
| } | ||
| } |
| @import '../../styles/var.less'; | ||
| @loading-text-color: @gray-6; | ||
| @loading-text-font-size: @font-size-md; | ||
| @loading-spinner-color: @gray-5; | ||
| @loading-spinner-size: 30 * @hd; | ||
| @loading-spinner-animation-duration: 0.8s; |
| @import '../../styles/var.less'; | ||
| @popup-border-radius: 16 * @hd; | ||
| @popup-overlay-background-color: rgba(0, 0, 0, 0.6); | ||
| @popup-wrapper-background-color: @white; | ||
| @popup-title-font-size: 16 * @hd; | ||
| @popup-title-font-weight: 700; | ||
| @popup-title-color: @dark-black; | ||
| @popup-main-color: @dark-black; | ||
| @popup-sub-color: @dark-gray; |
@@ -64,3 +64,3 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; | ||
| children: /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('message', _defineProperty({}, messageAlign, messageAlign))), | ||
| className: clsx(messageAlign ? bem('message', _defineProperty({}, messageAlign, messageAlign)) : bem('message')), | ||
| children: message | ||
@@ -67,0 +67,0 @@ }) |
@@ -16,3 +16,3 @@ import React from 'react'; | ||
| transition?: string; | ||
| messageAlign: string; | ||
| messageAlign?: string; | ||
| showCancelButton?: boolean; | ||
@@ -19,0 +19,0 @@ cancelButtonText?: React.ReactNode; |
| export { default as Button } from './button'; | ||
| export { default as ConfigProvider } from './config-provider'; | ||
| export { default as Dialog } from './dialog'; | ||
| export { default as Input } from './input'; | ||
| export { default as Loading } from './loading'; | ||
| export { default as Navbar } from './navbar'; | ||
| export { default as Overlay } from './overlay'; | ||
| export { default as Popup } from './popup'; | ||
@@ -5,0 +9,0 @@ export { default as Tabs } from './tabs'; |
| export { default as Button } from "./button"; | ||
| export { default as ConfigProvider } from "./config-provider"; | ||
| export { default as Dialog } from "./dialog"; | ||
| export { default as Input } from "./input"; | ||
| export { default as Loading } from "./loading"; | ||
| export { default as Navbar } from "./navbar"; | ||
| export { default as Overlay } from "./overlay"; | ||
| export { default as Popup } from "./popup"; | ||
@@ -5,0 +9,0 @@ export { default as Tabs } from "./tabs"; |
| import React from 'react'; | ||
| import { PopupProps } from './PropsType'; | ||
| import { PopupInstanceType, PopupProps } from './PropsType'; | ||
| import './style/index.less'; | ||
| declare const Popup: React.FC<PopupProps>; | ||
| declare const Popup: React.ForwardRefExoticComponent<PopupProps & React.RefAttributes<PopupInstanceType>>; | ||
| export default Popup; |
+68
-33
@@ -0,4 +1,6 @@ | ||
| import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; | ||
| import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; | ||
| import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; | ||
| import clsx from 'clsx'; | ||
| import React, { useEffect, useState } from 'react'; | ||
| import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; | ||
| import Button from "../button"; | ||
@@ -18,3 +20,3 @@ import { createNamespace } from "../utils"; | ||
| bem = _createNamespace2[0]; | ||
| var Popup = function Popup(props) { | ||
| var Popup = /*#__PURE__*/forwardRef(function (props, ref) { | ||
| var visible = props.visible, | ||
@@ -25,8 +27,7 @@ title = props.title, | ||
| className = props.className, | ||
| _props$heightLevel = props.heightLevel, | ||
| heightLevel = _props$heightLevel === void 0 ? 'normal' : _props$heightLevel, | ||
| heightLevel = props.heightLevel, | ||
| _props$showCloseIcon = props.showCloseIcon, | ||
| showCloseIcon = _props$showCloseIcon === void 0 ? true : _props$showCloseIcon, | ||
| buttonText = props.buttonText, | ||
| onButtonClick = props.onButtonClick, | ||
| onConfirmClick = props.onConfirmClick, | ||
| buttonClassName = props.buttonClassName, | ||
@@ -36,3 +37,8 @@ mainContent = props.mainContent, | ||
| subContent = props.subContent, | ||
| subContentClassName = props.subContentClassName; | ||
| subContentClassName = props.subContentClassName, | ||
| _props$overlay = props.overlay, | ||
| overlay = _props$overlay === void 0 ? true : _props$overlay, | ||
| _props$position = props.position, | ||
| position = _props$position === void 0 ? 'center' : _props$position, | ||
| style = props.style; | ||
| var _useState = useState(visible), | ||
@@ -42,2 +48,3 @@ _useState2 = _slicedToArray(_useState, 2), | ||
| setActive = _useState2[1]; | ||
| var popupRef = useRef(null); | ||
| useEffect(function () { | ||
@@ -57,9 +64,14 @@ if (visible) { | ||
| }, [visible]); | ||
| var onClickOverlay = function onClickOverlay() { | ||
| var onClickOverlay = function onClickOverlay(e) { | ||
| var _props$onClickOverlay; | ||
| (_props$onClickOverlay = props.onClickOverlay) === null || _props$onClickOverlay === void 0 || _props$onClickOverlay.call(props); | ||
| (_props$onClickOverlay = props.onClickOverlay) === null || _props$onClickOverlay === void 0 || _props$onClickOverlay.call(props, e); | ||
| if (props.closeOnClickOverlay) { | ||
| onClose(); | ||
| onClose === null || onClose === void 0 || onClose(); | ||
| } | ||
| }; | ||
| useImperativeHandle(ref, function () { | ||
| return { | ||
| popupRef: popupRef | ||
| }; | ||
| }); | ||
| var renderCloseIcon = function renderCloseIcon() { | ||
@@ -69,3 +81,8 @@ if (showCloseIcon) { | ||
| className: clsx(bem('close')), | ||
| onClick: onClose, | ||
| onClick: function onClick(e) { | ||
| var _props$onClickCloseIc; | ||
| e === null || e === void 0 || e.stopPropagation(); | ||
| props === null || props === void 0 || (_props$onClickCloseIc = props.onClickCloseIcon) === null || _props$onClickCloseIc === void 0 || _props$onClickCloseIc.call(props, e); | ||
| onClose === null || onClose === void 0 || onClose(); | ||
| }, | ||
| src: Close, | ||
@@ -94,3 +111,3 @@ alt: "" | ||
| children: /*#__PURE__*/_jsx(Button, { | ||
| onClick: onButtonClick, | ||
| onClick: onConfirmClick, | ||
| className: clsx(bem('footer', ['button']), buttonClassName), | ||
@@ -104,36 +121,54 @@ children: buttonText | ||
| var renderContent = function renderContent() { | ||
| return /*#__PURE__*/_jsxs("div", { | ||
| className: clsx(bem('content')), | ||
| children: [mainContent && /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('main'), mainContentClassName, { | ||
| 'mb-10': subContent | ||
| }), | ||
| children: mainContent | ||
| }), subContent && /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('sub'), subContentClassName), | ||
| children: subContent | ||
| })] | ||
| }); | ||
| if (mainContent || subContent) { | ||
| return /*#__PURE__*/_jsxs("div", { | ||
| className: clsx(bem('content')), | ||
| children: [mainContent && /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('main'), mainContentClassName, { | ||
| 'mb-10': subContent | ||
| }), | ||
| children: mainContent | ||
| }), subContent && /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('sub'), subContentClassName), | ||
| children: subContent | ||
| })] | ||
| }); | ||
| } | ||
| return null; | ||
| }; | ||
| var renderChildren = function renderChildren() { | ||
| if (children) { | ||
| return /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('children')), | ||
| children: children | ||
| }); | ||
| } | ||
| return null; | ||
| }; | ||
| var getPopupHeight = function getPopupHeight() { | ||
| if (heightLevel) { | ||
| return HEIGHT_MAP[heightLevel]; | ||
| } | ||
| return ''; | ||
| }; | ||
| return /*#__PURE__*/_jsxs("div", { | ||
| ref: popupRef, | ||
| className: clsx(bem('container', { | ||
| hidden: !active | ||
| })), | ||
| children: [/*#__PURE__*/_jsx("div", { | ||
| children: [overlay && /*#__PURE__*/_jsx("div", { | ||
| className: clsx(bem('overlay', { | ||
| visible: visible | ||
| })), | ||
| }), props.overlayClass), | ||
| onClick: onClickOverlay | ||
| }), /*#__PURE__*/_jsxs("div", { | ||
| className: clsx(bem('wrapper', { | ||
| className: clsx(bem('wrapper', _defineProperty({ | ||
| visible: visible | ||
| }), [className]), | ||
| style: { | ||
| maxHeight: HEIGHT_MAP[heightLevel], | ||
| minHeight: HEIGHT_MAP['min'] | ||
| }, | ||
| children: [renderTitle(), renderContent(), children, renderButton(), renderCloseIcon()] | ||
| }, position, position)), [className]), | ||
| style: _objectSpread({ | ||
| height: getPopupHeight() | ||
| }, style), | ||
| children: [renderTitle(), renderContent(), renderChildren(), renderButton(), renderCloseIcon()] | ||
| })] | ||
| }); | ||
| }; | ||
| }); | ||
| export default Popup; |
@@ -5,3 +5,6 @@ /// <reference types="react" /> | ||
| className?: string; | ||
| overlayClass?: string; | ||
| style?: React.CSSProperties; | ||
| title?: string; | ||
| position?: 'bottom' | 'center'; | ||
| mainContent?: string; | ||
@@ -17,5 +20,10 @@ mainContentClassName?: string; | ||
| showCloseIcon?: boolean; | ||
| onClose: () => void; | ||
| onButtonClick?: () => void; | ||
| onClickOverlay?: () => void; | ||
| onClickCloseIcon?: (e: React.MouseEvent) => void; | ||
| overlay?: boolean; | ||
| onClose?: () => void; | ||
| onConfirmClick?: () => void; | ||
| onClickOverlay?: (e: React.MouseEvent) => void; | ||
| } | ||
| export type PopupInstanceType = { | ||
| popupRef: React.RefObject<HTMLDivElement>; | ||
| }; |
@@ -1,3 +0,14 @@ | ||
| @import '../../styles/var.less'; | ||
| @import './var.less'; | ||
| :root { | ||
| --easy-popup-border-radius: @popup-border-radius; | ||
| --easy-popup-overlay-background-color: @popup-overlay-background-color; | ||
| --easy-popup-wrapper-background-color: @popup-wrapper-background-color; | ||
| --easy-popup-title-font-size: @popup-title-font-size; | ||
| --easy-popup-title-font-weight: @popup-title-font-weight; | ||
| --easy-popup-title-color: @popup-title-color; | ||
| --easy-popup-main-color: @popup-main-color; | ||
| --easy-popup-sub-color: @popup-sub-color; | ||
| } | ||
| @keyframes overlay-fade-in { | ||
@@ -13,2 +24,12 @@ from { | ||
| @keyframes overlay-fade-out { | ||
| from { | ||
| opacity: 1; | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| } | ||
| } | ||
| @keyframes slide-down-enter { | ||
@@ -20,2 +41,42 @@ from { | ||
| @keyframes slide-up-enter { | ||
| from { | ||
| transform: translate3d(0, -100%, 0); | ||
| } | ||
| } | ||
| @keyframes center-fade-in { | ||
| from { | ||
| opacity: 0; | ||
| transform: translate3d(-50%, -50%, 0) scale(0.8); | ||
| } | ||
| to { | ||
| opacity: 1; | ||
| transform: translate3d(-50%, -50%, 0) scale(1); | ||
| } | ||
| } | ||
| @keyframes center-fade-out { | ||
| from { | ||
| opacity: 1; | ||
| transform: translate3d(-50%, -50%, 0) scale(1); | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| transform: translate3d(-50%, -50%, 0) scale(0.8); | ||
| } | ||
| } | ||
| @keyframes rv-fade-out { | ||
| from { | ||
| opacity: 1; | ||
| } | ||
| to { | ||
| opacity: 0; | ||
| } | ||
| } | ||
| .@{prefix}-popup { | ||
@@ -35,3 +96,3 @@ &__container { | ||
| inset: 0; | ||
| background: rgba(0, 0, 0, 0.6); | ||
| background: var(--easy-popup-overlay-background-color); | ||
| opacity: 0; | ||
@@ -46,21 +107,58 @@ transition: opacity 0.3s ease-in-out; | ||
| // 遮罩层关闭动画 | ||
| &__overlay:not(&__overlay--visible) { | ||
| animation: overlay-fade-out 0.3s ease-in-out 1 normal; | ||
| } | ||
| &__wrapper { | ||
| position: fixed; | ||
| bottom: 0; | ||
| left: 0; | ||
| width: 100%; | ||
| background: #fff; | ||
| border-top-left-radius: 16 * @hd; | ||
| border-top-right-radius: 16 * @hd; | ||
| transform: translateY(100%); | ||
| transition: transform 0.3s ease-in-out; | ||
| padding-bottom: 80 * @hd; | ||
| background: var(--easy-popup-wrapper-background-color); | ||
| transition: | ||
| transform 0.3s ease-in-out, | ||
| opacity 0.3s ease-in-out; | ||
| box-sizing: border-box; | ||
| max-height: 100%; | ||
| &--bottom { | ||
| position: fixed; | ||
| bottom: 0; | ||
| left: 0; | ||
| width: 100%; | ||
| height: 45vh; | ||
| padding-bottom: 80 * @hd; | ||
| transform: translateY(100%); | ||
| border-top-left-radius: var(--easy-popup-border-radius); | ||
| border-top-right-radius: var(--easy-popup-border-radius); | ||
| } | ||
| &--center { | ||
| position: fixed; | ||
| top: 50%; | ||
| left: 50%; | ||
| transform: translate3d(-50%, -50%, 0) scale(1); | ||
| opacity: 0; | ||
| border-radius: var(--easy-popup-border-radius); | ||
| } | ||
| &--visible { | ||
| transform: translateY(0); | ||
| animation: slide-down-enter 0.3s ease-in-out 1 normal; | ||
| &.@{prefix}-popup__wrapper--bottom { | ||
| transform: translateY(0); | ||
| animation: slide-down-enter 0.3s ease-in-out 1 normal; | ||
| } | ||
| &.@{prefix}-popup__wrapper--center { | ||
| opacity: 1; | ||
| transform: translate3d(-50%, -50%, 0) scale(1); | ||
| animation: center-fade-in 0.3s ease-in-out 1 normal; | ||
| } | ||
| } | ||
| } | ||
| &__wrapper--bottom:not(&__wrapper--visible) { | ||
| animation: slide-down-exit 0.3s ease-in-out 1 normal; | ||
| } | ||
| &__wrapper--center:not(&__wrapper--visible) { | ||
| animation: center-fade-out 0.3s ease-in-out 1 normal; | ||
| } | ||
| &__header { | ||
@@ -72,5 +170,3 @@ position: relative; | ||
| font-weight: 700; | ||
| color: @dark-black; | ||
| border-top-left-radius: 16 * @hd; | ||
| border-top-right-radius: 16 * @hd; | ||
| color: var(--easy-popup-title-color); | ||
| background: linear-gradient( | ||
@@ -82,2 +178,13 @@ 180deg, | ||
| .font-title-medium-bold; | ||
| .@{prefix}-popup__wrapper--bottom & { | ||
| border-top-left-radius: var(--easy-popup-border-radius); | ||
| border-top-right-radius: var(--easy-popup-border-radius); | ||
| } | ||
| .@{prefix}-popup__wrapper--center & { | ||
| border-top-left-radius: var(--easy-popup-border-radius); | ||
| border-top-right-radius: var(--easy-popup-border-radius); | ||
| padding-top: 20 * @hd; | ||
| } | ||
| } | ||
@@ -104,2 +211,8 @@ | ||
| height: 12 * @hd; | ||
| z-index: 1; | ||
| .@{prefix}-popup__wrapper--center & { | ||
| top: 12 * @hd; | ||
| right: 12 * @hd; | ||
| } | ||
| } | ||
@@ -112,2 +225,7 @@ | ||
| padding: 0 15 * @hd; | ||
| .@{prefix}-popup__wrapper--center & { | ||
| max-height: calc(100% - 140px); | ||
| flex: 1; | ||
| } | ||
| } | ||
@@ -120,3 +238,3 @@ | ||
| margin: 0; | ||
| color: @dark-black; | ||
| color: var(--easy-popup-main-color); | ||
| line-height: normal; | ||
@@ -134,3 +252,3 @@ | ||
| margin: 0; | ||
| color: @dark-gray; | ||
| color: var(--easy-popup-sub-color); | ||
| } | ||
@@ -137,0 +255,0 @@ |
@@ -25,2 +25,4 @@ // 基本单位 | ||
| @gray-active: #8992a1; | ||
| @gray-5: #c8c9cc; | ||
| @gray-6: #969799; | ||
| @gray-7: #646566; | ||
@@ -44,7 +46,2 @@ @dark-gray: #999999; | ||
| // font | ||
| @font-family-helvetica-regular: 'Helvetica', sans-serif; | ||
| @font-family-helvetica-bold: 'Helvetica Bold', sans-serif; | ||
| @font-family-helvetica-lt-black: 'Helvetica LT Black', sans-serif; | ||
| // Font | ||
@@ -84,3 +81,2 @@ @font-size-xs: 10 * @hd; | ||
| font-size: 40 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -92,3 +88,2 @@ line-height: 46 * @hd; | ||
| font-size: 26 * @hd; | ||
| font-family: @font-family-helvetica-lt-black; | ||
| font-weight: bold; | ||
@@ -100,3 +95,2 @@ line-height: 32 * @hd; | ||
| font-size: 24 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -108,3 +102,2 @@ line-height: 30 * @hd; | ||
| font-size: 20 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -116,3 +109,2 @@ line-height: 28 * @hd; | ||
| font-size: 18 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -124,3 +116,2 @@ line-height: 24 * @hd; | ||
| font-size: 16 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -132,3 +123,2 @@ line-height: 20 * @hd; | ||
| font-size: 14 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -140,3 +130,2 @@ line-height: 18 * @hd; | ||
| font-size: 12 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -148,3 +137,2 @@ line-height: 16 * @hd; | ||
| font-size: 16 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -156,3 +144,2 @@ line-height: 20 * @hd; | ||
| font-size: 14 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -164,3 +151,2 @@ line-height: 18 * @hd; | ||
| font-size: 12 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -172,3 +158,2 @@ line-height: 16 * @hd; | ||
| font-size: 10 * @hd; | ||
| font-family: @font-family-helvetica-bold; | ||
| font-weight: bold; | ||
@@ -180,3 +165,2 @@ line-height: 12 * @hd; | ||
| font-size: 10 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -188,3 +172,2 @@ line-height: 12 * @hd; | ||
| font-size: 14 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -196,3 +179,2 @@ line-height: 18 * @hd; | ||
| font-size: 12 * @hd; | ||
| font-family: @font-family-helvetica-regular; | ||
| font-weight: normal; | ||
@@ -199,0 +181,0 @@ line-height: 16 * @hd; |
@@ -8,3 +8,3 @@ import { ReactElement } from 'react'; | ||
| export declare function render(node: ReactElement, container: ContainerType): void; | ||
| export declare function unmount(container: ContainerType): any; | ||
| export declare function unmount(container: ContainerType): boolean | Promise<void>; | ||
| export {}; |
@@ -5,6 +5,3 @@ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime"; | ||
| import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; | ||
| // @ts-expect-error react-dom is not typed | ||
| import * as ReactDOM from 'react-dom'; | ||
| // @ts-expect-error react-dom/client is not typed | ||
| import { reactDomVersion } from "./version"; | ||
@@ -11,0 +8,0 @@ |
| import { version as _reactVersion } from 'react'; | ||
| // @ts-expect-error react-dom version is not typed | ||
| import { version as _reactDomVersion } from 'react-dom'; | ||
| export var reactVersion = Number((_reactVersion || '').split('.')[0]); | ||
| export var reactDomVersion = Number((_reactDomVersion || '').split('.')[0]); |
+4
-4
| { | ||
| "name": "@yqg/easy-ui", | ||
| "version": "1.0.0", | ||
| "version": "1.0.1", | ||
| "license": "MIT", | ||
@@ -9,5 +9,2 @@ "main": "dist/esm/index.js", | ||
| ], | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
@@ -47,3 +44,6 @@ "build": "max build --target=bundle", | ||
| }, | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "tag": true | ||
| } |
107124
12.4%106
7.07%2118
8.45%