ui-default: init

将ui-default合并至主存储库便于维护
This commit is contained in:
undefined committed 2021-04-03 01:44:22 +08:00
1 parent 6317c9057f
commit 5faa54c7ca
564 files changed
+23083 -14

No files matched your search

@@ -0,0 +1,55 @@
import Drop from 'tether-drop';
import _ from 'lodash';
import DOMAttachedObject from 'vj/components/DOMAttachedObject';
import responsiveCutoff from 'vj/breakpoints.json';
import zIndexManager from 'vj/utils/zIndexManager';
import { isBelow } from 'vj/utils/mediaQuery';
export default class Dropdown extends DOMAttachedObject {
static DOMAttachKey = 'vjDropdownInstance';
static DOMAttachSelector = '[data-dropdown-target]';
constructor($dom, options = {}) {
if ($dom.attr('data-dropdown-trigger-desktop-only') !== undefined) {
if (isBelow(responsiveCutoff.mobile)) {
super(null);
return;
}
}
super($dom);
this.options = {
target: null,
position: $dom.attr('data-dropdown-pos') || 'bottom left',
...options,
};
this.dropInstance = new Drop({
target: $dom[0],
classes: 'dropdown',
content: this.options.target || $.find($dom.attr('data-dropdown-target'))[0],
position: this.options.position,
openOn: 'hover',
constrainToWindow: true,
constrainToScrollParent: false,
});
this.dropInstance.on('open', this.onDropOpen.bind(this));
this.dropInstance.on('close', this.onDropClose.bind(this));
}
detach() {
super.detach();
this.dropInstance.destroy();
}
onDropOpen() {
$(this.dropInstance.drop).css('z-index', zIndexManager.getNext());
this.$dom.trigger('vjDropdownShow');
}
onDropClose() {
this.$dom.trigger('vjDropdownHide');
}
}
_.assign(Dropdown, DOMAttachedObject);
@@ -0,0 +1,8 @@
import { AutoloadPage } from 'vj/misc/Page';
import Dropdown from './Dropdown';
const dropdownPage = new AutoloadPage('dropdownPage', () => {
Dropdown.registerLifeCycleHooks();
});
export default dropdownPage;
@@ -0,0 +1,24 @@
.dropdown-target
display: none
.drop .dropdown-target
display: block
.dropdown
.menu
min-width: rem(150px)
box-shadow: $menu-drop-shadow
background: $menu-drop-bg-color
font-size: rem($font-size-small)
.menu__link
padding: rem(8px 10px)
.dropdown
.drop-content
transition: transform .1s ease-in-out
transform: scale(0.9) translateZ(0)
&.drop-after-open
.drop-content
transform: scale(1) translateZ(0)