UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

237 lines (203 loc) 7.89 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _vue = require("vue"); var _utils = require("../shared/utils"); var _mixins = require("../shared/mixins"); var _zmp = require("../shared/zmp"); var _cardHeader = _interopRequireDefault(require("./card-header")); var _cardContent = _interopRequireDefault(require("./card-content")); var _cardFooter = _interopRequireDefault(require("./card-footer")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function render(_ctx, _cache) { var _component_zmp_card_header = (0, _vue.resolveComponent)("zmp-card-header"); var _component_zmp_card_content = (0, _vue.resolveComponent)("zmp-card-content"); var _component_zmp_card_footer = (0, _vue.resolveComponent)("zmp-card-footer"); return (0, _vue.openBlock)(), (0, _vue.createBlock)("div", { ref: "elRef", class: _ctx.classes, "data-animate": typeof _ctx.animate === 'undefined' ? _ctx.animate : _ctx.animate.toString(), "data-hide-navbar-on-open": typeof _ctx.hideNavbarOnOpen === 'undefined' ? _ctx.hideNavbarOnOpen : _ctx.hideNavbarOnOpen.toString(), "data-hide-toolbar-on-open": typeof _ctx.hideToolbarOnOpen === 'undefined' ? _ctx.hideToolbarOnOpen : _ctx.hideToolbarOnOpen.toString(), "data-hide-statusbar-on-open": typeof _ctx.hideStatusbarOnOpen === 'undefined' ? _ctx.hideStatusbarOnOpen : _ctx.hideStatusbarOnOpen.toString(), "data-scrollable-el": _ctx.scrollableEl, "data-swipe-to-close": typeof _ctx.swipeToClose === 'undefined' ? _ctx.swipeToClose : _ctx.swipeToClose.toString(), "data-close-by-backdrop-click": typeof _ctx.closeByBackdropClick === 'undefined' ? _ctx.closeByBackdropClick : _ctx.closeByBackdropClick.toString(), "data-backdrop": typeof _ctx.backdrop === 'undefined' ? _ctx.backdrop : _ctx.backdrop.toString(), "data-backdrop-el": _ctx.backdropEl }, [_ctx.hasHeader ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_zmp_card_header, { key: 0 }, { default: (0, _vue.withCtx)(function () { return [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(_ctx.title) + " ", 1), (0, _vue.renderSlot)(_ctx.$slots, "header")]; }), _: 3 })) : (0, _vue.createCommentVNode)("", true), _ctx.hasContent ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_zmp_card_content, { key: 1, padding: _ctx.padding }, { default: (0, _vue.withCtx)(function () { return [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(_ctx.content) + " ", 1), (0, _vue.renderSlot)(_ctx.$slots, "content")]; }), _: 3 }, 8, ["padding"])) : (0, _vue.createCommentVNode)("", true), _ctx.hasFooter ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_zmp_card_footer, { key: 2 }, { default: (0, _vue.withCtx)(function () { return [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(_ctx.footer) + " ", 1), (0, _vue.renderSlot)(_ctx.$slots, "footer")]; }), _: 3 })) : (0, _vue.createCommentVNode)("", true), (0, _vue.renderSlot)(_ctx.$slots, "default")], 10, ["data-animate", "data-hide-navbar-on-open", "data-hide-toolbar-on-open", "data-hide-statusbar-on-open", "data-scrollable-el", "data-swipe-to-close", "data-close-by-backdrop-click", "data-backdrop", "data-backdrop-el"]); } var _default = { name: 'zmp-card', render: render, components: { zmpCardHeader: _cardHeader.default, zmpCardContent: _cardContent.default, zmpCardFooter: _cardFooter.default }, props: _extends({ title: [String, Number], content: [String, Number], footer: [String, Number], outline: Boolean, expandable: Boolean, expandableAnimateWidth: Boolean, expandableOpened: Boolean, animate: { type: Boolean, default: undefined }, hideNavbarOnOpen: { type: Boolean, default: undefined }, hideToolbarOnOpen: { type: Boolean, default: undefined }, hideStatusbarOnOpen: { type: Boolean, default: undefined }, scrollableEl: { type: String, default: undefined }, swipeToClose: { type: Boolean, default: undefined }, closeByBackdropClick: { type: Boolean, default: undefined }, backdrop: { type: Boolean, default: undefined }, backdropEl: { type: String, default: undefined }, noShadow: Boolean, noBorder: Boolean, padding: { type: Boolean, default: true } }, _mixins.colorProps), emits: ['card:beforeopen', 'card:open', 'card:opened', 'card:close', 'card:closed', 'update:expandableOpened'], setup: function setup(props, _ref) { var emit = _ref.emit, slots = _ref.slots; var elRef = (0, _vue.ref)(null); var open = function open() { if (!elRef.value) return; _zmp.zmp.card.open(elRef.value); }; var close = function close() { if (!elRef.value) return; _zmp.zmp.card.close(elRef.value); }; var onBeforeOpen = function onBeforeOpen(el, prevent) { if (elRef.value !== el) return; emit('card:beforeopen', el, prevent); }; var onOpen = function onOpen(el) { if (elRef.value !== el) return; emit('card:open', el); emit('update:expandableOpened', true); }; var onOpened = function onOpened(el, pageEl) { if (elRef.value !== el) return; emit('card:opened', el, pageEl); }; var onClose = function onClose(el) { if (elRef.value !== el) return; emit('card:close', el); }; var onClosed = function onClosed(el, pageEl) { if (elRef.value !== el) return; emit('card:closed', el, pageEl); emit('update:expandableOpened', false); }; (0, _vue.onMounted)(function () { if (!props.expandable || !elRef.value) return; (0, _zmp.zmpready)(function () { if (props.expandable && props.expandableOpened) { _zmp.zmp.card.open(elRef.value, false); } _zmp.zmp.on('cardBeforeOpen', onBeforeOpen); _zmp.zmp.on('cardOpen', onOpen); _zmp.zmp.on('cardOpened', onOpened); _zmp.zmp.on('cardClose', onClose); _zmp.zmp.on('cardClosed', onClosed); }); }); (0, _vue.onBeforeUnmount)(function () { _zmp.zmp.off('cardBeforeOpen', onBeforeOpen); _zmp.zmp.off('cardOpen', onOpen); _zmp.zmp.off('cardOpened', onOpened); _zmp.zmp.off('cardClose', onClose); _zmp.zmp.off('cardClosed', onClosed); }); (0, _vue.watch)(function () { return props.expandableOpened; }, function (value) { if (value) { open(); } else { close(); } }); var hasHeader = (0, _vue.computed)(function () { return props.title || slots.header; }); var hasContent = (0, _vue.computed)(function () { return props.content || slots.content; }); var hasFooter = (0, _vue.computed)(function () { return props.footer || slots.footer; }); var classes = (0, _vue.computed)(function () { return (0, _utils.classNames)('card', { 'card-outline': props.outline, 'card-expandable': props.expandable, 'card-expandable-animate-width': props.expandableAnimateWidth, 'no-shadow': props.noShadow, 'no-border': props.noBorder }, (0, _mixins.colorClasses)(props)); }); return { elRef: elRef, classes: classes, hasHeader: hasHeader, hasContent: hasContent, hasFooter: hasFooter }; } }; exports.default = _default;