%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/ugotscom/3vfm3/node_modules/bootstrap-vue/esm/components/sidebar/
Upload File :
Create Path :
Current File : /home/ugotscom/3vfm3/node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

import Vue from '../../vue';
import { NAME_SIDEBAR } from '../../constants/components';
import { CODE_ESC } from '../../constants/key-codes';
import { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_TITLE } from '../../constants/slot-names';
import BVTransition from '../../utils/bv-transition';
import { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';
import { makePropsConfigurable } from '../../utils/config';
import { isBrowser } from '../../utils/env';
import { toString } from '../../utils/string';
import attrsMixin from '../../mixins/attrs';
import idMixin from '../../mixins/id';
import listenOnRootMixin from '../../mixins/listen-on-root';
import normalizeSlotMixin from '../../mixins/normalize-slot';
import { EVENT_TOGGLE, EVENT_STATE, EVENT_STATE_REQUEST, EVENT_STATE_SYNC } from '../../directives/toggle/toggle';
import { BButtonClose } from '../button/button-close';
import { BIconX } from '../../icons/icons'; // --- Constants ---

var CLASS_NAME = 'b-sidebar'; // --- Render methods ---

var renderHeaderTitle = function renderHeaderTitle(h, ctx) {
  // Render a empty `<span>` when to title was provided
  var title = ctx.computedTile;

  if (!title) {
    return h('span');
  }

  return h('strong', {
    attrs: {
      id: ctx.safeId('__title__')
    }
  }, [title]);
};

var renderHeaderClose = function renderHeaderClose(h, ctx) {
  if (ctx.noHeaderClose) {
    return h();
  }

  var closeLabel = ctx.closeLabel,
      textVariant = ctx.textVariant,
      hide = ctx.hide;
  return h(BButtonClose, {
    ref: 'close-button',
    props: {
      ariaLabel: closeLabel,
      textVariant: textVariant
    },
    on: {
      click: hide
    }
  }, [ctx.normalizeSlot('header-close') || h(BIconX)]);
};

var renderHeader = function renderHeader(h, ctx) {
  if (ctx.noHeader) {
    return h();
  }

  var $title = renderHeaderTitle(h, ctx);
  var $close = renderHeaderClose(h, ctx);
  return h('header', {
    key: 'header',
    staticClass: "".concat(CLASS_NAME, "-header"),
    class: ctx.headerClass
  }, ctx.right ? [$close, $title] : [$title, $close]);
};

var renderBody = function renderBody(h, ctx) {
  return h('div', {
    key: 'body',
    staticClass: "".concat(CLASS_NAME, "-body"),
    class: ctx.bodyClass
  }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);
};

var renderFooter = function renderFooter(h, ctx) {
  var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);

  if (!$footer) {
    return h();
  }

  return h('footer', {
    key: 'footer',
    staticClass: "".concat(CLASS_NAME, "-footer"),
    class: ctx.footerClass
  }, [$footer]);
};

var renderContent = function renderContent(h, ctx) {
  // We render the header even if `lazy` is enabled as it
  // acts as the accessible label for the sidebar
  var $header = renderHeader(h, ctx);

  if (ctx.lazy && !ctx.isOpen) {
    return $header;
  }

  return [$header, renderBody(h, ctx), renderFooter(h, ctx)];
};

var renderBackdrop = function renderBackdrop(h, ctx) {
  if (!ctx.backdrop) {
    return h();
  }

  var backdropVariant = ctx.backdropVariant;
  return h('div', {
    directives: [{
      name: 'show',
      value: ctx.localShow
    }],
    staticClass: 'b-sidebar-backdrop',
    class: _defineProperty({}, "bg-".concat(backdropVariant), !!backdropVariant),
    on: {
      click: ctx.onBackdropClick
    }
  });
}; // --- Main component ---
// @vue/component


