Repository: niu-grandpa/rabbit-ui Branch: master Commit: 93164adfa7dc Files: 674 Total size: 3.1 MB Directory structure: gitextract_ibke3ltz/ ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github/ │ ├── CODE_OF_CONDUCT.md │ └── CONTRIBUTING.md ├── .gitignore ├── .npmignore ├── LICENSE ├── README.en-US.md ├── README.md ├── config/ │ ├── webpack.common.js │ ├── webpack.dev.js │ ├── webpack.dist.dev.js │ └── webpack.dist.prod.js ├── dist/ │ ├── rabbit.js │ └── styles/ │ └── rabbit.css ├── docs/ │ ├── affix.md │ ├── alert.md │ ├── avatar.md │ ├── back-top.md │ ├── badge.md │ ├── breadcrumb.md │ ├── button.md │ ├── card.md │ ├── carousel.md │ ├── checkbox.md │ ├── circle.md │ ├── collapse.md │ ├── count-down.md │ ├── divider.md │ ├── drawer.md │ ├── dropdown.md │ ├── empty.md │ ├── input-number.md │ ├── jumbotron.md │ ├── loading-bar.md │ ├── message.md │ ├── mini-modal.md │ ├── modal.md │ ├── notice.md │ ├── page-header.md │ ├── poptip.md │ ├── progress.md │ ├── radio.md │ ├── result.md │ ├── skeleton.md │ ├── spin.md │ ├── steps.md │ ├── switch.md │ ├── tabs.md │ ├── tag.md │ ├── time.md │ ├── timeline.md │ └── tooltip.md ├── examples/ │ ├── README.md │ ├── affix/ │ │ ├── index.html │ │ └── index.ts │ ├── alert/ │ │ ├── index.html │ │ └── index.ts │ ├── avatar/ │ │ ├── index.html │ │ └── index.ts │ ├── back-top/ │ │ ├── index.html │ │ └── index.ts │ ├── badge/ │ │ ├── index.html │ │ └── index.ts │ ├── breadcrumb/ │ │ ├── index.html │ │ └── index.ts │ ├── button/ │ │ ├── index.html │ │ └── index.ts │ ├── card/ │ │ ├── index.html │ │ └── index.ts │ ├── carousel/ │ │ ├── index.html │ │ └── index.ts │ ├── checkbox/ │ │ ├── index.html │ │ └── index.ts │ ├── circle/ │ │ ├── index.html │ │ └── index.ts │ ├── collapse/ │ │ ├── index.html │ │ └── index.ts │ ├── count-down/ │ │ ├── index.html │ │ └── index.ts │ ├── divider/ │ │ ├── index.html │ │ └── index.ts │ ├── drawer/ │ │ ├── index.html │ │ └── index.ts │ ├── dropdown/ │ │ ├── index.html │ │ └── index.ts │ ├── empty/ │ │ ├── index.html │ │ └── index.ts │ ├── input-number/ │ │ ├── index.html │ │ └── index.ts │ ├── jumbotron/ │ │ ├── index.html │ │ └── index.ts │ ├── loading-bar/ │ │ ├── index.html │ │ └── index.ts │ ├── main.ts │ ├── message/ │ │ ├── index.html │ │ └── index.ts │ ├── mini-modal/ │ │ ├── index.html │ │ └── index.ts │ ├── modal/ │ │ ├── index.html │ │ └── index.ts │ ├── notice/ │ │ ├── index.html │ │ └── index.ts │ ├── page-header/ │ │ ├── index.html │ │ └── index.ts │ ├── poptip/ │ │ ├── index.html │ │ └── index.ts │ ├── progress/ │ │ ├── index.html │ │ └── index.ts │ ├── radio/ │ │ ├── index.html │ │ └── index.ts │ ├── result/ │ │ ├── index.html │ │ └── index.ts │ ├── skeleton/ │ │ ├── index.html │ │ └── index.ts │ ├── spin/ │ │ ├── index.html │ │ └── index.ts │ ├── steps/ │ │ ├── index.html │ │ └── index.ts │ ├── switch/ │ │ ├── index.html │ │ └── index.ts │ ├── tabs/ │ │ ├── index.html │ │ └── index.ts │ ├── tag/ │ │ ├── index.html │ │ └── index.ts │ ├── time/ │ │ ├── index.html │ │ └── index.ts │ ├── timeline/ │ │ ├── index.html │ │ └── index.ts │ └── tooltip/ │ ├── index.html │ └── index.ts ├── package.json ├── postcss.config.js ├── prettier.config.js ├── site/ │ ├── .babelrc │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── index.html │ ├── package.json │ ├── prettier.config.js │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Anchor.vue │ │ │ ├── CodeBox.vue │ │ │ ├── ColorCard.vue │ │ │ ├── ExampleHeaderArea.vue │ │ │ ├── NavLogo.vue │ │ │ ├── RowCol.vue │ │ │ ├── SearchInput.vue │ │ │ └── index.ts │ │ ├── examples-code/ │ │ │ ├── components/ │ │ │ │ ├── affix/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── FixedBottom.vue │ │ │ │ │ ├── Offset.vue │ │ │ │ │ ├── StatusChange.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── alert/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── WithBanner.vue │ │ │ │ │ ├── WithClose.vue │ │ │ │ │ ├── WithDesc.vue │ │ │ │ │ ├── WithIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── avatar/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── AutoFontSize.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Type.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── back-top/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── CustomStyle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── badge/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Alone.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Colors.vue │ │ │ │ │ ├── CustomContent.vue │ │ │ │ │ ├── CustomPosition.vue │ │ │ │ │ ├── MaxCount.vue │ │ │ │ │ ├── PresetColor.vue │ │ │ │ │ ├── RedDot.vue │ │ │ │ │ ├── StatusDot.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Separator.vue │ │ │ │ │ ├── WithIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Ghost.vue │ │ │ │ │ ├── Group.vue │ │ │ │ │ ├── IconWithCircle.vue │ │ │ │ │ ├── Loading.vue │ │ │ │ │ ├── Long.vue │ │ │ │ │ ├── Placement.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ ├── Type.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── card/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── DisHover.vue │ │ │ │ │ ├── NoBorder.vue │ │ │ │ │ ├── Shadow.vue │ │ │ │ │ ├── Simple.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── carousel/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── AutoPlay.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Fade.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Border.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Group.vue │ │ │ │ │ ├── Indeterminate.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── circle/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── CustomStyle.vue │ │ │ │ │ ├── Dashboard.vue │ │ │ │ │ ├── UseWithOther.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── collapse/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── According.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Ghost.vue │ │ │ │ │ ├── HiddenArrow.vue │ │ │ │ │ ├── Simple.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── count-down/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── divider/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── HeaderPosition.vue │ │ │ │ │ ├── Horizontal.vue │ │ │ │ │ ├── TextStyle.vue │ │ │ │ │ ├── Vertical.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── drawer/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Custom.vue │ │ │ │ │ ├── Inner.vue │ │ │ │ │ ├── Multilayer.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dropdown/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Nested.vue │ │ │ │ │ ├── Placement.vue │ │ │ │ │ ├── Trigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── empty/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Custom.vue │ │ │ │ │ ├── NoDesc.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── input-number/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── ControlsOutside.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Editable.vue │ │ │ │ │ ├── Formatter.vue │ │ │ │ │ ├── ReadOnly.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ ├── Step.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── jumbotron/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Appearance.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── loading-bar/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── UseInAsync.vue │ │ │ │ │ ├── UsedInRoute.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── message/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Background.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Closable.vue │ │ │ │ │ ├── Loading.vue │ │ │ │ │ ├── Promise.vue │ │ │ │ │ ├── Time.vue │ │ │ │ │ ├── Type.vue │ │ │ │ │ ├── UseHTML.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── mini-modal/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Confirm.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── modal/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Aysnc.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Custom.vue │ │ │ │ │ ├── DisabledClose.vue │ │ │ │ │ ├── FullScreen.vue │ │ │ │ │ ├── Position.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── notice/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Closable.vue │ │ │ │ │ ├── Promise.vue │ │ │ │ │ ├── Time.vue │ │ │ │ │ ├── Type.vue │ │ │ │ │ ├── UseHTML.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── page-header/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── poptip/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── AutoNewLine.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Complex.vue │ │ │ │ │ ├── Confirm.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── InsideClosed.vue │ │ │ │ │ ├── Placement.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── progress/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── FDJDT.vue │ │ │ │ │ ├── Percent.vue │ │ │ │ │ ├── StrokeColor.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── radio/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Border.vue │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── ButtonStyle.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Group.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ ├── Vertical.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── result/ │ │ │ │ │ ├── 403.vue │ │ │ │ │ ├── 404.vue │ │ │ │ │ ├── 500.vue │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── CustomIcon.vue │ │ │ │ │ ├── Error.vue │ │ │ │ │ ├── Info.vue │ │ │ │ │ ├── Success.vue │ │ │ │ │ ├── Warning.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── skeleton/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Complex.vue │ │ │ │ │ ├── Custom.vue │ │ │ │ │ ├── Loading.vue │ │ │ │ │ ├── WithAnimation.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── spin/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── ChangeState.vue │ │ │ │ │ ├── CustomContent.vue │ │ │ │ │ ├── FixCenter.vue │ │ │ │ │ ├── FullScreen.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── steps/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── ChangeStep.vue │ │ │ │ │ ├── Error.vue │ │ │ │ │ ├── Mini.vue │ │ │ │ │ ├── Vertical.vue │ │ │ │ │ ├── WithIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── switch/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── CustomColor.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Loading.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ ├── TextAndIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tabs/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Animated.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── CardType.vue │ │ │ │ │ ├── Closable.vue │ │ │ │ │ ├── CustomStyle.vue │ │ │ │ │ ├── Disabled.vue │ │ │ │ │ ├── Small.vue │ │ │ │ │ ├── WithIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tag/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── CanSelect.vue │ │ │ │ │ ├── Colors.vue │ │ │ │ │ ├── Size.vue │ │ │ │ │ ├── StyleTypes.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── time/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── AutoUpdate.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Types.vue │ │ │ │ │ ├── WithAnchor.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── timeline/ │ │ │ │ │ ├── APITable.vue │ │ │ │ │ ├── Basic.vue │ │ │ │ │ ├── Colors.vue │ │ │ │ │ ├── Custom.vue │ │ │ │ │ ├── Pending.vue │ │ │ │ │ └── index.ts │ │ │ │ └── tooltip/ │ │ │ │ ├── APITable.vue │ │ │ │ ├── AutoNewLine.vue │ │ │ │ ├── Basic.vue │ │ │ │ ├── CustomContent.vue │ │ │ │ ├── Delay.vue │ │ │ │ ├── Disabled.vue │ │ │ │ ├── Placement.vue │ │ │ │ ├── Theme.vue │ │ │ │ └── index.ts │ │ │ └── docs/ │ │ │ ├── install/ │ │ │ │ ├── CDNAZ.vue │ │ │ │ ├── SL.vue │ │ │ │ └── index.ts │ │ │ ├── introduce/ │ │ │ │ ├── AZ.vue │ │ │ │ ├── AZ2.vue │ │ │ │ ├── SL.vue │ │ │ │ └── index.ts │ │ │ └── start/ │ │ │ ├── Code1.vue │ │ │ ├── Code2.vue │ │ │ ├── Code3.vue │ │ │ └── index.ts │ │ ├── main.ts │ │ ├── markdown.css │ │ ├── pages/ │ │ │ ├── app/ │ │ │ │ ├── Index/ │ │ │ │ │ ├── Index.vue │ │ │ │ │ ├── content/ │ │ │ │ │ │ └── Content.vue │ │ │ │ │ ├── header/ │ │ │ │ │ │ ├── Header.vue │ │ │ │ │ │ ├── NavBar.vue │ │ │ │ │ │ ├── NavBarDropdown.vue │ │ │ │ │ │ ├── NavMore.vue │ │ │ │ │ │ └── NavRouterLink.vue │ │ │ │ │ └── sider/ │ │ │ │ │ ├── Sider.vue │ │ │ │ │ └── SiderMenu.vue │ │ │ │ └── views/ │ │ │ │ ├── Affix.vue │ │ │ │ ├── Alert.vue │ │ │ │ ├── Avatar.vue │ │ │ │ ├── BackTop.vue │ │ │ │ ├── Badge.vue │ │ │ │ ├── Breadcrumb.vue │ │ │ │ ├── Button.vue │ │ │ │ ├── Card.vue │ │ │ │ ├── Carousel.vue │ │ │ │ ├── Checkbox.vue │ │ │ │ ├── Circle.vue │ │ │ │ ├── Collapse.vue │ │ │ │ ├── Color.vue │ │ │ │ ├── CountDown.vue │ │ │ │ ├── Divider.vue │ │ │ │ ├── Drawer.vue │ │ │ │ ├── Dropdown.vue │ │ │ │ ├── Empty.vue │ │ │ │ ├── FAQ.vue │ │ │ │ ├── Icon.vue │ │ │ │ ├── InputNumber.vue │ │ │ │ ├── Install.vue │ │ │ │ ├── Introduce.vue │ │ │ │ ├── Jumbotron.vue │ │ │ │ ├── LoadingBar.vue │ │ │ │ ├── Message.vue │ │ │ │ ├── MiniModal.vue │ │ │ │ ├── Modal.vue │ │ │ │ ├── Notice.vue │ │ │ │ ├── PageHeader.vue │ │ │ │ ├── Poptip.vue │ │ │ │ ├── Progress.vue │ │ │ │ ├── Radio.vue │ │ │ │ ├── Result.vue │ │ │ │ ├── Skeleton.vue │ │ │ │ ├── Spin.vue │ │ │ │ ├── Sponsor.vue │ │ │ │ ├── Start.vue │ │ │ │ ├── Steps.vue │ │ │ │ ├── Switch.vue │ │ │ │ ├── Tabs.vue │ │ │ │ ├── Tag.vue │ │ │ │ ├── Time.vue │ │ │ │ ├── Timeline.vue │ │ │ │ ├── Tooltip.vue │ │ │ │ └── Update.vue │ │ │ ├── home/ │ │ │ │ └── Home.vue │ │ │ └── index.ts │ │ ├── plugins/ │ │ │ └── antd.ts │ │ ├── router-link-list.ts │ │ ├── routers/ │ │ │ └── index.ts │ │ └── shims-vue.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── some-log.md ├── src/ │ ├── build-umd.ts │ ├── components/ │ │ ├── affix/ │ │ │ ├── affix.ts │ │ │ └── index.ts │ │ ├── alert/ │ │ │ ├── alert.ts │ │ │ └── index.ts │ │ ├── avatar/ │ │ │ ├── avatar.ts │ │ │ └── index.ts │ │ ├── back-top/ │ │ │ ├── back-top.ts │ │ │ └── index.ts │ │ ├── badge/ │ │ │ ├── badge.ts │ │ │ └── index.ts │ │ ├── breadcrumb/ │ │ │ ├── breadcrumb.ts │ │ │ └── index.ts │ │ ├── button/ │ │ │ ├── button.ts │ │ │ └── index.ts │ │ ├── card/ │ │ │ ├── card.ts │ │ │ └── index.ts │ │ ├── carousel/ │ │ │ ├── carousel.ts │ │ │ └── index.ts │ │ ├── checkbox/ │ │ │ ├── checkbox.ts │ │ │ └── index.ts │ │ ├── circle/ │ │ │ ├── circle.ts │ │ │ └── index.ts │ │ ├── collapse/ │ │ │ ├── collapse.ts │ │ │ └── index.ts │ │ ├── count-down/ │ │ │ ├── count-down.ts │ │ │ └── index.ts │ │ ├── divider/ │ │ │ ├── divider.ts │ │ │ └── index.ts │ │ ├── drawer/ │ │ │ ├── drawer.ts │ │ │ └── index.ts │ │ ├── dropdown/ │ │ │ ├── dropdown.ts │ │ │ └── index.ts │ │ ├── empty/ │ │ │ ├── empty.ts │ │ │ └── index.ts │ │ ├── input-number/ │ │ │ ├── index.ts │ │ │ └── input-number.ts │ │ ├── jumbotron/ │ │ │ ├── index.ts │ │ │ └── jumbotron.ts │ │ ├── loading-bar/ │ │ │ ├── index.ts │ │ │ └── loading-bar.ts │ │ ├── message/ │ │ │ ├── index.ts │ │ │ ├── instance.ts │ │ │ └── message.ts │ │ ├── mini-modal/ │ │ │ ├── index.ts │ │ │ └── mini-modal.ts │ │ ├── modal/ │ │ │ ├── index.ts │ │ │ └── modal.ts │ │ ├── notice/ │ │ │ ├── index.ts │ │ │ └── notice.ts │ │ ├── page-header/ │ │ │ ├── index.ts │ │ │ └── page-header.ts │ │ ├── poptip/ │ │ │ ├── index.ts │ │ │ └── poptip.ts │ │ ├── prefix.ts │ │ ├── progress/ │ │ │ ├── index.ts │ │ │ └── progress.ts │ │ ├── radio/ │ │ │ ├── index.ts │ │ │ └── radio.ts │ │ ├── result/ │ │ │ ├── index.ts │ │ │ └── result.ts │ │ ├── skeleton/ │ │ │ ├── index.ts │ │ │ └── skeleton.ts │ │ ├── spin/ │ │ │ ├── index.ts │ │ │ └── spin.ts │ │ ├── steps/ │ │ │ ├── index.ts │ │ │ └── steps.ts │ │ ├── switch/ │ │ │ ├── index.ts │ │ │ └── switch.ts │ │ ├── tabs/ │ │ │ ├── index.ts │ │ │ └── tabs.ts │ │ ├── tag/ │ │ │ ├── index.ts │ │ │ └── tag.ts │ │ ├── time/ │ │ │ ├── index.ts │ │ │ └── time.ts │ │ ├── timeline/ │ │ │ ├── index.ts │ │ │ └── timeline.ts │ │ └── tooltip/ │ │ ├── index.ts │ │ └── tooltip.ts │ ├── dom-utils/ │ │ ├── bind.ts │ │ ├── elem.ts │ │ ├── index.ts │ │ ├── prev&next.ts │ │ ├── remove-attrs.ts │ │ ├── siblings.ts │ │ └── slide.ts │ ├── images.d.ts │ ├── index.ts │ ├── mixins/ │ │ ├── arrow.ts │ │ ├── cb-promise.ts │ │ ├── clickoutside.ts │ │ ├── css-transition.ts │ │ ├── index.ts │ │ ├── one-node.ts │ │ ├── scrollable.ts │ │ ├── tooltip.ts │ │ └── warn.ts │ ├── rabbit-simple-ui.ts │ ├── styles/ │ │ ├── README.md │ │ ├── animation/ │ │ │ ├── ease.less │ │ │ ├── fade.less │ │ │ ├── index.less │ │ │ ├── move.less │ │ │ ├── slide.less │ │ │ └── zoom.less │ │ ├── color/ │ │ │ ├── bezierEasing.less │ │ │ ├── colorPalette.less │ │ │ ├── colors.less │ │ │ └── tinyColor.less │ │ ├── common/ │ │ │ ├── article.less │ │ │ ├── base.less │ │ │ ├── iconfont/ │ │ │ │ ├── icons-font.less │ │ │ │ ├── icons-icons.less │ │ │ │ ├── icons-variables.less │ │ │ │ └── icons.less │ │ │ ├── index.less │ │ │ └── normalize.less │ │ ├── components/ │ │ │ ├── affix.less │ │ │ ├── alert.less │ │ │ ├── avatar.less │ │ │ ├── back-top.less │ │ │ ├── badge.less │ │ │ ├── breadcrumb.less │ │ │ ├── button.less │ │ │ ├── card.less │ │ │ ├── carousel.less │ │ │ ├── checkbox.less │ │ │ ├── circle.less │ │ │ ├── collapse.less │ │ │ ├── count-down.less │ │ │ ├── divider.less │ │ │ ├── drawer.less │ │ │ ├── dropdown.less │ │ │ ├── empty.less │ │ │ ├── index.less │ │ │ ├── input-number.less │ │ │ ├── jumbotron.less │ │ │ ├── loading-bar.less │ │ │ ├── message.less │ │ │ ├── modal.less │ │ │ ├── notice.less │ │ │ ├── page-header.less │ │ │ ├── poptip.less │ │ │ ├── progress.less │ │ │ ├── radio.less │ │ │ ├── result.less │ │ │ ├── skeleton.less │ │ │ ├── spin.less │ │ │ ├── steps.less │ │ │ ├── switch.less │ │ │ ├── tabs.less │ │ │ ├── tag.less │ │ │ ├── time.less │ │ │ ├── timeline.less │ │ │ └── tooltip.less │ │ ├── copyright.less │ │ ├── custom.less │ │ ├── index.less │ │ └── mixins/ │ │ ├── button.less │ │ ├── caret.less │ │ ├── checkbox.less │ │ ├── clearfix.less │ │ ├── close.less │ │ ├── common.less │ │ ├── content.less │ │ ├── index.less │ │ ├── input.less │ │ ├── layout.less │ │ ├── loading.less │ │ ├── mask.less │ │ ├── select.less │ │ ├── size.less │ │ └── tooltip.less │ └── utils/ │ ├── check-type.ts │ ├── destroy.ts │ ├── index.ts │ ├── random-str.ts │ ├── use-html-string.ts │ └── validComps.ts ├── tsconfig.json ├── tsconfig.tsbuildinfo └── workspace.code-workspace ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # 该文件用于统一不同编辑器和ide的编码风格 # https://editorconfig.org # 最顶端的编辑器配置文件 root = true # 所有文件 [*] charset = utf-8 indent_style = space indent_size = 4 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true [*.md] insert_final_newline = false trim_trailing_whitespace = false # 制表符缩进(未指定大小) [Makefile] indent_style = tab ================================================ FILE: .eslintignore ================================================ dist site config example-static node_modules ================================================ FILE: .eslintrc.js ================================================ module.exports = { env: { browser: true, commonjs: true, es6: true }, extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], parser: '@typescript-eslint/parser', parserOptions: { ecmaFeatures: { experimentalObjectRestSpread: true }, ecmaVersion: 12, sourceType: 'module' }, plugins: ['@typescript-eslint'], rules: { indent: [ 'error', 4, { SwitchCase: 1 } ], quotes: ['error', 'single'], semi: ['error', 'always'], // 优先使用 interface 而不是 type '@typescript-eslint/consistent-type-definitions': ['error', 'interface'], // 忽略 ts 注释警告 '@typescript-eslint/ban-ts-comment': 'off', // 忽略 any 类型警告 '@typescript-eslint/no-explicit-any': 'off' } }; ================================================ FILE: .gitattributes ================================================ *.js linguist-language=TypeScript *.css linguist-language= Less *.html linguist-language=HTML *.vue linguist-language=TypeScript ================================================ FILE: .github/CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at `2864103063@qq.com`. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: .github/CONTRIBUTING.md ================================================ # Contributing to Rabbit UI Looking to contribute something to RabbitUI? **Here's how you can help.** Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features. ================================================ FILE: .gitignore ================================================ # dependencies debug.log /node_modules /examples-static /site/node_modules ================================================ FILE: .npmignore ================================================ .* *.md *.log node_modules/ config/ docs/ examples/ examples-static/ site/ ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2020 niu-grandpa Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.en-US.md ================================================

English | [简体中文](./README.md) # RabbitUI ### A simple UI component library based on JavaScrip [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md) [![](https://img.shields.io/npm/v/rabbit-simple-ui.svg?style=flat-square)](https://www.npmjs.com/package/rabbit-simple-ui) [![](https://data.jsdelivr.com/v1/package/npm/rabbit-simple-ui/badge)](https://www.jsdelivr.com/package/npm/rabbit-simple-ui) ### Features - Use semantic custom elements for easy resolution - Elegant and simple, say goodbye to the huge and bloated dazzling structure - Does not rely on any third party framework, the underlying base is native JavaScript, import out of the box - Can be used in Vue, jQuery or other existing projects - Rich components and features to suit most site scenarios - Careful, beautiful UI - Documents that are minutiae ### Install - With NPM, you'll need to use 'TypeScript' and write and use code in TS files. Make sure you understand it and can use it in general ```bash npm install rabbit-simple-ui --save ``` - Using a script tag for global use: Import the file directly in the browser using the `script` and `link` tags, and use the global variable `Rabbit`. ```html ``` ## Usage With a CDN we can easily write an example using Rabbit UI: ```html RabbitUI demo

Welcome to RabbitUI

``` NPM environment Use NPM to install, enjoy the convenience of the tool, work better with Webpack, and ES2015 is recommended. ```js import Alert from 'rabbit-simple-ui/src/components/alert'; import Tooltip from 'rabbit-simple-ui/src/components/alert'; import Collapse from 'rabbit-simple-ui/src/components/alert'; new Alert(); new Tooltip(); new Collapse(); ``` Using css via import: ```js import 'rabbit-simple-ui/dist/styles/rabbit.css'; ``` ## Import as needed With the help of [babel-plugin-import](https://github.com/ant-design/babel-plugin-import), you can load components on demand and reduce file size. First install and configure it in file '.babelrc ': ```text npm install babel-plugin-import --save-dev ``` ```json // .babelrc { "plugins": [["import", { "libraryName": "rabbit-simple-ui", "libraryDirectory": "src/components" }]] } ``` Then import the components as needed to reduce the size: ```js import { Alert, Message } from 'rabbit-simple-ui'; ``` ### Especially remind -According to the need to still need to import the reference style that the **main js** or the root component `import 'rabbit-simple-ui/dist/styles/rabbit.css';` ## Browser Support Modern browsers and Internet Explorer 10+. ## Related links - [TypeScript](https://www.tslang.cn/) - [Webpack](http://webpack.github.io/) - [Iconfont](https://www.iconfont.cn/) - [ViewUI](https://www.iviewui.com/) - [Ant Design](https://ant.design/index-cn) - [Ant Design of Vue](https://2x.antdv.com/docs/vue/introduce-cn/) - [Element](https://element.eleme.cn/) - [Element-angular](https://element-angular.faas.ele.me/guide/install) ## Contribute If you wish to participate in contribution, welcome [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls) or email contact 2864103063@qq.com, the contribution guide has not yet been produced ## LICENSE [MIT](https://github.com/niu-grandpa/RabbitUI/blob/master/LICENSE) ================================================ FILE: README.md ================================================

简体中文 | [English](./README.en-US.md) # RabbitUI > Tip:该项目于2021年完成,目前已不再更新,但具有学习意义,该组件库参考了各知名组件库进行开发 ### 一个基于 JavaScript 的简洁 UI 组件库 [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md) [![](https://img.shields.io/npm/v/rabbit-simple-ui.svg?style=flat-square)](https://www.npmjs.com/package/rabbit-simple-ui) [![](https://data.jsdelivr.com/v1/package/npm/rabbit-simple-ui/badge)](https://www.jsdelivr.com/package/npm/rabbit-simple-ui) ### 特性 - 使用语义化的自定义元素,易于分辨 - 优雅、简洁,与庞大且臃肿令人眼花缭乱的结构 say goodbye - 不依赖任何第三方框架,底层基于原生 Javascript,引入即用 - 能够在 Vue、JQuery或者其他现有项目中配合使用 - 丰富的组件和功能,满足大部分网站场景 - 细致、漂亮的 UI - 事无巨细的文档 ### 安装 - 使用 npm,你将需要使用`TypeScript`,并在ts文件里编写和使用代码。 请确保你了解过它,并能够大致使用 ```bash npm install rabbit-simple-ui --save ``` - 浏览器引入 在浏览器中使用 `script` 和 `link` 标签直接引入文件,并使用全局变量 `Rabbit`。 ```html ``` ## 示例 通过 CDN 的方式我们可以很容易地使用 Rabbit UI 写出一个示例: ```html RabbitUI demo

Welcome to RabbitUI

``` NPM 环境 使用 npm 来安装,享受工具带来的便利,更好地和 webpack 配合使用,且推荐使用 ES2015。 ```ts import Alert from 'rabbit-simple-ui/src/components/alert'; import Tooltip from 'rabbit-simple-ui/src/components/alert'; import Collapse from 'rabbit-simple-ui/src/components/alert'; new Alert(); new Tooltip(); new Collapse(); ``` 引入样式: ```ts import 'rabbit-simple-ui/dist/styles/rabbit.css'; ``` ## 按需引用 借助插件 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import)可以实现按需加载组件,减少文件体积。首先安装,并在文件 `.babelrc` 中配置: ```text npm install babel-plugin-import --save-dev ``` ```json // .babelrc { "plugins": [["import", { "libraryName": "rabbit-simple-ui", "libraryDirectory": "src/components" }]] } ``` 然后这样按需引入组件,就可以减小体积了: ```ts import { Alert, Message } from 'rabbit-simple-ui'; ``` ### 特别提醒 - 按需引用仍然需要导入样式,即在 **main.js** 或根组件执行 `import 'rabbit-simple-ui/dist/styles/rabbit.css';` ## 浏览器支持 现代浏览器和Internet Explorer 10+。 ## 相关链接 - [TypeScript](https://www.tslang.cn/) - [Webpack](http://webpack.github.io/) - [阿里巴巴矢量图标库](https://www.iconfont.cn/) - [ViewUI](https://www.iviewui.com/) - [Ant Design](https://ant.design/index-cn) - [Ant Design of Vue](https://2x.antdv.com/docs/vue/introduce-cn/) - [Element](https://element.eleme.cn/) - [Element-angular](https://element-angular.faas.ele.me/guide/install) ## 如何贡献 如果你希望参与贡献,欢迎 [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls)或者邮件联系 2864103063@qq.com ,贡献指南暂时还未制作 ## LICENSE [MIT](https://github.com/niu-grandpa/RabbitUI/blob/master/LICENSE) ================================================ FILE: config/webpack.common.js ================================================ /* eslint-disable no-undef */ /* eslint-disable @typescript-eslint/no-var-requires */ /** * 公共配置 */ const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { module: { rules: [{ test: /\.js$/, loader: 'babel-loader', options: { sourceMap: true }, exclude: /node_modules/ }, { test: /\.ts$/, exclude: /node_modules/, use: { loader: 'ts-loader' } }, { test: /\.css$/i, use: [ { loader: MiniCssExtractPlugin.loader }, { loader: 'css-loader' }, { loader: 'postcss-loader' } ] }, { test: /\.less$/i, use: [ { loader: MiniCssExtractPlugin.loader }, { loader: 'css-loader', options: { sourceMap: true } }, { loader: 'less-loader', options: { sourceMap: true, lessOptions: { javascriptEnabled: true } } }, { loader: 'postcss-loader' } ] }, { test: /\.(png|jpe?g|gif|webp)$/i, use: [{ loader: 'file-loader', options: { name: 'images/[name].[ext]', // 小于 2k 的图片转成 base64 编码 limit: 2024, publicPath: '../' } }] }, { test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/i, use: { loader: 'file-loader', options: { limit: 4096, name: './fonts/[name].[ext]', publicPath: '../' } } }, { test: /\.(html|tpl)$/, use: { loader: 'html-loader' } } ] }, resolve: { extensions: ['.ts', '.js'] }, plugins: [ new webpack.optimize.ModuleConcatenationPlugin(), //分离出css文件 new MiniCssExtractPlugin({ filename: 'styles/rabbit.css', chunkFilename: '[id].css', ignoreOrder: false }) ] }; ================================================ FILE: config/webpack.dev.js ================================================ /* eslint-disable no-undef */ /* eslint-disable @typescript-eslint/no-var-requires */ const path = require('path'); const webpack = require('webpack'); const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin'); module.exports = merge(common, { devtool: 'eval-source-map', entry: { main: './examples/main.ts' }, output: { path: path.join(__dirname, '../examples/dist'), publicPath: '', filename: '[name].js', chunkFilename: '[name].chunk.js' }, devServer: { port: 8085, open: true, hot: true, inline: true, progress: true, compress: true }, plugins: [ new webpack.HotModuleReplacementPlugin(), new HtmlWebpackPlugin({ inject: true, filename: path.join(__dirname, '../examples/dist/index.html'), template: path.join(__dirname, '../examples/message/index.html') }), new FriendlyErrorsPlugin() ] }); ================================================ FILE: config/webpack.dist.dev.js ================================================ /* eslint-disable @typescript-eslint/no-var-requires */ /** * 打包开发模式下的资源 */ const path = require('path'); const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { mode: 'development', devtool: 'source-map', entry: { main: './src/build-umd.ts' }, output: { path: path.resolve(__dirname, '../dist'), publicPath: '/dist/', filename: 'rabbit.js', library: 'rabbit', libraryTarget: 'umd', umdNamedDefine: true } }); ================================================ FILE: config/webpack.dist.prod.js ================================================ /* eslint-disable no-undef */ /* eslint-disable @typescript-eslint/no-var-requires */ /** * 打包生产模式下的资源 */ const path = require('path'); const webpack = require('webpack'); const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); module.exports = merge(common, { devtool: 'source-map', entry: { main: './src/build-umd.ts' }, output: { path: path.resolve(__dirname, '../dist'), publicPath: '/dist/', filename: 'rabbit.min.js', library: 'rabbit', libraryTarget: 'umd', umdNamedDefine: true }, plugins: [ new CompressionPlugin({ algorithm: 'gzip', test: /\.js$|\.css/, threshold: 10240, minRatio: 0.8 }), new UglifyJsPlugin({ sourceMap: true, parallel: true }), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }), new OptimizeCSSAssetsPlugin({}) ] }); ================================================ FILE: dist/rabbit.js ================================================ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("rabbit", [], factory); else if(typeof exports === 'object') exports["rabbit"] = factory(); else root["rabbit"] = factory(); })(self, function() { return /******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/dayjs/dayjs.min.js": /*!*****************************************!*\ !*** ./node_modules/dayjs/dayjs.min.js ***! \*****************************************/ /***/ (function(module) { !function(t,e){ true?module.exports=e():0}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",a="quarter",o="year",f="date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,c=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+$(r,2,"0")+":"+$(i,2,"0")},m:function t(e,n){if(e.date()0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),f="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return f;var M=s?l.future:l.past;return"function"==typeof M?M(f):M.replace("%s",f)},n.to=function(r,t){return i(r,t,this,!0)},n.from=function(r,t){return i(r,t,this)};var d=function(r){return r.$u?e.utc():e()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}); /***/ }), /***/ "./src/build-umd.ts": /*!***************************************!*\ !*** ./src/build-umd.ts + 82 modules ***! \***************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "default": function() { return /* binding */ build_umd; } }); // NAMESPACE OBJECT: ./src/rabbit-simple-ui.ts var rabbit_simple_ui_namespaceObject = {}; __webpack_require__.r(rabbit_simple_ui_namespaceObject); __webpack_require__.d(rabbit_simple_ui_namespaceObject, { "Affix": function() { return components_affix; }, "Alert": function() { return components_alert; }, "Avatar": function() { return components_avatar; }, "BackTop": function() { return components_back_top; }, "Badge": function() { return components_badge; }, "Breadcrumb": function() { return components_breadcrumb; }, "Button": function() { return components_button; }, "Card": function() { return components_card; }, "Carousel": function() { return components_carousel; }, "Checkbox": function() { return components_checkbox; }, "Circle": function() { return components_circle; }, "Collapse": function() { return components_collapse; }, "CountDown": function() { return components_count_down; }, "Divider": function() { return components_divider; }, "Drawer": function() { return components_drawer; }, "Dropdown": function() { return components_dropdown; }, "Empty": function() { return components_empty; }, "InputNumber": function() { return components_input_number; }, "Jumbotron": function() { return components_jumbotron; }, "Loading": function() { return components_loading_bar; }, "Message": function() { return components_message; }, "MiniModal": function() { return components_mini_modal; }, "Modal": function() { return components_modal; }, "Notice": function() { return components_notice; }, "PageHeader": function() { return components_page_header; }, "Poptip": function() { return components_poptip; }, "Progress": function() { return components_progress; }, "Radio": function() { return components_radio; }, "Result": function() { return components_result; }, "Skeleton": function() { return components_skeleton; }, "Spin": function() { return components_spin; }, "Steps": function() { return components_steps; }, "Switch": function() { return components_switch; }, "Tabs": function() { return components_tabs; }, "Tag": function() { return components_tag; }, "Time": function() { return components_time; }, "Timeline": function() { return components_timeline; }, "Tooltip": function() { return components_tooltip; } }); // EXTERNAL MODULE: ./src/dom-utils/index.ts + 5 modules var dom_utils = __webpack_require__("./src/dom-utils/index.ts"); // EXTERNAL MODULE: ./src/utils/index.ts + 4 modules var utils = __webpack_require__("./src/utils/index.ts"); // EXTERNAL MODULE: ./src/components/prefix.ts var prefix = __webpack_require__("./src/components/prefix.ts"); ;// CONCATENATED MODULE: ./src/components/affix/affix.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ function getScroll(target, top) { var prop = top ? 'pageYOffset' : 'pageXOffset'; var method = top ? 'scrollTop' : 'scrollLeft'; var ret = target[prop]; if (typeof ret !== 'number') { ret = window.document.documentElement[method]; } return ret; } function getOffset(element) { var rect = element.getBoundingClientRect(); var scrollTop = getScroll(window, true); var scrollLeft = getScroll(window); var docEl = window.document.body; var clientTop = docEl.clientTop || 0; var clientLeft = docEl.clientLeft || 0; return { top: rect.top + scrollTop - clientTop, left: rect.left + scrollLeft - clientLeft }; } var Affix = /** @class */ (function () { function Affix() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-affix', { all: true }); this._create(this.COMPONENTS); } Affix.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); var _a = Affix.prototype._attrs(target), offsetTop = _a.offsetTop, offsetBottom = _a.offsetBottom; var elOffset = getOffset(target); var elHeight = target.offsetHeight; var windowHeight = window.innerHeight; var affixed = false, offsetType = 'top'; if (offsetBottom >= 0) { offsetType = 'bottom'; } return { events: function (_a) { var onChange = _a.onChange; var handler = function () { var isAffix = target.classList.contains("" + prefix.default.affix); var scrollTop = getScroll(window, true); // 固定到顶部时触发事件 if (elOffset.top - offsetTop < scrollTop && offsetType == 'top' && !isAffix) { affixed = true; onChange && utils.type.isFn(onChange, affixed); } else if (elOffset.top - offsetTop > scrollTop && offsetType == 'top' && affixed) { affixed = false; onChange && utils.type.isFn(onChange, affixed); } // 固定到底部时触发事件 if (elOffset.top + offsetBottom + elHeight > scrollTop + windowHeight && offsetType == 'bottom' && !affixed) { affixed = true; onChange && utils.type.isFn(onChange, affixed); } else if (elOffset.top + offsetBottom + elHeight < scrollTop + windowHeight && offsetType == 'bottom' && affixed) { affixed = false; onChange && utils.type.isFn(onChange, affixed); } }; handler(); // 这里 useCapture 选项设置为 true 解决了被下面同样的滚动监听覆盖的 bug // 相当于提高了事件触发优先级 window.addEventListener('scroll', handler, true); window.addEventListener('resize', handler, true); } }; }; Affix.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), offsetTop = _a.offsetTop, offsetBottom = _a.offsetBottom, useCapture = _a.useCapture; var wrapper = (0,dom_utils.createElem)('div'); var cloneElm = _this._createCloneElm(wrapper); node.after(wrapper); wrapper.appendChild(node); _this._handleScroll(node, cloneElm, offsetTop, offsetBottom, useCapture); (0,dom_utils.removeAttrs)(node, ['offset-top', 'offset-bottom', 'use-capture']); }); }; Affix.prototype._createCloneElm = function (node) { var element = (0,dom_utils.createElem)('div'); (0,dom_utils.setCss)(element, 'display', 'none'); node.after(element); return element; }; Affix.prototype._handleScroll = function (node, cloneElm, offsetTop, offsetBottom, useCapture) { var container = node.parentElement; var elOffset = getOffset(node); var elHeight = node.offsetHeight; var windowHeight = window.innerHeight; var affix = false, top, left, width, bottom, offsetType = 'top', cloneElmWidth, cloneElmHeight, display; if (offsetBottom >= 0) { offsetType = 'bottom'; } var scroll = function () { var isAffix = node.classList.contains("" + prefix.default.affix); var scrollTop = getScroll(window, true); // 固定到顶部 if (elOffset.top - offsetTop < scrollTop && offsetType == 'top' && !isAffix) { affix = true; display = ''; top = offsetTop + "px"; left = elOffset.left + "px"; width = container.offsetWidth + "px"; cloneElmWidth = node.clientWidth + "px"; cloneElmHeight = node.clientHeight + "px"; node.classList.add("" + prefix.default.affix); } else if (elOffset.top - offsetTop > scrollTop && offsetType == 'top' && affix) { top = ''; left = ''; width = ''; affix = false; display = 'none'; cloneElmWidth = ''; cloneElmHeight = ''; node.classList.remove("" + prefix.default.affix); } // 固定到底部 if (elOffset.top + offsetBottom + elHeight > scrollTop + windowHeight && offsetType == 'bottom' && !affix) { affix = true; left = elOffset.left + "px"; width = container.offsetWidth + "px"; bottom = offsetBottom + "px"; node.classList.add("" + prefix.default.affix); } else if (elOffset.top + offsetBottom + elHeight < scrollTop + windowHeight && offsetType == 'bottom' && affix) { affix = false; left = ''; width = ''; bottom = ''; node.classList.remove("" + prefix.default.affix); } (0,dom_utils.setCss)(node, 'top', top); (0,dom_utils.setCss)(node, 'left', left); (0,dom_utils.setCss)(node, 'width', width); (0,dom_utils.setCss)(node, 'bottom', bottom); (0,dom_utils.setCss)(cloneElm, 'width', cloneElmWidth); (0,dom_utils.setCss)(cloneElm, 'height', cloneElmHeight); (0,dom_utils.setCss)(cloneElm, 'display', display); }; scroll(); window.addEventListener('scroll', scroll, useCapture); window.addEventListener('resize', scroll, useCapture); }; Affix.prototype._attrs = function (node) { return { offsetTop: (0,dom_utils.getNumTypeAttr)(node, 'offset-top', 0), offsetBottom: (0,dom_utils.getNumTypeAttr)(node, 'offset-bottom'), useCapture: (0,dom_utils.getBooleanTypeAttr)(node, 'use-capture') }; }; return Affix; }()); /* harmony default export */ var affix = (Affix); ;// CONCATENATED MODULE: ./src/components/affix/index.ts /* harmony default export */ var components_affix = (affix); // EXTERNAL MODULE: ./src/mixins/index.ts + 63 modules var mixins = __webpack_require__("./src/mixins/index.ts"); ;// CONCATENATED MODULE: ./src/components/alert/alert.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Alert = /** @class */ (function () { function Alert() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-alert', { all: true }); this._create(this.COMPONENTS); } Alert.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'alert'); var AlertTitle = target.querySelector("." + prefix.default.alert + "-title"); var AlertIcon = target.querySelector("." + prefix.default.alert + "-icon"); return { get title() { return (0,dom_utils.setHtml)(AlertTitle); }, set title(newVal) { if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(AlertTitle, newVal); }, get icon() { return (0,dom_utils.setHtml)(AlertIcon); }, set icon(newVal) { if (!AlertIcon) { (0,mixins.warn)("You need to set the \"show-icon\" attribute to \"true\" --> \"" + el + "\""); return; } if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(AlertIcon, newVal); }, events: function (_a) { var onClose = _a.onClose; var AlertClose = target.querySelector("." + prefix.default.alert + "-close"); if (!AlertClose) return; (0,dom_utils.bind)(AlertClose, 'click', function (event) { return onClose && utils.type.isFn(onClose, event); }); } }; }; Alert.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { if ((0,mixins.moreThanOneNode)(node)) return; var _a = _this._attrs(node), icon = _a.icon, type = _a.type, title = _a.title, closable = _a.closable, banner = _a.banner, showIcon = _a.showIcon, closeText = _a.closeText; var placeholderNode = node.firstElementChild; _this._setMainTemplate(node, title); _this._setBanner(node, banner); _this._setIconType(node, type, showIcon, icon, placeholderNode); _this._setDescription(node, placeholderNode); _this._setClosable(node, closable, closeText); _this._handleClose(node); (0,dom_utils.removeAttrs)(node, ['title', 'icon', 'banner', 'closable', 'close-text', 'show-icon']); }); }; Alert.prototype._setMainTemplate = function (node, title) { var template = "\n
" + title + "
\n
\n "; (0,dom_utils.setHtml)(node, template); }; Alert.prototype._setBanner = function (node, banner) { if (!banner) return; node.classList.add(prefix.default.alert + "-with-banner"); }; Alert.prototype._setIconType = function (node, type, showIcon, icon, desc) { if (!showIcon) return; node.classList.add(prefix.default.alert + "-with-icon"); var AlertIconWrap = (0,dom_utils.createElem)('span'); AlertIconWrap.className = prefix.default.alert + "-icon"; if (icon) { (0,dom_utils.setHtml)(AlertIconWrap, icon); } else { // 默认为 info 图标 var iconType = 'information-circle'; switch (type) { case 'success': iconType = 'checkmark-circle'; break; case 'warning': iconType = 'alert'; break; case 'error': iconType = 'close-circle'; break; } if (desc) { iconType += '-outline'; } var AlertIcon = ""; (0,dom_utils.setHtml)(AlertIconWrap, AlertIcon); } node.appendChild(AlertIconWrap); }; Alert.prototype._setDescription = function (node, placeholderNode) { if (!placeholderNode) return; node.classList.add(prefix.default.alert + "-with-desc"); var AlertDesc = node.querySelector("." + prefix.default.alert + "-desc"); AlertDesc.appendChild(placeholderNode); }; Alert.prototype._setClosable = function (node, closable, closeText) { if (!closable) return; var AlertClose = "\n \n " + (!closeText ? " " : closeText) + "\n "; node.insertAdjacentHTML('beforeend', AlertClose); }; Alert.prototype._handleClose = function (node) { var AlertIcon = node.querySelector("." + prefix.default.alert + "-close"); if (!AlertIcon) return; (0,dom_utils.bind)(AlertIcon, 'click', function () { return (0,utils.destroyElem)(node, { fadeOut: true, destroy: true }); }); }; Alert.prototype._attrs = function (node) { return { icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), type: (0,dom_utils.getStrTypeAttr)(node, 'type', 'info'), title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), closeText: (0,dom_utils.getStrTypeAttr)(node, 'close-text', ''), banner: (0,dom_utils.getBooleanTypeAttr)(node, 'banner'), closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable'), showIcon: (0,dom_utils.getBooleanTypeAttr)(node, 'show-icon') }; }; return Alert; }()); /* harmony default export */ var alert_alert = (Alert); ;// CONCATENATED MODULE: ./src/components/alert/index.ts /* harmony default export */ var components_alert = (alert_alert); ;// CONCATENATED MODULE: ./src/components/avatar/avatar.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Avatar = /** @class */ (function () { function Avatar() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-avatar', { all: true }); this._create(this.COMPONENTS); } Avatar.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'avatar'); var AvatarImage = target.querySelector('img'); return { events: function (_a) { var onError = _a.onError; if (!AvatarImage) { (0,mixins.warn)("Unable to add an event where the image failed to load for the current avatar --> \"" + el + "\""); return; } (0,dom_utils.bind)(AvatarImage, 'error', function (event) { return onError && utils.type.isFn(onError, event); }); } }; }; Avatar.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), icon = _a.icon, src = _a.src, alt = _a.alt, size = _a.size; _this._setSize(node, size); _this._setIcon(node, icon); _this._setImage(node, src, alt); _this._setText(node, icon, src); (0,dom_utils.removeAttrs)(node, ['icon', 'src', 'alt']); }); }; Avatar.prototype._setSize = function (node, size) { if (!size) return; var _size = Number(size); if (!_size) return; (0,dom_utils.setCss)(node, 'width', _size + "px"); (0,dom_utils.setCss)(node, 'height', _size + "px"); (0,dom_utils.setCss)(node, 'fontSize', _size / 2 + "px"); node.removeAttribute('size'); }; Avatar.prototype._setIcon = function (node, icon) { if (!icon) return; node.classList.add(prefix.default.avatar + "-icon"); var AvatarIcon = ""; (0,dom_utils.setHtml)(node, AvatarIcon); }; Avatar.prototype._setImage = function (node, src, alt) { if (!src) return; node.classList.add(prefix.default.avatar + "-image"); var AvatarImage = "\"""; (0,dom_utils.setHtml)(node, AvatarImage); }; Avatar.prototype._setText = function (node, icon, src) { if (icon || src) return; if (!(0,dom_utils.setHtml)(node)) return; var text = (0,dom_utils.setHtml)(node); var AvatarText = "" + text + ""; (0,dom_utils.setHtml)(node, AvatarText); this._setScale(node); }; // 防止字符型头像的字体溢出边界 Avatar.prototype._setScale = function (node) { var children = node.querySelector("." + prefix.default.avatar + "-string"); if (!children) return; var avatarWidth = node.getBoundingClientRect().width; var childrenWidth = children.offsetWidth; if (avatarWidth - 8 < childrenWidth) { var newScale = "scale(" + (avatarWidth - 8) / childrenWidth + ") translateX(-50%)"; (0,dom_utils.setCss)(children, 'transform', "" + newScale); } else { (0,dom_utils.setCss)(children, 'transform', 'scale(1) translateX(-50%)'); } }; Avatar.prototype._attrs = function (node) { return { icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), src: (0,dom_utils.getStrTypeAttr)(node, 'src', ''), alt: (0,dom_utils.getStrTypeAttr)(node, 'alt', ''), size: (0,dom_utils.getStrTypeAttr)(node, 'size', '') }; }; return Avatar; }()); /* harmony default export */ var avatar = (Avatar); ;// CONCATENATED MODULE: ./src/components/avatar/index.ts /* harmony default export */ var components_avatar = (avatar); ;// CONCATENATED MODULE: ./src/components/back-top/back-top.ts var BackTop = /** @class */ (function () { function BackTop() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-back-top', { all: true }); this._create(this.COMPONENTS); } BackTop.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), right = _a.right, bottom = _a.bottom, height = _a.height, duration = _a.duration; _this._setRight(node, right); _this._setBottom(node, bottom); _this._setAppearance(node); _this._handleScroll(node, height); _this._handleClick(node, duration); (0,dom_utils.removeAttrs)(node, ['right', 'bottom', 'height', 'duration']); }); }; BackTop.prototype._setRight = function (node, right) { (0,dom_utils.setCss)(node, 'right', right + "px"); }; BackTop.prototype._setBottom = function (node, bottom) { (0,dom_utils.setCss)(node, 'bottom', bottom + "px"); }; BackTop.prototype._setAppearance = function (node) { if ((0,dom_utils.setHtml)(node) && (0,dom_utils.setHtml)(node) !== ' ') { (0,dom_utils.setHtml)(node, node.innerHTML); } else { var template = "
\n \n
"; (0,dom_utils.setHtml)(node, template); } }; BackTop.prototype._handleScroll = function (node, height) { var visable = function (y) { var scrollY = Math.floor(y); var visibilityHeight = Math.floor(height); // 判断页面是否滚动到指定显示的高度 scrollY >= visibilityHeight ? (0,dom_utils.setCss)(node, 'display', 'block') : (0,dom_utils.setCss)(node, 'display', ''); }; (0,dom_utils.bind)(window, 'scroll', function () { visable(window.scrollY); }); }; BackTop.prototype._handleClick = function (node, duration) { var _this = this; (0,dom_utils.bind)(node, 'click', function () { var sTop = document.documentElement.scrollTop || document.body.scrollTop; _this._scrollTop(window, sTop, 0, duration); }); }; BackTop.prototype._scrollTop = function (el, from, to, duration) { if (!window.requestAnimationFrame) { window.requestAnimationFrame = window.webkitRequestAnimationFrame || // @ts-ignore window.mozRequestAnimationFrame || // @ts-ignore window.msRequestAnimationFrame || function (callback) { return window.setTimeout(callback, 1000 / 60); }; } var difference = Math.abs(from - to); var step = Math.ceil((difference / duration) * 25); var scroll = function (start, end, step) { var d = start + step > end ? end : start + step; if (start <= end && d == 0) return; d = start - step < end ? end : start - step; el === window ? window.scrollTo(d, d) : (el.scrollTop = d); window.requestAnimationFrame(function () { return scroll(d, end, step); }); }; scroll(from, to, step); }; BackTop.prototype._attrs = function (node) { return { right: (0,dom_utils.getNumTypeAttr)(node, 'right', 30), bottom: (0,dom_utils.getNumTypeAttr)(node, 'bottom', 30), height: (0,dom_utils.getNumTypeAttr)(node, 'height', 400), duration: (0,dom_utils.getNumTypeAttr)(node, 'duration', 500) }; }; return BackTop; }()); /* harmony default export */ var back_top = (BackTop); ;// CONCATENATED MODULE: ./src/components/back-top/index.ts /* harmony default export */ var components_back_top = (back_top); ;// CONCATENATED MODULE: ./src/components/badge/badge.ts var Badge = /** @class */ (function () { function Badge() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-badge', { all: true }); this._create(this.COMPONENTS); } Badge.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'badge'); var countContainer = target.querySelector("." + prefix.default.badge + "-count"); var dotContainer = target.querySelector("." + prefix.default.badge + "-dot"); var _a = Badge.prototype, _getMaxCount = _a._getMaxCount, _showZero = _a._showZero, _setMaxCount = _a._setMaxCount; var maxCount = _getMaxCount(target); var showZero = _showZero(target); return { get count() { return countContainer === null || countContainer === void 0 ? void 0 : countContainer.textContent; }, set count(newVal) { if (countContainer && utils.type.isNum(newVal)) { if (newVal > maxCount) { _setMaxCount(countContainer, maxCount); } else { (0,dom_utils.setText)(countContainer, "" + newVal); if (newVal <= 0 && !showZero) { (0,dom_utils.setCss)(countContainer, 'display', 'none'); } else { (0,dom_utils.setCss)(countContainer, 'display', ''); } } } else { (0,mixins.warn)("The count value of this badge cannot be set --> \"" + el + "\""); } }, get text() { return countContainer === null || countContainer === void 0 ? void 0 : countContainer.textContent; }, set text(newVal) { if (!utils.type.isStr(newVal)) { (0,mixins.warn)("The text value of this badge cannot be set --> \"" + el + "\""); return; } (0,dom_utils.setText)(countContainer, newVal); }, get dot() { return dotContainer; }, set dot(newVal) { if (!dotContainer) { (0,mixins.warn)("Unable to set this badge to dot --> \"" + el + "\""); return; } if (utils.type.isBol(newVal) && newVal) { (0,dom_utils.setCss)(dotContainer, 'display', ''); } else { (0,dom_utils.setCss)(dotContainer, 'display', 'none'); } } }; }; Badge.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { _this._setCount(node); _this._setStatusWithColor(node); (0,dom_utils.removeAttrs)(node, [ 'count', 'text', 'status', 'color', 'show-zero', 'max-count', 'dot' ]); }); }; Badge.prototype._setCount = function (node) { var count = this._getCount(node); var maxCount = this._getMaxCount(node); var BadgeCount = (0,dom_utils.createElem)('sup'); BadgeCount.className = prefix.default.badge + "-count"; if (count || count === 0) { // 显示的数字大于maxCount时,显示${maxCount}+ if (count > maxCount) { this._setMaxCount(BadgeCount, maxCount); } else { // 数字为 0 时隐藏或者展示 Badge if (count <= 0 && !this._showZero(node)) { (0,dom_utils.setCss)(BadgeCount, 'display', 'none'); } else { (0,dom_utils.setText)(BadgeCount, "" + count); } } this._setDot(node, BadgeCount); } if (!this._getStatus(node) && !this._getColor(node)) { node.appendChild(BadgeCount); // 状态点外观不需要设置为独立展示 this._setAlone(BadgeCount); } this._setText(node, BadgeCount); this._setOffset(node, BadgeCount); }; Badge.prototype._setMaxCount = function (node, maxCount) { (0,dom_utils.setText)(node, maxCount + "+"); }; Badge.prototype._setDot = function (node, children) { if (!this._showDot(node)) return; // 设置为小红点则不显示任何计数内容 (0,dom_utils.setHtml)(children, ''); (0,dom_utils.setCss)(children, 'display', ''); children.className = prefix.default.badge + "-dot"; }; Badge.prototype._setText = function (parent, children) { // 区分与标签属性 status 或 color 配合的 text 属性 if (!this._getStatus(parent) && !this._getColor(parent)) { var text = this._getText(parent); if (text) { (0,dom_utils.setCss)(children, 'display', ''); (0,dom_utils.setText)(children, text); } } }; Badge.prototype._setAlone = function (children) { if (!children.previousElementSibling) { children.classList.add(prefix.default.badge + "-count-alone"); } }; Badge.prototype._setOffset = function (parent, children) { var offset = this._getOffset(parent); (0,dom_utils.setCss)(children, 'marginTop', (offset === null || offset === void 0 ? void 0 : offset.x) + "px"); (0,dom_utils.setCss)(children, 'marginRight', (offset === null || offset === void 0 ? void 0 : offset.y) + "px"); }; Badge.prototype._setStatusWithColor = function (node) { var status = this._getStatus(node); var color = this._getColor(node); var text = this._getText(node); if (!status && !color) return; var BadgeStatusDot = (0,dom_utils.createElem)('span'); var BadgeStatusText = (0,dom_utils.createElem)('span'); if ((text && status) || (text && color)) (0,dom_utils.setText)(BadgeStatusText, text); var statusCls; var colorCls = ''; status ? (statusCls = prefix.default.badge + "-status-" + status) : (statusCls = ''); // 设置更多预设的状态点颜色,或者自定义颜色 var colorType = [ 'blue', 'green', 'red', 'yellow', 'magenta', 'volcano', 'orange', 'gold', 'lime', 'cyan', 'geekblue', 'purple' ]; if (colorType.includes(color)) { colorCls = prefix.default.badge + "-status-" + color; } else { (0,dom_utils.setCss)(BadgeStatusDot, 'backgroundColor', color); } BadgeStatusDot.className = prefix.default.badge + "-status-dot " + statusCls + " " + colorCls; BadgeStatusText.className = prefix.default.badge + "-status-text"; node.append(BadgeStatusDot, BadgeStatusText); }; Badge.prototype._getCount = function (node) { return Number(node.getAttribute('count')); }; Badge.prototype._getMaxCount = function (node) { return Number(node.getAttribute('max-count')) || 99; }; Badge.prototype._getOffset = function (node) { // 转为真实数组,如果赋值是 offset = ['0','1'] 这样的则会报错 var offset = JSON.parse(node.getAttribute('offset') || '[]'); // 如果是数组,那么不论写了多少个值都只返回前两个 if (utils.type.isArr(offset) && offset.length > 0) { return { x: offset[0], y: offset[1] }; } }; Badge.prototype._getStatus = function (node) { return node.getAttribute('status') || ''; }; Badge.prototype._getColor = function (node) { return node.getAttribute('color') || ''; }; Badge.prototype._getText = function (node) { return node.getAttribute('text') || ''; }; Badge.prototype._showZero = function (node) { return node.getAttribute('show-zero') === 'true'; }; Badge.prototype._showDot = function (node) { return node.getAttribute('dot') === 'true'; }; return Badge; }()); /* harmony default export */ var badge = (Badge); ;// CONCATENATED MODULE: ./src/components/badge/index.ts /* harmony default export */ var components_badge = (badge); ;// CONCATENATED MODULE: ./src/components/breadcrumb/breadcrumb.ts var Breadcrumb = /** @class */ (function () { function Breadcrumb() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-breadcrumb', { all: true }); this._create(this.COMPONENTS); } Breadcrumb.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var separator = _this._attrs(node).separator; _this._createItem(node, separator); (0,dom_utils.removeAttrs)(node, ['separator']); }); }; Breadcrumb.prototype._createItem = function (node, separator) { var children = node.children; var Fragment = document.createDocumentFragment(); Array.from(children).forEach(function (child) { var Wrapper = (0,dom_utils.createElem)('span'); var Separator = (0,dom_utils.createElem)('span'); Separator.className = prefix.default.breadcrumb + "-item-separator"; // 设置分隔符 (0,dom_utils.setHtml)(Separator, "" + separator); child.classList.add(prefix.default.breadcrumb + "-item-link"); // 初始化为行内块样式 (0,dom_utils.setCss)(child, 'display', 'inline-block'); Wrapper.append(child, Separator); Fragment.appendChild(Wrapper); }); node.appendChild(Fragment); }; Breadcrumb.prototype._attrs = function (node) { return { separator: (0,dom_utils.getStrTypeAttr)(node, 'separator', '/') }; }; return Breadcrumb; }()); /* harmony default export */ var breadcrumb = (Breadcrumb); ;// CONCATENATED MODULE: ./src/components/breadcrumb/index.ts /* harmony default export */ var components_breadcrumb = (breadcrumb); ;// CONCATENATED MODULE: ./src/components/button/button.ts var Button = /** @class */ (function () { function Button() { this.VERSION = '1.1.1'; this.COMPONENTS = (0,dom_utils.$el)("." + prefix.default.button, { all: true }); this._getAllBtns(this.COMPONENTS); } Button.prototype.config = function (el) { var target = typeof el === 'string' ? (0,dom_utils.$el)(el) : el; (0,utils.validComps)(target, 'button'); return { get loading() { return this.loading; }, set loading(newVal) { if (newVal && !utils.type.isBol(newVal)) return; Button.prototype._setLoading(target, false, newVal); } }; }; Button.prototype._getAllBtns = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), icon = _a.icon, loading = _a.loading; _this._setIcon(node, icon); _this._setLoading(node, true, loading); (0,dom_utils.removeAttrs)(node, ['icon', 'loading']); }); }; Button.prototype._setIcon = function (node, icon) { if (!icon) return; if (node.innerHTML === '') { node.classList.add(prefix.default.button + "-icon-only"); var ButtonIcon = "\n \n "; (0,dom_utils.setHtml)(node, ButtonIcon); } else { var Icon = (0,dom_utils.createElem)('i'); Icon.className = prefix.default.icon + " " + prefix.default.icon + "-" + icon; node.prepend(Icon); } }; // 2021.5.23 // v1.1.0 修复按钮 loading 状态下加载中图标和原有图标并列显示的 bug Button.prototype._setLoading = function (node, firstRender, loading) { var _a; var OriginalIcon = node.querySelector('.rab-icon'); var LoadingIcon = (0,dom_utils.createElem)('i'); LoadingIcon.className = "rab-load-loop " + prefix.default.icon + " " + prefix.default.icon + "-loading-solid"; if (loading) { if (OriginalIcon) (0,dom_utils.setCss)(OriginalIcon, 'display', 'none'); if (node.innerHTML === '') node.classList.add(prefix.default.button + "-icon-only"); node.classList.add(prefix.default.button + "-loading"); node.prepend(LoadingIcon); } else { if (firstRender) return; // 2021.6.18 // v1.1.1 修复在没有图标仅有文本的状态下,切换为loading状态并在状态结束后无法切换为原样 bug // setCss(node.children[1], 'display', ''); if (node.children[1]) (0,dom_utils.setCss)(node.children[1], 'display', ''); if (node.classList.contains(prefix.default.button + "-loading")) node.classList.remove(prefix.default.button + "-loading"); if (node.classList.contains(prefix.default.button + "-icon-only")) node.classList.remove(prefix.default.button + "-icon-only"); (_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.remove(); } }; Button.prototype._attrs = function (node) { return { icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), loading: (0,dom_utils.getBooleanTypeAttr)(node, 'loading') }; }; return Button; }()); /* harmony default export */ var button_button = (Button); ;// CONCATENATED MODULE: ./src/components/button/index.ts /* harmony default export */ var components_button = (button_button); ;// CONCATENATED MODULE: ./src/components/card/card.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Card = /** @class */ (function () { function Card() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-card', { all: true }); this._create(this.COMPONENTS); } Card.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'card'); var CardHead = target.querySelector("." + prefix.default.card + "-head"); var CardExtra = target.querySelector("." + prefix.default.card + "-extra"); return { get title() { return (0,dom_utils.setHtml)(CardHead); }, set title(newVal) { if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(CardHead, newVal); }, get extra() { return (0,dom_utils.setHtml)(CardExtra); }, set extra(newVal) { if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(CardExtra, newVal); } }; }; Card.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { if ((0,mixins.moreThanOneNode)(node)) return; var placeholderNode = node.firstElementChild; var _a = _this._attrs(node), title = _a.title, extra = _a.extra, shadow = _a.shadow, noBorder = _a.noBorder, disHover = _a.disHover; _this._isShowBordered(node, noBorder); _this._isShowShadow(node, shadow); _this._isDisHover(node, disHover); _this._setHead(node, title); _this._setBody(node, placeholderNode); _this._setExtra(node, extra); (0,dom_utils.removeAttrs)(node, ['title', 'extra', 'shadow', 'dis-hover', 'bordered']); }); }; Card.prototype._isShowBordered = function (node, noBorder) { if (!noBorder) return; node.classList.add(prefix.default.card + "-no-border"); }; Card.prototype._isShowShadow = function (node, shadow) { if (!shadow) return; node.classList.add(prefix.default.card + "-shadow"); }; Card.prototype._isDisHover = function (node, disHover) { if (!disHover) return; node.classList.add(prefix.default.card + "-dis-hover"); }; Card.prototype._setHead = function (node, title) { if (!title) return; var CardHeadTemplate = "
" + title + "
"; node.insertAdjacentHTML('afterbegin', CardHeadTemplate); }; Card.prototype._setBody = function (node, placeholderNode) { var Fragment = document.createDocumentFragment(); var CardBody = (0,dom_utils.createElem)('div'); CardBody.className = prefix.default.card + "-body"; CardBody.appendChild(placeholderNode); Fragment.appendChild(CardBody); node.appendChild(Fragment); }; Card.prototype._setExtra = function (node, extra) { if (!extra) return; var CardExtraTemplate = "
" + extra + "
"; node.insertAdjacentHTML('beforeend', CardExtraTemplate); }; Card.prototype._attrs = function (node) { return { title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), extra: (0,dom_utils.getStrTypeAttr)(node, 'extra', ''), shadow: (0,dom_utils.getBooleanTypeAttr)(node, 'shadow'), disHover: (0,dom_utils.getBooleanTypeAttr)(node, 'dis-hover'), noBorder: (0,dom_utils.getBooleanTypeAttr)(node, 'no-border') }; }; return Card; }()); /* harmony default export */ var card = (Card); ;// CONCATENATED MODULE: ./src/components/card/index.ts /* harmony default export */ var components_card = (card); ;// CONCATENATED MODULE: ./src/components/carousel/carousel.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var AUTOPLAYSPEED = 2000; var DURATION = 520; var Carousel = /** @class */ (function () { function Carousel() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-carousel', { all: true }); this._create(this.COMPONENTS); } Carousel.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'carousel'); var _attrs = Carousel.prototype._attrs; var _a = _attrs(target), autoplay = _a.autoplay, autoplaySpeed = _a.autoplaySpeed, hoverPause = _a.hoverPause; return { events: function (_a) { var onClick = _a.onClick, onChange = _a.onChange; var elems = target.querySelectorAll("." + prefix.default.carousel + "-item"); var LeftArrow = target.querySelector("." + prefix.default.carousel + "-arrow.left"); var RightArrow = target.querySelector("." + prefix.default.carousel + "-arrow.right"); var lastIndex = elems.length - 1; var handleChange = function (siblingType, newSetElem) { var oldActiveElem = target.querySelector("." + prefix.default.carousel + "-item.active"); var activeElem = oldActiveElem[siblingType] || newSetElem; var oldValue = Number(oldActiveElem.dataset['index']); // @ts-ignore var value = Number(activeElem.dataset['index']); onChange && utils.type.isFn(onChange, [oldValue, value]); }; var autoPlayUseChangeEvent = function () { if (!autoplay) return; var eventTimer = null; var startEvent = function () { eventTimer = window.setInterval(function () { handleChange('nextElementSibling', elems[0]); }, autoplaySpeed); }; var pauseEvent = function () { return eventTimer ? window.clearInterval(eventTimer) : false; }; startEvent(); if (hoverPause === 'false') return; (0,dom_utils.bind)(target, 'mouseenter', function () { return pauseEvent(); }); (0,dom_utils.bind)(target, 'mouseleave', function () { return startEvent(); }); }; var handleClick = function () { elems.forEach(function (elem, index) { (0,dom_utils.bind)(elem, 'click', function () { return onClick && utils.type.isFn(onClick, index); }); }); }; (0,dom_utils.bind)(LeftArrow, 'click', function () { return handleChange('previousElementSibling', elems[lastIndex]); }); (0,dom_utils.bind)(RightArrow, 'click', function () { return handleChange('nextElementSibling', elems[0]); }); handleClick(); autoPlayUseChangeEvent(); } }; }; Carousel.prototype._create = function (components) { var _this = this; components.forEach(function (node) { if ((0,mixins.moreThanOneNode)(node)) return; var placeholderNode = node.firstElementChild; if (!placeholderNode) return; var carouselItemCount = placeholderNode.childElementCount; var _a = _this._attrs(node), dots = _a.dots, arrow = _a.arrow, effect = _a.effect, easing = _a.easing, radiusDot = _a.radiusDot, trigger = _a.trigger, autoplay = _a.autoplay, hoverPause = _a.hoverPause, autoplaySpeed = _a.autoplaySpeed; _this._setMainTemplate(node, dots, arrow); _this._setFadeCls(node, effect); _this._setItem(node, placeholderNode, carouselItemCount, easing); _this._setIndicators(node, carouselItemCount, radiusDot, trigger); _this._autoPlay(autoplay, node, hoverPause, autoplaySpeed); _this._handleArrowClick(node, arrow); (0,dom_utils.removeAttrs)(node, [ 'dots', 'arrow', 'effect', 'easing', 'trigger', 'radius-dot', 'autoplay', 'hover-pause', 'autoplay-speed' ]); }); }; Carousel.prototype._setMainTemplate = function (node, dots, arrow) { var template = "\n \n
\n \n \n "; (0,dom_utils.setHtml)(node, template); }; Carousel.prototype._setFadeCls = function (node, effect) { effect === 'fade' ? node.classList.add(prefix.default.carousel + "-" + effect) : ''; }; Carousel.prototype._setItem = function (node, placeholderNode, carouselItemCount, esaing) { var _a; var CarouselList = node.querySelector("." + prefix.default.carousel + "-list"); var Fragment = document.createDocumentFragment(); var children = Array.from(placeholderNode.children); var i = 0; for (; i < carouselItemCount; i++) { var CarouselItem = (0,dom_utils.createElem)('div'); CarouselItem.dataset['index'] = "" + i; CarouselItem.className = prefix.default.carousel + "-item"; CarouselItem.appendChild(children[i]); this._setEasing(CarouselItem, esaing); Fragment.appendChild(CarouselItem); (_a = Fragment.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList.add('active'); } CarouselList === null || CarouselList === void 0 ? void 0 : CarouselList.appendChild(Fragment); }; Carousel.prototype._setEasing = function (item, easing) { if (!easing) return; (0,dom_utils.setCss)(item, 'transitionTimingFunction', easing); }; Carousel.prototype._setIndicators = function (node, carouselItemCount, radiusDot, trigger) { var _a; var CarouselDots = node.querySelector("." + prefix.default.carousel + "-dots"); var Fragment = document.createDocumentFragment(); var i = 0; for (; i < carouselItemCount; i++) { var CarouselDot = (0,dom_utils.createElem)('li'); CarouselDot.dataset['slideTo'] = "" + i; (0,dom_utils.setHtml)(CarouselDot, ""); this._handleDotChange(trigger, node, CarouselDot); Fragment.appendChild(CarouselDot); (_a = Fragment.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList.add(prefix.default.carousel + "-active"); } CarouselDots === null || CarouselDots === void 0 ? void 0 : CarouselDots.appendChild(Fragment); }; Carousel.prototype._autoPlay = function (autoplay, node, hoverPause, autoplaySpeed) { var _this = this; if (!autoplay) return; var autoPlayTimer = null; var play = function () { var speed = autoplaySpeed; // 当轮播图自动播放的切换速度低于 650ms 会出现问题, // 因此低于这个数值的都会被重置为 650ms。 if (speed < 650) { speed = 650; console.warn("[Rabbit warn] Please do not set the sliding speed of carousel to less than 650ms. There are known problems with doing so, so it has been reset to 650ms. --> " + autoplaySpeed + "ms"); } autoPlayTimer = window.setInterval(function () { return _this._slide('next', node); }, speed); }; play(); if (hoverPause === 'false') return; var pause = function () { return (autoPlayTimer ? window.clearInterval(autoPlayTimer) : false); }; (0,dom_utils.bind)(node, 'mouseenter', function () { return pause(); }); (0,dom_utils.bind)(node, 'mouseleave', function () { return play(); }); }; Carousel.prototype._handleArrowClick = function (node, arrow) { var _this = this; if (arrow === 'none') return; var LeftArrow = node.querySelector("." + prefix.default.carousel + "-arrow.left"); var RightArrow = node.querySelector("." + prefix.default.carousel + "-arrow.right"); (0,dom_utils.bind)(LeftArrow, 'click', function () { return _this._slide('prev', node); }); (0,dom_utils.bind)(RightArrow, 'click', function () { return _this._slide('next', node); }); }; Carousel.prototype._handleDotChange = function (trigger, node, dot) { var _this = this; var activeIndex, activeElem; var _C = function () { activeIndex = Number(dot.dataset['slideTo']); activeElem = node.querySelector("." + prefix.default.carousel + "-item[data-index=\"" + activeIndex + "\"]"); if (activeElem.classList.contains('active')) return; _this._dotChange(node, activeIndex); _this._showActiveItem(activeElem); (0,dom_utils.siblings)(activeElem).forEach(function (otherElem) { return otherElem.classList.contains('active') ? _this._hideOldActiveItem(otherElem) : ''; }); }; if (trigger === 'hover') { (0,dom_utils.bind)(dot, 'mouseenter', function () { return _C(); }); } else { (0,dom_utils.bind)(dot, 'click', function () { return _C(); }); } }; Carousel.prototype._slide = function (type, node) { var _this = this; var direction = type === 'prev' ? 'right' : 'left'; var CarouselList = node.querySelector("." + prefix.default.carousel + "-list"); var firstIndex = 0; var lastIndex = CarouselList.childElementCount - 1; var ActiveItem = node.querySelector("." + prefix.default.carousel + "-item.active"); var PrevItem = ActiveItem.previousElementSibling || CarouselList.children[lastIndex]; var NextItem = ActiveItem.nextElementSibling || CarouselList.children[firstIndex]; var __change = function (elem) { return _this._change(type, direction, node, ActiveItem, elem); }; type === 'prev' ? __change(PrevItem) : __change(NextItem); }; Carousel.prototype._change = function (type, direction, node, oldActiveItem, curActiveItem) { // @ts-ignore var activeIndex = Number(curActiveItem.dataset['index']); this._dotChange(node, activeIndex); this._showActiveItem(curActiveItem, type, direction); this._hideOldActiveItem(oldActiveItem, direction); }; Carousel.prototype._dotChange = function (node, activeIndex) { var CarouselDots = node.querySelector("." + prefix.default.carousel + "-dots"); var ActiveDot = CarouselDots.children[activeIndex]; ActiveDot.classList.add(prefix.default.carousel + "-active"); (0,dom_utils.siblings)(ActiveDot).forEach(function (dot) { return dot.classList.contains(prefix.default.carousel + "-active") ? dot.classList.remove(prefix.default.carousel + "-active") : ''; }); }; Carousel.prototype._showActiveItem = function (activeElem, type, direction) { if (type === void 0) { type = 'next'; } if (direction === void 0) { direction = 'left'; } activeElem.classList.add(prefix.default.carousel + "-item-" + type); setTimeout(function () { return activeElem.classList.add(prefix.default.carousel + "-item-" + direction); }, 20); setTimeout(function () { activeElem.classList.add('active'); activeElem.classList.remove(prefix.default.carousel + "-item-" + type); activeElem.classList.remove(prefix.default.carousel + "-item-" + direction); }, DURATION); }; Carousel.prototype._hideOldActiveItem = function (oldElem, direction) { if (direction === void 0) { direction = 'left'; } setTimeout(function () { return oldElem.classList.add(prefix.default.carousel + "-item-" + direction); }, 20); setTimeout(function () { oldElem.classList.remove('active'); oldElem.classList.remove(prefix.default.carousel + "-item-" + direction); }, DURATION); }; Carousel.prototype._attrs = function (node) { return { dots: (0,dom_utils.getStrTypeAttr)(node, 'dots', 'inside'), arrow: (0,dom_utils.getStrTypeAttr)(node, 'arrow', 'hover'), effect: (0,dom_utils.getStrTypeAttr)(node, 'effect', ''), easing: (0,dom_utils.getStrTypeAttr)(node, 'easing', ''), trigger: (0,dom_utils.getStrTypeAttr)(node, 'trigger', 'click'), hoverPause: (0,dom_utils.getStrTypeAttr)(node, 'hover-pause', 'true'), radiusDot: (0,dom_utils.getBooleanTypeAttr)(node, 'radius-dot'), autoplay: (0,dom_utils.getBooleanTypeAttr)(node, 'autoplay'), autoplaySpeed: (0,dom_utils.getNumTypeAttr)(node, 'autoplay-speed', AUTOPLAYSPEED) }; }; return Carousel; }()); /* harmony default export */ var carousel = (Carousel); ;// CONCATENATED MODULE: ./src/components/carousel/index.ts /* harmony default export */ var components_carousel = (carousel); ;// CONCATENATED MODULE: ./src/components/checkbox/checkbox.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Checkbox = /** @class */ (function () { function Checkbox() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-checkbox', { all: true }); this._create(this.COMPONENTS); } Checkbox.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); var isGroup = target.tagName.toLowerCase() == 'r-checkbox-group'; // 排除 group 项 if (!isGroup) { (0,utils.validComps)(target, 'checkbox'); } else { (0,utils.validComps)(target, 'checkbox-group'); } var _a = Checkbox.prototype, _attrs = _a._attrs, _setChecked = _a._setChecked, _setIndeterminate = _a._setIndeterminate, _setMultipleChecks = _a._setMultipleChecks, _isDisabled = _a._isDisabled; var value = _attrs(target).value; return { get value() { return value; }, set value(newVal) { if (!isGroup) { (0,mixins.warn)("This checkbox is not a child of a group element -->\"" + el + "\""); return; } if (newVal && !utils.type.isArr(newVal)) return; _setMultipleChecks(target, newVal); }, get checked() { return target.dataset['value'] === 'true'; }, set checked(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _setChecked(target, newVal); }, get disabled() { return _isDisabled(target); }, set disabled(newVal) { if (newVal && !utils.type.isBol(newVal)) return; if (isGroup) return; newVal ? target.setAttribute('disabled', 'disabled') : target.removeAttribute('disabled'); var CheckBoxInput = target.querySelector("." + prefix.default.checkbox + "-input"); CheckBoxInput.disabled = newVal; }, get indeterminate() { var isIndeterminate = target .querySelector("." + prefix.default.checkbox) .classList.contains(prefix.default.checkbox + "-indeterminate"); return isIndeterminate; }, set indeterminate(newVal) { if (newVal && !utils.type.isBol(newVal)) return; if (isGroup) return; _setIndeterminate(target, newVal); }, events: function (_a) { var onChange = _a.onChange; var CheckBox, checked; isGroup ? (CheckBox = target.querySelectorAll('r-checkbox')) : (CheckBox = target); var fn = function () { if (isGroup) { checked = []; CheckBox.forEach(function (elm) { elm.dataset['value'] === 'true' ? checked.push(elm.dataset['label']) : ''; }); } else { checked = target.dataset['value'] === 'true'; } onChange && utils.type.isFn(onChange, checked); }; (0,dom_utils.bind)(target, 'click', fn); } }; }; Checkbox.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), icon = _a.icon, name = _a.name, checked = _a.checked, label = _a.label, indeterminate = _a.indeterminate; var CheckboxGroupWrapper = _this._getGroupWrapper(node); _this._setChecked(node, checked); _this._setMainTemplate(node, name); _this._setLabel(node, label); _this._setDisabled(node); _this._setIcon(node, icon); _this._setIndeterminate(node, indeterminate); _this._handleChange(node); if (CheckboxGroupWrapper) { var value = _this._attrs(CheckboxGroupWrapper).value; _this._setMultipleChecks(CheckboxGroupWrapper, value); (0,dom_utils.removeAttrs)(CheckboxGroupWrapper, ['value']); } (0,dom_utils.removeAttrs)(node, ['icon', 'name', 'checked', 'label']); }); }; Checkbox.prototype._setChecked = function (node, checked) { // @ts-ignore node.dataset['value'] = "" + checked; if (!checked) { if (node.classList.contains(prefix.default.checkbox + "-checked")) { node.classList.remove(prefix.default.checkbox + "-checked"); } } else { node.classList.add(prefix.default.checkbox + "-checked"); } }; Checkbox.prototype._setMainTemplate = function (node, name) { var content = (0,dom_utils.setHtml)(node); var template = "\n \n \n \n \n " + content + "\n "; (0,dom_utils.setHtml)(node, template); }; Checkbox.prototype._setLabel = function (node, label) { if (!this._getGroupWrapper(node)) return; // @ts-ignore node.dataset['label'] = label; }; Checkbox.prototype._setDisabled = function (node) { if (!this._isDisabled(node)) return; var CheckBoxInput = node.querySelector("." + prefix.default.checkbox + "-input"); CheckBoxInput.disabled = true; }; Checkbox.prototype._setIcon = function (node, icon) { if (!icon) return; var template = ""; node.querySelector("." + prefix.default.checkbox).insertAdjacentHTML('afterend', template); }; Checkbox.prototype._setIndeterminate = function (node, indeterminate) { var Checkbox = node.querySelector("." + prefix.default.checkbox); if (!indeterminate) { if (Checkbox.classList.contains(prefix.default.checkbox + "-indeterminate")) { Checkbox.classList.remove(prefix.default.checkbox + "-indeterminate"); } } else { Checkbox.classList.add(prefix.default.checkbox + "-indeterminate"); } }; Checkbox.prototype._setMultipleChecks = function (checkboxGroupWrapper, value) { var _setChecked = Checkbox.prototype._setChecked; var Checkboxs = checkboxGroupWrapper.querySelectorAll('r-checkbox'); var length = value.length; if (length == 0) { Checkboxs.forEach(function (elm) { return _setChecked(elm, false); }); } else { var i = 0; for (; i < length; i++) { var currentCheckbox = checkboxGroupWrapper.querySelector("[data-label=\"" + value[i] + "\"]"); currentCheckbox ? _setChecked(currentCheckbox, true) : ''; } } }; Checkbox.prototype._handleChange = function (node) { var _this = this; var addFocusedState = function () { var CheckBoxInner = node.querySelector("." + prefix.default.checkbox + "-inner"); CheckBoxInner.classList.add(prefix.default.checkbox + "-focus"); setTimeout(function () { return CheckBoxInner.classList.remove(prefix.default.checkbox + "-focus"); }, 1500); }; var toogle = function () { // @ts-ignore var isChecked = node.dataset['value'] === 'true' ? false : true; var isDisabled = _this._isDisabled(node); if (isDisabled) return false; addFocusedState(); _this._setChecked(node, isChecked); }; (0,dom_utils.bind)(node, 'click', toogle); }; Checkbox.prototype._isDisabled = function (node) { return node.getAttribute('disabled') == '' || node.getAttribute('disabled') == 'true'; }; Checkbox.prototype._getGroupWrapper = function (node) { var parent = node.parentElement; return (parent === null || parent === void 0 ? void 0 : parent.tagName.toLowerCase()) === 'r-checkbox-group' ? parent : null; }; Checkbox.prototype._attrs = function (node) { return { icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), name: (0,dom_utils.getStrTypeAttr)(node, 'name', ''), label: (0,dom_utils.getStrTypeAttr)(node, 'label', ''), value: (0,dom_utils.getArrTypeAttr)(node, 'value'), checked: (0,dom_utils.getBooleanTypeAttr)(node, 'checked'), indeterminate: (0,dom_utils.getBooleanTypeAttr)(node, 'indeterminate') }; }; return Checkbox; }()); /* harmony default export */ var checkbox_checkbox = (Checkbox); ;// CONCATENATED MODULE: ./src/components/checkbox/index.ts /* harmony default export */ var components_checkbox = (checkbox_checkbox); ;// CONCATENATED MODULE: ./src/components/circle/circle.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Circle = /** @class */ (function () { function Circle() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-circle', { all: true }); this._create(this.COMPONENTS); } Circle.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); var InnerCircle = target.querySelectorAll('path')[1]; var _a = Circle.prototype, _attrs = _a._attrs, _setPercent = _a._setPercent, _setStrokeColor = _a._setStrokeColor; var _b = _attrs(target), percent = _b.percent, strokeWidth = _b.strokeWidth, dashboard = _b.dashboard, strokeColor = _b.strokeColor; return { get percent() { return percent; }, set percent(newVal) { if (newVal && !utils.type.isNum(newVal)) return; _setPercent(InnerCircle, newVal, strokeWidth, dashboard); }, get strokeColor() { return strokeColor; }, set strokeColor(newVal) { if (newVal && !utils.type.isStr(newVal) && !utils.type.isArr(newVal)) return; _setStrokeColor(InnerCircle, newVal); } }; }; Circle.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { if ((0,mixins.moreThanOneNode)(node)) return; var CircleContent = node.firstElementChild; var _a = _this._attrs(node), size = _a.size, percent = _a.percent, strokeLinecap = _a.strokeLinecap, strokeWidth = _a.strokeWidth, strokeColor = _a.strokeColor, trailColor = _a.trailColor, trailWidth = _a.trailWidth, dashboard = _a.dashboard; _this._setSize(node, size); _this._setMainTemplate(node, percent, trailColor, trailWidth, strokeLinecap, strokeWidth, strokeColor, dashboard); var InnerCircle = node.querySelectorAll('path')[1]; _this._setPercent(InnerCircle, percent, strokeWidth, dashboard); _this._setStrokeColor(InnerCircle, strokeColor); _this._setInnerContent(node, CircleContent); (0,dom_utils.removeAttrs)(node, [ 'percent', 'size', 'stroke-linecap', 'stroke-width', 'stroke-color', 'trail-width', 'trail-color', 'dashboard' ]); }); }; Circle.prototype._setSize = function (node, size) { (0,dom_utils.setCss)(node, 'width', size + "px"); (0,dom_utils.setCss)(node, 'height', size + "px"); }; Circle.prototype._setMainTemplate = function (node, percent, trailColor, trailWidth, strokeLinecap, strokeWidth, strokeColor, dashboard) { var pathString = this._getPathString(strokeWidth, dashboard); var _a = this._getStyle(strokeWidth, dashboard), trailStyle = _a.trailStyle, pathStyle = _a.pathStyle; var computedStrokeWidth = percent === 0 && dashboard ? 0 : strokeWidth; var template = "\n \n \n \n \n "; (0,dom_utils.setHtml)(node, template); }; Circle.prototype._radius = function (strokeWidth) { return 50 - strokeWidth / 2; }; Circle.prototype._setPercent = function (innerCircle, percent, strokeWidth, dashboard) { var _radius = Circle.prototype._radius; var len = Math.floor(Math.PI * 2 * _radius(strokeWidth)); if (dashboard) { (0,dom_utils.setCss)(innerCircle, 'strokeDasharray', (percent / 100) * (len - 75) + "px " + len + "px"); } else { (0,dom_utils.setCss)(innerCircle, 'strokeDashoffset', ((100 - percent) / 100) * len + "px"); } }; Circle.prototype._setStrokeColor = function (innerCircle, color) { var id = prefix.default.circle + "-" + (0,utils.randomStr)(3); var addDefs = function (color) { if (color.length > 2) { (0,mixins.warn)('👇 The stroke-color attribute of circle cannot pass an array of length greater than 2'); console.error(innerCircle.parentElement.parentElement); return; } strokeValue = "url(#" + id + ")"; var defs = Circle.prototype.showDefs(id, color); innerCircle.parentElement.insertAdjacentHTML('beforeend', defs); }; var strokeValue; if (typeof color === 'string') { if (color.startsWith('[') && color.endsWith(']')) { addDefs(JSON.parse(color)); } else { strokeValue = color; } } else if (Array.isArray(color)) { addDefs(color); } innerCircle.setAttribute('stroke', strokeValue); }; Circle.prototype._getPathString = function (strokeWidth, dashboard) { var radius = this._radius(strokeWidth); if (dashboard) { return "M 50,50 m 0," + radius + "\n a " + radius + "," + radius + " 0 1 1 0,-" + 2 * radius + "\n a " + radius + "," + radius + " 0 1 1 0," + 2 * radius; } else { return "M 50,50 m 0,-" + radius + "\n a " + radius + "," + radius + " 0 1 1 0," + 2 * radius + "\n a " + radius + "," + radius + " 0 1 1 0,-" + 2 * radius; } }; Circle.prototype._getStyle = function (strokeWidth, dashboard) { var len = Math.floor(Math.PI * 2 * this._radius(strokeWidth)); var trailStyle, pathStyle; if (dashboard) { trailStyle = "\n stroke-dasharray: " + (len - 75) + "px " + len + "px;\n stroke-dashoffset: -" + 75 / 2 + "px;\n transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s\n "; pathStyle = "\n stroke-dashoffset: -" + 75 / 2 + "px;\n transition:stroke-dashoffset .3s ease 0s, stroke-dasharray .6s ease 0s, stroke .6s, stroke-width .06s ease .6s\n "; } else { trailStyle = ''; pathStyle = "\n stroke-dasharray: " + len + "px " + len + "px;\n transition: stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease\n "; } return { trailStyle: trailStyle, pathStyle: pathStyle }; }; Circle.prototype.showDefs = function (id, color) { return "\n \n \n \n \n \n "; }; Circle.prototype._setInnerContent = function (node, content) { if (!content) return; var CircleInner = (0,dom_utils.createElem)('div'); CircleInner.className = prefix.default.circle + "-inner"; CircleInner.appendChild(content); node.appendChild(CircleInner); }; Circle.prototype._attrs = function (node) { return { size: (0,dom_utils.getNumTypeAttr)(node, 'size', 120), percent: (0,dom_utils.getNumTypeAttr)(node, 'percent', 0), strokeWidth: (0,dom_utils.getNumTypeAttr)(node, 'stroke-width', 6), trailWidth: (0,dom_utils.getNumTypeAttr)(node, 'trail-width', 5), trailColor: (0,dom_utils.getStrTypeAttr)(node, 'trail-color', '#eaeef2'), strokeColor: (0,dom_utils.getStrTypeAttr)(node, 'stroke-color', '#1890ff'), strokeLinecap: (0,dom_utils.getStrTypeAttr)(node, 'stroke-linecap', 'round'), dashboard: (0,dom_utils.getBooleanTypeAttr)(node, 'dashboard') }; }; return Circle; }()); /* harmony default export */ var circle = (Circle); ;// CONCATENATED MODULE: ./src/components/circle/index.ts /* harmony default export */ var components_circle = (circle); // EXTERNAL MODULE: ./src/dom-utils/elem.ts var elem = __webpack_require__("./src/dom-utils/elem.ts"); ;// CONCATENATED MODULE: ./src/components/collapse/collapse.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Collapse = /** @class */ (function () { function Collapse() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-collapse', { all: true }); this._create(this.COMPONENTS); } Collapse.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'collapse'); var _a = Collapse.prototype, _attrs = _a._attrs, _dataSetActiveKey = _a._dataSetActiveKey, _openByKey = _a._openByKey; var activeIndex = JSON.parse(target.dataset['activeIndex']); return { get activeIndex() { return activeIndex; }, set activeIndex(newVal) { if (newVal == activeIndex) return; _dataSetActiveKey(target, newVal); _openByKey(target, newVal, target.getAttribute('accordion')); }, events: function (_a) { var onChange = _a.onChange; var panels = target.querySelectorAll('r-collapse-panel'); // 储存已展开面板的 key var key = []; var pushKey = function (el, toggle) { var accordion = _attrs(target).accordion; // @ts-ignore var panelKey = el.dataset.panelKey; if (el.classList.contains(prefix.default.collapse + "-item-active")) { key.push(panelKey); } else if (toggle) { var idx = key.indexOf(panelKey); idx > -1 ? key.splice(idx, 1) : ''; } // 手风琴模式下每展开一个面板就删除其他的 key if (accordion) { (0,dom_utils.siblings)(el).forEach(function (o) { var otherIdx = key.indexOf(o.dataset.panelKey); otherIdx > -1 ? key.splice(otherIdx, 1) : ''; }); } }; panels.forEach(function (panel) { var header = panel.querySelector("." + prefix.default.collapse + "-header"); // 存放初始化面板时默认已展开的 key pushKey(panel, false); (0,dom_utils.bind)(header, 'click', function () { // 这里用定时器是为了跟移除显示面板样式类名的时机同步 setTimeout(function () { pushKey(panel, true); onChange && utils.type.isFn(onChange, key); }, 150); }); }); } }; }; Collapse.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), simple = _a.simple, ghost = _a.ghost, activekey = _a.activekey, accordion = _a.accordion; _this._dataSetActiveKey(node, activekey); _this._setGhost(node, ghost); _this._setSimple(node, simple); _this._createChildNodes(node); _this._openByKey(node, activekey, accordion); (0,dom_utils.removeAttrs)(node, ['simple', 'ghost', 'active-key']); }); }; Collapse.prototype._dataSetActiveKey = function (node, activeIndex) { if (activeIndex) { // @ts-ignore node.dataset['activeIndex'] = Array.isArray(activeIndex) ? "[" + activeIndex + "]" : activeIndex; } }; Collapse.prototype._setGhost = function (node, ghost) { ghost ? node.classList.add(prefix.default.collapse + "-ghost") : ''; }; Collapse.prototype._setSimple = function (node, simple) { simple ? node.classList.add(prefix.default.collapse + "-simple") : ''; }; Collapse.prototype._createChildNodes = function (node) { var collapsePanels = node.querySelectorAll('r-collapse-panel'); this._setPanel(node, collapsePanels); }; Collapse.prototype._setPanel = function (parent, panels) { var _this = this; // 遍历所有面板节点 panels.forEach(function (panel, index) { var _a = _this._attrs(panel), key = _a.index, title = _a.title, hideArrow = _a.hideArrow; // @ts-ignore // 面板的 key 如果没填则默认为索引值 panel.dataset.panelKey = !key ? index : key; // 保存面板原先的第一个节点,也就是要填充的内容 var content = panel.firstElementChild; var arrowIcon = ""; var template = "\n
\n " + (!hideArrow ? arrowIcon : '') + " " + title + "\n
\n
\n
\n
"; // 清空面板原先的所有内容 (0,elem.setHtml)(panel, ''); // 追加html模板 (0,elem.setHtml)(panel, template); // 将原先的占位内容填充至面板内容盒子 var panelContentBox = panel.querySelector("." + prefix.default.collapse + "-content-box"); content ? panelContentBox === null || panelContentBox === void 0 ? void 0 : panelContentBox.appendChild(content) : null; (0,elem.setCss)(panel, 'display', 'block'); _this._handleToggle(parent, panel); (0,dom_utils.removeAttrs)(panel, ['index', 'title', 'hide-arrow']); }); }; Collapse.prototype._handleToggle = function (parent, panel) { var _this = this; var accordion = this._attrs(parent).accordion; var collapseHeader = panel.querySelector("." + prefix.default.collapse + "-header"); var collapseContent = panel.querySelector("." + prefix.default.collapse + "-content"); (0,dom_utils.bind)(collapseHeader, 'click', function () { return _this._slide(panel, collapseContent, accordion); }); }; Collapse.prototype._slide = function (p, c, accordion) { var activeCls = prefix.default.collapse + "-item-active"; var slideUp = function (arg1, arg2) { dom_utils.slider.slideUp(arg2, 150); setTimeout(function () { arg1.classList.remove(activeCls); }, 150); }; if (p.classList.contains(activeCls)) { slideUp(p, c); } else { dom_utils.slider.slideDown(c, 150); p.classList.add(activeCls); } // 手风琴模式 if (accordion) { // 获取除了已展开的面板外的所有其他面板 (0,dom_utils.siblings)(p).forEach(function (otherP) { var otherC = otherP.querySelector("." + prefix.default.collapse + "-content"); slideUp(otherP, otherC); }); } }; Collapse.prototype._openByKey = function (node, key, accordion) { // 获取选中的 key 的面板 var selected; var open = function () { if (selected) { selected.classList.add(prefix.default.collapse + "-item-active"); if (accordion) { (0,dom_utils.siblings)(selected).forEach(function (o) { o.classList.remove(prefix.default.collapse + "-item-active"); }); } } }; // 如果 activeIndex 是数组则对其进行遍历获取所有面板 // 且如果是手风琴模式则只选取数组的第一项,只展开一个面板 if (Array.isArray(key)) { var length_1 = key.length; // length == 1 说明数组只有一项所以不必对其进行遍历 if (accordion || length_1 == 1) { selected = node.querySelector("[data-panel-key=\"" + key[0] + "\"]"); open(); } else { var i = 0; for (; i < length_1; i++) { selected = node.querySelector("[data-panel-key=\"" + key[i] + "\"]"); open(); } } } else { selected = node.querySelector("[data-panel-key=\"" + key + "\"]"); open(); } }; Collapse.prototype._attrs = function (node) { return { index: (0,elem.getStrTypeAttr)(node, 'index', ''), title: (0,elem.getStrTypeAttr)(node, 'title', ''), ghost: (0,elem.getBooleanTypeAttr)(node, 'ghost'), simple: (0,elem.getBooleanTypeAttr)(node, 'simple'), hideArrow: (0,elem.getBooleanTypeAttr)(node, 'hide-arrow'), accordion: (0,elem.getBooleanTypeAttr)(node, 'accordion'), activekey: (0,elem.getStrTypeAttr)(node, 'active-index', '') && (0,elem.getArrTypeAttr)(node, 'active-index') }; }; return Collapse; }()); /* harmony default export */ var collapse = (Collapse); ;// CONCATENATED MODULE: ./src/components/collapse/index.ts /* harmony default export */ var components_collapse = (collapse); ;// CONCATENATED MODULE: ./src/components/count-down/count-down.ts var CountDown = /** @class */ (function () { function CountDown() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-count-down', { all: true }); this._create(this.COMPONENTS); } CountDown.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'count-down'); var _countTime = CountDown.prototype._countTime; return { get endTime() { return ''; }, set endTime(newVal) { if (newVal && !utils.type.isStr(newVal)) return; _countTime(target, newVal); }, events: function (_a) { var onStop = _a.onStop; if (!onStop) return; (0,dom_utils.bind)(target, 'DOMNodeInserted', function (e) { if (e.target.textContent === '00:00:00') { utils.type.isFn(onStop, true); } }); } }; }; CountDown.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var endTime = _this._attrs(node).endTime; _this._countTime(node, endTime); (0,dom_utils.removeAttrs)(node, ['endTime']); }); }; CountDown.prototype._countTime = function (node, endTime) { if (!endTime) return; var timer = null; var countDown = function () { //获取当前时间 var date = new Date(); var now = date.getTime(); //设置截止时间 var endDate = new Date(endTime); var _endTime = endDate.getTime(); //时间差 var diff = _endTime - now; //定义变量 d,h,m,s保存倒计时的时间 var d = 0, h = 0, m = 0, s = 0; if (diff >= 0) { d = Math.floor(diff / 1000 / 60 / 60 / 24); h = Math.floor((diff / 1000 / 60 / 60) % 24); m = Math.floor((diff / 1000 / 60) % 60); s = Math.floor((diff / 1000) % 60); } var checkTime = function (t) { if (t < 10) t = "0" + t; return t; }; //将0-9的数字前面加上0,例1变为01 d = checkTime(d); h = checkTime(h); m = checkTime(m); s = checkTime(s); node.textContent = h + ":" + m + ":" + s; }; countDown(); timer = window.setInterval(countDown, 1000); (0,dom_utils.bind)(node, 'DOMNodeInserted', function (e) { if (e.target.textContent === '00:00:00') { window.clearInterval(timer); return; } }); }; CountDown.prototype._attrs = function (node) { return { endTime: (0,dom_utils.getStrTypeAttr)(node, 'end-time', '') }; }; return CountDown; }()); /* harmony default export */ var count_down = (CountDown); ;// CONCATENATED MODULE: ./src/components/count-down/index.ts /* harmony default export */ var components_count_down = (count_down); ;// CONCATENATED MODULE: ./src/components/divider/divider.ts var Divider = /** @class */ (function () { function Divider() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-divider', { all: true }); this._create(this.COMPONENTS); } Divider.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { _this._setType(node); _this._setDashed(node); _this._setPlain(node); _this._setTitle(node); (0,dom_utils.removeAttrs)(node, ['dashed', 'plain', 'orientation']); }); }; Divider.prototype._setType = function (node) { var type = this._attrs(node).type; node.setAttribute('type', "" + type); }; Divider.prototype._setDashed = function (node) { var dashed = this._attrs(node).dashed; if (dashed) { node.classList.add(prefix.default.divider + "-dashed"); } }; Divider.prototype._setPlain = function (node) { var plain = this._attrs(node).plain; if (plain) { node.classList.add(prefix.default.divider + "-plain"); } }; Divider.prototype._setOrientation = function (node) { var orientation = this._attrs(node).orientation; node.classList.add(prefix.default.divider + "-with-text-" + orientation); }; Divider.prototype._setTitle = function (node) { if (node.innerHTML == '' || node.innerHTML == ' ') return; this._setOrientation(node); var DividerText = (0,dom_utils.createElem)('span'); DividerText.className = prefix.default.divider + "-inner-text"; DividerText.innerHTML = node.innerHTML; node.classList.add(prefix.default.divider + "-with-text"); node.innerHTML = ''; node.appendChild(DividerText); }; Divider.prototype._attrs = function (node) { return { type: (0,dom_utils.getStrTypeAttr)(node, 'type', 'horizontal'), orientation: (0,dom_utils.getStrTypeAttr)(node, 'orientation', 'center'), dashed: (0,dom_utils.getBooleanTypeAttr)(node, 'dashed'), plain: (0,dom_utils.getBooleanTypeAttr)(node, 'plain') }; }; return Divider; }()); /* harmony default export */ var divider = (Divider); ;// CONCATENATED MODULE: ./src/components/divider/index.ts /* harmony default export */ var components_divider = (divider); ;// CONCATENATED MODULE: ./src/components/drawer/drawer.ts var Drawer = /** @class */ (function () { function Drawer() { this.VERSION = 'v1.1.1'; this.COMPONENTS = (0,dom_utils.$el)('r-drawer', { all: true }); this._create(this.COMPONENTS); } Drawer.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'drawer'); var _a = Drawer.prototype, _handleVisable = _a._handleVisable, _attrs = _a._attrs; var DrawerMask = target.querySelector("." + prefix.default.drawer + "-mask"); var DrawerWrap = target.querySelector("." + prefix.default.drawer + "-wrap"); var _Drawer = target.querySelector("." + prefix.default.drawer); var DrawerTitle = target.querySelector("." + prefix.default.drawer + "-header-inner"); var DrawerClose = target.querySelector("." + prefix.default.drawer + "-close"); return { get title() { return (0,dom_utils.setHtml)(DrawerTitle); }, set title(newVal) { if (!utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(DrawerTitle, newVal); }, get visable() { return false; }, set visable(newVal) { if (!utils.type.isBol(newVal)) return; _handleVisable(newVal, target, [DrawerMask, DrawerWrap, _Drawer]); }, events: function (_a) { var onClose = _a.onClose; // v1.0.1 改用on事件绑定,防止触发回调事件的次数随着每次点击而不断的重复叠加 if (DrawerClose) DrawerClose.onclick = function () { return onClose && utils.type.isFn(onClose); }; if (_attrs(target).maskClosable === 'true') DrawerWrap.onclick = function () { return onClose && utils.type.isFn(onClose); }; } }; }; Drawer.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { _this._createDrawerNodes(node); (0,dom_utils.setCss)(node, 'display', 'block'); (0,dom_utils.removeAttrs)(node, [ 'title', 'width', 'height', 'mask', 'visible', 'closable', 'scrollable', 'lock-scroll' ]); }); }; Drawer.prototype._createDrawerNodes = function (node) { var DrawerMask = (0,dom_utils.createElem)('div'); var DrawerWrap = (0,dom_utils.createElem)('div'); var Drawer = (0,dom_utils.createElem)('div'); var DrawerContent = (0,dom_utils.createElem)('div'); var DrawerClose = (0,dom_utils.createElem)('a'); var DrawerHeader = (0,dom_utils.createElem)('div'); var DrawerHeaderInner = (0,dom_utils.createElem)('div'); var DrawerBody = (0,dom_utils.createElem)('div'); this._setCls([ DrawerMask, DrawerWrap, Drawer, DrawerContent, DrawerClose, DrawerHeader, DrawerHeaderInner, DrawerBody ]); this._setSize(node, Drawer); this._setPlacement(node, Drawer); this._setOpenInContainer(node, DrawerMask, DrawerWrap, Drawer); this._initVisible(node, DrawerMask, DrawerWrap, Drawer); this._handleClose(node, [DrawerMask, DrawerWrap, Drawer], DrawerClose); DrawerWrap.appendChild(Drawer); Drawer.appendChild(DrawerContent); this._setClosable(node, DrawerContent, DrawerClose); this._setHeader(node, DrawerContent, DrawerHeader, DrawerHeaderInner); DrawerContent.appendChild(DrawerBody); this._setBodyContent(node, DrawerBody); this._setMask(node, DrawerMask, DrawerWrap, DrawerContent); node.appendChild(DrawerWrap); }; Drawer.prototype._setCls = function (elms) { var elmsCls = [ prefix.default.drawer + "-mask", prefix.default.drawer + "-wrap", "" + prefix.default.drawer, prefix.default.drawer + "-content", prefix.default.drawer + "-close", prefix.default.drawer + "-header", prefix.default.drawer + "-header-inner", prefix.default.drawer + "-body" ]; var i = 0; var length = elms.length; for (; i < length; i++) { var elm = elms[i]; elm.className = elmsCls[i]; } }; Drawer.prototype._setSize = function (parent, children) { var _a = this._attrs(parent), width = _a.width, height = _a.height, placement = _a.placement; if (placement === 'top' || placement === 'bottom') { (0,dom_utils.setCss)(children, 'height', height); } else if (placement === 'left' || placement === 'right') { children.style.width = width; (0,dom_utils.setCss)(children, 'width', width); } }; Drawer.prototype._setPlacement = function (parent, children) { var placement = this._attrs(parent).placement; children.classList.add(prefix.default.drawer + "-" + placement); }; Drawer.prototype._setOpenInContainer = function (parent, drawerMask, drawerWrap, drawer) { var inner = this._attrs(parent).inner; if (!inner) return; drawerMask.classList.add(prefix.default.drawer + "-mask-inner"); drawerWrap.classList.add(prefix.default.drawer + "-wrap-inner"); drawer.classList.add(prefix.default.drawer + "-inner"); }; Drawer.prototype._setMask = function (parent, drawerMask, drawerWrap, drawerContent) { var mask = this._attrs(parent).mask; if (parent.getAttribute('mask') == null) mask = true; if (!mask) { drawerWrap.classList.add(prefix.default.drawer + "-no-mask"); drawerContent.classList.add(prefix.default.drawer + "-content-no-mask"); return; } parent.appendChild(drawerMask); }; Drawer.prototype._setClosable = function (parent, children, drawerClose) { var closable = this._attrs(parent).closable; if (!closable) return; (0,dom_utils.setHtml)(drawerClose, ""); children.appendChild(drawerClose); }; Drawer.prototype._setHeader = function (parent, drawerContent, drawerHeader, drawerTitle) { var _a; var title = this._attrs(parent).title; if (!title) { (_a = drawerContent.parentElement) === null || _a === void 0 ? void 0 : _a.classList.add(prefix.default.drawer + "-no-header"); return; } (0,dom_utils.setHtml)(drawerTitle, title); drawerHeader.appendChild(drawerTitle); drawerContent.appendChild(drawerHeader); }; Drawer.prototype._setBodyContent = function (parent, children) { // v1.1.1 增加占位节点的组成数量判断 if ((0,mixins.moreThanOneNode)(parent)) return; var placeholderNode = parent.firstElementChild; if (placeholderNode) children.appendChild(placeholderNode); }; Drawer.prototype._initVisible = function (parent, drawerMask, drawerWrap, drawer) { var visible = this._attrs(parent).visible; // @ts-ignore parent.dataset.drawerVisable = "" + visible; if (visible) return; drawerWrap.classList.add(prefix.default.drawer + "-hidden"); (0,dom_utils.setCss)(drawerMask, 'display', 'none'); (0,dom_utils.setCss)(drawer, 'display', 'none'); }; Drawer.prototype._handleVisable = function (visable, target, children) { var _a = Drawer.prototype, _show = _a._show, _hide = _a._hide; visable ? _show(target, children) : _hide(target, children); }; Drawer.prototype._handleClose = function (parent, hiddenElm, triggerElm) { var _hide = Drawer.prototype._hide; // triggerElm 表示右上角关闭按钮 (0,dom_utils.bind)(triggerElm, 'click', function () { return _hide(parent, hiddenElm); }); (0,dom_utils.bind)(hiddenElm[1], 'click', function () { return _hide(parent, hiddenElm); }); (0,dom_utils.bind)(hiddenElm[2], 'click', function (e) { return e.stopPropagation(); }); }; Drawer.prototype._show = function (parent, showElm) { var _attrs = Drawer.prototype._attrs; var _a = _attrs(parent), inner = _a.inner, placement = _a.placement, scrollable = _a.scrollable; var lockScroll = _attrs(parent).lockScroll; !parent.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll; // 设置为在当前 dom 里打开则不隐藏 body 滚动条 if (!inner) (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll }); // @ts-ignore // 设置当前为显示状态 parent.dataset.drawerVisable = 'true'; // showElm[0] 表示遮盖层 // showElm[1] 表示抽屉的父容器wrap // showElm[2] 表示抽屉主体 showElm[1].classList.contains(prefix.default.drawer + "-hidden") && showElm[1].classList.remove(prefix.default.drawer + "-hidden"); (0,mixins.CssTransition)(showElm[0], { inOrOut: 'in', enterCls: 'rab-fade-in', rmCls: true, timeout: 250 }); (0,mixins.CssTransition)(showElm[2], { inOrOut: 'in', enterCls: prefix.default.drawer + "-" + placement + "-move-enter", rmCls: true, timeout: 550 }); }; Drawer.prototype._hide = function (parent, hiddenElm) { var placement = Drawer.prototype._attrs(parent).placement; // @ts-ignore // 设置为隐藏状态 parent.dataset.drawerVisable = 'false'; // hiddenElm[0] 表示遮盖层 // hiddenElm[1] 表示抽屉的父容器wrap // hiddenElm[2] 表示抽屉主体 (0,mixins.CssTransition)(hiddenElm[0], { inOrOut: 'out', leaveCls: 'rab-fade-out', rmCls: true, timeout: 250 }); (0,mixins.CssTransition)(hiddenElm[2], { inOrOut: 'out', leaveCls: prefix.default.drawer + "-" + placement + "-move-leave", rmCls: true, timeout: 490 }); setTimeout(function () { hiddenElm[1].classList.add(prefix.default.drawer + "-hidden"); (0,dom_utils.setCss)(hiddenElm[2], 'display', 'none'); (0,mixins.Scrollable)({ scroll: true, lock: true, node: parent, tagName: 'drawer' }); }, 490); }; Drawer.prototype._attrs = function (node) { return { title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), width: (0,dom_utils.getStrTypeAttr)(node, 'width', '256px'), height: (0,dom_utils.getStrTypeAttr)(node, 'height', '256px'), placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'right'), mask: (0,dom_utils.getBooleanTypeAttr)(node, 'mask'), inner: (0,dom_utils.getBooleanTypeAttr)(node, 'inner'), visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'), closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable'), scrollable: (0,dom_utils.getBooleanTypeAttr)(node, 'scrollable'), lockScroll: (0,dom_utils.getBooleanTypeAttr)(node, 'lock-scroll'), maskClosable: (0,dom_utils.getStrTypeAttr)(node, 'mask-closable', 'true') }; }; return Drawer; }()); /* harmony default export */ var drawer = (Drawer); ;// CONCATENATED MODULE: ./src/components/drawer/index.ts /* harmony default export */ var components_drawer = (drawer); ;// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.js /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; } return __assign.apply(this, arguments); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __createBinding(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; } function __exportStar(m, exports) { for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p]; } function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result.default = mod; return result; } function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } function __classPrivateFieldGet(receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return privateMap.get(receiver); } function __classPrivateFieldSet(receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); } privateMap.set(receiver, value); return value; } ;// CONCATENATED MODULE: ./src/components/dropdown/dropdown.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var DEFAULTDELAY = 80; var STATEKEY = 'visibleState'; var ITEMKEY = 'itemKey'; var DROPENTERCLS = 'transition-drop-enter'; var DROPLEAVECLS = 'transition-drop-leave'; var VISIBLETIMER = null, EVENTTIMER = null; var Dropdown = /** @class */ (function () { function Dropdown() { this.VERSION = 'v2.0'; this.COMPONENTS = (0,dom_utils.$el)('r-dropdown', { all: true }); this._create(this.COMPONENTS); } Dropdown.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'dropdown'); var _a = Dropdown.prototype, _attrs = _a._attrs, _setVisible = _a._setVisible, _getChildDisabled = _a._getChildDisabled; var _b = _attrs(target), trigger = _b.trigger, placement = _b.placement; var DropdownRefElm = target.firstElementChild; var DropdownMenu = target.querySelector('r-dropdown-menu'); var DropdownItem = DropdownMenu.querySelectorAll('r-dropdown-item'); return { get visible() { return DropdownMenu.dataset[STATEKEY] === 'visible'; }, set visible(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _setVisible(target, DropdownMenu, newVal, placement); }, events: function (_a) { var onClick = _a.onClick, onVisibleChange = _a.onVisibleChange, onClickOutside = _a.onClickOutside; // onVisibleChange var visibleChange = function () { setTimeout(function () { var visible = DropdownMenu.dataset[STATEKEY] === 'visible'; onVisibleChange && utils.type.isFn(onVisibleChange, visible); }, DEFAULTDELAY); }; // onClick var itemClickEv = function (elem) { if (_getChildDisabled(elem)) return false; // @ts-ignore var key = elem.dataset[ITEMKEY]; visibleChange(); onClick && utils.type.isFn(onClick, key); }; if (trigger === 'hover') { (0,dom_utils.bind)(target, 'mouseenter', function () { if (EVENTTIMER) clearTimeout(EVENTTIMER); EVENTTIMER = setTimeout(visibleChange, DEFAULTDELAY); }); (0,dom_utils.bind)(target, 'mouseleave', function () { if (EVENTTIMER) clearTimeout(EVENTTIMER); if (DropdownMenu.dataset[STATEKEY] === 'visible') setTimeout(visibleChange, DEFAULTDELAY); }); } if (trigger === 'click' || trigger === 'contextMenu') { onClickOutside && (0,mixins.clickoutside)(target, onClickOutside, DropdownMenu, STATEKEY, 'visible'); } if (trigger === 'click') { (0,dom_utils.bind)(DropdownRefElm, 'click', visibleChange); } if (trigger === 'contextMenu') { (0,dom_utils.bind)(DropdownRefElm, 'contextmenu', visibleChange); } DropdownItem.forEach(function (child) { return (0,dom_utils.bind)(child, 'click', function () { return itemClickEv(child); }); }); } }; }; Dropdown.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { if (!_this._correctCompositionNodes(node)) return; var _a = _this._attrs(node), trigger = _a.trigger, placement = _a.placement, visible = _a.visible, stopPropagation = _a.stopPropagation; var DropdownMenu = node.querySelector('r-dropdown-menu'); var DropdownItem = DropdownMenu.querySelector('r-dropdown-item'); var key = _this._attrs(DropdownItem).key; _this._setVisible(node, DropdownMenu, visible, placement); _this._setChildKey(DropdownItem, key); _this._setStopPropagation(stopPropagation, node, DropdownMenu); _this._handleTrigger(trigger, placement, node, DropdownMenu); _this._handleItemClick(trigger, node, DropdownMenu, placement); (0,dom_utils.removeAttrs)(node, ['key', 'trigger', 'placement', 'visible', 'stop-propagation']); }); }; Dropdown.prototype._correctCompositionNodes = function (node) { var _a; if (((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === 'R-DROPDOWN-MENU') { (0,mixins.warn)('👇 The first child element must be the reference element used to trigger the menu display hidden, not r-dropdown-menu'); console.error(node); return false; } if (node.lastElementChild.tagName !== 'R-DROPDOWN-MENU') { (0,mixins.warn)('👇 The last child element tag must be made up of r-dropdown-menu'); console.error(node); return false; } if (node.childElementCount > 2) { (0,mixins.warn)('👇 The number of child element nodes in this r-dropdown tag cannot exceed two'); console.error(node); return false; } return true; }; Dropdown.prototype._setStopPropagation = function (stop, node, child) { if (!stop) return; (0,dom_utils.bind)(node, 'click', function (e) { return e.stopPropagation(); }); (0,dom_utils.bind)(child, 'click', function (e) { return e.stopPropagation(); }); }; Dropdown.prototype._handleTrigger = function (type, placement, node, child) { var _this = this; if (type === 'custom') return; var referenceElem = node.firstElementChild; // 触发菜单显示隐藏的引用元素如果是禁用状态则不做操作 if (/disabled/.test(referenceElem.className)) return; if (this._getChildDisabled(referenceElem)) return; var showMenu = function () { if (VISIBLETIMER) clearTimeout(VISIBLETIMER); if (child.dataset[STATEKEY] === 'visible') return; VISIBLETIMER = setTimeout(function () { return _this._setVisible(node, child, true, placement); }, DEFAULTDELAY); }; var hidenMenu = function () { if (VISIBLETIMER) clearTimeout(VISIBLETIMER); if (child.dataset[STATEKEY] === 'visible') { setTimeout(function () { return _this._setVisible(node, child, false, placement); }, DEFAULTDELAY); } }; var clickIsShow = function (e) { e.stopPropagation(); if (child.dataset[STATEKEY] === 'hidden') { showMenu(); } else { hidenMenu(); } }; if (type === 'hover') { (0,dom_utils.bind)(node, 'mouseenter', showMenu); (0,dom_utils.bind)(node, 'mouseleave', hidenMenu); } // 点击菜单栏以外的地方隐藏 if (type === 'click' || type === 'contextMenu') { (0,mixins.clickoutside)(node, hidenMenu); } if (type === 'click') { (0,dom_utils.bind)(referenceElem, 'click', function (e) { return clickIsShow(e); }); } if (type === 'contextMenu') { (0,dom_utils.bind)(referenceElem, 'contextmenu', function (e) { e.preventDefault(); clickIsShow(e); }); } }; Dropdown.prototype._handleItemClick = function (type, node, child, placement) { var _this = this; if (type === 'custom') return; var DropdownItems = child.querySelectorAll('r-dropdown-item'); DropdownItems.forEach(function (item) { return (0,dom_utils.bind)(item, 'click', function () { if (_this._getChildDisabled(item)) return; _this._setVisible(node, child, false, placement); }); }); }; Dropdown.prototype._setChildKey = function (child, key) { if (key) { child.dataset[ITEMKEY] = key; child.removeAttribute('key'); } }; Dropdown.prototype._setVisible = function (node, child, visible, placement) { var _a = Dropdown.prototype, _setPlacement = _a._setPlacement, _setTransitionDrop = _a._setTransitionDrop; if (visible) { child.dataset[STATEKEY] = 'visible'; _setPlacement(node, child, placement); _setTransitionDrop('in', child); } else { child.dataset[STATEKEY] = 'hidden'; setTimeout(function () { child.dataset[STATEKEY] === 'hidden' && _setTransitionDrop('out', child); }, 0); } }; Dropdown.prototype._setPlacement = function (node, child, placement) { var popperPlacement = child.dataset['popperPlacement'] || placement; if (/^top|right-end|left-end/.test(popperPlacement)) { (0,dom_utils.setCss)(child, 'transformOrigin', 'center bottom'); } if (/^bottom|right-start|left-start/.test(popperPlacement)) { (0,dom_utils.setCss)(child, 'transformOrigin', 'center top'); } mixins._Popper._newCreatePopper(node, child, placement, 0); }; Dropdown.prototype._setTransitionDrop = function (type, child) { var transitionCls = type === 'in' ? { enterCls: DROPENTERCLS } : { leaveCls: DROPLEAVECLS }; (0,mixins.CssTransition)(child, __assign(__assign({ inOrOut: type }, transitionCls), { rmCls: true, timeout: 290 })); }; Dropdown.prototype._getChildDisabled = function (elem) { if (elem.getAttribute('disabled') === 'disabled' || elem.getAttribute('disabled') === 'true' || elem.getAttribute('disabled') === '') { return true; } return false; }; Dropdown.prototype._attrs = function (node) { return { key: (0,dom_utils.getStrTypeAttr)(node, 'key', ''), trigger: (0,dom_utils.getStrTypeAttr)(node, 'trigger', 'hover'), placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'bottom'), visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'), stopPropagation: (0,dom_utils.getBooleanTypeAttr)(node, 'stop-propagation') }; }; return Dropdown; }()); /* harmony default export */ var dropdown = (Dropdown); ;// CONCATENATED MODULE: ./src/components/dropdown/index.ts /* harmony default export */ var components_dropdown = (dropdown); ;// CONCATENATED MODULE: ./assets/empty.svg /* harmony default export */ var empty = (".././fonts/empty.svg"); ;// CONCATENATED MODULE: ./src/components/empty/empty.ts var Empty = /** @class */ (function () { function Empty() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-empty', { all: true }); this._create(this.COMPONENTS); } Empty.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), desc = _a.desc, image = _a.image, imageStyle = _a.imageStyle; var footerElm = node.firstElementChild; _this._setMainTemplate(node, desc, image, imageStyle); _this._setFooter(node, footerElm); (0,dom_utils.removeAttrs)(node, ['desc', 'image', 'image-style']); }); }; Empty.prototype._setMainTemplate = function (node, desc, image, imageStyle) { var template = " \n
\n \"empty\"\n
\n
" + (desc == 'false' ? '' : desc) + "
"; (0,dom_utils.setHtml)(node, template); }; Empty.prototype._setFooter = function (node, footerElm) { if (!footerElm) return; var footerTpl = "
"; node.insertAdjacentHTML('beforeend', footerTpl); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion node.querySelector("." + prefix.default.empty + "-footer").appendChild(footerElm); }; Empty.prototype._attrs = function (node) { return { desc: (0,dom_utils.getStrTypeAttr)(node, 'desc', '暂无数据'), image: (0,dom_utils.getStrTypeAttr)(node, 'image', "" + empty), imageStyle: (0,dom_utils.getStrTypeAttr)(node, 'image-style', '') }; }; return Empty; }()); /* harmony default export */ var empty_empty = (Empty); ;// CONCATENATED MODULE: ./src/components/empty/index.ts /* harmony default export */ var components_empty = (empty_empty); // EXTERNAL MODULE: ./src/components/input-number/input-number.ts var input_number = __webpack_require__("./src/components/input-number/input-number.ts"); ;// CONCATENATED MODULE: ./src/components/input-number/index.ts /* harmony default export */ var components_input_number = (input_number.default); ;// CONCATENATED MODULE: ./src/components/jumbotron/jumbotron.ts var Jumbotron = /** @class */ (function () { function Jumbotron() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-jumbotron', { all: true }); this._create(this.COMPONENTS); } Jumbotron.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { if ((0,mixins.moreThanOneNode)(node)) return; var placeholderNode = node.firstElementChild; var _a = _this._attrs(node), title = _a.title, subTitle = _a.subTitle; _this._setMainTemplate(node, title, subTitle); _this._setExtraContent(node, placeholderNode); (0,dom_utils.removeAttrs)(node, ['title', 'sub-title']); }); }; Jumbotron.prototype._setMainTemplate = function (node, title, subTitle) { var template = "\n
\n

" + title + "

\n
" + subTitle + "
\n
"; (0,dom_utils.setHtml)(node, template); }; Jumbotron.prototype._setExtraContent = function (node, placeholderNode) { if (!placeholderNode) return; var JumbotronContainer = node.querySelector("." + prefix.default.jumbotron + "-container"); JumbotronContainer === null || JumbotronContainer === void 0 ? void 0 : JumbotronContainer.appendChild(placeholderNode); }; Jumbotron.prototype._attrs = function (node) { return { title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), subTitle: (0,dom_utils.getStrTypeAttr)(node, 'sub-title', '') }; }; return Jumbotron; }()); /* harmony default export */ var jumbotron = (Jumbotron); ;// CONCATENATED MODULE: ./src/components/jumbotron/index.ts /* harmony default export */ var components_jumbotron = (jumbotron); ;// CONCATENATED MODULE: ./src/components/loading-bar/loading-bar.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ // 全局配置 var DEFAULT_LOADINGBAR = { color: 'primary', height: 2, duration: 800, failedColor: 'error' }; var timer; function createLoadingBarInstance() { var LoadingBar = (0,dom_utils.createElem)('div'); var LoadingBarInner = (0,dom_utils.createElem)('div'); LoadingBar.className = "" + prefix.default.loadingBar; LoadingBarInner.className = prefix.default.loadingBar + "-inner"; setColor('primary', LoadingBarInner); // 初始进度 (0,dom_utils.setCss)(LoadingBarInner, 'width', '0%'); // 设置进度条高度为全局配置的高度 window.setTimeout(function () { var height = DEFAULT_LOADINGBAR.height + "px"; (0,dom_utils.setCss)(LoadingBar, 'height', height); }, 0); LoadingBar.appendChild(LoadingBarInner); document.body.appendChild(LoadingBar); return LoadingBar; } // 设置进度函数 function r_update(options) { var LBar = (0,dom_utils.$el)("." + prefix.default.loadingBar); var LBarInner = (0,dom_utils.$el)("." + prefix.default.loadingBar + "-inner"); // 设置进度 (0,dom_utils.setCss)(LBarInner, 'width', options.percent + "%"); var transitionConfig = { rmCls: true, timeout: 200, enterCls: 'rab-fade-in', leaveCls: 'rab-fade-out', hiddenParent: LBar }; // 是否显示隐藏 if (options.show) { (0,mixins.CssTransition)(LBarInner, __assign({ inOrOut: 'in' }, transitionConfig)); } else { (0,mixins.CssTransition)(LBarInner, __assign({ inOrOut: 'out' }, transitionConfig)); } setColor(options.status, LBarInner); } // 隐藏进度条 function hide() { window.setTimeout(function () { r_update({ show: false }); window.setTimeout(function () { r_update({ percent: 0 }); }, 200); }, DEFAULT_LOADINGBAR.duration); } function clearTimer() { if (timer) { window.clearInterval(timer); timer = null; } } // 设置进度条状态背景颜色 function setColor(status, elem) { if (status === 'error') { // 是否使用全局配置的 failedColor if (DEFAULT_LOADINGBAR.failedColor && DEFAULT_LOADINGBAR.failedColor !== 'error') { (0,dom_utils.setCss)(elem, 'backgroundColor', DEFAULT_LOADINGBAR.failedColor); // 在隐藏的持续时间后初始化背景色 window.setTimeout(function () { (0,dom_utils.setCss)(elem, 'backgroundColor', ''); }, DEFAULT_LOADINGBAR.duration); } else { elem.classList.add(prefix.default.loadingBar + "-inner-failed-color-error"); // 在隐藏的持续时间后设为初始颜色 window.setTimeout(function () { elem.classList.remove(prefix.default.loadingBar + "-inner-failed-color-error"); }, DEFAULT_LOADINGBAR.duration + 200); } } else if (status === 'primary') { // 是否使用全局配置的 color if (DEFAULT_LOADINGBAR.color && DEFAULT_LOADINGBAR.color !== 'primary') { (0,dom_utils.setCss)(elem, 'backgroundColor', DEFAULT_LOADINGBAR.color); } else { elem.classList.add(prefix.default.loadingBar + "-inner-color-primary"); } } } var $LoadingBar = /** @class */ (function () { function $LoadingBar() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)("." + prefix.default.loadingBar); createLoadingBarInstance(); } $LoadingBar.prototype.start = function () { if (timer) return; var percent = 0; timer = window.setInterval(function () { // 计算随机进度 percent += Math.floor(Math.random() * 3 + 1); // 终止 if (percent > 95) { clearTimer(); } r_update({ percent: percent, status: 'primary', show: true }); }, 200); }; $LoadingBar.prototype.update = function (percent) { clearTimer(); r_update({ percent: percent, status: 'success', show: true }); }; $LoadingBar.prototype.finish = function () { clearTimer(); r_update({ percent: 100, status: 'primary', show: true }); hide(); }; $LoadingBar.prototype.error = function () { clearTimer(); r_update({ percent: 100, status: 'error', show: true }); hide(); }; $LoadingBar.prototype.config = function (options) { if (options.color && utils.type.isStr(options.color)) { DEFAULT_LOADINGBAR.color = options.color; } if (options.height && utils.type.isNum(options.height)) { DEFAULT_LOADINGBAR.height = options.height; } if (options.duration && utils.type.isNum(options.duration)) { DEFAULT_LOADINGBAR.duration = options.duration; } if (options.failedColor && utils.type.isStr(options.failedColor)) { DEFAULT_LOADINGBAR.failedColor = options.failedColor; } }; $LoadingBar.prototype.destroy = function () { clearTimer(); // @ts-ignore document.body.removeChild((0,dom_utils.$el)("." + prefix.default.loadingBar)); }; return $LoadingBar; }()); /* harmony default export */ var loading_bar = ($LoadingBar); ;// CONCATENATED MODULE: ./src/components/loading-bar/index.ts var Loading = new loading_bar(); /* harmony default export */ var components_loading_bar = (Loading); ;// CONCATENATED MODULE: ./src/components/message/instance.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var PREFIX_KEY = 'rab-message-instance'; var EnterClass = prefix.default.message + "-move-enter"; var LeaveClass = prefix.default.message + "-move-leave"; var ICONTYPES = { info: 'ios-information-circle', success: 'ios-checkmark-circle', warning: 'ios-alert', error: 'ios-close-circle', loading: 'loading-solid' }; var zIndex = 1010; var instance_name = 0; var CreateInstance = /** @class */ (function () { function CreateInstance() { this.INSTANCES = []; } CreateInstance.prototype._init = function (top) { var Wrapper = (0,dom_utils.createElem)('div'); (0,dom_utils.setCss)(Wrapper, 'zIndex', "" + zIndex); Wrapper.setAttribute('class', "" + prefix.default.message); document.body.appendChild(Wrapper); setTimeout(function () { return (0,dom_utils.setCss)(Wrapper, 'top', top + "px"); }, 0); }; CreateInstance.prototype._create = function (type, config, duration) { var Message = this._setMainTemplate(type); var MessageContent = Message.querySelector("." + prefix.default.messageChild + "-content"); this._autoAddZIndex(); this._setIcon(type, Message); this._setContent(Message, config); if (typeof config === 'object') { var key = config.key, closable = config.closable, onClose = config.onClose, background = config.background; this._setKey(Message, key); this._setClosable(Message, MessageContent, closable, onClose); this._setBackground(Message, MessageContent, background); } this.INSTANCES.push(Message); (0,dom_utils.$el)("." + prefix.default.message).appendChild(Message); this._autoClose(Message, config, duration); }; CreateInstance.prototype._setMainTemplate = function (type) { var MessageNotice = (0,dom_utils.createElem)('div'); var template = "\n
\n
\n
\n \n \n
\n
\n
\n "; MessageNotice.dataset['thisName'] = "" + instance_name++; MessageNotice.className = prefix.default.message + "-notice"; (0,dom_utils.setHtml)(MessageNotice, template); (0,mixins.CssTransition)(MessageNotice, { inOrOut: 'in', enterCls: EnterClass, rmCls: true, timeout: 250 }); return MessageNotice; }; CreateInstance.prototype._setIcon = function (type, elem) { var MessageIcon = elem.querySelector("." + prefix.default.icon); if (type === 'loading') { MessageIcon.classList.add('rab-load-loop'); } MessageIcon.classList.add(prefix.default.icon + "-" + ICONTYPES[type]); }; CreateInstance.prototype._setContent = function (elem, content) { var MessageText = elem.querySelector("#" + prefix.default.messageChild + "-text"); if (typeof content === 'string') { (0,utils.useHTMLString)(MessageText, content, false); } else if (typeof content === 'object' && content.content) { (0,utils.useHTMLString)(MessageText, content.content, content.dangerouslyUseHTMLString); } }; CreateInstance.prototype._setKey = function (elem, key) { if (!key || (key && !utils.type.isStr(key) && !utils.type.isNum(key))) return; elem.setAttribute(PREFIX_KEY + "-key", "" + key); }; CreateInstance.prototype._setClosable = function (elem, child, closable, onClose) { if (!closable || (closable && !utils.type.isBol(closable))) return; var template = "\n \n \n \n "; elem.classList.add(prefix.default.messageChild + "-closable"); child.insertAdjacentHTML('beforeend', template); this._handleClose(elem, onClose); }; CreateInstance.prototype._handleClose = function (elem, onClose) { var _this = this; var MessageCloseBtn = elem.querySelector("." + prefix.default.messageChild + "-close"); (0,dom_utils.bind)(MessageCloseBtn, 'click', function () { _this._destroy(elem); onClose && utils.type.isFn(onClose); }); }; CreateInstance.prototype._setBackground = function (elem, child, background) { if (!background || (background && !utils.type.isBol(background))) return; elem.classList.add(prefix.default.messageChild + "-with-background"); child.classList.add(prefix.default.messageChild + "-content-background"); }; CreateInstance.prototype._autoAddZIndex = function () { zIndex++; (0,dom_utils.setCss)((0,dom_utils.$el)("." + prefix.default.message), 'zIndex', "" + zIndex); }; CreateInstance.prototype._autoClose = function (elem, config, duration) { var _this = this; if (duration || duration === 0 || !config) { if (duration === 0) return; setTimeout(function () { _this._destroy(elem); }, duration * 1000); } else { if (typeof config === 'object' && config.duration) { setTimeout(function () { _this._destroy(elem); }, config.duration * 1000); } } }; CreateInstance.prototype._destroy = function (elem) { (0,utils.destroyElem)(elem, { duration: 0.1, clsEnter: EnterClass, clsLeave: LeaveClass }); this.INSTANCES.splice(Number(elem.dataset['thisName']), 1); }; return CreateInstance; }()); ;// CONCATENATED MODULE: ./src/components/message/message.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var DEFAULTS = { top: 24, duration: 3 }; var Message = /** @class */ (function (_super) { __extends(Message, _super); function Message() { var _this = _super.call(this) || this; _this.VERSION = '2.0'; setTimeout(function () { return _this._init(DEFAULTS.top); }, 0); return _this; } Message.prototype.info = function (config) { this._create('info', config, DEFAULTS.duration); return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config); }; Message.prototype.success = function (config) { this._create('success', config, DEFAULTS.duration); return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config); }; Message.prototype.warning = function (config) { this._create('warning', config, DEFAULTS.duration); return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config); }; Message.prototype.error = function (config) { this._create('error', config, DEFAULTS.duration); return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config); }; Message.prototype.loading = function (config) { this._create('loading', config, DEFAULTS.duration); return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config); }; Message.prototype.config = function (options) { if (options.top && utils.type.isNum(options.top)) { DEFAULTS.top = options.top; } if ((options.duration && utils.type.isNum(options.duration)) || options.duration === 0) { DEFAULTS.duration = options.duration; } }; Message.prototype.destroy = function (key) { if (key && (utils.type.isStr(key) || utils.type.isNum(key))) { (0,utils.destroyElemByKey)({ key: key, duration: 0.1, prefixKey: PREFIX_KEY, clsLeave: LeaveClass }); } else { this.INSTANCES.forEach(function (instance) { (0,utils.destroyElem)(instance, { duration: 0.1, clsLeave: LeaveClass }); }); this.INSTANCES.length = 0; } }; return Message; }(CreateInstance)); /* harmony default export */ var message = (Message); ;// CONCATENATED MODULE: ./src/components/message/index.ts var message_Message = new message(); /* harmony default export */ var components_message = (message_Message); ;// CONCATENATED MODULE: ./src/components/modal/modal.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var RABBIT_BTN = new components_button(); var Modal = /** @class */ (function () { function Modal() { this.VERSION = 'v1.1'; this.COMPONENTS = (0,dom_utils.$el)('r-modal', { all: true }); this._create(this.COMPONENTS); } Modal.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'modal'); var _a = Modal.prototype, _attrs = _a._attrs, _getModalNode = _a._getModalNode, _handleVisable = _a._handleVisable; var loading = _attrs(target).loading; var M_Child = _getModalNode(target); return { get title() { return (0,dom_utils.setHtml)(M_Child.modalTitle); }, set title(newVal) { if (utils.type.isStr(newVal)) (0,dom_utils.setHtml)(M_Child.modalTitle, newVal); }, get visible() { return false; }, set visible(newVal) { if (utils.type.isBol(newVal)) { // 当设置modal为隐藏状态并且确定按钮是加载中的状态则初始化它 if (!newVal) { if (loading) RABBIT_BTN.config(M_Child.modalOkBtn).loading = newVal; } _handleVisable(newVal, target, [ M_Child.modalMask, M_Child.modalWrap, M_Child.modal ]); } }, events: function (_a) { var onOk = _a.onOk, onCancel = _a.onCancel; var _b = _attrs(target), closable = _b.closable, maskClosable = _b.maskClosable; var okEv = function () { // 是否设置按钮为加载中状态 if (loading) RABBIT_BTN.config(M_Child.modalOkBtn).loading = loading; onOk && utils.type.isFn(onOk); }; var cancelEv = function () { // 如果按钮为加载中状态则初始化其状态 if (loading) RABBIT_BTN.config(M_Child.modalOkBtn).loading = !loading; // 防止关闭modal后按键esc依然可以触发事件 window.onkeydown = function (e) { return (e.key === 'Escape' ? false : ''); }; onCancel && utils.type.isFn(onCancel); }; // 由于内部的_handleClose方法使用addEventListener为触发关闭模态框的元素绑定点击事件, // 从而与这里绑定的事件造成冲突,一个回调事件同时多次触发的问题 // 因此使用on事件绑定,防止触发回调事件的次数随着每次点击而不断的重复叠加 if (maskClosable === 'true') { // @ts-ignore M_Child.modalWrap.onclick = function () { return cancelEv(); }; // @ts-ignore M_Child.modal.onclick = function (e) { return e.stopPropagation(); }; } if (closable === 'true') { // @ts-ignore M_Child.modalClose.onclick = function () { return cancelEv(); }; window.onkeydown = function (e) { return (e.key === 'Escape' ? cancelEv() : ''); }; } // @ts-ignore M_Child.modalOkBtn.onclick = function () { return okEv(); }; // @ts-ignore M_Child.modalCancelBtn.onclick = function () { return cancelEv(); }; } }; }; Modal.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { _this._createTemplate(node); (0,dom_utils.setCss)(node, 'display', 'block'); (0,dom_utils.removeAttrs)(node, [ 'width', 'title', 'ok-text', 'class-name', 'cancel-text', 'mask', 'visible', 'scrollable', 'fullscreen', 'lock-scroll', 'footer-hide' ]); }); }; Modal.prototype._createTemplate = function (node) { // v1.1 增加占位节点的组成数量判断 if ((0,mixins.moreThanOneNode)(node)) return; // 获取最初 modal容器下的占位内容 var placeholderNode = node.firstElementChild; var _a = this._attrs(node), width = _a.width, title = _a.title, zIndex = _a.zIndex, okText = _a.okText, cancelText = _a.cancelText, className = _a.className; var template = "\n
\n
\n
\n
\n \n \n \n
\n
" + title + "
\n
\n
\n
\n \n \n
\n
\n
\n
\n "; (0,dom_utils.setHtml)(node, template); this._initVisable(node); this._setHeader(node); // @ts-ignore this._setContent(node, placeholderNode); this._setMask(node); this._setFullScreen(node); this._setClosable(node); this._setFooterHide(node); this._handleClose(node); }; Modal.prototype._initVisable = function (node) { var _a = this._attrs(node), visible = _a.visible, scrollable = _a.scrollable; var _b = this._getModalNode(node), modalMask = _b.modalMask, modalWrap = _b.modalWrap, modal = _b.modal; var lockScroll = this._attrs(node).lockScroll; !node.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll; if (visible) { (0,dom_utils.setCss)(modalMask, 'display', ''); modalWrap.classList.remove(prefix.default.modal + "-hidden"); (0,dom_utils.setCss)(modal, 'display', ''); (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll }); } else { (0,dom_utils.setCss)(modalMask, 'display', 'none'); modalWrap.classList.add(prefix.default.modal + "-hidden"); (0,dom_utils.setCss)(modal, 'display', 'none'); } // @ts-ignore // 设置初始显示状态 node.dataset.modalVisable = visible; }; Modal.prototype._setHeader = function (node) { var title = this._attrs(node).title; if (!title) { var modalHeader = node.querySelector("." + prefix.default.modal + "-header"); modalHeader === null || modalHeader === void 0 ? void 0 : modalHeader.remove(); } }; Modal.prototype._setContent = function (node, content) { var modalBody = node.querySelector("." + prefix.default.modal + "-body"); if (content) modalBody === null || modalBody === void 0 ? void 0 : modalBody.appendChild(content); }; Modal.prototype._setMask = function (node) { var _a = this, _attrs = _a._attrs, _getModalNode = _a._getModalNode; var mask = _attrs(node).mask; if (mask === 'false') { var _b = _getModalNode(node), modalMask = _b.modalMask, modalWrap = _b.modalWrap, modal = _b.modal; modalMask.remove(); modalWrap.classList.add(prefix.default.modal + "-no-mask"); modal.classList.add(prefix.default.modal + "-content-no-mask"); } }; Modal.prototype._setFullScreen = function (node) { var fullscreen = this._attrs(node).fullscreen; if (fullscreen) { var modal = this._getModalNode(node).modal; modal.classList.add(prefix.default.modal + "-fullscreen"); } }; Modal.prototype._setClosable = function (node) { var closable = this._attrs(node).closable; if (closable === 'false') { var modalClose = this._getModalNode(node).modalClose; modalClose.remove(); } }; Modal.prototype._setFooterHide = function (node) { var footerHide = this._attrs(node).footerHide; if (footerHide) { var modalFooter = node.querySelector("." + prefix.default.modal + "-footer"); modalFooter === null || modalFooter === void 0 ? void 0 : modalFooter.remove(); } }; Modal.prototype._handleVisable = function (visible, target, children) { var _a = Modal.prototype, _show = _a._show, _hide = _a._hide; visible ? _show(target, children) : _hide(target, children); }; Modal.prototype._handleClose = function (parent) { var _a = this, _attrs = _a._attrs, _hide = _a._hide, _getModalNode = _a._getModalNode; var _b = _attrs(parent), closable = _b.closable, maskClosable = _b.maskClosable, loading = _b.loading; var _c = _getModalNode(parent), modalMask = _c.modalMask, modalWrap = _c.modalWrap, modal = _c.modal, modalClose = _c.modalClose, modalOkBtn = _c.modalOkBtn, modalCancelBtn = _c.modalCancelBtn; var hidden = function () { return _hide(parent, [modalMask, modalWrap, modal]); }; // 右上角关闭按钮 // ESC 键关闭 if (closable === 'true') { (0,dom_utils.bind)(modalClose, 'click', function () { return hidden(); }); (0,dom_utils.bind)(window, 'keydown', function (e) { return (e.key === 'Escape' ? hidden() : ''); }); } // 遮盖层关闭 if (maskClosable === 'true') { (0,dom_utils.bind)(modalWrap, 'click', function () { return hidden(); }); (0,dom_utils.bind)(modal, 'click', function (e) { return e.stopPropagation(); }); } // 确定和取消按钮关闭 //非加载中状态可以点击关闭模态框 if (!loading) (0,dom_utils.bind)(modalOkBtn, 'click', function () { return hidden(); }); (0,dom_utils.bind)(modalCancelBtn, 'click', function () { return hidden(); }); }; Modal.prototype._show = function (parent, showElm) { var _attrs = Modal.prototype._attrs; var scrollable = _attrs(parent).scrollable; var lockScroll = _attrs(parent).lockScroll; !parent.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll; // @ts-ignore // 设置当前为显示状态 parent.dataset.modalVisable = 'true'; // showElm[0] 表示遮盖层 // showElm[1] 表示模态框的父容器wrap // showElm[2] 表示模态框主体 showElm[1].classList.contains(prefix.default.modal + "-hidden") && showElm[1].classList.remove(prefix.default.modal + "-hidden"); (0,mixins.CssTransition)(showElm[0], { inOrOut: 'in', enterCls: 'rab-fade-in', timeout: 250, rmCls: true }); (0,mixins.CssTransition)(showElm[2], { inOrOut: 'in', enterCls: 'zoom-big-enter', timeout: 250, rmCls: true }); (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll }); }; Modal.prototype._hide = function (parent, hiddenElm) { // @ts-ignore // 设置当前为隐藏状态 parent.dataset.modalVisable = 'false'; // hiddenElm[0] 表示遮盖层 // hiddenElm[1] 表示模态框的父容器wrap // hiddenElm[2] 表示模态框主体 (0,mixins.CssTransition)(hiddenElm[0], { inOrOut: 'out', leaveCls: 'rab-fade-out', rmCls: true, timeout: 250 }); (0,mixins.CssTransition)(hiddenElm[2], { inOrOut: 'out', leaveCls: 'zoom-big-leave', rmCls: true, timeout: 250 }); setTimeout(function () { hiddenElm[1].classList.add(prefix.default.modal + "-hidden"); (0,dom_utils.setCss)(hiddenElm[2], 'display', 'none'); (0,mixins.Scrollable)({ scroll: true, lock: true, node: parent, tagName: 'modal' }); }, 240); }; Modal.prototype._getModalNode = function (node) { var modalMask = node.querySelector("." + prefix.default.modal + "-mask"); var modalWrap = node.querySelector("." + prefix.default.modal + "-wrap"); var modal = modalWrap.querySelector("." + prefix.default.modal); var modalClose = modalWrap.querySelector("." + prefix.default.modal + "-close"); var modalTitle = modal.querySelector("." + prefix.default.modal + "-header-inner"); var modalOkBtn = modal.querySelector('#modalBtn2'); var modalCancelBtn = modal.querySelector('#modalBtn1'); return { modalMask: modalMask, modalWrap: modalWrap, modal: modal, modalClose: modalClose, modalTitle: modalTitle, modalOkBtn: modalOkBtn, modalCancelBtn: modalCancelBtn }; }; Modal.prototype._attrs = function (node) { return { mask: (0,dom_utils.getStrTypeAttr)(node, 'mask', 'true'), width: (0,dom_utils.getStrTypeAttr)(node, 'width', '520px'), title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), okText: (0,dom_utils.getStrTypeAttr)(node, 'ok-text', '确定'), closable: (0,dom_utils.getStrTypeAttr)(node, 'closable', 'true'), className: (0,dom_utils.getStrTypeAttr)(node, 'class-name', ''), cancelText: (0,dom_utils.getStrTypeAttr)(node, 'cancel-text', '取消'), maskClosable: (0,dom_utils.getStrTypeAttr)(node, 'mask-closable', 'true'), zIndex: (0,dom_utils.getNumTypeAttr)(node, 'z-index', 1000), visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'), loading: (0,dom_utils.getBooleanTypeAttr)(node, 'loading'), scrollable: (0,dom_utils.getBooleanTypeAttr)(node, 'scrollable'), lockScroll: (0,dom_utils.getBooleanTypeAttr)(node, 'lock-scroll'), fullscreen: (0,dom_utils.getBooleanTypeAttr)(node, 'fullscreen'), footerHide: (0,dom_utils.getBooleanTypeAttr)(node, 'footer-hide') }; }; return Modal; }()); /* harmony default export */ var modal = (Modal); ;// CONCATENATED MODULE: ./src/components/modal/index.ts /* harmony default export */ var components_modal = (modal); ;// CONCATENATED MODULE: ./src/components/mini-modal/mini-modal.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var MiniModalBtn = new components_button(); var ICONTYPE = { info: 'ios-information-circle', success: 'ios-checkmark-circle', warning: 'ios-alert', error: 'ios-close-circle', confirm: 'ios-help-circle', loading: 'loading-solid' }; var DEFAULT_ZINDEX = 1010; var MiniModal = /** @class */ (function () { function MiniModal() { this.VERSION = 'v1.0'; } MiniModal.prototype.info = function (config) { this._create('info', config); }; MiniModal.prototype.success = function (config) { this._create('success', config); }; MiniModal.prototype.warning = function (config) { this._create('warning', config); }; MiniModal.prototype.error = function (config) { this._create('error', config); }; MiniModal.prototype.confirm = function (config) { this._create('confirm', config); }; MiniModal.prototype.remove = function () { var _a = this._getNode(), ModalParent = _a.ModalParent, ModalMask = _a.ModalMask, ModalWrap = _a.ModalWrap; this._destroy(ModalParent, ModalMask, ModalWrap); }; MiniModal.prototype._create = function (type, config) { DEFAULT_ZINDEX++; var _a = config.width, width = _a === void 0 ? 416 : _a, _b = config.title, title = _b === void 0 ? '' : _b, _c = config.content, content = _c === void 0 ? '' : _c, _d = config.okText, okText = _d === void 0 ? '确定' : _d, _e = config.cancelText, cancelText = _e === void 0 ? '取消' : _e, _f = config.loading, loading = _f === void 0 ? false : _f, _g = config.keyboard, keyboard = _g === void 0 ? false : _g, _h = config.scrollable, scrollable = _h === void 0 ? false : _h, _j = config.lockScroll, lockScroll = _j === void 0 ? true : _j, onOk = config.onOk, onCancel = config.onCancel, _k = config.dangerouslyUseHTMLString, dangerouslyUseHTMLString = _k === void 0 ? false : _k; // @ts-ignore var icon = ICONTYPE[type]; var isShowCancelBtn = type === 'confirm' ? "" : ''; var template = "\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n " + isShowCancelBtn + "\n \n
\n
\n
\n
\n
\n
\n
"; document.body.insertAdjacentHTML('beforeend', template); var _l = this._getNode(), ModalParent = _l.ModalParent, ModalMask = _l.ModalMask, ModalWrap = _l.ModalWrap, Modal = _l.Modal; this._setMainContent(Modal, title, content, dangerouslyUseHTMLString); this._setAnimation('in', ModalMask, ModalWrap); this._setScrollable(scrollable, lockScroll); this._handleBtnClick(ModalParent, ModalMask, ModalWrap, Modal, loading, onOk, onCancel); this._keyboardClosed(type, keyboard, ModalParent, ModalMask, ModalWrap, onCancel); }; MiniModal.prototype._setMainContent = function (modal, title, content, isUseHTML) { var ModalHead = modal.querySelector("." + prefix.default.modal + "-confirm-head-title"); var ModalBody = modal.querySelector("." + prefix.default.modal + "-confirm-body"); (0,utils.useHTMLString)(ModalHead, title, isUseHTML); (0,utils.useHTMLString)(ModalBody, content, isUseHTML); }; MiniModal.prototype._handleBtnClick = function (parent, mask, wrap, modal, loading, onOk, onCancel) { var _this = this; var ModalOkBtn = modal.querySelector("." + prefix.default.button + "-primary"); var ModalCacnelBtn = modal.querySelector("." + prefix.default.button + "-text"); var remove = function () { return _this._destroy(parent, mask, wrap); }; var okEv = function () { onOk && utils.type.isFn(onOk); if (loading) { MiniModalBtn.config(ModalOkBtn).loading = loading; return; } remove(); }; var cancelEv = function () { remove(); onCancel && utils.type.isFn(onCancel); }; (0,dom_utils.bind)(ModalOkBtn, 'click', okEv); if (ModalCacnelBtn) (0,dom_utils.bind)(ModalCacnelBtn, 'click', cancelEv); }; MiniModal.prototype._keyboardClosed = function (_type, keyboard, parent, mask, wrap, onCancel) { var _this = this; if (!keyboard) return; var event = function (e) { if (e.key === 'Escape') { e.stopPropagation(); // 判断页面是否有modal实例,如果有才执行事件,避免重复执行 if (document.body.contains(parent)) { // 取消的回调,只在MinModal.confirm()下有效 if (_type === 'confirm') onCancel && utils.type.isFn(onCancel); setTimeout(function () { return _this._destroy(parent, mask, wrap); }, 0); } } }; window.onkeydown = function (e) { return event(e); }; }; MiniModal.prototype._destroy = function (parent, mask, wrap) { var _this = this; this._setAnimation('out', mask, wrap); setTimeout(function () { parent.remove(); _this._setScrollable(true, false); }, 150); }; MiniModal.prototype._setAnimation = function (type, elem1, elem2) { var maskAniCls = type === 'in' ? { enterCls: 'rab-fade-in' } : { leaveCls: 'rab-fade-out' }; var modalAniCls = type === 'in' ? { enterCls: 'zoom-big-enter' } : { leaveCls: 'zoom-big-leave' }; (0,mixins.CssTransition)(elem1, __assign(__assign({ inOrOut: type }, maskAniCls), { timeout: 250, rmCls: true })); (0,mixins.CssTransition)(elem2, __assign(__assign({ inOrOut: type }, modalAniCls), { timeout: 200, rmCls: true })); }; MiniModal.prototype._setScrollable = function (scrollable, lockScroll) { (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll }); }; MiniModal.prototype._getNode = function () { var ModalParent = (0,dom_utils.$el)("." + prefix.default.modal + "-mini-modal"); var ModalMask = ModalParent.querySelector("." + prefix.default.modal + "-mask"); var ModalWrap = ModalParent.querySelector("." + prefix.default.modal + "-wrap"); var Modal = ModalWrap.querySelector("." + prefix.default.modal); return { ModalParent: ModalParent, ModalMask: ModalMask, ModalWrap: ModalWrap, Modal: Modal }; }; return MiniModal; }()); /* harmony default export */ var mini_modal = (MiniModal); ;// CONCATENATED MODULE: ./src/components/mini-modal/index.ts /* harmony default export */ var components_mini_modal = (new mini_modal()); ;// CONCATENATED MODULE: ./src/components/notice/notice.ts var NotPrefixKey = 'rab-notice'; var NotMoveEnter = prefix.default.notice + "-move-enter"; var NotMoveLeave = prefix.default.notice + "-move-leave"; var iconTypes = { info: 'ios-information-circle', success: 'ios-checkmark-circle', warning: 'ios-alert', error: 'ios-close-circle', loading: 'loading-solid' }; var DEFAULT_NOTICE = { top: 24, duration: 4.5 }; var notice_zIndex = 1180; // 创建实例的最外层父容器 function createNoticeInsanceWrapper() { var NoticeWrapper = (0,dom_utils.createElem)('div'); NoticeWrapper.className = "" + prefix.default.notice; (0,dom_utils.setCss)(NoticeWrapper, 'zIndex', "" + notice_zIndex); (0,dom_utils.setCss)(NoticeWrapper, 'right', '0'); setTimeout(function () { return (0,dom_utils.setCss)(NoticeWrapper, 'top', DEFAULT_NOTICE.top + "px"); }, 0); document.body.appendChild(NoticeWrapper); return NoticeWrapper; } var $Notice = /** @class */ (function () { function $Notice() { this.VERSION = 'v1.0'; // 存储已经创建的实例,在 destroy方法里需要用到 this.instances = []; createNoticeInsanceWrapper(); } $Notice.prototype.open = function (config) { this._createInstance('normal', config); return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration); }; $Notice.prototype.info = function (config) { this._createInstance('info', config); return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration); }; $Notice.prototype.success = function (config) { this._createInstance('success', config); return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration); }; $Notice.prototype.warning = function (config) { this._createInstance('warning', config); return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration); }; $Notice.prototype.error = function (config) { this._createInstance('error', config); return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration); }; $Notice.prototype.config = function (options) { if (options.top) { DEFAULT_NOTICE.top = options.top; } if (options.duration || options.duration === 0) { DEFAULT_NOTICE.duration = options.duration; } }; $Notice.prototype.close = function (key) { (0,utils.destroyElemByKey)({ key: key, duration: 0.1, clsLeave: NotMoveLeave, prefixKey: NotPrefixKey }); }; $Notice.prototype.destroy = function () { this.instances.forEach(function (instance) { (0,utils.destroyElem)(instance, { clsLeave: NotMoveLeave, duration: 0.1 }); }); // 清空存放的所有实例 this.instances.length = 0; }; $Notice.prototype._autoSetZindex = function () { notice_zIndex++; (0,dom_utils.setCss)((0,dom_utils.$el)("." + prefix.default.notice), 'zIndex', "" + notice_zIndex); }; $Notice.prototype._createInstance = function (type, config) { var _a; this._autoSetZindex(); var Notice = (0,dom_utils.createElem)('div'); var NoticeContent = (0,dom_utils.createElem)('div'); var NoticeCustomContent = (0,dom_utils.createElem)('div'); var NoticeTitle = (0,dom_utils.createElem)('div'); var NoticeDesc = (0,dom_utils.createElem)('div'); this._setCls(type, [Notice, NoticeContent, NoticeCustomContent, NoticeTitle, NoticeDesc], config.className); this._setKey(Notice, config.key); this._setTitle(NoticeTitle, config.title, config.dangerouslyUseHTMLString); this._setDesc(Notice, NoticeCustomContent, NoticeDesc, config.desc, config.dangerouslyUseHTMLString); this._setIcon(type, NoticeCustomContent, NoticeDesc, config.icon); this._setClosable(Notice, config.closable, config.onClose); this._customStyle(Notice, config.style); NoticeCustomContent.append(NoticeTitle, NoticeDesc); NoticeContent.appendChild(NoticeCustomContent); Notice.appendChild(NoticeContent); (_a = document.querySelector("." + prefix.default.notice)) === null || _a === void 0 ? void 0 : _a.appendChild(Notice); (0,mixins.CssTransition)(Notice, { inOrOut: 'in', enterCls: NotMoveEnter }); this.instances.push(Notice); this._handleNoticeClick(Notice, config.onClick); this._autoClose(Notice, config.duration); return Notice; }; $Notice.prototype._setCls = function (type, nodes, customCls) { var nodesCls = [ prefix.default.noticeChild + " " + (customCls ? customCls : ''), prefix.default.noticeChild + "-content", prefix.default.noticeChild + "-custom-content " + prefix.default.notice + "-with-" + type, prefix.default.notice + "-title", prefix.default.notice + "-desc" ]; var i = 0; var length = nodes.length; for (; i < length; i++) { var node = nodes[i]; node.className = nodesCls[i]; } }; $Notice.prototype._setKey = function (node, key) { if (!key) return; node.setAttribute(NotPrefixKey + "-key", key); }; $Notice.prototype._setTitle = function (node, title, dangerouslyUseHTMLString) { // 必须设置一个通知提醒标题 if (!title) { (0,mixins.warn)('You must set a notification to remind the title'); return; } // 是否支持传入 HTML 片段 (0,utils.useHTMLString)(node, title, dangerouslyUseHTMLString); }; $Notice.prototype._setDesc = function (parent, children_custm, child_desc, desc, dangerouslyUseHTMLString) { if (!desc) return; parent.classList.add(prefix.default.noticeChild + "-with-desc"); children_custm.classList.add(prefix.default.notice + "-with-desc"); // 是否支持传入 HTML 片段 (0,utils.useHTMLString)(child_desc, desc, dangerouslyUseHTMLString); }; $Notice.prototype._setIcon = function (type, child_custom, child_desc, customIcon) { // 不带状态图标的类型 if (type === 'noraml') return; if (type !== 'normal' || customIcon) { child_custom.classList.add(prefix.default.notice + "-with-icon"); } var isOutline = ''; // 带有状态图标并且是否带有提示内容,如果有则将图标设为 outline 外观 if (child_desc.innerHTML) isOutline = '-outline'; var NoticeIcon = (0,dom_utils.createElem)('span'); NoticeIcon.className = prefix.default.notice + "-icon " + prefix.default.notice + "-icon-" + type; // 是否自定义状态图标 if (customIcon) { (0,dom_utils.setHtml)(NoticeIcon, customIcon); } else { // @ts-ignore var defaultIcon = ""; (0,dom_utils.setHtml)(NoticeIcon, defaultIcon); } child_custom.prepend(NoticeIcon); }; $Notice.prototype._setClosable = function (parent, closable, onClose) { // 默认显示右上角关闭按钮 utils.type.isUndef(closable) ? (closable = true) : closable; if (!closable) return; parent.classList.add(prefix.default.noticeChild + "-closable"); var NoticeClose = (0,dom_utils.createElem)('a'); var closeIcon = ""; NoticeClose.className = prefix.default.noticeChild + "-close"; (0,dom_utils.setHtml)(NoticeClose, closeIcon); this._handleClose(parent, NoticeClose, onClose); parent.appendChild(NoticeClose); }; // 自定义内联样式 $Notice.prototype._customStyle = function (node, style) { if (!style) return; (0,dom_utils.setCss)(node, 'cssText', style); }; // 点击通知时触发的回调函数 $Notice.prototype._handleNoticeClick = function (parent, onClick) { parent.onclick = function (e) { e.stopPropagation(); if (onClick) utils.type.isFn(onClick); }; }; $Notice.prototype._handleClose = function (parent, closeBtn, onClose) { closeBtn.onclick = function (e) { e.stopPropagation(); if (onClose) utils.type.isFn(onClose); (0,utils.destroyElem)(parent, { clsLeave: NotMoveLeave, duration: 0.1 }); }; }; $Notice.prototype._autoClose = function (instance, duration) { // 为每个实例自己的 duration参数设置默认值,如果有传入值则使用自定义的值 utils.type.isUndef(duration) ? (duration = DEFAULT_NOTICE.duration) : duration; (0,utils.destroyElem)(instance, { duration: duration, clsLeave: NotMoveLeave }); }; return $Notice; }()); /* harmony default export */ var notice = ($Notice); ;// CONCATENATED MODULE: ./src/components/notice/index.ts var Notice = new notice(); /* harmony default export */ var components_notice = (Notice); ;// CONCATENATED MODULE: ./src/components/page-header/page-header.ts var PageHeader = /** @class */ (function () { function PageHeader() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-page-header', { all: true }); this._create(this.COMPONENTS); } PageHeader.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'page-header'); var backButton = target.querySelector("." + prefix.default.pageHeader + "-back"); return { events: function (_a) { var onBack = _a.onBack; (0,dom_utils.bind)(backButton, 'click', function () { utils.type.isFn(onBack); }); } }; }; PageHeader.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), title = _a.title, subTitle = _a.subTitle; _this._setMainTemplate(node, title, subTitle); (0,dom_utils.removeAttrs)(node, ['title', 'sub-title']); }); }; PageHeader.prototype._setMainTemplate = function (node, title, subTitle) { var template = "\n
\n
\n \n
\n " + title + "\n " + subTitle + "\n
\n "; (0,dom_utils.setHtml)(node, template); }; PageHeader.prototype._attrs = function (node) { return { title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), subTitle: (0,dom_utils.getStrTypeAttr)(node, 'sub-title', '') }; }; return PageHeader; }()); /* harmony default export */ var page_header = (PageHeader); ;// CONCATENATED MODULE: ./src/components/page-header/index.ts /* harmony default export */ var components_page_header = (page_header); ;// CONCATENATED MODULE: ./src/components/poptip/poptip.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var poptip_STATEKEY = 'visibleState'; var poptip_DEFAULTDELAY = 80; var poptip_VISIBLETIMER = null, poptip_EVENTTIMER = null; var Poptip = /** @class */ (function () { function Poptip() { this.VERSION = 'v2.0'; this.COMPONENTS = (0,dom_utils.$el)('r-poptip', { all: true }); this._create(this.COMPONENTS); mixins._arrow.scrollUpdate(); } Poptip.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'poptip'); var _a = Poptip.prototype, _attrs = _a._attrs, _setVisible = _a._setVisible, _handleTrigger = _a._handleTrigger; var _b = _attrs(target), trigger = _b.trigger, title = _b.title, content = _b.content, disabled = _b.disabled, placement = _b.placement, offset = _b.offset, confirm = _b.confirm; var PoptipRefElem = target.querySelector("." + prefix.default.poptip + "-rel"); var PoptipPopper = target.querySelector("." + prefix.default.poptip + "-popper"); var PoptipTitle = target.querySelector("." + prefix.default.poptip + "-title"); var PoptipContent = target.querySelector("." + prefix.default.poptip + "-body-content"); return { get visible() { return PoptipPopper.dataset[poptip_STATEKEY] === 'show'; }, set visible(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _setVisible(newVal, PoptipRefElem, PoptipPopper, placement, offset); }, get disabled() { return disabled; }, set disabled(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _handleTrigger(trigger, confirm, newVal, target, PoptipRefElem, PoptipPopper, placement, offset); }, get title() { return title; }, set title(newVal) { if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(PoptipTitle, newVal); }, get content() { return content; }, set content(newVal) { if (newVal && !utils.type.isStr(newVal)) return; (0,dom_utils.setHtml)(PoptipContent, newVal); }, events: function (_a) { var onPopperShow = _a.onPopperShow, onPopperHide = _a.onPopperHide, onOk = _a.onOk, onCancel = _a.onCancel; var visibleEvent = function (show) { if (show) { onPopperShow && utils.type.isFn(onPopperShow); } else { onPopperHide && utils.type.isFn(onPopperHide); } }; var toogleEv = function () { setTimeout(function () { PoptipPopper.dataset[poptip_STATEKEY] === 'show' ? visibleEvent(true) : visibleEvent(false); }, 200); }; var clickoutsideEv = function () { if (PoptipPopper.style.visibility === 'visible') { setTimeout(function () { return visibleEvent(false); }, poptip_DEFAULTDELAY); } }; if (!confirm) { if (trigger === 'hover') { (0,dom_utils.bind)(target, 'mouseenter', function () { if (poptip_EVENTTIMER) clearTimeout(poptip_EVENTTIMER); poptip_EVENTTIMER = setTimeout(function () { return visibleEvent(true); }, poptip_DEFAULTDELAY); }); (0,dom_utils.bind)(target, 'mouseleave', function () { if (poptip_EVENTTIMER) clearTimeout(poptip_EVENTTIMER); if (PoptipPopper.dataset[poptip_STATEKEY] === 'show') setTimeout(function () { return visibleEvent(false); }, poptip_DEFAULTDELAY); }); } if (trigger === 'focus') { (0,dom_utils.bind)(PoptipRefElem, 'mousedown', function () { return visibleEvent(true); }); (0,dom_utils.bind)(PoptipRefElem, 'mouseup', function () { return visibleEvent(false); }); } } if (trigger === 'click' || trigger === 'focus') { (0,mixins.clickoutside)(target, clickoutsideEv); } if (trigger === 'click') { (0,dom_utils.bind)(PoptipRefElem, 'click', toogleEv); } if (confirm) { var PoptipOkBtn = PoptipPopper.querySelector("." + prefix.default.button + "-primary"); var PoptipCancelBtn = PoptipPopper.querySelector("." + prefix.default.button + "-text"); (0,dom_utils.bind)(PoptipOkBtn, 'click', function () { return onOk && utils.type.isFn(onOk); }); (0,dom_utils.bind)(PoptipCancelBtn, 'click', function () { return onCancel && utils.type.isFn(onCancel); }); } } }; }; Poptip.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var ReferenceElem = node.firstElementChild || node.innerHTML; var _a = _this._attrs(node), trigger = _a.trigger, title = _a.title, content = _a.content, placement = _a.placement, padding = _a.padding, offset = _a.offset, confirm = _a.confirm, visible = _a.visible, width = _a.width, wordWrap = _a.wordWrap, disabled = _a.disabled, okText = _a.okText, cancelText = _a.cancelText; _this.setMainTemplate(node, title, content, placement); var PoptipRel = node.querySelector("." + prefix.default.poptip + "-rel"); var PoptipPopper = node.querySelector("." + prefix.default.poptip + "-popper"); _this.addReferenceElem(PoptipRel, ReferenceElem); _this.setConfirmTemplate(confirm, node, title, okText, cancelText); _this._setPlacement(PoptipRel, PoptipPopper, placement, offset); _this._setVisible(visible, PoptipRel, PoptipPopper, placement, offset); _this._setPadding(node, padding); _this._setWidthAndWordWrap(PoptipPopper, width, wordWrap); _this._handleTrigger(trigger, confirm, disabled, node, PoptipRel, PoptipPopper, placement, offset); _this._handleBtnClick(PoptipRel, PoptipPopper, placement, offset); (0,dom_utils.removeAttrs)(node, [ 'width', 'title', 'offset', 'content', 'confirm', 'visible', 'padding', 'disabled', 'trigger', 'placement', 'word-wrap', 'ok-text', 'cancel-text' ]); }); }; Poptip.prototype.setMainTemplate = function (node, title, content, placement) { var template = "\n
\n
\n
\n
\n
\n " + (title ? "
" + title + "
" : '') + "\n
\n
" + content + "
\n
\n
\n
\n
\n "; (0,dom_utils.setHtml)(node, template); }; Poptip.prototype.addReferenceElem = function (child, ReferenceElem) { if (typeof ReferenceElem === 'string') { (0,dom_utils.setHtml)(child, ReferenceElem); } else if (ReferenceElem instanceof Element) { child.appendChild(ReferenceElem); } }; Poptip.prototype.setConfirmTemplate = function (confirm, node, title, okText, cancelText) { if (!confirm) return; var template = "\n \n
" + title + "
\n
\n \n \n
\n "; var PoptipBody = node.querySelector("." + prefix.default.poptip + "-body"); (0,dom_utils.setHtml)(PoptipBody, template); node.querySelector("." + prefix.default.poptip + "-title").remove(); node.classList.add(prefix.default.poptip + "-confirm"); }; Poptip.prototype._handleTrigger = function (type, confirm, disabled, node, refElem, popper, placement, offset) { var _this = this; if (disabled) return; var show = function (show, e) { if (e) e.stopPropagation(); _this._setVisible(show, refElem, popper, placement, offset); }; if (!confirm) { if (type === 'hover') { (0,dom_utils.bind)(node, 'mouseenter', function (e) { if (poptip_VISIBLETIMER) clearTimeout(poptip_VISIBLETIMER); if (popper.dataset[poptip_STATEKEY] === 'show') return; poptip_VISIBLETIMER = setTimeout(function () { return show(true, e); }, poptip_DEFAULTDELAY); }); (0,dom_utils.bind)(node, 'mouseleave', function (e) { if (poptip_VISIBLETIMER) clearTimeout(poptip_VISIBLETIMER); if (popper.dataset[poptip_STATEKEY] === 'show') setTimeout(function () { return show(false, e); }, poptip_DEFAULTDELAY); }); } if (type === 'focus') { (0,dom_utils.bind)(refElem, 'mousedown', function (e) { return show(true, e); }); (0,dom_utils.bind)(refElem, 'mouseup', function (e) { return show(false, e); }); } } if (type === 'click') { var hide = function () { if (popper.dataset[poptip_STATEKEY] === 'close') return; show(false); }; var clickEv_1 = function (e) { var poppers = document.querySelectorAll("." + prefix.default.poptip + "-popper"); poppers.forEach(function (child) { var otherPopper = child; if (otherPopper.dataset[poptip_STATEKEY] === 'show') { _this._setVisible(false, refElem, otherPopper, placement, offset); } }); popper.style.visibility === 'visible' ? show(false, e) : show(true, e); }; (0,mixins.clickoutside)(node, hide); (0,dom_utils.bind)(refElem, 'click', function (e) { return clickEv_1(e); }); } }; Poptip.prototype._handleBtnClick = function (refElem, popper, placement, offset) { var _this = this; var PoptipOkBtn = popper.querySelector("." + prefix.default.button + "-primary"); var PoptipCancelBtn = popper.querySelector("." + prefix.default.button + "-text"); if (!PoptipOkBtn) return; var hidden = function () { return _this._setVisible(false, refElem, popper, placement, offset); }; (0,dom_utils.bind)(PoptipOkBtn, 'click', hidden); (0,dom_utils.bind)(PoptipCancelBtn, 'click', hidden); }; Poptip.prototype._setVisible = function (visible, refElem, popper, placement, offset) { var _a = Poptip.prototype, _setPlacement = _a._setPlacement, _visibleTransition = _a._visibleTransition; if (visible) { popper.dataset[poptip_STATEKEY] = 'show'; _visibleTransition('in', popper); _setPlacement(refElem, popper, placement, offset); } else { popper.dataset[poptip_STATEKEY] = 'close'; setTimeout(function () { popper.dataset[poptip_STATEKEY] === 'close' && _visibleTransition('out', popper); }, 0); } }; Poptip.prototype._setPlacement = function (refElem, popper, placement, offset) { mixins._Popper._newCreatePopper(refElem, popper, placement, offset); }; Poptip.prototype._visibleTransition = function (type, popper) { var aniCls = type === 'in' ? { enterCls: 'zoom-big-fast-enter' } : { leaveCls: 'zoom-big-fast-leave' }; (0,mixins.CssTransition)(popper, __assign(__assign({ inOrOut: type }, aniCls), { rmCls: true, timeout: 190 })); }; Poptip.prototype._setWidthAndWordWrap = function (child, width, wordWrap) { (0,dom_utils.setCss)(child, 'width', width + "px"); if (!wordWrap) return; var PoptipBodyContent = child.querySelector("." + prefix.default.poptip + "-body-content"); PoptipBodyContent.classList.add(prefix.default.poptip + "-body-content-word-wrap"); }; Poptip.prototype._setPadding = function (node, padding) { if (!padding) return; (0,dom_utils.setCss)(node.querySelector("." + prefix.default.poptip + "-title"), 'padding', padding); (0,dom_utils.setCss)(node.querySelector("." + prefix.default.poptip + "-body"), 'padding', padding); }; Poptip.prototype._attrs = function (node) { return { width: (0,dom_utils.getNumTypeAttr)(node, 'width', -1), offset: (0,dom_utils.getNumTypeAttr)(node, 'offset', 0), title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), okText: (0,dom_utils.getStrTypeAttr)(node, 'ok-text', '确定'), content: (0,dom_utils.getStrTypeAttr)(node, 'content', ''), trigger: (0,dom_utils.getStrTypeAttr)(node, 'trigger', 'click'), padding: (0,dom_utils.getStrTypeAttr)(node, 'padding', ''), placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'top'), cancelText: (0,dom_utils.getStrTypeAttr)(node, 'cancel-text', '取消'), confirm: (0,dom_utils.getBooleanTypeAttr)(node, 'confirm'), visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'), disabled: (0,dom_utils.getBooleanTypeAttr)(node, 'disabled'), wordWrap: (0,dom_utils.getBooleanTypeAttr)(node, 'word-wrap') }; }; return Poptip; }()); /* harmony default export */ var poptip = (Poptip); ;// CONCATENATED MODULE: ./src/components/poptip/index.ts /* harmony default export */ var components_poptip = (poptip); ;// CONCATENATED MODULE: ./src/components/progress/progress.ts var PrgesIconType = { success: '', warning: '', wrong: '' }; var Progress = /** @class */ (function () { function Progress() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-progress', { all: true }); this._create(this.COMPONENTS); } Progress.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'progress'); var progress = target.querySelector("." + prefix.default.progress + "-bg"); var progressSucs = target.querySelector("." + prefix.default.progress + "-success-bg"); var progressText = target.querySelector("." + prefix.default.progress + "-inner-text"); return { get percent() { return progress; }, set percent(newVal) { if (!utils.type.isNum(newVal) || newVal == progress.style.width) return; if (progressText) (0,dom_utils.setHtml)(progressText, newVal + "%"); (0,dom_utils.setCss)(progress, 'width', newVal + "%"); }, get successPercent() { return progressSucs; }, set successPercent(newVal) { if (!utils.type.isNum(newVal) || newVal == progressSucs.style.width) return; (0,dom_utils.setCss)(progressSucs, 'width', newVal + "%"); } }; }; Progress.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { _this._createChildNodes(node); (0,dom_utils.removeAttrs)(node, [ 'percent', 'show-text', 'text-inside', 'stroke-width', 'stroke-color', 'success-percent' ]); }); }; Progress.prototype._createChildNodes = function (wrapper) { var PgrsOuter = (0,dom_utils.createElem)('div'); var PgrsInner = (0,dom_utils.createElem)('div'); var PgrsBar = (0,dom_utils.createElem)('div'); var PgrsBarSucess = (0,dom_utils.createElem)('div'); PgrsOuter.className = prefix.default.progress + "-outer"; PgrsInner.className = prefix.default.progress + "-inner"; PgrsBar.className = prefix.default.progress + "-bg"; PgrsBarSucess.className = prefix.default.progress + "-success-bg"; this._setPercent(wrapper, PgrsBar, PgrsBarSucess); this._setStrokeWidth(wrapper, PgrsBar, PgrsBarSucess); this._setStrokeColor(wrapper, PgrsBar); PgrsInner.append(PgrsBar, PgrsBarSucess); PgrsOuter.appendChild(PgrsInner); wrapper.appendChild(PgrsOuter); this._showText(wrapper, PgrsBar); }; Progress.prototype._setPercent = function (wrapper, bar, successBar) { var percent = this._getPercent(wrapper) + "%"; var successPercent = this._getSuccessPercent(wrapper) + "%"; (0,dom_utils.setCss)(bar, 'width', percent); (0,dom_utils.setCss)(successBar, 'width', successPercent); }; Progress.prototype._setStrokeWidth = function (wrapper, bar, successBar) { var strokeWidth = this._getStrokeWidth(wrapper) + "px"; (0,dom_utils.setCss)(bar, 'height', strokeWidth); (0,dom_utils.setCss)(successBar, 'height', strokeWidth); }; Progress.prototype._showText = function (wrapper, PgrsBar) { if (!this._isShowText(wrapper)) return; var PgrsTextWrapper = (0,dom_utils.createElem)('div'); var PgresText = (0,dom_utils.createElem)('span'); PgrsTextWrapper.className = prefix.default.progress + "-text"; PgresText.className = prefix.default.progress + "-inner-text"; var percentText = this._getPercent(wrapper) + "%"; (0,dom_utils.setText)(PgresText, percentText); if (!this._isTextInside(wrapper)) { wrapper.className = prefix.default.progress + "-show-info"; if (this._getStatus(wrapper) === 'success') { (0,dom_utils.setHtml)(PgresText, PrgesIconType.success); } else if (this._getStatus(wrapper) === 'warning') { (0,dom_utils.setHtml)(PgresText, PrgesIconType.warning); } else if (this._getStatus(wrapper) === 'wrong') { (0,dom_utils.setHtml)(PgresText, PrgesIconType.wrong); } PgrsTextWrapper.appendChild(PgresText); wrapper.appendChild(PgrsTextWrapper); } else { PgrsBar.appendChild(PgresText); } }; Progress.prototype._setStrokeColor = function (wrapper, PgrsBar) { var _a = this._getStrokeColor(wrapper), from = _a.from, to = _a.to; if (from.length || to.length) { var strokeColor = "linear-gradient(to right, " + from + " 0%, " + to + " 100%)"; (0,dom_utils.setCss)(PgrsBar, 'backgroundImage', strokeColor); } }; Progress.prototype._getStatus = function (node) { return node.getAttribute('status'); }; Progress.prototype._getPercent = function (node) { return node.getAttribute('percent') || '0'; }; Progress.prototype._getSuccessPercent = function (node) { return node.getAttribute('success-percent') || '0'; }; Progress.prototype._getStrokeWidth = function (node) { return node.getAttribute('stroke-width') || '10'; }; Progress.prototype._getStrokeColor = function (node) { var _a; if (!node.getAttribute('stroke-color')) { return { from: [], to: [] }; } else { /** * 转为真实数组 * "['','']" -> ['',''] */ var strArr = ((_a = node.getAttribute('stroke-color')) === null || _a === void 0 ? void 0 : _a.replace(/'/g, '"')) || ''; var colorArr = JSON.parse(strArr); return { from: colorArr[0], to: colorArr[1] }; } }; Progress.prototype._isTextInside = function (node) { return node.getAttribute('text-inside') === 'true'; }; Progress.prototype._isShowText = function (node) { if (node.getAttribute('show-text') === 'false') return false; else return true; }; return Progress; }()); /* harmony default export */ var progress = (Progress); ;// CONCATENATED MODULE: ./src/components/progress/index.ts /* harmony default export */ var components_progress = (progress); ;// CONCATENATED MODULE: ./src/components/radio/radio.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Radio = /** @class */ (function () { function Radio() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-radio', { all: true }); this._create(this.COMPONENTS); } Radio.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); var isGroup = target.tagName.toLowerCase() == 'r-radio-group'; // 排除 group 项 if (!isGroup) { (0,utils.validComps)(target, 'radio'); } else { (0,utils.validComps)(target, 'radio-group'); } var _a = Radio.prototype, _isChecked = _a._isChecked, _isDisabled = _a._isDisabled, _setSingleChecked = _a._setSingleChecked, _setCurrentlyChecked = _a._setCurrentlyChecked; return { get checked() { return !isGroup && _isChecked(target); }, set checked(newVal) { if (isGroup || !utils.type.isBol(newVal)) return; _setSingleChecked(target, newVal); }, get value() { // @ts-ignore return isGroup && target.getAttribute('value'); }, set value(newVal) { if (!isGroup && !utils.type.isStr(newVal)) return; Array.from(target.children).forEach(function (child) { var label = child.getAttribute('label'); _setCurrentlyChecked(child, newVal, label); }); }, events: function (_a) { var onChange = _a.onChange; if (!isGroup) { (0,dom_utils.bind)(target, 'click', function () { if (_isDisabled(target)) return false; onChange && utils.type.isFn(onChange, true); }); } else { var data_1 = Object.create(null); (0,dom_utils.bind)(target, 'click', function () { Array.from(target.children).forEach(function (child, index) { if (_isDisabled(child)) return false; data_1['index'] = index; data_1['label'] = child.getAttribute('label'); data_1['current'] = child; if (_isChecked(child)) onChange && utils.type.isFn(onChange, data_1); }); }); } } }; }; Radio.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), checked = _a.checked, label = _a.label, icon = _a.icon, name = _a.name; var content = (0,dom_utils.setHtml)(node); var RadioGroupWrapper = _this._getGroupElm(node); if (RadioGroupWrapper) { var value = _this._attrs(RadioGroupWrapper).value; _this._setCurrentlyChecked(node, value, label); } _this._setMainTemplate(node, content, name); _this._setSingleChecked(node, checked, RadioGroupWrapper); _this._setIcon(node, icon); _this._handleClick(node, RadioGroupWrapper); (0,dom_utils.removeAttrs)(node, ['checked', 'icon']); }); }; Radio.prototype._setMainTemplate = function (node, content, name) { var template = "\n \n \n \n " + content + "\n "; (0,dom_utils.setHtml)(node, template); }; // 设置单个radio选中 Radio.prototype._setSingleChecked = function (node, checked, groupWrapper) { if (groupWrapper) return; checked ? node.classList.add(prefix.default.radio + "-checked") : node.classList.remove(prefix.default.radio + "-checked"); }; // 设置radio组的当前选中项 Radio.prototype._setCurrentlyChecked = function (node, value, label) { if (value !== label) return; node.classList.add(prefix.default.radio + "-wrapper-checked"); node.classList.add(prefix.default.radio + "-checked"); (0,dom_utils.siblings)(node).forEach(function (o) { o.classList.remove(prefix.default.radio + "-wrapper-checked"); o.classList.remove(prefix.default.radio + "-checked"); }); }; Radio.prototype._setIcon = function (node, icon) { var _a; if (!icon) return; var template = ""; (_a = node.querySelector("." + prefix.default.radio)) === null || _a === void 0 ? void 0 : _a.insertAdjacentHTML('afterend', template); }; Radio.prototype._handleClick = function (node, groupWrapper) { var _this = this; if (this._isDisabled(node)) return; var changeStatus = function () { if (groupWrapper) { node.classList.add(prefix.default.radio + "-wrapper-checked"); (0,dom_utils.siblings)(node).forEach(function (o) { if (_this._isChecked(o)) { o.classList.remove(prefix.default.radio + "-checked"); o.classList.remove(prefix.default.radio + "-wrapper-checked"); o.classList.remove(prefix.default.radio + "-focus"); } }); } node.classList.add(prefix.default.radio + "-checked"); }; (0,dom_utils.bind)(node, 'click', function () { return changeStatus(); }); (0,dom_utils.bind)(node, 'mousedown', function () { node.classList.add(prefix.default.radio + "-focus"); }); (0,dom_utils.bind)(node, 'mouseup', function () { setTimeout(function () { return node.classList.remove(prefix.default.radio + "-focus"); }, 1000); }); }; Radio.prototype._getGroupElm = function (node) { var tag = node.parentElement; return (tag === null || tag === void 0 ? void 0 : tag.tagName.toLowerCase()) === 'r-radio-group' ? tag : null; }; Radio.prototype._isDisabled = function (node) { return node.getAttribute('disabled') == '' || node.getAttribute('disabled') == 'true'; }; Radio.prototype._isChecked = function (node) { return node.classList.contains(prefix.default.radio + "-checked"); }; Radio.prototype._attrs = function (node) { return { value: (0,dom_utils.getStrTypeAttr)(node, 'value', ''), name: (0,dom_utils.getStrTypeAttr)(node, 'name', ''), label: (0,dom_utils.getStrTypeAttr)(node, 'label', ''), icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), checked: (0,dom_utils.getBooleanTypeAttr)(node, 'checked') }; }; return Radio; }()); /* harmony default export */ var radio_radio = (Radio); ;// CONCATENATED MODULE: ./src/components/radio/index.ts /* harmony default export */ var components_radio = (radio_radio); ;// CONCATENATED MODULE: ./assets/result-403.svg /* harmony default export */ var result_403 = (".././fonts/result-403.svg"); ;// CONCATENATED MODULE: ./assets/result-404.svg /* harmony default export */ var result_404 = (".././fonts/result-404.svg"); ;// CONCATENATED MODULE: ./assets/result-500.svg /* harmony default export */ var result_500 = (".././fonts/result-500.svg"); ;// CONCATENATED MODULE: ./src/components/result/result.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Result = /** @class */ (function () { function Result() { this.VERSION = 'v1.1'; this.COMPONENTS = (0,dom_utils.$el)('r-result', { all: true }); this._create(this.COMPONENTS); } Result.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { // v1.1 增加占位节点的组成数量判断 if ((0,mixins.moreThanOneNode)(node)) return; var _a = _this._attrs(node), status = _a.status, title = _a.title, subTitle = _a.subTitle, icon = _a.icon, extra = _a.extra; var placeholderNode = node.firstElementChild; _this._setMainTemplate(node); _this._setStatus(node, status); _this._setTitle(node, title, subTitle); _this._setExtraContent(node, extra); _this._setComplexDesc(node, placeholderNode); _this._setCustomIcon(node, icon); (0,dom_utils.removeAttrs)(node, ['title', 'subtitle', 'status', 'icon', 'extra']); }); }; Result.prototype._setMainTemplate = function (node) { var template = "\n
\n \n
\n
\n
\n
\n
\n "; (0,dom_utils.setHtml)(node, template); }; Result.prototype._setStatus = function (node, status) { node.classList.add(prefix.default.result + "-" + status); var ResultIcon = node.querySelector("." + prefix.default.result + "-icon"); var I = ResultIcon.querySelector('i'); var iconType = this._getStatusIcon(status); var otherStatus = ['403', '404', '500']; if (otherStatus.includes(status)) { ResultIcon.classList.add(prefix.default.result + "-image"); ResultIcon.removeChild(I); (0,dom_utils.setHtml)(ResultIcon, "\"result\""); } else { I.classList.add(prefix.default.icon + "-" + iconType); } }; Result.prototype._setTitle = function (node, title, subTitle) { var ResultTitle = node.querySelector("." + prefix.default.result + "-title"); var ResultSubTitle = node.querySelector("." + prefix.default.result + "-subtitle"); (0,dom_utils.setHtml)(ResultTitle, title); (0,dom_utils.setHtml)(ResultSubTitle, subTitle); }; Result.prototype._setExtraContent = function (node, content) { var ResultExtra = node.querySelector("." + prefix.default.result + "-extra"); (0,dom_utils.setHtml)(ResultExtra, content); }; Result.prototype._setCustomIcon = function (node, icon) { if (!icon) return; var ResultIcon = node.querySelector("." + prefix.default.result + "-icon > i"); ResultIcon.className = prefix.default.icon + " " + prefix.default.icon + "-" + icon; }; Result.prototype._setComplexDesc = function (node, child) { var ResultContent = node.querySelector("." + prefix.default.result + "-content"); if (!child) { node.removeChild(ResultContent); return; } ResultContent === null || ResultContent === void 0 ? void 0 : ResultContent.appendChild(child); }; Result.prototype._getStatusIcon = function (status) { var icons = { info: 'ios-alert', success: 'ios-checkmark-circle', warning: 'ios-warning', error: 'ios-close-circle', '403': result_403, '404': result_404, '500': result_500 }; // @ts-ignore return icons[status] || icons.info; }; Result.prototype._attrs = function (node) { return { status: (0,dom_utils.getStrTypeAttr)(node, 'status', 'info'), icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), extra: (0,dom_utils.getStrTypeAttr)(node, 'extra', ''), subTitle: (0,dom_utils.getStrTypeAttr)(node, 'subtitle', '') }; }; return Result; }()); /* harmony default export */ var result = (Result); ;// CONCATENATED MODULE: ./src/components/result/index.ts /* harmony default export */ var components_result = (result); ;// CONCATENATED MODULE: ./src/components/skeleton/skeleton.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Skeleton = /** @class */ (function () { function Skeleton() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-skeleton', { all: true }); this._create(this.COMPONENTS); } Skeleton.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), active = _a.active, title = _a.title, paragraph = _a.paragraph, avatar = _a.avatar, titleWidth = _a.titleWidth, paragraphRows = _a.paragraphRows, paragraphWidth = _a.paragraphWidth, avatarSize = _a.avatarSize, avatarShape = _a.avatarShape; _this._setActive(node, active); _this._setMainTemplate(node); _this._setTitle(node, title, titleWidth); _this._showParagraph(node, paragraph, paragraphRows, paragraphWidth); _this._showAvatar(node, avatar, avatarSize, avatarShape); (0,dom_utils.removeAttrs)(node, [ 'active', 'title', 'paragraph', 'avatar', 'title-width', 'paragraph-width', 'paragraph-rows', 'avatar-shape', 'avatar-size' ]); }); }; Skeleton.prototype._setActive = function (node, active) { if (!active) return; node.classList.add(prefix.default.skeleton + "-active"); }; Skeleton.prototype._setMainTemplate = function (node) { var template = "\n
\n

\n \n
\n "; (0,dom_utils.setHtml)(node, template); }; Skeleton.prototype._setTitle = function (node, isShow, width) { var Title = node.querySelector("." + prefix.default.skeleton + "-title"); this._setTitleWidth(Title, width); if (isShow === 'false') { node.removeChild(Title); } }; Skeleton.prototype._setTitleWidth = function (titleElm, titleWidth) { (0,dom_utils.setCss)(titleElm, 'width', titleWidth + "%"); }; Skeleton.prototype._showParagraph = function (node, isShow, rows, rowsWidth) { var Paragraph = node.querySelector("." + prefix.default.skeleton + "-paragraph"); this._setParagraphRows(Paragraph, rows); this._setParagraphRowsWidth(Paragraph, rowsWidth); if (isShow === 'false') { node.removeChild(Paragraph); } }; Skeleton.prototype._setParagraphRows = function (pgELm, rows) { if (!rows) return; var Fragment = document.createDocumentFragment(); var i = 0; for (; i < rows; i++) { var Row = (0,dom_utils.createElem)('li'); Fragment.appendChild(Row); } (0,dom_utils.setHtml)(pgELm, ''); pgELm.appendChild(Fragment); }; Skeleton.prototype._setParagraphRowsWidth = function (pgELm, width) { if (typeof width === 'number') { (0,dom_utils.setCss)(pgELm.querySelector("." + prefix.default.skeleton + "-paragraph > li"), 'width', width + "%"); } if (Array.isArray(width) && width.length) { var Rows = pgELm.querySelectorAll("." + prefix.default.skeleton + "-paragraph > li"); var i = 0; for (; i < width.length; i++) { var rowWidth = width[i]; var Row = Rows[i]; Row ? (0,dom_utils.setCss)(Row, 'width', rowWidth + "%") : null; } } }; Skeleton.prototype._showAvatar = function (node, avatar, size, shape) { if (!avatar) return; var template = "\n
\n \n
\n "; node.insertAdjacentHTML('afterbegin', template); node.classList.add(prefix.default.skeleton + "-with-avatar"); (0,dom_utils.setCss)(node.querySelector("." + prefix.default.skeleton + "-title"), 'width', '50%'); }; Skeleton.prototype._attrs = function (node) { return { active: (0,dom_utils.getBooleanTypeAttr)(node, 'active'), avatar: (0,dom_utils.getBooleanTypeAttr)(node, 'avatar'), title: (0,dom_utils.getStrTypeAttr)(node, 'title', 'true'), paragraph: (0,dom_utils.getStrTypeAttr)(node, 'paragraph', 'true'), avatarSize: (0,dom_utils.getStrTypeAttr)(node, 'avatar-size', 'large'), avatarShape: (0,dom_utils.getStrTypeAttr)(node, 'avatar-shape', 'circle'), titleWidth: (0,dom_utils.getNumTypeAttr)(node, 'title-width'), paragraphWidth: (0,dom_utils.getNumTypeAttr)(node, 'paragraph-width', 0) || (0,dom_utils.getArrTypeAttr)(node, 'paragraph-width'), paragraphRows: (0,dom_utils.getNumTypeAttr)(node, 'paragraph-rows') }; }; return Skeleton; }()); /* harmony default export */ var skeleton = (Skeleton); ;// CONCATENATED MODULE: ./src/components/skeleton/index.ts /* harmony default export */ var components_skeleton = (skeleton); ;// CONCATENATED MODULE: ./src/components/spin/spin.ts var spinZIndex = 2010; var Spin = /** @class */ (function () { function Spin() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-spin', { all: true }); this._create(this.COMPONENTS); } Spin.prototype.show = function (_a) { var _b = _a === void 0 ? {} : _a, _c = _b.content, content = _c === void 0 ? '' : _c; (0,mixins.Scrollable)({ scroll: false, lock: false }); var template = "\n
\n \n " + this._createChildTemplate(content) + "\n \n
\n "; var fragment = document.createRange().createContextualFragment(template); document.body.appendChild(fragment); (0,mixins.CssTransition)((0,dom_utils.$el)("." + prefix.default.spin + "-fullscreen"), { inOrOut: 'in', enterCls: 'rab-fade-in' }); }; Spin.prototype.hide = function () { (0,mixins.Scrollable)({ scroll: true, lock: true }); var spinElem = (0,dom_utils.$el)("." + prefix.default.spin + "-fullscreen"); if (spinElem) (0,utils.destroyElem)(spinElem, { fadeOut: true }); }; Spin.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var customContent = (0,dom_utils.setHtml)(node); customContent ? node.classList.add(prefix.default.spin + "-show-text") : ''; (0,dom_utils.setHtml)(node, _this._createChildTemplate(customContent)); }); }; Spin.prototype._createChildTemplate = function (content) { var template = "\n
\n \n
" + content + "
\n
\n "; return template; }; return Spin; }()); /* harmony default export */ var spin = (Spin); ;// CONCATENATED MODULE: ./src/components/spin/index.ts /* harmony default export */ var components_spin = (spin); ;// CONCATENATED MODULE: ./src/components/steps/steps.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Steps = /** @class */ (function () { function Steps() { this.VERSION = '1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-steps', { all: true }); this._create(this.COMPONENTS); } Steps.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'steps'); var _a = Steps.prototype, _setCurrentStep = _a._setCurrentStep, _setStatus = _a._setStatus, _setStatusIcon = _a._setStatusIcon; var _current = target.dataset['current']; var StepsTitle = target.querySelector("." + prefix.default.steps + "-title"); var StepsContent = target.querySelector("." + prefix.default.steps + "-content"); var StepsStep = target.querySelectorAll('r-step'); var setTitleOrContent = function (elem, val) { if (val && !utils.type.isStr(val)) return; (0,dom_utils.setHtml)(elem, val); }; return { get current() { return Number(target.dataset['current']); }, set current(newVal) { if (!utils.type.isNum(newVal)) return; _setCurrentStep(target, newVal, target.dataset['status']); }, get title() { return (0,dom_utils.setHtml)(StepsTitle); }, set title(newVal) { setTitleOrContent(StepsTitle, newVal); }, get content() { return (0,dom_utils.setHtml)(StepsContent); }, set content(newVal) { setTitleOrContent(StepsContent, newVal); }, get status() { return target.dataset['status']; }, set status(newVal) { if (newVal && !utils.type.isStr(newVal)) return; var currentStep = target.querySelector("r-step[data-index=\"" + _current + "\"]"); _setStatus(target, currentStep, newVal); }, get itemStatus() { return []; }, set itemStatus(newVal) { if (newVal && !utils.type.isArr(newVal)) return; var changeStatus = function (elem, status) { elem.setAttribute('status', status); _setStatusIcon(status, elem); }; if (newVal.length == 1) { var step = StepsStep[0]; changeStatus(step, newVal[0]); return; } StepsStep.forEach(function (step, idx) { return newVal[idx] ? changeStatus(step, newVal[idx]) : ''; }); } }; }; Steps.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), current = _a.current, status = _a.status, direction = _a.direction; var StepsStepItem = node.querySelectorAll('r-step'); _this._setDirection(node, direction); _this._setStepChildren(StepsStepItem); _this._setCurrentStep(node, current, status); (0,dom_utils.removeAttrs)(node, ['current', 'status']); }); }; Steps.prototype._setDirection = function (node, direction) { node.setAttribute('direction', "" + direction); }; Steps.prototype._setStepChildren = function (stepItem) { var _this = this; stepItem.forEach(function (step, idx) { // @ts-ignore step.dataset['index'] = "" + idx; _this._setStatusFlag(step); var _a = _this._attrs(step), icon = _a.icon, title = _a.title, content = _a.content; var stepsText = idx + 1; var template = "\n
\n
\n
\n \n " + stepsText + "\n
\n
\n
\n
" + title + "
\n
" + content + "
\n
\n "; (0,dom_utils.setHtml)(step, template); _this._setCustomIcon(step, icon); (0,dom_utils.removeAttrs)(step, ['title', 'content', 'icon']); }); }; Steps.prototype._setStatusFlag = function (step) { var status = step.getAttribute('status'); // 如果用户在步骤项设置了status则为该项打上标记,避免被自动设置的默认状态覆盖 if (status) { // @ts-ignore step.dataset['specifiesStatus'] = status; } }; Steps.prototype._setCurrentStep = function (node, current, status) { var len = node.childElementCount - 1; // 防止溢出边界 if (current > len) { (0,mixins.warn)("The currently active step item you set does not exist in the . --> \"" + current + "\""); console.error(node); current = len; } // @ts-ignore node.dataset['current'] = current; var _setStatus = Steps.prototype._setStatus; var currentStep = node.querySelector("r-step[data-index=\"" + current + "\"]"); _setStatus(node, currentStep, status); }; Steps.prototype._setStatus = function (node, currentStep, status) { // @ts-ignore node.dataset['status'] = status; var _a = Steps.prototype, _setStatusIcon = _a._setStatusIcon, _setPrevAndNextStatus = _a._setPrevAndNextStatus, _setNextError = _a._setNextError; // @ts-ignore var isAutoStatus = currentStep.dataset['autoStatus']; var selfStatus = currentStep.getAttribute('status'); // 1.如果步骤项设置了status则优先使用该状态,不包括打上autoStatus的标记项。 // 2.如果步骤项父容器指定了某项步骤项为活跃状态,并且指定了 status 则使用该状态。 if (selfStatus && isAutoStatus !== '') { currentStep.setAttribute('status', selfStatus); _setStatusIcon(selfStatus, currentStep); } else { currentStep.setAttribute('status', status); _setStatusIcon(status, currentStep); } _setPrevAndNextStatus('prev', currentStep, _setStatusIcon); _setPrevAndNextStatus('next', currentStep, _setStatusIcon); _setNextError(node); }; Steps.prototype._setPrevAndNextStatus = function (type, currentStep, setStatusIcon) { // @ts-ignore var func = type === 'prev' ? dom_utils.prevAll : dom_utils.nextAll; var defaultStatus = type === 'prev' ? 'finish' : 'wait'; func(currentStep).forEach(function (step) { // @ts-ignore var hasSetStatus = step.dataset['specifiesStatus']; // 当前步骤项位置的其他节点如果没有提示设置status,则默认设置为 finish / wait,并打上标记 // 如果其中有某个设置了则略过 if (!hasSetStatus) { // @ts-ignore step.dataset['autoStatus'] = ''; step.setAttribute('status', defaultStatus); setStatusIcon(defaultStatus, step); } else { setStatusIcon(hasSetStatus, step); } }); }; Steps.prototype._setStatusIcon = function (status, step) { // @ts-ignore var isUseCustomIcon = step.dataset['useIcon'] === 'true'; // 如果使用了自定义图标则略过 if (isUseCustomIcon) return; var StepsIcon = step.querySelector('#stepsIcon'); var StepsText = StepsIcon.nextElementSibling; // 步骤项状态不为finish或error则显示步骤数字、隐藏图标容器,反之。 if (status !== 'finish' && status !== 'error') { (0,dom_utils.setCss)(StepsIcon, 'display', 'none'); (0,dom_utils.setCss)(StepsText, 'display', ''); return; } (0,dom_utils.setCss)(StepsIcon, 'display', ''); (0,dom_utils.setCss)(StepsText, 'display', 'none'); var iconType = ''; if (status === 'finish') { iconType = 'ios-checkmark'; } if (status === 'error') { iconType = 'ios-close'; } StepsIcon.className = prefix.default.steps + "-icon " + prefix.default.icon + " " + prefix.default.icon + "-" + iconType; }; Steps.prototype._setCustomIcon = function (step, icon) { if (!icon) return; // @ts-ignore step.dataset['useIcon'] = 'true'; step.classList.add(prefix.default.steps + "-custom"); var StepsIcon = step.querySelector('#stepsIcon'); StepsIcon.classList.add("" + prefix.default.icon); StepsIcon.classList.add(prefix.default.icon + "-" + icon); (0,dom_utils.setCss)(StepsIcon.nextElementSibling, 'display', 'none'); }; Steps.prototype._setNextError = function (node) { var StepsStep = node.querySelectorAll('r-step'); StepsStep.forEach(function (step, idx) { if (step.getAttribute('status') === 'error' && idx !== 0) { var prevStep = StepsStep[idx - 1]; if (prevStep.getAttribute('status') === 'error') { prevStep.classList.add(prefix.default.steps + "-next-error"); } else { prevStep.classList.remove(prefix.default.steps + "-next-error"); } } }); }; Steps.prototype._attrs = function (node) { return { current: (0,dom_utils.getNumTypeAttr)(node, 'current', 0), icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''), title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''), status: (0,dom_utils.getStrTypeAttr)(node, 'status', 'process'), content: (0,dom_utils.getStrTypeAttr)(node, 'content', ''), direction: (0,dom_utils.getStrTypeAttr)(node, 'direction', 'horizontal') }; }; return Steps; }()); /* harmony default export */ var steps = (Steps); ;// CONCATENATED MODULE: ./src/components/steps/index.ts /* harmony default export */ var components_steps = (steps); ;// CONCATENATED MODULE: ./src/components/switch/switch.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Switch = /** @class */ (function () { function Switch() { this.VERSION = '1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-switch', { all: true }); this._create(this.COMPONENTS); } Switch.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'switch'); var Input = target.querySelector('input[type="hidden"]'); var isChecked = Input.value === 'true'; var isDisabled = target.classList.contains(prefix.default.switch + "-disabled"); var isLoading = target.classList.contains(prefix.default.switch + "-loading"); var changeState = function (flag, state, cls) { if (flag && !utils.type.isBol(flag)) return; if (flag && state) return; else target.classList.add(prefix.default.switch + "-" + cls); if (flag == false) target.classList.remove(prefix.default.switch + "-" + cls); }; return { get checked() { return isChecked; }, set checked(newVal) { changeState(newVal, isChecked, 'checked'); }, get disabled() { return isDisabled; }, set disabled(newVal) { changeState(newVal, isDisabled, 'disabled'); }, get loading() { return isLoading; }, set loading(newVal) { changeState(newVal, isLoading, 'loading'); }, events: function (_a) { var onChange = _a.onChange; var checked; var handler = function () { checked = JSON.parse(Input.value); onChange && utils.type.isFn(onChange, checked); }; (0,dom_utils.bind)(target, 'click', handler); } }; }; Switch.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { node.setAttribute('tabindex', '0'); var _a = _this._attrs(node), checked = _a.checked, loading = _a.loading, disabled = _a.disabled, size = _a.size, open = _a.open, close = _a.close, trueColor = _a.trueColor, falseColor = _a.falseColor; _this._setSize(node, size); _this._setMainTemplate(node); _this._setDisabled(node, disabled); _this._setLoading(node, loading); _this._setStatusBgc(node, checked, trueColor, falseColor); var SwitchInner = node.querySelector("." + prefix.default.switch + "-inner"); var HiddenInput = node.querySelector('input[type="hidden"]'); _this._setChecked(node, HiddenInput, checked); _this._setStatusText(SwitchInner, checked, open, close); _this._handleChange(node, HiddenInput, SwitchInner, { open: open, close: close, trueColor: trueColor, falseColor: falseColor }); (0,dom_utils.removeAttrs)(node, [ 'checked', 'loading', 'disabled', 'size', 'open', 'close', 'true-color', 'false-color' ]); }); }; Switch.prototype._setDisabled = function (node, disabled) { if (!disabled) return; node.classList.add(prefix.default.switch + "-disabled"); }; Switch.prototype._setLoading = function (node, loading) { if (!loading) return; node.classList.add(prefix.default.switch + "-loading"); }; Switch.prototype._setSize = function (node, size) { if (!size || size === 'default') return; node.classList.add(prefix.default.switch + "-" + size); }; Switch.prototype._setMainTemplate = function (node) { var template = "\n \n \n "; (0,dom_utils.setHtml)(node, template); }; Switch.prototype._handleChange = function (node, input, textContainer, options) { var _this = this; var handler = function () { var isLoading = node.classList.contains(prefix.default.switch + "-loading"); var isDisabled = node.classList.contains(prefix.default.switch + "-disabled"); if (isDisabled || isLoading) return false; var isChecked = node.classList.contains(prefix.default.switch + "-checked"); var flag = false; if (isChecked) { node.classList.remove(prefix.default.switch + "-checked"); } else { flag = !flag; node.classList.add(prefix.default.switch + "-checked"); } _this._setChecked(node, input, flag); _this._setStatusBgc(node, flag, options.trueColor, options.falseColor); _this._setStatusText(textContainer, flag, options.open, options.close); }; (0,dom_utils.bind)(node, 'click', handler); }; Switch.prototype._setChecked = function (node, input, checked) { if (checked) { node.classList.add(prefix.default.switch + "-checked"); } input.value = "" + checked; }; Switch.prototype._setStatusText = function (elem, checked, open, close) { var changeText = function (text, flag) { if (text) { if (flag) { (0,dom_utils.setHtml)(elem, text); } else { (0,dom_utils.setHtml)(elem, text); } } }; changeText(open, checked); changeText(close, !checked); checked ? (0,dom_utils.setHtml)(elem, open) : (0,dom_utils.setHtml)(elem, close); }; Switch.prototype._setStatusBgc = function (node, checked, trueColor, falseColor) { if (trueColor) { if (checked) { (0,dom_utils.setCss)(node, 'backgroundColor', trueColor); (0,dom_utils.setCss)(node, 'borderColor', trueColor); } } if (falseColor) { if (!checked) { (0,dom_utils.setCss)(node, 'backgroundColor', falseColor); (0,dom_utils.setCss)(node, 'borderColor', falseColor); } } }; Switch.prototype._attrs = function (node) { return { checked: (0,dom_utils.getBooleanTypeAttr)(node, 'checked'), loading: (0,dom_utils.getBooleanTypeAttr)(node, 'loading'), disabled: (0,dom_utils.getBooleanTypeAttr)(node, 'disabled'), size: (0,dom_utils.getStrTypeAttr)(node, 'size', 'default'), open: (0,dom_utils.getStrTypeAttr)(node, 'open', ''), close: (0,dom_utils.getStrTypeAttr)(node, 'close', ''), trueColor: (0,dom_utils.getStrTypeAttr)(node, 'true-color', ''), falseColor: (0,dom_utils.getStrTypeAttr)(node, 'false-color', '') }; }; return Switch; }()); /* harmony default export */ var switch_switch = (Switch); ;// CONCATENATED MODULE: ./src/components/switch/index.ts /* harmony default export */ var components_switch = (switch_switch); ;// CONCATENATED MODULE: ./src/components/tabs/tabs.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var Tabs = /** @class */ (function () { function Tabs() { this.VERSION = '1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-tabs', { all: true }); this._create(this.COMPONENTS); } Tabs.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'tabs'); var TabTabs = target.querySelectorAll("." + prefix.default.tabs + "-tab"); var TabPanes = target.querySelectorAll('r-tab-pane'); var _a = Tabs.prototype, _attrs = _a._attrs, _changeTab = _a._changeTab, _changePane = _a._changePane; var activeIndex = _attrs(target).activeIndex; return { get activeIndex() { return activeIndex; }, set activeIndex(newVal) { if (!utils.type.isStr(newVal)) return; TabPanes.forEach(function (pane, i) { var p = pane; if (newVal !== p.dataset.paneKey) return; _changeTab(TabTabs[i], true); _changePane([false, p.parentElement, i, 'true', p]); }); }, events: function (_a) { var onClick = _a.onClick, onTabRemove = _a.onTabRemove; TabTabs.forEach(function (tab, i) { var tabClose = tab.querySelector("." + prefix.default.tabs + "-close"); var clickEv = function () { var TabPane = TabPanes[i]; var key = TabPane.dataset.paneKey; onClick && utils.type.isFn(onClick, key); if (!tabClose) return; onTabRemove && utils.type.isFn(onTabRemove, key); }; (0,dom_utils.bind)(tab, 'click', clickEv); if (!tabClose) return; (0,dom_utils.bind)(tabClose, 'click', clickEv); }); } }; }; Tabs.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var tabPanes = node.querySelectorAll('r-tab-pane'); var _a = _this._attrs(node), activeIndex = _a.activeIndex, size = _a.size, type = _a.type, closable = _a.closable, animated = _a.animated; _this._setType(node, type); _this._setSize(node, type, size); _this._setNoAnimation(node, animated); _this._setBodyTemplate(node); _this._setTabPane([node, tabPanes, activeIndex, type, animated, closable]); (0,dom_utils.removeAttrs)(node, ['active-index', 'type', 'size', 'closable', 'animated']); }); }; Tabs.prototype._setType = function (node, type) { if (type !== 'card') return; node.classList.add(prefix.default.tabs + "-" + type); }; Tabs.prototype._setSize = function (node, type, size) { if (type !== 'line' || size !== 'small') return; node.classList.add(prefix.default.tabs + "-mini"); }; Tabs.prototype._setNoAnimation = function (node, animated) { if (animated === 'true') return; node.classList.add(prefix.default.tabs + "-no-animation"); }; Tabs.prototype._setBodyTemplate = function (node) { var template = "\n
\n
\n
\n
\n
\n
\n
\n
"; (0,dom_utils.setHtml)(node, template); }; Tabs.prototype._setTabPane = function (args) { var _this = this; var _a = __read(args, 6), node = _a[0], panes = _a[1], activekey = _a[2], type = _a[3], animated = _a[4], closable = _a[5]; var TabNav = node.querySelector("." + prefix.default.tabs + "-nav"); var TabPaneContainer = node.querySelector("." + prefix.default.tabs + "-content"); var Fragment = document.createDocumentFragment(); panes.forEach(function (pane, idx) { var _a = _this._paneAttrs(pane), key = _a.index, tab = _a.tab, icon = _a.icon, separateClose = _a.closable, disabled = _a.disabled; var TabsTab = _this._setTab(TabNav, tab); _this._setTabIcon(TabsTab, icon); _this._setTabClosable([TabsTab, type, closable, separateClose]); _this._setTabDisabled(TabsTab, disabled); (0,dom_utils.setCss)(pane, 'display', "" + (animated === 'true' ? 'block' : 'none')); _this._setPaneKey(pane, key, idx); _this._setActive([closable, TabPaneContainer, TabsTab, pane, activekey, idx, animated]); _this._handleToggle([closable, TabsTab, pane, idx, disabled, animated]); _this._handleRemove(TabsTab, pane); Fragment.appendChild(pane); (0,dom_utils.removeAttrs)(pane, ['index', 'tab', 'icon', 'disabled', 'closable']); }); TabPaneContainer === null || TabPaneContainer === void 0 ? void 0 : TabPaneContainer.appendChild(Fragment); }; Tabs.prototype._setTab = function (tabsNav, content) { var TabsTab = (0,dom_utils.createElem)('div'); TabsTab.className = prefix.default.tabs + "-tab"; (0,dom_utils.setHtml)(TabsTab, content); tabsNav.appendChild(TabsTab); return TabsTab; }; Tabs.prototype._setTabIcon = function (tabElm, icon) { if (!icon) return; var Icon = (0,dom_utils.createElem)('i'); Icon.className = prefix.default.icon + " " + prefix.default.icon + "-" + icon; tabElm.prepend(Icon); }; Tabs.prototype._setTabClosable = function (args) { var _a = __read(args, 4), tabElm = _a[0], type = _a[1], closable = _a[2], separateClose = _a[3]; if (!closable || type !== 'card') return; var CloseIcon = (0,dom_utils.createElem)('icon'); CloseIcon.className = prefix.default.icon + " " + prefix.default.icon + "-ios-close " + prefix.default.tabs + "-close"; // 单独设置当前选项是否可以关闭页签 if (separateClose === 'false') return; tabElm.appendChild(CloseIcon); }; Tabs.prototype._setTabDisabled = function (tabsTab, disabled) { if (!disabled) return; tabsTab.classList.add(prefix.default.tabs + "-tab-disabled"); }; Tabs.prototype._setPaneKey = function (pane, key, idx) { // 当前面板的 key 如果不填则默认为其索引值 // @ts-ignore pane.dataset.paneKey = !key ? idx : key; }; Tabs.prototype._setActive = function (args) { var _a = __read(args, 7), closable = _a[0], paneContainer = _a[1], tabsTab = _a[2], pane = _a[3], activekey = _a[4], idx = _a[5], animated = _a[6]; // @ts-ignore var isEqual = activekey === pane.dataset.paneKey; if (isEqual) { this._changeTab(tabsTab); this._changePane([closable, paneContainer, idx]); } (0,dom_utils.setCss)(pane, 'visibility', "" + (isEqual ? 'visible' : 'hidden')); if (animated === 'false') { (0,dom_utils.setCss)(pane, 'display', "" + (isEqual ? 'block' : 'none')); } }; Tabs.prototype._handleToggle = function (args) { var _this = this; var _a = __read(args, 6), closable = _a[0], tabsTab = _a[1], pane = _a[2], idx = _a[3], disabled = _a[4], animated = _a[5]; (0,dom_utils.bind)(tabsTab, 'click', function () { if (disabled) return false; _this._changeTab(tabsTab); _this._changePane([closable, pane.parentElement, idx, animated, pane]); }); }; Tabs.prototype._handleRemove = function (tabsTab, pane) { var _this = this; var TabClose = tabsTab.querySelector("." + prefix.default.tabs + "-close"); if (!TabClose) return; /** * @param elm1 tabs的选项 * @param elm2 tabs的面板 */ var changeActive = function (elm1, elm2) { if (tabsTab.classList.contains(prefix.default.tabs + "-tab-active")) { _this._changeTab(elm1, false); } (0,dom_utils.setCss)(elm2, 'display', 'block'); (0,dom_utils.setCss)(elm2, 'visibility', 'visible'); }; var removeEv = function () { var prevTab = tabsTab.previousElementSibling; var nextTab = tabsTab.nextElementSibling; var prevPane = pane.previousElementSibling; var nextPane = pane.nextElementSibling; if (nextTab && nextPane) { changeActive(nextTab, nextPane); } else if (prevTab && prevPane) { changeActive(prevTab, prevPane); } tabsTab.remove(); pane.remove(); }; (0,dom_utils.bind)(TabClose, 'click', function (e) { e.stopPropagation(); removeEv(); }); }; Tabs.prototype._changeTab = function (tabsTab, siblingsChange) { if (siblingsChange === void 0) { siblingsChange = true; } tabsTab.classList.add(prefix.default.tabs + "-tab-active"); tabsTab.classList.add(prefix.default.tabs + "-tab-focused"); if (!siblingsChange) return; (0,dom_utils.siblings)(tabsTab).forEach(function (o) { o.classList.remove(prefix.default.tabs + "-tab-active"); o.classList.remove(prefix.default.tabs + "-tab-focused"); }); }; Tabs.prototype._changePane = function (args) { var _a = __read(args, 5), closable = _a[0], paneContainer = _a[1], idx = _a[2], animated = _a[3], pane = _a[4]; // 如果选项卡启用了可关闭功能,则不使用动画切换,这为了减少 tab 删除操作的工作量 if (!closable) { var translateX = idx * 100; (0,dom_utils.setCss)(paneContainer, 'transform', "translateX(-" + translateX + "%)"); } // 是否要一并更改面板项 if (!pane) return; (0,dom_utils.setCss)(pane, 'display', 'block'); (0,dom_utils.setCss)(pane, 'visibility', 'visible'); (0,dom_utils.siblings)(pane).forEach(function (o) { if (animated === 'false' || closable) (0,dom_utils.setCss)(o, 'display', 'none'); (0,dom_utils.setCss)(o, 'visibility', 'hidden'); }); }; Tabs.prototype._attrs = function (node) { return { activeIndex: (0,dom_utils.getStrTypeAttr)(node, 'active-index', '0'), type: (0,dom_utils.getStrTypeAttr)(node, 'type', 'line'), size: (0,dom_utils.getStrTypeAttr)(node, 'size', 'default'), animated: (0,dom_utils.getStrTypeAttr)(node, 'animated', 'true'), closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable') }; }; Tabs.prototype._paneAttrs = function (pane) { return { tab: (0,dom_utils.getStrTypeAttr)(pane, 'tab', ''), index: (0,dom_utils.getStrTypeAttr)(pane, 'index', ''), icon: (0,dom_utils.getStrTypeAttr)(pane, 'icon', ''), closable: (0,dom_utils.getStrTypeAttr)(pane, 'closable', 'true'), disabled: (0,dom_utils.getBooleanTypeAttr)(pane, 'disabled') }; }; return Tabs; }()); /* harmony default export */ var tabs = (Tabs); ;// CONCATENATED MODULE: ./src/components/tabs/index.ts /* harmony default export */ var components_tabs = (tabs); // EXTERNAL MODULE: ./src/utils/check-type.ts var check_type = __webpack_require__("./src/utils/check-type.ts"); ;// CONCATENATED MODULE: ./src/components/tag/tag.ts var Tag = /** @class */ (function () { function Tag() { this.VERSION = '1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-tag', { all: true }); this._create(this.COMPONENTS); } Tag.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'tag'); var CloseIcon = target.querySelector("." + prefix.default.icon + "-ios-close"); var $this = target; var checked; return { events: function (_a) { var onClose = _a.onClose, onChange = _a.onChange; (0,dom_utils.bind)(target, 'click', function () { checked = target.dataset.checked === 'true' ? true : false; onChange && (0,check_type.isFn)(onChange, checked); }); if (!CloseIcon) return; (0,dom_utils.bind)(CloseIcon, 'click', function (e) { e.stopPropagation(); onClose && (0,check_type.isFn)(onClose, $this); }); } }; }; Tag.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), type = _a.type, size = _a.size, color = _a.color, checked = _a.checked, checkable = _a.checkable, closable = _a.closable; _this._setMainTemplate(node); _this._setType(node, type); _this._setIsChecked(node, checked); _this._setSize(node, size); _this._setColor(node, type, checkable, color); _this._setClosable(node, closable); _this._setCheckable(node, checkable); _this._handleClose(node, closable); (0,dom_utils.removeAttrs)(node, ['type', 'size', 'color', 'checked', 'checkable', 'closable']); }); }; Tag.prototype._setMainTemplate = function (node) { var content = (0,dom_utils.setHtml)(node); (0,dom_utils.setHtml)(node, "" + content + ""); }; Tag.prototype._setType = function (node, type) { if (type) node.classList.add(prefix.default.tag + "-" + type); if (type === 'dot') { node.insertAdjacentHTML('afterbegin', ""); } }; Tag.prototype._setIsChecked = function (node, checkable) { if (checkable !== 'true') return; node.classList.add(prefix.default.tag + "-checked"); }; Tag.prototype._setColor = function (node, type, checkable, color) { var _defaultColors = this._defaultColors; var isUseDefaultColor = _defaultColors().includes(color); var TagText = node.querySelector("." + prefix.default.tag + "-text"); if (!color) return; if (isUseDefaultColor) { node.classList.add(prefix.default.tag + "-" + color); } else { (0,dom_utils.setCss)(node, 'background', "" + color); (0,dom_utils.setCss)(node, 'borderColor', "" + color); } if (color !== 'default' && type !== 'dot' && type !== 'border' && !checkable) { TagText === null || TagText === void 0 ? void 0 : TagText.classList.add(prefix.default.tag + "-color-white"); } if (isUseDefaultColor && type === 'border') { TagText === null || TagText === void 0 ? void 0 : TagText.classList.add(prefix.default.tag + "-color-" + color); } else { (0,dom_utils.setCss)(TagText, 'color', "" + color); } }; Tag.prototype._setSize = function (node, size) { if (!size) return; node.classList.add(prefix.default.tag + "-size-" + size); }; Tag.prototype._setClosable = function (node, closable) { if (!closable) return; node.classList.add(prefix.default.tag + "-closable"); node.insertAdjacentHTML('beforeend', ""); }; Tag.prototype._setCheckable = function (node, checkable) { if (!checkable) return; node.classList.remove(prefix.default.tag + "-checked"); var TagText = node.querySelector("." + prefix.default.tag + "-text"); (0,dom_utils.bind)(node, 'click', function () { var isChecked = node.classList.contains(prefix.default.tag + "-checked"); // @ts-ignore node.dataset.checked = !isChecked; node.classList[isChecked ? 'remove' : 'add'](prefix.default.tag + "-checked"); TagText === null || TagText === void 0 ? void 0 : TagText.classList[isChecked ? 'remove' : 'add'](prefix.default.tag + "-color-white"); }); }; Tag.prototype._handleClose = function (node, closable) { if (!closable) return; var CloseIcon = node.querySelector("." + prefix.default.icon + "-ios-close"); (0,dom_utils.bind)(CloseIcon, 'click', function () { (0,utils.destroyElem)(node, { fadeOut: true }); }); }; Tag.prototype._defaultColors = function () { var COLORS = [ 'default', 'primary', 'success', 'warning', 'error', 'blue', 'green', 'red', 'yellow', 'pink', 'magenta', 'volcano', 'orange', 'gold', 'lime', 'cyan', 'geekblue', 'purple' ]; return COLORS; }; Tag.prototype._attrs = function (node) { return { type: (0,dom_utils.getStrTypeAttr)(node, 'type', ''), size: (0,dom_utils.getStrTypeAttr)(node, 'size', ''), color: (0,dom_utils.getStrTypeAttr)(node, 'color', 'default'), checked: (0,dom_utils.getStrTypeAttr)(node, 'checked', 'true'), closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable'), checkable: (0,dom_utils.getBooleanTypeAttr)(node, 'checkable') }; }; return Tag; }()); /* harmony default export */ var tag = (Tag); ;// CONCATENATED MODULE: ./src/components/tag/index.ts /* harmony default export */ var components_tag = (tag); // EXTERNAL MODULE: ./src/components/time/time.ts var time = __webpack_require__("./src/components/time/time.ts"); ;// CONCATENATED MODULE: ./src/components/time/index.ts /* harmony default export */ var components_time = (time.default); ;// CONCATENATED MODULE: ./src/components/timeline/timeline.ts var Timeline = /** @class */ (function () { function Timeline() { this.VERSION = '1.0'; this.COMPONENTS = (0,dom_utils.$el)('r-timeline > r-timeline-item', { all: true }); this._create(this.COMPONENTS); } Timeline.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var TimelineItem = node; var TimelineTail = (0,dom_utils.createElem)('div'); var TimelineHead = (0,dom_utils.createElem)('div'); var TimelineContent = (0,dom_utils.createElem)('div'); _this._setCls(TimelineTail, TimelineHead, TimelineContent); _this._setColor(TimelineItem, TimelineHead); _this._setDot(TimelineItem, TimelineHead); _this._setContent(TimelineItem, TimelineContent); TimelineItem.append(TimelineTail, TimelineHead, TimelineContent); (0,dom_utils.removeAttrs)(TimelineItem, ['dot']); }); }; Timeline.prototype._setCls = function (node1, node2, node3) { node1.className = prefix.default.timeline + "-item-tail"; node2.className = prefix.default.timeline + "-item-head"; node3.className = prefix.default.timeline + "-item-content"; }; Timeline.prototype._setContent = function (parent, node1) { (0,dom_utils.setHtml)(node1, parent.innerHTML); // 清空原先的内容 (0,dom_utils.setHtml)(parent, ''); }; Timeline.prototype._setColor = function (parent, node) { var colors = this._getStatusColor(parent); // 设置预设颜色或者自定义颜色 if (colors === 'blue' || colors === 'red' || colors === 'gray' || colors === 'green') { node.classList.add(prefix.default.timeline + "-item-head-" + colors); } else { (0,dom_utils.setCss)(node, 'color', colors); (0,dom_utils.setCss)(node, 'borderColor', colors); } }; // 自定义时间轴点的内容 Timeline.prototype._setDot = function (parent, node) { if (!this._getDotContent(parent)) return; node.classList.add(prefix.default.timeline + "-item-head-custom"); var content = this._getDotContent(parent); (0,dom_utils.setHtml)(node, content); }; Timeline.prototype._getStatusColor = function (node) { return node.getAttribute('color') || 'blue'; }; Timeline.prototype._getDotContent = function (parent) { return parent.getAttribute('dot') || ''; }; return Timeline; }()); /* harmony default export */ var timeline = (Timeline); ;// CONCATENATED MODULE: ./src/components/timeline/index.ts /* harmony default export */ var components_timeline = (timeline); ;// CONCATENATED MODULE: ./src/components/tooltip/tooltip.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ var tooltip_STATEKEY = 'tooltipState'; var tooltip_DEFAULTDELAY = 80; var EnterCls = 'zoom-big-fast-enter'; var LeaveCls = 'zoom-big-fast-leave'; var CssTransitonCommonConfig = { rmCls: true, timeout: 80, enterCls: EnterCls, leaveCls: LeaveCls }; var tooltip_VISIBLETIMER, tooltip_EVENTTIMER; var Tooltip = /** @class */ (function () { function Tooltip() { this.VERSION = 'v2.0'; this.COMPONENTS = (0,dom_utils.$el)('r-tooltip', { all: true }); this._create(this.COMPONENTS); mixins._arrow.scrollUpdate(); } Tooltip.prototype.config = function (el) { var target = (0,dom_utils.$el)(el); (0,utils.validComps)(target, 'tooltip'); var _a = Tooltip.prototype, _attrs = _a._attrs, _setAlwaysShow = _a._setAlwaysShow, _handleMouseEv = _a._handleMouseEv; var _b = _attrs(target), delay = _b.delay, always = _b.always, disabled = _b.disabled, offset = _b.offset, placement = _b.placement; var TooltipPopper = target.querySelector("." + prefix.default.tooltip + "-popper"); var TooltipInner = target.querySelector("." + prefix.default.tooltip + "-inner"); return { get content() { return (0,dom_utils.setHtml)(TooltipInner); }, set content(newVal) { if (newVal && !utils.type.isStr(newVal) && !utils.type.isNum(newVal)) return; (0,dom_utils.setHtml)(TooltipInner, "" + newVal); }, get always() { return always; }, set always(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _setAlwaysShow(TooltipPopper, newVal); }, get disabled() { return disabled; }, set disabled(newVal) { if (newVal && !utils.type.isBol(newVal)) return; _handleMouseEv(target, TooltipPopper, delay, offset, placement, this.always, newVal); }, events: function (_a) { var onVisibleChange = _a.onVisibleChange; var event = function () { var visable = TooltipPopper.dataset[tooltip_STATEKEY] === 'show'; onVisibleChange && utils.type.isFn(onVisibleChange, visable); }; var show = function () { if (tooltip_EVENTTIMER) clearTimeout(tooltip_EVENTTIMER); tooltip_EVENTTIMER = setTimeout(event, delay); }; var close = function () { if (tooltip_EVENTTIMER) clearTimeout(tooltip_EVENTTIMER); // 当鼠标移出tooltip后判断当前状态如果为 show, // 那么说明气泡显示过了,该执行移出事件了。 // 避免了即使鼠标移出但没有显示过气泡而依然执行事件。 if (TooltipPopper.dataset[tooltip_STATEKEY] === 'show') setTimeout(event, tooltip_DEFAULTDELAY); }; (0,dom_utils.bind)(target, 'mouseenter', show); (0,dom_utils.bind)(target, 'mouseleave', close); } }; }; Tooltip.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), content = _a.content, theme = _a.theme, placement = _a.placement, offset = _a.offset, maxWidth = _a.maxWidth, delay = _a.delay, always = _a.always, disabled = _a.disabled; var children = !node.firstElementChild ? node.innerHTML.trim() : node.firstElementChild; _this._setMainTemplate(node, content, theme, placement); var TooltipPopper = node.querySelector("." + prefix.default.tooltip + "-popper"); _this._setReferencesElem(node, children); _this._setPopper(node, TooltipPopper, placement, offset); _this._setMaxWidth(node, maxWidth); _this._setAlwaysShow(TooltipPopper, always); _this._handleMouseEv(node, TooltipPopper, delay, offset, placement, always, disabled); (0,dom_utils.removeAttrs)(node, ['content', 'theme', 'delay', 'max-width', 'disabled', 'offset']); }); }; Tooltip.prototype._setMainTemplate = function (node, content, theme, placement) { var template = "\n
\n
\n
\n
\n
" + content + "
\n
\n
\n "; (0,dom_utils.setHtml)(node, template); }; Tooltip.prototype._setReferencesElem = function (node, children) { var TooltipRel = node.querySelector("." + prefix.default.tooltip + "-rel"); if (children instanceof Element) { TooltipRel.appendChild(children); } else { (0,dom_utils.setHtml)(TooltipRel, children); } }; Tooltip.prototype._setMaxWidth = function (node, width) { if (!width) return; var TooltipInner = node.querySelector("." + prefix.default.tooltip + "-inner"); TooltipInner.classList.add(prefix.default.tooltip + "-with-width"); (0,dom_utils.setCss)(TooltipInner, 'maxWidth', width + "px"); }; Tooltip.prototype._setAlwaysShow = function (children, always) { if (!always) (0,dom_utils.setCss)(children, 'display', 'none'); children.dataset[tooltip_STATEKEY] = 'pending'; }; Tooltip.prototype._handleMouseEv = function (node, children, delay, offset, placement, always, disabled) { var _this = this; if (always || disabled) return; var setVisable = function (mode) { if (mode === 'in') _this._setPopper(node, children, placement, offset); children.dataset[tooltip_STATEKEY] = mode === 'in' ? 'show' : 'close'; (0,mixins.CssTransition)(children, __assign({ inOrOut: mode }, CssTransitonCommonConfig)); }; var show = function () { if (tooltip_VISIBLETIMER) clearTimeout(tooltip_VISIBLETIMER); tooltip_VISIBLETIMER = setTimeout(function () { return setVisable('in'); }, delay); }; var hide = function () { if (tooltip_VISIBLETIMER) clearTimeout(tooltip_VISIBLETIMER); if (children.dataset[tooltip_STATEKEY] === 'show') setTimeout(function () { return setVisable('out'); }, tooltip_DEFAULTDELAY); }; (0,dom_utils.bind)(node, 'mouseenter', show); (0,dom_utils.bind)(node, 'mouseleave', hide); }; Tooltip.prototype._setPopper = function (node, children, placement, offset) { return mixins._Popper._newCreatePopper(node, children, placement, offset); }; Tooltip.prototype._attrs = function (node) { return { theme: (0,dom_utils.getStrTypeAttr)(node, 'theme', 'dark'), content: (0,dom_utils.getStrTypeAttr)(node, 'content', ''), maxWidth: (0,dom_utils.getStrTypeAttr)(node, 'max-width', ''), placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'top'), delay: (0,dom_utils.getNumTypeAttr)(node, 'delay', tooltip_DEFAULTDELAY), offset: (0,dom_utils.getNumTypeAttr)(node, 'offset', 0), always: (0,dom_utils.getBooleanTypeAttr)(node, 'always'), disabled: (0,dom_utils.getBooleanTypeAttr)(node, 'disabled') }; }; return Tooltip; }()); /* harmony default export */ var tooltip = (Tooltip); ;// CONCATENATED MODULE: ./src/components/tooltip/index.ts /* harmony default export */ var components_tooltip = (tooltip); ;// CONCATENATED MODULE: ./src/rabbit-simple-ui.ts ;// CONCATENATED MODULE: ./src/styles/index.less // extracted by mini-css-extract-plugin ;// CONCATENATED MODULE: ./src/build-umd.ts /** * 用于打包构建 umd 模块, * 导出含有 Rabbit 的全局变量,使得相关 api 能够被调用, * 主要用于浏览器环境下通过 script 标签引入的方式使用。 */ // @ts-ignore /* harmony default export */ var build_umd = (window.Rabbit = rabbit_simple_ui_namespaceObject); /***/ }), /***/ "./src/components/input-number/input-number.ts": /*!*****************************************************!*\ !*** ./src/components/input-number/input-number.ts ***! \*****************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _dom_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom-utils */ "./src/dom-utils/index.ts"); /* harmony import */ var _mixins__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mixins */ "./src/mixins/index.ts"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.ts"); /* harmony import */ var _prefix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../prefix */ "./src/components/prefix.ts"); /* eslint-disable @typescript-eslint/no-non-null-assertion */ function addNum(num1, num2) { var sq1, sq2; try { sq1 = num1.toString().split('.')[1].length; } catch (e) { sq1 = 0; } try { sq2 = num2.toString().split('.')[1].length; } catch (e) { sq2 = 0; } var m = Math.pow(10, Math.max(sq1, sq2)); return (Math.round(num1 * m) + Math.round(num2 * m)) / m; } var InputNumber = /** @class */ (function () { function InputNumber() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.$el)('r-input-number', { all: true }); this._create(this.COMPONENTS); } InputNumber.prototype.config = function (el) { var target = (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.$el)(el); (0,_utils__WEBPACK_IMPORTED_MODULE_2__.validComps)(target, 'input-number'); var _a = InputNumber.prototype, _attrs = _a._attrs, _setValue = _a._setValue, _setDisabled = _a._setDisabled; var _b = _attrs(target), min = _b.min, max = _b.max, step = _b.step, disabled = _b.disabled, readOnly = _b.readOnly, editable = _b.editable, precision = _b.precision, formatter = _b.formatter; var Input = target.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-input"); var ArrowUp = target.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-handler-up"); var ArrowDown = target.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-handler-down"); var BtnUp = target.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-controls-outside-up"); var BtnDown = target.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-controls-outside-down"); return { get value() { return Number(Input.value); }, set value(newVal) { if (newVal && !_utils__WEBPACK_IMPORTED_MODULE_2__.type.isNum(newVal)) return; _setValue(Input, newVal, formatter, precision, min, max); }, get step() { return step; }, set step(newVal) { if (newVal && !_utils__WEBPACK_IMPORTED_MODULE_2__.type.isNum(newVal)) return; Input.step = step; }, get disabled() { return disabled; }, set disabled(newVal) { if (newVal && !_utils__WEBPACK_IMPORTED_MODULE_2__.type.isBol(newVal)) return; _setDisabled(target, Input, newVal); }, get readOnly() { return readOnly; }, set readOnly(newVal) { if (newVal && !_utils__WEBPACK_IMPORTED_MODULE_2__.type.isBol(newVal)) return; Input.readOnly = newVal; var disableArrow = function (elem1, elem2) { if (elem1) { // @ts-ignore elem1.style.pointerEvents = newVal ? 'none' : ''; // @ts-ignore elem2.style.pointerEvents = newVal ? 'none' : ''; } }; disableArrow(ArrowUp, ArrowDown); disableArrow(BtnUp, BtnDown); }, get editable() { return editable; }, set editable(newVal) { if (newVal && !_utils__WEBPACK_IMPORTED_MODULE_2__.type.isBol(newVal)) return; Input.style.pointerEvents = !newVal ? 'none' : ''; }, events: function (_a) { var onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur; var value; var changeEv = function (e) { e.stopPropagation(); value = Number(Input.value); if (!isNaN(value)) { onChange && _utils__WEBPACK_IMPORTED_MODULE_2__.type.isFn(onChange, value); } else { (0,_mixins__WEBPACK_IMPORTED_MODULE_1__.warn)("Invalid input value --> '" + Input.value + "' at '" + el + "'"); return; } }; if (ArrowUp) { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(ArrowUp, 'click', changeEv); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(ArrowDown, 'click', changeEv); } if (BtnUp) { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(BtnUp, 'click', changeEv); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(BtnDown, 'click', changeEv); } (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(Input, 'keydown', function (e) { if (e.key === 'ArrowUp' || e.key === 'ArrowDown') changeEv(e); }); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(Input, 'input', function (e) { return changeEv(e); }); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(Input, 'focus', function (e) { e.stopPropagation(); onFocus && _utils__WEBPACK_IMPORTED_MODULE_2__.type.isFn(onFocus, e); }); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(Input, 'blur', function (e) { e.stopPropagation(); onBlur && _utils__WEBPACK_IMPORTED_MODULE_2__.type.isFn(onBlur); }); } }; }; InputNumber.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), min = _a.min, max = _a.max, step = _a.step, value = _a.value, name = _a.name, inputId = _a.inputId, parser = _a.parser, formatter = _a.formatter, precision = _a.precision, disabled = _a.disabled, editable = _a.editable, readOnly = _a.readOnly, size = _a.size, placeholder = _a.placeholder, controlsOutside = _a.controlsOutside; _this._setMainTemplate(node); _this._setOutSide(node, controlsOutside); var Input = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-input"); var ArrowUp = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-handler-up"); var ArrowDown = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-handler-down"); var BtnUp = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-controls-outside-up"); var BtnDown = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-controls-outside-down"); _this._setInput(Input, min, max, step, name, inputId, placeholder); _this._setValue(Input, value, formatter, precision, min, max); _this._setSize(node, size); _this._setDisabled(node, Input, disabled); _this._setReadonlyAndEditable(Input, readOnly, editable); _this._setHandler(ArrowUp, ArrowDown, BtnUp, BtnDown, value, min, max); _this._handleChange(Input, ArrowUp, ArrowDown, BtnUp, BtnDown, min, max, step, precision, readOnly, parser, formatter); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.removeAttrs)(node, [ 'min', 'max', 'step', 'value', 'precision', 'size', 'name', 'parser', 'formatter', 'input-id', 'placeholder', 'disabled', 'editable', 'readOnly', 'controls-outside' ]); }); }; InputNumber.prototype._setMainTemplate = function (node) { node.classList.add("" + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb); var template = "\n
\n \n \n \n \n \n \n
\n
\n \n
\n "; (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.setHtml)(node, template); }; InputNumber.prototype._setOutSide = function (node, controlsOutside) { if (!controlsOutside) return; node.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-controls-outside"); var handlerWrap = node.querySelector("." + _prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-handler-wrap"); var template = "\n
\n \n
\n
\n \n
\n "; handlerWrap.insertAdjacentHTML('afterend', template); handlerWrap.remove(); }; InputNumber.prototype._setInput = function (input, min, max, step, name, inputId, placeholder) { isNaN(min) || min === 0 ? (input.min = "" + min) : ''; isNaN(max) || min === 0 ? (input.max = "" + max) : ''; isNaN(step) && step !== 1 ? (input.step = "" + step) : ''; name ? (input.name = name) : ''; inputId ? (input.id = inputId) : ''; placeholder ? (input.placeholder = placeholder) : ''; }; InputNumber.prototype._formatterVal = function (input, formatter, val) { // `约定的 ${value}`替换为 `${val}` var resVal = formatter.replace('value', 'val'); input.value = "" + (formatter ? eval(resVal) : val); }; InputNumber.prototype._parserVal = function (parser, val) { if (parser) { var _parser = eval(parser); return val.replace(_parser[0], _parser[1]); } else { // 如果没有指定从 formatter 里转换回数字的方式,则使用默认正则方式 return val.replace(/[^\d.-]/g, ''); } }; InputNumber.prototype._handleChange = function (input, aUp, aDown, btnUp, btnDown, min, max, step, precision, readOnly, parser, formatter) { var _this = this; if (readOnly) return; var setValue = function (val) { _this._setValue(input, val, formatter, precision, min, max); _this._setHandler(aUp, aDown, btnUp, btnDown, val, min, max); }; var changeStep = function (type) { // 如果指定了输入框展示值的格式,那么这里就要用 parser 的值转换为原来的值 var val = _this._parserVal(parser, input.value); var targetVal = Number(val); if (type === 'up') { if (addNum(targetVal, step) <= max) { setValue(targetVal); } else { return false; } setValue(addNum(targetVal, step)); } else if (type === 'down') { if (addNum(targetVal, step) >= min) { setValue(targetVal); } else { return false; } setValue(addNum(targetVal, -step)); } }; var handleKeyBoardChange = function () { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(input, 'keydown', function (e) { if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return false; if (e.key === 'ArrowUp') { e.preventDefault(); changeStep('up'); } if (e.key === 'ArrowDown') { e.preventDefault(); changeStep('down'); } }); }; var handleInputChange = function () { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(input, 'input', function (e) { e.stopPropagation(); // 当输入框输入时只匹配数字、小数点和减号 var val = input.value.replace(/[^\d.-]/g, ''); setValue(Number(val)); }); }; var handleArrowChange = function () { if (aUp && aDown) { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(aUp, 'click', function () { return changeStep('up'); }); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(aDown, 'click', function () { return changeStep('down'); }); } if (btnUp && btnDown) { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(btnUp, 'click', function () { return changeStep('up'); }); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.bind)(btnDown, 'click', function () { return changeStep('down'); }); } }; handleKeyBoardChange(); handleInputChange(); handleArrowChange(); }; InputNumber.prototype._setValue = function (input, value, formatter, precision, min, max) { var targetVal = !isNaN(precision) ? value.toFixed(precision) : value; if ((targetVal && !isNaN(targetVal)) || targetVal === 0) { if (targetVal > max && !isNaN(max)) { targetVal = max; } else if (targetVal < min && !isNaN(min)) { targetVal = min; } // 如果指定了输入框展示值的格式则使用它,否则反之 this._formatterVal(input, formatter, targetVal); } }; InputNumber.prototype._setSize = function (node, size) { if (!size) return; node.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-" + size); }; InputNumber.prototype._setReadonlyAndEditable = function (input, readOnly, editable) { if (readOnly) input.readOnly = true; if (readOnly || editable === 'false') input.style.pointerEvents = 'none'; }; InputNumber.prototype._setDisabled = function (node, input, disabled) { if (!disabled) { node.classList.remove(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-disabled"); input.disabled = false; } else { node.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-disabled"); input.disabled = true; } }; InputNumber.prototype._setHandler = function (aUp, aDown, btnUp, btnDown, value, min, max) { var isSetDisable = function (elm1, elm2, outside) { var upDisabledCls = outside ? 'controls-outside-btn' : 'handler-up'; var downDisabledCls = outside ? 'controls-outside-btn' : 'handler-down'; if (Math.ceil(value) >= max) { elm1.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-" + upDisabledCls + "-disabled"); } else { elm1.classList.remove(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-" + upDisabledCls + "-disabled"); } if (Math.ceil(value) <= min) { elm2.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-" + downDisabledCls + "-disabled"); } else { elm2.classList.remove(_prefix__WEBPACK_IMPORTED_MODULE_3__.default.inputnb + "-" + downDisabledCls + "-disabled"); } }; if (aUp && aDown) isSetDisable(aUp, aDown, false); if (btnUp && btnDown) isSetDisable(btnUp, btnDown, true); }; InputNumber.prototype._attrs = function (node) { return { min: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getNumTypeAttr)(node, 'min', -Infinity), max: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getNumTypeAttr)(node, 'max', Infinity), step: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getNumTypeAttr)(node, 'step', 1), value: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getNumTypeAttr)(node, 'value', 0), precision: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getNumTypeAttr)(node, 'precision'), size: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'size', ''), name: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'name', ''), inputId: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'input-id', ''), parser: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'parser', ''), formatter: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'formatter', ''), placeholder: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'placeholder', ''), disabled: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getBooleanTypeAttr)(node, 'disabled'), readOnly: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getBooleanTypeAttr)(node, 'readonly'), editable: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getStrTypeAttr)(node, 'editable', 'true'), controlsOutside: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_0__.getBooleanTypeAttr)(node, 'controls-outside') }; }; return InputNumber; }()); /* harmony default export */ __webpack_exports__["default"] = (InputNumber); /***/ }), /***/ "./src/components/prefix.ts": /*!**********************************!*\ !*** ./src/components/prefix.ts ***! \**********************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); var prefixCls = 'rab-'; /* harmony default export */ __webpack_exports__["default"] = ({ affix: prefixCls + "affix", alert: prefixCls + "alert", avatar: prefixCls + "avatar", backtop: prefixCls + "back-top", badge: prefixCls + "badge", breadcrumb: prefixCls + "breadcrumb", button: prefixCls + "btn", card: prefixCls + "card", carousel: prefixCls + "carousel", checkbox: prefixCls + "checkbox", circle: prefixCls + "chart-circle", collapse: prefixCls + "collapse", divider: prefixCls + "divider", drawer: prefixCls + "drawer", dropdown: prefixCls + "dropdown", empty: prefixCls + "empty", jumbotron: prefixCls + "jumbotron", inputnb: prefixCls + "input-number", icon: prefixCls + "icon", loadingBar: prefixCls + "loading-bar", message: prefixCls + "message", messageChild: prefixCls + "message-notice", modal: prefixCls + "modal", notice: prefixCls + "notice", pageHeader: prefixCls + "page-header", poptip: prefixCls + "poptip", noticeChild: prefixCls + "notice-notice", progress: prefixCls + "progress", radio: prefixCls + "radio", rate: prefixCls + "rate", result: prefixCls + "result", skeleton: prefixCls + "skeleton", switch: prefixCls + "switch", tabs: prefixCls + "tabs", tag: prefixCls + "tag", spin: prefixCls + "spin", steps: prefixCls + "steps", time: prefixCls + "time", timeline: prefixCls + "timeline", tooltip: prefixCls + "tooltip" }); /***/ }), /***/ "./src/components/time/time.ts": /*!*************************************!*\ !*** ./src/components/time/time.ts ***! \*************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dayjs */ "./node_modules/dayjs/dayjs.min.js"); /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs/plugin/relativeTime */ "./node_modules/dayjs/plugin/relativeTime.js"); /* harmony import */ var dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _prefix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../prefix */ "./src/components/prefix.ts"); /* harmony import */ var _dom_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../dom-utils */ "./src/dom-utils/index.ts"); /* harmony import */ var dayjs_locale_zh_cn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs/locale/zh-cn */ "./node_modules/dayjs/locale/zh-cn.js"); /* harmony import */ var dayjs_locale_zh_cn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dayjs_locale_zh_cn__WEBPACK_IMPORTED_MODULE_4__); var Time = /** @class */ (function () { function Time() { this.VERSION = 'v1.0'; this.COMPONENTS = (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.$el)('r-time', { all: true }); // 配置默认语言 (全局) dayjs__WEBPACK_IMPORTED_MODULE_0___default().locale('zh-cn'); // 改变语言配置 (全局),需自行引入 dayjs 语言包 // 注意!通过 script 标签引入 rabbitjs 的情况下,通过这个函数设置语言是无效的 this.locale = function (str) { return dayjs__WEBPACK_IMPORTED_MODULE_0___default().locale(str); }; this._create(this.COMPONENTS); } Time.prototype._create = function (COMPONENTS) { var _this = this; COMPONENTS.forEach(function (node) { var _a = _this._attrs(node), type = _a.type, time = _a.time, interval = _a.interval, hash = _a.hash; _this._setTime(node, type, time, interval); _this._handleClick(node, hash); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.removeAttrs)(node, ['time', 'type', 'hash', 'interval']); }); }; Time.prototype._setTime = function (node, type, time, interval) { var timeStamp = eval(time); var seconds = 0; var timer = function () { if (type === 'relative') { dayjs__WEBPACK_IMPORTED_MODULE_0___default().extend((dayjs_plugin_relativeTime__WEBPACK_IMPORTED_MODULE_1___default())); var _relativeTime = dayjs__WEBPACK_IMPORTED_MODULE_0___default()(timeStamp).fromNow(); // 如果自动更新的间隔小于60则是要通过秒更新时间而不是分钟 // 当秒数走到60秒后就转换为 “x分钟前” 显示 if (interval < 60) { var Chinese = ['zh', 'zh-cn', 'zh-hk', 'zh-tw']; // 语言环境为中文才进行并显示秒级别更新 if (Chinese.includes(dayjs__WEBPACK_IMPORTED_MODULE_0___default().locale())) { seconds++; (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.setText)(node, seconds + "\u79D2\u524D"); } } else { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.setText)(node, _relativeTime); } // 这段为设置中文状态下的情景 if (_relativeTime === '几秒前') { _relativeTime = '刚刚'; } else { (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.setText)(node, _relativeTime); } } else if (type === 'date') { var date = dayjs__WEBPACK_IMPORTED_MODULE_0___default()(timeStamp).format('YYYY-MM-DD'); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.setText)(node, date); } else if (type === 'datetime') { var dataTime = dayjs__WEBPACK_IMPORTED_MODULE_0___default()(timeStamp).format('YYYY-MM-DD-HH:mm:ss'); (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.setText)(node, dataTime); } return timer; }; setTimeout(function () { window.setInterval(timer(), interval * 1000); }, 0); }; Time.prototype._handleClick = function (node, hash) { if (!hash) return; node.classList.add(_prefix__WEBPACK_IMPORTED_MODULE_2__.default.time + "-with-hash"); node.addEventListener('click', function () { return (window.location.hash = hash); }); }; Time.prototype._attrs = function (node) { return { time: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.getStrTypeAttr)(node, 'time', ''), type: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.getStrTypeAttr)(node, 'type', 'relative'), hash: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.getStrTypeAttr)(node, 'hash', ''), interval: (0,_dom_utils__WEBPACK_IMPORTED_MODULE_3__.getNumTypeAttr)(node, 'interval', 60) }; }; return Time; }()); /* harmony default export */ __webpack_exports__["default"] = (Time); /***/ }), /***/ "./src/dom-utils/elem.ts": /*!*******************************!*\ !*** ./src/dom-utils/elem.ts ***! \*******************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "$el": function() { return /* binding */ $el; }, /* harmony export */ "createElem": function() { return /* binding */ createElem; }, /* harmony export */ "setCss": function() { return /* binding */ setCss; }, /* harmony export */ "setHtml": function() { return /* binding */ setHtml; }, /* harmony export */ "setText": function() { return /* binding */ setText; }, /* harmony export */ "getStrTypeAttr": function() { return /* binding */ getStrTypeAttr; }, /* harmony export */ "getBooleanTypeAttr": function() { return /* binding */ getBooleanTypeAttr; }, /* harmony export */ "getNumTypeAttr": function() { return /* binding */ getNumTypeAttr; }, /* harmony export */ "getArrTypeAttr": function() { return /* binding */ getArrTypeAttr; } /* harmony export */ }); /** * 获取元素 * @param node * @param options 选项 all 表示是否获取所有节点 */ function $el(node, options) { if (options === null || options === void 0 ? void 0 : options.all) { return document.querySelectorAll(node); } else { return document.querySelector(node); } } function createElem(tagName) { return document.createElement(tagName); } function setCss(node, styeName, value) { return (node.style[styeName] = value); } function setHtml(node, value) { if (value || value === '') { return (node.innerHTML = value); } else { return node.innerHTML; } } function setText(node, value) { if (value || value === '') { return (node.textContent = value); } else { return node.textContent || ''; } } // 通用的标签属性获取方法 // 获取后的值由原先的字符串类型转换成对应类型 // Return String type function getStrTypeAttr(node, attrName, defaultVal) { return node.getAttribute(attrName) || defaultVal; } // Return Boolean type function getBooleanTypeAttr(node, attrName) { return node.getAttribute(attrName) === 'true'; } // Return Number type function getNumTypeAttr(node, attrName, defaultVal) { return Number(node.getAttribute(attrName)) || defaultVal; } // Return Array type function getArrTypeAttr(node, attrName) { var _a; var attr = ((_a = node.getAttribute(attrName)) === null || _a === void 0 ? void 0 : _a.replace(/'/g, '"')) || '[]'; var array = JSON.parse(attr); return array; } /***/ }), /***/ "./src/dom-utils/index.ts": /*!********************************************!*\ !*** ./src/dom-utils/index.ts + 5 modules ***! \********************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "$el": function() { return /* reexport */ elem.$el; }, "bind": function() { return /* reexport */ bind; }, "createElem": function() { return /* reexport */ elem.createElem; }, "getArrTypeAttr": function() { return /* reexport */ elem.getArrTypeAttr; }, "getBooleanTypeAttr": function() { return /* reexport */ elem.getBooleanTypeAttr; }, "getNumTypeAttr": function() { return /* reexport */ elem.getNumTypeAttr; }, "getStrTypeAttr": function() { return /* reexport */ elem.getStrTypeAttr; }, "nextAll": function() { return /* reexport */ nextAll; }, "prevAll": function() { return /* reexport */ prevAll; }, "removeAttrs": function() { return /* reexport */ removeAttrs; }, "setCss": function() { return /* reexport */ elem.setCss; }, "setHtml": function() { return /* reexport */ elem.setHtml; }, "setText": function() { return /* reexport */ elem.setText; }, "siblings": function() { return /* reexport */ siblings; }, "slider": function() { return /* reexport */ slide; }, "unbind": function() { return /* reexport */ unbind; } }); ;// CONCATENATED MODULE: ./src/dom-utils/bind.ts /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /** * 解决事件监听兼容性问题 * @param {Object} obj对象 * @param {String} type事件类型,不带'on'前缀 * @param {Function} callback事件处理程序 */ function bind(obj, type, callback) { if (obj.addEventListener) { // W3C内核 obj.addEventListener(type, callback); } else { // IE内核 obj.attachEvent("on" + type, callback); } } /** * 解决移除事件监听兼容性问题 * @param {Object} obj对象 * @param {String} type事件类型,不带'on'前缀 * @param {Function} callback事件处理程序 */ function unbind(obj, type, callback) { if (obj.removeEventListener) { // W3C内核 obj.removeEventListener(type, callback); } else { // IE内核 obj.detachEvent("on" + type, callback); } } // EXTERNAL MODULE: ./src/dom-utils/elem.ts var elem = __webpack_require__("./src/dom-utils/elem.ts"); ;// CONCATENATED MODULE: ./src/dom-utils/prev&next.ts /* eslint-disable @typescript-eslint/no-non-null-assertion */ function prevAll(el) { var Parent = el.parentElement; var Child = Parent.children; var prevChildren = []; var i = 0; var length = Child.length; for (; i < length; i++) { var _child = Child[i]; if (_child == el) { break; } prevChildren.push(_child); } return prevChildren; } function nextAll(el) { var Parent = el.parentElement; var Child = Parent.children; var nextChildren = []; var length = Child.length; var start = 0; var i = length - 1; for (; i >= start; i--) { var _child = Child[i]; if (_child == el) { break; } nextChildren.unshift(_child); } return nextChildren; } ;// CONCATENATED MODULE: ./src/dom-utils/remove-attrs.ts /** * 移除组件标签的自定义属性 * 1.非关联css的属性 * 2.仅取值属性 * 3.非业务逻辑代码要用的属性 */ function removeAttrs(elem, attrs) { setTimeout(function () { var i = 0; var length = attrs.length; for (; i < length; i++) { var attr = attrs[i]; elem.getAttribute(attr) || elem.getAttribute(attr) === '' ? elem.removeAttribute(attr) : null; } }, 0); } ;// CONCATENATED MODULE: ./src/dom-utils/siblings.ts function siblings(elem) { var _a; var r = []; var n = (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.firstChild; for (; n; n = n.nextSibling) { if (n.nodeType === 1 && n !== elem) { r.push(n); } } return r; } ;// CONCATENATED MODULE: ./src/dom-utils/slide.ts /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable prefer-rest-params */ // @ts-nocheck /* harmony default export */ var slide = (window.Slider = (function () { // 定义Slider对象 var Slider = { slideDown: function (el, time) { void 0; }, slideUp: function (el, time) { void 0; } }; // I.定义一个TimerManager类 // 1)构造函数 function TimerManager() { this.timers = []; // 保存定时器 this.args = []; // 保存定时器的参数 this.isFiring = false; } // 2)静态方法:为element添加一个TimerManager实例 TimerManager.makeInstance = function (element) { // 如果element.__TimerManager__上没有TimerManager,就为其添加一个 if (!element.__TimerManager__ || element.__TimerManager__.constructor != TimerManager) { element.__TimerManager__ = new TimerManager(); } }; // 3)扩展TimerManager原型,分别实现add,fire,next方法 TimerManager.prototype.add = function (timer, args) { this.timers.push(timer); this.args.push(args); this.fire(); }; TimerManager.prototype.fire = function () { if (!this.isFiring) { var timer = this.timers.shift(), // 取出定时器 args = this.args.shift(); // 取出定时器参数 if (timer && args) { this.isFiring = true; // 传入参数,执行定时器函数 timer(args[0], args[1]); } } }; TimerManager.prototype.next = function () { this.isFiring = false; this.fire(); }; // II. 修改动画函数并在定时器结束后调用element.__TimerManager__.next() // 1)下滑函数 function fnSlideDown(element, time) { if (element.offsetHeight == 0) { //如果当前高度为0,则执行下拉动画 // 获取元素总高度 element.style.display = 'block'; // 1.显示元素,元素变为可见 var totalHeight_1 = element.offsetHeight; // 2.保存总高度 element.style.height = '0px'; // 3.再将元素高度设置为0,元素又变为不可见 // 定义一个变量保存元素当前高度 var currentHeight_1 = 0; // 当前元素高度为0 // 计算每次增加的值 var increment_1 = totalHeight_1 / (time / 10); // 开始循环定时器 var timer_1 = setInterval(function () { // 增加一部分高度 currentHeight_1 += increment_1; // 把当前高度赋值给height属性 element.style.height = currentHeight_1 + "px"; // 如果当前高度大于或等于总高度则关闭定时器 if (currentHeight_1 >= totalHeight_1) { // 关闭定时器 clearInterval(timer_1); // 把高度设置为总高度 element.style.height = totalHeight_1 + "px"; if (element.__TimerManager__ && element.__TimerManager__.constructor == TimerManager) { element.__TimerManager__.next(); } } }, 10); } else { // 如果当前高度不为0,则直接执行队列里的下一个函数 if (element.__TimerManager__ && element.__TimerManager__.constructor == TimerManager) { element.__TimerManager__.next(); } } } // 2)上拉函数 function fnSlideUp(element, time) { if (element.offsetHeight > 0) { // 如果当前高度不为0,则执行上滑动画 // 获取元素总高度 var totalHeight_2 = element.offsetHeight; // 定义一个变量保存元素当前高度 var currentHeight_2 = totalHeight_2; // 计算每次减去的值 var decrement_1 = totalHeight_2 / (time / 10); // 开始循环定时器 var timer_2 = setInterval(function () { // 减去当前高度的一部分 currentHeight_2 -= decrement_1; // 把当前高度赋值给height属性 element.style.height = currentHeight_2 + "px"; // 如果当前高度小于等于0,就关闭定时器 if (currentHeight_2 <= 0) { // 关闭定时器 clearInterval(timer_2); // 把元素display设置为none element.style.display = 'none'; // 把元素高度值还原 element.style.height = totalHeight_2 + "px"; if (element.__TimerManager__ && element.__TimerManager__.constructor == TimerManager) { element.__TimerManager__.next(); } } }, 10); } else { // 如果当前高度为0, 则直接执行队列里的下一个函数 if (element.__TimerManager__ && element.__TimerManager__.constructor == TimerManager) { element.__TimerManager__.next(); } } } // III.定义外部访问接口 // 1)下拉接口 Slider.slideDown = function (element, time) { TimerManager.makeInstance(element); element.__TimerManager__.add(fnSlideDown, arguments); return this; }; // 2)上滑接口 Slider.slideUp = function (element, time) { TimerManager.makeInstance(element); element.__TimerManager__.add(fnSlideUp, arguments); return this; }; // 返回Slider对象 return Slider; })()); ;// CONCATENATED MODULE: ./src/dom-utils/index.ts /***/ }), /***/ "./src/mixins/index.ts": /*!******************************************!*\ !*** ./src/mixins/index.ts + 63 modules ***! \******************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "CssTransition": function() { return /* reexport */ CssTransition; }, "Scrollable": function() { return /* reexport */ scrollable; }, "_Popper": function() { return /* reexport */ tooltip_namespaceObject; }, "_arrow": function() { return /* reexport */ arrow_namespaceObject; }, "clickoutside": function() { return /* reexport */ clickOutside; }, "moreThanOneNode": function() { return /* reexport */ moreThanOneNode; }, "usePromiseCallback": function() { return /* reexport */ usePromiseCallback; }, "warn": function() { return /* reexport */ warn.default; } }); // NAMESPACE OBJECT: ./src/mixins/arrow.ts var arrow_namespaceObject = {}; __webpack_require__.r(arrow_namespaceObject); __webpack_require__.d(arrow_namespaceObject, { "scrollUpdate": function() { return scrollUpdate; } }); // NAMESPACE OBJECT: ./src/mixins/tooltip.ts var tooltip_namespaceObject = {}; __webpack_require__.r(tooltip_namespaceObject); __webpack_require__.d(tooltip_namespaceObject, { "_newCreatePopper": function() { return _newCreatePopper; } }); // EXTERNAL MODULE: ./src/dom-utils/index.ts + 5 modules var dom_utils = __webpack_require__("./src/dom-utils/index.ts"); ;// CONCATENATED MODULE: ./src/mixins/arrow.ts // 更新popver弹窗或下拉菜单的箭头方向 function scrollUpdate() { var tooltips = (0,dom_utils.$el)('.rab-tooltip-popper', { all: true }); var poptips = (0,dom_utils.$el)('.rab-poptip-popper', { all: true }); var scrollEv = function (target) { target.forEach(function (node) { var popperPlacement = node.dataset.popperPlacement; var xPlacement = node.getAttribute('x-placement'); if (xPlacement != popperPlacement) { node.setAttribute('x-placement', popperPlacement); } }); }; // 当页面有这些组件存在时才做滚动监听 if (tooltips.length > 0) { window.addEventListener('scroll', function () { return scrollEv(tooltips); }); } if (poptips.length > 0) { window.addEventListener('scroll', function () { return scrollEv(poptips); }); } } ;// CONCATENATED MODULE: ./src/mixins/cb-promise.ts /** * 用于实例组件关闭后返回 promise,提供 then 接口在关闭后运行 callback * @param duration 组件关闭的时间,这里是用于组件没自己的配置项时,设为全局时间 * @param compConfig 组件的配置项,这里是用于是否切换为组件自己设置的时间 */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types function usePromiseCallback(duration, compConfig) { // promise 触发的时机为默认时间 var timeout = duration; // 当组件参数以对象形式传递,并且设置了自己的 duration则修改 promise的触发时机 if (compConfig && typeof compConfig === 'object') { if (compConfig.duration || compConfig.duration === 0) { timeout = compConfig.duration; } else { timeout = duration; } } return promiseCb(timeout); } function promiseCb(duration) { var timer = null; return new Promise(function (afterClose) { timer = setTimeout(afterClose, duration * 1000); // duration 为 0 则说明当前组件不自动关闭 duration === 0 ? clearTimeout(timer) : timer; }); } ;// CONCATENATED MODULE: ./src/mixins/clickoutside.ts /** * 用于点击外部关闭下拉菜单或气泡提示框 * @param elem * @param callback 关闭事件回调 * @param child * @param datasetKey * @param datasetVal 要被关闭的对象状态是否已经处于打开状态,如果是那么点击其以外的区域才执行事件回调 */ function clickOutside(elem, callback, child, datasetKey, datasetVal) { var ev = function (e) { if (datasetKey) { if (child) { // @ts-ignore child.dataset[datasetKey] === datasetVal && callback(e); } else { // @ts-ignore child.dataset[datasetKey] === datasetVal && callback(e); } } else { callback(); } }; (0,dom_utils.bind)(document, 'click', function (e) { return ev(e); }); (0,dom_utils.bind)(elem, 'click', function (e) { return e.stopPropagation(); }); } ;// CONCATENATED MODULE: ./src/mixins/css-transition.ts function CssTransition(elem, _a) { var enterCls = _a.enterCls, leaveCls = _a.leaveCls, inOrOut = _a.inOrOut, rmCls = _a.rmCls, timeout = _a.timeout, hiddenParent = _a.hiddenParent; var removeClassAfterTransition = function (aniClassName) { if (rmCls) { setTimeout(function () { aniClassName ? elem.classList.remove(aniClassName) : ''; }, timeout); } }; if (inOrOut === 'in') { // 如果父元素被隐藏则变为显示 if (hiddenParent) { hiddenParent.style.display = ''; hiddenParent.style.opacity = '1'; hiddenParent.style.visibility = 'visible'; } // if (elem.style.display === 'none') elem.style.display = ''; // if (elem.style.opacity === '0') elem.style.opacity = '1'; // if (elem.style.visibility === 'hidden') elem.style.visibility = 'visible'; elem.style.display = ''; elem.style.opacity = '1'; elem.style.visibility = 'visible'; elem.classList.add(enterCls); removeClassAfterTransition(enterCls); } else if (inOrOut === 'out') { if (elem.classList.contains(enterCls)) { elem.classList.replace(enterCls, leaveCls); } else { elem.classList.add(leaveCls); } removeClassAfterTransition(leaveCls); // 过渡效果持续时间后隐藏元素 setTimeout(function () { if (hiddenParent) hiddenParent.style.display = 'none'; elem.style.display = 'none'; elem.style.opacity = '0'; elem.style.visibility = 'hidden'; }, timeout); } } ;// CONCATENATED MODULE: ./src/mixins/one-node.ts /** * 检查组件标签下是否具有一个父元素, * 不允许组件下有多个子节点用于添加额外内容,只有由一个节点组成。 */ function moreThanOneNode(node) { if (node.childElementCount > 1) { (0,warn.default)("The <" + node.tagName.toLowerCase() + "> tag must have a parent element"); return true; } return false; } ;// CONCATENATED MODULE: ./src/mixins/scrollable.ts function scrollable(_a) { var _b = _a.scroll, scroll = _b === void 0 ? false : _b, _c = _a.lock, lock = _c === void 0 ? false : _c, node = _a.node, tagName = _a.tagName; // 是否禁止对页面滚动条的修改 // 页面是否可以滚动 if (lock && !scroll) { (0,dom_utils.setCss)(document.body, 'paddingRight', '17px'); (0,dom_utils.setCss)(document.body, 'overflow', 'hidden'); } else { (0,dom_utils.setCss)(document.body, 'paddingRight', ''); (0,dom_utils.setCss)(document.body, 'overflow', ''); } var prevNode = node === null || node === void 0 ? void 0 : node.previousElementSibling; // 解决抽屉或对话框组件在同时打开多个的情况下,只关闭了一个窗口而页面滚动条恢复出现的bug if (prevNode) { var prevTagName = prevNode.tagName.toLocaleLowerCase().replace(/r-/, ''); if (prevTagName === tagName) { // @ts-ignore if (prevNode.dataset[prevTagName + "Visable"] === 'true') { scrollable({ scroll: false, lock: true }); } } } } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js function getBoundingClientRect(element) { var rect = element.getBoundingClientRect(); return { width: rect.width, height: rect.height, top: rect.top, right: rect.right, bottom: rect.bottom, left: rect.left, x: rect.left, y: rect.top }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js /*:: import type { Window } from '../types'; */ /*:: declare function getWindow(node: Node | Window): Window; */ function getWindow(node) { if (node.toString() !== '[object Window]') { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; var scrollTop = win.pageYOffset; return { scrollLeft: scrollLeft, scrollTop: scrollTop }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js /*:: declare function isElement(node: mixed): boolean %checks(node instanceof Element); */ function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } /*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof HTMLElement); */ function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } /*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof ShadowRoot); */ function isShadowRoot(node) { var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js function getHTMLElementScroll(element) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js function getNodeScroll(node) { if (node === getWindow(node) || !isHTMLElement(node)) { return getWindowScroll(node); } else { return getHTMLElementScroll(node); } } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js function getNodeName(element) { return element ? (element.nodeName || '').toLowerCase() : null; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js function getDocumentElement(element) { // $FlowFixMe[incompatible-return]: assume body is always available return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] element.document) || window.document).documentElement; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js function getWindowScrollBarX(element) { // If has a CSS width greater than the viewport, then this will be // incorrect for RTL. // Popper 1 is broken in this case and never had a bug report so let's assume // it's not an issue. I don't think anyone ever specifies width on // anyway. // Browsers where the left scrollbar doesn't cause an issue report `0` for // this (e.g. Edge 2019, IE11, Safari) return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js function getComputedStyle(element) { return getWindow(element).getComputedStyle(element); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js function isScrollParent(element) { // Firefox wants us to check `-x` and `-y` variations as well var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js // Returns the composite rect of an element relative to its offsetParent. // Composite means it takes into account transforms as well as layout. function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { if (isFixed === void 0) { isFixed = false; } var documentElement = getDocumentElement(offsetParent); var rect = getBoundingClientRect(elementOrVirtualElement); var isOffsetParentAnElement = isHTMLElement(offsetParent); var scroll = { scrollLeft: 0, scrollTop: 0 }; var offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 isScrollParent(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { offsets = getBoundingClientRect(offsetParent); offsets.x += offsetParent.clientLeft; offsets.y += offsetParent.clientTop; } else if (documentElement) { offsets.x = getWindowScrollBarX(documentElement); } } return { x: rect.left + scroll.scrollLeft - offsets.x, y: rect.top + scroll.scrollTop - offsets.y, width: rect.width, height: rect.height }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js // Returns the layout rect of an element relative to its offsetParent. Layout // means it doesn't take into account transforms. function getLayoutRect(element) { return { x: element.offsetLeft, y: element.offsetTop, width: element.offsetWidth, height: element.offsetHeight }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js function getParentNode(element) { if (getNodeName(element) === 'html') { return element; } return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node element.parentNode || // DOM Element detected // $FlowFixMe[incompatible-return]: need a better way to handle this... element.host || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) // fallback ); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js function getScrollParent(node) { if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { // $FlowFixMe[incompatible-return]: assume body is always available return node.ownerDocument.body; } if (isHTMLElement(node) && isScrollParent(node)) { return node; } return getScrollParent(getParentNode(node)); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js /* given a DOM element, return the list of all scroll parents, up the list of ancesors until we get to the top window object. This list is what we attach scroll listeners to, because if any of these parent elements scroll, we'll need to re-calculate the reference element's position. */ function listScrollParents(element, list) { if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); var isBody = getNodeName(scrollParent) === 'body'; var win = getWindow(scrollParent); var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; var updatedList = list.concat(target); return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here updatedList.concat(listScrollParents(getParentNode(target))); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js function isTableElement(element) { return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js function getTrueOffsetParent(element) { if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 getComputedStyle(element).position === 'fixed') { return null; } var offsetParent = element.offsetParent; if (offsetParent) { var html = getDocumentElement(offsetParent); if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') { return html; } } return offsetParent; } // `.offsetParent` reports `null` for fixed elements, while absolute elements // return the containing block function getContainingBlock(element) { var currentNode = getParentNode(element); while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that // create a containing block. if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } // Gets the closest ancestor positioned element. Handles some edge cases, // such as table ancestors and cross browser bugs. function getOffsetParent(element) { var window = getWindow(element); var offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') { return window; } return offsetParent || getContainingBlock(element) || window; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/enums.js var enums_top = 'top'; var bottom = 'bottom'; var right = 'right'; var left = 'left'; var auto = 'auto'; var basePlacements = [enums_top, bottom, right, left]; var start = 'start'; var end = 'end'; var clippingParents = 'clippingParents'; var viewport = 'viewport'; var popper = 'popper'; var reference = 'reference'; var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { return acc.concat([placement + "-" + start, placement + "-" + end]); }, []); var enums_placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { return acc.concat([placement, placement + "-" + start, placement + "-" + end]); }, []); // modifiers that need to read the DOM var beforeRead = 'beforeRead'; var read = 'read'; var afterRead = 'afterRead'; // pure-logic modifiers var beforeMain = 'beforeMain'; var main = 'main'; var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) var beforeWrite = 'beforeWrite'; var write = 'write'; var afterWrite = 'afterWrite'; var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/orderModifiers.js // source: https://stackoverflow.com/questions/49875255 function order(modifiers) { var map = new Map(); var visited = new Set(); var result = []; modifiers.forEach(function (modifier) { map.set(modifier.name, modifier); }); // On visiting object, check for its dependencies and visit them recursively function sort(modifier) { visited.add(modifier.name); var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); requires.forEach(function (dep) { if (!visited.has(dep)) { var depModifier = map.get(dep); if (depModifier) { sort(depModifier); } } }); result.push(modifier); } modifiers.forEach(function (modifier) { if (!visited.has(modifier.name)) { // check for visited object sort(modifier); } }); return result; } function orderModifiers(modifiers) { // order based on dependencies var orderedModifiers = order(modifiers); // order based on phase return modifierPhases.reduce(function (acc, phase) { return acc.concat(orderedModifiers.filter(function (modifier) { return modifier.phase === phase; })); }, []); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/debounce.js function debounce(fn) { var pending; return function () { if (!pending) { pending = new Promise(function (resolve) { Promise.resolve().then(function () { pending = undefined; resolve(fn()); }); }); } return pending; }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/format.js function format(str) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return [].concat(args).reduce(function (p, c) { return p.replace(/%s/, c); }, str); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/validateModifiers.js var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; function validateModifiers(modifiers) { modifiers.forEach(function (modifier) { Object.keys(modifier).forEach(function (key) { switch (key) { case 'name': if (typeof modifier.name !== 'string') { console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); } break; case 'enabled': if (typeof modifier.enabled !== 'boolean') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); } case 'phase': if (modifierPhases.indexOf(modifier.phase) < 0) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); } break; case 'fn': if (typeof modifier.fn !== 'function') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); } break; case 'effect': if (typeof modifier.effect !== 'function') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); } break; case 'requires': if (!Array.isArray(modifier.requires)) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); } break; case 'requiresIfExists': if (!Array.isArray(modifier.requiresIfExists)) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); } break; case 'options': case 'data': break; default: console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { return "\"" + s + "\""; }).join(', ') + "; but \"" + key + "\" was provided."); } modifier.requires && modifier.requires.forEach(function (requirement) { if (modifiers.find(function (mod) { return mod.name === requirement; }) == null) { console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); } }); }); }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/uniqueBy.js function uniqueBy(arr, fn) { var identifiers = new Set(); return arr.filter(function (item) { var identifier = fn(item); if (!identifiers.has(identifier)) { identifiers.add(identifier); return true; } }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js function getBasePlacement(placement) { return placement.split('-')[0]; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/mergeByName.js function mergeByName(modifiers) { var merged = modifiers.reduce(function (merged, current) { var existing = merged[current.name]; merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, { options: Object.assign(Object.assign({}, existing.options), current.options), data: Object.assign(Object.assign({}, existing.data), current.data) }) : current; return merged; }, {}); // IE11 does not support Object.values return Object.keys(merged).map(function (key) { return merged[key]; }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js function getViewportRect(element) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper // can be obscured underneath it. // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even // if it isn't open, so if this isn't available, the popper will be detected // to overflow the bottom of the screen too early. if (visualViewport) { width = visualViewport.width; height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) // In Chrome, it returns a value very close to 0 (+/-) but contains rounding // errors due to floating point numbers, so we need to check precision. // Safari returns a number <= 0, usually < -1 when pinch-zoomed // Feature detection fails in mobile emulation mode in Chrome. // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < // 0.001 // Fallback here: "Not Safari" userAgent if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } } return { width: width, height: height, x: x + getWindowScrollBarX(element), y: y }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js // Gets the entire size of the scrollable document area, even extending outside // of the `` and `` rect bounds if horizontally scrollable function getDocumentRect(element) { var html = getDocumentElement(element); var winScroll = getWindowScroll(element); var body = element.ownerDocument.body; var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x = -winScroll.scrollLeft + getWindowScrollBarX(element); var y = -winScroll.scrollTop; if (getComputedStyle(body || html).direction === 'rtl') { x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width: width, height: height, x: x, y: y }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/contains.js function contains(parent, child) { var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method if (parent.contains(child)) { return true; } // then fallback to custom implementation with Shadow DOM support else if (rootNode && isShadowRoot(rootNode)) { var next = child; do { if (next && parent.isSameNode(next)) { return true; } // $FlowFixMe[prop-missing]: need a better way to handle this... next = next.parentNode || next.host; } while (next); } // Give up, the result is false return false; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js function rectToClientRect(rect) { return Object.assign(Object.assign({}, rect), {}, { left: rect.x, top: rect.y, right: rect.x + rect.width, bottom: rect.y + rect.height }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js function getInnerBoundingClientRect(element) { var rect = getBoundingClientRect(element); rect.top = rect.top + element.clientTop; rect.left = rect.left + element.clientLeft; rect.bottom = rect.top + element.clientHeight; rect.right = rect.left + element.clientWidth; rect.width = element.clientWidth; rect.height = element.clientHeight; rect.x = rect.left; rect.y = rect.top; return rect; } function getClientRectFromMixedType(element, clippingParent) { return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } // A "clipping parent" is an overflowable container with the characteristic of // clipping (or hiding) overflowing elements with a position different from // `initial` function getClippingParents(element) { var clippingParents = listScrollParents(getParentNode(element)); var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; if (!isElement(clipperElement)) { return []; } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 return clippingParents.filter(function (clippingParent) { return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; }); } // Gets the maximum area that the element is visible in due to any number of // clipping parents function getClippingRect(element, boundary, rootBoundary) { var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); var clippingParents = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents[0]; var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { var rect = getClientRectFromMixedType(element, clippingParent); accRect.top = Math.max(rect.top, accRect.top); accRect.right = Math.min(rect.right, accRect.right); accRect.bottom = Math.min(rect.bottom, accRect.bottom); accRect.left = Math.max(rect.left, accRect.left); return accRect; }, getClientRectFromMixedType(element, firstClippingParent)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; clippingRect.y = clippingRect.top; return clippingRect; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getVariation.js function getVariation(placement) { return placement.split('-')[1]; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js function getMainAxisFromPlacement(placement) { return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/computeOffsets.js function computeOffsets(_ref) { var reference = _ref.reference, element = _ref.element, placement = _ref.placement; var basePlacement = placement ? getBasePlacement(placement) : null; var variation = placement ? getVariation(placement) : null; var commonX = reference.x + reference.width / 2 - element.width / 2; var commonY = reference.y + reference.height / 2 - element.height / 2; var offsets; switch (basePlacement) { case enums_top: offsets = { x: commonX, y: reference.y - element.height }; break; case bottom: offsets = { x: commonX, y: reference.y + reference.height }; break; case right: offsets = { x: reference.x + reference.width, y: commonY }; break; case left: offsets = { x: reference.x - element.width, y: commonY }; break; default: offsets = { x: reference.x, y: reference.y }; } var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; if (mainAxis != null) { var len = mainAxis === 'y' ? 'height' : 'width'; switch (variation) { case start: offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); break; case end: offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); break; default: } } return offsets; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js function getFreshSideObject() { return { top: 0, right: 0, bottom: 0, left: 0 }; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js function mergePaddingObject(paddingObject) { return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js function expandToHashMap(value, keys) { return keys.reduce(function (hashMap, key) { hashMap[key] = value; return hashMap; }, {}); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/detectOverflow.js // eslint-disable-next-line import/no-unused-modules function detectOverflow(state, options) { if (options === void 0) { options = {}; } var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); var altContext = elementContext === popper ? reference : popper; var referenceElement = state.elements.reference; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); var referenceClientRect = getBoundingClientRect(referenceElement); var popperOffsets = computeOffsets({ reference: referenceClientRect, element: popperRect, strategy: 'absolute', placement: placement }); var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets)); var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect // 0 or negative = within the clipping rect var overflowOffsets = { top: clippingClientRect.top - elementClientRect.top + paddingObject.top, bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, left: clippingClientRect.left - elementClientRect.left + paddingObject.left, right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element if (elementContext === popper && offsetData) { var offset = offsetData[placement]; Object.keys(overflowOffsets).forEach(function (key) { var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; var axis = [enums_top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; overflowOffsets[key] += offset[axis] * multiply; }); } return overflowOffsets; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/createPopper.js var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; var DEFAULT_OPTIONS = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; function areValidElements() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return !args.some(function (element) { return !(element && typeof element.getBoundingClientRect === 'function'); }); } function popperGenerator(generatorOptions) { if (generatorOptions === void 0) { generatorOptions = {}; } var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; return function createPopper(reference, popper, options) { if (options === void 0) { options = defaultOptions; } var state = { placement: 'bottom', orderedModifiers: [], options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions), modifiersData: {}, elements: { reference: reference, popper: popper }, attributes: {}, styles: {} }; var effectCleanupFns = []; var isDestroyed = false; var instance = { state: state, setOptions: function setOptions(options) { cleanupModifierEffects(); state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options); state.scrollParents = { reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], popper: listScrollParents(popper) }; // Orders the modifiers based on their dependencies and `phase` // properties var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers state.orderedModifiers = orderedModifiers.filter(function (m) { return m.enabled; }); // Validate the provided modifiers so that the consumer will get warned // if one of the modifiers is invalid for any reason if (true) { var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { var name = _ref.name; return name; }); validateModifiers(modifiers); if (getBasePlacement(state.options.placement) === auto) { var flipModifier = state.orderedModifiers.find(function (_ref2) { var name = _ref2.name; return name === 'flip'; }); if (!flipModifier) { console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); } } var _getComputedStyle = getComputedStyle(popper), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can // cause bugs with positioning, so we'll warn the consumer if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { return parseFloat(margin); })) { console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); } } runModifierEffects(); return instance.update(); }, // Sync update – it will always be executed, even if not necessary. This // is useful for low frequency updates where sync behavior simplifies the // logic. // For high frequency updates (e.g. `resize` and `scroll` events), always // prefer the async Popper#update method forceUpdate: function forceUpdate() { if (isDestroyed) { return; } var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements // anymore if (!areValidElements(reference, popper)) { if (true) { console.error(INVALID_ELEMENT_ERROR); } return; } // Store the reference and popper rects to be read by modifiers state.rects = { reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), popper: getLayoutRect(popper) }; // Modifiers have the ability to reset the current update cycle. The // most common use case for this is the `flip` modifier changing the // placement, which then needs to re-run all the modifiers, because the // logic was previously ran for the previous placement and is therefore // stale/incorrect state.reset = false; state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier // is filled with the initial data specified by the modifier. This means // it doesn't persist and is fresh on each update. // To ensure persistent data, use `${name}#persistent` state.orderedModifiers.forEach(function (modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); var __debug_loops__ = 0; for (var index = 0; index < state.orderedModifiers.length; index++) { if (true) { __debug_loops__ += 1; if (__debug_loops__ > 100) { console.error(INFINITE_LOOP_ERROR); break; } } if (state.reset === true) { state.reset = false; index = -1; continue; } var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; if (typeof fn === 'function') { state = fn({ state: state, options: _options, name: name, instance: instance }) || state; } } }, // Async and optimistically optimized update – it will not be executed if // not necessary (debounced to run at most once-per-tick) update: debounce(function () { return new Promise(function (resolve) { instance.forceUpdate(); resolve(state); }); }), destroy: function destroy() { cleanupModifierEffects(); isDestroyed = true; } }; if (!areValidElements(reference, popper)) { if (true) { console.error(INVALID_ELEMENT_ERROR); } return instance; } instance.setOptions(options).then(function (state) { if (!isDestroyed && options.onFirstUpdate) { options.onFirstUpdate(state); } }); // Modifiers have the ability to execute arbitrary code before the first // update cycle runs. They will be executed in the same order as the update // cycle. This is useful when a modifier adds some persistent data that // other modifiers need to use, but the modifier is run after the dependent // one. function runModifierEffects() { state.orderedModifiers.forEach(function (_ref3) { var name = _ref3.name, _ref3$options = _ref3.options, options = _ref3$options === void 0 ? {} : _ref3$options, effect = _ref3.effect; if (typeof effect === 'function') { var cleanupFn = effect({ state: state, name: name, instance: instance, options: options }); var noopFn = function noopFn() {}; effectCleanupFns.push(cleanupFn || noopFn); } }); } function cleanupModifierEffects() { effectCleanupFns.forEach(function (fn) { return fn(); }); effectCleanupFns = []; } return instance; }; } var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js // eslint-disable-next-line import/no-unused-modules var passive = { passive: true }; function effect(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; var window = getWindow(state.elements.popper); var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); if (scroll) { scrollParents.forEach(function (scrollParent) { scrollParent.addEventListener('scroll', instance.update, passive); }); } if (resize) { window.addEventListener('resize', instance.update, passive); } return function () { if (scroll) { scrollParents.forEach(function (scrollParent) { scrollParent.removeEventListener('scroll', instance.update, passive); }); } if (resize) { window.removeEventListener('resize', instance.update, passive); } }; } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var eventListeners = ({ name: 'eventListeners', enabled: true, phase: 'write', fn: function fn() {}, effect: effect, data: {} }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js function popperOffsets(_ref) { var state = _ref.state, name = _ref.name; // Offsets are the actual position the popper needs to have to be // properly positioned near its reference element // This is the most basic placement, and will be adjusted by // the modifiers in the next step state.modifiersData[name] = computeOffsets({ reference: state.rects.reference, element: state.rects.popper, strategy: 'absolute', placement: state.placement }); } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_popperOffsets = ({ name: 'popperOffsets', enabled: true, phase: 'read', fn: popperOffsets, data: {} }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js // eslint-disable-next-line import/no-unused-modules var unsetSides = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; // Round the offsets to the nearest suitable subpixel based on the DPR. // Zooming can change the DPR, but it seems to report a value that will // cleanly divide the values into the appropriate subpixels. function roundOffsetsByDPR(_ref) { var x = _ref.x, y = _ref.y; var win = window; var dpr = win.devicePixelRatio || 1; return { x: Math.round(x * dpr) / dpr || 0, y: Math.round(y * dpr) / dpr || 0 }; } function mapToStyles(_ref2) { var _Object$assign2; var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets; var _ref3 = roundOffsets ? roundOffsetsByDPR(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; var hasX = offsets.hasOwnProperty('x'); var hasY = offsets.hasOwnProperty('y'); var sideX = left; var sideY = enums_top; var win = window; if (adaptive) { var offsetParent = getOffsetParent(popper); if (offsetParent === getWindow(popper)) { offsetParent = getDocumentElement(popper); } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it /*:: offsetParent = (offsetParent: Element); */ if (placement === enums_top) { sideY = bottom; y -= offsetParent.clientHeight - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left) { sideX = right; x -= offsetParent.clientWidth - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position: position }, adaptive && unsetSides); if (gpuAcceleration) { var _Object$assign; return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } function computeStyles(_ref4) { var state = _ref4.state, options = _ref4.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; if (true) { var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { return transitionProperty.indexOf(property) >= 0; })) { console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); } } var commonStyles = { placement: getBasePlacement(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, gpuAcceleration: gpuAcceleration }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive: adaptive, roundOffsets: roundOffsets }))); } if (state.modifiersData.arrow != null) { state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { offsets: state.modifiersData.arrow, position: 'absolute', adaptive: false, roundOffsets: roundOffsets }))); } state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { 'data-popper-placement': state.placement }); } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_computeStyles = ({ name: 'computeStyles', enabled: true, phase: 'beforeWrite', fn: computeStyles, data: {} }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js // This modifier takes the styles prepared by the `computeStyles` modifier // and applies them to the HTMLElements such as popper and arrow function applyStyles(_ref) { var state = _ref.state; Object.keys(state.elements).forEach(function (name) { var style = state.styles[name] || {}; var attributes = state.attributes[name] || {}; var element = state.elements[name]; // arrow is optional + virtual elements if (!isHTMLElement(element) || !getNodeName(element)) { return; } // Flow doesn't support to extend this property, but it's the most // effective way to apply styles to an HTMLElement // $FlowFixMe[cannot-write] Object.assign(element.style, style); Object.keys(attributes).forEach(function (name) { var value = attributes[name]; if (value === false) { element.removeAttribute(name); } else { element.setAttribute(name, value === true ? '' : value); } }); }); } function applyStyles_effect(_ref2) { var state = _ref2.state; var initialStyles = { popper: { position: state.options.strategy, left: '0', top: '0', margin: '0' }, arrow: { position: 'absolute' }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } return function () { Object.keys(state.elements).forEach(function (name) { var element = state.elements[name]; var attributes = state.attributes[name] || {}; var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them var style = styleProperties.reduce(function (style, property) { style[property] = ''; return style; }, {}); // arrow is optional + virtual elements if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function (attribute) { element.removeAttribute(attribute); }); }); }; } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_applyStyles = ({ name: 'applyStyles', enabled: true, phase: 'write', fn: applyStyles, effect: applyStyles_effect, requires: ['computeStyles'] }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/offset.js function distanceAndSkiddingToXY(placement, rects, offset) { var basePlacement = getBasePlacement(placement); var invertDistance = [left, enums_top].indexOf(basePlacement) >= 0 ? -1 : 1; var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, { placement: placement })) : offset, skidding = _ref[0], distance = _ref[1]; skidding = skidding || 0; distance = (distance || 0) * invertDistance; return [left, right].indexOf(basePlacement) >= 0 ? { x: distance, y: skidding } : { x: skidding, y: distance }; } function offset(_ref2) { var state = _ref2.state, options = _ref2.options, name = _ref2.name; var _options$offset = options.offset, offset = _options$offset === void 0 ? [0, 0] : _options$offset; var data = enums_placements.reduce(function (acc, placement) { acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); return acc; }, {}); var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; if (state.modifiersData.popperOffsets != null) { state.modifiersData.popperOffsets.x += x; state.modifiersData.popperOffsets.y += y; } state.modifiersData[name] = data; } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_offset = ({ name: 'offset', enabled: true, phase: 'main', requires: ['popperOffsets'], fn: offset }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function (matched) { return hash[matched]; }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js var getOppositeVariationPlacement_hash = { start: 'end', end: 'start' }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function (matched) { return getOppositeVariationPlacement_hash[matched]; }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js /*:: type OverflowsMap = { [ComputedPlacement]: number }; */ /*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */ function computeAutoPlacement(state, options) { if (options === void 0) { options = {}; } var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? enums_placements : _options$allowedAutoP; var variation = getVariation(placement); var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { return getVariation(placement) === variation; }) : basePlacements; var allowedPlacements = placements.filter(function (placement) { return allowedAutoPlacements.indexOf(placement) >= 0; }); if (allowedPlacements.length === 0) { allowedPlacements = placements; if (true) { console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); } } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... var overflows = allowedPlacements.reduce(function (acc, placement) { acc[placement] = detectOverflow(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, padding: padding })[getBasePlacement(placement)]; return acc; }, {}); return Object.keys(overflows).sort(function (a, b) { return overflows[a] - overflows[b]; }); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/flip.js // eslint-disable-next-line import/no-unused-modules function getExpandedFallbackPlacements(placement) { if (getBasePlacement(placement) === auto) { return []; } var oppositePlacement = getOppositePlacement(placement); return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; } function flip(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; if (state.modifiersData[name]._skip) { return; } var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; var preferredPlacement = state.options.placement; var basePlacement = getBasePlacement(preferredPlacement); var isBasePlacement = basePlacement === preferredPlacement; var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, padding: padding, flipVariations: flipVariations, allowedAutoPlacements: allowedAutoPlacements }) : placement); }, []); var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var checksMap = new Map(); var makeFallbackChecks = true; var firstFittingPlacement = placements[0]; for (var i = 0; i < placements.length; i++) { var placement = placements[i]; var _basePlacement = getBasePlacement(placement); var isStartVariation = getVariation(placement) === start; var isVertical = [enums_top, bottom].indexOf(_basePlacement) >= 0; var len = isVertical ? 'width' : 'height'; var overflow = detectOverflow(state, { placement: placement, boundary: boundary, rootBoundary: rootBoundary, altBoundary: altBoundary, padding: padding }); var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : enums_top; if (referenceRect[len] > popperRect[len]) { mainVariationSide = getOppositePlacement(mainVariationSide); } var altVariationSide = getOppositePlacement(mainVariationSide); var checks = []; if (checkMainAxis) { checks.push(overflow[_basePlacement] <= 0); } if (checkAltAxis) { checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); } if (checks.every(function (check) { return check; })) { firstFittingPlacement = placement; makeFallbackChecks = false; break; } checksMap.set(placement, checks); } if (makeFallbackChecks) { // `2` may be desired in some cases – research later var numberOfChecks = flipVariations ? 3 : 1; var _loop = function _loop(_i) { var fittingPlacement = placements.find(function (placement) { var checks = checksMap.get(placement); if (checks) { return checks.slice(0, _i).every(function (check) { return check; }); } }); if (fittingPlacement) { firstFittingPlacement = fittingPlacement; return "break"; } }; for (var _i = numberOfChecks; _i > 0; _i--) { var _ret = _loop(_i); if (_ret === "break") break; } } if (state.placement !== firstFittingPlacement) { state.modifiersData[name]._skip = true; state.placement = firstFittingPlacement; state.reset = true; } } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_flip = ({ name: 'flip', enabled: true, phase: 'main', fn: flip, requiresIfExists: ['offset'], data: { _skip: false } }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/getAltAxis.js function getAltAxis(axis) { return axis === 'x' ? 'y' : 'x'; } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/within.js function within(min, value, max) { return Math.max(min, Math.min(value, max)); } ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js function preventOverflow(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; var overflow = detectOverflow(state, { boundary: boundary, rootBoundary: rootBoundary, padding: padding, altBoundary: altBoundary }); var basePlacement = getBasePlacement(state.placement); var variation = getVariation(state.placement); var isBasePlacement = !variation; var mainAxis = getMainAxisFromPlacement(basePlacement); var altAxis = getAltAxis(mainAxis); var popperOffsets = state.modifiersData.popperOffsets; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, { placement: state.placement })) : tetherOffset; var data = { x: 0, y: 0 }; if (!popperOffsets) { return; } if (checkMainAxis) { var mainSide = mainAxis === 'y' ? enums_top : left; var altSide = mainAxis === 'y' ? bottom : right; var len = mainAxis === 'y' ? 'height' : 'width'; var offset = popperOffsets[mainAxis]; var min = popperOffsets[mainAxis] + overflow[mainSide]; var max = popperOffsets[mainAxis] - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go // outside the reference bounds var arrowElement = state.elements.arrow; var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { width: 0, height: 0 }; var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); var arrowPaddingMin = arrowPaddingObject[mainSide]; var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want // to include its full size in the calculation. If the reference is small // and near the edge of a boundary, the popper can overflow even if the // reference is not overflowing as well (e.g. virtual elements with no // width or height) var arrowLen = within(0, referenceRect[len], arrowRect[len]); var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max); popperOffsets[mainAxis] = preventedOffset; data[mainAxis] = preventedOffset - offset; } if (checkAltAxis) { var _mainSide = mainAxis === 'x' ? enums_top : left; var _altSide = mainAxis === 'x' ? bottom : right; var _offset = popperOffsets[altAxis]; var _min = _offset + overflow[_mainSide]; var _max = _offset - overflow[_altSide]; var _preventedOffset = within(_min, _offset, _max); popperOffsets[altAxis] = _preventedOffset; data[altAxis] = _preventedOffset - _offset; } state.modifiersData[name] = data; } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_preventOverflow = ({ name: 'preventOverflow', enabled: true, phase: 'main', fn: preventOverflow, requiresIfExists: ['offset'] }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/arrow.js // eslint-disable-next-line import/no-unused-modules function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, name = _ref.name; var arrowElement = state.elements.arrow; var popperOffsets = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); var axis = getMainAxisFromPlacement(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0; var len = isVertical ? 'height' : 'width'; if (!arrowElement || !popperOffsets) { return; } var paddingObject = state.modifiersData[name + "#persistent"].padding; var arrowRect = getLayoutRect(arrowElement); var minProp = axis === 'y' ? enums_top : left; var maxProp = axis === 'y' ? bottom : right; var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; var startDiff = popperOffsets[axis] - state.rects.reference[axis]; var arrowOffsetParent = getOffsetParent(arrowElement); var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is // outside of the popper bounds var min = paddingObject[minProp]; var max = clientSize - arrowRect[len] - paddingObject[maxProp]; var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; var offset = within(min, center, max); // Prevents breaking syntax highlighting... var axisProp = axis; state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); } function arrow_effect(_ref2) { var state = _ref2.state, options = _ref2.options, name = _ref2.name; var _options$element = options.element, arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element, _options$padding = options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; if (arrowElement == null) { return; } // CSS selector if (typeof arrowElement === 'string') { arrowElement = state.elements.popper.querySelector(arrowElement); if (!arrowElement) { return; } } if (true) { if (!isHTMLElement(arrowElement)) { console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); } } if (!contains(state.elements.popper, arrowElement)) { if (true) { console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); } return; } state.elements.arrow = arrowElement; state.modifiersData[name + "#persistent"] = { padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)) }; } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_arrow = ({ name: 'arrow', enabled: true, phase: 'main', fn: arrow, effect: arrow_effect, requires: ['popperOffsets'], requiresIfExists: ['preventOverflow'] }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/hide.js function getSideOffsets(overflow, rect, preventedOffsets) { if (preventedOffsets === void 0) { preventedOffsets = { x: 0, y: 0 }; } return { top: overflow.top - rect.height - preventedOffsets.y, right: overflow.right - rect.width + preventedOffsets.x, bottom: overflow.bottom - rect.height + preventedOffsets.y, left: overflow.left - rect.width - preventedOffsets.x }; } function isAnySideFullyClipped(overflow) { return [enums_top, right, bottom, left].some(function (side) { return overflow[side] >= 0; }); } function hide(_ref) { var state = _ref.state, name = _ref.name; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var preventedOffsets = state.modifiersData.preventOverflow; var referenceOverflow = detectOverflow(state, { elementContext: 'reference' }); var popperAltOverflow = detectOverflow(state, { altBoundary: true }); var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); state.modifiersData[name] = { referenceClippingOffsets: referenceClippingOffsets, popperEscapeOffsets: popperEscapeOffsets, isReferenceHidden: isReferenceHidden, hasPopperEscaped: hasPopperEscaped }; state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { 'data-popper-reference-hidden': isReferenceHidden, 'data-popper-escaped': hasPopperEscaped }); } // eslint-disable-next-line import/no-unused-modules /* harmony default export */ var modifiers_hide = ({ name: 'hide', enabled: true, phase: 'main', requiresIfExists: ['preventOverflow'], fn: hide }); ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/popper-lite.js var defaultModifiers = [eventListeners, modifiers_popperOffsets, modifiers_computeStyles, modifiers_applyStyles]; var popper_lite_createPopper = /*#__PURE__*/popperGenerator({ defaultModifiers: defaultModifiers }); // eslint-disable-next-line import/no-unused-modules ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/modifiers/index.js ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/popper.js var popper_defaultModifiers = [eventListeners, modifiers_popperOffsets, modifiers_computeStyles, modifiers_applyStyles, modifiers_offset, modifiers_flip, modifiers_preventOverflow, modifiers_arrow, modifiers_hide]; var popper_createPopper = /*#__PURE__*/popperGenerator({ defaultModifiers: popper_defaultModifiers }); // eslint-disable-next-line import/no-unused-modules // eslint-disable-next-line import/no-unused-modules // eslint-disable-next-line import/no-unused-modules ;// CONCATENATED MODULE: ./src/mixins/tooltip.ts function _newCreatePopper(reference, popper, placement, offset) { return popper_createPopper(reference, popper, { placement: placement, modifiers: [ { name: 'computeStyles', options: { gpuAcceleration: false // 使用top/left属性。否则会和弹出器动画冲突 } }, { name: 'computeStyles', options: { adaptive: false // 避免重新计算弹出器位置从而造成位置牛头不对马嘴 } }, { name: 'offset', options: { offset: [offset] // 自定义弹出器出现位置的偏移量 } } ] }); } // EXTERNAL MODULE: ./src/mixins/warn.ts var warn = __webpack_require__("./src/mixins/warn.ts"); ;// CONCATENATED MODULE: ./src/mixins/index.ts /***/ }), /***/ "./src/mixins/warn.ts": /*!****************************!*\ !*** ./src/mixins/warn.ts ***! \****************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": function() { return /* binding */ warn; } /* harmony export */ }); function warn(msg) { console.error("[Rabbit] Error: " + msg); return; } /***/ }), /***/ "./src/utils/check-type.ts": /*!*********************************!*\ !*** ./src/utils/check-type.ts ***! \*********************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "isUndef": function() { return /* binding */ isUndef; }, /* harmony export */ "isStr": function() { return /* binding */ isStr; }, /* harmony export */ "isNum": function() { return /* binding */ isNum; }, /* harmony export */ "isBol": function() { return /* binding */ isBol; }, /* harmony export */ "isFn": function() { return /* binding */ isFn; }, /* harmony export */ "isObj": function() { return /* binding */ isObj; }, /* harmony export */ "isArr": function() { return /* binding */ isArr; } /* harmony export */ }); /* harmony import */ var _mixins_warn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../mixins/warn */ "./src/mixins/warn.ts"); /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ var typeOf = function (r) { var s = Object.prototype.toString.call(r); return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }; var errMsg = function (right, wrong) { (0,_mixins_warn__WEBPACK_IMPORTED_MODULE_0__.default)("The expected type accepted is " + right + ", but the error type currently in use is --> " + wrong); return false; }; var isUndef = function (r) { return typeof r === 'undefined'; }; var isStr = function (r) { return typeof r === 'string' ? true : errMsg('string', typeOf(r)); }; var isNum = function (r) { return typeof r === 'number' ? true : errMsg('number', typeOf(r)); }; var isBol = function (r) { return typeof r === 'boolean' ? true : errMsg('boolean', typeOf(r)); }; /** * * @param r 函数名 * @param param 回调附带的参数。有多个参数时使用数组传递 */ var isFn = function (r, param) { return typeof r === 'function' ? r(param) : errMsg('function', typeOf(r)); }; var isObj = function (r) { return r.constructor === Object ? true : errMsg('object', typeOf(r)); }; var isArr = function (r) { return r.constructor === Array ? true : errMsg('array', typeOf(r)); }; /***/ }), /***/ "./src/utils/index.ts": /*!****************************************!*\ !*** ./src/utils/index.ts + 4 modules ***! \****************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "destroyElem": function() { return /* reexport */ destroyElem; }, "destroyElemByKey": function() { return /* reexport */ destroyElemByKey; }, "randomStr": function() { return /* reexport */ random_str; }, "type": function() { return /* reexport */ check_type; }, "useHTMLString": function() { return /* reexport */ isUseHTMLString; }, "validComps": function() { return /* reexport */ validComps; } }); // EXTERNAL MODULE: ./src/utils/check-type.ts var check_type = __webpack_require__("./src/utils/check-type.ts"); // EXTERNAL MODULE: ./src/mixins/index.ts + 63 modules var mixins = __webpack_require__("./src/mixins/index.ts"); ;// CONCATENATED MODULE: ./src/utils/destroy.ts function destroyElem(elem, _a) { var _b = _a.fadeOut, fadeOut = _b === void 0 ? false : _b, clsLeave = _a.clsLeave, clsEnter = _a.clsEnter, _c = _a.duration, duration = _c === void 0 ? 3 : _c, _d = _a.transitionTime, transitionTime = _d === void 0 ? 250 : _d, _e = _a.destroy, destroy = _e === void 0 ? true : _e; var timer = null; // 方式一:是否只用淡出效果 if (fadeOut) { isDismiss(); (0,mixins.CssTransition)(elem, { inOrOut: 'out', enterCls: 'rab-fade-in', leaveCls: 'rab-fade-out', timeout: 250 }); return; } // 方式二:手动配置过渡效果和过渡时间 timer = setTimeout(function () { isDismiss(); (0,mixins.CssTransition)(elem, { inOrOut: 'out', enterCls: clsEnter, leaveCls: clsLeave, timeout: transitionTime }); }, duration * 1000); // 自动关闭的延时为 0 则不关闭 duration <= 0 ? clearTimeout(timer) : timer; // 判断需要销毁或者是仅隐藏元素 function isDismiss() { setTimeout(function () { if (destroy) { elem.remove(); elem = null; // 释放内存 } }, transitionTime); } } function destroyElemByKey(options) { var prefixKey = options.prefixKey, key = options.key; var target = document.querySelector("[" + prefixKey + "-key=\"" + key + "\"]"); // 传入的key是否选取得到对应的元素 if (target) { destroyElem(target, options); } } ;// CONCATENATED MODULE: ./src/utils/random-str.ts // 生成随机字符串 /* harmony default export */ function random_str(len) { if (len === void 0) { len = 32; } var $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; var maxPos = $chars.length; var str = '', i = 0; for (; i < len; i++) { str += $chars.charAt(Math.floor(Math.random() * maxPos)); } return str; } // EXTERNAL MODULE: ./src/dom-utils/index.ts + 5 modules var dom_utils = __webpack_require__("./src/dom-utils/index.ts"); ;// CONCATENATED MODULE: ./src/utils/use-html-string.ts /** * 设置属性是否支持传入 HTML 片段 * @param elem * @param content * @param use */ function isUseHTMLString(elem, content, use) { use ? (0,dom_utils.setHtml)(elem, content) : (0,dom_utils.setText)(elem, content); } ;// CONCATENATED MODULE: ./src/utils/validComps.ts /** * 检查是否为有效并且正确的组件 */ function validComps(target, compName) { var r = '[Rabbit] Error: '; if (!target) { throw new Error("The target element you selected for configuration does not exist -- > '" + target + "'. This error occurred in the " + compName + " component"); } var targetName = target.tagName.toLowerCase().replace(/r-/, ''); if (targetName !== compName) { throw (new Error().message = r + "The configured component was selected incorrectly, it is not a " + compName + " component --> \"" + targetName + "\""); } } ;// CONCATENATED MODULE: ./src/utils/index.ts /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports /******/ return __webpack_require__("./src/build-umd.ts"); /******/ })() ; }); //# sourceMappingURL=rabbit.js.map ================================================ FILE: dist/styles/rabbit.css ================================================ /*! * RabbitUI * Web: https://www.rabbitui.cn * Github: https://github.com/niu-grandpa/rabbit-ui * Author: 钟瑞鸿 (Ryan John) */.rab-load-loop{-webkit-animation:ani-load-loop 1s linear infinite;animation:ani-load-loop 1s linear infinite}@-webkit-keyframes ani-load-loop{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ani-load-loop{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.input-group-error-append,.input-group-error-prepend{background-color:#fff;border:1px solid #ff4d4f}.input-group-error-append .rab-select-selection,.input-group-error-prepend .rab-select-selection{background-color:inherit;border:1px solid transparent}.input-group-error-prepend{border-right:0}.input-group-error-append{border-left:0} /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}*{-webkit-tap-highlight-color:rgba(0,0,0,0)}*,:after,:before{box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color,Segoe UI Symbol,Noto Color;font-size:14px;line-height:1.5;color:#55585e;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article,aside,blockquote,body,button,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,input,legend,li,menu,nav,ol,p,section,td,textarea,th,ul{margin:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}input::-ms-clear,input::-ms-reveal{display:none}a{color:#1890ff;background:transparent;text-decoration:none;outline:none;cursor:pointer;transition:color .2s ease}a:hover{color:#46a6ff}a:active{color:#1789f2}a:active,a:hover{outline:0;text-decoration:none}a[disabled]{color:#ccc;cursor:not-allowed;pointer-events:none}p{margin-top:0;margin-bottom:1rem}code{padding:.2em .4em;margin:0;font-size:85%;background-color:#fff5f5;border-radius:3px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;color:#fa795e}code,kbd,pre,samp{font-family:Consolas,Menlo,Courier,monospace}hr{box-sizing:content-box;height:0;overflow:visible;margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}@font-face{font-family:Iconfont;src:url(../fonts/iconfont.eot);src:url(../fonts/iconfont.eot?#iefix) format("embedded-opentype"),url(../fonts/iconfont.woff2) format("woff2"),url(../fonts/iconfont.woff) format("woff"),url(../fonts/iconfont.ttf) format("truetype"),url(../fonts/iconfont.svg#iconfont) format("svg");font-weight:400;font-style:normal}.rab-icon{display:inline-block;font-family:Iconfont;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:optimizeLegibility;line-height:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:inherit;text-align:center}.rab-icon-ios-alert-outline:before{content:"\e8b7"}.rab-icon-rabbit:before{content:"\e600"}.rab-icon-403:before{content:"\e8b6"}.rab-icon-500:before{content:"\e8bc"}.rab-icon-4042:before{content:"\ef05"}.rab-icon-loading-solid:before{content:"\e8b4"}.rab-icon-loading1:before{content:"\e8b5"}.rab-icon-md-arrow-dropup-circle:before{content:"\e638"}.rab-icon-md-swap:before{content:"\e738"}.rab-icon-ios-person-add:before{content:"\e838"}.rab-icon-md-arrow-dropup:before{content:"\e639"}.rab-icon-md-sunny:before{content:"\e739"}.rab-icon-ios-phone-landscape:before{content:"\e839"}.rab-icon-md-arrow-round-down:before{content:"\e63a"}.rab-icon-md-subway:before{content:"\e73a"}.rab-icon-ios-photos:before{content:"\e83a"}.rab-icon-md-arrow-forward:before{content:"\e63b"}.rab-icon-md-switch:before{content:"\e73b"}.rab-icon-ios-pin:before{content:"\e83b"}.rab-icon-md-arrow-round-back:before{content:"\e63c"}.rab-icon-md-tablet-landscape:before{content:"\e73c"}.rab-icon-ios-pie:before{content:"\e83c"}.rab-icon-md-arrow-up:before{content:"\e63d"}.rab-icon-md-sync:before{content:"\e73d"}.rab-icon-ios-pint:before{content:"\e83d"}.rab-icon-md-arrow-round-up:before{content:"\e63e"}.rab-icon-md-text:before{content:"\e73e"}.rab-icon-ios-partly-sunny:before{content:"\e83e"}.rab-icon-md-arrow-round-forward:before{content:"\e63f"}.rab-icon-md-tablet-portrait:before{content:"\e73f"}.rab-icon-ios-planet:before{content:"\e83f"}.rab-icon-md-backspace:before{content:"\e640"}.rab-icon-md-tennisball:before{content:"\e740"}.rab-icon-ios-pizza:before{content:"\e840"}.rab-icon-md-at:before{content:"\e641"}.rab-icon-md-thermometer:before{content:"\e741"}.rab-icon-ios-play:before{content:"\e841"}.rab-icon-md-attach:before{content:"\e642"}.rab-icon-md-thumbs-up:before{content:"\e742"}.rab-icon-ios-play-circle:before{content:"\e842"}.rab-icon-md-basket:before{content:"\e643"}.rab-icon-md-thumbs-down:before{content:"\e743"}.rab-icon-ios-podium:before{content:"\e843"}.rab-icon-md-battery-dead:before{content:"\e644"}.rab-icon-md-stats:before{content:"\e744"}.rab-icon-ios-power:before{content:"\e844"}.rab-icon-md-basketball:before{content:"\e645"}.rab-icon-md-thunderstorm:before{content:"\e745"}.rab-icon-ios-pricetag:before{content:"\e845"}.rab-icon-md-battery-charging:before{content:"\e646"}.rab-icon-md-time:before{content:"\e746"}.rab-icon-ios-pricetags:before{content:"\e846"}.rab-icon-md-battery-full:before{content:"\e647"}.rab-icon-md-timer:before{content:"\e747"}.rab-icon-ios-print:before{content:"\e847"}.rab-icon-md-bed:before{content:"\e648"}.rab-icon-md-today:before{content:"\e748"}.rab-icon-ios-pulse:before{content:"\e848"}.rab-icon-md-baseball:before{content:"\e649"}.rab-icon-md-transgender:before{content:"\e749"}.rab-icon-ios-qr-scanner:before{content:"\e849"}.rab-icon-md-barcode:before{content:"\e64a"}.rab-icon-md-trash:before{content:"\e74a"}.rab-icon-ios-quote:before{content:"\e84a"}.rab-icon-md-beaker:before{content:"\e64b"}.rab-icon-md-trending-down:before{content:"\e74b"}.rab-icon-ios-radio-button-off:before{content:"\e84b"}.rab-icon-md-bluetooth:before{content:"\e64c"}.rab-icon-md-trending-up:before{content:"\e74c"}.rab-icon-ios-radio-button-on:before{content:"\e84c"}.rab-icon-md-body:before{content:"\e64d"}.rab-icon-md-tv:before{content:"\e74d"}.rab-icon-ios-radio:before{content:"\e84d"}.rab-icon-md-bonfire:before{content:"\e64e"}.rab-icon-md-trophy:before{content:"\e74e"}.rab-icon-ios-recording:before{content:"\e84e"}.rab-icon-md-bicycle:before{content:"\e64f"}.rab-icon-md-umbrella:before{content:"\e74f"}.rab-icon-ios-redo:before{content:"\e84f"}.rab-icon-md-beer:before{content:"\e650"}.rab-icon-md-undo:before{content:"\e750"}.rab-icon-ios-refresh:before{content:"\e850"}.rab-icon-md-book:before{content:"\e651"}.rab-icon-md-videocam:before{content:"\e751"}.rab-icon-ios-refresh-circle:before{content:"\e851"}.rab-icon-md-boat:before{content:"\e652"}.rab-icon-md-volume-mute:before{content:"\e752"}.rab-icon-ios-remove:before{content:"\e852"}.rab-icon-md-bookmark:before{content:"\e653"}.rab-icon-md-volume-low:before{content:"\e753"}.rab-icon-ios-remove-circle-outline:before{content:"\e853"}.rab-icon-md-bookmarks:before{content:"\e654"}.rab-icon-md-volume-high:before{content:"\e754"}.rab-icon-ios-remove-circle:before{content:"\e854"}.rab-icon-md-bowtie:before{content:"\e655"}.rab-icon-md-train:before{content:"\e755"}.rab-icon-ios-reorder:before{content:"\e855"}.rab-icon-md-briefcase:before{content:"\e656"}.rab-icon-md-walk:before{content:"\e756"}.rab-icon-ios-resize:before{content:"\e856"}.rab-icon-md-browsers:before{content:"\e657"}.rab-icon-md-wallet:before{content:"\e757"}.rab-icon-ios-repeat:before{content:"\e857"}.rab-icon-md-brush:before{content:"\e658"}.rab-icon-md-unlock:before{content:"\e758"}.rab-icon-ios-rainy:before{content:"\e858"}.rab-icon-md-bug:before{content:"\e659"}.rab-icon-md-warning:before{content:"\e759"}.rab-icon-ios-return-left:before{content:"\e859"}.rab-icon-md-build:before{content:"\e65a"}.rab-icon-md-volume-off:before{content:"\e75a"}.rab-icon-ios-restaurant:before{content:"\e85a"}.rab-icon-md-bulb:before{content:"\e65b"}.rab-icon-md-water:before{content:"\e75b"}.rab-icon-ios-return-right:before{content:"\e85b"}.rab-icon-md-business:before{content:"\e65c"}.rab-icon-md-watch:before{content:"\e75c"}.rab-icon-ios-rewind:before{content:"\e85c"}.rab-icon-md-cafe:before{content:"\e65d"}.rab-icon-md-woman:before{content:"\e75d"}.rab-icon-ios-reverse-camera:before{content:"\e85d"}.rab-icon-md-bus:before{content:"\e65e"}.rab-icon-md-wine:before{content:"\e75e"}.rab-icon-ios-ribbon:before{content:"\e85e"}.rab-icon-md-calculator:before{content:"\e65f"}.rab-icon-md-wifi:before{content:"\e75f"}.rab-icon-ios-rocket:before{content:"\e85f"}.rab-icon-md-call:before{content:"\e660"}.rab-icon-ios-add:before{content:"\e760"}.rab-icon-ios-rose:before{content:"\e860"}.rab-icon-md-car:before{content:"\e661"}.rab-icon-ios-add-circle:before{content:"\e761"}.rab-icon-ios-sad:before{content:"\e861"}.rab-icon-md-camera:before{content:"\e662"}.rab-icon-ios-add-circle-outline:before{content:"\e762"}.rab-icon-ios-save:before{content:"\e862"}.rab-icon-md-card:before{content:"\e663"}.rab-icon-ios-albums:before{content:"\e763"}.rab-icon-ios-search:before{content:"\e863"}.rab-icon-md-cash:before{content:"\e664"}.rab-icon-ios-airplane:before{content:"\e764"}.rab-icon-ios-school:before{content:"\e864"}.rab-icon-md-cellular:before{content:"\e665"}.rab-icon-ios-alarm:before{content:"\e765"}.rab-icon-ios-send:before{content:"\e865"}.rab-icon-md-cart:before{content:"\e666"}.rab-icon-ios-alert:before{content:"\e766"}.rab-icon-ios-share:before{content:"\e866"}.rab-icon-md-calendar:before{content:"\e667"}.rab-icon-ios-analytics:before{content:"\e767"}.rab-icon-ios-settings:before{content:"\e867"}.rab-icon-md-chatbubbles:before{content:"\e668"}.rab-icon-ios-appstore:before{content:"\e768"}.rab-icon-ios-share-alt:before{content:"\e868"}.rab-icon-md-chatboxes:before{content:"\e669"}.rab-icon-ios-aperture:before{content:"\e769"}.rab-icon-ios-shirt:before{content:"\e869"}.rab-icon-md-checkbox:before{content:"\e66a"}.rab-icon-ios-apps:before{content:"\e76a"}.rab-icon-ios-shuffle:before{content:"\e86a"}.rab-icon-md-checkmark:before{content:"\e66b"}.rab-icon-ios-archive:before{content:"\e76b"}.rab-icon-ios-skip-backward:before{content:"\e86b"}.rab-icon-md-checkbox-outline:before{content:"\e66c"}.rab-icon-ios-american-football:before{content:"\e76c"}.rab-icon-ios-skip-forward:before{content:"\e86c"}.rab-icon-md-checkmark-circle:before{content:"\e66d"}.rab-icon-ios-arrow-back:before{content:"\e76d"}.rab-icon-ios-speedometer:before{content:"\e86d"}.rab-icon-md-checkmark-circle-outline:before{content:"\e66e"}.rab-icon-ios-arrow-down:before{content:"\e76e"}.rab-icon-ios-square:before{content:"\e86e"}.rab-icon-md-clipboard:before{content:"\e66f"}.rab-icon-ios-arrow-dropdown-circle:before{content:"\e76f"}.rab-icon-ios-square-outline:before{content:"\e86f"}.rab-icon-md-close:before{content:"\e670"}.rab-icon-ios-arrow-dropdown:before{content:"\e770"}.rab-icon-ios-star:before{content:"\e870"}.rab-icon-md-close-circle:before{content:"\e671"}.rab-icon-ios-arrow-dropleft:before{content:"\e771"}.rab-icon-ios-star-half:before{content:"\e871"}.rab-icon-md-clock:before{content:"\e672"}.rab-icon-ios-arrow-dropleft-circle:before{content:"\e772"}.rab-icon-ios-star-outline:before{content:"\e872"}.rab-icon-md-close-circle-outline:before{content:"\e673"}.rab-icon-ios-arrow-dropright-circle:before{content:"\e773"}.rab-icon-ios-stats:before{content:"\e873"}.rab-icon-md-cloud:before{content:"\e674"}.rab-icon-ios-arrow-dropright:before{content:"\e774"}.rab-icon-ios-snow:before{content:"\e874"}.rab-icon-md-cloud-circle:before{content:"\e675"}.rab-icon-ios-arrow-dropup:before{content:"\e775"}.rab-icon-ios-stopwatch:before{content:"\e875"}.rab-icon-md-cloud-done:before{content:"\e676"}.rab-icon-ios-arrow-dropup-circle:before{content:"\e776"}.rab-icon-ios-sunny:before{content:"\e876"}.rab-icon-md-cloud-download:before{content:"\e677"}.rab-icon-ios-arrow-forward:before{content:"\e777"}.rab-icon-ios-subway:before{content:"\e877"}.rab-icon-md-cloud-outline:before{content:"\e678"}.rab-icon-ios-arrow-round-back:before{content:"\e778"}.rab-icon-ios-swap:before{content:"\e878"}.rab-icon-md-cloudy:before{content:"\e679"}.rab-icon-ios-arrow-round-down:before{content:"\e779"}.rab-icon-ios-switch:before{content:"\e879"}.rab-icon-md-cloudy-night:before{content:"\e67a"}.rab-icon-ios-arrow-round-forward:before{content:"\e77a"}.rab-icon-ios-tablet-landscape:before{content:"\e87a"}.rab-icon-md-code-download:before{content:"\e67b"}.rab-icon-ios-arrow-round-up:before{content:"\e77b"}.rab-icon-ios-sync:before{content:"\e87b"}.rab-icon-md-code-working:before{content:"\e67c"}.rab-icon-ios-arrow-up:before{content:"\e77c"}.rab-icon-ios-tablet-portrait:before{content:"\e87c"}.rab-icon-md-color-fill:before{content:"\e67d"}.rab-icon-ios-at:before{content:"\e77d"}.rab-icon-ios-text:before{content:"\e87d"}.rab-icon-md-color-filter:before{content:"\e67e"}.rab-icon-ios-attach:before{content:"\e77e"}.rab-icon-ios-thermometer:before{content:"\e87e"}.rab-icon-md-cog:before{content:"\e67f"}.rab-icon-ios-backspace:before{content:"\e77f"}.rab-icon-ios-tennisball:before{content:"\e87f"}.rab-icon-md-compass:before{content:"\e680"}.rab-icon-ios-barcode:before{content:"\e780"}.rab-icon-ios-thumbs-down:before{content:"\e880"}.rab-icon-md-color-palette:before{content:"\e681"}.rab-icon-ios-basketball:before{content:"\e781"}.rab-icon-ios-thunderstorm:before{content:"\e881"}.rab-icon-md-color-wand:before{content:"\e682"}.rab-icon-ios-basket:before{content:"\e782"}.rab-icon-ios-thumbs-up:before{content:"\e882"}.rab-icon-md-cloud-upload:before{content:"\e683"}.rab-icon-ios-battery-charging:before{content:"\e783"}.rab-icon-ios-time:before{content:"\e883"}.rab-icon-md-contact:before{content:"\e684"}.rab-icon-ios-battery-dead:before{content:"\e784"}.rab-icon-ios-today:before{content:"\e884"}.rab-icon-md-contacts:before{content:"\e685"}.rab-icon-ios-baseball:before{content:"\e785"}.rab-icon-ios-timer:before{content:"\e885"}.rab-icon-md-code:before{content:"\e686"}.rab-icon-ios-beaker:before{content:"\e786"}.rab-icon-ios-train:before{content:"\e886"}.rab-icon-md-contrast:before{content:"\e687"}.rab-icon-ios-bed:before{content:"\e787"}.rab-icon-ios-trash:before{content:"\e887"}.rab-icon-md-construct:before{content:"\e688"}.rab-icon-ios-beer:before{content:"\e788"}.rab-icon-ios-trending-down:before{content:"\e888"}.rab-icon-md-copy:before{content:"\e689"}.rab-icon-ios-bluetooth:before{content:"\e789"}.rab-icon-ios-transgender:before{content:"\e889"}.rab-icon-md-contract:before{content:"\e68a"}.rab-icon-ios-bicycle:before{content:"\e78a"}.rab-icon-ios-trending-up:before{content:"\e88a"}.rab-icon-md-create:before{content:"\e68b"}.rab-icon-ios-boat:before{content:"\e78b"}.rab-icon-ios-trophy:before{content:"\e88b"}.rab-icon-md-crop:before{content:"\e68c"}.rab-icon-ios-battery-full:before{content:"\e78c"}.rab-icon-ios-tv:before{content:"\e88c"}.rab-icon-md-cube:before{content:"\e68d"}.rab-icon-ios-body:before{content:"\e78d"}.rab-icon-ios-undo:before{content:"\e88d"}.rab-icon-md-cut:before{content:"\e68e"}.rab-icon-ios-book:before{content:"\e78e"}.rab-icon-ios-umbrella:before{content:"\e88e"}.rab-icon-md-disc:before{content:"\e68f"}.rab-icon-ios-bookmark:before{content:"\e78f"}.rab-icon-ios-unlock:before{content:"\e88f"}.rab-icon-md-desktop:before{content:"\e690"}.rab-icon-ios-bonfire:before{content:"\e790"}.rab-icon-ios-videocam:before{content:"\e890"}.rab-icon-md-document:before{content:"\e691"}.rab-icon-ios-bowtie:before{content:"\e791"}.rab-icon-ios-volume-high:before{content:"\e891"}.rab-icon-md-download:before{content:"\e692"}.rab-icon-ios-bookmarks:before{content:"\e792"}.rab-icon-ios-volume-low:before{content:"\e892"}.rab-icon-md-done-all:before{content:"\e693"}.rab-icon-ios-briefcase:before{content:"\e793"}.rab-icon-ios-volume-mute:before{content:"\e893"}.rab-icon-md-easel:before{content:"\e694"}.rab-icon-ios-browsers:before{content:"\e794"}.rab-icon-ios-volume-off:before{content:"\e894"}.rab-icon-md-exit:before{content:"\e695"}.rab-icon-ios-brush:before{content:"\e795"}.rab-icon-ios-wallet:before{content:"\e895"}.rab-icon-md-expand:before{content:"\e696"}.rab-icon-ios-build:before{content:"\e796"}.rab-icon-ios-warning:before{content:"\e896"}.rab-icon-md-eye:before{content:"\e697"}.rab-icon-ios-bulb:before{content:"\e797"}.rab-icon-ios-walk:before{content:"\e897"}.rab-icon-md-eye-off:before{content:"\e698"}.rab-icon-ios-bug:before{content:"\e798"}.rab-icon-ios-water:before{content:"\e898"}.rab-icon-md-fastforward:before{content:"\e699"}.rab-icon-ios-bus:before{content:"\e799"}.rab-icon-ios-wifi:before{content:"\e899"}.rab-icon-md-female:before{content:"\e69a"}.rab-icon-ios-cafe:before{content:"\e79a"}.rab-icon-ios-watch:before{content:"\e89a"}.rab-icon-md-fitness:before{content:"\e69b"}.rab-icon-ios-business:before{content:"\e79b"}.rab-icon-ios-wine:before{content:"\e89b"}.rab-icon-md-film:before{content:"\e69c"}.rab-icon-ios-calculator:before{content:"\e79c"}.rab-icon-ios-woman:before{content:"\e89c"}.rab-icon-md-flag:before{content:"\e69d"}.rab-icon-ios-calendar:before{content:"\e79d"}.rab-icon-logo-android:before{content:"\e89d"}.rab-icon-md-flash:before{content:"\e69e"}.rab-icon-ios-call:before{content:"\e79e"}.rab-icon-logo-bitbucket:before{content:"\e89e"}.rab-icon-md-flashlight:before{content:"\e69f"}.rab-icon-ios-camera:before{content:"\e79f"}.rab-icon-logo-apple:before{content:"\e89f"}.rab-icon-md-flask:before{content:"\e6a0"}.rab-icon-ios-car:before{content:"\e7a0"}.rab-icon-logo-bitcoin:before{content:"\e8a0"}.rab-icon-md-flash-off:before{content:"\e6a1"}.rab-icon-ios-card:before{content:"\e7a1"}.rab-icon-logo-buffer:before{content:"\e8a1"}.rab-icon-md-egg:before{content:"\e6a2"}.rab-icon-ios-cart:before{content:"\e7a2"}.rab-icon-logo-chrome:before{content:"\e8a2"}.rab-icon-md-folder:before{content:"\e6a3"}.rab-icon-ios-cellular:before{content:"\e7a3"}.rab-icon-logo-css:before{content:"\e8a3"}.rab-icon-md-finger-print:before{content:"\e6a4"}.rab-icon-ios-cash:before{content:"\e7a4"}.rab-icon-logo-closed-captioning:before{content:"\e8a4"}.rab-icon-md-filing:before{content:"\e6a5"}.rab-icon-ios-chatboxes:before{content:"\e7a5"}.rab-icon-logo-designernews:before{content:"\e8a5"}.rab-icon-md-flower:before{content:"\e6a6"}.rab-icon-ios-checkbox:before{content:"\e7a6"}.rab-icon-logo-angular:before{content:"\e8a6"}.rab-icon-md-flame:before{content:"\e6a7"}.rab-icon-ios-chatbubbles:before{content:"\e7a7"}.rab-icon-logo-codepen:before{content:"\e8a7"}.rab-icon-md-folder-open:before{content:"\e6a8"}.rab-icon-ios-checkmark:before{content:"\e7a8"}.rab-icon-logo-dribbble:before{content:"\e8a8"}.rab-icon-md-gift:before{content:"\e6a9"}.rab-icon-ios-checkmark-circle:before{content:"\e7a9"}.rab-icon-logo-dropbox:before{content:"\e8a9"}.rab-icon-md-funnel:before{content:"\e6aa"}.rab-icon-ios-checkbox-outline:before{content:"\e7aa"}.rab-icon-logo-facebook:before{content:"\e8aa"}.rab-icon-md-football:before{content:"\e6ab"}.rab-icon-ios-checkmark-circle-outline:before{content:"\e7ab"}.rab-icon-logo-flickr:before{content:"\e8ab"}.rab-icon-md-git-commit:before{content:"\e6ac"}.rab-icon-ios-clipboard:before{content:"\e7ac"}.rab-icon-logo-euro:before{content:"\e8ac"}.rab-icon-md-git-branch:before{content:"\e6ad"}.rab-icon-ios-clock:before{content:"\e7ad"}.rab-icon-logo-foursquare:before{content:"\e8ad"}.rab-icon-md-git-compare:before{content:"\e6ae"}.rab-icon-ios-close:before{content:"\e7ae"}.rab-icon-logo-freebsd-devil:before{content:"\e8ae"}.rab-icon-md-git-merge:before{content:"\e6af"}.rab-icon-ios-close-circle-outline:before{content:"\e7af"}.rab-icon-logo-game-controller-a:before{content:"\e8af"}.rab-icon-md-git-pull-request:before{content:"\e6b0"}.rab-icon-ios-close-circle:before{content:"\e7b0"}.rab-icon-logo-github:before{content:"\e8b0"}.rab-icon-md-git-network:before{content:"\e6b1"}.rab-icon-ios-cloud:before{content:"\e7b1"}.rab-icon-logo-google:before{content:"\e8b1"}.rab-icon-md-glasses:before{content:"\e6b2"}.rab-icon-ios-cloud-circle:before{content:"\e7b2"}.rab-icon-logo-game-controller-b:before{content:"\e8b2"}.rab-icon-md-grid:before{content:"\e6b3"}.rab-icon-ios-cloud-done:before{content:"\e7b3"}.rab-icon-logo-googleplus:before{content:"\e8b3"}.rab-icon-md-happy:before{content:"\e6b4"}.rab-icon-ios-cloud-download:before{content:"\e7b4"}.rab-icon-md-hammer:before{content:"\e6b5"}.rab-icon-ios-cloud-upload:before{content:"\e7b5"}.rab-icon-md-headset:before{content:"\e6b6"}.rab-icon-ios-cloud-outline:before{content:"\e7b6"}.rab-icon-md-hand:before{content:"\e6b7"}.rab-icon-ios-cloudy:before{content:"\e7b7"}.rab-icon-md-heart-dislike:before{content:"\e6b8"}.rab-icon-ios-code:before{content:"\e7b8"}.rab-icon-md-heart:before{content:"\e6b9"}.rab-icon-ios-cloudy-night:before{content:"\e7b9"}.rab-icon-md-heart-empty:before{content:"\e6ba"}.rab-icon-ios-code-download:before{content:"\e7ba"}.rab-icon-md-heart-half:before{content:"\e6bb"}.rab-icon-ios-code-working:before{content:"\e7bb"}.rab-icon-md-help:before{content:"\e6bc"}.rab-icon-ios-color-fill:before{content:"\e7bc"}.rab-icon-md-help-buoy:before{content:"\e6bd"}.rab-icon-ios-cog:before{content:"\e7bd"}.rab-icon-md-help-circle-outline:before{content:"\e6be"}.rab-icon-ios-color-palette:before{content:"\e7be"}.rab-icon-md-home:before{content:"\e6bf"}.rab-icon-ios-color-filter:before{content:"\e7bf"}.rab-icon-md-hourglass:before{content:"\e6c0"}.rab-icon-ios-compass:before{content:"\e7c0"}.rab-icon-md-ice-cream:before{content:"\e6c1"}.rab-icon-ios-color-wand:before{content:"\e7c1"}.rab-icon-md-globe:before{content:"\e6c2"}.rab-icon-ios-construct:before{content:"\e7c2"}.rab-icon-md-image:before{content:"\e6c3"}.rab-icon-ios-contact:before{content:"\e7c3"}.rab-icon-md-help-circle:before{content:"\e6c4"}.rab-icon-ios-contract:before{content:"\e7c4"}.rab-icon-md-infinite:before{content:"\e6c5"}.rab-icon-ios-contacts:before{content:"\e7c5"}.rab-icon-md-information:before{content:"\e6c6"}.rab-icon-ios-create:before{content:"\e7c6"}.rab-icon-md-images:before{content:"\e6c7"}.rab-icon-ios-crop:before{content:"\e7c7"}.rab-icon-md-information-circle:before{content:"\e6c8"}.rab-icon-ios-contrast:before{content:"\e7c8"}.rab-icon-md-information-circle-outline:before{content:"\e6c9"}.rab-icon-ios-copy:before{content:"\e7c9"}.rab-icon-md-jet:before{content:"\e6ca"}.rab-icon-ios-cut:before{content:"\e7ca"}.rab-icon-md-journal:before{content:"\e6cb"}.rab-icon-ios-cube:before{content:"\e7cb"}.rab-icon-md-key:before{content:"\e6cc"}.rab-icon-ios-desktop:before{content:"\e7cc"}.rab-icon-md-keypad:before{content:"\e6cd"}.rab-icon-ios-document:before{content:"\e7cd"}.rab-icon-md-laptop:before{content:"\e6ce"}.rab-icon-ios-disc:before{content:"\e7ce"}.rab-icon-md-leaf:before{content:"\e6cf"}.rab-icon-ios-download:before{content:"\e7cf"}.rab-icon-md-link:before{content:"\e6d0"}.rab-icon-ios-done-all:before{content:"\e7d0"}.rab-icon-md-list:before{content:"\e6d1"}.rab-icon-ios-easel:before{content:"\e7d1"}.rab-icon-md-list-box:before{content:"\e6d2"}.rab-icon-ios-egg:before{content:"\e7d2"}.rab-icon-md-locate:before{content:"\e6d3"}.rab-icon-ios-exit:before{content:"\e7d3"}.rab-icon-md-lock:before{content:"\e6d4"}.rab-icon-ios-expand:before{content:"\e7d4"}.rab-icon-md-mail:before{content:"\e6d5"}.rab-icon-ios-eye:before{content:"\e7d5"}.rab-icon-md-magnet:before{content:"\e6d6"}.rab-icon-ios-fastforward:before{content:"\e7d6"}.rab-icon-md-log-out:before{content:"\e6d7"}.rab-icon-ios-eye-off:before{content:"\e7d7"}.rab-icon-md-male:before{content:"\e6d8"}.rab-icon-ios-filing:before{content:"\e7d8"}.rab-icon-md-mail-unread:before{content:"\e6d9"}.rab-icon-ios-female:before{content:"\e7d9"}.rab-icon-md-man:before{content:"\e6da"}.rab-icon-ios-film:before{content:"\e7da"}.rab-icon-md-log-in:before{content:"\e6db"}.rab-icon-ios-flag:before{content:"\e7db"}.rab-icon-md-mail-open:before{content:"\e6dc"}.rab-icon-ios-fitness:before{content:"\e7dc"}.rab-icon-md-map:before{content:"\e6dd"}.rab-icon-ios-flame:before{content:"\e7dd"}.rab-icon-md-medal:before{content:"\e6de"}.rab-icon-ios-flash:before{content:"\e7de"}.rab-icon-md-medical:before{content:"\e6df"}.rab-icon-ios-finger-print:before{content:"\e7df"}.rab-icon-md-medkit:before{content:"\e6e0"}.rab-icon-ios-flashlight:before{content:"\e7e0"}.rab-icon-md-megaphone:before{content:"\e6e1"}.rab-icon-ios-flash-off:before{content:"\e7e1"}.rab-icon-md-menu:before{content:"\e6e2"}.rab-icon-ios-flask:before{content:"\e7e2"}.rab-icon-md-mic:before{content:"\e6e3"}.rab-icon-ios-flower:before{content:"\e7e3"}.rab-icon-md-mic-off:before{content:"\e6e4"}.rab-icon-ios-folder:before{content:"\e7e4"}.rab-icon-md-microphone:before{content:"\e6e5"}.rab-icon-ios-folder-open:before{content:"\e7e5"}.rab-icon-md-moon:before{content:"\e6e6"}.rab-icon-ios-football:before{content:"\e7e6"}.rab-icon-md-more:before{content:"\e6e7"}.rab-icon-ios-git-branch:before{content:"\e7e7"}.rab-icon-md-move:before{content:"\e6e8"}.rab-icon-ios-gift:before{content:"\e7e8"}.rab-icon-md-musical-notes:before{content:"\e6e9"}.rab-icon-ios-git-commit:before{content:"\e7e9"}.rab-icon-md-musical-note:before{content:"\e6ea"}.rab-icon-ios-git-compare:before{content:"\e7ea"}.rab-icon-md-navigate:before{content:"\e6eb"}.rab-icon-ios-git-network:before{content:"\e7eb"}.rab-icon-md-notifications:before{content:"\e6ec"}.rab-icon-ios-glasses:before{content:"\e7ec"}.rab-icon-md-notifications-off:before{content:"\e6ed"}.rab-icon-ios-git-pull-request:before{content:"\e7ed"}.rab-icon-md-nuclear:before{content:"\e6ee"}.rab-icon-ios-hammer:before{content:"\e7ee"}.rab-icon-md-nutrition:before{content:"\e6ef"}.rab-icon-ios-grid:before{content:"\e7ef"}.rab-icon-md-notifications-outline:before{content:"\e6f0"}.rab-icon-ios-git-merge:before{content:"\e7f0"}.rab-icon-md-options:before{content:"\e6f1"}.rab-icon-ios-funnel:before{content:"\e7f1"}.rab-icon-md-outlet:before{content:"\e6f2"}.rab-icon-ios-hand:before{content:"\e7f2"}.rab-icon-md-open:before{content:"\e6f3"}.rab-icon-ios-happy:before{content:"\e7f3"}.rab-icon-md-paper:before{content:"\e6f4"}.rab-icon-ios-headset:before{content:"\e7f4"}.rab-icon-md-paper-plane:before{content:"\e6f5"}.rab-icon-ios-heart:before{content:"\e7f5"}.rab-icon-md-partly-sunny:before{content:"\e6f6"}.rab-icon-ios-globe:before{content:"\e7f6"}.rab-icon-md-pause:before{content:"\e6f7"}.rab-icon-ios-heart-empty:before{content:"\e7f7"}.rab-icon-md-people:before{content:"\e6f8"}.rab-icon-ios-heart-dislike:before{content:"\e7f8"}.rab-icon-md-paw:before{content:"\e6f9"}.rab-icon-ios-heart-half:before{content:"\e7f9"}.rab-icon-md-pie:before{content:"\e6fa"}.rab-icon-ios-help:before{content:"\e7fa"}.rab-icon-md-pizza:before{content:"\e6fb"}.rab-icon-ios-help-buoy:before{content:"\e7fb"}.rab-icon-md-play-circle:before{content:"\e6fc"}.rab-icon-ios-help-circle:before{content:"\e7fc"}.rab-icon-md-podium:before{content:"\e6fd"}.rab-icon-ios-home:before{content:"\e7fd"}.rab-icon-md-phone-landscape:before{content:"\e6fe"}.rab-icon-ios-hourglass:before{content:"\e7fe"}.rab-icon-md-play:before{content:"\e6ff"}.rab-icon-ios-image:before{content:"\e7ff"}.rab-icon-md-pin:before{content:"\e700"}.rab-icon-ios-information:before{content:"\e800"}.rab-icon-logo-hackernews:before{content:"\e601"}.rab-icon-md-phone-portrait:before{content:"\e701"}.rab-icon-ios-images:before{content:"\e801"}.rab-icon-logo-model-s:before{content:"\e602"}.rab-icon-md-person-add:before{content:"\e702"}.rab-icon-ios-ice-cream:before{content:"\e802"}.rab-icon-logo-pinterest:before{content:"\e603"}.rab-icon-md-photos:before{content:"\e703"}.rab-icon-ios-information-circle:before{content:"\e803"}.rab-icon-logo-linkedin:before{content:"\e604"}.rab-icon-md-planet:before{content:"\e704"}.rab-icon-ios-jet:before{content:"\e804"}.rab-icon-logo-rss:before{content:"\e605"}.rab-icon-md-person:before{content:"\e705"}.rab-icon-ios-information-circle-outline:before{content:"\e805"}.rab-icon-logo-npm:before{content:"\e606"}.rab-icon-md-pint:before{content:"\e706"}.rab-icon-ios-journal:before{content:"\e806"}.rab-icon-logo-no-smoking:before{content:"\e607"}.rab-icon-md-pricetag:before{content:"\e707"}.rab-icon-ios-key:before{content:"\e807"}.rab-icon-logo-tumblr:before{content:"\e608"}.rab-icon-md-refresh:before{content:"\e708"}.rab-icon-ios-keypad:before{content:"\e808"}.rab-icon-logo-markdown:before{content:"\e609"}.rab-icon-md-pulse:before{content:"\e709"}.rab-icon-ios-help-circle-outline:before{content:"\e809"}.rab-icon-logo-steam:before{content:"\e60a"}.rab-icon-md-radio:before{content:"\e70a"}.rab-icon-ios-laptop:before{content:"\e80a"}.rab-icon-logo-playstation:before{content:"\e60b"}.rab-icon-md-rainy:before{content:"\e70b"}.rab-icon-ios-infinite:before{content:"\e80b"}.rab-icon-logo-octocat:before{content:"\e60c"}.rab-icon-md-print:before{content:"\e70c"}.rab-icon-ios-leaf:before{content:"\e80c"}.rab-icon-logo-python:before{content:"\e60d"}.rab-icon-md-quote:before{content:"\e70d"}.rab-icon-ios-link:before{content:"\e80d"}.rab-icon-logo-javascript:before{content:"\e60e"}.rab-icon-md-qr-scanner:before{content:"\e70e"}.rab-icon-ios-list:before{content:"\e80e"}.rab-icon-logo-tux:before{content:"\e60f"}.rab-icon-md-pricetags:before{content:"\e70f"}.rab-icon-ios-list-box:before{content:"\e80f"}.rab-icon-logo-twitter:before{content:"\e610"}.rab-icon-md-recording:before{content:"\e710"}.rab-icon-ios-locate:before{content:"\e810"}.rab-icon-logo-vk:before{content:"\e611"}.rab-icon-md-power:before{content:"\e711"}.rab-icon-ios-lock:before{content:"\e811"}.rab-icon-logo-sass:before{content:"\e612"}.rab-icon-md-remove-circle:before{content:"\e712"}.rab-icon-ios-log-in:before{content:"\e812"}.rab-icon-logo-yen:before{content:"\e613"}.rab-icon-md-remove:before{content:"\e713"}.rab-icon-ios-log-out:before{content:"\e813"}.rab-icon-logo-slack:before{content:"\e614"}.rab-icon-md-redo:before{content:"\e714"}.rab-icon-ios-magnet:before{content:"\e814"}.rab-icon-logo-snapchat:before{content:"\e615"}.rab-icon-md-reorder:before{content:"\e715"}.rab-icon-ios-mail-open:before{content:"\e815"}.rab-icon-logo-vimeo:before{content:"\e616"}.rab-icon-md-radio-button-on:before{content:"\e716"}.rab-icon-ios-mail:before{content:"\e816"}.rab-icon-md-add-circle:before{content:"\e617"}.rab-icon-md-refresh-circle:before{content:"\e717"}.rab-icon-ios-mail-unread:before{content:"\e817"}.rab-icon-md-add:before{content:"\e618"}.rab-icon-md-repeat:before{content:"\e718"}.rab-icon-ios-male:before{content:"\e818"}.rab-icon-logo-usd:before{content:"\e619"}.rab-icon-md-return-left:before{content:"\e719"}.rab-icon-ios-man:before{content:"\e819"}.rab-icon-md-alarm:before{content:"\e61a"}.rab-icon-md-remove-circle-outline:before{content:"\e71a"}.rab-icon-ios-map:before{content:"\e81a"}.rab-icon-md-airplane:before{content:"\e61b"}.rab-icon-md-return-right:before{content:"\e71b"}.rab-icon-ios-medical:before{content:"\e81b"}.rab-icon-logo-yahoo:before{content:"\e61c"}.rab-icon-md-restaurant:before{content:"\e71c"}.rab-icon-ios-medkit:before{content:"\e81c"}.rab-icon-logo-whatsapp:before{content:"\e61d"}.rab-icon-md-rewind:before{content:"\e71d"}.rab-icon-ios-menu:before{content:"\e81d"}.rab-icon-logo-xing:before{content:"\e61e"}.rab-icon-md-reverse-camera:before{content:"\e71e"}.rab-icon-ios-medal:before{content:"\e81e"}.rab-icon-logo-windows:before{content:"\e61f"}.rab-icon-md-ribbon:before{content:"\e71f"}.rab-icon-ios-megaphone:before{content:"\e81f"}.rab-icon-md-apps:before{content:"\e620"}.rab-icon-md-rocket:before{content:"\e720"}.rab-icon-ios-mic:before{content:"\e820"}.rab-icon-logo-nodejs:before{content:"\e621"}.rab-icon-md-rose:before{content:"\e721"}.rab-icon-ios-mic-off:before{content:"\e821"}.rab-icon-md-american-football:before{content:"\e622"}.rab-icon-md-school:before{content:"\e722"}.rab-icon-ios-microphone:before{content:"\e822"}.rab-icon-logo-skype:before{content:"\e623"}.rab-icon-md-save:before{content:"\e723"}.rab-icon-ios-moon:before{content:"\e823"}.rab-icon-logo-wordpress:before{content:"\e624"}.rab-icon-md-radio-button-off:before{content:"\e724"}.rab-icon-ios-more:before{content:"\e824"}.rab-icon-md-aperture:before{content:"\e625"}.rab-icon-md-sad:before{content:"\e725"}.rab-icon-ios-move:before{content:"\e825"}.rab-icon-md-arrow-back:before{content:"\e626"}.rab-icon-md-send:before{content:"\e726"}.rab-icon-ios-musical-note:before{content:"\e826"}.rab-icon-logo-reddit:before{content:"\e627"}.rab-icon-md-resize:before{content:"\e727"}.rab-icon-ios-navigate:before{content:"\e827"}.rab-icon-logo-twitch:before{content:"\e628"}.rab-icon-md-settings:before{content:"\e728"}.rab-icon-ios-musical-notes:before{content:"\e828"}.rab-icon-md-alert:before{content:"\e629"}.rab-icon-md-shirt:before{content:"\e729"}.rab-icon-ios-notifications:before{content:"\e829"}.rab-icon-md-archive:before{content:"\e62a"}.rab-icon-md-share-alt:before{content:"\e72a"}.rab-icon-ios-notifications-off:before{content:"\e82a"}.rab-icon-md-appstore:before{content:"\e62b"}.rab-icon-md-skip-backward:before{content:"\e72b"}.rab-icon-ios-notifications-outline:before{content:"\e82b"}.rab-icon-logo-youtube:before{content:"\e62c"}.rab-icon-md-shuffle:before{content:"\e72c"}.rab-icon-ios-nuclear:before{content:"\e82c"}.rab-icon-md-arrow-dropdown:before{content:"\e62d"}.rab-icon-md-skip-forward:before{content:"\e72d"}.rab-icon-ios-open:before{content:"\e82d"}.rab-icon-md-arrow-dropdown-circle:before{content:"\e62e"}.rab-icon-md-share:before{content:"\e72e"}.rab-icon-ios-nutrition:before{content:"\e82e"}.rab-icon-logo-xbox:before{content:"\e62f"}.rab-icon-md-square:before{content:"\e72f"}.rab-icon-ios-options:before{content:"\e82f"}.rab-icon-md-add-circle-outline:before{content:"\e630"}.rab-icon-md-square-outline:before{content:"\e730"}.rab-icon-ios-outlet:before{content:"\e830"}.rab-icon-md-arrow-dropleft:before{content:"\e631"}.rab-icon-md-speedometer:before{content:"\e731"}.rab-icon-ios-paper:before{content:"\e831"}.rab-icon-md-analytics:before{content:"\e632"}.rab-icon-md-search:before{content:"\e732"}.rab-icon-ios-pause:before{content:"\e832"}.rab-icon-md-arrow-dropright:before{content:"\e633"}.rab-icon-md-star:before{content:"\e733"}.rab-icon-ios-paw:before{content:"\e833"}.rab-icon-md-albums:before{content:"\e634"}.rab-icon-md-snow:before{content:"\e734"}.rab-icon-ios-paper-plane:before{content:"\e834"}.rab-icon-md-arrow-dropleft-circle:before{content:"\e635"}.rab-icon-md-star-half:before{content:"\e735"}.rab-icon-ios-person:before{content:"\e835"}.rab-icon-md-arrow-down:before{content:"\e636"}.rab-icon-md-stopwatch:before{content:"\e736"}.rab-icon-ios-phone-portrait:before{content:"\e836"}.rab-icon-md-arrow-dropright-circle:before{content:"\e637"}.rab-icon-md-star-outline:before{content:"\e737"}.rab-icon-ios-people:before{content:"\e837"}.rab-article h1{font-size:26px;font-weight:400}.rab-article h2{font-size:20px;font-weight:400}.rab-article h3{font-size:16px;font-weight:400}.rab-article h4{font-size:14px;font-weight:400}.rab-article h5,.rab-article h6{font-size:12px;font-weight:400}.rab-article blockquote{padding:5px 5px 3px 10px;line-height:1.5;border-left:4px solid #ddd;margin-bottom:20px;color:#666;font-size:14px}.rab-article ul:not([class^=rab-]){padding-left:40px;list-style-type:disc}.rab-article li:not([class^=rab-]){margin-bottom:5px;font-size:14px}.rab-article ol ul:not([class^=rab-]),.rab-article ul ul:not([class^=rab-]){list-style-type:circle}.rab-article p{margin:5px;font-size:14px}.rab-fade-in{-webkit-animation:rabFadeIn .3s ease-in-out;animation:rabFadeIn .3s ease-in-out}.rab-fade-out{-webkit-animation:rabFadeOut .3s ease-in-out;animation:rabFadeOut .3s ease-in-out}@-webkit-keyframes rabFadeIn{0%{opacity:0}to{opacity:1}}@keyframes rabFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes rabFadeOut{0%{opacity:1}to{opacity:0}}@keyframes rabFadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes rabMessageMoveIn{0%{opacity:0;padding:0;transform:translateY(-40%)}to{opacity:1;padding:8px}}@keyframes rabMessageMoveIn{0%{opacity:0;padding:0;transform:translateY(-40%)}to{opacity:1;padding:8px}}@-webkit-keyframes rabMessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}@keyframes rabMessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}@-webkit-keyframes rabNoticeMoveIn{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes rabNoticeMoveIn{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@-webkit-keyframes rabNoticeMoveOut{0%{opacity:1;transform-origin:0 0;transform:translateX(0)}70%{transform-origin:0 0;transform:translateX(100%);height:auto;padding:16px;margin-bottom:10px;opacity:0}to{transform-origin:0 0;transform:translateX(100%);height:0;padding:0;margin-bottom:0;opacity:0}}@keyframes rabNoticeMoveOut{0%{transform-origin:0 0;opacity:1;transform:translateX(0)}70%{transform-origin:0 0;transform:translateX(100%);height:auto;padding:16px;margin-bottom:10px;opacity:0}to{transform-origin:0 0;transform:translateX(100%);height:0;padding:0;margin-bottom:0;opacity:0}}@-webkit-keyframes rabDrawerMoveRightIn{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes rabDrawerMoveRightIn{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes rabDrawerMoveRightOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes rabDrawerMoveRightOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@-webkit-keyframes rabDrawerMoveLeftIn{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@keyframes rabDrawerMoveLeftIn{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes rabDrawerMoveLeftOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-100%)}}@keyframes rabDrawerMoveLeftOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-100%)}}@-webkit-keyframes rabDrawerMoveTopIn{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes rabDrawerMoveTopIn{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes rabDrawerMoveTopOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes rabDrawerMoveTopOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@-webkit-keyframes rabDrawerMoveBottomIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes rabDrawerMoveBottomIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes rabDrawerMoveBottomOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@keyframes rabDrawerMoveBottomOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@-webkit-keyframes rabEaseIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes rabEaseIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@-webkit-keyframes rabEaseOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes rabEaseOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@-webkit-keyframes rabTransitionDropIn{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:scaleY(1)}}@keyframes rabTransitionDropIn{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:scaleY(1)}}@-webkit-keyframes rabTransitionDropOut{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(.8)}}@keyframes rabTransitionDropOut{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(.8)}}@-webkit-keyframes rabSlideUpIn{0%{opacity:0;transform-origin:0 0;transform:scaleY(.8)}to{opacity:1;transform-origin:0 0;transform:scaleY(1)}}@keyframes rabSlideUpIn{0%{opacity:0;transform-origin:0 0;transform:scaleY(.8)}to{opacity:1;transform-origin:0 0;transform:scaleY(1)}}@-webkit-keyframes rabSlideUpOut{0%{opacity:1;transform-origin:0 0;transform:scaleY(1)}to{opacity:0;transform-origin:0 0;transform:scaleY(.8)}}@keyframes rabSlideUpOut{0%{opacity:1;transform-origin:0 0;transform:scaleY(1)}to{opacity:0;transform-origin:0 0;transform:scaleY(.8)}}@-webkit-keyframes rabSlideDownIn{0%{opacity:0;transform-origin:100% 100%;transform:scaleY(.8)}to{opacity:1;transform-origin:100% 100%;transform:scaleY(1)}}@keyframes rabSlideDownIn{0%{opacity:0;transform-origin:100% 100%;transform:scaleY(.8)}to{opacity:1;transform-origin:100% 100%;transform:scaleY(1)}}@-webkit-keyframes rabSlideDownOut{0%{opacity:1;transform-origin:100% 100%;transform:scaleY(1)}to{opacity:0;transform-origin:100% 100%;transform:scaleY(.8)}}@keyframes rabSlideDownOut{0%{opacity:1;transform-origin:100% 100%;transform:scaleY(1)}to{opacity:0;transform-origin:100% 100%;transform:scaleY(.8)}}@-webkit-keyframes rabSlideLeftIn{0%{opacity:0;transform-origin:0 0;transform:scaleX(.8)}to{opacity:1;transform-origin:0 0;transform:scaleX(1)}}@keyframes rabSlideLeftIn{0%{opacity:0;transform-origin:0 0;transform:scaleX(.8)}to{opacity:1;transform-origin:0 0;transform:scaleX(1)}}@-webkit-keyframes rabSlideLeftOut{0%{opacity:1;transform-origin:0 0;transform:scaleX(1)}to{opacity:0;transform-origin:0 0;transform:scaleX(.8)}}@keyframes rabSlideLeftOut{0%{opacity:1;transform-origin:0 0;transform:scaleX(1)}to{opacity:0;transform-origin:0 0;transform:scaleX(.8)}}@-webkit-keyframes rabSlideRightIn{0%{opacity:0;transform-origin:100% 0;transform:scaleX(.8)}to{opacity:1;transform-origin:100% 0;transform:scaleX(1)}}@keyframes rabSlideRightIn{0%{opacity:0;transform-origin:100% 0;transform:scaleX(.8)}to{opacity:1;transform-origin:100% 0;transform:scaleX(1)}}@-webkit-keyframes rabSlideRightOut{0%{opacity:1;transform-origin:100% 0;transform:scaleX(1)}to{opacity:0;transform-origin:100% 0;transform:scaleX(.8)}}@keyframes rabSlideRightOut{0%{opacity:1;transform-origin:100% 0;transform:scaleX(1)}to{opacity:0;transform-origin:100% 0;transform:scaleX(.8)}}r-affix{display:block}.rab-affix{position:fixed;z-index:10}r-alert{color:#55585e;font-size:14px;line-height:1.5;position:relative;display:block;padding:8px 15px;margin-bottom:10px;word-wrap:break-word;border-radius:2px;border:1px solid #aed8ff;background-color:#edf6ff}r-alert .rab-alert-icon{color:#1890ff}r-alert[type=success]{border:1px solid #c2eaaf;background-color:#f6ffed}r-alert[type=success] .rab-alert-icon{color:#52c41a}r-alert[type=info]{border:1px solid #aed8ff;background-color:#edf6ff}r-alert[type=info] .rab-alert-icon{color:#1890ff}r-alert[type=warning]{border:1px solid #fde2ad;background-color:#fffbe6}r-alert[type=warning] .rab-alert-icon{color:#faad14}r-alert[type=error]{border:1px solid #ffc1c1;background-color:#fff2f0}r-alert[type=error] .rab-alert-icon{color:#ff4d4f}.rab-alert-with-icon{padding:8px 48px 8px 35px}.rab-alert-icon{font-size:16px;top:6px;left:12px;position:absolute}.rab-alert-title{color:#55585e}.rab-alert-desc{font-size:14px;color:#55585e;line-height:22px;display:none}.rab-alert-desc p{margin-bottom:0}.rab-alert-close{font-size:12px;position:absolute;right:8px;top:8px;overflow:hidden;cursor:pointer;top:10px}.rab-alert-close .rab-icon-ios-close{font-size:22px;color:#999;transition:color .2s ease;position:relative;top:0}.rab-alert-close .rab-icon-ios-close:hover{color:#666}.rab-alert-with-desc.rab-alert-with-icon{padding:16px 16px 16px 69px}.rab-alert-with-desc{padding:16px;position:relative;border-radius:2px;margin-bottom:10px;color:#55585e;line-height:1.5}.rab-alert-with-desc .rab-alert-desc{display:block}.rab-alert-with-desc .rab-alert-title{font-size:16px;color:#2c3e50;display:block;margin-bottom:4px}.rab-alert-with-desc .rab-alert-icon{top:50%;left:22px;transform:translateY(-50%);font-size:32px}.rab-alert-with-banner{border:0!important;border-radius:0!important}r-avatar{display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:50%}r-avatar .rab-icon{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}r-avatar[size=large]{width:40px;height:40px;line-height:40px;border-radius:50%}r-avatar[size=large].rab-avatar-icon{font-size:24px}r-avatar.rab-avatar-icon{font-size:18px}r-avatar[size=small]{width:24px;height:24px;line-height:24px;border-radius:50%}r-avatar[size=small].rab-avatar-icon{font-size:14px}r-avatar[shape=circle]{border-radius:50%}r-avatar[shape=square]{border-radius:2px}r-avatar>img{width:100%;height:100%}.rab-avatar-image{background:transparent}.rab-avatar-string{position:absolute;left:50%;transform-origin:0 center}r-back-top{z-index:10;position:fixed;cursor:pointer;display:none}r-back-top .rab-icon{position:relative;top:-3px;color:#fff;font-size:24px;padding:20px 12px}.rab-back-top-inner{background-color:rgba(0,0,0,.5);border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:all .2s ease-in-out}.rab-back-top-inner:hover{background-color:rgba(0,0,0,.7)}r-badge{position:relative;display:inline-block}r-badge[type=primary] .rab-badge-count{background:#1890ff}r-badge[type=success] .rab-badge-count{background:#52c41a}r-badge[type=error] .rab-badge-count{background:#ff4d4f}r-badge[type=warning] .rab-badge-count{background:#faad14}r-badge[type=info] .rab-badge-count{background:#2db7f5}r-badge[type=normal] .rab-badge-count{background:#e6ebf1;color:#808695}.rab-badge-count{font-family:"Monospaced Number";line-height:1;vertical-align:middle;position:absolute;transform:translateX(50%);top:-10px;right:0;height:20px;border-radius:10px;min-width:20px;background:#ff4d4f;border:1px solid transparent;color:#fff;line-height:17px;text-align:center;padding:0 6px;font-size:12px;white-space:nowrap;transform-origin:-10% center;z-index:10;box-shadow:0 0 0 1px #fff}.rab-badge-count-custom{background:transparent;color:inherit;border-color:transparent;box-shadow:none}.rab-badge-count a,.rab-badge-count a:hover{color:#fff}.rab-badge-count-alone{top:auto;display:block;position:relative;transform:translateX(0)}.rab-badge-dot{position:absolute;transform:translateX(-50%);transform-origin:0 center;top:-4px;right:-8px;width:8px;height:8px;border-radius:100%;background:#ff4d4f;z-index:10;box-shadow:0 0 0 1px #fff}.rab-badge-status{line-height:inherit;vertical-align:baseline}.rab-badge-status-dot{width:6px;height:6px;display:inline-block;border-radius:50%;vertical-align:middle;position:relative;top:-1px}.rab-badge-status-success{background-color:#52c41a}.rab-badge-status-processing{background-color:#1890ff;position:relative}.rab-badge-status-processing:after{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;border:1px solid #1890ff;content:"";animation:rabStatusProcessing 1.2s ease-in-out infinite}.rab-badge-status-default{background-color:#e6ebf1}.rab-badge-status-error{background-color:#ff4d4f}.rab-badge-status-warning{background-color:#faad14}.rab-badge-status-text{display:inline-block;color:#55585e;font-size:14px;margin-left:6px}.rab-badge-status-magenta,.rab-badge-status-pink{background-color:#eb2f96}.rab-badge-status-red{background-color:#f5222d}.rab-badge-status-volcano{background-color:#fa541c}.rab-badge-status-orange{background-color:#fa8c16}.rab-badge-status-yellow{background-color:#fadb14}.rab-badge-status-gold{background-color:#faad14}.rab-badge-status-cyan{background-color:#13c2c2}.rab-badge-status-lime{background-color:#a0d911}.rab-badge-status-green{background-color:#52c41a}.rab-badge-status-blue{background-color:#1890ff}.rab-badge-status-geekblue{background-color:#2f54eb}.rab-badge-status-purple{background-color:#722ed1}@keyframes rabStatusProcessing{0%{transform:scale(.8);opacity:.5}to{transform:scale(2.4);opacity:0}}r-breadcrumb{display:block;color:#999;font-size:14px}r-breadcrumb a{color:#55585e;transition:color .2s ease-in-out}r-breadcrumb a:hover{color:#46a6ff}r-breadcrumb>span:last-child{font-weight:700;color:#55585e}r-breadcrumb>span:last-child .rab-breadcrumb-item-separator{display:none}.rab-breadcrumb-item-separator{margin:0 8px;color:#dcdee2}.rab-breadcrumb-item-link>.rab-icon+span{margin-left:4px}.rab-btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;line-height:1.5;user-select:none;height:32px;padding:0 15px;font-size:14px;border-radius:2px;transition:color .2s linear,background-color .2s linear,border .2s linear,box-shadow .2s linear;color:#55585e;background-color:#fff;border:1px solid #dcdee2}.rab-btn>.rab-icon{line-height:1.5;margin:0 4px;height:26px}.rab-btn-icon-only.rab-btn-circle>.rab-icon{vertical-align:baseline}.rab-btn>i,.rab-btn>span{display:inline-block;vertical-align:initial}.rab-btn,.rab-btn:active,.rab-btn:focus{outline:0}.rab-btn:not([disabled]):hover{text-decoration:none}.rab-btn:not([disabled]):active{outline:0}.rab-btn.disabled,.rab-btn[disabled]{cursor:not-allowed}.rab-btn.disabled>*,.rab-btn[disabled]>*{pointer-events:none}.rab-btn-lg{height:40px;padding:0 15px;font-size:16px;border-radius:2px}.rab-btn-sm{height:24px;padding:0 7px;font-size:14px;border-radius:1px}.rab-btn-icon-only{width:32px;height:32px;padding:0;font-size:16px;border-radius:2px}.rab-btn-icon-only.rab-btn-large{width:40px;height:40px;padding:0;font-size:18px;border-radius:2px}.rab-btn-icon-only.rab-btn-small{width:24px;height:24px;padding:0;font-size:14px;border-radius:2px}.rab-btn>a:only-child{color:currentColor}.rab-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn:hover{color:#77797e;border-color:#e3e5e8}.rab-btn.active,.rab-btn:active{color:#515459;background-color:#f2f2f2;border-color:#f2f2f2}.rab-btn.disabled,.rab-btn.disabled.active,.rab-btn.disabled:active,.rab-btn.disabled:focus,.rab-btn.disabled:hover,.rab-btn[disabled],.rab-btn[disabled].active,.rab-btn[disabled]:active,.rab-btn[disabled]:focus,.rab-btn[disabled]:hover,fieldset[disabled] .rab-btn,fieldset[disabled] .rab-btn.active,fieldset[disabled] .rab-btn:active,fieldset[disabled] .rab-btn:focus,fieldset[disabled] .rab-btn:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn.disabled.active>a:only-child,.rab-btn.disabled:active>a:only-child,.rab-btn.disabled:focus>a:only-child,.rab-btn.disabled:hover>a:only-child,.rab-btn.disabled>a:only-child,.rab-btn[disabled].active>a:only-child,.rab-btn[disabled]:active>a:only-child,.rab-btn[disabled]:focus>a:only-child,.rab-btn[disabled]:hover>a:only-child,.rab-btn[disabled]>a:only-child,fieldset[disabled] .rab-btn.active>a:only-child,fieldset[disabled] .rab-btn:active>a:only-child,fieldset[disabled] .rab-btn:focus>a:only-child,fieldset[disabled] .rab-btn:hover>a:only-child,fieldset[disabled] .rab-btn>a:only-child{color:currentColor}.rab-btn.disabled.active>a:only-child:after,.rab-btn.disabled:active>a:only-child:after,.rab-btn.disabled:focus>a:only-child:after,.rab-btn.disabled:hover>a:only-child:after,.rab-btn.disabled>a:only-child:after,.rab-btn[disabled].active>a:only-child:after,.rab-btn[disabled]:active>a:only-child:after,.rab-btn[disabled]:focus>a:only-child:after,.rab-btn[disabled]:hover>a:only-child:after,.rab-btn[disabled]>a:only-child:after,fieldset[disabled] .rab-btn.active>a:only-child:after,fieldset[disabled] .rab-btn:active>a:only-child:after,fieldset[disabled] .rab-btn:focus>a:only-child:after,fieldset[disabled] .rab-btn:hover>a:only-child:after,fieldset[disabled] .rab-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn:hover{color:#46a6ff;background-color:#fff;border-color:#46a6ff}.rab-btn:hover>a:only-child{color:currentColor}.rab-btn:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn.active,.rab-btn:active{color:#1789f2;background-color:#fff;border-color:#1789f2}.rab-btn.active>a:only-child,.rab-btn:active>a:only-child{color:currentColor}.rab-btn.active>a:only-child:after,.rab-btn:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn:focus{box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-btn-long{width:100%}.rab-btn>.rab-icon-loading-solid{margin-right:4px}.rab-btn>.rab-icon+span,.rab-btn>span+.rab-icon{margin-left:4px}.rab-btn-primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.rab-btn-primary>a:only-child{color:currentColor}.rab-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-primary:hover{color:#fff;background-color:#46a6ff;border-color:#46a6ff}.rab-btn-primary:hover>a:only-child{color:currentColor}.rab-btn-primary:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-primary.active,.rab-btn-primary:active{color:#f2f2f2;background-color:#1789f2;border-color:#1789f2}.rab-btn-primary.active>a:only-child,.rab-btn-primary:active>a:only-child{color:currentColor}.rab-btn-primary.active>a:only-child:after,.rab-btn-primary:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-primary.disabled,.rab-btn-primary.disabled.active,.rab-btn-primary.disabled:active,.rab-btn-primary.disabled:focus,.rab-btn-primary.disabled:hover,.rab-btn-primary[disabled],.rab-btn-primary[disabled].active,.rab-btn-primary[disabled]:active,.rab-btn-primary[disabled]:focus,.rab-btn-primary[disabled]:hover,fieldset[disabled] .rab-btn-primary,fieldset[disabled] .rab-btn-primary.active,fieldset[disabled] .rab-btn-primary:active,fieldset[disabled] .rab-btn-primary:focus,fieldset[disabled] .rab-btn-primary:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-primary.disabled.active>a:only-child,.rab-btn-primary.disabled:active>a:only-child,.rab-btn-primary.disabled:focus>a:only-child,.rab-btn-primary.disabled:hover>a:only-child,.rab-btn-primary.disabled>a:only-child,.rab-btn-primary[disabled].active>a:only-child,.rab-btn-primary[disabled]:active>a:only-child,.rab-btn-primary[disabled]:focus>a:only-child,.rab-btn-primary[disabled]:hover>a:only-child,.rab-btn-primary[disabled]>a:only-child,fieldset[disabled] .rab-btn-primary.active>a:only-child,fieldset[disabled] .rab-btn-primary:active>a:only-child,fieldset[disabled] .rab-btn-primary:focus>a:only-child,fieldset[disabled] .rab-btn-primary:hover>a:only-child,fieldset[disabled] .rab-btn-primary>a:only-child{color:currentColor}.rab-btn-primary.disabled.active>a:only-child:after,.rab-btn-primary.disabled:active>a:only-child:after,.rab-btn-primary.disabled:focus>a:only-child:after,.rab-btn-primary.disabled:hover>a:only-child:after,.rab-btn-primary.disabled>a:only-child:after,.rab-btn-primary[disabled].active>a:only-child:after,.rab-btn-primary[disabled]:active>a:only-child:after,.rab-btn-primary[disabled]:focus>a:only-child:after,.rab-btn-primary[disabled]:hover>a:only-child:after,.rab-btn-primary[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-primary.active>a:only-child:after,fieldset[disabled] .rab-btn-primary:active>a:only-child:after,fieldset[disabled] .rab-btn-primary:focus>a:only-child:after,fieldset[disabled] .rab-btn-primary:hover>a:only-child:after,fieldset[disabled] .rab-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-primary.active,.rab-btn-primary:active,.rab-btn-primary:hover{color:#fff}.rab-btn-primary:focus{box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary:not(:first-child):not(:last-child){border-right-color:hsla(0,0%,100%,.5);border-left-color:hsla(0,0%,100%,.5)}.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary:first-child:not(:last-child){border-right-color:hsla(0,0%,100%,.5)}.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#dcdee2}.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary+.rab-btn,.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary:last-child:not(:first-child){border-left-color:hsla(0,0%,100%,.5)}.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary+.rab-btn[disabled],.rab-btn-group:not(.rab-btn-group-vertical) .rab-btn-primary:last-child:not(:first-child)[disabled]{border-left-color:#dcdee2}.rab-btn-group-vertical .rab-btn-primary:not(:first-child):not(:last-child){border-top-color:hsla(0,0%,100%,.5);border-bottom-color:hsla(0,0%,100%,.5)}.rab-btn-group-vertical .rab-btn-primary:first-child:not(:last-child){border-bottom-color:hsla(0,0%,100%,.5)}.rab-btn-group-vertical .rab-btn-primary:first-child:not(:last-child)[disabled]{border-top-color:#dcdee2}.rab-btn-group-vertical .rab-btn-primary+.rab-btn,.rab-btn-group-vertical .rab-btn-primary:last-child:not(:first-child){border-top-color:hsla(0,0%,100%,.5)}.rab-btn-group-vertical .rab-btn-primary+.rab-btn[disabled],.rab-btn-group-vertical .rab-btn-primary:last-child:not(:first-child)[disabled]{border-bottom-color:#dcdee2}.rab-btn-dashed{color:#55585e;background-color:#fff;border-color:#dcdee2;border-style:dashed}.rab-btn-dashed>a:only-child{color:currentColor}.rab-btn-dashed>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-dashed:hover{color:#77797e;border-color:#e3e5e8}.rab-btn-dashed.active,.rab-btn-dashed:active{color:#515459;background-color:#f2f2f2;border-color:#f2f2f2}.rab-btn-dashed.disabled,.rab-btn-dashed.disabled.active,.rab-btn-dashed.disabled:active,.rab-btn-dashed.disabled:focus,.rab-btn-dashed.disabled:hover,.rab-btn-dashed[disabled],.rab-btn-dashed[disabled].active,.rab-btn-dashed[disabled]:active,.rab-btn-dashed[disabled]:focus,.rab-btn-dashed[disabled]:hover,fieldset[disabled] .rab-btn-dashed,fieldset[disabled] .rab-btn-dashed.active,fieldset[disabled] .rab-btn-dashed:active,fieldset[disabled] .rab-btn-dashed:focus,fieldset[disabled] .rab-btn-dashed:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-dashed.disabled.active>a:only-child,.rab-btn-dashed.disabled:active>a:only-child,.rab-btn-dashed.disabled:focus>a:only-child,.rab-btn-dashed.disabled:hover>a:only-child,.rab-btn-dashed.disabled>a:only-child,.rab-btn-dashed[disabled].active>a:only-child,.rab-btn-dashed[disabled]:active>a:only-child,.rab-btn-dashed[disabled]:focus>a:only-child,.rab-btn-dashed[disabled]:hover>a:only-child,.rab-btn-dashed[disabled]>a:only-child,fieldset[disabled] .rab-btn-dashed.active>a:only-child,fieldset[disabled] .rab-btn-dashed:active>a:only-child,fieldset[disabled] .rab-btn-dashed:focus>a:only-child,fieldset[disabled] .rab-btn-dashed:hover>a:only-child,fieldset[disabled] .rab-btn-dashed>a:only-child{color:currentColor}.rab-btn-dashed.disabled.active>a:only-child:after,.rab-btn-dashed.disabled:active>a:only-child:after,.rab-btn-dashed.disabled:focus>a:only-child:after,.rab-btn-dashed.disabled:hover>a:only-child:after,.rab-btn-dashed.disabled>a:only-child:after,.rab-btn-dashed[disabled].active>a:only-child:after,.rab-btn-dashed[disabled]:active>a:only-child:after,.rab-btn-dashed[disabled]:focus>a:only-child:after,.rab-btn-dashed[disabled]:hover>a:only-child:after,.rab-btn-dashed[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-dashed.active>a:only-child:after,fieldset[disabled] .rab-btn-dashed:active>a:only-child:after,fieldset[disabled] .rab-btn-dashed:focus>a:only-child:after,fieldset[disabled] .rab-btn-dashed:hover>a:only-child:after,fieldset[disabled] .rab-btn-dashed>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-dashed:hover{color:#46a6ff;background-color:#fff;border-color:#46a6ff}.rab-btn-dashed:hover>a:only-child{color:currentColor}.rab-btn-dashed:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-dashed.active,.rab-btn-dashed:active{color:#1789f2;background-color:#fff;border-color:#1789f2}.rab-btn-dashed.active>a:only-child,.rab-btn-dashed:active>a:only-child{color:currentColor}.rab-btn-dashed.active>a:only-child:after,.rab-btn-dashed:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-dashed:focus{box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-btn-text{color:#55585e;background-color:transparent;border-color:transparent}.rab-btn-text>a:only-child{color:currentColor}.rab-btn-text>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-text:hover{color:#77797e;background-color:hsla(0,0%,100%,.2);border-color:hsla(0,0%,100%,.2)}.rab-btn-text.active,.rab-btn-text:active{color:#515459;background-color:rgba(0,0,0,.05);border-color:rgba(0,0,0,.05)}.rab-btn-text.disabled,.rab-btn-text.disabled.active,.rab-btn-text.disabled:active,.rab-btn-text.disabled:focus,.rab-btn-text.disabled:hover,.rab-btn-text[disabled],.rab-btn-text[disabled].active,.rab-btn-text[disabled]:active,.rab-btn-text[disabled]:focus,.rab-btn-text[disabled]:hover,fieldset[disabled] .rab-btn-text,fieldset[disabled] .rab-btn-text.active,fieldset[disabled] .rab-btn-text:active,fieldset[disabled] .rab-btn-text:focus,fieldset[disabled] .rab-btn-text:hover{background-color:#fafafa;border-color:#dcdee2;color:#c5c8ce;background-color:#fff;border-color:transparent}.rab-btn-text.disabled.active>a:only-child,.rab-btn-text.disabled:active>a:only-child,.rab-btn-text.disabled:focus>a:only-child,.rab-btn-text.disabled:hover>a:only-child,.rab-btn-text.disabled>a:only-child,.rab-btn-text[disabled].active>a:only-child,.rab-btn-text[disabled]:active>a:only-child,.rab-btn-text[disabled]:focus>a:only-child,.rab-btn-text[disabled]:hover>a:only-child,.rab-btn-text[disabled]>a:only-child,fieldset[disabled] .rab-btn-text.active>a:only-child,fieldset[disabled] .rab-btn-text:active>a:only-child,fieldset[disabled] .rab-btn-text:focus>a:only-child,fieldset[disabled] .rab-btn-text:hover>a:only-child,fieldset[disabled] .rab-btn-text>a:only-child{color:currentColor}.rab-btn-text.disabled.active>a:only-child:after,.rab-btn-text.disabled:active>a:only-child:after,.rab-btn-text.disabled:focus>a:only-child:after,.rab-btn-text.disabled:hover>a:only-child:after,.rab-btn-text.disabled>a:only-child:after,.rab-btn-text[disabled].active>a:only-child:after,.rab-btn-text[disabled]:active>a:only-child:after,.rab-btn-text[disabled]:focus>a:only-child:after,.rab-btn-text[disabled]:hover>a:only-child:after,.rab-btn-text[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-text.active>a:only-child:after,fieldset[disabled] .rab-btn-text:active>a:only-child:after,fieldset[disabled] .rab-btn-text:focus>a:only-child:after,fieldset[disabled] .rab-btn-text:hover>a:only-child:after,fieldset[disabled] .rab-btn-text>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-text:hover{color:#46a6ff;background-color:#fff;border-color:transparent}.rab-btn-text:hover>a:only-child{color:currentColor}.rab-btn-text:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-text.active,.rab-btn-text:active{color:#1789f2;background-color:#fff;border-color:transparent}.rab-btn-text.active>a:only-child,.rab-btn-text:active>a:only-child{color:currentColor}.rab-btn-text.active>a:only-child:after,.rab-btn-text:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-text:focus{box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-btn-success{color:#fff;background-color:#52c41a;border-color:#52c41a}.rab-btn-success>a:only-child{color:currentColor}.rab-btn-success>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-success:hover{color:#fff;background-color:#75d048;border-color:#75d048}.rab-btn-success:hover>a:only-child{color:currentColor}.rab-btn-success:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-success.active,.rab-btn-success:active{color:#f2f2f2;background-color:#4eba19;border-color:#4eba19}.rab-btn-success.active>a:only-child,.rab-btn-success:active>a:only-child{color:currentColor}.rab-btn-success.active>a:only-child:after,.rab-btn-success:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-success.disabled,.rab-btn-success.disabled.active,.rab-btn-success.disabled:active,.rab-btn-success.disabled:focus,.rab-btn-success.disabled:hover,.rab-btn-success[disabled],.rab-btn-success[disabled].active,.rab-btn-success[disabled]:active,.rab-btn-success[disabled]:focus,.rab-btn-success[disabled]:hover,fieldset[disabled] .rab-btn-success,fieldset[disabled] .rab-btn-success.active,fieldset[disabled] .rab-btn-success:active,fieldset[disabled] .rab-btn-success:focus,fieldset[disabled] .rab-btn-success:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-success.disabled.active>a:only-child,.rab-btn-success.disabled:active>a:only-child,.rab-btn-success.disabled:focus>a:only-child,.rab-btn-success.disabled:hover>a:only-child,.rab-btn-success.disabled>a:only-child,.rab-btn-success[disabled].active>a:only-child,.rab-btn-success[disabled]:active>a:only-child,.rab-btn-success[disabled]:focus>a:only-child,.rab-btn-success[disabled]:hover>a:only-child,.rab-btn-success[disabled]>a:only-child,fieldset[disabled] .rab-btn-success.active>a:only-child,fieldset[disabled] .rab-btn-success:active>a:only-child,fieldset[disabled] .rab-btn-success:focus>a:only-child,fieldset[disabled] .rab-btn-success:hover>a:only-child,fieldset[disabled] .rab-btn-success>a:only-child{color:currentColor}.rab-btn-success.disabled.active>a:only-child:after,.rab-btn-success.disabled:active>a:only-child:after,.rab-btn-success.disabled:focus>a:only-child:after,.rab-btn-success.disabled:hover>a:only-child:after,.rab-btn-success.disabled>a:only-child:after,.rab-btn-success[disabled].active>a:only-child:after,.rab-btn-success[disabled]:active>a:only-child:after,.rab-btn-success[disabled]:focus>a:only-child:after,.rab-btn-success[disabled]:hover>a:only-child:after,.rab-btn-success[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-success.active>a:only-child:after,fieldset[disabled] .rab-btn-success:active>a:only-child:after,fieldset[disabled] .rab-btn-success:focus>a:only-child:after,fieldset[disabled] .rab-btn-success:hover>a:only-child:after,fieldset[disabled] .rab-btn-success>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-success.active,.rab-btn-success:active,.rab-btn-success:hover{color:#fff}.rab-btn-success:focus{box-shadow:0 0 0 2px rgba(82,196,26,.2)}.rab-btn-warning{color:#fff;background-color:#faad14;border-color:#faad14}.rab-btn-warning>a:only-child{color:currentColor}.rab-btn-warning>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-warning:hover{color:#fff;background-color:#fbbd43;border-color:#fbbd43}.rab-btn-warning:hover>a:only-child{color:currentColor}.rab-btn-warning:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-warning.active,.rab-btn-warning:active{color:#f2f2f2;background-color:#eea413;border-color:#eea413}.rab-btn-warning.active>a:only-child,.rab-btn-warning:active>a:only-child{color:currentColor}.rab-btn-warning.active>a:only-child:after,.rab-btn-warning:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-warning.disabled,.rab-btn-warning.disabled.active,.rab-btn-warning.disabled:active,.rab-btn-warning.disabled:focus,.rab-btn-warning.disabled:hover,.rab-btn-warning[disabled],.rab-btn-warning[disabled].active,.rab-btn-warning[disabled]:active,.rab-btn-warning[disabled]:focus,.rab-btn-warning[disabled]:hover,fieldset[disabled] .rab-btn-warning,fieldset[disabled] .rab-btn-warning.active,fieldset[disabled] .rab-btn-warning:active,fieldset[disabled] .rab-btn-warning:focus,fieldset[disabled] .rab-btn-warning:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-warning.disabled.active>a:only-child,.rab-btn-warning.disabled:active>a:only-child,.rab-btn-warning.disabled:focus>a:only-child,.rab-btn-warning.disabled:hover>a:only-child,.rab-btn-warning.disabled>a:only-child,.rab-btn-warning[disabled].active>a:only-child,.rab-btn-warning[disabled]:active>a:only-child,.rab-btn-warning[disabled]:focus>a:only-child,.rab-btn-warning[disabled]:hover>a:only-child,.rab-btn-warning[disabled]>a:only-child,fieldset[disabled] .rab-btn-warning.active>a:only-child,fieldset[disabled] .rab-btn-warning:active>a:only-child,fieldset[disabled] .rab-btn-warning:focus>a:only-child,fieldset[disabled] .rab-btn-warning:hover>a:only-child,fieldset[disabled] .rab-btn-warning>a:only-child{color:currentColor}.rab-btn-warning.disabled.active>a:only-child:after,.rab-btn-warning.disabled:active>a:only-child:after,.rab-btn-warning.disabled:focus>a:only-child:after,.rab-btn-warning.disabled:hover>a:only-child:after,.rab-btn-warning.disabled>a:only-child:after,.rab-btn-warning[disabled].active>a:only-child:after,.rab-btn-warning[disabled]:active>a:only-child:after,.rab-btn-warning[disabled]:focus>a:only-child:after,.rab-btn-warning[disabled]:hover>a:only-child:after,.rab-btn-warning[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-warning.active>a:only-child:after,fieldset[disabled] .rab-btn-warning:active>a:only-child:after,fieldset[disabled] .rab-btn-warning:focus>a:only-child:after,fieldset[disabled] .rab-btn-warning:hover>a:only-child:after,fieldset[disabled] .rab-btn-warning>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-warning.active,.rab-btn-warning:active,.rab-btn-warning:hover{color:#fff}.rab-btn-warning:focus{box-shadow:0 0 0 2px rgba(250,173,20,.2)}.rab-btn-error{color:#fff;background-color:#ff4d4f;border-color:#ff4d4f}.rab-btn-error>a:only-child{color:currentColor}.rab-btn-error>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-error:hover{color:#fff;background-color:#ff7172;border-color:#ff7172}.rab-btn-error:hover>a:only-child{color:currentColor}.rab-btn-error:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-error.active,.rab-btn-error:active{color:#f2f2f2;background-color:#f2494b;border-color:#f2494b}.rab-btn-error.active>a:only-child,.rab-btn-error:active>a:only-child{color:currentColor}.rab-btn-error.active>a:only-child:after,.rab-btn-error:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-error.disabled,.rab-btn-error.disabled.active,.rab-btn-error.disabled:active,.rab-btn-error.disabled:focus,.rab-btn-error.disabled:hover,.rab-btn-error[disabled],.rab-btn-error[disabled].active,.rab-btn-error[disabled]:active,.rab-btn-error[disabled]:focus,.rab-btn-error[disabled]:hover,fieldset[disabled] .rab-btn-error,fieldset[disabled] .rab-btn-error.active,fieldset[disabled] .rab-btn-error:active,fieldset[disabled] .rab-btn-error:focus,fieldset[disabled] .rab-btn-error:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-error.disabled.active>a:only-child,.rab-btn-error.disabled:active>a:only-child,.rab-btn-error.disabled:focus>a:only-child,.rab-btn-error.disabled:hover>a:only-child,.rab-btn-error.disabled>a:only-child,.rab-btn-error[disabled].active>a:only-child,.rab-btn-error[disabled]:active>a:only-child,.rab-btn-error[disabled]:focus>a:only-child,.rab-btn-error[disabled]:hover>a:only-child,.rab-btn-error[disabled]>a:only-child,fieldset[disabled] .rab-btn-error.active>a:only-child,fieldset[disabled] .rab-btn-error:active>a:only-child,fieldset[disabled] .rab-btn-error:focus>a:only-child,fieldset[disabled] .rab-btn-error:hover>a:only-child,fieldset[disabled] .rab-btn-error>a:only-child{color:currentColor}.rab-btn-error.disabled.active>a:only-child:after,.rab-btn-error.disabled:active>a:only-child:after,.rab-btn-error.disabled:focus>a:only-child:after,.rab-btn-error.disabled:hover>a:only-child:after,.rab-btn-error.disabled>a:only-child:after,.rab-btn-error[disabled].active>a:only-child:after,.rab-btn-error[disabled]:active>a:only-child:after,.rab-btn-error[disabled]:focus>a:only-child:after,.rab-btn-error[disabled]:hover>a:only-child:after,.rab-btn-error[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-error.active>a:only-child:after,fieldset[disabled] .rab-btn-error:active>a:only-child:after,fieldset[disabled] .rab-btn-error:focus>a:only-child:after,fieldset[disabled] .rab-btn-error:hover>a:only-child:after,fieldset[disabled] .rab-btn-error>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-error.active,.rab-btn-error:active,.rab-btn-error:hover{color:#fff}.rab-btn-error:focus{box-shadow:0 0 0 2px rgba(255,77,79,.2)}.rab-btn-info{color:#fff;background-color:#2db7f5;border-color:#2db7f5}.rab-btn-info>a:only-child{color:currentColor}.rab-btn-info>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-info:hover{color:#fff;background-color:#57c5f7;border-color:#57c5f7}.rab-btn-info:hover>a:only-child{color:currentColor}.rab-btn-info:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-info.active,.rab-btn-info:active{color:#f2f2f2;background-color:#2baee9;border-color:#2baee9}.rab-btn-info.active>a:only-child,.rab-btn-info:active>a:only-child{color:currentColor}.rab-btn-info.active>a:only-child:after,.rab-btn-info:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-info.disabled,.rab-btn-info.disabled.active,.rab-btn-info.disabled:active,.rab-btn-info.disabled:focus,.rab-btn-info.disabled:hover,.rab-btn-info[disabled],.rab-btn-info[disabled].active,.rab-btn-info[disabled]:active,.rab-btn-info[disabled]:focus,.rab-btn-info[disabled]:hover,fieldset[disabled] .rab-btn-info,fieldset[disabled] .rab-btn-info.active,fieldset[disabled] .rab-btn-info:active,fieldset[disabled] .rab-btn-info:focus,fieldset[disabled] .rab-btn-info:hover{color:#c5c8ce;background-color:#fafafa;border-color:#dcdee2}.rab-btn-info.disabled.active>a:only-child,.rab-btn-info.disabled:active>a:only-child,.rab-btn-info.disabled:focus>a:only-child,.rab-btn-info.disabled:hover>a:only-child,.rab-btn-info.disabled>a:only-child,.rab-btn-info[disabled].active>a:only-child,.rab-btn-info[disabled]:active>a:only-child,.rab-btn-info[disabled]:focus>a:only-child,.rab-btn-info[disabled]:hover>a:only-child,.rab-btn-info[disabled]>a:only-child,fieldset[disabled] .rab-btn-info.active>a:only-child,fieldset[disabled] .rab-btn-info:active>a:only-child,fieldset[disabled] .rab-btn-info:focus>a:only-child,fieldset[disabled] .rab-btn-info:hover>a:only-child,fieldset[disabled] .rab-btn-info>a:only-child{color:currentColor}.rab-btn-info.disabled.active>a:only-child:after,.rab-btn-info.disabled:active>a:only-child:after,.rab-btn-info.disabled:focus>a:only-child:after,.rab-btn-info.disabled:hover>a:only-child:after,.rab-btn-info.disabled>a:only-child:after,.rab-btn-info[disabled].active>a:only-child:after,.rab-btn-info[disabled]:active>a:only-child:after,.rab-btn-info[disabled]:focus>a:only-child:after,.rab-btn-info[disabled]:hover>a:only-child:after,.rab-btn-info[disabled]>a:only-child:after,fieldset[disabled] .rab-btn-info.active>a:only-child:after,fieldset[disabled] .rab-btn-info:active>a:only-child:after,fieldset[disabled] .rab-btn-info:focus>a:only-child:after,fieldset[disabled] .rab-btn-info:hover>a:only-child:after,fieldset[disabled] .rab-btn-info>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.rab-btn-info.active,.rab-btn-info:active,.rab-btn-info:hover{color:#fff}.rab-btn-info:focus{box-shadow:0 0 0 2px rgba(45,183,245,.2)}.rab-btn-circle,.rab-btn-circle-outline{border-radius:32px}.rab-btn-circle-outline.rab-btn-large,.rab-btn-circle.rab-btn-large{border-radius:40px}.rab-btn-circle-outline.rab-btn-size,.rab-btn-circle.rab-btn-size{border-radius:24px}.rab-btn-circle-outline.rab-btn-icon-only,.rab-btn-circle.rab-btn-icon-only{width:32px;height:32px;padding:0;font-size:16px;border-radius:50%}.rab-btn-circle-outline.rab-btn-icon-only.rab-btn-large,.rab-btn-circle.rab-btn-icon-only.rab-btn-large{width:40px;height:40px;padding:0;font-size:18px;border-radius:50%}.rab-btn-circle-outline.rab-btn-icon-only.rab-btn-small,.rab-btn-circle.rab-btn-icon-only.rab-btn-small{width:24px;height:24px;padding:0;font-size:14px;border-radius:50%}.rab-btn:before{position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;background:#fff;opacity:.35;content:"";border-radius:inherit;z-index:1;transition:opacity .2s;pointer-events:none;display:none}.rab-btn.rab-btn-loading{pointer-events:none;position:relative}.rab-btn.rab-btn-loading:before{display:block}.rab-btn-group{position:relative;display:inline-block;vertical-align:middle}.rab-btn-group>.rab-btn{position:relative;float:left}.rab-btn-group>.rab-btn.active,.rab-btn-group>.rab-btn:active,.rab-btn-group>.rab-btn:hover{z-index:2}.rab-btn-group-circle .rab-btn{border-radius:32px}.rab-btn-group-lg.rab-btn-group-circle .rab-btn{border-radius:40px}.rab-btn-group-lg>.rab-btn{height:40px;padding:0 15px;font-size:16px;border-radius:2px}.rab-btn-group-sm.rab-btn-group-circle .rab-btn{border-radius:24px}.rab-btn-group-sm>.rab-btn{height:24px;padding:0 7px;font-size:14px;border-radius:1px}.rab-btn-group-sm>.rab-btn>.rab-icon{font-size:14px}.rab-btn-group-sm .rab-btn-icon-only{width:24px;height:24px;padding:0}.rab-btn-group-lg .rab-btn-icon-only{width:40px;height:40px;padding:0}.rab-btn+.rab-btn-group,.rab-btn-group+.rab-btn,.rab-btn-group+.rab-btn-group,.rab-btn-group .rab-btn+.rab-btn{margin-left:-1px}.rab-btn-group .rab-btn:not(:first-child):not(:last-child){border-radius:0}.rab-btn-group:not(.rab-btn-group-vertical)>.rab-btn:first-child{margin-left:0}.rab-btn-group:not(.rab-btn-group-vertical)>.rab-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.rab-btn-group:not(.rab-btn-group-vertical)>.rab-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.rab-btn-group>.rab-btn-group{float:left}.rab-btn-group>.rab-btn-group:not(:first-child):not(:last-child)>.rab-btn{border-radius:0}.rab-btn-group:not(.rab-btn-group-vertical)>.rab-btn-group:first-child:not(:last-child)>.rab-btn:last-child{border-bottom-right-radius:0;border-top-right-radius:0;padding-right:8px}.rab-btn-group:not(.rab-btn-group-vertical)>.rab-btn-group:last-child:not(:first-child)>.rab-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;padding-left:8px}.rab-btn-group-vertical{display:inline-block;vertical-align:middle}.rab-btn-group-vertical>.rab-btn{display:block;width:100%;max-width:100%;float:none;min-width:32px}.rab-btn-group-vertical.rab-btn-group-small>.rab-btn{min-width:24px}.rab-btn-group-vertical.rab-btn-group-large>.rab-btn{min-width:40px}.rab-btn+.rab-btn-group-vertical,.rab-btn-group-vertical+.rab-btn,.rab-btn-group-vertical+.rab-btn-group-vertical,.rab-btn-group-vertical .rab-btn+.rab-btn{margin-top:-1px;margin-left:0}.rab-btn-group-vertical>.rab-btn:first-child{margin-top:0}.rab-btn-group-vertical>.rab-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.rab-btn-group-vertical>.rab-btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.rab-btn-group-vertical>.rab-btn-group-vertical:first-child:not(:last-child)>.rab-btn:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0;padding-bottom:8px}.rab-btn-group-vertical>.rab-btn-group-vertical:last-child:not(:first-child)>.rab-btn:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0;padding-top:8px}.rab-btn-ghost{color:#fff}.rab-btn-ghost,.rab-btn-ghost:hover{background:transparent}.rab-btn-ghost.rab-btn-dashed,.rab-btn-ghost.rab-btn-default{color:#fff;border-color:#fff}.rab-btn-ghost.rab-btn-dashed:hover,.rab-btn-ghost.rab-btn-default:hover{color:#46a6ff;border-color:#46a6ff}.rab-btn-ghost.rab-btn-primary{color:#1890ff}.rab-btn-ghost.rab-btn-primary:hover{color:#46a6ff;background:rgba(243,249,255,.5)}.rab-btn-ghost.rab-btn-info{color:#2db7f5}.rab-btn-ghost.rab-btn-info:hover{color:#57c5f7;background:rgba(245,251,254,.5)}.rab-btn-ghost.rab-btn-success{color:#52c41a}.rab-btn-ghost.rab-btn-success:hover{color:#75d048;background:rgba(246,252,244,.5)}.rab-btn-ghost.rab-btn-warning{color:#faad14}.rab-btn-ghost.rab-btn-warning:hover{color:#fbbd43;background:rgba(255,251,243,.5)}.rab-btn-ghost.rab-btn-error{color:#ff4d4f}.rab-btn-ghost.rab-btn-error:hover{color:#ff7172;background:rgba(255,246,246,.5)}.rab-btn-ghost.rab-btn-dashed[disabled],.rab-btn-ghost.rab-btn-default[disabled],.rab-btn-ghost.rab-btn-error[disabled],.rab-btn-ghost.rab-btn-info[disabled],.rab-btn-ghost.rab-btn-primary[disabled],.rab-btn-ghost.rab-btn-success[disabled],.rab-btn-ghost.rab-btn-warning[disabled]{background:transparent;color:rgba(0,0,0,.25);border-color:#dcdee2}.rab-btn-ghost.rab-btn-text[disabled]{background:transparent;color:rgba(0,0,0,.25)}.rab-btn-sm{font-size:12px}a.rab-btn{padding-top:.1px;line-height:30px}a.rab-btn-lg{line-height:38px}a.rab-btn-sm{line-height:22px}r-card{display:block;background:#fff;border:1px solid #e8eaec;border-radius:2px;font-size:14px;position:relative;transition:all .2s ease-in-out}r-card:not(.rab-card-shadow):hover{box-shadow:0 4px 12px rgba(0,0,0,.15);border-color:#eee}.rab-card-no-border{border:none!important}.rab-card-shadow{box-shadow:0 2px 8px 0 rgba(0,0,0,.1)}.rab-card-dis-hover:hover{box-shadow:none!important}.rab-card-dis-hover.rab-card-bordered:hover,.rab-card-dis-hover:hover{border-color:#e8eaec!important}.rab-card-head{border-bottom:1px solid #e8eaec;padding:14px 16px;line-height:1.5;font-size:16px;color:#2c3e50}.rab-card-head-inner,.rab-card-head p{display:inline-block;width:100%;height:20px;line-height:20px;font-size:16px;color:#2c3e50;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rab-card-extra{position:absolute;right:16px;top:14px}.rab-card-body{padding:16px}r-carousel{position:relative;display:block}.rab-carousel-list{position:relative;width:100%;overflow:hidden}.rab-carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .5s ease}.rab-carousel-item-next,.rab-carousel-item-prev,.rab-carousel-item.active{display:block}.active.rab-carousel-item-right,.rab-carousel-item-next:not(.rab-carousel-item-left){transform:translateX(100%)}.active.rab-carousel-item-left,.rab-carousel-item-prev:not(.rab-carousel-item-right){transform:translateX(-100%)}.rab-carousel-fade .rab-carousel-item{opacity:0;transition-property:opacity;transform:none}.rab-carousel-fade .rab-carousel-item-next.rab-carousel-item-left,.rab-carousel-fade .rab-carousel-item-prev.rab-carousel-item-right,.rab-carousel-fade .rab-carousel-item.active{z-index:1;opacity:1}.rab-carousel-fade .active.rab-carousel-item-left,.rab-carousel-fade .active.rab-carousel-item-right{z-index:0;opacity:0;transition:opacity .5s ease 0s}.rab-carousel-arrow{border:0;padding:0;margin:0;outline:none;width:36px;height:36px;border-radius:50%;cursor:pointer;display:none;position:absolute;top:50%;z-index:10;transform:translateY(-50%);transition:.2s;background-color:rgba(31,45,61,.11);color:#fff;text-align:center;font-size:1em;font-family:inherit;line-height:inherit}.rab-carousel-arrow:hover{background-color:rgba(31,45,61,.5)}.rab-carousel-arrow>*{vertical-align:baseline}.rab-carousel-arrow.left{left:16px}.rab-carousel-arrow.right{right:16px}.rab-carousel-arrow-always{display:inherit}.rab-carousel-arrow-hover{display:inherit;opacity:0}r-carousel:hover .rab-carousel-arrow-hover{opacity:1}.rab-carousel-dots{z-index:10;display:none;position:relative;list-style:none;text-align:center;padding:0;width:100%;height:17px}.rab-carousel-dots-inside{display:block;position:absolute;bottom:3px}.rab-carousel-dots-outside{display:block;margin-top:3px}.rab-carousel-dots li{position:relative;display:inline-block;vertical-align:top;text-align:center;margin:0 2px;padding:7px 0;cursor:pointer}.rab-carousel-dots li button{width:16px;height:3px;border:0;cursor:pointer;background:#8391a5;opacity:.3;display:block;border-radius:1px;outline:none;font-size:0;color:transparent;transition:all .5s}.rab-carousel-dots li button.radius{width:9px;height:9px;border-radius:50%}.rab-carousel-dots li:hover>button{opacity:.7}.rab-carousel-dots li.rab-carousel-active>button{opacity:1;width:24px}.rab-carousel-dots li.rab-carousel-active>button.radius{width:9px}.rab-checkbox{display:inline-block;vertical-align:middle;white-space:nowrap;cursor:pointer;position:relative;line-height:1}.rab-checkbox-focus{box-shadow:0 0 0 2px rgba(24,144,255,.2);z-index:1}.rab-checkbox:hover .rab-checkbox-inner{border-color:#bcbcbc}.rab-checkbox-inner{display:inline-block;width:16px;height:16px;position:relative;top:0;left:0;border:1px solid #dcdee2;border-radius:2px;background-color:#fff;transition:border-color .2s ease-in-out,background-color .2s ease-in-out,box-shadow .2s ease-in-out}.rab-checkbox-inner:after{content:"";display:table;width:4px;height:8px;position:absolute;top:1px;left:4px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0);transition:all .2s ease-in-out}.rab-checkbox-input{width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0;cursor:pointer;opacity:0}.rab-checkbox-input[disabled]{cursor:not-allowed}.rab-checkbox+.rab-icon{position:relative;top:1px;margin-left:5px}.rab-checkbox-checked:hover .rab-checkbox-inner{border-color:#1890ff}.rab-checkbox-checked .rab-checkbox-inner{border-color:#1890ff;background-color:#1890ff}.rab-checkbox-checked .rab-checkbox-inner:after{content:"";display:table;width:4px;height:8px;position:absolute;top:2px;left:5px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1);transition:all .2s ease-in-out}.rab-checkbox-indeterminate .rab-checkbox-inner:after{content:"";width:10px;height:1px;transform:scale(1);position:absolute;left:2px;top:6px}.rab-checkbox-indeterminate:hover .rab-checkbox-inner{border-color:#1890ff}.rab-checkbox-indeterminate .rab-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.rab-checkbox-indeterminate[disabled] .rab-checkbox-inner{background-color:#f3f3f3;border-color:#dcdee2}.rab-checkbox-indeterminate[disabled] .rab-checkbox-inner:after{border-color:#c5c8ce}r-checkbox{cursor:pointer;font-size:14px;display:inline-block;margin-right:8px}r-checkbox[disabled],r-checkbox[disabled] .rab-checkbox{cursor:not-allowed}r-checkbox[disabled] .rab-checkbox-checked:hover .rab-checkbox-inner{border-color:#dcdee2}r-checkbox[disabled] .rab-checkbox-checked .rab-checkbox-inner{background-color:#f3f3f3;border-color:#dcdee2}r-checkbox[disabled] .rab-checkbox-checked .rab-checkbox-inner:after{animation-name:none;border-color:#ccc}r-checkbox[disabled] .rab-checkbox .rab-checkbox-inner{border-color:#dcdee2;background-color:#f3f3f3}r-checkbox[disabled] .rab-checkbox .rab-checkbox-inner:after{animation-name:none;border-color:#ccc}r-checkbox[disabled] .rab-checkbox .rab-checkbox-inner-input{cursor:default}r-checkbox[disabled] .rab-checkbox+span{color:#ccc;cursor:not-allowed}r-checkbox[disabled] .rab-checkbox:hover .rab-checkbox-inner{border-color:#dcdee2}r-checkbox[type=border]{border:1px solid #dcdee2;border-radius:2px;height:32px;line-height:31px;padding:0 15px;transition:border .2s ease-in-out}r-checkbox[size=large]{font-size:16px}r-checkbox[size=large] .rab-checkbox-inner{width:18px;height:18px}r-checkbox[size=large] .rab-checkbox-inner:after{width:5px;height:9px}r-checkbox[size=large].rab-checkbox-checked .rab-checkbox-inner:after{width:6px;height:10px}r-checkbox[size=large] .rab-checkbox-indeterminate .rab-checkbox-inner:after{width:12px;top:7px}r-checkbox[size=small]{font-size:14px}r-checkbox[size=small] .rab-checkbox-inner{width:14px;height:14px}r-checkbox[size=small] .rab-checkbox-inner:after{top:0;left:3px}r-checkbox[size=small].rab-checkbox-checked .rab-checkbox-inner:after{top:1px;left:4px}r-checkbox[size=small] .rab-checkbox-indeterminate .rab-checkbox-inner:after{width:8px;top:5px}r-checkbox+span,r-checkbox .rab-checkbox+span{margin-right:4px}.rab-checkbox-checked[type=border]{border-color:#1890ff}r-checkbox-group{display:block;font-size:14px}r-checkbox-group r-checkbox{display:inline-block}r-checkbox-group[size=large]{font-size:16px}r-checkbox-group[size=large] .rab-checkbox-inner{width:18px;height:18px}r-checkbox-group[size=large] .rab-checkbox-inner:after{width:5px;height:9px}r-checkbox-group[size=large].rab-checkbox-checked .rab-checkbox-inner:after{width:6px;height:10px}r-checkbox-group[size=large] .rab-checkbox-indeterminate .rab-checkbox-inner:after{width:12px;top:7px}r-checkbox-group[size=small]{font-size:14px}r-checkbox-group[size=small] .rab-checkbox-inner{width:14px;height:14px}r-checkbox-group[size=small] .rab-checkbox-inner:after{top:0;left:3px}r-checkbox-group[size=small].rab-checkbox-checked .rab-checkbox-inner:after{top:1px;left:4px}r-checkbox-group[size=small] .rab-checkbox-indeterminate .rab-checkbox-inner:after{width:8px;top:5px}r-checkbox-group[size=small] r-checkbox[type=border],r-checkbox[size=small][type=border]{height:24px;line-height:23px;padding:0 7px}r-checkbox-group[size=large] r-checkbox[type=border],r-checkbox[size=large][type=border]{height:40px;line-height:37px;padding:0 15px}r-circle{display:inline-block;position:relative}.rab-chart-circle-inner{width:100%;text-align:center;position:absolute;left:0;top:50%;transform:translateY(-50%);line-height:0}r-collapse{display:block;background-color:#fafafa;border-radius:2px;border:1px solid #dcdee2}r-collapse-panel{display:none;border-top:1px solid #dcdee2}r-collapse-panel:first-child{border-top:0}r-collapse-panel>.rab-collapse-header{height:38px;line-height:38px;padding-left:16px;color:#666;cursor:pointer;position:relative;border-bottom:1px solid transparent}r-collapse-panel>.rab-collapse-header>i{transition:transform .2s ease-in-out;margin-right:14px}r-collapse-panel.rab-collapse-item-active>.rab-collapse-header{border-bottom:1px solid #dcdee2}r-collapse-panel.rab-collapse-item-active>.rab-collapse-header>i{transform:rotate(90deg)}r-collapse-panel:last-child>.rab-collapse-content{border-radius:0 0 2px 2px}.rab-collapse-ghost,.rab-collapse-simple{border-top:none;border-left:none;border-right:none;border-radius:0}.rab-collapse-ghost>r-collapse-panel.rab-collapse-item-active>.rab-collapse-header,.rab-collapse-simple>r-collapse-panel.rab-collapse-item-active>.rab-collapse-header{border-bottom:1px solid transparent}.rab-collapse-content{display:none;overflow:hidden;color:#55585e;padding:0 16px;background-color:#fff}.rab-collapse-content>.rab-collapse-content-box{padding-top:16px;padding-bottom:16px}.rab-collapse-simple>r-collapse-panel>.rab-collapse-content>.rab-collapse-content-box{padding-top:0}.rab-collapse-simple .rab-collapse-content{background-color:#fafafa}.rab-collapse-ghost{border-bottom:none}.rab-collapse-ghost>r-collapse-panel{border-top:none}.rab-collapse-ghost>r-collapse-panel>.rab-collapse-content>.rab-collapse-content-box{padding-top:12px;padding-bottom:12px}.rab-collapse-ghost,.rab-collapse-ghost .rab-collapse-content{background-color:#fff}.rab-collapse-item-active>.rab-collapse-content{display:block}r-count-down{display:inline-block;font-size:20px}r-divider{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color,Segoe UI Symbol,Noto Color;font-size:14px;line-height:1.5;color:#55585e;box-sizing:border-box;margin:0;padding:0;list-style:none;background:#e8eaec}r-divider,r-divider[type=vertical]{margin:0 8px;display:inline-block;height:.9em;width:1px;vertical-align:middle;position:relative;top:-.06em}r-divider[type=horizontal]{display:block;height:1px;width:100%;min-width:100%;margin:24px 0;clear:both}r-divider[type=horizontal].rab-divider-with-text-center,r-divider[type=horizontal].rab-divider-with-text-left,r-divider[type=horizontal].rab-divider-with-text-right{display:table;white-space:nowrap;text-align:center;background:transparent;font-weight:500;color:#2c3e50;font-size:16px;margin:16px 0}r-divider[type=horizontal].rab-divider-with-text-center:after,r-divider[type=horizontal].rab-divider-with-text-center:before,r-divider[type=horizontal].rab-divider-with-text-left:after,r-divider[type=horizontal].rab-divider-with-text-left:before,r-divider[type=horizontal].rab-divider-with-text-right:after,r-divider[type=horizontal].rab-divider-with-text-right:before{content:"";display:table-cell;position:relative;top:50%;width:50%;border-top:1px solid #e8eaec;transform:translateY(50%)}r-divider[type=horizontal][size=small].rab-divider-with-text-center,r-divider[type=horizontal][size=small].rab-divider-with-text-left,r-divider[type=horizontal][size=small].rab-divider-with-text-right{font-size:14px;margin:8px 0}r-divider[type=horizontal].rab-divider-with-text-left .rab-divider-inner-text,r-divider[type=horizontal].rab-divider-with-text-right .rab-divider-inner-text{display:inline-block;padding:0 10px}r-divider[type=horizontal].rab-divider-with-text-left:before{top:50%;width:5%}r-divider[type=horizontal].rab-divider-with-text-left:after,r-divider[type=horizontal].rab-divider-with-text-right:before{top:50%;width:95%}r-divider[type=horizontal].rab-divider-with-text-right:after{top:50%;width:5%}r-divider[type=horizontal].rab-divider-with-text-left.rab-divider-dashed,r-divider[type=horizontal].rab-divider-with-text-right.rab-divider-dashed,r-divider[type=horizontal].rab-divider-with-text.rab-divider-dashed{border-top:0}r-divider[type=horizontal].rab-divider-with-text-left.rab-divider-dashed:after,r-divider[type=horizontal].rab-divider-with-text-left.rab-divider-dashed:before,r-divider[type=horizontal].rab-divider-with-text-right.rab-divider-dashed:after,r-divider[type=horizontal].rab-divider-with-text-right.rab-divider-dashed:before,r-divider[type=horizontal].rab-divider-with-text.rab-divider-dashed:after,r-divider[type=horizontal].rab-divider-with-text.rab-divider-dashed:before{border-style:dashed none none}.rab-divider-inner-text{display:inline-block;padding:0 24px}.rab-divider-dashed{background:none;border-top:1px dashed #e8eaec}.rab-divider-plain.rab-divider-with-text,.rab-divider-plain.rab-divider-with-text-left,.rab-divider-plain.rab-divider-with-text-right{color:#55585e!important;font-weight:400!important;font-size:14px!important}r-drawer{display:none}.rab-drawer{width:auto;height:100%;position:fixed}.rab-drawer-inner{position:absolute}.rab-drawer-bottom,.rab-drawer-top{width:100%;left:0}.rab-drawer-left,.rab-drawer-right{top:0;height:100%}.rab-drawer-left{left:0}.rab-drawer-right{right:0}.rab-drawer-top{top:0}.rab-drawer-bottom{bottom:0}.rab-drawer-hidden{display:none!important}.rab-drawer-wrap{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;z-index:1000;-webkit-overflow-scrolling:touch;outline:0}.rab-drawer-wrap-inner{position:absolute;overflow:hidden}.rab-drawer-wrap-dragging{user-select:none}.rab-drawer-wrap *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rab-drawer-mask{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(45,45,45,.55);height:100%;z-index:1000}.rab-drawer-mask-hidden{display:none}.rab-drawer-mask-inner{position:absolute}.rab-drawer-content{width:100%;height:100%;position:absolute;top:0;bottom:0;background-color:#fff;border:0;background-clip:padding-box;box-shadow:0 4px 12px rgba(0,0,0,.15)}.rab-drawer-content-no-mask{pointer-events:auto}.rab-drawer-header{border-bottom:1px solid #e8eaec;padding:14px 16px;line-height:1.5;font-size:16px;color:#2c3e50}.rab-drawer-header-inner,.rab-drawer-header p{display:inline-block;width:100%;height:20px;line-height:20px;font-size:16px;color:#2c3e50;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rab-drawer-close{z-index:1;font-size:12px;position:absolute;right:8px;top:8px;overflow:hidden;cursor:pointer}.rab-drawer-close .rab-icon-ios-close{font-size:28px;color:#999;transition:color .2s ease;position:relative;top:0}.rab-drawer-close .rab-icon-ios-close:hover{color:#666}.rab-drawer-body{width:100%;height:calc(100% - 51px);padding:16px;font-size:14px;line-height:1.5;word-wrap:break-word;position:absolute;overflow:auto}.rab-drawer-no-header .rab-drawer-body{height:100%}.rab-drawer-no-mask{pointer-events:none}.rab-drawer-no-mask .rab-drawer-drag{pointer-events:auto}.rab-drawer-drag{top:0;height:100%;width:0;position:absolute}.rab-drawer-drag-left{right:0}.rab-drawer-drag-move-trigger{width:8px;height:100px;line-height:100px;position:absolute;top:50%;background:#f3f3f3;transform:translate(-50%,-50%);border-radius:4px/6px;box-shadow:0 0 1px 1px rgba(0,0,0,.2);cursor:col-resize}.rab-drawer-drag-move-trigger-point{display:inline-block;width:50%;transform:translateX(50%)}.rab-drawer-drag-move-trigger-point i{display:block;border-bottom:1px solid silver;padding-bottom:2px}.rab-drawer-top-move-enter{animation:rabDrawerMoveTopIn .55s cubic-bezier(.075,.82,.165,1)}.rab-drawer-bottom-move-enter{animation:rabDrawerMoveBottomIn .55s cubic-bezier(.075,.82,.165,1)}.rab-drawer-left-move-enter{animation:rabDrawerMoveLeftIn .55s cubic-bezier(.075,.82,.165,1)}.rab-drawer-right-move-enter{animation:rabDrawerMoveRightIn .55s cubic-bezier(.075,.82,.165,1)}.rab-drawer-top-move-leave{animation:rabDrawerMoveTopOut .5s cubic-bezier(.075,.82,.165,1)}.rab-drawer-bottom-move-leave{animation:rabDrawerMoveBottomOut .5s cubic-bezier(.075,.82,.165,1)}.rab-drawer-left-move-leave{animation:rabDrawerMoveLeftOut .5s cubic-bezier(.075,.82,.165,1)}.rab-drawer-right-move-leave{animation:rabDrawerMoveRightOut .5s cubic-bezier(.075,.82,.165,1)}r-dropdown{display:inline-block;position:relative}r-dropdown r-dropdown-menu{overflow:visible;max-height:none}r-dropdown-menu{width:inherit;max-height:200px;overflow:auto;display:block;visibility:hidden;min-width:100px;padding:5px 0;box-shadow:0 2px 8px rgba(0,0,0,.15);position:absolute;background-color:#fff;box-sizing:border-box;border-radius:2px;z-index:900}r-dropdown-item[selected],r-dropdown-item[selected]:hover{background:#e6f7ff}r-dropdown-item[danger]{color:#ff4d4f}r-dropdown-item[danger]:hover{color:#fff;background-color:#ff4d4f}r-dropdown-item{display:block;margin:0;line-height:normal;padding:7px 16px;clear:both;color:#55585e;font-size:14px!important;white-space:nowrap;cursor:pointer;transition:all .3s ease-in-out}r-dropdown-item:hover{background:#f3f3f3}r-dropdown-item[disabled],r-dropdown-item[disabled]:hover{color:#c5c8ce;cursor:not-allowed}r-dropdown-item[disabled]:hover{background-color:#fff}r-dropdown-item[selected],r-dropdown-item[selected]:hover{color:#1890ff;background:rgba(24,144,255,.1)}r-dropdown-item[selected].rab-dropdown-item-focus{background:rgba(21,127,225,.91)}r-dropdown-item[divided]{margin-top:5px;border-top:1px solid #e8eaec}r-dropdown-item[divided]:before{content:"";height:5px;display:block;margin:0 -16px;background-color:#fff;position:relative;top:-7px}.rab-dropdown-item-focus{background:#f3f3f3}.rab-dropdown-item-enter{color:#1890ff;font-weight:700;float:right}.rab-dropdown-large r-dropdown-item{padding:7px 16px 8px;font-size:14px!important}@-moz-document url-prefix(){r-dropdown-item{white-space:normal}}.transition-drop-enter{animation:rabTransitionDropIn .3s ease-in-out}.transition-drop-leave{animation:rabTransitionDropOut .3s ease-in-out}r-empty{display:block;margin:0 8px;font-size:14px;line-height:22px;text-align:center}.rab-empty-image{height:100px;margin-bottom:12px}.rab-empty-image img{height:100%}.rab-empty-description{margin:0;color:#808695}.rab-empty-footer{margin-top:12px}.rab-input-number{display:inline-block;width:100%;line-height:1.5;font-size:14px;color:#55585e;background-color:#fff;background-image:none;position:relative;cursor:text;transition:border .2s ease-in-out,background .2s ease-in-out,box-shadow .2s ease-in-out;margin:0;padding:0;width:80px;height:32px;line-height:32px;vertical-align:middle;border:1px solid #dcdee2;border-radius:2px;overflow:hidden;cursor:default}.rab-input-number::-moz-placeholder{color:#c5c8ce;opacity:1}.rab-input-number:-ms-input-placeholder{color:#c5c8ce}.rab-input-number::-webkit-input-placeholder{color:#c5c8ce}.rab-input-number:focus{border-color:#46a6ff;outline:0;box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-input-number[disabled],fieldset[disabled] .rab-input-number{background-color:#f3f3f3;opacity:1;cursor:not-allowed;color:#ccc}.rab-input-number[disabled]:hover,fieldset[disabled] .rab-input-number:hover{border-color:#e3e5e8}textarea.rab-input-number{max-width:100%;height:auto;min-height:32px;vertical-align:bottom;font-size:14px}.rab-input-number-large{font-size:16px;padding:6px 7px;height:40px}.rab-input-number-small{padding:1px 7px;height:24px;border-radius:1px}.rab-input-number-handler-wrap{width:22px;height:100%;border-left:1px solid #dcdee2;border-radius:0 2px 2px 0;background:#fff;position:absolute;top:0;right:0;opacity:0;transition:opacity .2s ease-in-out}.rab-input-number:hover .rab-input-number-handler-wrap{opacity:1}.rab-input-number-handler-up{cursor:pointer}.rab-input-number-handler-up-inner{top:-1px}.rab-input-number-handler-down{border-top:1px solid #dcdee2;top:-1px;cursor:pointer}.rab-input-number-handler{display:block;width:100%;height:16px;line-height:0;text-align:center;overflow:hidden;color:#999;position:relative}.rab-input-number-handler:hover .rab-input-number-handler-down-inner,.rab-input-number-handler:hover .rab-input-number-handler-up-inner{color:#46a6ff}.rab-input-number-handler-down-inner,.rab-input-number-handler-up-inner{width:12px;height:12px;line-height:12px;font-size:14px;color:#999;user-select:none;position:absolute;right:5px;transition:all .2s linear}.rab-input-number:hover{border-color:#46a6ff}.rab-input-number-focused{border-color:#46a6ff;outline:0;box-shadow:0 0 0 2px rgba(24,144,255,.2)}.rab-input-number-disabled{background-color:#f3f3f3;opacity:1;cursor:not-allowed;color:#ccc}.rab-input-number-disabled:hover{border-color:#e3e5e8}.rab-input-number-input-wrap{overflow:hidden;height:32px}.rab-input-number-input{width:100%;height:32px;line-height:32px;padding:0 7px;text-align:left;outline:0;-moz-appearance:textfield;color:#666;border:0;border-radius:2px;transition:all .2s linear}.rab-input-number-input::-webkit-inner-spin-button,.rab-input-number-input::-webkit-outer-spin-button{-webkit-appearance:none}.rab-input-number-input[disabled]{background-color:#f3f3f3;opacity:1;cursor:not-allowed;color:#ccc}.rab-input-number-input[disabled]:hover{border-color:#e3e5e8}.rab-input-number-input::placeholder{color:#c5c8ce}.rab-input-number-large{padding:0}.rab-input-number-large .rab-input-number-input-wrap{height:40px}.rab-input-number-large .rab-input-number-handler{height:20px}.rab-input-number-large input{height:40px;line-height:40px}.rab-input-number-large .rab-input-number-handler-up-inner{top:1px}.rab-input-number-large .rab-input-number-handler-down-inner{bottom:5px}.rab-input-number-small{padding:0}.rab-input-number-small .rab-input-number-input-wrap{height:24px}.rab-input-number-small .rab-input-number-handler{height:12px}.rab-input-number-small input{height:24px;line-height:24px;margin-top:-1px;vertical-align:top}.rab-input-number-small .rab-input-number-handler-up-inner{top:-4px}.rab-input-number-small .rab-input-number-handler-down-inner{bottom:2px}.rab-input-number-disabled .rab-input-number-handler-down-inner,.rab-input-number-disabled .rab-input-number-handler-up-inner,.rab-input-number-handler-down-disabled .rab-input-number-handler-down-inner,.rab-input-number-handler-down-disabled .rab-input-number-handler-up-inner,.rab-input-number-handler-up-disabled .rab-input-number-handler-down-inner,.rab-input-number-handler-up-disabled .rab-input-number-handler-up-inner{opacity:.72;color:#ccc!important;cursor:not-allowed}.rab-input-number-disabled .rab-input-number-input{opacity:.72;cursor:not-allowed;background-color:#f3f3f3}.rab-input-number-disabled .rab-input-number-handler-wrap{display:none}.rab-input-number-disabled .rab-input-number-handler{opacity:.72;color:#ccc!important;cursor:not-allowed}.rab-input-number-controls-outside{width:144px;padding:0 32px}.rab-input-number-controls-outside .rab-input-number-input{border-radius:0;text-align:center}.rab-input-number-controls-outside-btn{display:inline-block;width:32px;height:32px;line-height:30px;position:absolute;top:0;text-align:center;background-color:#f8f8f9;color:#55585e;cursor:pointer}.rab-input-number-controls-outside-btn i{font-size:16px}.rab-input-number-controls-outside-btn:hover i{color:#1890ff}.rab-input-number-controls-outside-btn-disabled,.rab-input-number-controls-outside-btn-disabled:hover{cursor:not-allowed}.rab-input-number-controls-outside-btn-disabled:hover i,.rab-input-number-controls-outside-btn-disabled i{color:#ccc}.rab-input-number-controls-outside-up{right:0;border-left:1px solid #dcdee2}.rab-input-number-controls-outside-down{left:0;border-right:1px solid #dcdee2}.rab-input-number-disabled.rab-input-number-controls-outside .rab-input-number-controls-outside-btn{cursor:not-allowed}.rab-input-number-disabled.rab-input-number-controls-outside .rab-input-number-controls-outside-btn i{color:#ccc}.rab-input-number-large.rab-input-number-controls-outside{width:160px;padding:0 40px}.rab-input-number-large.rab-input-number-controls-outside .rab-input-number-controls-outside-btn{width:40px;height:40px;line-height:38px}.rab-input-number-large.rab-input-number-controls-outside .rab-input-number-controls-outside-btn i{font-size:20px}.rab-input-number-small.rab-input-number-controls-outside{width:128px;padding:0 24px}.rab-input-number-small.rab-input-number-controls-outside .rab-input-number-controls-outside-btn{width:24px;height:24px;line-height:22px}.rab-input-number-small.rab-input-number-controls-outside .rab-input-number-controls-outside-btn i{font-size:14px}r-jumbotron{display:block;padding:2rem 1rem;margin-bottom:32px;background-color:#e6ebf1;border-radius:2px}r-jumbotron[type=light]{background-color:#fff}r-jumbotron[type=dark]{background-color:#141414}r-jumbotron[type=dark] .rab-jumbotron-title{color:hsla(0,0%,100%,.8)}r-jumbotron[type=dark] .rab-jumbotron-subtitle{color:hsla(0,0%,100%,.85)}@media (min-width:576px){r-jumbotron{padding:3rem 2rem}}.rab-jumbotron-container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.rab-jumbotron-container{max-width:540px}}@media (min-width:768px){.rab-jumbotron-container{max-width:720px;max-width:960px;max-width:1140px}}.rab-jumbotron-title{color:#2c3e50;font-size:3.5rem;font-weight:300;line-height:1.5}.rab-jumbotron-subtitle{font-size:1.25rem;font-weight:300;margin-bottom:16px}.rab-loading-bar{width:100%;position:fixed;top:0;left:0;right:0;z-index:2000;pointer-events:none}.rab-loading-bar-inner{height:100%;transition:width .2s linear}.rab-loading-bar-inner-color-primary{background-color:#1890ff}.rab-loading-bar-inner-failed-color-error{background-color:#ff4d4f}.rab-message{font-size:14px;position:fixed;z-index:1010;width:100%;top:16px;left:0;pointer-events:none}.rab-message-notice{padding:8px;text-align:center;transition:height .3s ease-in-out,padding .3s ease-in-out}.rab-message-notice:first-child{margin-top:-8px}.rab-message-notice-close{position:absolute;right:4px;top:10px;color:#999;outline:none}.rab-message-notice-close i.rab-icon{font-size:22px;color:#999;transition:color .2s ease;position:relative;top:4px}.rab-message-notice-close i.rab-icon:hover{color:#666}.rab-message-notice-content{display:inline-block;pointer-events:all;padding:10px 16px;border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.15);background:#fff;position:relative}.rab-message-notice-content-text{display:inline-block}.rab-message-notice-closable .rab-message-notice-content-text{padding-right:32px}.rab-message-success .rab-icon{color:#52c41a}.rab-message-error .rab-icon{color:#ff4d4f}.rab-message-warning .rab-icon{color:#faad14}.rab-message-info .rab-icon,.rab-message-loading .rab-icon{color:#1890ff}.rab-message .rab-icon{margin-right:8px;font-size:18px;position:relative;top:1px}.rab-message .rab-icon-loading-solid{height:5px}.rab-message-notice-with-background .rab-message-notice-content-background{box-shadow:none;border-radius:4px}.rab-message-notice-with-background .rab-message-notice-content-info{background:#f0faff;color:#178fff;border:1px solid #cfefff}.rab-message-notice-with-background .rab-message-notice-content-success{background:#f2ffe6;color:#52c41a;border:1px solid #d9f7be}.rab-message-notice-with-background .rab-message-notice-content-warning{background:#fffbe6;color:#faad14;border:1px solid #fff1b8}.rab-message-notice-with-background .rab-message-notice-content-error{background:#fff2f0;color:#ff4d4f;border:1px solid #fff1f0}.rab-message-move-enter{animation:rabMessageMoveIn .3s cubic-bezier(.23,1,.32,1)}.rab-message-move-leave{animation:rabMessageMoveOut .3s cubic-bezier(.23,1,.32,1)}.zoom-big-enter{-webkit-animation:rabZoomBigIn .2s cubic-bezier(.075,.82,.165,1);animation:rabZoomBigIn .2s cubic-bezier(.075,.82,.165,1)}.zoom-big-leave{-webkit-animation:rabZoomBigOut .2s cubic-bezier(.075,.82,.165,1);animation:rabZoomBigOut .2s cubic-bezier(.075,.82,.165,1)}.zoom-big-fast-enter{-webkit-animation:rabZoomBigFastIn .2s cubic-bezier(.075,.82,.165,1);animation:rabZoomBigFastIn .2s cubic-bezier(.075,.82,.165,1)}.zoom-big-fast-leave{-webkit-animation:rabZoomBigFastOut .2s cubic-bezier(.075,.82,.165,1);animation:rabZoomBigFastOut .2s cubic-bezier(.075,.82,.165,1)}@-webkit-keyframes rabZoomBigIn{0%{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes rabZoomBigIn{0%{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes rabZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}}@keyframes rabZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.7);transform:scale(.7);opacity:0}}@-webkit-keyframes rabZoomBigFastIn{0%{-webkit-transform:scale(.6);transform:scale(.6);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes rabZoomBigFastIn{0%{-webkit-transform:scale(.6);transform:scale(.6);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes rabZoomBigFastOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.85);transform:scale(.85);opacity:0}}@keyframes rabZoomBigFastOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.85);transform:scale(.85);opacity:0}}r-modal{display:none}.rab-modal{width:auto;margin:0 auto;position:relative;outline:none;top:100px}.rab-modal.zoom-big-enter,.rab-modal.zoom-big-leave{animation-duration:.3s}.rab-modal-hidden{display:none!important}.rab-modal-wrap{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;z-index:1000;-webkit-overflow-scrolling:touch;outline:0}.rab-modal-wrap *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rab-modal-mask{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(45,45,45,.55);height:100%;z-index:1000}.rab-modal-mask-hidden{display:none}.rab-modal-content{position:relative;background-color:#fff;border:0;border-radius:2px;background-clip:padding-box;box-shadow:0 4px 12px rgba(0,0,0,.15)}.rab-modal-content-no-mask{pointer-events:auto}.rab-modal-header{border-bottom:1px solid #e8eaec;padding:14px 16px;line-height:1.5;font-size:16px;color:#2c3e50}.rab-modal-header-inner,.rab-modal-header p{display:inline-block;width:100%;height:20px;line-height:20px;font-size:16px;color:#2c3e50;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rab-modal-close{z-index:1;font-size:12px;position:absolute;right:8px;top:8px;overflow:hidden;cursor:pointer}.rab-modal-close .rab-icon-ios-close{font-size:31px;color:#999;transition:color .2s ease;position:relative;top:8px}.rab-modal-close .rab-icon-ios-close:hover{color:#666}.rab-modal-body{padding:16px;font-size:14px;line-height:1.5}.rab-modal-body p{margin:0}.rab-modal-footer{border-top:1px solid #e8eaec;padding:12px 18px;text-align:right}.rab-modal-footer button+button{margin-left:8px;margin-bottom:0}.rab-modal-fullscreen{width:100%!important;top:0;bottom:0;position:absolute}.rab-modal-fullscreen .rab-modal-content{width:100%;border-radius:0;position:absolute;top:0;bottom:0}.rab-modal-fullscreen .rab-modal-body{width:100%;overflow:auto;position:absolute;top:51px;bottom:61px}.rab-modal-fullscreen-no-header .rab-modal-body{top:0}.rab-modal-fullscreen-no-footer .rab-modal-body{bottom:0}.rab-modal-fullscreen .rab-modal-footer{position:absolute;width:100%;bottom:0}.rab-modal-no-mask{pointer-events:none}@media (max-width:576px){.rab-modal{width:auto!important;margin:10px}.rab-modal-fullscreen{width:100%!important;margin:0}.vertical-center-modal .rab-modal{flex:1}}.rab-modal-confirm{padding:6px 16px 8px}.rab-modal-confirm-head{padding:0 12px 0 0}.rab-modal-confirm-head-icon{display:inline-block;font-size:30px;vertical-align:middle;position:relative;top:-8px}.rab-modal-confirm-head-icon-info{color:#1890ff}.rab-modal-confirm-head-icon-success{color:#52c41a}.rab-modal-confirm-head-icon-warning{color:#faad14}.rab-modal-confirm-head-icon-error{color:#ff4d4f}.rab-modal-confirm-head-icon-confirm{color:#faad14}.rab-modal-confirm-head-title{display:inline-block;vertical-align:middle;margin-left:10px;font-size:16px;color:#2c3e50;font-weight:500}.rab-modal-confirm-body{padding-left:44px;font-size:14px;color:#55585e;position:relative}.rab-modal-confirm-body p{margin:0}.rab-modal-confirm-footer{margin-top:20px;text-align:right}.rab-modal-confirm-footer button+button{margin-left:8px;margin-bottom:0}.rab-notice{margin-right:24px;position:fixed;z-index:1010}.rab-notice-content-with-icon,.rab-notice-with-desc.rab-notice-with-icon .rab-notice-title{margin-left:51px}.rab-notice-notice{width:384px;max-width:calc(100vw - 48px);margin-bottom:10px;margin-left:auto;padding:16px;border-radius:4px;box-shadow:0 4px 12px rgba(0,0,0,.15);background:#fff;line-height:1.5;position:relative;overflow:hidden}.rab-notice-notice-close{position:absolute;top:16px;right:22px;color:#999;outline:none}.rab-notice-notice-close i{font-size:22px;color:#999;transition:color .2s ease;position:relative;top:4px}.rab-notice-notice-close i:hover{color:#666}.rab-notice-notice-with-desc .rab-notice-notice-close{top:11px}.rab-notice-title{font-size:16px;line-height:19px;color:#2c3e50;padding-right:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rab-notice-with-desc .rab-notice-title{margin-bottom:8px}.rab-notice-desc{font-size:14px;color:#55585e;text-align:justify;line-height:1.5}.rab-notice-with-desc.rab-notice-with-icon .rab-notice-desc{margin-left:51px}.rab-notice-with-icon .rab-notice-title{margin-left:26px}.rab-notice-icon{position:absolute;top:10px;font-size:20px}.rab-notice-icon-success{color:#52c41a}.rab-notice-icon-info{color:#1890ff}.rab-notice-icon-warning{color:#faad14}.rab-notice-icon-error{color:#ff4d4f}.rab-notice-with-desc .rab-notice-icon{font-size:36px;top:1px}.rab-notice-custom-content{position:relative}.rab-notice-move-enter{animation:rabNoticeMoveIn .35s cubic-bezier(.075,.82,.165,1)}.rab-notice-move-leave{animation:rabNoticeMoveOut .5s cubic-bezier(.075,.82,.165,1)}r-page-header{display:block;font-size:14px;line-height:1.5;position:relative;padding:12px 24px;background-color:#fff}.rab-page-header-heading{width:100%;display:flex;align-items:baseline;overflow:hidden}.rab-page-header-heading-title{display:block;float:left;padding-right:12px;color:#2c3e50;font-size:20px;line-height:40px}.rab-page-header-heading-sub-title{color:#808695;font-size:14px}.rab-page-header-back{margin-right:12px;display:flex;align-items:center;transition:color .3s;color:#2c3e50;cursor:pointer}.rab-page-header-back:hover{color:#1890ff}.rab-page-header-back .rab-icon{font-size:21px}.rab-poptip-rel,r-poptip{display:inline-block}.rab-poptip-rel{position:relative}.rab-poptip-title{min-width:177px;min-height:32px;margin:0;padding:8px 16px;position:relative;border-bottom:1px solid #e8eaec;color:#2c3e50;font-size:14px;font-weight:500}.rab-poptip-body{padding:12px 16px}.rab-poptip-body-content{color:#55585e;overflow:auto}.rab-poptip-body-content-word-wrap{white-space:normal;text-align:justify}.rab-poptip-inner{width:100%;background-color:#fff;background-clip:padding-box;border-radius:2px;box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);white-space:nowrap;text-align:left}.rab-poptip-popper{min-width:170px;will-change:top,left;display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060;visibility:hidden;opacity:0}.rab-poptip-popper[x-placement^=top]{padding:7px 0 10px}.rab-poptip-popper[x-placement^=right]{padding:0 7px 0 10px}.rab-poptip-popper[x-placement^=bottom]{padding:10px 0 7px}.rab-poptip-popper[x-placement^=left]{padding:0 10px 0 7px}.rab-poptip-popper[x-placement^=top] .rab-poptip-arrow{bottom:3px;border-width:7px 7px 0;border-top-color:hsla(0,0%,85%,.5)}.rab-poptip-popper[x-placement=top] .rab-poptip-arrow{left:50%;margin-left:-7px}.rab-poptip-popper[x-placement=top-start] .rab-poptip-arrow{left:16px}.rab-poptip-popper[x-placement=top-end] .rab-poptip-arrow{right:16px}.rab-poptip-popper[x-placement^=right] .rab-poptip-arrow{left:3px;border-width:7px 7px 7px 0;border-right-color:hsla(0,0%,85%,.5)}.rab-poptip-popper[x-placement=right] .rab-poptip-arrow{top:50%;margin-top:-7px}.rab-poptip-popper[x-placement=right-start] .rab-poptip-arrow{top:8px}.rab-poptip-popper[x-placement=right-end] .rab-poptip-arrow{bottom:8px}.rab-poptip-popper[x-placement^=left] .rab-poptip-arrow{right:3px;border-width:7px 0 7px 7px;border-left-color:hsla(0,0%,85%,.5)}.rab-poptip-popper[x-placement=left] .rab-poptip-arrow{top:50%;margin-top:-7px}.rab-poptip-popper[x-placement=left-start] .rab-poptip-arrow{top:8px}.rab-poptip-popper[x-placement=left-end] .rab-poptip-arrow{bottom:8px}.rab-poptip-popper[x-placement^=bottom] .rab-poptip-arrow{top:3px;border-width:0 7px 7px;border-bottom-color:hsla(0,0%,85%,.5)}.rab-poptip-popper[x-placement=bottom] .rab-poptip-arrow{left:50%;margin-left:-7px}.rab-poptip-popper[x-placement=bottom-start] .rab-poptip-arrow{left:16px}.rab-poptip-popper[x-placement=bottom-end] .rab-poptip-arrow{right:16px}.rab-poptip-popper[x-placement^=top] .rab-poptip-arrow:after{content:" ";bottom:1px;margin-left:-7px;border-bottom-width:0;border-top-width:7px;border-top-color:#fff}.rab-poptip-popper[x-placement^=right] .rab-poptip-arrow:after{content:" ";left:1px;bottom:-7px;border-left-width:0;border-right-width:7px;border-right-color:#fff}.rab-poptip-popper[x-placement^=bottom] .rab-poptip-arrow:after{content:" ";top:1px;margin-left:-7px;border-top-width:0;border-bottom-width:7px;border-bottom-color:#fff}.rab-poptip-popper[x-placement^=left] .rab-poptip-arrow:after{content:" ";right:1px;border-right-width:0;border-left-width:7px;border-left-color:#fff;bottom:-7px}.rab-poptip-arrow,.rab-poptip-arrow:after{display:block;width:0;height:0;position:absolute;border-color:transparent;border-style:solid}.rab-poptip-arrow{border-width:8px}.rab-poptip-arrow:after{content:"";border-width:7px}.rab-poptip-confirm .rab-poptip-popper{max-width:300px}.rab-poptip-confirm .rab-poptip-inner{white-space:normal}.rab-poptip-confirm .rab-poptip-body{padding:16px 16px 8px}.rab-poptip-confirm .rab-poptip-body .rab-icon{font-size:18px;color:#faad14;line-height:16px;position:absolute}.rab-poptip-confirm .rab-poptip-body-message{padding:0 0 12px 24px;color:#2c3e50}.rab-poptip-confirm .rab-poptip-footer{text-align:right;margin-bottom:6px}.rab-poptip-confirm .rab-poptip-footer button{margin-left:4px}.rab-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0}.rab-progress-show-info .rab-progress-outer{padding-right:55px;margin-right:-55px}.rab-progress-inner{display:inline-block;width:100%;background-color:#f3f3f3;border-radius:100px;vertical-align:middle;position:relative}.rab-progress-inner-text{display:inline-block;vertical-align:middle;font-size:12px;margin:0 6px}.rab-progress-bg{text-align:right;border-radius:100px;background-color:#1890ff;transition:all .4s;position:relative}.rab-progress-bg:after{content:"";display:inline-block;height:100%;vertical-align:middle}.rab-progress-bg .rab-progress-inner-text{color:#fff}.rab-progress-success-bg{border-radius:100px;background-color:#52c41a;transition:all .4s;position:absolute;top:0;left:0}.rab-progress-text{display:inline-block;margin-left:5px;text-align:left;font-size:1em;vertical-align:middle;color:#808695}r-progress{display:inline-block;width:100%;line-height:1.5;font-size:12px;position:relative}r-progress[status=active] .rab-progress-bg:before{content:"";opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:10px;-webkit-animation:rab-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;animation:rab-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite}r-progress[status=success] .rab-progress-bg{background-color:#52c41a}r-progress[status=success] .rab-progress-text{color:#52c41a}r-progress[status=warning] .rab-progress-bg{background-color:#faad14}r-progress[status=warning] .rab-progress-text{color:#faad14}r-progress[status=wrong] .rab-progress-bg{background-color:#ff4d4f}r-progress[status=wrong] .rab-progress-text{color:#ff4d4f}@-webkit-keyframes rab-progress-active{0%{opacity:.3;width:0}to{opacity:0;width:100%}}@keyframes rab-progress-active{0%{opacity:.3;width:0}to{opacity:0;width:100%}}@-webkit-keyframes rab-progress-active-vertical{0%{opacity:.3;height:0}to{opacity:0;height:100%}}@keyframes rab-progress-active-vertical{0%{opacity:.3;height:0}to{opacity:0;height:100%}}r-radio{margin-right:8px;font-size:14px;vertical-align:middle;display:inline-block;position:relative;white-space:nowrap;cursor:pointer}r-radio[size=large] .rab-radio .rab-radio-inner{width:14px;height:14px}r-radio[size=large] .rab-radio .rab-radio-inner:after{width:8px;height:8px}r-radio[size=small],r-radio[size=small] .rab-radio{font-size:16px}r-radio[size=small] .rab-radio .rab-radio-inner{width:18px;height:18px}r-radio[size=small] .rab-radio .rab-radio-inner:after{width:12px;height:12px}r-radio[disabled],r-radio[disabled] .rab-radio{cursor:not-allowed}r-radio[disabled] .rab-radio:hover .rab-radio-inner{border-color:#dcdee2}r-radio[disabled] .rab-radio-inner{border-color:#dcdee2;background-color:#f3f3f3}r-radio[disabled] .rab-radio-inner:after{background-color:#ccc}r-radio[disabled] .rab-radio-input{cursor:not-allowed}r-radio[disabled] .rab-radio+span{color:#ccc}r-radio[type=border]{border:1px solid #dcdee2;border-radius:2px;height:32px;line-height:30px;padding:0 15px;transition:border .2s ease-in-out}r-radio[type=border].rab-radio-wrapper-checked{border-color:#1890ff}r-radio[type=border][disabled] .rab-radio{border-color:#dcdee2}r-radio-group[size=small] r-radio[type=border] .rab-radio,r-radio[size=small][type=border] .rab-radio{height:24px;line-height:22px;padding:0 7px}r-radio-group[size=large] r-radio[type=border] .rab-radio,r-radio[size=large][type=border] .rab-radio{height:40px;line-height:36px;padding:0 15px}r-radio-group{display:inline-block;font-size:14px;vertical-align:middle}r-radio-group[direction=vertical] r-radio{display:block;height:30px;line-height:30px}.rab-radio-focus .rab-radio-inner{box-shadow:0 0 0 2px rgba(24,144,255,.2);z-index:1}.rab-radio{display:inline-block;margin-right:4px;white-space:nowrap;position:relative;vertical-align:middle;cursor:pointer}.rab-radio:hover .rab-radio-inner{border-color:#bcbcbc}.rab-radio-inner{display:inline-block;width:16px;height:16px;position:relative;top:0;left:0;background-color:#fff;border:1px solid #dcdee2;border-radius:50%;transition:all .2s ease-in-out}.rab-radio-inner:after{position:absolute;width:8px;height:8px;left:3px;top:3px;border-radius:50%;display:table;border-top:0;border-left:0;content:" ";background-color:#1890ff;opacity:0;transition:all .2s ease-in-out;transform:scale(0)}.rab-radio-input{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;opacity:0;cursor:pointer}.rab-radio-checked .rab-radio-inner{border-color:#1890ff}.rab-radio-checked .rab-radio-inner:after{opacity:1;transform:scale(1);transition:all .2s ease-in-out}.rab-radio-checked:hover:not([disabled]) .rab-radio-inner{border-color:#1890ff}span.rab-radio+*{margin-left:2px;margin-right:2px;vertical-align:baseline}r-radio-group[type=button]{font-size:0;-webkit-text-size-adjust:none}r-radio-group[type=button] .rab-radio{width:0;margin-right:0}r-radio-group[type=button] r-radio{display:inline-block;height:32px;line-height:30px;margin:0;padding:0 15px;font-size:14px;color:#55585e;transition:all .2s ease-in-out;cursor:pointer;border:1px solid #dcdee2;border-left:0;background:#fff;position:relative}r-radio-group[type=button] r-radio>span{margin-left:0}r-radio-group[type=button] r-radio:after,r-radio-group[type=button] r-radio:before{content:"";display:block;position:absolute;width:1px;height:100%;left:-1px;top:0;background:#dcdee2;transition:all .2s ease-in-out}r-radio-group[type=button] r-radio:after{height:36px;left:-1px;top:-3px;background:rgba(24,144,255,.2);opacity:0}r-radio-group[type=button] r-radio:first-child{border-radius:2px 0 0 2px;border-left:1px solid #dcdee2}r-radio-group[type=button] r-radio:first-child:after,r-radio-group[type=button] r-radio:first-child:before{display:none}r-radio-group[type=button] r-radio:last-child{border-radius:0 2px 2px 0}r-radio-group[type=button] r-radio:first-child:last-child{border-radius:2px}r-radio-group[type=button] r-radio:hover{position:relative;color:#1890ff}r-radio-group[type=button] r-radio:hover .rab-radio{background-color:#000}r-radio-group[type=button] r-radio .rab-radio-inner,r-radio-group[type=button] r-radio input{opacity:0;width:0;height:0}r-radio-group[type=button] r-radio.rab-radio-checked{background:#fff;border-color:#1890ff;color:#1890ff;box-shadow:-1px 0 0 0 #1890ff;z-index:1}r-radio-group[type=button] r-radio.rab-radio-checked:before{background:#1890ff;opacity:.1}r-radio-group[type=button] r-radio.rab-radio-checked.rab-radio-focus .rab-radio-inner{box-shadow:-1px 0 0 0 #1890ff,0 0 0 2px rgba(24,144,255,.2);transition:all .2s ease-in-out}r-radio-group[type=button] r-radio.rab-radio-checked.rab-radio-focus .rab-radio-inner:after{left:-3px;top:-3px;opacity:1;background:rgba(24,144,255,.2)}r-radio-group[type=button] r-radio.rab-radio-checked.rab-radio-focus .rab-radio-inner:first-child{box-shadow:0 0 0 2px rgba(24,144,255,.2)}r-radio-group[type=button] r-radio.rab-radio-checked:first-child{border-color:#1890ff;box-shadow:none}r-radio-group[type=button] r-radio.rab-radio-checked:hover{border-color:#46a6ff;color:#46a6ff}r-radio-group[type=button] r-radio.rab-radio-checked:active{border-color:#1789f2;color:#1789f2}r-radio-group[type=button] r-radio.rab-radio-wrapper-checked{background:#fff;border-color:#1890ff;color:#1890ff;box-shadow:-1px 0 0 0 #1890ff;z-index:1}r-radio-group[type=button] r-radio.rab-radio-wrapper-checked:first-child{border-color:#1890ff;box-shadow:none}r-radio-group[type=button] r-radio[disabled]{cursor:not-allowed}r-radio-group[type=button] r-radio[disabled],r-radio-group[type=button] r-radio[disabled]:first-child,r-radio-group[type=button] r-radio[disabled]:hover{border-color:#dcdee2;background-color:#fafafa;color:#ccc}r-radio-group[type=button] r-radio[disabled]:first-child{border-left-color:#dcdee2}r-radio-group[type=button] r-radio[disabled].rab-radio-wrapper-checked{color:#fff;background-color:#e6e6e6;border-color:#dcdee2;box-shadow:none!important}r-radio-group[button-style=solid] r-radio:not([disabled]).rab-radio-wrapper-checked{background:#1890ff;color:#fff}r-radio-group[button-style=solid] r-radio:not([disabled]).rab-radio-wrapper-checked:hover{background:#46a6ff;color:#fff}r-radio-group[size=large][type=button] r-radio{height:40px;line-height:38px;font-size:16px}r-radio-group[size=large][type=button] r-radio:after{height:44px}r-radio-group[size=small][type=button] r-radio{height:24px;line-height:22px;padding:0 12px;font-size:14px}r-radio-group[size=small][type=button] r-radio:after{height:28px}r-radio-group[size=small][type=button] r-radio:first-child{border-radius:1px 0 0 1px}r-radio-group[size=small][type=button] r-radio:last-child{border-radius:0 1px 1px 0}r-result{display:block;padding:48px 32px}.rab-result-info .rab-result-icon .rab-icon{color:#1890ff}.rab-result-success .rab-result-icon .rab-icon{color:#52c41a}.rab-result-warning .rab-result-icon .rab-icon{color:#faad14}.rab-result-error .rab-result-icon .rab-icon{color:#ff4d4f}.rab-result-image{width:350px;height:280px;margin:auto}.rab-result-icon{margin-bottom:24px;text-align:center}.rab-result-icon>.rab-icon{font-size:90px}.rab-result-title{color:#2c3e50;font-size:24px;text-align:center}.rab-result-subtitle{color:#808695;font-size:14px;margin-top:12px;text-align:center}.rab-result-extra{margin:24px 0 0;text-align:center}.rab-result-extra>*{margin-right:8px}.rab-result-extra>:last-child{margin-right:0}.rab-result-content{margin-top:24px;padding:24px 40px;background-color:#fafafa}r-skeleton{display:table;width:100%}.rab-skeleton-content,.rab-skeleton-header{display:table-cell;vertical-align:top}.rab-skeleton-header{padding-right:16px}.rab-skeleton-header .rab-skeleton-avatar{display:inline-block;vertical-align:top;background:#f2f2f2;width:32px;height:32px;line-height:32px}.rab-skeleton-header .rab-skeleton-avatar-large{width:40px;height:40px;line-height:40px}.rab-skeleton-header .rab-skeleton-avatar-small{width:24px;height:24px;line-height:24px}.rab-skeleton-header .rab-skeleton-avatar.rab-skeleton-avatar-circle{border-radius:50%}.rab-skeleton-header .rab-skeleton-avatar.rab-skeleton-avatar-square{border-radius:0}.rab-skeleton-content{width:100%}.rab-skeleton-content .rab-skeleton-title{width:100%;height:16px;margin-top:16px;background:#f2f2f2}.rab-skeleton-content .rab-skeleton-paragraph{padding:0}.rab-skeleton-content .rab-skeleton-paragraph li{width:100%;height:16px;list-style:none;background:#f2f2f2}.rab-skeleton-content .rab-skeleton-paragraph li:last-child:not(:first-child):not(:nth-child(2)){width:61%}.rab-skeleton-content .rab-skeleton-paragraph li+li{margin-top:16px}.rab-skeleton-content .rab-skeleton-title+.rab-skeleton-paragraph{margin-top:24px}.rab-skeleton-with-avatar .rab-skeleton-content .rab-skeleton-title{margin-top:12px}.rab-skeleton-with-avatar .rab-skeleton-content .rab-skeleton-title+.rab-skeleton-paragraph{margin-top:28px}.rab-skeleton-active .rab-skeleton-content .rab-skeleton-paragraph>li,.rab-skeleton-active .rab-skeleton-content .rab-skeleton-title,.rab-skeleton-active .rab-skeleton-header .rab-skeleton-avatar{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;-webkit-animation:rab-skeleton-loading 1.4s ease infinite;animation:rab-skeleton-loading 1.4s ease infinite}@-webkit-keyframes rab-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}@keyframes rab-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}r-spin{color:#1890ff;vertical-align:middle;text-align:center}r-spin[size=small] .rab-spin-dot{width:12px;height:12px}r-spin[size=large] .rab-spin-dot{width:32px;height:32px}r-spin[fix]{position:absolute;top:0;left:0;z-index:8;width:100%;height:100%;background-color:hsla(0,0%,100%,.9)}r-spin[fix] .rab-spin-main{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}r-spin[fix] .rab-spin-dot{display:inline-block}.rab-spin-dot{position:relative;display:block;border-radius:50%;background-color:#1890ff;width:20px;height:20px;animation:ani-spin-bounce 1s ease-in-out 0s infinite}.rab-spin-fullscreen{z-index:2010}.rab-spin-fullscreen-wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.rab-spin-show-text .rab-spin-dot,.rab-spin-text{display:none!important}.rab-spin-show-text .rab-spin-text{display:block!important}.rab-spin-text .rab-icon-loading1{font-size:24px;height:8px}.rab-table-wrapper r-spin[fix]{border:none}.rab-table-wrapper-with-border r-spin[fix]{border:1px solid #dcdee2;border-top:0;border-left:0}@keyframes ani-spin-bounce{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}r-steps{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;font-size:0;line-height:1.5}r-steps .rab-steps-head,r-steps .rab-steps-main{position:relative;display:inline-block;vertical-align:top}r-steps .rab-steps-head{background:#fff}r-steps .rab-steps-head-inner{display:block;width:26px;height:26px;line-height:24px;margin-right:8px;text-align:center;border:1px solid #ccc;border-radius:50%;font-size:14px;transition:background-color .2s ease-in-out}r-steps .rab-steps-head-inner>.rab-steps-icon{position:relative;top:3.5px}r-steps .rab-steps-head-inner>.rab-steps-icon.rab-icon{font-size:24px}r-steps .rab-steps-head-inner>.rab-steps-icon.rab-icon-ios-checkmark-empty,r-steps .rab-steps-head-inner>.rab-steps-icon.rab-icon-ios-close-empty{font-weight:700}r-steps .rab-steps-main{margin-top:2.5px;display:inline}r-steps .rab-steps-custom .rab-steps-title{margin-top:2.5px}r-steps .rab-steps-title{display:inline-block;margin-bottom:4px;padding-right:10px;font-size:14px;font-weight:700;color:#666;background:#fff}r-steps .rab-steps-title>a:first-child:last-child{color:#666}r-steps .rab-steps-item-last .rab-steps-title{padding-right:0;width:100%}r-steps .rab-steps-content{font-size:12px;color:#999}r-steps .rab-steps-tail{width:100%;padding:0 10px;position:absolute;left:0;top:13px}r-steps .rab-steps-tail>i{display:inline-block;width:100%;height:1px;vertical-align:top;background:#e8eaec;border-radius:1px;position:relative}r-steps .rab-steps-tail>i:after{content:"";width:0;height:100%;background:#e8eaec;opacity:0;position:absolute;top:0}r-steps[size=small] .rab-steps-head-inner{width:18px;height:18px;line-height:16px;margin-right:10px;text-align:center;border-radius:50%;font-size:12px}r-steps[size=small] .rab-steps-head-inner>.rab-steps-icon.rab-icon{font-size:16px;top:1px}r-steps[size=small] .rab-steps-main{margin-top:0}r-steps[size=small] .rab-steps-title{margin-bottom:4px;margin-top:0;color:#666;font-size:12px;font-weight:700}r-steps[size=small] .rab-steps-content{font-size:12px;color:#999;padding-left:30px}r-steps[size=small] .rab-steps-tail{top:8px;padding:0 8px}r-steps[size=small] .rab-steps-tail>i{width:100%;height:1px;border-radius:1px}r-steps[size=small] r-step .rab-steps-custom .rab-steps-head-inner,r-steps r-step .rab-steps-custom .rab-steps-head-inner{width:inherit;height:inherit;line-height:inherit;border-radius:0;border:0;background:none}r-step{display:inline-block;position:relative;vertical-align:top;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}r-step:last-child{-webkit-box-flex:0;-ms-flex:0;flex:none}r-step[status=wait] .rab-steps-head-inner{background-color:#fff}r-step[status=wait] .rab-steps-head-inner>.rab-steps-icon,r-step[status=wait] .rab-steps-head-inner span{color:#ccc}r-step[status=wait] .rab-steps-content,r-step[status=wait] .rab-steps-title{color:#999}r-step[status=wait] .rab-steps-tail>i{background-color:#e8eaec}r-step[status=process] .rab-steps-head-inner{border-color:#1890ff;background-color:#1890ff}r-step[status=process] .rab-steps-head-inner>.rab-steps-icon,r-step[status=process] .rab-steps-head-inner span{color:#fff}r-step[status=process] .rab-steps-content,r-step[status=process] .rab-steps-title{color:#666}r-step[status=process] .rab-steps-tail>i{background-color:#e8eaec}r-step[status=finish] .rab-steps-head-inner{background-color:#fff;border-color:#1890ff}r-step[status=finish] .rab-steps-head-inner>.rab-steps-icon,r-step[status=finish] .rab-steps-head-inner span{color:#1890ff}r-step[status=finish] .rab-steps-tail>i:after{width:100%;background:#1890ff;transition:all .2s ease-in-out;opacity:1}r-step[status=finish] .rab-steps-content,r-step[status=finish] .rab-steps-title{color:#999}r-step[status=error] .rab-steps-head-inner{color:#ff4d4f;background-color:#fff;border-color:#ff4d4f}r-step[status=error] .rab-steps-content,r-step[status=error] .rab-steps-head-inner>.rab-steps-icon,r-step[status=error] .rab-steps-title{color:#ff4d4f}r-step[status=error] .rab-steps-tail>i{background-color:#e8eaec}r-step.rab-steps-next-error .rab-steps-tail>i,r-step.rab-steps-next-error .rab-steps-tail>i:after{background-color:#ff4d4f}r-step.rab-steps-custom .rab-steps-head-inner{background:none;border:0;width:auto;height:auto}r-step.rab-steps-custom .rab-steps-head-inner>.rab-steps-icon{font-size:22px;top:4px;width:22px;height:22px}r-step[status=process].rab-steps-custom .rab-steps-head-inner>.rab-steps-icon{color:#1890ff}r-step:last-child .rab-steps-tail{display:none}r-steps[direction=vertical]{display:block}r-steps[direction=vertical] r-step{display:block;overflow:visible}r-steps[direction=vertical] .rab-steps-tail{position:absolute;left:13px;top:0;width:1px;height:100%;padding:30px 0 4px}r-steps[direction=vertical] .rab-steps-tail>i{width:1px;height:100%}r-steps[direction=vertical] .rab-steps-tail>i:after{width:100%;height:0}r-steps[direction=vertical][status=finish] .rab-steps-tail>i:after{height:100%}r-steps[direction=vertical] .rab-steps-head{float:left}r-steps[direction=vertical] .rab-steps-head-inner{margin-right:16px}r-steps[direction=vertical] .rab-steps-main{min-height:47px;overflow:hidden;display:block}r-steps[direction=vertical] .rab-steps-main .rab-steps-title{line-height:26px}r-steps[direction=vertical] .rab-steps-main .rab-steps-content{padding-bottom:12px;padding-left:0}r-steps[direction=vertical] .rab-steps-custom .rab-steps-icon{left:4px}r-steps[direction=vertical][size=small] .rab-steps-custom .rab-steps-icon{left:0}r-steps[direction=vertical][size=small] .rab-steps-tail{position:absolute;left:9px;top:0;padding:22px 0 4px}r-steps[direction=vertical][size=small] .rab-steps-tail>i{height:100%}r-steps[direction=vertical][size=small] .rab-steps-title{line-height:18px}r-steps[direction=horizontal].rab-steps-hidden{visibility:hidden}r-steps[direction=horizontal] .rab-steps-content{padding-left:35px}r-steps[direction=horizontal] r-step:not(:first-child) .rab-steps-head{padding-left:10px;margin-left:-10px}r-switch{display:inline-block;width:44px;height:22px;line-height:20px;vertical-align:middle;border:1px solid transparent;border-radius:100px;background-color:rgba(0,0,0,.25);position:relative;cursor:pointer;user-select:none;transition:all .2s ease-in-out}r-switch:before{content:"";display:none;width:14px;height:14px;border-radius:50%;background-color:transparent;position:absolute;left:3px;top:3px;z-index:1;border:1px solid transparent;border-left-color:#1890ff;animation:rab-switch-loading 1s linear;animation-iteration-count:infinite}r-switch:after{content:"";width:18px;height:18px;border-radius:18px;background-color:#fff;position:absolute;left:1px;top:1px;cursor:pointer;transition:left .2s ease-in-out,width .2s ease-in-out;box-shadow:0 2px 4px 0 rgba(0,35,11,.2)}r-switch:active:after{width:26px}r-switch:focus{box-shadow:0 0 0 2px rgba(24,144,255,.2);outline:0}r-switch:focus:hover{box-shadow:none}.rab-switch-loading{opacity:.4}.rab-switch-loading:before{display:block}.rab-switch-inner{color:#fff;font-size:12px;position:absolute;left:23px}.rab-switch-inner i{width:12px;height:12px;text-align:center;position:relative}.rab-switch-small{width:28px;height:16px;line-height:14px}.rab-switch-small:after{width:12px;height:12px}.rab-switch-small:active:after{width:14px}.rab-switch-small:before{width:10px;height:10px;left:2px;top:2px}.rab-switch-small.rab-switch-checked:after{left:13px}.rab-switch-small.rab-switch-checked:before{left:14px}.rab-switch-small:active.rab-switch-checked:after{left:11px}.rab-switch-large{width:56px}.rab-switch-large:active:after{width:26px;width:30px}.rab-switch-large.rab-switch-checked:after{left:35px}.rab-switch-large.rab-switch-checked:before{left:37px}.rab-switch-large:active.rab-switch-checked:after{left:23px}.rab-switch-checked{border-color:#1890ff;background-color:#1890ff}.rab-switch-checked .rab-switch-inner{left:7px}.rab-switch-checked:after{left:23px}.rab-switch-checked:before{left:25px}.rab-switch-checked:active:after{left:15px}.rab-switch-disabled{cursor:not-allowed;opacity:.4}.rab-switch-disabled:after{background:#fff;cursor:not-allowed}.rab-switch-disabled .rab-switch-inner{color:#fff}.rab-switch-disabled.rab-switch-checked{border-color:#1890ff;background-color:#1890ff;opacity:.4}.rab-switch-disabled.rab-switch-checked:after{background:#fff}.rab-switch-disabled.rab-switch-checked .rab-switch-inner{color:#fff}@keyframes rab-switch-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}r-tabs{display:block;position:relative;overflow:hidden;color:#55585e;zoom:1}r-tabs:after,r-tabs:before{content:"";display:table}r-tabs:after{clear:both;visibility:hidden;font-size:0;height:0}.rab-tabs-bar{outline:none;border-bottom:1px solid #dcdee2;margin-bottom:16px}.rab-tabs-nav-container{margin-bottom:-1px;line-height:1.5;font-size:14px;white-space:nowrap;position:relative;zoom:1}.rab-tabs-nav-container:after,.rab-tabs-nav-container:before{content:"";display:table}.rab-tabs-nav-container:after{clear:both;visibility:hidden;font-size:0;height:0}.rab-tabs-nav-container ::-webkit-scrollbar{height:4px;background-color:#fff}.rab-tabs-nav-container ::-webkit-scrollbar-thumb{border-radius:20px;background-color:#dcdee2}.rab-tabs-nav-container:focus{outline:none}.rab-tabs-nav-container:focus .rab-tabs-tab-focused{border-color:#46a6ff!important}.rab-tabs-nav-container-scrolling{padding-left:32px;padding-right:32px}.rab-tabs-nav-wrap{position:relative;overflow-x:auto;overflow-y:hidden}.rab-tabs-nav-right{float:right;margin-left:5px}.rab-tabs-nav-next,.rab-tabs-nav-prev{width:32px;text-align:center;position:absolute;line-height:32px;cursor:pointer}.rab-tabs-nav-next i,.rab-tabs-nav-prev i{font-size:16px}.rab-tabs-nav{padding-left:0;margin:0;float:left;list-style:none;position:relative;transition:transform .5s ease-in-out}.rab-tabs-nav:after,.rab-tabs-nav:before{display:table;content:" "}.rab-tabs-nav:after{clear:both}.rab-tabs-nav .rab-tabs-tab-disabled{cursor:not-allowed!important;color:#ccc!important}.rab-tabs-nav .rab-tabs-tab{display:inline-block;height:100%;padding:8px 16px;margin-right:16px;cursor:pointer;text-decoration:none;position:relative;transition:color .3s ease-in-out}.rab-tabs-nav .rab-tabs-tab:hover{color:#46a6ff}.rab-tabs-nav .rab-tabs-tab:active{color:#1789f2}.rab-tabs-nav .rab-tabs-tab .rab-icon{width:14px;height:14px;margin-right:8px}.rab-tabs-nav .rab-tabs-tab-active{color:#1890ff}.rab-tabs-nav .rab-tabs-tab-active:after{content:"";width:100%;height:2px;background-color:#1890ff;position:absolute;left:0;bottom:0;z-index:1}.rab-tabs-mini .rab-tabs-nav-container{font-size:14px}.rab-tabs-mini .rab-tabs-tab{margin-right:0;padding:8px 16px;font-size:12px}.rab-tabs-card>.rab-tabs-bar .rab-tabs-nav-container{height:32px}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab{margin:0 4px 0 0;height:31px;padding:5px 16px 4px;border:1px solid #dcdee2;border-bottom:0;border-radius:2px 2px 0 0;transition:all .3s ease-in-out;background:#fafafa}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab-active{height:32px;padding-bottom:5px;background:#fff;transform:translateZ(0);border-color:#dcdee2;color:#1890ff}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab-active:after{display:none}.rab-tabs-card>.rab-tabs-bar .rab-tabs-nav-wrap{margin-bottom:0}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab .rab-tabs-close{width:0;height:22px;font-size:22px;margin-right:0;color:#999;text-align:right;vertical-align:middle;overflow:hidden;position:relative;top:5px;transform-origin:100% 50%;transition:all .3s ease-in-out}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab .rab-tabs-close:hover{color:#444}.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab-active .rab-tabs-close,.rab-tabs-card>.rab-tabs-bar .rab-tabs-tab:hover .rab-tabs-close{width:22px;transform:translateZ(0);margin-right:-6px}.rab-tabs-no-animation>.rab-tabs-content{transform:none!important}.rab-tabs-no-animation>.rab-tabs-content>.rab-tabs-tabpane-inactive{display:none}r-tabs .rab-tabs-content-animated{display:flex;flex-direction:row;will-change:transform;transition:transform .3s ease-in-out}r-tabs r-tab-pane{display:none;flex-shrink:0;width:100%;transition:opacity .3s;opacity:1;outline:none}r-tabs .rab-tabs-tabpane-inactive{opacity:0;height:0}r-tag{display:inline-block;height:22px;line-height:22px;margin:2px 4px 2px 0;padding:0 8px;border:1px solid #e8eaec;border-radius:1px;background:#fafafa;font-size:12px;vertical-align:middle;opacity:1;overflow:hidden}r-tag:hover{opacity:.85}r-tag .rab-icon-ios-close{display:inline-block;font-size:14px;font-size:20px\9;transform:scale(1.42857143) rotate(0deg);cursor:pointer;margin-left:2px;color:#666;opacity:.66;position:relative;top:-5px}:root r-tag .rab-icon-ios-close{font-size:14px}r-tag .rab-icon-ios-close:hover{opacity:1}.rab-tag-size-large{height:32px;line-height:32px;padding:0 12px}.rab-tag-size-medium{height:28px;line-height:28px;padding:0 10px}r-tag:not(.rab-tag-border):not(.rab-tag-dot):not(.rab-tag-checked){background:transparent;border:0;color:#55585e}r-tag:not(.rab-tag-border):not(.rab-tag-dot):not(.rab-tag-checked) .rab-icon-ios-close{color:#55585e!important}.rab-tag-color-error{color:#ff4d4f!important;border-color:#ff4d4f}.rab-tag-color-success{color:#52c41a!important;border-color:#52c41a}.rab-tag-color-primary{color:#1890ff!important;border-color:#1890ff}.rab-tag-color-warning{color:#faad14!important;border-color:#faad14}.rab-tag-color-white{color:#fff!important}.rab-tag-dot{height:32px;line-height:32px;border:1px solid #e8eaec!important;color:#55585e!important;background:#fff!important;padding:0 12px}.rab-tag-dot-inner{display:inline-block;width:12px;height:12px;margin-right:8px;border-radius:50%;background:#e8eaec;position:relative;top:1px}.rab-tag-dot .rab-icon-ios-close{color:#666!important;margin-left:12px!important}.rab-tag-border{height:24px;line-height:24px;border:1px solid #e8eaec;color:#e8eaec;background:#fff!important;position:relative}.rab-tag-border .rab-icon-ios-close{color:#666;margin-left:12px!important}.rab-tag-border:after{content:"";display:none;width:1px;background:currentColor;position:absolute;top:0;bottom:0;right:22px}.rab-tag-border.rab-tag-closable:after{display:block}.rab-tag-border.rab-tag-closable .rab-icon-ios-close{margin-left:18px!important;left:4px;top:-5px}.rab-tag-border.rab-tag-primary{color:#1890ff!important;border:1px solid #1890ff!important}.rab-tag-border.rab-tag-primary:after{background:#1890ff}.rab-tag-border.rab-tag-primary .rab-icon-ios-close{color:#1890ff!important}.rab-tag-border.rab-tag-success{color:#52c41a!important;border:1px solid #52c41a!important}.rab-tag-border.rab-tag-success:after{background:#52c41a}.rab-tag-border.rab-tag-success .rab-icon-ios-close{color:#52c41a!important}.rab-tag-border.rab-tag-warning{color:#faad14!important;border:1px solid #faad14!important}.rab-tag-border.rab-tag-warning:after{background:#faad14}.rab-tag-border.rab-tag-warning .rab-icon-ios-close{color:#faad14!important}.rab-tag-border.rab-tag-error{color:#ff4d4f!important;border:1px solid #ff4d4f!important}.rab-tag-border.rab-tag-error:after{background:#ff4d4f}.rab-tag-border.rab-tag-error .rab-icon-ios-close{color:#ff4d4f!important}.rab-tag-text{color:#55585e}.rab-tag-text a:first-child:last-child{display:inline-block;margin:0 -8px;padding:0 8px}.rab-tag-error,.rab-tag-primary,.rab-tag-success,.rab-tag-warning{border:0}.rab-tag-error,.rab-tag-error .rab-icon-ios-close,.rab-tag-error .rab-icon-ios-close:hover,.rab-tag-error a,.rab-tag-error a:hover,.rab-tag-primary,.rab-tag-primary .rab-icon-ios-close,.rab-tag-primary .rab-icon-ios-close:hover,.rab-tag-primary a,.rab-tag-primary a:hover,.rab-tag-success,.rab-tag-success .rab-icon-ios-close,.rab-tag-success .rab-icon-ios-close:hover,.rab-tag-success a,.rab-tag-success a:hover,.rab-tag-warning,.rab-tag-warning .rab-icon-ios-close,.rab-tag-warning .rab-icon-ios-close:hover,.rab-tag-warning a,.rab-tag-warning a:hover{color:#fff}.rab-tag-primary,.rab-tag-primary.rab-tag-dot .rab-tag-dot-inner{background:#1890ff}.rab-tag-success,.rab-tag-success.rab-tag-dot .rab-tag-dot-inner{background:#52c41a}.rab-tag-warning,.rab-tag-warning.rab-tag-dot .rab-tag-dot-inner{background:#faad14}.rab-tag-error,.rab-tag-error.rab-tag-dot .rab-tag-dot-inner{background:#ff4d4f}.rab-tag-pink{line-height:20px;background:#fff0f6;border-color:#ffadd2}.rab-tag-pink .rab-tag-text{color:#eb2f96!important}.rab-tag-pink.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-pink{line-height:30px}.rab-tag-size-medium.rab-tag-pink{line-height:26px}.rab-tag-magenta{line-height:20px;background:#fff0f6;border-color:#ffadd2}.rab-tag-magenta .rab-tag-text{color:#eb2f96!important}.rab-tag-magenta.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-magenta{line-height:30px}.rab-tag-size-medium.rab-tag-magenta{line-height:26px}.rab-tag-red{line-height:20px;background:#fff1f0;border-color:#ffa39e}.rab-tag-red .rab-tag-text{color:#f5222d!important}.rab-tag-red.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-red{line-height:30px}.rab-tag-size-medium.rab-tag-red{line-height:26px}.rab-tag-volcano{line-height:20px;background:#fff2e8;border-color:#ffbb96}.rab-tag-volcano .rab-tag-text{color:#fa541c!important}.rab-tag-volcano.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-volcano{line-height:30px}.rab-tag-size-medium.rab-tag-volcano{line-height:26px}.rab-tag-orange{line-height:20px;background:#fff7e6;border-color:#ffd591}.rab-tag-orange .rab-tag-text{color:#fa8c16!important}.rab-tag-orange.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-orange{line-height:30px}.rab-tag-size-medium.rab-tag-orange{line-height:26px}.rab-tag-yellow{line-height:20px;background:#feffe6;border-color:#fffb8f}.rab-tag-yellow .rab-tag-text{color:#fadb14!important}.rab-tag-yellow.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-yellow{line-height:30px}.rab-tag-size-medium.rab-tag-yellow{line-height:26px}.rab-tag-gold{line-height:20px;background:#fffbe6;border-color:#ffe58f}.rab-tag-gold .rab-tag-text{color:#faad14!important}.rab-tag-gold.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-gold{line-height:30px}.rab-tag-size-medium.rab-tag-gold{line-height:26px}.rab-tag-cyan{line-height:20px;background:#e6fffb;border-color:#87e8de}.rab-tag-cyan .rab-tag-text{color:#13c2c2!important}.rab-tag-cyan.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-cyan{line-height:30px}.rab-tag-size-medium.rab-tag-cyan{line-height:26px}.rab-tag-lime{line-height:20px;background:#fcffe6;border-color:#eaff8f}.rab-tag-lime .rab-tag-text{color:#a0d911!important}.rab-tag-lime.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-lime{line-height:30px}.rab-tag-size-medium.rab-tag-lime{line-height:26px}.rab-tag-green{line-height:20px;background:#f6ffed;border-color:#b7eb8f}.rab-tag-green .rab-tag-text{color:#52c41a!important}.rab-tag-green.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-green{line-height:30px}.rab-tag-size-medium.rab-tag-green{line-height:26px}.rab-tag-blue{line-height:20px;background:#e6f7ff;border-color:#91d5ff}.rab-tag-blue .rab-tag-text{color:#1890ff!important}.rab-tag-blue.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-blue{line-height:30px}.rab-tag-size-medium.rab-tag-blue{line-height:26px}.rab-tag-geekblue{line-height:20px;background:#f0f5ff;border-color:#adc6ff}.rab-tag-geekblue .rab-tag-text{color:#2f54eb!important}.rab-tag-geekblue.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-geekblue{line-height:30px}.rab-tag-size-medium.rab-tag-geekblue{line-height:26px}.rab-tag-purple{line-height:20px;background:#f9f0ff;border-color:#d3adf7}.rab-tag-purple .rab-tag-text{color:#722ed1!important}.rab-tag-purple.rab-tag-dot{line-height:32px}.rab-tag-size-large.rab-tag-purple{line-height:30px}.rab-tag-size-medium.rab-tag-purple{line-height:26px}r-time{display:inline-block}.rab-time-with-hash{cursor:pointer}.rab-time-with-hash:hover{text-decoration:underline}.rab-timeline-item-tail{height:100%;border-left:1px solid #e8eaec;position:absolute;left:5px;top:0}.rab-timeline-item-head{width:13px;height:13px;background-color:#fff;border-radius:50%;border:1px solid transparent;position:absolute}.rab-timeline-item-head-blue{border-color:#1890ff;color:#1890ff}.rab-timeline-item-head-red{border-color:#ff4d4f;color:#ff4d4f}.rab-timeline-item-head-green{border-color:#52c41a;color:#52c41a}.rab-timeline-item-head-gray{border-color:#ccc;color:#ccc}.rab-timeline-item-head-custom{width:40px;height:auto;margin-top:6px;padding:3px 0;text-align:center;line-height:1.5;border:0;border-radius:0;font-size:14px;position:absolute;left:-15px;transform:translateY(-50%)}.rab-timeline-item-head-custom .rab-icon{font-size:16px}.rab-timeline-item-content{padding:1px 1px 10px 22px;font-size:14px;position:relative;top:-10px}r-timeline{display:block;margin:0;padding:0}r-timeline-item{display:block;margin:0!important;padding:0 0 12px;position:relative}r-timeline-item:last-child .rab-timeline-item-tail{display:none}r-timeline[pending=true] r-timeline-item:nth-last-of-type(2) .rab-timeline-item-tail{border-left:1px dotted #e8eaec}r-timeline[pending=true] r-timeline-item:nth-last-of-type(2) .rab-timeline-item-content{min-height:48px}r-tooltip{display:inline-block}r-tooltip .rab-tooltip-rel{display:inline-block;position:relative;width:inherit}r-tooltip .rab-tooltip-popper{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}r-tooltip .rab-tooltip-popper[x-placement^=top]{padding:5px 0 8px}r-tooltip .rab-tooltip-popper[x-placement^=right]{padding:0 5px 0 8px}r-tooltip .rab-tooltip-popper[x-placement^=bottom]{padding:8px 0 5px}r-tooltip .rab-tooltip-popper[x-placement^=left]{padding:0 8px 0 5px}r-tooltip .rab-tooltip-popper[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,.75)}r-tooltip .rab-tooltip-popper[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}r-tooltip .rab-tooltip-popper[x-placement=top-start] .rab-tooltip-arrow{left:16px}r-tooltip .rab-tooltip-popper[x-placement=top-end] .rab-tooltip-arrow{right:16px}r-tooltip .rab-tooltip-popper[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,.75)}r-tooltip .rab-tooltip-popper[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}r-tooltip .rab-tooltip-popper[x-placement=right-start] .rab-tooltip-arrow{top:8px}r-tooltip .rab-tooltip-popper[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}r-tooltip .rab-tooltip-popper[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,.75)}r-tooltip .rab-tooltip-popper[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}r-tooltip .rab-tooltip-popper[x-placement=left-start] .rab-tooltip-arrow{top:8px}r-tooltip .rab-tooltip-popper[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}r-tooltip .rab-tooltip-popper[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,.75)}r-tooltip .rab-tooltip-popper[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}r-tooltip .rab-tooltip-popper[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}r-tooltip .rab-tooltip-popper[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}r-tooltip .rab-tooltip-inner{max-width:250px;min-height:34px;padding:8px 12px;color:#fff;text-align:left;text-decoration:none;background-color:rgba(0,0,0,.75);border-radius:2px;box-shadow:0 4px 12px rgba(0,0,0,.15);white-space:nowrap}r-tooltip .rab-tooltip-with-width{white-space:pre-wrap;text-align:justify;word-wrap:break-word;word-break:break-all}r-tooltip .rab-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.rab-tooltip-light.rab-tooltip-popper{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-light.rab-tooltip-popper[x-placement^=top]{padding:7px 0 10px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=right]{padding:0 7px 0 10px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=bottom]{padding:10px 0 7px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=left]{padding:0 10px 0 7px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:7px 7px 0;border-top-color:hsla(0,0%,85%,.5)}.rab-tooltip-light.rab-tooltip-popper[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-7px}.rab-tooltip-light.rab-tooltip-popper[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-light.rab-tooltip-popper[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:7px 7px 7px 0;border-right-color:hsla(0,0%,85%,.5)}.rab-tooltip-light.rab-tooltip-popper[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-7px}.rab-tooltip-light.rab-tooltip-popper[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-light.rab-tooltip-popper[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:7px 0 7px 7px;border-left-color:hsla(0,0%,85%,.5)}.rab-tooltip-light.rab-tooltip-popper[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-7px}.rab-tooltip-light.rab-tooltip-popper[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-light.rab-tooltip-popper[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 7px 7px;border-bottom-color:hsla(0,0%,85%,.5)}.rab-tooltip-light.rab-tooltip-popper[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-7px}.rab-tooltip-light.rab-tooltip-popper[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-light.rab-tooltip-popper[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-light.rab-tooltip-popper[x-placement^=top] .rab-tooltip-arrow:after{content:" ";bottom:1px;margin-left:-7px;border-bottom-width:0;border-top-width:7px;border-top-color:#fff}.rab-tooltip-light.rab-tooltip-popper[x-placement^=right] .rab-tooltip-arrow:after{content:" ";left:1px;bottom:-7px;border-left-width:0;border-right-width:7px;border-right-color:#fff}.rab-tooltip-light.rab-tooltip-popper[x-placement^=bottom] .rab-tooltip-arrow:after{content:" ";top:1px;margin-left:-7px;border-top-width:0;border-bottom-width:7px;border-bottom-color:#fff}.rab-tooltip-light.rab-tooltip-popper[x-placement^=left] .rab-tooltip-arrow:after{content:" ";right:1px;border-right-width:0;border-left-width:7px;border-left-color:#fff;bottom:-7px}.rab-tooltip-light .rab-tooltip-inner{background-color:#fff;color:#55585e}.rab-tooltip-light .rab-tooltip-arrow{border-width:8px}.rab-tooltip-light .rab-tooltip-arrow:after{display:block;width:0;height:0;position:absolute;content:"";border:7px solid transparent}.rab-tooltip-popper.rab-tooltip-pink{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-pink[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-pink[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-pink[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-pink[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-pink[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-pink[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-pink .rab-tooltip-inner{background-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-magenta{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-magenta[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-magenta .rab-tooltip-inner{background-color:#eb2f96}.rab-tooltip-popper.rab-tooltip-red{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-red[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#f5222d}.rab-tooltip-popper.rab-tooltip-red[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-red[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-red[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#f5222d}.rab-tooltip-popper.rab-tooltip-red[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-red[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-red[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#f5222d}.rab-tooltip-popper.rab-tooltip-red[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-red[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-red[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-red[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#f5222d}.rab-tooltip-popper.rab-tooltip-red[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-red[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-red[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-red .rab-tooltip-inner{background-color:#f5222d}.rab-tooltip-popper.rab-tooltip-volcano{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#fa541c}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#fa541c}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#fa541c}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#fa541c}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-volcano[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-volcano .rab-tooltip-inner{background-color:#fa541c}.rab-tooltip-popper.rab-tooltip-orange{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#fa8c16}.rab-tooltip-popper.rab-tooltip-orange[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#fa8c16}.rab-tooltip-popper.rab-tooltip-orange[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#fa8c16}.rab-tooltip-popper.rab-tooltip-orange[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-orange[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#fa8c16}.rab-tooltip-popper.rab-tooltip-orange[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-orange[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-orange .rab-tooltip-inner{background-color:#fa8c16}.rab-tooltip-popper.rab-tooltip-yellow{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#fadb14}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#fadb14}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#fadb14}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#fadb14}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-yellow[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-yellow .rab-tooltip-inner{background-color:#fadb14}.rab-tooltip-popper.rab-tooltip-gold{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#faad14}.rab-tooltip-popper.rab-tooltip-gold[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#faad14}.rab-tooltip-popper.rab-tooltip-gold[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#faad14}.rab-tooltip-popper.rab-tooltip-gold[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-gold[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#faad14}.rab-tooltip-popper.rab-tooltip-gold[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-gold[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-gold .rab-tooltip-inner{background-color:#faad14}.rab-tooltip-popper.rab-tooltip-cyan{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#13c2c2}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#13c2c2}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#13c2c2}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#13c2c2}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-cyan[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-cyan .rab-tooltip-inner{background-color:#13c2c2}.rab-tooltip-popper.rab-tooltip-lime{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#a0d911}.rab-tooltip-popper.rab-tooltip-lime[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#a0d911}.rab-tooltip-popper.rab-tooltip-lime[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#a0d911}.rab-tooltip-popper.rab-tooltip-lime[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-lime[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#a0d911}.rab-tooltip-popper.rab-tooltip-lime[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-lime[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-lime .rab-tooltip-inner{background-color:#a0d911}.rab-tooltip-popper.rab-tooltip-green{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-green[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#52c41a}.rab-tooltip-popper.rab-tooltip-green[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-green[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-green[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#52c41a}.rab-tooltip-popper.rab-tooltip-green[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-green[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-green[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#52c41a}.rab-tooltip-popper.rab-tooltip-green[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-green[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-green[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-green[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#52c41a}.rab-tooltip-popper.rab-tooltip-green[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-green[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-green[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-green .rab-tooltip-inner{background-color:#52c41a}.rab-tooltip-popper.rab-tooltip-blue{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#1890ff}.rab-tooltip-popper.rab-tooltip-blue[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#1890ff}.rab-tooltip-popper.rab-tooltip-blue[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#1890ff}.rab-tooltip-popper.rab-tooltip-blue[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-blue[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#1890ff}.rab-tooltip-popper.rab-tooltip-blue[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-blue[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-blue .rab-tooltip-inner{background-color:#1890ff}.rab-tooltip-popper.rab-tooltip-geekblue{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#2f54eb}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#2f54eb}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#2f54eb}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#2f54eb}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-geekblue[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-geekblue .rab-tooltip-inner{background-color:#2f54eb}.rab-tooltip-popper.rab-tooltip-purple{display:block;visibility:visible;font-size:14px;line-height:1.5;position:absolute;z-index:1060}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=top]{padding:5px 0 8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=right]{padding:0 5px 0 8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=bottom]{padding:8px 0 5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=left]{padding:0 8px 0 5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=top] .rab-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:#722ed1}.rab-tooltip-popper.rab-tooltip-purple[x-placement=top] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=top-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=top-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=right] .rab-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:#722ed1}.rab-tooltip-popper.rab-tooltip-purple[x-placement=right] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=right-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=right-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=left] .rab-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:#722ed1}.rab-tooltip-popper.rab-tooltip-purple[x-placement=left] .rab-tooltip-arrow{top:50%;margin-top:-5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=left-start] .rab-tooltip-arrow{top:8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=left-end] .rab-tooltip-arrow{bottom:8px}.rab-tooltip-popper.rab-tooltip-purple[x-placement^=bottom] .rab-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:#722ed1}.rab-tooltip-popper.rab-tooltip-purple[x-placement=bottom] .rab-tooltip-arrow{left:50%;margin-left:-5px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=bottom-start] .rab-tooltip-arrow{left:16px}.rab-tooltip-popper.rab-tooltip-purple[x-placement=bottom-end] .rab-tooltip-arrow{right:16px}.rab-tooltip-popper.rab-tooltip-purple .rab-tooltip-inner{background-color:#722ed1} ================================================ FILE: docs/affix.md ================================================ # Affix 固钉 将页面元素钉在可视范围。 ## 何时使用 - 当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。 - 页面可视范围过小时,慎用此功能以免遮挡页面内容。 ## 代码示例 基础用法 - 简单使用,当元素不可见时,直接固定在最顶端。 ```html 固定在最顶部 ``` 偏移 - 当滚动到一定距离时再固定。 ```html 固定在顶部 50px 的位置 ``` 固定在底部 - 在屏幕下方固定,可以通过缩小浏览器窗口高度来查看效果。 - 注意,`offset-top`和`offset-bottom`只可以设置一个,如果都设置,会使用`offset-top`。 ```html 固定在底部 20px 的位置 ``` 固定状态改变时的回调 - 当固定状态发生改变时,会触发事件。 ```html 固定在顶部 100px 的位置 ```

Attributes

### Affix | 属性 | 说明 | 默认值 | | ------------- | --------------------------------------- | ------ | | offset-top | 距离窗口顶部达到指定偏移量后触发 | 0 | | offset-bottom | 距离窗口底部达到指定偏移量后触发 | - | | use-capture | addEventListener 原生的 useCapture 选项 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 alert,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ------------------------------- | -------- | ------ | | events | 非响应式API,添加提示框的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :--------------------------- | :---------------------------- | | onChange | 固定状态改变时触发的回调函数 | (affixed: boolean) => void | ================================================ FILE: docs/alert.md ================================================ # Alert 警告提示 警告提示,展现需要关注的信息。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Alert()` ## 何时使用 - 当某个页面需要向用户显示警告的信息时。 - 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 ## 代码示例 基础用法 - 基本使用方法,有四种样式可以选择`info`、`success`、`warning`、`error`。默认是 `info` ```html ``` 含有辅助性文字介绍 - 含有辅助性文字介绍的警告提示。 ```html

信息提示的内容,信息提示的内容,信息提示的,信息提示的内容,信息提示的内容。

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

警告提示的内容,警告提示的内容,警告提示的,警告提示的内容,警告提示的内容。

错误提示的内容,错误提示的内容,错误提示的,错误提示的内容,错误提示的内容。

``` 图标 - 设置 `show-icon` 为 `true` 并根据 `type` 属性自动添加不同图标,或者设置属性 `icon` 自定义图标。 ```html

信息提示的内容,信息提示的内容,信息提示的,信息提示的内容,信息提示的内容。

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

警告提示的内容,警告提示的内容,警告提示的,警告提示的内容,警告提示的内容。

错误提示的内容,错误提示的内容,错误提示的,错误提示的内容,错误提示的内容。

自定义图标的内容,自定义图标的内容,自定义图标的内容。

``` 可关闭 - 设置属性 `closable` 为 `true` 显示关闭按钮,点击可关闭提示。 - 设置属性 `close-text` 可以自定义关闭,自定义的文字会替换原先的关闭图标。 ```html

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

``` 顶部公告 - 设置属性 `banner` 为 `true` 可以应用顶部公告的样式。 ```html ```

Attributes

#### Alert | 属性 | 说明 | 默认值 | | ---------- | ----------------------------------------------------------- | ------ | | type | 警告提示样式,可选值为`info`、`success`、`warning`、`error` | info | | title | 提示标题 | - | | show-icon | 是否显示图标 | false | | closable | 是否可关闭 | false | | close-text | 关闭按钮自定义文本 | - | | banner | 应用顶部公告的样式 | - | | icon | 自定义图标内容 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 alert,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `title` - `icon` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ------------------------------- | -------- | ------ | | title | 响应式设置或更新警告提示内容 | String | - | | icon | 响应式设置或更新图标内容 | String | - | | events | 非响应式API,添加提示框的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------ | :------------------- | :----------------------------- | | onClose | 关闭时触发的回调函数 | (event: MouseEvent) => void | ================================================ FILE: docs/avatar.md ================================================ # Avatar头像 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Avatar()` 用来代表用户或事物,支持图片、图标或字符展示。 ## 代码示例 - 基础用法 头像有三种尺寸,两种形状可选。 `size` 可以设置为数值,但不能带任何单位只能是数字 ```html ``` - 类型 支持三种类型:图片、icon 以及字符,其中 icon 和字符型可以自定义图标颜色及背景色。 ```html U USER U ``` - 自动调整字符大小 对于字符型的头像,当字符串较长时,字体大小可以根据头像宽度自动调整。 ```html U Lucy Tom Edward ``` - 自定义图标 自定义图标 ```html ```

Attributes

### Avatar | 属性 | 说明 | 默认值 | | -------------- | ----------------------------------------------------------- | ------ | | shape | 指定头像的形状,可选值为 `circle`、`square` | circle | | size | 设置头像的大小,可选值为 `large`、`small`,支持设置具体数值 | - | | src | 图片类头像的资源地址 | - | | icon | 设置头像的图标类型,参考 `icon` | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 avatar,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ------------------------------- | -------- | ------ | | events | 非响应式API,添加提示框的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :------------------------------------------------------- | :--------------------------------------------- | | onError | 在设置 src 且图片加载不成功时触发 | (event:Event) => void | ================================================ FILE: docs/back-top.md ================================================ # BackTop 回到顶部 返回页面顶部的操作按钮。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.BackTop()` ## 何时使用 - 当页面内容区域比较长时; - 当用户需要频繁返回顶部查看相关内容时。 ## 代码示例 基础用法 - 默认位置距离页面右部和底部 30px,滚动至距顶端 400px 时显示。 - 向下滚动页面,灰色的按钮为默认效果,蓝色的按钮为自定义效果。 ```html ``` 自定义样式 - 自定义了位置在页面底部 200px,滚动至距顶端 200px 时显示。 ```html
返回顶端
```

Attributes

### BackTop | 属性 | 说明 | 默认值 | | -------- | ----------------------------------------- | ------ | | height | 页面滚动高度达到该值时才显示`BackTop`组件 | 400 | | bottom | 组件距离底部的距离 | 30 | | right | 组件距离右部的距离 | 30 | | duration | 滚动动画持续时间,单位 毫秒 | 500 | ================================================ FILE: docs/badge.md ================================================ # Badge 徽标数 图标右上角的圆形徽标数字。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Badge()` ## 何时使用 - 一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数,通过醒目视觉形式吸引用户处理。 ## 代码示例 基础用法 - 简单的徽章展示,当 `count` 为 `0` 时,默认不显示,可以设置属性 `show-zero="true"` 修改为显示。 ```html ``` 小红点 - 没有具体的数字。 ```html 可以是一个链接 ``` 封顶数字 - 超过 `maxCount` 的会显示为 `${maxCount}+`,默认的 `maxCount` 为 `99`。 ```html ``` 独立使用及自定义样式 - 不包裹任何元素即是独立使用,可自定样式展现。在右上角的 badge 则限定为红色。 ```html ``` 自定义内容 设置 `text` 属性,可以自定义显示内容。 ```html ``` 自定义位置 设置 `offset` 属性,可以自定义徽标的位置 ```html ``` 状态点 - 用于表示状态的小圆点。 ```html




``` 多彩徽标 - 属性 `color` 可以设置更多预设的状态点颜色,或者自定义颜色。 ```html 预设:














自定义:

``` 预设颜色 - 使用 `type` 属性,可以设置不同的颜色。 ```html ```

Attributes

### Badge | 属性 | 说明 | 默认值 | | --------- | ------------------------------------------------------------ | ------ | | count | 显示的数字,大于`maxCount`时,显示`${maxCount}+`,为 0 时隐藏 | - | | max-count | 展示封顶的数字值 | 99 | | dot | 不展示数字,只有一个小红点,如需隐藏 dot,详见下方 config 方法 | false | | type | 使用预设的颜色,可选值为 success、primary、normal、error、warning、info | - | | show-zero | 当数值为 0 时,是否展示 Badge | false | | status | 设置 Badge 为状态点,可选值为 success、processing、default、error、warning | - | | text | 自定义内容,如果设置了 status,则为状态点的文本 | - | | offset | 设置状态点的位置偏移,格式为 [x, y] | - | | color | 设置更多状态点的颜色或自定义颜色 | - | 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 badge,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `count` - `text` - `dot` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ---------------------------------- | ------- | ------ | | count | 响应式设置或更新警告徽标显示的数字 | Number | - | | text | 响应式设置或更新徽标自定义内容 | String | - | | dot | 响应式设置或更新是否为为点状 | Boolean | - | ================================================ FILE: docs/breadcrumb.md ================================================ # Breadcrumb 面包屑 显示当前页面在系统层级结构中的位置,并能向上返回。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Breadcrumb()` ## 何时使用 - 当系统拥有超过两级以上的层级结构时; - 当需要告知用户『你在哪里』时; - 当需要向上导航的功能时。 ## 代码示例 基础用法 - 最简单的用法。 ```html Home Components Breadcrumb ``` 带图标 - 可自定义每项的内容,比如带有一个图标。 ```html
Home
Components
Breadcrumb
``` 分隔符 - 通过设置`separator`属性来自定义分隔符,比如` > `,也可以接受自定义的HTML字符串。 ```html Home Components Breadcrumb Home Components Breadcrumb ```

Attributes

### Breadcrumb | 属性 | 说明 | 默认值 | | --------- | ------------ | ------ | | separator | 自定义分隔符 | / | ================================================ FILE: docs/button.md ================================================ # Button 按钮 按钮用于开始一个即时操作。 ## 何时使用 - 标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。 ## 代码示例 - 按钮类型 按钮类型有:默认按钮、主按钮、虚线按钮、文字按钮以及四种颜色按钮。 通过添加不同的类名创建不同样式的按钮 ```html ``` - 幽灵按钮 幽灵按钮将其他按钮的内容反色,背景变为透明,常用在有色背景上。 ```html
``` - 图标按钮及按钮形状 通过设置`icon`属性在`button`内嵌入一个`icon`,或者直接在`button`内添加 `i` 标签。 使用`button`的`icon`属性,图标位置将添加在最左边,如果需要自定义位置,则直接在`Button`内添加 `i` 标签。 通过添加类名 `rab-btn-circle`,可将按钮置为圆的形状。 ```html ``` - 按钮尺寸 按钮有三种尺寸:大、默认(中)、小 通过添加类名`rab-btn-lg`和`rab-btn-sm`将按钮设置为大和小尺寸,不设置为默认(中)尺寸。 ```html ``` - 长按钮 通过添加类名 `rab-btn-long` 可将按钮宽度设置为 100% 使按钮适合其父宽度,常用于弹窗内操作按钮。 ```html ``` - 不可用状态 通过添加`disabled`属性可将按钮设置为不可用状态。 ```html ``` - 加载中状态 通过添加`loading="true"`属性可以让按钮处于加载中状态 ```html ``` - 按钮组合 实现按钮组合的效果 ```html

基本

图标

圆角

尺寸

``` - 按钮组纵向排列 按钮组纵向排列 ```html
```

Attributes

### Button | 属性 | 说明 | 默认值 | | ---------- | ---------------------------------------------------- | ------ | | loading | 设置按钮为加载中状态 | false | | disabled | 设置按钮为禁用状态 | false | | icon | 设置按钮的图标类型 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------- | ------ | | el | 配置当前选定的 button,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `loading` | 返回值 | 说明 | 类型 | 默认值 | | ------- | ------------------------------ | ------- | ------ | | loading | 响应式设置设置按钮为加载中状态 | Boolean | false | ### 动态设置按钮加载中状态 常用于点击按钮后等待验证或其他异步操作,在这段时间按钮是被设为加载中的状态,并且在等待响应完成后按钮需切换为原始状态。 示例: ```html ``` ================================================ FILE: docs/card.md ================================================ # Card卡片 通用卡片容器。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Card()` ## 何时使用 最基础的卡片容器,可承载文字、列表、图片、段落,常用于后台概览页面。 ## 代码示例 基本用法 - 包含标题、内容、操作区域。 ```html

卡片内容 1

卡片内容 2

卡片内容 3

``` 无边框 - 通过设置属性`no-border="true"` ,可以不添加边框,建议在灰色背景下使用。 ```html

这是没有边框类型的卡片这是没有边框类型的卡片这是没有边框类型的卡片这是没有边框类型的卡片

``` 禁用悬停阴影 - 通过设置属性`dis-hover="true"`来禁用鼠标悬停显示阴影的效果。 ```html

卡片内容 1

卡片内容 2

卡片内容 3

卡片内容 1

卡片内容 2

卡片内容 3

``` 卡片阴影 - 通过设置属性`shadow="true"`来显示卡片阴影,使用该属性后,`no-border`和`dis-hover`将无效,建议在灰色背景下使用。 ```html

卡片内容 1

卡片内容 2

卡片内容 3

卡片内容 1

卡片内容 2

卡片内容 3

``` 简洁卡片 - 只包含内容区域,没有标题。 ```html

一套基于TS构建的UI组件库

```

Attributes

### Card | 属性 | 说明 | 默认值 | | ----------- | -------------------------------- | ------ | | no-bodred | 不显示边框,建议在灰色背景下使用 | false | | dis-hover | 禁用鼠标悬停显示阴影 | false | | shadow | 卡片阴影,建议在灰色背景下使用 | false | | title | 卡片标题 | - | | extra | 卡片额外操作的内容 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 steps,必须是选择器名称或者元素名 | String | 该方法返回以下2个 String 类型的属性: - `title` - `extra` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ---------------------------- | ------ | ------ | | title | 响应式设置卡片标题 | String | - | | extra | 响应式设置卡片额外操作的内容 | String | - | ================================================ FILE: docs/carousel.md ================================================ # Carousel走马灯 旋转木马,一组轮播的区域。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Carousel()`。 > > 该元素标签能够添加额外的子元素节点作为内容部分,并自动追加到指定的内部节点上,且额外添加的所有节点必须只能具有一个父元素包裹 ## 何时使用 - 当有一组平级的内容。 - 当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。 - 常用于一组图片或卡片轮播。 ## 代码示例 基础用法 - 最基本的用法。 ```html
``` 自动切换 - 设置属性 `autoplay="true"` 可以自动轮播,同时可以设置属性 `autoplay-speed` 改变自动播放的速度。 ```html
``` 渐显 - 设置属性 `effect="fade"` 切换效果为渐显。 ```html
```

Attributes

### Carousel | 属性 | 说明 | 默认值 | | :------------- | :----------------------------------------------------------- | :----- | | autoplay | 是否自动切换 | false | | autoplay-speed | 自动切换的时间间隔,单位为毫秒 | 2000 | | dots | 指示器的位置,可选值为 inside (内部),outside(外部),none(不显示) | inside | | radius-dot | 是否显示圆形指示器 | false | | trigger | 指示器的触发方式,可选值为 click(点击),hover(悬停) | click | | arrow | 切换箭头的显示时机,可选值为 hover(悬停),always(一直显示),never(不显示) | hover | | easing | 动画效果 | ease | | effect | 动画效果函数,可切换为渐显 `fade` | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 carousel,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | ------------------------------- | -------- | ------ | | events | 非响应式API,添加提示框的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :------------------------------------------------------- | :--------------------------------------------- | | onClick | 点击幻灯片时触发,返回索引值 | (index: number) => void | | onChange | 幻灯片切换时触发,目前激活的幻灯片的索引,原幻灯片的索引 | ([ oldValue, value ]: [number,number]) => void | ================================================ FILE: docs/checkbox.md ================================================ # Checkbox 多选框 多选框。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Card()` ## 何时使用 - 在一组可选项中进行多项选择时; - 单独使用可以表示两种状态之间的切换,和 `switch` 类似。区别在于切换 `switch` 会直接触发状态改变,而 `checkbox` 一般用于状态标记,需要和提交操作配合。 ## 代码示例 基本用法 - 简单的 checkbox ```html Checkbox ``` 组合使用 - 使用`r-checkbox-group`配合数组来生成组合。在组合使用时,`r-checkbox` 使用 `label` 来自动判断选中状态。 ```html Twitter Facebook Github Snapchat 苹果 西瓜 猕猴桃 ``` 不可用 - 通过设置`disabled`属性来禁用多选框。 ```html Checkbox 苹果 西瓜 猕猴桃 ``` 显示边框 设置属性 `type="border"` 可以显示边框。 ```html 苹果 西瓜 猕猴桃 ``` 全选 - 在实现全选效果时,你可能会用到 `indeterminate` 属性。示例代码只是一种写法。 ```html
全选
苹果 西瓜 猕猴桃 ```

Attributes

### Checkbox | 属性 | 说明 | 默认值 | | :------------ | :----------------------------------------------------------- | :----- | | checked | 单个是否选中 | false | | label | 只在组合使用时有效。指定当前选项的 value 值,组合会自动判断当前选择的项目 | - | | disabled | 是否禁用当前项 | false | | size | 单选框的尺寸,可选值为 `large`,`small` 或者不设置 | - | | border | 是否显示边框 | false | | icon | 设置前缀图标 | - | | indeterminate | 设置 indeterminate 状态,只负责样式控制 | false | ### RadioGroup | 属性 | 说明 | 默认值 | | :---- | :--------------------------------------------------- | :----- | | value | 指定选中项目的集合 | [ ] | | size | 多选框组的尺寸,可选值为 `large`、`small` 或者不设置 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 checkbox,必须是选择器名称或者元素名 | String | 该方法返回以下三个值: - `checked` - `disabled` - `value` - `indeterminate` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------------- | -------------------------------------------- | --------- | ------ | | checked | 响应式设置单个是否选中 | Boolean | - | | disabled | 响应式设置是否禁用当前项 | Boolean | - | | value | 响应式设置 checkbox-group 当前选中的项目数据 | String[ ] | - | | indeterminate | 响应式设置 indeterminate 状态 | Boolean | - | | events | 非响应式API,添加 Checkbox 的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :----------------------------------------------------------- | :-------------------------------------------- | | onChange | 在选项状态发生改变时触发。当选中的配置目标是 checkbox-group 时,返回已选中的数组。如果是单个 checkbox 则返回当前选中状态 | (checked: boolean \| data: string[ ]) => void | ================================================ FILE: docs/circle.md ================================================ # Circle 进度环 通过图表展示操作的当前进度。 ## 何时使用 图表类组件。一般有两种用途: - 显示某项任务进度的百分比; - 统计某些指标的占比。 ## 代码示例 基础用法 * 圆形进度环有一系列的参数可配置,具体可以查看下面的API文档。 ```html 80% ``` 配合外部组件使用 - 通过数据的联动和逻辑控制,实现交互效果。 ```html 0%
``` 自定义更多样式 - 通过自定义内容和丰富的配置,可以组合出很多统计效果。 - 注意!标签容器下必须具有一个父元素。 ```html

42,001,776

消费人群规模

总占人数 75%
``` 仪表盘 - 通过设置属性 `dashboard="true"`,可以很方便地实现仪表盘样式的进度环。 ```html 80% ```

Attributes

### Circle | 属性 | 说明 | 默认值 | | -------------- | ------------------------------------------------------------ | -------- | | percent | 百分比 | 0 | | size | 图表的宽度和高度,单位 px | 120 | | stroke-linecap | 进度环顶端的形状,可选值为`square`(方)和`round`(圆) | round | | stroke-width | 进度环的线宽,单位 px | 6 | | stroke-color | 进度环的颜色,支持传入数组显示为渐变色,标签属性上设置数组的格式的值为`'["xxxx","xxx"]'` | \#1890ff | | trail-width | 进度环背景的线宽,单位 px | 5 | | trail-color | 进度环背景的颜色 | \#eaeef2 | | dashboard | 是否显示为仪表盘 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------- | ------ | | el | 配置当前选定的 circle,必须是选择器名称或者元素名 | String | 该方法返回以下两个值: - `percent` - `strokeColor` | 返回值 | 说明 | 类型 | 默认值 | | ----------- | ---------------------- | -------------------- | ------- | | percent | 响应式设置百分比 | Number | 0 | | strokeColor | 响应式设置进度环的颜色 | String \| String[ ] | #1890ff | ================================================ FILE: docs/collapse.md ================================================ # Collapse折叠面板 可以折叠/展开的内容区域。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Collapse()` ## 何时使用 - 对复杂区域进行分组和隐藏,保持页面的整洁。 - `手风琴` 是一种特殊的折叠面板,只允许单个内容区域展开。 ## 代码示例 基础用法 - 通过设置属性 `active-index` 可以同时展开多个面板,这个例子默认展开了第一个。 ```html

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

``` 手风琴 - 通过设置属性`accordion="true"`开启手风琴模式,每次只能打开一个面板。 ```html

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

``` 简洁风格 - 设置属性 `simple="true"` 可以显示为一套没有边框的简洁样式。 ```html

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

``` 隐藏箭头 - 通过给 `r-collapse-panel` 设置属性 `hide-arrow="true"` 可以隐藏面板的箭头图标 ```html

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

``` 幽灵折叠面板 - 通过设置属性 `ghost="true"` 将折叠面板的背景变成透明。 ```html

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

狗是一种家养动物。它以忠诚和忠诚而闻名,在世界各地的许多家庭中,它都是受欢迎的客人。

```

Attributes

### Collapse | 属性 | 说明 | 默认值 | | ---------------- | ------------------------------------------------------------ | ------ | | active-index | 初始化选中面板的 key,格式可以为 `string`、`number`、 `"[string]"` 或 `"[number]"` | - | | accordion | 是否开启手风琴模式,开启后每次至多展开一个面板 | false | | simple | 简洁边框风格的折叠面板 | false | | ghost | 使折叠面板透明且无边框 | false | ### Collapse-panel | 属性 | 说明 | 默认值 | | ---------- | ------------------------------------------------------------ | ------ | | index | 当前面板的 key,与 r-collapse 的`active-index`对应,不填为索引值 | index | | hide-arrow | 隐藏当前面板上的箭头 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 collapse,必须是选择器名称或者元素名 | String | 该方法返回以下两个值: - `activeIndex` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | --------- | ------------------------------- | ------------------------------------------- | ------ | | activeIndex | 响应式设置当前激活面板的 index | String \| String[ ] \| Number \| Number[ ] | - | | events | 非响应式API,添加折叠面板事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :----------------------------------------------------- | :--------------------- | | onChange | 切换面板时触发,返回当前已展开的面板的 key,格式为数组 | (index: string[]) => void | ================================================ FILE: docs/count-down.md ================================================ # CountDown 倒计时 根据设置目标时间来倒计时的组件。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.CountDown()` ## 何时使用 - 当页面某个部分或功能需要进行倒计时 ## 代码示例 基础用法 - 最简单的用法 - 设置的时间格式为 `YYYY/MM/DD HH:mm:ss` 或 `YYYY-MM-DD HH:mm:ss` ```html ```

Attributes

### CountDown | 属性 | 说明 | 默认值 | | -------- | ------------------------ | ------ | | end-time | 设置倒计时结束的目标时间 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ----------------------------------------------------- | ------ | | el | 配置当前选定的 count-down,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `endTime` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------- | ------------------------------- | -------- | ------ | | endTime | 响应式设置倒计时结束的目标时间 | String | - | | events | 非响应式API,添加倒计时的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :----- | :--------------------- | :------------------------- | | onStop | 倒计时结束后触发的事件 | (stop: boolean) => void | ================================================ FILE: docs/divider.md ================================================ # Divider 分割线 区隔内容的分割线。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Divider()` ## 何时使用 - 对不同章节的文本段落进行分割。 - 对行内文字/链接进行分割,例如表格的操作列。 ## 代码示例 水平分割线 - 默认为水平分割线,可在中间加入文字。 ```html

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

标题居中

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

``` 垂直分割线 - 使用 `type="vertical"` 设置为行内的垂直分割线。 ```html 文本 链接 链接 ``` 标题位置 - 修改分割线标题的位置。 ```html 左侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

``` 分割文字使用正文样式 - 使用 `plain` 可以设置为更轻量的分割文字样式。 ```html 标题居中

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

```

Attributes

### Divider | 属性 | 说明 | 默认值 | | ----------- | ------------------------------------------------- | ---------- | | type | 水平还是垂直类型,可选值为 horizontal 或 vertical | horizontal | | orientation | 分割线标题的位置,可选值为 left、right 或 center | center | | dashed | 是否虚线 | false | | size | 标题文字尺寸,可选值为 small 或 不填 | - | | plain | 文字是否显示为普通正文样式 | false | ================================================ FILE: docs/drawer.md ================================================ # Drawer 抽屉 屏幕边缘滑出的浮层面板。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Drawer()`。 > ## 何时使用 - 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到到原任务。 - 当需要一个附加的面板来控制父窗体内容,这个面板在需要时呼出。比如,控制界面展示样式,往界面中添加内容。 - 当需要在当前任务流中插入临时任务,创建或预览附加内容。比如展示协议条款,创建子对象。 ## 代码示例 基础抽屉 - 基础抽屉,点击触发按钮抽屉从右滑出,点击遮罩区关闭。 - 注意!容器内的节点必须具有一个父元素 ```html

Some contents...

Some contents...

Some contents...

``` 自定义位置 - 自定义位置,点击触发按钮抽屉从相应的位置滑出,点击遮罩区关闭 ```html

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

``` 在当前 DOM 内打开 - 设置抽屉在当前元素内打开 ```html

Some contents...

``` 多层抽屉 - 在抽屉内打开新的抽屉,用以解决多分支任务的复杂状况。 ```html

这是第二层抽屉。

```

Attributes

### Drawer | 属性 | 说明 | 默认值 | | :------------ | :-------------------------------------------------- | :----- | | visible | 初始 Drawer 是否可见 | false | | title | 抽屉标题 | - | | width | 抽屉宽度。需要带像素单位 | 256px | | closable | 是否显示右上角的关闭按钮 | false | | mask-closable | 是否允许点击遮罩层关闭 | true | | mask | 是否显示遮罩层 | true | | scrollable | 页面是否可以滚动 | false | | placement | 抽屉的方向,可选值为 top、 right、 bottom 、 left | right | | inner | 是否设置抽屉在某个元素内打开,该元素需要有相对定位 | false | | lock-scroll | 是否禁止对页面滚动条的修改 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------- | ------ | | el | 配置当前选定的 drawer,必须是选择器名称或者元素名 | String | 该方法返回以下两个值: - `title` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | --------------------------- | -------- | ------ | | title | 响应式设置抽屉的标题 | String | - | | events | 非响应式API,添加抽屉事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------ | :------------- | :------- | | onClose | 关闭抽屉时触发 | 无 | ================================================ FILE: docs/dropdown.md ================================================ # Dropdown 下拉菜单 向下弹出的列表。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Dropdown()` ## 何时使用 - 当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。 ## 代码示例 基础用法 - 最简单的下拉菜单,触发对象可以是链接、按钮等各种元素。 - 本例还展示了禁用项和分隔线。 ```html 下拉菜单 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 ``` 触发方式 - 通过设置属性 `trigger` 可以更改触发方式,可选项为 click 、 hover(默认)、contextMenu(右键) ```html hover 触发 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 click 触发 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 右键触发 返回 删除 custom 触发

常用于各种自定义下拉内容的场景。

``` 对齐方向 - 通过设置属性 `placement` 可以更改下拉菜单出现的方向,与 Poptip 和 Tooltip 配置一致,支持 12 个方向,详见 API。 ```html 菜单(左) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 菜单(居中) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 菜单(右) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 ``` 嵌套用法 - 下拉菜单可以进行嵌套实现级联的效果,嵌套时注意设置子集的展开方向。 ```html 北京小吃 豆汁儿 炸酱面 驴打滚 北京烤鸭 壁炉烤鸭 焖炉烤鸭 冰糖葫芦 ```

Attributes

### Dropdown | 属性 | 说明 | 默认值 | | :----------------------- | :----------------------------------------------------------- | :----- | | trigger | 触发方式,可选值为 `hover`(悬停)`click`(点击)`contextMenu`(右键)`custom` (自定义) | hover | | placement | 下拉菜单出现的位置,可选值为`top``top-start``top-end``bottom``bottom-start``bottom-end``left``left-start``left-end``right``right-start``right-end`, 支持自动识别 | bottom | | visible `1.3.0` | 手动控制下拉框的显示,在 trigger = 'custom' 时使用 | false | | stop-propagation `1.3.0` | 是否开启 stop-propagation,在trigger = 'custom' 时,如果将事件绑定到 r-dropdown 上时最好使用 | false | ### DropdownItem | 属性 | 说明 | 默认值 | | :------------- | :--------------------------- | :----- | | key `1.3.0` | 用来标识这一项 | - | | disabled | 禁用该项 | - | | divided | 显示分割线 | - | | selected | 标记该项为选中状态 | - | | danger `1.3.0` | 标记为危险项,用于删除项操作 | | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------- | ------ | | el | 配置当前选定的 drawer,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `visible` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | --------------- | ----------------------------- | -------- | ------ | | visible `1.3.0` | 响应式设置或更新下拉框的显示 | Boolean | false | | events | 非响应式API,添加下拉菜单事件 | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :---------------------- | :----------------------------------------------- | :------------------------- | | onClick `1.3.0` | 点击菜单项时触发,返回 r-dropdown-item 的 key 值 | (key: string) => void | | onVisibleChange `1.3.0` | 菜单显示状态改变时调用 | (visible: boolean) => void | | onClickOutside `1.3.0` | 点击外部关闭下拉菜单时触发 | (event: Event) => void | ================================================ FILE: docs/empty.md ================================================ # Empty 空状态 空状态时的展示占位图。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Empty()` ## 何时使用 - 当目前没有数据时,用于显式的用户提示。 - 初始化场景时的引导创建流程。 ## 代码示例 基础用法 - 简单的展示。 ```html ``` 自定义 - 设置属性 ` image` 自定义图片、`desc` 设置描述、 - 如果设置附属内容,容器下有且只能由一个子节点 ```html ``` 无描述 - 设置属性 `desc="false"` 不显示描述。 ```html ```

Attributes

### Empty | 属性 | 说明 | 默认值 | | :---------- | :------------- | :----- | | desc | 自定义描述内容 | - | | image-style | 图片样式 | - | | image | 自定义图片地址 | - | ================================================ FILE: docs/input-number.md ================================================ # InputNumber 数字输入框 通过鼠标或键盘,输入范围内的数值。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.InputNumber()` ## 何时使用 - 当需要获取标准数值时。 ## 代码示例 基础用法 - 可以通过输入、鼠标点击或键盘的上下键来改变数值大小。 ```html ``` 小数 - 通过设置`step`属性控制每次改变的精度。 ```html ``` 格式化展示 - 通过 `formatter` 格式化数字,以展示具有具体含义的数据,往往需要配合 `parser` 一起使用。 - formatter 属性的值的字符串格式为:反引号包裹 ${value}。 - parser 属性的值需为字符串的数组,第一个位置为要匹配替换的内容,第二个位置为替换后的结果;若无该属性则使用默认的匹配规则转换。 ```html ``` 尺寸 - 通过设置`size`属性为`large`和`small`将输入框设置为大和小尺寸,不设置为默认尺寸。 ```html ``` 不可用 - 通过设置`disabled="true"`属性禁用输入框,点击按钮切换状态。 ```html ``` 只读 - 通过设置`readonly="true"`属性开启只读。 ```html ``` 不可编辑 - 通过设置`editable="false"`属性控制是否能编辑。 ```html ``` 按钮位置 - 通过设置 `controls-outside="true"` 属性可以将按钮位置置于输入框两侧。 ```html ```

Attributes

### InputNumber | 属性 | 说明 | 默认值 | | :--------------- | :--------------------------------------------------------- | :-------- | | max | 最大值 | Infinity | | min | 最小值 | -Infinity | | value | 输入框当前值 | - | | controls-outside | 按钮位置是否置于两侧 | false | | step | 每次改变的步伐,可以是小数 | 1 | | size | 输入框尺寸,可选值为`large`、`small`或者不填 | - | | disabled | 设置禁用状态 | false | | placeholder | 占位文本 | - | | formatter | 指定输入框展示值的格式 | - | | parser | 指定从 formatter 里转换回数字的方式,和 formatter 搭配使用 | - | | readonly | 是否设置为只读 | false | | editable | 是否可编辑 | true | | precision | 数值精度 | - | | input-id | 给内部实际的输入框元素设置 `id` | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------------- | ------ | | el | 配置当前选定的 input-number,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `value` - `step` - `disabled` - `readOnly` - `editable` - `events(options)` | 返回值 | 说明 | 类型 | | -------- | -------------------------------------- | --------- | | value | 响应式设置输入框当前值 | Boolean | | step | 响应式设置每次改变的步伐 | Number | | disabled | 响应式设置禁用状态 | Boolean | | readOnly | 响应式设置是否设置为只读 | Boolean | | editable | 响应式设置是否可编辑 | Boolean | | events | 非响应式API,添加 InputNumber 的事件, | Functioin | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :--------------------------- | :-------------------------- | | onChange | 数值改变时的回调,返回当前值 | (value: number) => void | | onFocus | 聚焦时触发 | (event: InputEvent) => void | | onBlur | 失焦时触发 | 无 | ================================================ FILE: docs/jumbotron.md ================================================ # Jumbotron 巨幕 用于排版和分行,以便在较大的容器中分隔内容。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Jumbotron()` > ## 何时使用 - 当需要展示巨大的标题和段落时使用。 ## 代码示例 基础用法 - 最简单的用法,如果添加额外内容则标签容器下有且只能由一个子节点组成 ```html

它使用实用程序类来排版和空格,以便在较大的容器中分隔内容。

``` 外观 - 通过设置属性 `type` 切换外观背景色 ```html ```

Attributes

### Jumbotron | 属性 | 说明 | 默认值 | | :-------- | :--------------------------------------- | :----- | | type | 更改外观颜色,可选值为 `light` 和 `dark` | - | | title | 设置大标题 | - | | sub-title | 设置描述标题 | - | ================================================ FILE: docs/loading-bar.md ================================================ # LoadingBar 加载进度条 全局创建一个显示页面加载、异步请求、文件上传等的加载进度条。 > LoadingBar 只会在全局创建一个,因此在任何位置调用的方法都会控制这同一个组件。主要使用场景是路由切换和Ajax,因为这两者都不能拿到精确的进度,LoadingBar 会模拟进度,当然也可以通过`update()`方法来传入一个精确的进度,比如在文件上传时会很有用,具体见API。 #### 在路由中使用 ```js // 以Vue的路由为例,部分代码省略 import Loading from 'rabbit-simple-ui/src/components/loading-bar'; router.beforeEach((to, from, next) => { Loading.start(); next(); }); router.afterEach(route => { Loading.finish(); }); ``` #### 在异步请求中使用 ```html ``` ## 代码示例 基本用法 - 点击 Start 开始进度,点击 Finish 结束。在调用`start()`方法后,组件会自动模拟进度,当调用`finish()`或`error()`时,补全进度并自动消失。 ```js Rabbit.Loading.statr(); Rabbit.Loading.finish(); Rabbit.Loading.error(); ```

API

LoadingBar instance 通过直接调用以下方法来使用组件: - `Rabbit.Loading.start()` - `Rabbit.Loading.finish()` - `Rabbit.Loading.error()` - `Rabbit.Loading.update(percent)` 函数及参数说明如下: | 函数名 | 说明 | 参数 | | ------ | ---------------------------------------- | ------------------------- | | start | 开始从 0 显示进度条,并自动加载进度 | 无 | | finish | 结束进度条,自动补全剩余进度 | 无 | | error | 以错误的类型结束进度条,自动补全剩余进度 | 无 | | update | 精确加载到指定的进度 | percent,指定的进度百分比 | 另外提供了全局配置和全局销毁的方法: - `Rabbit.Loading.config(options)` - `Rabbit.Loading.destroy()` ```js Rabbit.Loading.config({ color: '#5cb85c', failedColor: '#f0ad4e', height: 5 }); ``` | 属性 | 说明 | 类型 | 默认值 | | :---------- | :------------------------------------- | :----- | :------ | | color | 进度条的颜色,默认为 Rabbit 主色 | String | primary | | failedColor | 失败时的进度条颜色,默认为 Rabbit 主色 | String | error | | height | 进度条高度,单位 px | Number | 2 | | duration | 隐藏时的持续时间,单位 ms | Number | 800 | ================================================ FILE: docs/message.md ================================================ # Message 全局提示 全局展示操作反馈信息。 ## 何时使用 - 可提供成功、警告和错误等反馈信息。 - 顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。 ## 代码示例 普通提示 - 最基本的提示,默认在3秒后消失。 ```html ``` 提示类型 - 包括成功、失败、警告。 ```html ``` 带背景色 设置属性 `background` 为 true 后,通知提示会显示背景色。 ```html ``` 加载中 - 进行全局 loading,异步自行移除。需要手动调用 `destroy` 方法关闭。 ```html ``` Promise 接口 - 可以通过 then 接口在关闭后运行 callback 。以上用例将在每个 Rabbit.Message 将要结束时通过 then 显示新的 Rabbit.Message 。 - 如果手动通过关闭按钮结束则无效 ```html ``` 自定义时长 - 自定义时长,也可以在`Rabbit.Message.config()`中全局配置,详见API。 ```html ``` 可关闭 - 设置 `closable` 为 true 后可以手动关闭提示。 ```html ``` 使用 HTML 片段 - 传入 HTML 片段 ```html ``` > `content` 属性虽然支持传入 HTML 片段,但是在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 [XSS 攻击](https://en.wikipedia.org/wiki/Cross-site_scripting)。因此在 `dangerouslyUseHTMLString` 打开的情况下,请确保`content`的内容是可信的,**永远不要**将用户提交的内容赋值给 `content` 属性。

API

#### Message 实例 通过直接调用以下方法来使用组件: - `Rabbit.Message.info(config)` - `Rabbit.Message.success(config)` - `Rabbit.Message.warning(config)` - `Rabbit.Message.error(config)` - `Rabbit.Message.loading(config)` 组件同时提供 promise 接口。 - `Rabbit.Message[level](config).then(afterClose)` 其中 `Rabbit.Message[level]` 是组件已经提供的静态方法。`then` 接口返回值是 Promise。 参数 config 可以是字符串或对象,当为字符串时,直接显示内容,当为对象时,具体说明如下: | 属性 | 说明 | 类型 | 默认值 | | ---------- | -------------------------------------- | --------------- | ------ | | content | 提示内容 | String | - | | duration | 自动关闭的延时,单位秒,不关闭可以写 0 | Number | 3 | | onClose | 点击消息关闭按钮时的回调 | Function | - | | closable | 是否显示关闭按钮 | Boolean | false | | background | 是否显示背景色 | Boolean | false | | key | 当前提示的唯一标志 | String \| Number | - | | dangerouslyUseHTMLString | 是否将 content 属性作为 HTML 片段处理 | Boolean | false | #### 全局方法 还提供了全局配置和全局销毁方法: - `Rabbit.Message.config(options)` - `Rabbit.Message.destroy()` 也可通过 `Rabbit.Message.destroy(key)` 来关闭一条消息。 ```js Rabbit.Message.loading({ key: 'msgKey', content: '正在加载中...', duration: 0, }); setTimeout(() => Rabbit.Message.destroy('msgKey'), 5000); ``` ```js Rabbit.Message.config({ top: 100, duration: 2 }); ``` | 属性 | 说明 | 类型 | 默认值 | | -------- | -------------------------------- | ------ | ------ | | top | 提示组件距离顶端的距离,单位像素 | Number | 24 | | duration | 默认自动关闭的延时,单位秒 | Number | 3 | ## FAQ ### 通过异步或者关闭按钮关闭消息后,为什么 `then` 接口的回调事件不生效 组件提供的 Promise接口是当实例自动关闭时才会触发的,并不是通过任意方式关闭组件都会调用该接口。 如果您想通过手动移除消息后接着添加回调事件,请使用 `onClose` api,至于要在异步移除后添加事件,建议是在异步的那个时机里添加 ================================================ FILE: docs/mini-modal.md ================================================ # MiniModal 轻量对话框 创建一次性的轻量级对话框。 ## 何时使用 - 当需要一个简洁的确认框询问用户时,可以调用 `Rabbit.MiniModal.confirm()` 实例方法创建。 ## 代码示例 基本用法 - 四种基本的对话框,只提供一个确定按钮。 ```html ``` 确认对话框 - 快速弹出确认对话框,并且可以自定义按钮文字及异步关闭。 - 将`dangerouslyUseHTMLString`属性设置为 true,`content` 就会被当作 HTML 片段处理。 ```html - ``` > `title` 和 `content` 属性虽然支持传入 HTML 片段,但是在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 [XSS 攻击](https://en.wikipedia.org/wiki/Cross-site_scripting)。因此在 `dangerouslyUseHTMLString` 打开的情况下,请确保 `content` 的内容是可信的,**永远不要**将用户提交的内容赋值给 `content` 属性。 #### Modal instance 通过直接调用以下方法来使用: - `Rabbit.MiniModal.info(config)` - `Rabbit.MiniModal.success(config)` - `Rabbit.MiniModal.warning(config)` - `Rabbit.MiniModal.error(config)` - `Rabbit.MiniModal.confirm(config)` 以上方法隐式地创建及维护。参数 config 为对象,具体说明如下: ## API | 属性 | 说明 | 类型 | 默认值 | | ---------- | ------------------------------------------------------------ | ---------------- | ------ | | title | 标题 | String | - | | content | 内容 | String | - | | width | 宽度,单位 px | Number \| String | 416 | | okText | 确定按钮的文字 | String | 确定 | | cancelText | 取消按钮的文字,只在`Modal.confirm()`下有效 | String | 取消 | | loading | 点击确定按钮时是否显示 loading 状态,开启则需手动调用`Modal.remove()`来关闭对话框 | Boolean | false | | scrollable | 页面是否可以滚动 | Boolean | false | | keyboard | 是否可以按 Esc 键关闭 | Boolean | false | | onOk | 点击确定的回调 | Function | - | | onCancel | 点击取消的回调,只在`Modal.confirm()`下有效 | Function | - | | lockScroll | 是否禁止对页面滚动条的修改 | Boolean | true | 另外提供了全局关闭对话框的方法: - `Rabbit.MiniModal.remove()` ================================================ FILE: docs/modal.md ================================================ # Modal 对话框 模态对话框。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Modal()` ## 何时使用 - 需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 `Modal` 在当前页面正中打开一个浮层,承载相应的操作。 - 另外当需要一个简洁的确认框询问用户时,可以使用 `MiniModal.confirm()` 。 ## 代码示例 基础用法 - 最简单的使用方法,设置属性`visable` 为 true / false 来显示 / 隐藏对话框。 - 可以使用 `config` 方法提供的 API `visible` 动态控制显示隐藏。 - 默认按键盘`ESC`键也可以关闭。 - 注意!容器内的节点必须具有一个父元素。 ```html

对话框内容

对话框内容

对话框内容

``` 自定义外观 - 控制是否显示标题栏、自定义按钮文字、自定义宽度。 ```html

对话框内容

对话框内容

对话框内容

Some Content...

Some Content...

Some Content...

自定义宽度,单位 px,默认 520px。

对话框的宽度是响应式的,当屏幕尺寸小于 768px 时,宽度会变为自动 auto

``` 异步关闭 - 设置属性`loading=“true”`后,点击确定按钮对话框不会自动消失,并显示 loading 状态,需要手动关闭对话框,常用于表单提交。 ```html

点击确定后,对话框将在 2秒 后关闭。

``` 禁用关闭 - 可以禁用关闭和遮罩层关闭。 ```html

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

``` 自定义位置 - 可以自定义 Modal 的对话框样式 以及 对话框 Wrap 的 class 名称,从而实现更多自定义的样式,比如垂直居中。 ```html

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

``` 全屏 - 设置属性 `fullscreen` 可以全屏显示。 - 设置属性 `footer-hide` 可以隐藏底部内容。 ```html

这是一个全屏的对话框

```

Attributes

### Modal | 属性 | 说明 | 默认值 | | ------------- | ------------------------------------------------------------ | ------ | | visible | 对话框默认是否显示 | false | | title | 对话框标题 | - | | closable | 是否显示右上角的关闭按钮,关闭后 Esc 按键也将关闭 | true | | mask-closable | 是否允许点击遮罩层关闭 | true | | loading | 点击确定按钮时,确定按钮是否显示 loading 状态,开启则需手动关闭对话框 | false | | scrollable | 页面是否可以滚动 | false | | fullscreen | 是否全屏显示 | false | | mask | 是否显示遮罩层 | true | | ok-text | 确定按钮文字 | 确定 | | cancel-text | 取消按钮文字 | 取消 | | width | 对话框宽度,对话框的宽度是响应式的,当屏幕尺寸小于 768px 时,宽度会变为自动`auto`。 | 520px | | footer-hide | 不显示底部 | false | | class-name | 设置对话框容器`.rab-modal-wrap`的类名,可辅助实现垂直居中等自定义效果 | - | | z-index | 层级 | 1000 | | lock-scroll | 是否禁止对页面滚动条的修改 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 modal,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `visible` - `title` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------- | ---------------------------- | -------- | ------ | | visible | 响应式设置或更新对话框的显示 | Boolean | false | | title | 响应式设置或更新对话框标题 | String | - | | events | 非响应式API,添加对话框事件 | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :------------- | :------- | | onOk | 点击确定的回调 | 无 | | onCancel | 点击取消的回调 | 无 | ================================================ FILE: docs/notice.md ================================================ # Notice 通知提醒框 全局展示通知提醒信息。 ## 何时使用 在系统四个角显示通知提醒信息。经常用于以下情况: - 较为复杂的通知内容。 - 带有交互的通知,给出用户下一步的行动点。 - 系统主动推送。 ## 代码示例 基础用法 - 基本用法,默认在 4.5秒后关闭。如果 `desc` 参数为空或不填,则自动应用仅标题模式下的样式。 - 建议标题言简意赅,例如"删除成功",更详细的内容可以放在描述信息里。 ```html ``` 提醒类型 - 带有状态图标的提醒。 - 带描述信息和仅标题 ```html

带描述信息

仅标题

``` - 自定义时长 自定义时长,为 0 则不自动关闭。 ```html ``` Promise 接口 - 可以通过 then 接口在关闭后运行 callback 。以上用例将在每个 Rabbit.Notice 将要结束时通过 then 显示新的 Rabbit.Notice 。 - 如果手动通过关闭按钮结束则无效 ```html ``` 使用 HTML 片段 - `title` 和 `desc` 属性支持传入 HTML 片段 - 将`dangerouslyUseHTMLString`属性设置为 true, 就会被当作 HTML 片段处理。 ```html ``` > `title` 和 `desc` 属性虽然支持传入 HTML 片段,但是在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 [XSS 攻击](https://en.wikipedia.org/wiki/Cross-site_scripting)。因此在 `dangerouslyUseHTMLString` 打开的情况下,请确保 `desc` 的内容是可信的,**永远不要**将用户提交的内容赋值给 `desc` 属性。 隐藏关闭按钮 - 设置属性 `closable` 为 `false` 可以不显示关闭按钮 ```html ```

API

### Notice 实例 通过直接调用以下方法来使用组件: - `Rabbit.Notice.open(config)` - `Rabbit.Notice.info(config)` - `Rabbit.Notice.success(config)` - `Rabbit.Notice.warning(config)` - `Rabbit.Notice.error(config)` 组件同时提供 promise 接口。 - `Rabbit.Notice[level](config).then(afterClose)` 其中 `Rabbit.Notice[level]` 是组件已经提供的静态方法。`then` 接口返回值是 Promise。 参数 config 为对象,具体说明如下: | 属性 | 说明 | 类型 | 默认值 | | ------------------------ | -------------------------------------------------------- | ---------------- | ------ | | title | 通知提醒的标题 | String | - | | desc | 通知提醒的内容,为空或不填时,自动应用仅标题模式下的样式 | String | - | | duration | 自动关闭的延时,单位秒,不关闭可以写 0 | Number | 4.5 | | key | 当前通知的唯一标识 | String \| Number | - | | closable | 是否显示关闭按钮 | Boolean | true | | style | 自定义内联样式 | String | - | | className | 自定义 CSS class | String | - | | dangerouslyUseHTMLString | 是否将 title 或 desc 属性作为 HTML 片段处理 | Boolean | false | | icon | 自定义图标 | String | - | | onClose | 点击默认关闭按钮时触发的回调函数 | Function | - | | onClick | 点击通知时触发的回调函数 | Function | - | #### 全局方法 还提供了全局配置、全局关闭某个通知和全局销毁的方法: - `Rabbit.Notice.config(options)` - `Rabbit.Notice.close(key)` - `Rabbit.Notice.destroy()` ```js Rabbit.Notice.config({ top: 50, duration: 3 }); ``` | 属性 | 说明 | 类型 | 默认值 | | -------- | -------------------------------- | ------ | ------ | | top | 通知组件距离顶端的距离,单位像素 | Number | 24 | | duration | 默认自动关闭的延时,单位秒 | Number | 4.5 | ## FAQ ### 通过异步或者关闭按钮关闭通知后,为什么 `then` 接口的回调事件不生效 组件提供的 Promise接口是当实例自动关闭时才会触发的,并不是通过任意方式关闭组件都会调用该接口。 如果您想通过手动移除通知后接着添加回调事件,请使用 `onClose` api,至于要在异步移除后添加事件,建议是在异步的那个时机里添加 ================================================ FILE: docs/page-header.md ================================================ # PageHeader 页头 页头位于页容器中,页容器顶部,起到了内容概览和引导页级操作的作用。包括由面包屑、标题、页面内容简介、页面级操作等、页面级导航组成。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.PageHeader()` ## 何时使用 - 当需要使用户快速理解当前页是什么以及方便用户使用页面功能时使用,通常也可被用作页面间导航。 ## 代码示例 标准样式 - 标准页头,适合使用在需要简单描述的场景。 ```html ```

Attributes

### PageHeader | 属性 | 说明 | 默认值 | | --------- | -------------------- | ------ | | title | 自定义标题文字 | - | | sub-title | 自定义的二级标题文字 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------------ | ------ | | el | 配置当前选定的 page-header,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------- | ------------------------------- | ---------------- | ------ | | events | 非响应式API,添加提示框的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :----- | :----------------- | :------- | | onBack | 返回按钮的点击事件 | 无 | ================================================ FILE: docs/poptip.md ================================================ # Poptip 气泡提示 点击/鼠标移入元素,弹出气泡式的卡片浮层。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Poptip()` ## 何时使用 - 当目标元素有进一步的描述和相关操作时,可以收纳到卡片中,根据用户的操作行为进行展现。 - 和`Tooltip` 类似,具有很多相同配置,不同点是 `Poptip` 以卡片的形式承载了更多的内容,比如链接、表格、按钮等。 - `Poptip `还 `confirm` 确认框,与 `Modal`不同的是,它会出现在就近元素,相对轻量。 ## 代码示例 基础用法 - 支持三种触发方式:鼠标悬停、点击、聚焦。默认是点击。 ```html ``` 位置 - 组件提供了12个不同的方向显示`Poptip`,具体配置可查看`API`。 ```html








``` 从浮层内关闭 - 通过 config 方法提供的`visible` api 来控制提示框的显示和隐藏。 ```html Click 激活 ``` 禁用提示 - 通过设置属性 `disabled="true"` 禁止显示提示框 ```html ``` 嵌套复杂内容 - 实现复杂的内容。 ```html ``` 自动换行 - 设置属性 `word-wrap`,当超出宽度后,文本将自动换行,并两端对齐。 ```html ``` 确认框 - 通过设置属性`confirm`开启确认框模式。确认框只会以 click 的形式激活,并且只会显示 title 的内容,忽略 content。 ```html ```

Attributes

### Poptip | 属性 | 说明 | 默认值 | | :-------------- | :----------------------------------------------------------- | :------- | | trigger | 触发方式,可选值为`hover`(悬停)`click`(点击)`focus`(聚焦),在 confirm 模式下,只有 click 有效 | click | | title | 显示的标题 | - | | content | 显示的正文内容,只在非 confirm 模式下有效- | - | | placement | 提示框出现的位置,可选值为`top``top-start``top-end``bottom``bottom-start``bottom-end``left``left-start``left-end``right``right-start``right-end`,支持自动识别top | top | | width | 宽度,最小宽度为 150px,在 confirm 模式下,默认最大宽度为 300px | - | | confirm | 是否开启对话框模式 | false | | disabled | 是否禁用 | false | | ok-text | 确定按钮的文字,只在 confirm 模式下有效 | 确定 | | cancel-text | 取消按钮的文字,只在 confirm 模式下有效 | 取消 | | padding | 自定义间距值 | 8px 16px | | offset | 出现位置的偏移量 | 0 | | visible `1.4.0` | 提示框是否显示或隐藏 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------- | ------ | | el | 配置当前选定的 poptip,必须是选择器名称或者元素名 | String | 该方法返回以下三个值: - `title` - `content` - `disabled` - `visible` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ---------------- | ------------------------------ | ----------------- | ------ | | title | 响应式设置提示框标题 | String \| Number | - | | content | 响应式设置提示框的内容 | String \| Number | - | | disabled `1.4.0` | 响应式设置提示框是否禁用 | Boolean | false | | visible `1.4.0` | 响应式设置提示框是否显示和隐藏 | Boolean | false | | events | 非响应式API,添加提示框的事件 | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------------------- | :-------------------------------------- | :------- | | onPopperShow `1.4.0` | 在提示框显示时触发 | 无 | | onPopperHide `1.4.0` | 在提示框消失时触发 | 无 | | onOK | 点击确定的回调,只在 confirm 模式下有效 | 无 | | onCancel | 点击取消的回调,只在 confirm 模式下有效 | 无 | ================================================ FILE: docs/progress.md ================================================ # Progress 进度条 用于展示操作进度,告知用户当前状态和预期。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Progress()` ## 何时使用 - 在操作需要较长时间才能完成时,为用户显示该操作的当前进度和状态。 - 当一个操作会打断当前界面,或者需要在后台运行,且耗时可能超过2秒时; - 当需要显示一个操作完成的百分比时。 ## 代码示例 - 基本用法 标准的进度条。 ```html ``` - 百分比内显 设置属性 `text-inside="true"` 可以将百分比显示在进度条内部。 需要通过属性 `stroke-width` 设置一个足够的高度。 ```html ``` - 渐变色 设置属性 `stroke-color` 为数组时,可以显示为渐变色。 数组只能设置为两项。 ```html ``` - 分段进度条 标准的分段进度条。 ```html ```

Attributes

### Progress | 属性 | 说明 | 默认值 | | ------------------ | ------------------------------------------------------------ | ------ | | percent | 百分比 | 0 | | status | 状态,可选值为`normal`、`active`、`wrong`、`success`、`warning` | normal | | stroke-width | 进度条的线宽,单位 px | 10 | | stroke-color | 进度条的颜色,传入格式为数组,显示为渐变色 | - | | show-text | 隐藏数值或状态图标 | false | | success-percent | 已完成的分段百分比 | 0 | | text-inside | 百分比是否置于进度条内 | false | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 progress,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `percent` - `successPercent` | 返回值 | 说明 | 类型 | 默认值 | | -------------- | ---------------------------------- | ------ | ------ | | percent | 响应式设置或更新进度条百分比 | Number | - | | successPercent | 响应式设置或更新已完成的分段百分比 | Number | - | ================================================ FILE: docs/radio.md ================================================ # Radio 单选框 单选框。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Radio()` ## 何时使用 - 用于在多个备选项中选中单个状态。 - 和 Select 的区别是,Radio 所有选项默认可见,方便用户在比较中选择,因此选项不宜过多。 ## 代码示例 单独使用 - 最简单的用法。 ```html Radio ``` 组合使用 - 使用`r-radio-group`实现一组互斥的选项组。在组合使用时,`radio` 使用 `label` 来自动判断。每个 radio 的内容可以自定义。 - 设置属性 `icon` 可以添加前缀图标 ```html Apple Android Windows 金斑蝶 爪哇犀牛 印度黑羚 ``` 不可用 - 通过设置`disabled`属性来禁用单选框。 ```html Radio 金斑蝶 爪哇犀牛 印度黑羚 ``` 垂直 - 设置属性 `direction="vertical"` 可以垂直显示,按钮样式下无效。 ```html Apple Android Windows ``` 按钮样式 - 组合使用时可以设置属性`type`为 button 来应用按钮的样式。 ```html 北京 上海 深圳 杭州 北京 上海 深圳 杭州 北京 上海 深圳 杭州 ``` 填底的按钮样式 - 设置属性 `button-style` 为 `solid` 可显示为实色填底的单选按钮样式。 ```html 北京 上海 深圳 杭州 北京 上海 深圳 杭州 ``` 显示边框 - radio 设置属性 `type="border"` 可以显示边框。 ```html 金斑蝶 爪哇犀牛 印度黑羚 ``` 尺寸 - 通过设置属性`size`为`large`或`small`将按钮样式设置为大和小尺寸,不设置为默认(中)尺寸。 ```html 北京 上海 深圳 杭州 北京 上海 深圳 杭州 北京 上海 深圳 杭州 ```

Attributes

### Radio | 属性 | 说明 | 默认值 | | :------- | :----------------------------------------------------------- | :----- | | checked | 单个是否选中 | false | | label | 只在组合使用时有效。指定当前选项的 value 值,组合会自动判断当前选择的项目 | - | | disabled | 是否禁用当前项 | false | | size | 单选框的尺寸,可选值为 `large`,`small` 或者不设置 | - | | border | 是否显示边框 | false | | icon | 设置前缀图标 | - | ### RadioGroup | 属性 | 说明 | 默认值 | | :----------- | :------------------------------------------------- | :----- | | value | 指定当前选中的项目数据 | - | | type | 可选值为 button 或不填,为 button 时使用按钮样式 | - | | button-style | 按钮样式,可选值为 solid | - | | size | 单选框的尺寸,可选值为 `large`,`small` 或者不设置 | - | | direction | 是否垂直排列,按钮样式下无效,可选值为 `vertical` | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 radio,必须是选择器名称或者元素名 | String | 该方法返回以下三个值: - `checked` - `value` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------- | ----------------------------------------- | -------- | ------ | | checked | 响应式设置单个是否选中 | Boolean | - | | value | 响应式设置 radio-group 当前选中的项目数据 | String | - | | events | 非响应式API,添加 Radio 的事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :----------------------------------------------------------- | :-------------------------------------- | | onChange | 在选项状态发生改变时触发,当选中的配置目标是 radio-group 时,则返回一个对象,为当前选中的项,如果是单个 radio 则返回当前选中状态 | (state: boolean \| item:object) => void | ================================================ FILE: docs/result.md ================================================ # Result 结果 用于反馈一系列操作任务的处理结果。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Result()`。 > > 该元素标签能够添加额外的子元素节点作为内容部分,并自动追加到指定的内部节点上,且额外添加的所有节点必须只能具有一个父元素包裹 ## 何时使用 - 当有重要操作需告知用户处理结果,且反馈内容较为复杂时使用。 ## 代码示例 Success - 成功的结果 ```html ``` Info - 展示处理结果。 ```html ``` Warning - 警告类型的结果。 ```html ``` Error - 复杂的错误反馈。 - 在 `r-result` 标签内部添加节点时,有且只能有一个子元素,所以需要用一个父级盒子包裹内容 ```html

您提交的内容有以下错误:

您的帐户已被冻结。 立即解冻>
您的帐户还没有资格申请。 申请解锁>
``` 403 - 你没有此页面的访问权限。 ```html ``` 404 - 此页面未找到。 ```html ``` 500 - 服务器发生了错误。 ```html ``` 自定义图标 - 自定义 icon。 ```html ```

Attributes

### Result | 属性 | 说明 | 默认值 | | -------- | ------------------------------------------------------------ | ------ | | status | 结果的状态,决定图标和颜色。可选值为 `success`、`error`、`info` 、 `warning` 、 `404`、`403`、 `500` | info | | title | 标题文字 | - | | subtitle | 结果描述 | - | | extra | 操作区,建议放置按钮组 | - | | icon | 自定义图标 | - | ================================================ FILE: docs/skeleton.md ================================================ # Skeleton 骨架屏 在需要等待加载内容的位置提供一个占位图形组合。 >注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Skeleton()` ## 何时使用 - 网络较慢,需要长时间等待加载处理的情况下。 - 图文信息内容较多的列表/卡片中。 - 只在第一次加载数据的时候使用。 - 可以被 Spin 完全代替,但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验。 ## 代码示例 基础用法 - 最简单的占位效果。 ```html ``` 复杂组合 - 带有头像占位图的组合。 ```html ``` 动画效果 - 显示动画效果。 ```html ``` 自定义段落占位图的宽度 - 设置段落占位图的宽度,若为数组时则为对应的每行宽度,反之则是最后一行的宽度 ```html ``` 加载占位图 - 配合其他元素使用 ```html

Vue.js, the progressive javascript framework

An incrementally adoptable ecosystem that scales between a library and a full-featured framework. Blazing Fast Virtual DOM Minimal Optimization Efforts

```

Attributes

### Skeleton | 属性 | 说明 | 默认值 | | --------------- | ------------------------------------------------------------ | ------ | | active | 是否展示动画效果 | false | | avatar | 是否显示头像占位图 | false | | paragraph | 是否显示段落占位图 | true | | title | 是否显示标题占位图 | true | | title-width | 设置标题占位图的宽度 | - | | paragraph-rows | 设置段落占位图的行数 | - | | paragraph-width | 设置段落占位图的宽度,若为数组时则为对应的每行宽度,反之则是首行的宽度 | - | | avatar-size | 设置头像占位图的大小,可选值为 `small`、`large` | large | | avatar-shape | 指定头像的形状,可选值为 `circle`、`square` | circle | ================================================ FILE: docs/spin.md ================================================ # Spin 加载中 用于页面和区块的加载中状态。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Spin()` ## 何时使用 页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。 ## 代码示例 基础用法 - 最简单使用 Spin 的方法。 ```html ``` 各种尺寸 - 通过设置`size`属性为`large`和`small`将 Spin 设置为大和小尺寸,不设置为默认(中)尺寸。 ```html
``` 居中固定 - 设置属性 `fix` 在容器内部垂直居中固定,需要父级有`relative`或`absolute`。 ```html
``` 自定义内容 - 自定义 Spin 的内容,可以是简单的文字,也可以是很复杂的动画。 ```html
加载中...
Loading...
``` 状态切换 - 控制 Spin 组件的显示和消失。 ```html

登金陵凤凰台

李白

凤凰台上凤凰游,凤去台空江自流。

吴宫花草埋幽径,晋代衣冠成古丘。

三山半落青天外,二水中分白鹭洲。

总为浮云能蔽日,长安不见使人愁。


切换显示状态: ``` 整页加载 - 使用Spin提供的 `show` 和 `hide` 方法可以全局加载和隐藏。 ```html ```

Attributes

### Spin | 属性 | 说明 | 默认值 | | :--- | :------------------------------------------- | :----- | | size | Spin尺寸,可选值为`large`和`small`或者不设置 | - | | fix | 是否固定,需要父级有`relative`或`absolute` | - | ================================================ FILE: docs/steps.md ================================================ # Steps 步骤条 引导用户按照流程完成任务的导航条。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Steps()` ## 何时使用 - 当任务复杂或者存在先后关系时,将其分解成一系列步骤,从而简化任务。 ## 代码示例 基础用法 - 基本用法,组件会根据`current`自动判断各步骤状态。 ```html ``` 迷你版 - 设置属性`size`为`small`启用迷你版。 ```html ``` 带图标的步骤条 - 通过设置`r-step`的`icon`属性可以自定义图标。 ```html ``` 切换步骤 - 通常配合内容及按钮使用,表示一个流程的处理进度。 ```html
``` 垂直方向 - 设置属性`direction`为`vertical`在垂直方向展示。 ```html ``` 步骤运行错误 设置`r-steps`的属性`status`为`error`指定当前步骤状态。 ```html ```

Attributes

### Steps 整体步骤条 | 属性 | 说明 | 默认值 | | :-------- | :----------------------------------------------------------- | :--------- | | current | 当前步骤,从 0 开始计数 | 0 | | status | 当前步骤的状态,可选值为`wait`、`process`、`finish`、`error` | process | | size | 步骤条的尺寸,可选值为`small`或者不写 | - | | direction | 步骤条的方向,可选值为`horizontal`(水平)或`vertical`(垂直) | horizontal | ### Step 子项步骤 | 属性 | 说明 | 默认值 | | :------ | :----------------------------------------------------------- | :------ | | status | 步骤的状态,可选值为`wait`、`process`、`finish`、`error`,不设置时自动判断 | process | | title | 标题 | - | | content | 步骤的详细描述,可选 | - | | icon | 步骤的图标,可选 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 steps,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `current` - `status` - `title` - `content` - `itemStatus` | 返回值 | 说明 | 类型 | 默认值 | | ---------- | ------------------------------------------------------------ | ------------- | ------- | | current | 响应式设置或更新当前步骤 | Number | 0 | | status | 响应式设置或更新当前步骤的状态,可选值为`wait`、`process`、`finish`、`error` | String | process | | title | 响应式设置或更新 title | String | - | | content | 响应式设置或更新 content | String | - | | itemStatus | 响应式设置或更新每一个子项步骤的状态 | Array | - | ================================================ FILE: docs/switch.md ================================================ # Switch 开关 开关选择器 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Switch()` ## 何时使用 - 需要表示开关状态/两种状态之间的切换时 - 和 `checkbox`的区别是,切换 `switch` 会直接触发状态改变,而 `checkbox` 一般用于状态标记,需要和提交操作配合 ## 代码示例 基本 - 基本用法,状态切换时会触发事件。 ```html ``` 尺寸 - 设置`size`为 `large` 或 `small` 使用大号和小号的开关。 ```html ``` - 文字和图标 设置属性 `open` 和 `close` 自定义切换状态后显示的内容,建议如果使用2个汉字,将开关尺寸设置为 large。 ```html
``` 不可用 - 设置属性 `disabled="true"` 禁用开关 ```html ``` 加载中 - 设置属性 `loading="true"` 标识开关操作仍在执行中。 ```html ``` 自定义颜色 - 设置属性 `true-color` 和 `false-color` 可以自定义背景色。 ```html ```

Attributes

### Switch | 属性 | 说明 | 默认值 | | -------------- | ------------------------------------------------------------ | ------ | | checked | 指定当前是否选中 | false | | size | 开关的尺寸,可选值为`large`、`small`、`default`或者不写。建议开关如果使用了2个汉字的文字,使用 large。 | default | | disabled | 禁用开关 | false | | true-color | 自定义打开时的背景色 | - | | false-color | 自定义关闭时的背景色 | - | | loading | 加载中的开关 | false | | open | 自定义显示打开时的内容 | - | | close | 自定义显示关闭时的内容 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | --------------------------------------------------- | ------ | | el | 配置当前选定的 carousel,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `checked` - `disabled` - `loading` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | -------- | -------------------------------- | -------- | ------ | | checked | 响应式设置或更新当前是否选中状态 | Boolean | - | | disabled | 响应式设置或更新禁用开关状态 | Boolean | - | | loading | 响应式设置或更新加载中的开关状态 | Boolean | - | | events | 非响应式API,添加开关事件 | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :----------------------------- | :------------------------- | | onChange | 开关变化时触发,返回当前的状态 | (checked: boolean) => void | ================================================ FILE: docs/tabs.md ================================================ # Tabs 标签页 选项卡切换组件。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Tabs()` ## 何时使用 - 提供平级的区域将大块内容进行收纳和展现,保持界面整洁。 RabbitUI 依次提供了三级选项卡,分别用于不同的场景。 - 卡片式的页签,提供可关闭的样式,常用于容器顶部。 - 标准线条式页签,用于容器内部的主功能切换,这是最常用的 Tabs。 ## 代码示例 基础用法 - `active-index` 与 `r-tab-pane` 的 `index` 对应,用于标识当前激活的是哪一项,key 值默认从 0 开始,默认激活第一项。可以使用提供的 `config` 方法返回的 `activeIndex` 进行动态改变 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 图标 - 通过设置属性 `icon`,可以显示一个图标。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 迷你型 - 设置属性 `size` 为 `small` 可以显示为迷你型,只在 `type` 为 `line` 时有效。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 禁用 - 禁用某一项。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 卡片样式 - 设置属性 `type` 为 `card` 可以显示卡片样式,常用于容器顶部。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 可关闭 - 通过设置属性 `closable` 可以关闭某一项,仅在 `type` 为 `card` 时有效。 - 当设置了可关闭后,面板的切换将不使用切换动画。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 不使用动画 - 通过设置属性 `animated` 为 `false` 可以禁用动画。 ```html 标签一的内容 标签二的内容 标签三的内容 ``` 其它样式 - 可以根据业务自定义 UI,需要一点额外的样式覆盖。 ```html
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
```

Attributes

### Tabs | 属性 | 说明 | 默认值 | | ---------------- | ------------------------------------------------------------ | ---------- | | active-index | 初始化选中面板的 index | 第一个面板 | | type | 页签的基本样式,可选值为 `line` 和 `card` | line | | size | 尺寸,可选值为 `default` 和 `small`,仅在 `type="line"` 时有效 | default | | closable | 是否可以关闭页签,仅在 `type="card"` 时有效 | false | | animated | 是否使用动画切换 Tabs | true | ### Tabs-pane | 属性 | 说明 | 默认值 | | -------- | ------------------------------------------------------- | ------ | | index | 用于标识当前面板,对应 defaultActiveKey,默认为其索引值 | index | | tab | 选项卡头显示文字 | 空 | | icon | 选项卡图标 | - | | disabled | 是否禁用该选项卡 | false | | closable | 是否可以关闭页签,仅在 `type="card"` 时有效 | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ----------------------------------------------- | ------ | | el | 配置当前选定的 tabs,必须是选择器名称或者元素名 | String | 该方法返回以下两个值: - `activeIndex` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | --------- | ----------------------------- | -------- | ------ | | activeIndex | 响应式设置当前激活面板的 index | String | - | | events | 非响应式API,添加选项卡事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :---------- | :--------------- | :------------------- | | onClick | tab 被点击时触发 | (index: string) => void | | onTabRemove | tab 被关闭时触发 | (index: string) => void | ================================================ FILE: docs/tag.md ================================================ # Tag 标签 进行标记和分类的小标签。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Tag()` ## 何时使用 - 用于标记事物的属性和维度。 - 进行分类。 ## 代码示例 基本用法 - 简单的展示,添加属性`closable="true"`可以关闭标签。 - 点击关闭标签时,可以使用 `onClose` 方法添加回调事件 ```html 标签一 标签二 标签三 ``` 样式类型 - 通过设置 `type` 属性为 `border` 或 `dot` 来选择不同的样式类型。建议有关闭的某些场景下使用 border,图例的场景下使用 dot。 ```html 标签三 标签四 标签一 标签二 ``` 各种颜色 - 多种预设颜色,可自定义颜色。 ```html default primary success error warning magenta red volcano orange gold yellow lime green cyan blue geekblue purple Custom Color

标签一 标签二 标签三 标签四

标签一 标签二 标签三 标签四 ``` 可选择 - 设置属性 `checkable="true"`,可以对标签进行选择,属性 `checked` 控制当前选择状态。 ```html 标签一 标签二 标签三 标签四 ``` 尺寸 - 设置属性 `size` 可以显示不同尺寸的标签。 ```html 默认标签 中号标签 大号标签 ```

Attributes

### Tag | 属性 | 说明 | 默认值 | | :-------- | :----------------------------------------------------------- | :------ | | closable | 标签是否可以关闭 | false | | checkable | 标签是否可以选择 | false | | checked | 标签的选中状态 | true | | type | 标签的样式类型,可选值为 `border`、`dot`或不填 | - | | color | 标签颜色,预设颜色值为`default`、`primary`、`success`、`warning`、`error`、`blue`、`green`、`red`、`yellow`、`pink`、`magenta`、`volcano`、`orange`、`gold`、`lime`、`cyan`、`geekblue`、`purple`,也可以自定义颜色值。 | default | | size | 尺寸,可选值为 large、medium | - | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ---------------------------------------------- | ------ | | el | 配置当前选定的 tag,必须是选择器名称或者元素名 | String | 该方法返回以下值: - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ------ | --------------------------- | -------- | ------ | | events | 非响应式API,添加标签事件, | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :------- | :----------------- | :------------------------- | | onClose | 关闭时触发 | ($this: element) => void | | onChange | 切换选中状态时触发 | (checked: boolean) => void | ================================================ FILE: docs/time.md ================================================ # Time 相对时间 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Time()` 常用于表示几分钟前、几小时前等相对于此时此刻的时间描述。 ## 代码示例 基础用法 - 为属性 `time` 设置一个时间戳或 Date,可自动转为相对于当前的时间。 ```html ``` 自动更新间隔 - 设置自动更新间隔,默认为 60 秒。 ```html ``` 不同类型 - 设置属性 `type` 可以根据情况,设置不同的显示类型。 ```html ``` 锚点 - 设置 `hash` 属性,相对时间可以点击并定位锚点。 ```html ```

Attributes

### Time | 属性 | 说明 | 默认值 | | -------- | -------------------------------------------- | -------- | | time | 需要对比的时间,可以是时间戳或 Date 类型 | - | | type | 类型,可选值为 relative、date 或 datetime | relative | | interval | 自动更新的间隔,单位:秒 | 60 | | hash | 填写该值,点击会定位锚点 | - | ## 改变语言配置 (全局) 在 `NodeJs` 或者 `Webpack` 环境下,要改变全局语言配置,只需调用实例的内置函数 `locale`,并引入 Day.js 的语言文件来自由切换其他语言。 ```js import 'dayjs/locale/de'; // ES 2015 // require('dayjs/locale/de'); // CommonJs const time = new Rabbit.Time(); time.locale('de'); ``` [支持的语言列表](https://github.com/iamkun/dayjs/tree/dev/src/locale) ================================================ FILE: docs/timeline.md ================================================ # Timeline 时间轴 可视化地呈现时间流信息。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Timeline()` ## 何时使用 - 当有一系列信息需按时间排列时,可正序和倒序。 - 需要有一条时间轴进行视觉上的串联时。 ## 代码示例 - 基础用法 最简单定义一个时间轴的用法。 ```html

1976s

第一代苹果问世

1984s

发布麦金塔电脑

2007s

发布 iPhone

2010s

发布 iPad

2011.10.05

史蒂夫·乔布斯去世

``` - 圆圈颜色 圆圈颜色,绿色用于已完成、成功状态,红色表示告警或错误状态,灰色表示当前任务状态停滞或取消,蓝色可表示正在进行或其他默认状态。 ```html 发布1.0版本 发布2.0版本 重大Bug 推迟发布 发布3.0版本 ``` - 最后一个 通过添加属性`pending="true"`来标记最后一个为幽灵节点,标识还未完成。 ```html 2021-04-01 创建服务器网站 2021-04-01 解决了初始化网络问题 2021-04-01 技术人员进行测试 查看更多 ``` - 自定义时间轴点 可根据实际场景⾃定义节点 ```html 发布里程碑版本 发布1.0版本 发布2.0版本 发布3.0版本 ```

Attributes

### Timeline | 属性 | 说明 | 默认值 | | ---------- | ------------------------------ | ------ | | pending | 指定是否最后一个节点为幽灵节点 | - | ### Timeline-item | 属性 | 说明 | 默认值 | | -------- | ------------------------------------------------------------ | ------ | | color | 圆圈颜色,可选值为`blue`、`red`、`green`、`gray`,或自定义色值 | blue | | dot | 自定义时间轴点 | - | ================================================ FILE: docs/tooltip.md ================================================ # Tooltip 文字提示 简单的文字提示气泡框。 > 注意:使用前需要先全局实例化一次该构造函数 `new Rabbit.Tooltip()` ## 何时使用 - 鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。 - 可用来代替系统默认的 ‘title’ 提示,提供一个’按钮/文字/操作’的文案解释。 ## 代码示例 基础用法 - 最简单的用法。 ```html 鼠标经过这段文字时,会显示一个气泡框 ``` 位置 - 组件提供了12个不同的方向显示Tooltip,具体配置可查看API。 ```html








``` 自定义内容 - 如果需要添加带有HTML代码或其他复杂的内容,抑或是需要动态更新内容,请使用组件提供的响应式API渲染 ```html ``` 禁用 - 通过设置属性`disabled`可以禁用文字提示。 ```html ``` 延时 - 通过设置属性`delay`可以延时显示文字提示,单位毫秒。 ```html ``` 主题 - 设置属性 `theme` 可以显示不同的颜色。 - 有多种预设色彩的文字提示样式,用作不同场景使用。 ```html ``` 自动换行 - 设置属性 `max-width`,当超出最大值后,文本将自动换行,并两端对齐。 ```html ```

Attributes

### Tooltip | 属性 | 说明 | 默认值 | | :------------ | :----------------------------------------------------------- | :----- | | content | 显示的内容 | 空 | | placement | 提示框出现的位置,可选值为`top``top-start``top-end``bottom``bottom-start``bottom-end``left``left-start``left-end``right``right-start``right-end`,自动识别 | top | | disabled | 是否禁用提示框 | false | | delay | 延迟显示,单位毫秒 | - | | always | 是否总是可见 | false | | theme `1.1.0` | 背景颜色 | dark | | max-width | 最大宽度,超出最大值后,文本将自动换行,并两端对齐 | - | | offset | 出现位置的偏移量 | 0 | ### Config 方法 配置指定的组件,并提供一些必要的响应式更新DOM内容或其他操作的 API。(并不是每个组件都会有) | 参数 | 说明 | 类型 | | ---- | ------------------------------------------------ | ------ | | el | 配置当前选定的 tooltip,必须是选择器名称或者元素名 | String | 该方法返回以下四个值: - `content` - `disabled` - `always` - `events(options)` | 返回值 | 说明 | 类型 | 默认值 | | ---------------- | ----------------------------- | ---------------- | ------ | | content | 响应式设置或更新提示框的内容 | String \| Number | - | | disabled `1.1.0` | 响应式设置是否禁用提示框 | Boolean | false | | always `1.1.0` | 响应式设置是否总是可见 | Boolean | false | | events | 非响应式API,添加提示框的事件 | Function | - | - `events`的参数 options 为对象,具体说明如下: | 属性 | 说明 | 回调参数 | | :---------------------- | :------------- | :------------------------- | | onVisibleChange `1.1.0` | 显示隐藏的回调 | (visible: boolean) => void | ================================================ FILE: examples/README.md ================================================ # 运行测试 1. 修改config文件夹下的webpack.dev.js里的代码, `plugins` -> `new HtmlWebpackPlugin` -> `template`, 修改其路径 2. 把要测试的组件在main.ts 里将对应的 `xxxTest()` 取消注释 3. 运行`npm run dev` ================================================ FILE: examples/affix/index.html ================================================ Document
固定在最顶部
固定在顶部 50px 的位置
固定在底部 20px 的位置
固定在顶部 100px 的位置
================================================ FILE: examples/affix/index.ts ================================================ import Rabbit from '../../src'; export default function affixTest(): void { const affix = new Rabbit.Affix(); affix.config('#test').events({ onChange: (affixed) => { Rabbit.Message.info(`当前状态:${affixed}`); } }); } ================================================ FILE: examples/alert/index.html ================================================ Document

信息提示的内容,信息提示的内容,信息提示的,信息提示的内容,信息提示的内容。

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

警告提示的内容,警告提示的内容,警告提示的,警告提示的内容,警告提示的内容。

错误提示的内容,错误提示的内容,错误提示的,错误提示的内容,错误提示的内容。

信息提示的内容,信息提示的内容,信息提示的,信息提示的内容,信息提示的内容。

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

警告提示的内容,警告提示的内容,警告提示的,警告提示的内容,警告提示的内容。

错误提示的内容,错误提示的内容,错误提示的,错误提示的内容,错误提示的内容。

自定义图标的内容,自定义图标的内容,自定义图标的内容。

成功提示的内容,成功提示的内容,成功提示的,成功提示的内容,成功提示的内容。

================================================ FILE: examples/alert/index.ts ================================================ import Rabbit from '../../src'; export default function alertTest(): void { const Alert = new Rabbit.Alert(); Alert.config('#test').events({ onClose: (event) => { console.log(event); } }); } ================================================ FILE: examples/avatar/index.html ================================================ Document
U USER U
U Lucy Tom Edward
================================================ FILE: examples/avatar/index.ts ================================================ import Rabbit from '../../src'; export default function avatarTest(): void { new Rabbit.Avatar(); } ================================================ FILE: examples/back-top/index.html ================================================ Document
返回顶端
================================================ FILE: examples/back-top/index.ts ================================================ import Rabbit from '../../src'; export default function backtopTest(): void { new Rabbit.BackTop(); } ================================================ FILE: examples/badge/index.html ================================================ Document





预设:














自定义:


================================================ FILE: examples/badge/index.ts ================================================ import Rabbit from '../../src'; export default function badgeTest(): void { new Rabbit.Badge(); } ================================================ FILE: examples/breadcrumb/index.html ================================================ Document
Home Components Breadcrumb
Breadcrumb
Home Components Breadcrumb Home Components Breadcrumb
================================================ FILE: examples/breadcrumb/index.ts ================================================ import Rabbit from '../../src'; export default function breadcrumbTest(): void { new Rabbit.Breadcrumb(); } ================================================ FILE: examples/button/index.html ================================================ Document






























基本







图标





圆角





尺寸





================================================ FILE: examples/button/index.ts ================================================ // @ts-nocheck import Rabbit from '../../src'; export default function buttonTest(): void { const btn = new Rabbit.Button(); window.handleLoad = () => { btn.config('#clickMe').loading = true; setTimeout(() => { btn.config('#clickMe').loading = false; }, 3000); }; } ================================================ FILE: examples/card/index.html ================================================ Document

卡片内容 1

卡片内容 2

卡片内容 3

这是没有边框类型的卡片这是没有边框类型的卡片这是没有边框类型的卡片这是没有边框类型的卡片

卡片内容 1

卡片内容 2

卡片内容 3

卡片内容 1

卡片内容 2

卡片内容 3

卡片内容 1

卡片内容 2

卡片内容 3

卡片内容 1

卡片内容 2

卡片内容 3

一个基于TS编写的UI插件库

================================================ FILE: examples/card/index.ts ================================================ import Rabbit from '../../src'; export default function cardTest(): void { const card = new Rabbit.Card(); } ================================================ FILE: examples/carousel/index.html ================================================ Document
================================================ FILE: examples/carousel/index.ts ================================================ import Rabbit from '../../src'; export default function carouselTest(): void { const carousel = new Rabbit.Carousel(); carousel.config('#test').events({ onChange: ([oldValue, value]) => { console.log(`原幻灯片索引: ${oldValue}`, `目前激活索引: ${value}`); }, onClick: (index) => { console.log(index); } }); } ================================================ FILE: examples/checkbox/index.html ================================================ Document
Checkbox
Twitter Facebook Github Snapchat 苹果 西瓜 猕猴桃
Checkbox 苹果 西瓜 猕猴桃
苹果 西瓜 猕猴桃
全选
苹果 西瓜 猕猴桃
================================================ FILE: examples/checkbox/index.ts ================================================ import Rabbit from '../../src'; export default function checkboxTest(): void { const checkbox = new Rabbit.Checkbox(); const checkAll = checkbox.config('#checkAll'); const checkAllGroup = checkbox.config('#checkAllGroup'); checkAll.events({ onChange: (checked: boolean) => { if (checkAll.indeterminate) { checkAllGroup.value = []; checkAll.checked = false; checkAll.indeterminate = false; } else if (checked) { checkAllGroup.value = ['苹果', '西瓜', '猕猴桃']; } else { checkAllGroup.value = []; checkAll.indeterminate = false; } } }); checkAllGroup.events({ onChange: (data: string[]) => { if (data.length === 0) { checkAll.checked = false; checkAll.indeterminate = false; } else if (data.length === 3) { checkAll.checked = true; checkAll.indeterminate = false; } else if (data.length && data.length < 3) { checkAll.indeterminate = true; } } }); } ================================================ FILE: examples/circle/index.html ================================================ Document
80%
0%

42,001,776

消费人群规模

总占人数 75%
80%
================================================ FILE: examples/circle/index.ts ================================================ import Rabbit from '../../src'; export default function circleTest(): void { const circle = new Rabbit.Circle(); const test = circle.config('#test'); const percentText = document.querySelector('#percentText')!; let percent = 0; // @ts-ignore window.add = () => { if (percent >= 100) { return false; } percent += 10; percent == 100 ? (test.strokeColor = '#5cb85c') : ''; test.percent = percent; percentText.textContent = `${percent}%`; }; // @ts-ignore window.minus = () => { if (percent <= 0) { return false; } percent -= 10; test.percent = percent; test.strokeColor = '#1890ff'; percentText.textContent = `${percent}%`; }; } ================================================ FILE: examples/collapse/index.html ================================================ Document

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

A dog is a type of domesticated animal.Known for its loyalty and faithfulness,it can be found as a welcome guest in many households across the world.

================================================ FILE: examples/collapse/index.ts ================================================ import Rabbit from '../../src'; export default function collapseTest(): void { const collapse = new Rabbit.Collapse(); collapse.config('#demoCollapse').events({ onChange: (index) => { console.log(index); } }); } ================================================ FILE: examples/count-down/index.html ================================================ Document
================================================ FILE: examples/count-down/index.ts ================================================ import Rabbit from '../../src'; export default function countDownTest(): void { const countDown = new Rabbit.CountDown(); const date = new Date(); const YYMMDD = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`; const h = date.getHours(); const mm = date.getMinutes(); // 'YY/MM/DD hh:mm:ss' countDown.config('#test1').endTime = `${YYMMDD} ${h + 1}:00:00`; countDown.config('#test2').endTime = `${YYMMDD} ${h}:${mm + 1}:00`; countDown.config('#test2').events({ onStop: (stop) => { if (stop) alert('倒计时结束!'); } }); } ================================================ FILE: examples/divider/index.html ================================================ Document

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

标题居中

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

文本 链接 链接
左侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

标题居中

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

右侧标题

从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事从前有座山山里有座庙,庙里有个老和尚给小和尚讲故事

================================================ FILE: examples/divider/index.ts ================================================ import Rabbit from '../../src'; export default function dividerTest(): void { const divider = new Rabbit.Divider(); } ================================================ FILE: examples/drawer/index.html ================================================ Document

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

Some contents...

这是第二层抽屉。

================================================ FILE: examples/drawer/index.ts ================================================ import Rabbit from '../../src'; export default function drawerTest(): void { const drawer = new Rabbit.Drawer(); let f1 = false; // @ts-ignore window.Op1 = () => { f1 === false ? (f1 = !f1) : f1; drawer.config('#test1').visable = f1; }; drawer.config('#test1').events({ onClose: () => { console.log('关闭抽屉'); } }); let top = false; // @ts-ignore window.handleTop = () => { top === false ? (top = !top) : top; drawer.config('#test2').visable = top; }; let left = false; // @ts-ignore window.handleLeft = () => { left === false ? (left = !left) : left; drawer.config('#test3').visable = left; }; let bottom = false; // @ts-ignore window.handleBottom = () => { bottom === false ? (bottom = !bottom) : bottom; drawer.config('#test4').visable = bottom; }; let right = false; // @ts-ignore window.handleRight = () => { right === false ? (right = !right) : right; drawer.config('#test5').visable = right; }; let inner = false; // @ts-ignore window.handleOpenInner = () => { inner === false ? (inner = !inner) : inner; drawer.config('#test6').visable = inner; }; let first = false; // @ts-ignore window.multilayerDrawer = () => { first === false ? (first = !first) : first; drawer.config('#test7').visable = first; }; let second = false; // @ts-ignore window.secondDrawer = () => { second === false ? (second = !second) : second; drawer.config('#test8').visable = second; }; } ================================================ FILE: examples/dropdown/index.html ================================================ Document
下拉菜单 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦
hover 触发 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 click 触发 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 右键触发 返回 删除 custom 触发

常用于各种自定义下拉内容的场景。

菜单(左) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 菜单(居中) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦 菜单(右) 老干妈 炸酱面 葱油饼 黄金糕 冰糖葫芦
北京小吃 豆汁儿 炸酱面 驴打滚 北京烤鸭 壁炉烤鸭 焖炉烤鸭 冰糖葫芦
================================================ FILE: examples/dropdown/index.ts ================================================ import Rabbit from '../../src'; export default function dropdownTest(): void { const dropdown = new Rabbit.Dropdown(); dropdown.config('#test').events({ onClick: (key) => { console.log(key); }, onVisibleChange: (visible) => { console.log(visible); } }); // @ts-ignore window.handleOpen = () => (dropdown.config('#testCustom').visible = true); // @ts-ignore window.handleClose = () => (dropdown.config('#testCustom').visible = false); } ================================================ FILE: examples/empty/index.html ================================================ Document
================================================ FILE: examples/empty/index.ts ================================================ import Rabbit from '../../src'; export default function emptyTest(): void { const empty = new Rabbit.Empty(); } ================================================ FILE: examples/input-number/index.html ================================================ Document
================================================ FILE: examples/input-number/index.ts ================================================ import Rabbit from '../../src'; export default function inputNumberTest(): void { const inputNumber = new Rabbit.InputNumber(); inputNumber.config('#test1').events({ onChange: (value) => { console.log('changed!', value); } }); let flag = true; // @ts-ignore window.handleClick = () => { flag ? (flag = !flag) : (flag = true); inputNumber.config('#test2').disabled = flag; }; } ================================================ FILE: examples/jumbotron/index.html ================================================ Document

它使用实用程序类来排版和空格,以便在较大的容器中分隔内容。

================================================ FILE: examples/jumbotron/index.ts ================================================ import Rabbit from '../../src'; export default function jumbotronTest(): void { const jumbotron = new Rabbit.Jumbotron(); } ================================================ FILE: examples/loading-bar/index.html ================================================ Document
================================================ FILE: examples/loading-bar/index.ts ================================================ /* eslint-disable @typescript-eslint/ban-ts-comment */ import Rabbit from '../../src'; export default function loadingBarTest(): void { // Rabbit.Loading.config({ // height: 5, // color: '#5cb85c', // failedColor: '#f0ad4e', // duration: 1000, // }); // @ts-ignore window.Start = () => { Rabbit.Loading.start(); }; // @ts-ignore window.Finish = () => { Rabbit.Loading.finish(); }; // @ts-ignore window._Error = () => { Rabbit.Loading.error(); }; } ================================================ FILE: examples/main.ts ================================================ import affixTest from './affix'; import alertTest from './alert'; import avatarTest from './avatar'; import backtopTest from './back-top'; import badgeTest from './badge'; import breadcrumbTest from './breadcrumb'; import buttonTest from './button'; import cardTest from './card'; import carouselTest from './carousel'; import checkboxTest from './checkbox'; import circleTest from './circle'; import collapseTest from './collapse'; import countDownTest from './count-down'; import dividerTest from './divider'; import drawerTest from './drawer'; import dropdownTest from './dropdown'; import emptyTest from './empty'; import inputNumberTest from './input-number'; import jumbotronTest from './jumbotron'; import loadingBarTest from './loading-bar'; import messageTest from './message'; import poptipTest from './poptip'; import modalTest from './modal'; import miniModalTest from './mini-modal'; import noticeTest from './notice'; import pageHeaderTest from './page-header'; import progressTest from './progress'; import radioTest from './radio'; import resultTest from './result'; import skeletonTest from './skeleton'; import spinTest from './spin'; import stepsTest from './steps'; import switchTest from './switch'; import tabsTest from './tabs'; import tagTest from './tag'; import timeTest from './time'; import timelineTest from './timeline'; import tooltipTest from './tooltip'; import '../src/styles/index.less'; // affixTest(); // alertTest(); // avatarTest(); // backtopTest(); // badgeTest(); // breadcrumbTest(); // buttonTest(); // cardTest(); // carouselTest(); // checkboxTest(); // circleTest(); // collapseTest(); // countDownTest(); // dividerTest(); // drawerTest(); // dropdownTest(); // emptyTest(); // inputNumberTest(); // jumbotronTest(); // loadingBarTest(); messageTest(); // modalTest(); // miniModalTest(); // noticeTest(); // pageHeaderTest(); // poptipTest(); // progressTest(); // radioTest(); // resultTest(); // skeletonTest(); // stepsTest(); // spinTest(); // switchTest(); // tabsTest(); // tagTest(); // timeTest(); // timelineTest(); // tooltipTest(); ================================================ FILE: examples/message/index.html ================================================ Document

带背景色

================================================ FILE: examples/message/index.ts ================================================ // @ts-nocheck import Rabbit from '../../src'; export default function messaest(): void { // 全局配置 // Rabbit.Message.config({ // duration: 8, // top: 254 // }); window.info = () => { Rabbit.Message.info('这是一条普通的提示'); }; window.success = () => { Rabbit.Message.success('这是一条成功的提示'); }; window.warning = () => { Rabbit.Message.warning('这是一条警告的提示'); }; window.error = () => { Rabbit.Message.error('这是一条错误的提示'); }; window.background = (type: string) => { Rabbit.Message[type]({ content: '这是一条带背景色的通知', background: true, duration: 5 }); }; window.loading = () => { Rabbit.Message.loading({ content: '正在加载中...', duration: 0, key: 'msgkey' }); setTimeout(() => Rabbit.Message.destroy('msgkey'), 5000); }; window.promise = () => { Rabbit.Message.loading('正在加载中...').then(() => { Rabbit.Message.success('加载成功!').then(() => { Rabbit.Message.info('加载成功后的提示'); }); }); }; window.time = () => { Rabbit.Message.success({ content: '这是成功的提示信息,我将在10秒内消失', duration: 10 }); }; window.closable = () => { Rabbit.Message.info({ content: '可手动关闭的提示', duration: 8, closable: true }); }; window.useHTML = () => { Rabbit.Message.info({ content: '这是 HTML 片段', dangerouslyUseHTMLString: true }); }; } ================================================ FILE: examples/mini-modal/index.html ================================================ Document
================================================ FILE: examples/mini-modal/index.ts ================================================ import Rabbit from '../../src'; export default function miniModalTest(): void { const title = '对话框标题'; const content = '这是一段对话框的内容'; // @ts-ignore window.instance = (type: string) => { switch (type) { case 'info': Rabbit.MiniModal.info({ title, content }); break; case 'success': Rabbit.MiniModal.success({ title, content }); break; case 'warning': Rabbit.MiniModal.warning({ title, content }); break; case 'error': Rabbit.MiniModal.error({ title, content }); break; } }; // @ts-ignore window.confirm = () => { Rabbit.MiniModal.confirm({ title: '确认对话框标题', content: '

这是一段自定义的内容...

这是一段自定义的内容...

', dangerouslyUseHTMLString: true, onOk: () => { Rabbit.Message.info('点击了确定'); }, onCancel: () => { Rabbit.Message.info('点击了取消'); } }); }; // @ts-ignore window.custom = () => { Rabbit.MiniModal.confirm({ title: '确认对话框标题', content: '

这是一段自定义的内容...

这是一段自定义的内容...

', okText: 'OK', cancelText: 'Cancel', dangerouslyUseHTMLString: true }); }; // @ts-ignore window.async = () => { Rabbit.MiniModal.confirm({ title: '确认对话框标题', content: '

对话框将在 2秒 后关闭

', loading: true, dangerouslyUseHTMLString: true, onOk: () => { setTimeout(() => { Rabbit.MiniModal.remove(); Rabbit.Message.info('异步关闭了对话框'); }, 2000); } }); }; } ================================================ FILE: examples/modal/index.html ================================================ Document

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

Some Content...

Some Content...

Some Content...

自定义宽度,单位 px,默认 520px。

对话框的宽度是响应式的,当屏幕尺寸小于 768px 时,宽度会变为自动 auto

点击确定后,对话框将在 2秒 后关闭。

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

对话框内容

这是一个全屏的对话框

================================================ FILE: examples/modal/index.ts ================================================ import Rabbit from '../../src'; export default function modalTest(): void { const modal = new Rabbit.Modal(); let timer: any; // @ts-ignore window.handleModal1 = () => { modal.config('#m1').visible = true; modal.config('#m1').events({ onOk: () => { Rabbit.Message.info('点击了确定'); }, onCancel: () => { Rabbit.Message.info('点击了取消'); } }); }; // @ts-ignore window.handleModal2 = () => { modal.config('#m2').visible = true; }; // @ts-ignore window.handleModal3 = () => { modal.config('#m3').visible = true; }; // @ts-ignore window.handleModal4 = () => { modal.config('#m4').visible = true; }; // @ts-ignore window.handleModal5 = () => { modal.config('#m5').visible = true; modal.config('#m5').events({ onOk: () => { timer = setTimeout(() => { modal.config('#m5').visible = false; }, 2000); }, onCancel: () => { clearTimeout(timer); } }); }; // @ts-ignore window.handleModal6 = () => { modal.config('#m6').visible = true; }; // @ts-ignore window.handleModal7 = () => { modal.config('#m7').visible = true; }; // @ts-ignore window.handleModal8 = () => { modal.config('#m8').visible = true; }; // @ts-ignore window.handleModal9 = () => { modal.config('#m9').visible = true; }; // @ts-ignore window.handleModal10 = () => { modal.config('#m10').visible = true; }; } ================================================ FILE: examples/notice/index.html ================================================ Document

带描述信息



仅标题

================================================ FILE: examples/notice/index.ts ================================================ //@ts-nocheck import Rabbit from '../../src'; export default function noticeTest(): void { // Rabbit.Notice.config({ // top: 50, // duration: 3 // }); window.normal = () => { Rabbit.Notice.open({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述', onClick: () => { console.log('Notification Clicked!'); }, onClose: () => { console.log('Notification Close!'); } }); }; window.onlyTitle = () => { Rabbit.Notice.open({ title: '这是通知标题', closable: false }); }; window.getInfo = () => { Rabbit.Notice.info({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述' }); }; window.getSuccess = () => { Rabbit.Notice.success({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述' }); }; window.getWarning = () => { Rabbit.Notice.warning({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述' }); }; window.getError = () => { Rabbit.Notice.error({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述' }); }; window.getInfoNodesc = () => { Rabbit.Notice.info({ title: '这是通知标题' }); }; window.getSuccessNodesc = () => { Rabbit.Notice.success({ title: '这是通知标题' }); }; window.getWarningNodesc = () => { Rabbit.Notice.warning({ title: '这是通知标题' }); }; window.getErrorNodesc = () => { Rabbit.Notice.error({ title: '这是通知标题' }); }; window.multipleNotice = () => { Rabbit.Notice.open({ title: '行程已发布', desc: '您的行程订单已发布,正在等待待车主接单...' }).then(() => { Rabbit.Notice.info({ title: '已有车主接单啦!', desc: '你发布的行程订单已有车主接单了,请提前付款以免被取消订单!' }).then(() => { Rabbit.Notice.success({ title: '费用支付成功', desc: '您的行程将在2021.9.9 12:30 开始' }); }); }); }; window.customTime = () => { Rabbit.Notice.open({ title: '这是通知标题', desc: '这条通知不会自动关闭,需要点击关闭按钮才可以关闭。', duration: 0 }); }; window.customStyle = () => { Rabbit.Notice.open({ title: '这是通知标题', desc: '这里是通知的描述,这里是通知的描述这里,是通知的描述,这里是通知的描述,这里是通知的描述,这里是通知的描述', style: 'width: 600px; background: #ccc;' }); }; window.useHTML = () => { Rabbit.Notice.open({ title: 'HTML片段', // eslint-disable-next-line quotes desc: `这是 HTML 片段`, dangerouslyUseHTMLString: true }); }; } ================================================ FILE: examples/page-header/index.html ================================================ Document
================================================ FILE: examples/page-header/index.ts ================================================ import Rabbit from '../../src'; export default function pageHeaderTest(): void { const pageHeader = new Rabbit.PageHeader(); pageHeader.config('#a').events({ onBack: () => { console.log('点击返回'); } }); } ================================================ FILE: examples/poptip/index.html ================================================ Document








================================================ FILE: examples/poptip/index.ts ================================================ import Rabbit from '../../src'; export default function poptipTest(): void { const poptip = new Rabbit.Poptip(); poptip.config('#test1').events({ onPopperShow: () => { console.log('poptip show'); }, onPopperHide: () => { console.log('poptip hide'); } }); // @ts-ignore window.handleChange = (value: string) => { poptip.config('#testInput').content = value; }; // @ts-ignore window.handleClose = () => { poptip.config('#test2').visible = false; }; const table = `
日期 姓名 地址
2021-01-17 山本先生 日本福冈县福冈市中央区樱坂
2021-01-17 山本先生 日本福冈县福冈市中央区樱坂
2021-01-17 山本先生 日本福冈县福冈市中央区樱坂
`; poptip.config('#test3').content = table; poptip.config('#test4').events({ onOk: () => { Rabbit.Message.info('点击了确定'); }, onCancel: () => { Rabbit.Message.info('点击了取消'); } }); } ================================================ FILE: examples/progress/index.html ================================================ Document
================================================ FILE: examples/progress/index.ts ================================================ import Rabbit from '../../src'; export default function progressTest(): void { const progress = new Rabbit.Progress(); // progress.config('#a').percent = 80; // progress.config('#a').successPercent = 60; } ================================================ FILE: examples/radio/index.html ================================================ Document
Radio
Apple Android Windows 金斑蝶 爪哇犀牛 印度黑羚
Radio
金斑蝶 爪哇犀牛 印度黑羚
Apple Android Windows
北京 上海 深圳 杭州

北京 上海 深圳 杭州

北京 上海 深圳 杭州
北京 上海 深圳 杭州 北京 上海 深圳 杭州
金斑蝶 爪哇犀牛 印度黑羚
北京 上海 深圳 杭州

北京 上海 深圳 杭州

北京 上海 深圳 杭州
================================================ FILE: examples/radio/index.ts ================================================ import Rabbit from '../../src'; export default function radioTest(): void { const radio = new Rabbit.Radio(); // radio.config('#a').events({ // onChange: (item) => { // console.log(item); // } // }); // radio.config('#a').value = 'android'; // setTimeout(() => { // radio.config('#a').checked = false; // }, 1500); } ================================================ FILE: examples/result/index.html ================================================ Document

您提交的内容有以下错误:

您的帐户已被冻结。 立即解冻>
您的帐户还没有资格申请。 申请解锁>
================================================ FILE: examples/result/index.ts ================================================ import Rabbit from '../../src'; export default function resultTest(): void { const res = new Rabbit.Result(); } ================================================ FILE: examples/skeleton/index.html ================================================ Document

Vue.js, the progressive javascript framework

An incrementally adoptable ecosystem that scales between a library and a full-featured framework. Blazing Fast Virtual DOM Minimal Optimization Efforts

================================================ FILE: examples/skeleton/index.ts ================================================ import Rabbit from '../../src'; export default function skeletonTest(): void { const skeleton = new Rabbit.Skeleton(); } ================================================ FILE: examples/spin/index.html ================================================ Document
加载中...
Loading...



登金陵凤凰台

李白

凤凰台上凤凰游,凤去台空江自流。

吴宫花草埋幽径,晋代衣冠成古丘。

三山半落青天外,二水中分白鹭洲。

总为浮云能蔽日,长安不见使人愁。


切换显示状态:
================================================ FILE: examples/spin/index.ts ================================================ import Rabbit from '../../src'; export default function spinTest(): void { const spin = new Rabbit.Spin(); const Switch = new Rabbit.Switch(); Switch.config('r-switch').events({ onChange: (checked) => { // @ts-ignore document.querySelector('#abcd').style.display = checked ? 'none' : ''; } }); // @ts-ignore window.handle1 = () => { spin.show(); setTimeout(() => { spin.hide(); }, 3000); }; // @ts-ignore window.handle2 = () => { spin.show({ content: `
Loading...
` }); setTimeout(() => { spin.hide(); }, 3000); }; } ================================================ FILE: examples/steps/index.html ================================================ Document

当前正在进行第


================================================ FILE: examples/steps/index.ts ================================================ import Rabbit from '../../src'; export default function stepsTest(): void { const steps = new Rabbit.Steps(); const targetStep = steps.config('#test'); const showStep = document.querySelector('#step')!; let count = 0; showStep.textContent = `${count + 1}`; // targetStep.itemStatus = ['error', 'error', 'finish', 'process']; // @ts-ignore window.handlClickNext = () => { if (count == 3) { count = 0; } else { count += 1; } targetStep.current = count; showStep.textContent = `${count + 1}`; }; } ================================================ FILE: examples/switch/index.html ================================================ Document


================================================ FILE: examples/switch/index.ts ================================================ import Rabbit from '../../src'; export default function switchTest(): void { const Switch = new Rabbit.Switch(); Switch.config('#test').events({ onChange: (checked) => { Rabbit.Message.info(`开关状态: ${checked}`); } }); let flag = true; // @ts-ignore window.handlClick = () => { flag ? (flag = !flag) : (flag = !flag); Switch.config('#testDis').disabled = flag; }; } ================================================ FILE: examples/tabs/index.html ================================================ Document
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容 标签四的内容 标签五的内容 标签六的内容 标签七的内容 标签八的内容 标签九的内容 标签十的内容 标签十一的内容 标签十二的内容
标签一的内容 标签二的内容 标签三的内容
标签一的内容 标签二的内容 标签三的内容
================================================ FILE: examples/tabs/index.ts ================================================ import Rabbit from '../../src'; export default function tabsTest(): void { const tabs = new Rabbit.Tabs(); tabs.config('#a').events({ onClick: (key) => { console.log(key); } }); // setTimeout(() => { // tabs.config('#a').activeKey = '2'; // }, 1500); } ================================================ FILE: examples/tag/index.html ================================================ Document
标签一 标签二 标签三
标签三 标签四 标签一 标签二
default primary success error warning magenta red volcano orange gold yellow lime green cyan blue geekblue purple Custom Color

标签一 标签二 标签三 标签四

标签一 标签二 标签三 标签四
标签一 标签二 标签三 标签四
默认标签 中号标签 大号标签
================================================ FILE: examples/tag/index.ts ================================================ import Rabbit from '../../src'; export default function tagTest(): void { const tag = new Rabbit.Tag(); tag.config('#demoTag').events({ onChange(checked) { console.log(checked); } }); } ================================================ FILE: examples/time/index.html ================================================ Document



================================================ FILE: examples/time/index.ts ================================================ import Rabbit from '../../src'; // import 'dayjs/locale/af'; export default function timeTest(): void { const time = new Rabbit.Time(); // time.locale('af'); } ================================================ FILE: examples/timeline/index.html ================================================ Document

1976s

第一代苹果问世

1984s

发布麦金塔电脑

2007s

发布 iPhone

2010s

发布 iPad

2011.10.05

史蒂夫·乔布斯去世

发布1.0版本 发布2.0版本 重大Bug 推迟发布 发布3.0版本
2021-04-01 创建服务器网站 2021-04-01 解决了初始化网络问题 2021-04-01 技术人员进行测试 查看更多
发布里程碑版本 发布1.0版本 发布2.0版本 发布3.0版本
================================================ FILE: examples/timeline/index.ts ================================================ import Rabbit from '../../src'; export default function timelineTest(): void { new Rabbit.Timeline(); } ================================================ FILE: examples/tooltip/index.html ================================================ Document
鼠标经过这段文字时,会显示一个气泡框








================================================ FILE: examples/tooltip/index.ts ================================================ import Rabbit from '../../src'; export default function tooltipTest(): void { const tooltip = new Rabbit.Tooltip(); tooltip.config('#test').events({ onVisibleChange: (visable) => { console.log(visable); } }); tooltip.config('#test2').content = '

显示多行信息

可以自定义样式

'; } ================================================ FILE: package.json ================================================ { "name": "rabbit-simple-ui", "version": "1.8.0", "title": "RabbitUI", "description": "A simple UI component library based on JavaScript", "homepage": "www.rabbitui.cn", "keywords": [ "ui", "jsui", "rabbitui", "RabbitUI", "rabbit-simple-ui", "library", "ui-library", "component", "framework", "javascript", "typescript" ], "main": "src/index.ts", "files": [ "dist", "src" ], "scripts": { "dev": "webpack-dev-server --history-api-fallback --config config/webpack.dev.js", "build:dev": "webpack --config config/webpack.dist.dev.js --progress", "build:prod": "webpack --config config/webpack.dist.prod.js --progress", "build": "npm run build:dev && npm run build:prod", "eslint": "eslint src --ext .ts" }, "repository": { "type": "git", "url": "https://github.com/niu-grandpa/rabbit-ui" }, "author": "Ryan John", "license": "MIT", "bugs": { "url": "https://github.com/niu-grandpa/rabbit-ui/issues" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^4.12.0", "@typescript-eslint/parser": "^4.12.0", "autoprefixer": "^8.0.0", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", "compression-webpack-plugin": "^7.0.0", "css-loader": "^5.0.1", "eslint": "^7.17.0", "eslint-config-alloy": "^3.10.0", "file-loader": "^6.2.0", "friendly-errors-webpack-plugin": "^1.7.0", "html-loader": "^1.3.2", "html-webpack-plugin": "^5.0.0-beta.1", "less": "^4.0.0", "less-loader": "^7.1.0", "mini-css-extract-plugin": "^1.3.3", "optimize-css-assets-webpack-plugin": "^5.0.4", "postcss-loader": "^4.1.0", "prettier": "^2.2.1", "style-loader": "^2.0.0", "ts-loader": "^8.0.12", "typescript": "^4.1.3", "uglifyjs-webpack-plugin": "^2.2.0", "url-loader": "^4.1.1", "webpack": "^5.11.0", "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0", "webpack-merge": "^5.7.2" }, "dependencies": { "@popperjs/core": "^2.6.0", "dayjs": "^1.10.4", "vue-router": "^4.0.6" }, "engines": { "node": ">=6.5", "npm": ">=5.5.1", "yarn": ">=1.3.2" }, "browserslist": [ "last 3 Chrome versions", "last 3 Firefox versions", "Safari >= 10", "Explorer >= 10", "Edge >= 12", "iOS >= 10", "Android >= 6" ] } ================================================ FILE: postcss.config.js ================================================ module.exports = { plugins: [require('autoprefixer')] }; ================================================ FILE: prettier.config.js ================================================ // prettier.config.js or .prettierrc.js module.exports = { // 一行最多 100 字符 printWidth: 100, // 使用 4 个空格缩进 tabWidth: 4, // 不使用缩进符,而使用空格 useTabs: false, // 行尾需要有分号 semi: true, // 使用单引号 singleQuote: true, // 对象的 key 仅在必要时用引号 quoteProps: 'as-needed', // 末尾不需要逗号 trailingComma: 'none', // 大括号内的首尾需要空格 bracketSpacing: true, // 每个文件格式化的范围是文件的全部内容 rangeStart: 0, rangeEnd: Infinity, // 不需要写文件开头的 @prettier requirePragma: false, // 不需要自动在文件开头插入 @prettier insertPragma: false, // 使用默认的折行标准 proseWrap: 'preserve', // 根据显示样式决定 html 要不要折行 htmlWhitespaceSensitivity: 'css', // 换行符使用 lf endOfLine: 'lf' }; ================================================ FILE: site/.babelrc ================================================ { "plugins": [ ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": true }] // `style: true` 会加载 less 文件 ] } ================================================ FILE: site/.eslintrc.js ================================================ module.exports = { parser: 'vue-eslint-parser', parserOptions: { parser: '@typescript-eslint/parser', ecmaVersion: 2020, sourceType: 'module', ecmaFeatures: { jsx: true, }, }, extends: [ 'plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'prettier/@typescript-eslint', 'plugin:prettier/recommended', ], rules: { '@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-empty-function': 'off', 'vue/custom-event-name-casing': 'off', 'no-use-before-define': 'off', // 'no-use-before-define': [ //   'error', //   { //     functions: false, //     classes: true, //   }, // ], '@typescript-eslint/no-use-before-define': 'off', // '@typescript-eslint/no-use-before-define': [ //   'error', //   { //     functions: false, //     classes: true, //   }, // ], '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/ban-types': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^h$', varsIgnorePattern: '^h$', }, ], 'no-unused-vars': [ 'error', { argsIgnorePattern: '^h$', varsIgnorePattern: '^h$', }, ], 'space-before-function-paren': 'off', quotes: ['error', 'single'], 'comma-dangle': ['error', 'never'], }, }; ================================================ FILE: site/.gitignore ================================================ node_modules .DS_Store dist dist-ssr *.local ================================================ FILE: site/README.md ================================================ # Vue 3 + Typescript + Vite This template should help get you started developing with Vue 3 and Typescript in Vite. ## Recommended IDE Setup [VSCode](https://code.visualstudio.com/) + [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur). Make sure to enable `vetur.experimental.templateInterpolationService` in settings! ### If Using ` ================================================ FILE: site/package.json ================================================ { "name": "rabbitui-website", "version": "1.0.0", "scripts": { "dev": "vite", "build": "vue-tsc --noEmit --skipLibCheck && vite build", "serve": "vite preview --port 8080" }, "dependencies": { "@ant-design/icons-vue": "^6.0.1", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", "ant-design-vue": "^2.1.2", "eslint": "^7.26.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "eslint-plugin-vue": "^7.9.0", "less": "^4.1.1", "prettier": "^2.3.0", "vue": "^3.0.5", "vue-router": "^4.0.6" }, "devDependencies": { "@types/node": "^15.0.2", "@vitejs/plugin-vue": "^1.2.2", "@vue/compiler-sfc": "^3.0.5", "typescript": "^4.1.3", "vite": "^2.2.4", "vite-plugin-compression": "^0.5.1", "vue-tsc": "^0.0.24" } } ================================================ FILE: site/prettier.config.js ================================================ module.exports = { printWidth: 100, tabWidth: 2, useTabs: false, semi: false, // 未尾逗号 vueIndentScriptAndStyle: true, singleQuote: true, // 单引号 quoteProps: 'as-needed', bracketSpacing: true, trailingComma: 'none', // 未尾分号 jsxBracketSameLine: false, jsxSingleQuote: false, arrowParens: 'always', insertPragma: false, requirePragma: false, proseWrap: 'never', htmlWhitespaceSensitivity: 'strict', endOfLine: 'lf' } ================================================ FILE: site/src/App.vue ================================================ ================================================ FILE: site/src/components/Anchor.vue ================================================ ================================================ FILE: site/src/components/CodeBox.vue ================================================ ================================================ FILE: site/src/components/ColorCard.vue ================================================ ================================================ FILE: site/src/components/ExampleHeaderArea.vue ================================================ ================================================ FILE: site/src/components/NavLogo.vue ================================================ ================================================ FILE: site/src/components/RowCol.vue ================================================ ================================================ FILE: site/src/components/SearchInput.vue ================================================ ================================================ FILE: site/src/components/index.ts ================================================ import NavLogo from './NavLogo.vue' import Anchor from './Anchor.vue' import CodeBox from './CodeBox.vue' import ColorCard from './ColorCard.vue' import SearchInput from './SearchInput.vue' import ExampleHeaderArea from './ExampleHeaderArea.vue' export { NavLogo, Anchor, CodeBox, ColorCard, SearchInput, ExampleHeaderArea } ================================================ FILE: site/src/examples-code/components/affix/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/affix/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/affix/FixedBottom.vue ================================================ ================================================ FILE: site/src/examples-code/components/affix/Offset.vue ================================================ ================================================ FILE: site/src/examples-code/components/affix/StatusChange.vue ================================================ ================================================ FILE: site/src/examples-code/components/affix/index.ts ================================================ import Basic from './Basic.vue' import Offset from './Offset.vue' import FixedBottom from './FixedBottom.vue' import StatusChange from './StatusChange.vue' import APITable from './APITable.vue' export { Basic, Offset, FixedBottom, StatusChange, APITable } ================================================ FILE: site/src/examples-code/components/alert/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/WithBanner.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/WithClose.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/WithDesc.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/WithIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/alert/index.ts ================================================ import Basic from './Basic.vue' import WithDesc from './WithDesc.vue' import WithIcon from './WithIcon.vue' import WithClose from './WithClose.vue' import WithBanner from './WithBanner.vue' import APITable from './APITable.vue' export { Basic, WithDesc, WithIcon, WithClose, WithBanner, APITable } ================================================ FILE: site/src/examples-code/components/avatar/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/avatar/AutoFontSize.vue ================================================ ================================================ FILE: site/src/examples-code/components/avatar/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/avatar/Type.vue ================================================ ================================================ FILE: site/src/examples-code/components/avatar/index.ts ================================================ import Basic from './Basic.vue' import Type from './Type.vue' import AutoFontSize from './AutoFontSize.vue' import APITable from './APITable.vue' export { Basic, Type, AutoFontSize, APITable } ================================================ FILE: site/src/examples-code/components/back-top/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/back-top/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/back-top/CustomStyle.vue ================================================ ================================================ FILE: site/src/examples-code/components/back-top/index.ts ================================================ import Basic from './Basic.vue' import CustomStyle from './CustomStyle.vue' import APITable from './APITable.vue' export { Basic, CustomStyle, APITable } ================================================ FILE: site/src/examples-code/components/badge/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/Alone.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/Colors.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/CustomContent.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/CustomPosition.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/MaxCount.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/PresetColor.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/RedDot.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/StatusDot.vue ================================================ ================================================ FILE: site/src/examples-code/components/badge/index.ts ================================================ import Basic from './Basic.vue' import RedDot from './RedDot.vue' import MaxCount from './MaxCount.vue' import Alone from './Alone.vue' import CustomContent from './CustomContent.vue' import CustomPosition from './CustomPosition.vue' import StatusDot from './StatusDot.vue' import Colors from './Colors.vue' import PresetColor from './PresetColor.vue' import APITable from './APITable.vue' export { Basic, RedDot, MaxCount, Alone, CustomContent, CustomPosition, StatusDot, Colors, PresetColor, APITable } ================================================ FILE: site/src/examples-code/components/breadcrumb/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/breadcrumb/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/breadcrumb/Separator.vue ================================================ ================================================ FILE: site/src/examples-code/components/breadcrumb/WithIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/breadcrumb/index.ts ================================================ import Basic from './Basic.vue' import WithIcon from './WithIcon.vue' import Separator from './Separator.vue' import APITable from './APITable.vue' export { Basic, WithIcon, Separator, APITable } ================================================ FILE: site/src/examples-code/components/button/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Ghost.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Group.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/IconWithCircle.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Loading.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Long.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Placement.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/Type.vue ================================================ ================================================ FILE: site/src/examples-code/components/button/index.ts ================================================ import Type from './Type.vue' import Ghost from './Ghost.vue' import IconWithCircle from './IconWithCircle.vue' import Size from './Size.vue' import Long from './Long.vue' import Disabled from './Disabled.vue' import Loading from './Loading.vue' import Group from './Group.vue' import Placement from './Placement.vue' import APITable from './APITable.vue' export { Type, Ghost, IconWithCircle, Size, Long, Disabled, Loading, Group, Placement, APITable } ================================================ FILE: site/src/examples-code/components/card/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/DisHover.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/NoBorder.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/Shadow.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/Simple.vue ================================================ ================================================ FILE: site/src/examples-code/components/card/index.ts ================================================ import Basic from './Basic.vue' import Simple from './Simple.vue' import DisHover from './DisHover.vue' import Shadow from './Shadow.vue' import NoBorder from './NoBorder.vue' import APITable from './APITable.vue' export { Basic, Simple, DisHover, Shadow, NoBorder, APITable } ================================================ FILE: site/src/examples-code/components/carousel/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/carousel/AutoPlay.vue ================================================ ================================================ FILE: site/src/examples-code/components/carousel/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/carousel/Fade.vue ================================================ ================================================ FILE: site/src/examples-code/components/carousel/index.ts ================================================ import Basic from './Basic.vue' import AutoPlay from './AutoPlay.vue' import Fade from './Fade.vue' import APITable from './APITable.vue' export { Basic, AutoPlay, Fade, APITable } ================================================ FILE: site/src/examples-code/components/checkbox/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/Border.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/Group.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/Indeterminate.vue ================================================ ================================================ FILE: site/src/examples-code/components/checkbox/index.ts ================================================ import Basic from './Basic.vue' import Group from './Group.vue' import Border from './Border.vue' import Disabled from './Disabled.vue' import Indeterminate from './Indeterminate.vue' import APITable from './APITable.vue' export { Basic, Group, Border, Disabled, Indeterminate, APITable } ================================================ FILE: site/src/examples-code/components/circle/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/circle/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/circle/CustomStyle.vue ================================================ ================================================ FILE: site/src/examples-code/components/circle/Dashboard.vue ================================================ ================================================ FILE: site/src/examples-code/components/circle/UseWithOther.vue ================================================ ================================================ FILE: site/src/examples-code/components/circle/index.ts ================================================ import Basic from './Basic.vue' import UseWithOther from './UseWithOther.vue' import CustomStyle from './CustomStyle.vue' import Dashboard from './Dashboard.vue' import APITable from './APITable.vue' export { Basic, UseWithOther, CustomStyle, Dashboard, APITable } ================================================ FILE: site/src/examples-code/components/collapse/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/According.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/Ghost.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/HiddenArrow.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/Simple.vue ================================================ ================================================ FILE: site/src/examples-code/components/collapse/index.ts ================================================ import Basic from './Basic.vue' import Simple from './Simple.vue' import Ghost from './Ghost.vue' import According from './According.vue' import HiddenArrow from './HiddenArrow.vue' import APITable from './APITable.vue' export { Basic, Simple, Ghost, According, HiddenArrow, APITable } ================================================ FILE: site/src/examples-code/components/count-down/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/count-down/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/count-down/index.ts ================================================ import Basic from './Basic.vue' import APITable from './APITable.vue' export { Basic, APITable } ================================================ FILE: site/src/examples-code/components/divider/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/divider/HeaderPosition.vue ================================================ ================================================ FILE: site/src/examples-code/components/divider/Horizontal.vue ================================================ ================================================ FILE: site/src/examples-code/components/divider/TextStyle.vue ================================================ ================================================ FILE: site/src/examples-code/components/divider/Vertical.vue ================================================ ================================================ FILE: site/src/examples-code/components/divider/index.ts ================================================ import Vertical from './Vertical.vue' import Horizontal from './Horizontal.vue' import TextStyle from './TextStyle.vue' import HeaderPosition from './HeaderPosition.vue' import APITable from './APITable.vue' export { Vertical, Horizontal, TextStyle, HeaderPosition, APITable } ================================================ FILE: site/src/examples-code/components/drawer/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/drawer/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/drawer/Custom.vue ================================================ ================================================ FILE: site/src/examples-code/components/drawer/Inner.vue ================================================ ================================================ FILE: site/src/examples-code/components/drawer/Multilayer.vue ================================================ ================================================ FILE: site/src/examples-code/components/drawer/index.ts ================================================ import Basic from './Basic.vue' import Inner from './Inner.vue' import Custom from './Custom.vue' import Multilayer from './Multilayer.vue' import APITable from './APITable.vue' export { Basic, Inner, Custom, Multilayer, APITable } ================================================ FILE: site/src/examples-code/components/dropdown/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/dropdown/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/dropdown/Nested.vue ================================================ ================================================ FILE: site/src/examples-code/components/dropdown/Placement.vue ================================================ ================================================ FILE: site/src/examples-code/components/dropdown/Trigger.vue ================================================ ================================================ FILE: site/src/examples-code/components/dropdown/index.ts ================================================ import Basic from './Basic.vue' import Nested from './Nested.vue' import Trigger from './Trigger.vue' import Placement from './Placement.vue' import APITable from './APITable.vue' export { Basic, Nested, Trigger, Placement, APITable } ================================================ FILE: site/src/examples-code/components/empty/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/empty/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/empty/Custom.vue ================================================ ================================================ FILE: site/src/examples-code/components/empty/NoDesc.vue ================================================ ================================================ FILE: site/src/examples-code/components/empty/index.ts ================================================ import Basic from './Basic.vue' import Custom from './Custom.vue' import NoDesc from './NoDesc.vue' import APITable from './APITable.vue' export { Basic, Custom, NoDesc, APITable } ================================================ FILE: site/src/examples-code/components/input-number/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/ControlsOutside.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Editable.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Formatter.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/ReadOnly.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/Step.vue ================================================ ================================================ FILE: site/src/examples-code/components/input-number/index.ts ================================================ import Basic from './Basic.vue' import Size from './Size.vue' import Editable from './Editable.vue' import Formatter from './Formatter.vue' import Step from './Step.vue' import ReadOnly from './ReadOnly.vue' import Disabled from './Disabled.vue' import ControlsOutside from './ControlsOutside.vue' import APITable from './APITable.vue' export { Basic, Size, Editable, Formatter, Step, ReadOnly, Disabled, ControlsOutside, APITable } ================================================ FILE: site/src/examples-code/components/jumbotron/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/jumbotron/Appearance.vue ================================================ ================================================ FILE: site/src/examples-code/components/jumbotron/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/jumbotron/index.ts ================================================ import Basic from './Basic.vue' import Appearance from './Appearance.vue' import APITable from './APITable.vue' export { Basic, Appearance, APITable } ================================================ FILE: site/src/examples-code/components/loading-bar/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/loading-bar/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/loading-bar/UseInAsync.vue ================================================ ================================================ FILE: site/src/examples-code/components/loading-bar/UsedInRoute.vue ================================================ ================================================ FILE: site/src/examples-code/components/loading-bar/index.ts ================================================ import Basic from './Basic.vue' import UsedInRoute from './UsedInRoute.vue' import UseInAsync from './UseInAsync.vue' import APITable from './APITable.vue' export { Basic, UsedInRoute, UseInAsync, APITable } ================================================ FILE: site/src/examples-code/components/message/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Background.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Closable.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Loading.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Promise.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Time.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/Type.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/UseHTML.vue ================================================ ================================================ FILE: site/src/examples-code/components/message/index.ts ================================================ import Basic from './Basic.vue' import Time from './Time.vue' import Type from './Type.vue' import Promise from './Promise.vue' import Loading from './Loading.vue' import UseHTML from './UseHTML.vue' import Closable from './Closable.vue' import Background from './Background.vue' import APITable from './APITable.vue' export { Basic, Time, Type, Promise, Loading, UseHTML, Closable, Background, APITable } ================================================ FILE: site/src/examples-code/components/mini-modal/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/mini-modal/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/mini-modal/Confirm.vue ================================================ ================================================ FILE: site/src/examples-code/components/mini-modal/index.ts ================================================ import Basic from './Basic.vue' import Confirm from './Confirm.vue' import APITable from './APITable.vue' export { Basic, Confirm, APITable } ================================================ FILE: site/src/examples-code/components/modal/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/Aysnc.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/Custom.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/DisabledClose.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/FullScreen.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/Position.vue ================================================ ================================================ FILE: site/src/examples-code/components/modal/index.ts ================================================ import Basic from './Basic.vue' import Aysnc from './Aysnc.vue' import Custom from './Custom.vue' import Position from './Position.vue' import DisabledClose from './DisabledClose.vue' import FullScreen from './FullScreen.vue' import APITable from './APITable.vue' export { Basic, Aysnc, Custom, Position, DisabledClose, FullScreen, APITable } ================================================ FILE: site/src/examples-code/components/notice/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/Closable.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/Promise.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/Time.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/Type.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/UseHTML.vue ================================================ ================================================ FILE: site/src/examples-code/components/notice/index.ts ================================================ import Basic from './Basic.vue' import Type from './Type.vue' import Time from './Time.vue' import Promise from './Promise.vue' import UseHTML from './UseHTML.vue' import Closable from './Closable.vue' import APITable from './APITable.vue' export { Basic, Type, Time, Promise, UseHTML, Closable, APITable } ================================================ FILE: site/src/examples-code/components/page-header/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/page-header/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/page-header/index.ts ================================================ import Basic from './Basic.vue' import APITable from './APITable.vue' export { Basic, APITable } ================================================ FILE: site/src/examples-code/components/poptip/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/AutoNewLine.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/Complex.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/Confirm.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/InsideClosed.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/Placement.vue ================================================ ================================================ FILE: site/src/examples-code/components/poptip/index.ts ================================================ import Basic from './Basic.vue' import Placement from './Placement.vue' import InsideClosed from './InsideClosed.vue' import Disabled from './Disabled.vue' import Complex from './Complex.vue' import AutoNewLine from './AutoNewLine.vue' import Confirm from './Confirm.vue' import APITable from './APITable.vue' export { Basic, Placement, InsideClosed, Disabled, Complex, AutoNewLine, Confirm, APITable } ================================================ FILE: site/src/examples-code/components/progress/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/progress/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/progress/FDJDT.vue ================================================ ================================================ FILE: site/src/examples-code/components/progress/Percent.vue ================================================ ================================================ FILE: site/src/examples-code/components/progress/StrokeColor.vue ================================================ ================================================ FILE: site/src/examples-code/components/progress/index.ts ================================================ import Basic from './Basic.vue' import FDJDT from './FDJDT.vue' import Percent from './Percent.vue' import StrokeColor from './StrokeColor.vue' import APITable from './APITable.vue' export { Basic, FDJDT, Percent, StrokeColor, APITable } ================================================ FILE: site/src/examples-code/components/radio/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Border.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Button.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/ButtonStyle.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Group.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/Vertical.vue ================================================ ================================================ FILE: site/src/examples-code/components/radio/index.ts ================================================ import Basic from './Basic.vue' import Size from './Size.vue' import Disabled from './Disabled.vue' import Border from './Border.vue' import Button from './Button.vue' import ButtonStyle from './ButtonStyle.vue' import Vertical from './Vertical.vue' import Group from './Group.vue' import APITable from './APITable.vue' export { Basic, Size, Disabled, Border, Button, ButtonStyle, Vertical, Group, APITable } ================================================ FILE: site/src/examples-code/components/result/403.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/404.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/500.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/CustomIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/Error.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/Info.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/Success.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/Warning.vue ================================================ ================================================ FILE: site/src/examples-code/components/result/index.ts ================================================ import Info from './Info.vue' import Success from './Success.vue' import Warning from './Warning.vue' import Error from './Error.vue' import F03 from './403.vue' import F04 from './404.vue' import FV500 from './500.vue' import CustomIcon from './CustomIcon.vue' import APITable from './APITable.vue' export { Info, Success, Warning, Error, F03, F04, FV500, CustomIcon, APITable } ================================================ FILE: site/src/examples-code/components/skeleton/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/Complex.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/Custom.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/Loading.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/WithAnimation.vue ================================================ ================================================ FILE: site/src/examples-code/components/skeleton/index.ts ================================================ import Basic from './Basic.vue' import Custom from './Custom.vue' import Complex from './Complex.vue' import Loading from './Loading.vue' import WithAnimation from './WithAnimation.vue' import APITable from './APITable.vue' export { Basic, Custom, Complex, Loading, WithAnimation, APITable } ================================================ FILE: site/src/examples-code/components/spin/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/ChangeState.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/CustomContent.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/FixCenter.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/FullScreen.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/spin/index.ts ================================================ import Basic from './Basic.vue' import Size from './Size.vue' import FixCenter from './FixCenter.vue' import CustomContent from './CustomContent.vue' import ChangeState from './ChangeState.vue' import FullScreen from './FullScreen.vue' import APITable from './APITable.vue' export { Basic, Size, FixCenter, CustomContent, ChangeState, FullScreen, APITable } ================================================ FILE: site/src/examples-code/components/steps/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/ChangeStep.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/Error.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/Mini.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/Vertical.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/WithIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/steps/index.ts ================================================ import Basic from './Basic.vue' import Error from './Error.vue' import Mini from './Mini.vue' import Vertical from './Vertical.vue' import WithIcon from './WithIcon.vue' import ChangeStep from './ChangeStep.vue' import APITable from './APITable.vue' export { Basic, Error, Mini, Vertical, WithIcon, ChangeStep, APITable } ================================================ FILE: site/src/examples-code/components/switch/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/CustomColor.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/Loading.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/TextAndIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/switch/index.ts ================================================ import Basic from './Basic.vue' import Size from './Size.vue' import Loading from './Loading.vue' import Disabled from './Disabled.vue' import CustomColor from './CustomColor.vue' import TextAndIcon from './TextAndIcon.vue' import APITable from './APITable.vue' export { Basic, Size, Loading, Disabled, CustomColor, TextAndIcon, APITable } ================================================ FILE: site/src/examples-code/components/tabs/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/Animated.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/CardType.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/Closable.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/CustomStyle.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/Small.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/WithIcon.vue ================================================ ================================================ FILE: site/src/examples-code/components/tabs/index.ts ================================================ import Basic from './Basic.vue' import WithIcon from './WithIcon.vue' import Small from './Small.vue' import Disabled from './Disabled.vue' import CardType from './CardType.vue' import Closable from './Closable.vue' import Animated from './Animated.vue' import CustomStyle from './CustomStyle.vue' import APITable from './APITable.vue' export { Basic, WithIcon, Small, Disabled, CardType, Closable, Animated, CustomStyle, APITable } ================================================ FILE: site/src/examples-code/components/tag/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/CanSelect.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/Colors.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/Size.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/StyleTypes.vue ================================================ ================================================ FILE: site/src/examples-code/components/tag/index.ts ================================================ import Basic from './Basic.vue' import Size from './Size.vue' import StyleTypes from './StyleTypes.vue' import Colors from './Colors.vue' import CanSelect from './CanSelect.vue' import APITable from './APITable.vue' export { Basic, Size, StyleTypes, Colors, CanSelect, APITable } ================================================ FILE: site/src/examples-code/components/time/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/time/AutoUpdate.vue ================================================ ================================================ FILE: site/src/examples-code/components/time/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/time/Types.vue ================================================ ================================================ FILE: site/src/examples-code/components/time/WithAnchor.vue ================================================ ================================================ FILE: site/src/examples-code/components/time/index.ts ================================================ import Basic from './Basic.vue' import AutoUpdate from './AutoUpdate.vue' import Types from './Types.vue' import WithAnchor from './WithAnchor.vue' import APITable from './APITable.vue' export { Basic, AutoUpdate, Types, WithAnchor, APITable } ================================================ FILE: site/src/examples-code/components/timeline/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/timeline/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/timeline/Colors.vue ================================================ ================================================ FILE: site/src/examples-code/components/timeline/Custom.vue ================================================ ================================================ FILE: site/src/examples-code/components/timeline/Pending.vue ================================================ ================================================ FILE: site/src/examples-code/components/timeline/index.ts ================================================ import Basic from './Basic.vue' import Colors from './Colors.vue' import Custom from './Custom.vue' import Pending from './Pending.vue' import APITable from './APITable.vue' export { Basic, Colors, Custom, Pending, APITable } ================================================ FILE: site/src/examples-code/components/tooltip/APITable.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/AutoNewLine.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/Basic.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/CustomContent.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/Delay.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/Disabled.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/Placement.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/Theme.vue ================================================ ================================================ FILE: site/src/examples-code/components/tooltip/index.ts ================================================ import Basic from './Basic.vue' import Delay from './Delay.vue' import Theme from './Theme.vue' import Disabled from './Disabled.vue' import Placement from './Placement.vue' import AutoNewLine from './AutoNewLine.vue' import CustomContent from './CustomContent.vue' import APITable from './APITable.vue' export { Basic, Delay, Theme, Disabled, Placement, AutoNewLine, CustomContent, APITable } ================================================ FILE: site/src/examples-code/docs/install/CDNAZ.vue ================================================ ================================================ FILE: site/src/examples-code/docs/install/SL.vue ================================================ ================================================ FILE: site/src/examples-code/docs/install/index.ts ================================================ import CDNAZ from './CDNAZ.vue' import SL from './SL.vue' export { CDNAZ, SL } ================================================ FILE: site/src/examples-code/docs/introduce/AZ.vue ================================================ ================================================ FILE: site/src/examples-code/docs/introduce/AZ2.vue ================================================ ================================================ FILE: site/src/examples-code/docs/introduce/SL.vue ================================================ ================================================ FILE: site/src/examples-code/docs/introduce/index.ts ================================================ import AZCode from './AZ.vue' import AZCode2 from './AZ2.vue' import SLCode from './SL.vue' export { AZCode, AZCode2, SLCode } ================================================ FILE: site/src/examples-code/docs/start/Code1.vue ================================================ ================================================ FILE: site/src/examples-code/docs/start/Code2.vue ================================================ ================================================ FILE: site/src/examples-code/docs/start/Code3.vue ================================================ ================================================ FILE: site/src/examples-code/docs/start/index.ts ================================================ import Code1 from './Code1.vue' import Code2 from './Code2.vue' import Code3 from './Code3.vue' export { Code1, Code2, Code3 } ================================================ FILE: site/src/main.ts ================================================ import { createApp } from 'vue' import Routers from './routers' import Antd from './plugins/antd' import App from '@/App.vue' const app = createApp(App) const usePlugins = (plugins: [...any]) => plugins.forEach((plugin) => app.use(plugin)) app.use(Routers) usePlugins(Antd) app.mount('#app') ================================================ FILE: site/src/markdown.css ================================================ :root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #b5d6fc; --select-text-font-color: auto; --monospace: Consolas, Menlo, Courier, monospace; --title-bar-height: 20px; } #write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; } #write.first-line-indent p { text-indent: 2em; } #write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; } #write.first-line-indent li { margin-left: 2em; } .for-image #write { padding-left: 8px; padding-right: 8px; } @media screen and (max-width: 500px) { #write { padding-left: 20px; padding-right: 20px; } .CodeMirror-sizer { margin-left: 0px !important; } .CodeMirror-gutters { display: none !important; } } #write li>figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; } #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; } .md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; } .hidden { display: none; } .md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; } sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; } sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; } #write input[type='checkbox'] { cursor: pointer; width: inherit; height: inherit; } table.md-table td { min-width: 32px; } .CodeMirror-gutters { border-right: 0px; background-color: inherit; } .CodeMirror-linenumber { user-select: none; } .CodeMirror { text-align: left; } .CodeMirror-placeholder { opacity: 0.3; } .CodeMirror pre { padding: 0px 4px; } .CodeMirror-lines { padding: 0px; } div.hr:focus { cursor: none; } #write pre { white-space: pre-wrap; } #write.fences-no-line-wrapping pre { white-space: pre; } #write pre.ty-contain-cm { white-space: normal; } .CodeMirror-gutters { margin-right: 4px; } .md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; } .md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; } #write .md-fences.mock-cm { white-space: pre-wrap; } .md-fences.md-fences-with-lineno { padding-left: 0px; } #write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; } .md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; } .CodeMirror-line, twitterwidget { break-inside: avoid; } .footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; } .footnotes+.footnotes { margin-top: 0px; } .md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; } blockquote { margin: 1rem 0px; } li .mathjax-block, blockquote> :last-child { margin-bottom: 0px; } .footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; } #write .footnote-line { white-space: pre-wrap; } .footnote-line { margin-top: 0.714em; font-size: 0.7em; } pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; } p>.md-image:only-child:not(.md-img-error) img, p>img:only-child { display: block; margin: auto; } #write.first-line-indent p>.md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; } p>.md-image:only-child { display: inline-block; width: 100%; } #write .MathJax_Display { margin: 0.8em 0px 0px; } .md-math-block { width: 100%; } .md-math-block:not(:empty)::after { display: none; } .MathJax_ref { fill: currentcolor; } [contenteditable='true']:active, [contenteditable='true']:focus, [contenteditable='false']:active, [contenteditable='false']:focus { outline: 0px; box-shadow: none; } .md-task-list-item { position: relative; list-style-type: none; } .task-list-item.md-task-list-item { padding-left: 0px; } .md-task-list-item>input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; } .math { font-size: 1rem; } .md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; } .md-toc-content { position: relative; margin-left: 0px; } .md-toc-content::after, .md-toc::after { display: none; } .md-toc-item { display: block; color: rgb(65, 131, 196); } .md-toc-item a { text-decoration: none; } .md-toc-inner:hover { text-decoration: underline; } .md-toc-inner { display: inline-block; cursor: pointer; } .md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; } .md-toc-h2 .md-toc-inner { margin-left: 2em; } .md-toc-h3 .md-toc-inner { margin-left: 4em; } .md-toc-h4 .md-toc-inner { margin-left: 6em; } .md-toc-h5 .md-toc-inner { margin-left: 8em; } .md-toc-h6 .md-toc-inner { margin-left: 10em; } @media screen and (max-width: 48em) { .md-toc-h3 .md-toc-inner { margin-left: 3.5em; } .md-toc-h4 .md-toc-inner { margin-left: 5em; } .md-toc-h5 .md-toc-inner { margin-left: 6.5em; } .md-toc-h6 .md-toc-inner { margin-left: 8em; } } a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; } .footnote-line a:not(.reversefootnote) { color: inherit; } .md-attr { display: none; } .md-fn-count::after { content: '.'; } code, pre, samp, tt { font-family: var(--monospace); } kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; } .md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); } code { text-align: left; vertical-align: initial; } a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; } .md-inline-math .MathJax_SVG .noError { display: none !important; } .html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; } .md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; } .MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; } .MathJax_SVG .MJX-monospace { font-family: var(--monospace); } .MathJax_SVG .MJX-sans-serif { font-family: sans-serif; } .MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; } .MathJax_SVG * { transition: none 0s ease 0s; } .MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; } .md-diagram-panel>svg { max-width: 100%; } [lang='flow'] svg, [lang='mermaid'] svg { max-width: 100%; height: auto; } [lang='mermaid'] .node text { font-size: 1rem; } .highlight td, .highlight tr { border: 0px; } mark { background: rgb(255, 255, 0); color: #525252; } .md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; } mark .md-meta { color: #525252; opacity: 0.3 !important; } .md-diagram-panel .messageText { stroke: none !important; } .md-diagram-panel .start-state { fill: var(--node-fill); } .md-diagram-panel .edgeLabel rect { opacity: 1 !important; } .md-require-zoom-fix foreignobject { font-size: var(--mermaid-font-zoom); } .CodeMirror { height: auto; } .CodeMirror.cm-s-inner { background: inherit; } .CodeMirror-scroll { overflow: auto hidden; z-index: 3; } .CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); } .CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; } .CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); } .cm-s-inner .cm-keyword { color: #708; } .cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: #fc1e70; } .cm-s-inner .cm-number { color: #fc1e70; } .cm-s-inner .cm-def { color: rgb(0, 0, 255); } .cm-s-inner .cm-variable { color: #e96900; } .cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); } .cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); } .cm-s-inner .cm-string { color: #42b983; } .cm-s-inner .cm-property { color: #9b1dea; } .cm-s-inner .cm-operator { color: #55585e; } .cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: #b3b3b3; } .cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); } .cm-s-inner .cm-meta { color: rgb(85, 85, 85); } .cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); } .cm-s-inner .cm-builtin { color: rgb(51, 0, 170); } .cm-s-inner .cm-bracket { color: rgb(153, 153, 119); } .cm-s-inner .cm-tag { color: #3e76f6; } .cm-s-inner .cm-attribute { color: #e96900; } .cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); } .cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); } .cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); } .cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); } .cm-negative { color: rgb(221, 68, 68); } .cm-positive { color: rgb(34, 153, 34); } .cm-header, .cm-strong { font-weight: 700; } .cm-del { text-decoration: line-through; } .cm-em { font-style: italic; } .cm-link { text-decoration: underline; } .cm-error { color: red; } .cm-invalidchar { color: red; } .cm-constant { color: rgb(38, 139, 210); } .cm-defined { color: rgb(181, 137, 0); } div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); } div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); } .cm-s-inner .CodeMirror-activeline-background { background: inherit; } .CodeMirror { position: relative; overflow: hidden; } .CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; } .CodeMirror-sizer { position: relative; } .CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; } .CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; } .CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; } .CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; } .CodeMirror-gutter-filler { left: 0px; bottom: 0px; } .CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; } .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; } .CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; } .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; } .CodeMirror-lines { cursor: text; } .CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; } .CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; } .CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; } .CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; } .CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; } .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; } .CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; } .CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; } .CodeMirror-measure pre { position: static; } .CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; } .CodeMirror div.CodeMirror-cursor { visibility: hidden; } .CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; } .cm-searching { background: rgba(255, 255, 0, 0.4); } @media print { .CodeMirror div.CodeMirror-cursor { visibility: hidden; } } :root { --side-bar-bg-color: #fafafa; --control-text-color: #777; } @include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext); /* open-sans-regular - latin-ext_latin */ /* open-sans-italic - latin-ext_latin */ /* open-sans-700 - latin-ext_latin */ /* open-sans-700italic - latin-ext_latin */ #write { max-width: 860px; margin: 0 auto; padding: 30px; padding-bottom: 100px; } @media only screen and (min-width: 1400px) { #write { max-width: 1024px; } } @media only screen and (min-width: 1800px) { #write { max-width: 1200px; } } #write>ul:first-child, #write>ol:first-child { margin-top: 30px; } blockquote { border-left: 4px solid #dfe2e5; padding: 0 15px; color: #777777; } blockquote blockquote { padding-right: 0; } .CodeMirror-lines { padding-left: 4px; } .code-tooltip { box-shadow: 0 1px 1px 0 rgba(0, 28, 36, 0.3); border-top: 1px solid #eef2f2; } .md-fences, code, tt { background-color: #f5f5f5; padding: 0; padding: 2px 4px 0px 4px; font-size: 0.95em; } code { background-color: #f3f4f4; padding: 0 2px 0 2px; } .md-fences { font-size: 14px; overflow: auto; margin: 16px 0; padding: 12px; } .md-task-list-item>input { margin-left: -1.3em; } h4 { font-size: 1.25em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.4; } figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; } figure>table { margin: 0px; } tr { break-inside: avoid; break-after: auto; } thead { display: table-header-group; } table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; } table.md-table td { min-width: 32px; } table tr th { border-bottom: 0px; } table { margin: 0.8em 0; padding: 0; word-break: initial; } table tr { border-top: 1px solid #dfe2e5; margin: 0; padding: 0; } table tr:nth-child(2n), thead { background-color: #f8f8f8; } table th { font-weight: bold; border: 1px solid #dfe2e5; border-bottom: 0; margin: 0; padding: 6px 13px; } table td { border: 1px solid #dfe2e5; margin: 0; padding: 6px 13px; } table th:first-child, table td:first-child { margin-top: 0; } table th:last-child, table td:last-child { margin-bottom: 0; } @media print { pre { word-wrap: break-word; } } .md-fences { background-color: #f8f8f8; } #write pre.md-meta-block { padding: 1rem; font-size: 85%; line-height: 1.45; background-color: #f7f7f7; border: 0; border-radius: 3px; color: #777777; margin-top: 0 !important; } .mathjax-block>.code-tooltip { bottom: 0.375rem; } .md-mathjax-midline { background: #fafafa; } #write>h3.md-focus:before { left: -1.5625rem; top: 0.375rem; } #write>h4.md-focus:before { left: -1.5625rem; top: 0.285714286rem; } #write>h5.md-focus:before { left: -1.5625rem; top: 0.285714286rem; } #write>h6.md-focus:before { left: -1.5625rem; top: 0.285714286rem; } .md-image>.md-meta { /*border: 1px solid #ddd;*/ border-radius: 3px; padding: 2px 0px 0px 4px; font-size: 0.9em; color: inherit; } .md-tag { color: #a7a7a7; opacity: 1; } .md-toc { margin-top: 20px; padding-bottom: 20px; } .sidebar-tabs { border-bottom: none; } #typora-quick-open { border: 1px solid #ddd; background-color: #f8f8f8; } #typora-quick-open-item { background-color: #fafafa; border-color: #fefefe #e5e5e5 #e5e5e5 #eee; border-style: solid; border-width: 1px; } /** focus mode */ .on-focus-mode blockquote { border-left-color: rgba(85, 85, 85, 0.12); } .context-menu, .megamenu-content { font-family: 'Segoe UI', 'Arial', sans-serif; } .file-node-content:hover .file-node-icon, .file-node-content:hover .file-node-open-state { visibility: visible; } .mac-seamless-mode #typora-sidebar { background-color: #fafafa; background-color: var(--side-bar-bg-color); } .md-lang { color: #b4654d; } .html-for-mac .context-menu { --item-hover-bg-color: #e6f0fe; } #md-notification .btn { border: 0; } .dropdown-menu .divider { border-color: #e5e5e5; } .ty-preferences .window-content { background-color: #fafafa; } .ty-preferences .nav-group-item.active { color: white; background: #999; } :root { --mermaid-font-zoom: 1.25em; } ================================================ FILE: site/src/pages/app/Index/Index.vue ================================================ ================================================ FILE: site/src/pages/app/Index/content/Content.vue ================================================ ================================================ FILE: site/src/pages/app/Index/header/Header.vue ================================================ ================================================ FILE: site/src/pages/app/Index/header/NavBar.vue ================================================ ================================================ FILE: site/src/pages/app/Index/header/NavBarDropdown.vue ================================================ ================================================ FILE: site/src/pages/app/Index/header/NavMore.vue ================================================ ================================================ FILE: site/src/pages/app/Index/header/NavRouterLink.vue ================================================ ================================================ FILE: site/src/pages/app/Index/sider/Sider.vue ================================================ ================================================ FILE: site/src/pages/app/Index/sider/SiderMenu.vue ================================================ ================================================ FILE: site/src/pages/app/views/Affix.vue ================================================ ================================================ FILE: site/src/pages/app/views/Alert.vue ================================================ ================================================ FILE: site/src/pages/app/views/Avatar.vue ================================================ ================================================ FILE: site/src/pages/app/views/BackTop.vue ================================================ ================================================ FILE: site/src/pages/app/views/Badge.vue ================================================ ================================================ FILE: site/src/pages/app/views/Breadcrumb.vue ================================================ ================================================ FILE: site/src/pages/app/views/Button.vue ================================================ ================================================ FILE: site/src/pages/app/views/Card.vue ================================================ ================================================ FILE: site/src/pages/app/views/Carousel.vue ================================================ ================================================ FILE: site/src/pages/app/views/Checkbox.vue ================================================ ================================================ FILE: site/src/pages/app/views/Circle.vue ================================================ ================================================ FILE: site/src/pages/app/views/Collapse.vue ================================================ ================================================ FILE: site/src/pages/app/views/Color.vue ================================================ ================================================ FILE: site/src/pages/app/views/CountDown.vue ================================================ ================================================ FILE: site/src/pages/app/views/Divider.vue ================================================ ================================================ FILE: site/src/pages/app/views/Drawer.vue ================================================ ================================================ FILE: site/src/pages/app/views/Dropdown.vue ================================================ ================================================ FILE: site/src/pages/app/views/Empty.vue ================================================ ================================================ FILE: site/src/pages/app/views/FAQ.vue ================================================ ================================================ FILE: site/src/pages/app/views/Icon.vue ================================================