ucbuilder
Version:
For Developing Applications with multiple form/usercontrols etc.. In Single BrowserWindow...
61 lines (54 loc) • 2.49 kB
text/typescript
//import { namingConversion } from "ucbuilder/global/listUI/pager/enumAndMore";
import { newObjectOpt } from "ucbuilder/global/objectOpt";
import { pagerLV } from "ucbuilder/global/listUI/pagerLV";
import { CommonEvent } from "ucbuilder/global/commonEvent";
import { getConvertedNames, namingConversion,NamingConversion } from "ucbuilder/global/resizer/namingConversion";
import { ScrollerType } from "../enumAndMore";
export class simpleScroll {
nameList: NamingConversion = Object.assign({}, namingConversion);
elementNode: any = {
sizer: `<sizer style="position: absolute; width: 100%; height: 100%; "></sizer>`,
}
dir: ScrollerType;
main: pagerLV;
scrollbarElement: HTMLElement;
constructor(dir: ScrollerType) {
this.dir = dir;
this.nameList = getConvertedNames(dir == 'Horizontal' ? 'grid-template-columns' : 'grid-template-rows');
}
get pagerLv(): pagerLV { return this.main; }
init(main: pagerLV, scrollbarElement: HTMLElement) {
this.main = main;
this.scrollbarElement = scrollbarElement;
this.elementNode.sizer = this.elementNode.sizer.$();
this.scrollbarElement.appendChild(this.elementNode.sizer);
let _szr = this.elementNode.sizer;
let _size_text = this.nameList.size;
let _offsetsize_text = this.nameList.offsetSize;
switch (this.dir) {
case 'Horizontal':
Object.assign(this.scrollbarElement.style, {
"width": "100%",
"overflow-x": "auto",
});
break;
case 'Vertical':
Object.assign(this.scrollbarElement.style, {
"height": "100%",
"overflow-y": "auto",
});
break;
}
new ResizeObserver((e, obs) => {
_szr.style[_size_text] = this.pagerLv.Records.lstVWEle[_offsetsize_text] + "px";
}).observe(this.pagerLv.Records.lstVWEle, { box: "border-box" });
let _scrollposition_text = this.nameList.scrollPosition;
this.scrollbarElement.addEventListener("scroll", (e) => {
this.Event.onScroll.fire([e]);
this.pagerLv.Records.scrollerElement[_scrollposition_text] = this.scrollbarElement[_scrollposition_text];
});
}
Event = {
onScroll: new CommonEvent<(evt: Event) => void>()
}
}