UNPKG

@ovine/core

Version:

Build flexible admin system with json.

54 lines (53 loc) 2.41 kB
var __decorate = (this && this.__decorate) || function (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; }; import { Renderer } from 'amis'; import React from 'react'; import { StyledDropdown } from "./styled"; const animation = { enter: 'slide-up-enter slide-up-enter-active', leave: 'slide-up-leave slide-up-leave-active', duration: 200, }; let LibDropdown = class LibDropdown extends React.Component { constructor(props) { super(props); this.$wrapperRef = React.createRef(); } componentDidMount() { const { hover } = this.props; const config = Object.assign(Object.assign({ sensitivity: 3, interval: 100, timeout: 100 }, hover), { over: onOpen, out: onClose }); function onOpen() { $('ul:first', this) .removeClass(animation.leave) .addClass(`show ${animation.enter}`); } function onClose() { const $ul = $('ul:first', this) .removeClass(animation.enter) .addClass(animation.leave); setTimeout(() => { $ul.removeClass(`show ${animation.leave}`); }, animation.duration); } $(this.$wrapperRef.current).hoverIntent(config); } render() { const { items, body, render, classPrefix, className = '' } = this.props; return (React.createElement(StyledDropdown, { ref: this.$wrapperRef, className: `${classPrefix}LibDropdown ${className}` }, body && render('body', body), items && (React.createElement("ul", { className: "dropdown-menu m-t-xs r b" }, items.map((item, index) => { return (React.createElement("li", { key: index, className: "dropdown-item" }, render('body', item))); }))))); } }; LibDropdown = __decorate([ Renderer({ test: /(^|\/)lib-dropdown$/, name: 'lib-dropdown', }) ], LibDropdown); export { LibDropdown };