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