Convert resizer to Typescript
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
59871263ab
commit
329ded92c1
7 changed files with 141 additions and 111 deletions
|
@ -16,9 +16,16 @@ limitations under the License.
|
|||
|
||||
import FixedDistributor from "./fixed";
|
||||
import ResizeItem from "../item";
|
||||
import Resizer, {IConfig} from "../resizer";
|
||||
import Sizer from "../sizer";
|
||||
|
||||
class CollapseItem extends ResizeItem {
|
||||
notifyCollapsed(collapsed) {
|
||||
export interface ICollapseConfig extends IConfig {
|
||||
toggleSize: number;
|
||||
onCollapsed?(collapsed: boolean, id: string, element: HTMLElement): void;
|
||||
}
|
||||
|
||||
class CollapseItem extends ResizeItem<ICollapseConfig> {
|
||||
notifyCollapsed(collapsed: boolean) {
|
||||
const callback = this.resizer.config.onCollapsed;
|
||||
if (callback) {
|
||||
callback(collapsed, this.id, this.domNode);
|
||||
|
@ -26,18 +33,20 @@ class CollapseItem extends ResizeItem {
|
|||
}
|
||||
}
|
||||
|
||||
export default class CollapseDistributor extends FixedDistributor {
|
||||
static createItem(resizeHandle, resizer, sizer) {
|
||||
export default class CollapseDistributor extends FixedDistributor<ICollapseConfig, CollapseItem> {
|
||||
static createItem(resizeHandle: HTMLDivElement, resizer: Resizer<ICollapseConfig>, sizer: Sizer) {
|
||||
return new CollapseItem(resizeHandle, resizer, sizer);
|
||||
}
|
||||
|
||||
constructor(item, config) {
|
||||
private readonly toggleSize: number;
|
||||
private isCollapsed = false;
|
||||
|
||||
constructor(item: CollapseItem) {
|
||||
super(item);
|
||||
this.toggleSize = config && config.toggleSize;
|
||||
this.isCollapsed = false;
|
||||
this.toggleSize = item.resizer?.config?.toggleSize;
|
||||
}
|
||||
|
||||
resize(newSize) {
|
||||
public resize(newSize: number) {
|
||||
const isCollapsedSize = newSize < this.toggleSize;
|
||||
if (isCollapsedSize && !this.isCollapsed) {
|
||||
this.isCollapsed = true;
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||
|
||||
import ResizeItem from "../item";
|
||||
import Sizer from "../sizer";
|
||||
import Resizer, {IConfig} from "../resizer";
|
||||
|
||||
/**
|
||||
distributors translate a moving cursor into
|
||||
|
@ -27,29 +28,30 @@ they have two methods:
|
|||
within the container bounding box. For internal use.
|
||||
This method usually ends up calling `resize` once the start offset is subtracted.
|
||||
*/
|
||||
export default class FixedDistributor {
|
||||
static createItem(resizeHandle, resizer, sizer) {
|
||||
export default class FixedDistributor<C extends IConfig, I extends ResizeItem<any> = ResizeItem<C>> {
|
||||
static createItem(resizeHandle: HTMLDivElement, resizer: Resizer, sizer: Sizer): ResizeItem {
|
||||
return new ResizeItem(resizeHandle, resizer, sizer);
|
||||
}
|
||||
|
||||
static createSizer(containerElement, vertical, reverse) {
|
||||
static createSizer(containerElement: HTMLElement, vertical: boolean, reverse: boolean): Sizer {
|
||||
return new Sizer(containerElement, vertical, reverse);
|
||||
}
|
||||
|
||||
constructor(item) {
|
||||
this.item = item;
|
||||
private readonly beforeOffset: number;
|
||||
|
||||
constructor(public readonly item: I) {
|
||||
this.beforeOffset = item.offset();
|
||||
}
|
||||
|
||||
resize(size) {
|
||||
public resize(size: number) {
|
||||
this.item.setSize(size);
|
||||
}
|
||||
|
||||
resizeFromContainerOffset(offset) {
|
||||
public resizeFromContainerOffset(offset: number) {
|
||||
this.resize(offset - this.beforeOffset);
|
||||
}
|
||||
|
||||
start() {}
|
||||
public start() {}
|
||||
|
||||
finish() {}
|
||||
public finish() {}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue