gridstack
Version:
TypeScript/JS lib for dashboard layout and creation, responsive, mobile support, no external dependencies, with many wrappers (React, Angular, Vue, Ember, knockout...)
1 lines • 33.8 kB
Source Map (JSON)
{"version":3,"file":"gridstack-angular.mjs","sources":["../../../angular/projects/lib/src/lib/base-widget.ts","../../../angular/projects/lib/src/lib/gridstack-item.component.ts","../../../angular/projects/lib/src/lib/gridstack.component.ts","../../../angular/projects/lib/src/lib/gridstack.module.ts","../../../angular/projects/lib/src/index.ts","../../../angular/projects/lib/src/gridstack-angular.ts"],"sourcesContent":["/**\r\n * gridstack-item.component.ts 11.5.1\r\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\r\n */\r\n\r\n/**\r\n * Base interface that all widgets need to implement in order for GridstackItemComponent to correctly save/load/delete/..\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { NgCompInputs, NgGridStackWidget } from './types';\r\n\r\n @Injectable()\r\n export abstract class BaseWidget {\r\n\r\n /** variable that holds the complete definition of this widgets (with selector,x,y,w,h) */\r\n public widgetItem?: NgGridStackWidget;\r\n\r\n /**\r\n * REDEFINE to return an object representing the data needed to re-create yourself, other than `selector` already handled.\r\n * This should map directly to the @Input() fields of this objects on create, so a simple apply can be used on read\r\n */\r\n public serialize(): NgCompInputs | undefined { return; }\r\n\r\n /**\r\n * REDEFINE this if your widget needs to read from saved data and transform it to create itself - you do this for\r\n * things that are not mapped directly into @Input() fields for example.\r\n */\r\n public deserialize(w: NgGridStackWidget) {\r\n // save full description for meta data\r\n this.widgetItem = w;\r\n if (!w) return;\r\n\r\n if (w.input) Object.assign(this, w.input);\r\n }\r\n }\r\n","/**\n * gridstack-item.component.ts 11.5.1\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { Component, ElementRef, Input, ViewChild, ViewContainerRef, OnDestroy, ComponentRef } from '@angular/core';\nimport { GridItemHTMLElement, GridStackNode } from 'gridstack';\nimport { BaseWidget } from './base-widget';\n\n/** store element to Ng Class pointer back */\nexport interface GridItemCompHTMLElement extends GridItemHTMLElement {\n _gridItemComp?: GridstackItemComponent;\n}\n\n/**\n * HTML Component Wrapper for gridstack items, in combination with GridstackComponent for parent grid\n */\n@Component({\n selector: 'gridstack-item',\n template: `\n <div class=\"grid-stack-item-content\">\n <!-- where dynamic items go based on component selector (recommended way), or sub-grids, etc...) -->\n <ng-template #container></ng-template>\n <!-- any static (defined in DOM - not recommended) content goes here -->\n <ng-content></ng-content>\n <!-- fallback HTML content from GridStackWidget.content if used instead (not recommended) -->\n {{options.content}}\n </div>`,\n styles: [`\n :host { display: block; }\n `],\n standalone: true,\n // changeDetection: ChangeDetectionStrategy.OnPush, // IFF you want to optimize and control when ChangeDetection needs to happen...\n})\nexport class GridstackItemComponent implements OnDestroy {\n\n /** container to append items dynamically */\n @ViewChild('container', { read: ViewContainerRef, static: true}) public container?: ViewContainerRef;\n\n /** ComponentRef of ourself - used by dynamic object to correctly get removed */\n public ref: ComponentRef<GridstackItemComponent> | undefined;\n\n /** child component so we can save/restore additional data to be saved along */\n public childWidget: BaseWidget | undefined;\n\n /** list of options for creating/updating this item */\n @Input() public set options(val: GridStackNode) {\n const grid = this.el.gridstackNode?.grid;\n if (grid) {\n // already built, do an update...\n grid.update(this.el, val);\n } else {\n // store our custom element in options so we can update it and not re-create a generic div!\n this._options = {...val, el: this.el};\n }\n }\n /** return the latest grid options (from GS once built, otherwise initial values) */\n public get options(): GridStackNode {\n return this.el.gridstackNode || this._options || {el: this.el};\n }\n\n protected _options?: GridStackNode;\n\n /** return the native element that contains grid specific fields as well */\n public get el(): GridItemCompHTMLElement { return this.elementRef.nativeElement; }\n\n /** clears the initial options now that we've built */\n public clearOptions() {\n delete this._options;\n }\n\n constructor(protected readonly elementRef: ElementRef<GridItemCompHTMLElement>) {\n this.el._gridItemComp = this;\n }\n\n public ngOnDestroy(): void {\n this.clearOptions();\n delete this.childWidget\n delete this.el._gridItemComp;\n delete this.container;\n delete this.ref;\n }\n}\n","/**\n * gridstack.component.ts 11.5.1\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, Input,\n OnDestroy, OnInit, Output, QueryList, Type, ViewChild, ViewContainerRef, reflectComponentType, ComponentRef } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { GridHTMLElement, GridItemHTMLElement, GridStack, GridStackNode, GridStackOptions, GridStackWidget } from 'gridstack';\n\nimport { NgGridStackNode, NgGridStackWidget } from './types';\nimport { BaseWidget } from './base-widget';\nimport { GridItemCompHTMLElement, GridstackItemComponent } from './gridstack-item.component';\n\n/** events handlers emitters signature for different events */\nexport type eventCB = {event: Event};\nexport type elementCB = {event: Event, el: GridItemHTMLElement};\nexport type nodesCB = {event: Event, nodes: GridStackNode[]};\nexport type droppedCB = {event: Event, previousNode: GridStackNode, newNode: GridStackNode};\n\n/** store element to Ng Class pointer back */\nexport interface GridCompHTMLElement extends GridHTMLElement {\n _gridComp?: GridstackComponent;\n}\n\n/** selector string to runtime Type mapping */\nexport type SelectorToType = {[key: string]: Type<Object>};\n\n/**\n * HTML Component Wrapper for gridstack, in combination with GridstackItemComponent for the items\n */\n@Component({\n selector: 'gridstack',\n template: `\n <!-- content to show when when grid is empty, like instructions on how to add widgets -->\n <ng-content select=\"[empty-content]\" *ngIf=\"isEmpty\"></ng-content>\n <!-- where dynamic items go -->\n <ng-template #container></ng-template>\n <!-- where template items go -->\n <ng-content></ng-content>\n `,\n styles: [`\n :host { display: block; }\n `],\n standalone: true,\n imports: [NgIf]\n // changeDetection: ChangeDetectionStrategy.OnPush, // IFF you want to optimize and control when ChangeDetection needs to happen...\n})\nexport class GridstackComponent implements OnInit, AfterContentInit, OnDestroy {\n\n /** track list of TEMPLATE (not recommended) grid items so we can sync between DOM and GS internals */\n @ContentChildren(GridstackItemComponent) public gridstackItems?: QueryList<GridstackItemComponent>;\n /** container to append items dynamically (recommended way) */\n @ViewChild('container', { read: ViewContainerRef, static: true}) public container?: ViewContainerRef;\n\n /** initial options for creation of the grid */\n @Input() public set options(o: GridStackOptions) {\n if (this._grid) {\n this._grid.updateOptions(o);\n } else {\n this._options = o;\n }\n }\n /** return the current running options */\n public get options(): GridStackOptions { return this._grid?.opts || this._options || {}; }\n\n /** true while ng-content with 'no-item-content' should be shown when last item is removed from a grid */\n @Input() public isEmpty?: boolean;\n\n /** individual list of GridStackEvent callbacks handlers as output\n * otherwise use this.grid.on('name1 name2 name3', callback) to handle multiple at once\n * see https://github.com/gridstack/gridstack.js/blob/master/demo/events.js#L4\n *\n * Note: camel casing and 'CB' added at the end to prevent @angular-eslint/no-output-native\n * eg: 'change' would trigger the raw CustomEvent so use different name.\n */\n @Output() public addedCB = new EventEmitter<nodesCB>();\n @Output() public changeCB = new EventEmitter<nodesCB>();\n @Output() public disableCB = new EventEmitter<eventCB>();\n @Output() public dragCB = new EventEmitter<elementCB>();\n @Output() public dragStartCB = new EventEmitter<elementCB>();\n @Output() public dragStopCB = new EventEmitter<elementCB>();\n @Output() public droppedCB = new EventEmitter<droppedCB>();\n @Output() public enableCB = new EventEmitter<eventCB>();\n @Output() public removedCB = new EventEmitter<nodesCB>();\n @Output() public resizeCB = new EventEmitter<elementCB>();\n @Output() public resizeStartCB = new EventEmitter<elementCB>();\n @Output() public resizeStopCB = new EventEmitter<elementCB>();\n\n /** return the native element that contains grid specific fields as well */\n public get el(): GridCompHTMLElement { return this.elementRef.nativeElement; }\n\n /** return the GridStack class */\n public get grid(): GridStack | undefined { return this._grid; }\n\n /** ComponentRef of ourself - used by dynamic object to correctly get removed */\n public ref: ComponentRef<GridstackComponent> | undefined;\n\n /**\n * stores the selector -> Type mapping, so we can create items dynamically from a string.\n * Unfortunately Ng doesn't provide public access to that mapping.\n */\n public static selectorToType: SelectorToType = {};\n /** add a list of ng Component to be mapped to selector */\n public static addComponentToSelectorType(typeList: Array<Type<Object>>) {\n typeList.forEach(type => GridstackComponent.selectorToType[ GridstackComponent.getSelector(type) ] = type);\n }\n /** return the ng Component selector */\n public static getSelector(type: Type<Object>): string {\n return reflectComponentType(type)!.selector;\n }\n\n protected _options?: GridStackOptions;\n protected _grid?: GridStack;\n protected _sub: Subscription | undefined;\n protected loaded?: boolean;\n\n constructor(protected readonly elementRef: ElementRef<GridCompHTMLElement>) {\n // set globally our method to create the right widget type\n if (!GridStack.addRemoveCB) {\n GridStack.addRemoveCB = gsCreateNgComponents;\n }\n if (!GridStack.saveCB) {\n GridStack.saveCB = gsSaveAdditionalNgInfo;\n }\n this.el._gridComp = this;\n }\n\n public ngOnInit(): void {\n // init ourself before any template children are created since we track them below anyway - no need to double create+update widgets\n this.loaded = !!this.options?.children?.length;\n this._grid = GridStack.init(this._options, this.el);\n delete this._options; // GS has it now\n\n this.checkEmpty();\n }\n\n /** wait until after all DOM is ready to init gridstack children (after angular ngFor and sub-components run first) */\n public ngAfterContentInit(): void {\n // track whenever the children list changes and update the layout...\n this._sub = this.gridstackItems?.changes.subscribe(() => this.updateAll());\n // ...and do this once at least unless we loaded children already\n if (!this.loaded) this.updateAll();\n this.hookEvents(this.grid);\n }\n\n public ngOnDestroy(): void {\n this.unhookEvents(this._grid);\n this._sub?.unsubscribe();\n this._grid?.destroy();\n delete this._grid;\n delete this.el._gridComp;\n delete this.container;\n delete this.ref;\n }\n\n /**\n * called when the TEMPLATE (not recommended) list of items changes - get a list of nodes and\n * update the layout accordingly (which will take care of adding/removing items changed by Angular)\n */\n public updateAll() {\n if (!this.grid) return;\n const layout: GridStackWidget[] = [];\n this.gridstackItems?.forEach(item => {\n layout.push(item.options);\n item.clearOptions();\n });\n this.grid.load(layout); // efficient that does diffs only\n }\n\n /** check if the grid is empty, if so show alternative content */\n public checkEmpty() {\n if (!this.grid) return;\n this.isEmpty = !this.grid.engine.nodes.length;\n }\n\n /** get all known events as easy to use Outputs for convenience */\n protected hookEvents(grid?: GridStack) {\n if (!grid) return;\n grid\n .on('added', (event: Event, nodes: GridStackNode[]) => { this.checkEmpty(); this.addedCB.emit({event, nodes}); })\n .on('change', (event: Event, nodes: GridStackNode[]) => this.changeCB.emit({event, nodes}))\n .on('disable', (event: Event) => this.disableCB.emit({event}))\n .on('drag', (event: Event, el: GridItemHTMLElement) => this.dragCB.emit({event, el}))\n .on('dragstart', (event: Event, el: GridItemHTMLElement) => this.dragStartCB.emit({event, el}))\n .on('dragstop', (event: Event, el: GridItemHTMLElement) => this.dragStopCB.emit({event, el}))\n .on('dropped', (event: Event, previousNode: GridStackNode, newNode: GridStackNode) => this.droppedCB.emit({event, previousNode, newNode}))\n .on('enable', (event: Event) => this.enableCB.emit({event}))\n .on('removed', (event: Event, nodes: GridStackNode[]) => { this.checkEmpty(); this.removedCB.emit({event, nodes}); })\n .on('resize', (event: Event, el: GridItemHTMLElement) => this.resizeCB.emit({event, el}))\n .on('resizestart', (event: Event, el: GridItemHTMLElement) => this.resizeStartCB.emit({event, el}))\n .on('resizestop', (event: Event, el: GridItemHTMLElement) => this.resizeStopCB.emit({event, el}))\n }\n\n protected unhookEvents(grid?: GridStack) {\n if (!grid) return;\n grid.off('added change disable drag dragstart dragstop dropped enable removed resize resizestart resizestop');\n }\n}\n\n/**\n * can be used when a new item needs to be created, which we do as a Angular component, or deleted (skip)\n **/\nexport function gsCreateNgComponents(host: GridCompHTMLElement | HTMLElement, n: NgGridStackNode, add: boolean, isGrid: boolean): HTMLElement | undefined {\n if (add) {\n //\n // create the component dynamically - see https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html\n //\n if (!host) return;\n if (isGrid) {\n // TODO: figure out how to create ng component inside regular Div. need to access app injectors...\n // if (!container) {\n // const hostElement: Element = host;\n // const environmentInjector: EnvironmentInjector;\n // grid = createComponent(GridstackComponent, {environmentInjector, hostElement})?.instance;\n // }\n\n const gridItemComp = (host.parentElement as GridItemCompHTMLElement)?._gridItemComp;\n if (!gridItemComp) return;\n // check if gridItem has a child component with 'container' exposed to create under..\n const container = (gridItemComp.childWidget as any)?.container || gridItemComp.container;\n const gridRef = container?.createComponent(GridstackComponent);\n const grid = gridRef?.instance;\n if (!grid) return;\n grid.ref = gridRef;\n grid.options = n;\n return grid.el;\n } else {\n const gridComp = (host as GridCompHTMLElement)._gridComp;\n const gridItemRef = gridComp?.container?.createComponent(GridstackItemComponent);\n const gridItem = gridItemRef?.instance;\n if (!gridItem) return;\n gridItem.ref = gridItemRef\n\n // define what type of component to create as child, OR you can do it GridstackItemComponent template, but this is more generic\n const selector = n.selector;\n const type = selector ? GridstackComponent.selectorToType[selector] : undefined;\n if (type) {\n // shared code to create our selector component\n const createComp = () => {\n const childWidget = gridItem.container?.createComponent(type)?.instance as BaseWidget;\n // if proper BaseWidget subclass, save it and load additional data\n if (childWidget && typeof childWidget.serialize === 'function' && typeof childWidget.deserialize === 'function') {\n gridItem.childWidget = childWidget;\n childWidget.deserialize(n);\n }\n }\n\n const lazyLoad = n.lazyLoad || n.grid?.opts?.lazyLoad && n.lazyLoad !== false;\n if (lazyLoad) {\n if (!n.visibleObservable) {\n n.visibleObservable = new IntersectionObserver(([entry]) => { if (entry.isIntersecting) {\n n.visibleObservable?.disconnect();\n delete n.visibleObservable;\n createComp();\n }});\n window.setTimeout(() => n.visibleObservable?.observe(gridItem.el)); // wait until callee sets position attributes\n }\n } else createComp();\n }\n\n return gridItem.el;\n }\n } else {\n //\n // REMOVE - have to call ComponentRef:destroy() for dynamic objects to correctly remove themselves\n // Note: this will destroy all children dynamic components as well: gridItem -> childWidget\n //\n if (isGrid) {\n const grid = (n.el as GridCompHTMLElement)?._gridComp;\n if (grid?.ref) grid.ref.destroy();\n else grid?.ngOnDestroy();\n } else {\n const gridItem = (n.el as GridItemCompHTMLElement)?._gridItemComp;\n if (gridItem?.ref) gridItem.ref.destroy();\n else gridItem?.ngOnDestroy();\n }\n }\n return;\n}\n\n/**\n * called for each item in the grid - check if additional information needs to be saved.\n * Note: since this is options minus gridstack protected members using Utils.removeInternalForSave(),\n * this typically doesn't need to do anything. However your custom Component @Input() are now supported\n * using BaseWidget.serialize()\n */\nexport function gsSaveAdditionalNgInfo(n: NgGridStackNode, w: NgGridStackWidget) {\n const gridItem = (n.el as GridItemCompHTMLElement)?._gridItemComp;\n if (gridItem) {\n const input = gridItem.childWidget?.serialize();\n if (input) {\n w.input = input;\n }\n return;\n }\n // else check if Grid\n const grid = (n.el as GridCompHTMLElement)?._gridComp;\n if (grid) {\n //.... save any custom data\n }\n}\n","/**\r\n * gridstack.component.ts 11.5.1\r\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { NgModule } from \"@angular/core\";\r\n\r\nimport { GridstackItemComponent } from \"./gridstack-item.component\";\r\nimport { GridstackComponent } from \"./gridstack.component\";\r\n\r\n// @deprecated use GridstackComponent and GridstackItemComponent as standalone components\r\n@NgModule({\r\n imports: [\r\n GridstackItemComponent,\r\n GridstackComponent,\r\n ],\r\n exports: [\r\n GridstackItemComponent,\r\n GridstackComponent,\r\n ],\r\n})\r\nexport class GridstackModule {}\r\n","/*\n * Public API Surface of gridstack-angular\n */\n\nexport * from './lib/types';\nexport * from './lib/base-widget';\nexport * from './lib/gridstack-item.component';\nexport * from './lib/gridstack.component';\nexport * from './lib/gridstack.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}