export var BSidebar = /*#__PURE__*/Vue.extend({
  name: NAME_SIDEBAR,
  // Mixin order is important!
  mixins: [attrsMixin, idMixin, listenOnRootMixin, normalizeSlotMixin],
  inheritAttrs: false,
  model: {
    prop: 'visible',
    event: 'change'
  },
  props: makePropsConfigurable({
    title: {
      type: String // default: null

    },
    right: {
      type: Boolean,
      default: false
    },
    bgVariant: {
      type: String,
      default: 'light'
    },
    textVariant: {
      type: String,
      default: 'dark'
    },
    shadow: {
      type: [Boolean, String],
      default: false
    },
    width: {
      type: String // default: undefined

    },
    zIndex: {
      type: [Number, String] // default: null

    },
    ariaLabel: {
      type: String // default: null

    },
    ariaLabelledby: {
      type: String // default: null

    },
    closeLabel: {
      // `aria-label` for close button
      // Defaults to 'Close'
      type: String // default: undefined

    },
    tag: {
      type: String,
      default: 'div'
    },
    sidebarClass: {
      type: [String, Array, Object] // default: null

    },
    headerClass: {
      type: [String, Array, Object] // default: null

    },
    bodyClass: {
      type: [String, Array, Object] // default: null

    },
    footerClass: {
      type: [String, Array, Object] // default: null

    },
    backdrop: {
      // If `true`, shows a basic backdrop
      type: Boolean,
      default: false
    },
    backdropVariant: {
      type: String,
      default: 'dark'
    },
    noSlide: {
      type: Boolean,
      default: false
    },
    noHeader: {
      type: Boolean,
      default: false
    },
    noHeaderClose: {
      type: Boolean,
      default: false
    },
    noCloseOnEsc: {
      type: Boolean,
      default: false
    },
    noCloseOnBackdrop: {
      type: Boolean,
      default: false
    },
    noCloseOnRouteChange: {
      type: Boolean,
      default: false
    },
    noEnforceFocus: {
      type: Boolean,
      default: false
    },
    lazy: {
      type: Boolean,
      default: false
    },
    visible: {
      type: Boolean,
      default: false
    }
  }, NAME_SIDEBAR),
  data: function data() {
    return {
      // Internal `v-model` state
      localShow: !!this.visible,
      // For lazy render triggering
      isOpen: !!this.visible
    };
  },
  computed: {
    transitionProps: function transitionProps() {
      return this.noSlide ?
      /* istanbul ignore next */
      {
        css: true
      } : {
        css: true,
        enterClass: '',
        enterActiveClass: 'slide',
        enterToClass: 'show',
        leaveClass: 'show',
        leaveActiveClass: 'slide',
        leaveToClass: ''
      };
    },
    slotScope: function slotScope() {
      return {
        visible: this.localShow,
        right: this.right,
        hide: this.hide
      };
    },
    computedTile: function computedTile() {
      return this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope) || toString(this.title) || null;
    },
    titleId: function titleId() {
      return this.computedTile ? this.safeId('__title__') : null;
    },
    computedAttrs: function computedAttrs() {
      return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {
        id: this.safeId(),
        tabindex: '-1',
        role: 'dialog',
        'aria-modal': this.backdrop ? 'true' : 'false',
        'aria-hidden': this.localShow ? null : 'true',
        'aria-label': this.ariaLabel || null,
        'aria-labelledby': this.ariaLabelledby || this.titleId || null
      });
    }
  },
  watch: {
    visible: function visible(newVal, oldVal) {
      if (newVal !== oldVal) {
        this.localShow = newVal;
      }
    },
    localShow: function localShow(newVal, oldVal) {
      if (newVal !== oldVal) {
        this.emitState(newVal);
        this.$emit('change', newVal);
      }
    },

    /* istanbul ignore next */
    $route: function $route() {
      var newVal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var oldVal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

      if (!this.noCloseOnRouteChange && newVal.fullPath !== oldVal.fullPath) {
        this.hide();
      }
    }
  },
  created: function created() {
    // Define non-reactive properties
    this.$_returnFocusEl = null;
  },
  mounted: function mounted() {
    var _this = this;

    // Add `$root` listeners
    this.listenOnRoot(EVENT_TOGGLE, this.handleToggle);
    this.listenOnRoot(EVENT_STATE_REQUEST, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced

    this.$nextTick(function () {
      _this.emitState(_this.localShow);
    });
  },

  /* istanbul ignore next */
  activated: function activated() {
    this.emitSync();
  },
  beforeDestroy: function beforeDestroy() {
    this.localShow = false;
    this.$_returnFocusEl = null;
  },
  methods: {
    hide: function hide() {
      this.localShow = false;
    },
    emitState: function emitState() {
      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;
      this.emitOnRoot(EVENT_STATE, this.safeId(), state);
    },
    emitSync: function emitSync() {
      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;
      this.emitOnRoot(EVENT_STATE_SYNC, this.safeId(), state);
    },
    handleToggle: function handleToggle(id) {
      // Note `safeId()` can be null until after mount
      if (id && id === this.safeId()) {
        this.localShow = !this.localShow;
      }
    },
    handleSync: function handleSync(id) {
      var _this2 = this;

      // Note `safeId()` can be null until after mount
      if (id && id === this.safeId()) {
        this.$nextTick(function () {
          _this2.emitSync(_this2.localShow);
        });
      }
    },
    onKeydown: function onKeydown(evt) {
      var keyCode = evt.keyCode;

      if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {
        this.hide();
      }
    },
    onBackdropClick: function onBackdropClick() {
      if (this.localShow && !this.noCloseOnBackdrop) {
        this.hide();
      }
    },

    /* istanbul ignore next */
    onTopTrapFocus: function onTopTrapFocus() {
      var tabables = getTabables(this.$refs.content);
      this.enforceFocus(tabables.reverse()[0]);
    },

    /* istanbul ignore next */
    onBottomTrapFocus: function onBottomTrapFocus() {
      var tabables = getTabables(this.$refs.content);
      this.enforceFocus(tabables[0]);
    },
    onBeforeEnter: function onBeforeEnter() {
      // Returning focus to `document.body` may cause unwanted scrolls,
      // so we exclude setting focus on body
      this.$_returnFocusEl = getActiveElement(isBrowser ? [document.body] : []); // Trigger lazy render

      this.isOpen = true;
    },
    onAfterEnter: function onAfterEnter(el) {
      if (!contains(el, getActiveElement())) {
        this.enforceFocus(el);
      }

      this.$emit('shown');
    },
    onAfterLeave: function onAfterLeave() {
      this.enforceFocus(this.$_returnFocusEl);
      this.$_returnFocusEl = null; // Trigger lazy render

      this.isOpen = false;
      this.$emit('hidden');
    },
    enforceFocus: function enforceFocus(el) {
      if (!this.noEnforceFocus) {
        attemptFocus(el);
      }
    }
  },
  render: function render(h) {
    var _ref;

    var localShow = this.localShow;
    var shadow = this.shadow === '' ? true : this.shadow;
    var $sidebar = h(this.tag, {
      ref: 'content',
      directives: [{
        name: 'show',
        value: localShow
      }],
      staticClass: CLASS_NAME,
      class: [(_ref = {
        shadow: shadow === true
      }, _defineProperty(_ref, "shadow-".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, "".concat(CLASS_NAME, "-right"), this.right), _defineProperty(_ref, "bg-".concat(this.bgVariant), !!this.bgVariant), _defineProperty(_ref, "text-".concat(this.textVariant), !!this.textVariant), _ref), this.sidebarClass],
      attrs: this.computedAttrs,
      style: {
        width: this.width
      }
    }, [renderContent(h, this)]);
    $sidebar = h('transition', {
      props: this.transitionProps,
      on: {
        beforeEnter: this.onBeforeEnter,
        afterEnter: this.onAfterEnter,
        afterLeave: this.onAfterLeave
      }
    }, [$sidebar]);
    var $backdrop = h(BVTransition, {
      props: {
        noFade: this.noSlide
      }
    }, [renderBackdrop(h, this)]);
    var $tabTrapTop = h();
    var $tabTrapBottom = h();

    if (this.backdrop && this.localShow) {
      $tabTrapTop = h('div', {
        attrs: {
          tabindex: '0'
        },
        on: {
          focus: this.onTopTrapFocus
        }
      });
      $tabTrapBottom = h('div', {
        attrs: {
          tabindex: '0'
        },
        on: {
          focus: this.onBottomTrapFocus
        }
      });
    }

    return h('div', {
      staticClass: 'b-sidebar-outer',
      style: {
        zIndex: this.zIndex
      },
      attrs: {
        tabindex: '-1'
      },
      on: {
        keydown: this.onKeydown
      }
    }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);
  }
});

Zerion Mini Shell 1.0