UNPKG

@worktile/ngx-sortablejs

Version:
1 lines 17.4 kB
{"version":3,"file":"worktile-ngx-sortablejs.mjs","sources":["../../../projects/ngx-sortablejs/src/lib/globals.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs-binding.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs-bindings.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.service.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.directive.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.module.ts","../../../projects/ngx-sortablejs/src/worktile-ngx-sortablejs.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {Options} from 'sortablejs';\n\nexport const GLOBALS: InjectionToken<Options> = new InjectionToken('Global config for sortablejs');\n","import {SortableData} from './sortablejs.directive';\n\nexport class SortablejsBinding {\n\n constructor(private target: SortableData) {\n }\n\n insert(index: number, item: any) {\n if (this.isFormArray) {\n this.target.insert(index, item);\n } else {\n this.target.splice(index, 0, item);\n }\n }\n\n get(index: number) {\n return this.isFormArray ? this.target.at(index) : this.target[index];\n }\n\n remove(index: number) {\n let item;\n\n if (this.isFormArray) {\n item = this.target.at(index);\n this.target.removeAt(index);\n } else {\n item = this.target.splice(index, 1)[0];\n }\n\n return item;\n }\n\n // we need this to identify that the target is a FormArray\n // we don't want to have a dependency on @angular/forms just for that\n private get isFormArray() {\n // just checking for random FormArray methods not available on a standard array\n return !!this.target.at && !!this.target.insert && !!this.target.reset;\n }\n\n}\n","import { SortablejsBinding } from './sortablejs-binding';\nimport {SortableData} from './sortablejs.directive';\n\nexport class SortablejsBindings {\n\n bindings: SortablejsBinding[];\n\n constructor(bindingTargets: SortableData[]) {\n this.bindings = bindingTargets.map(target => new SortablejsBinding(target));\n }\n\n injectIntoEvery(index: number, items: any[]) {\n this.bindings.forEach((b, i) => b.insert(index, items[i]));\n }\n\n getFromEvery(index: number) {\n return this.bindings.map(b => b.get(index));\n }\n\n extractFromEvery(index: number) {\n return this.bindings.map(b => b.remove(index));\n }\n\n get provided() {\n return !!this.bindings.length;\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SortablejsService {\n\n // original library calls the events in unnatural order\n // first the item is added, then removed from the previous array\n // this is a temporary event to work this around\n // as long as only one sortable takes place at a certain time\n // this is enough to have a single `global` event\n transfer: (items: any[]) => void;\n\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n SimpleChange,\n} from '@angular/core';\nimport Sortable, {Options} from 'sortablejs';\nimport {GLOBALS} from './globals';\nimport {SortablejsBindings} from './sortablejs-bindings';\nimport {SortablejsService} from './sortablejs.service';\n\nexport type SortableData = any | any[];\n\nconst getIndexesFromEvent = (event: SortableEvent) => {\n if (event.hasOwnProperty('newDraggableIndex') && event.hasOwnProperty('oldDraggableIndex')) {\n return {\n new: event.newDraggableIndex,\n old: event.oldDraggableIndex,\n };\n } else {\n return {\n new: event.newIndex,\n old: event.oldIndex,\n };\n }\n};\n\n@Directive({\n selector: '[sortablejs]',\n standalone: true,\n})\nexport class SortablejsDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n sortablejs: SortableData; // array or a FormArray\n\n @Input()\n sortablejsContainer: string;\n\n @Input()\n sortablejsOptions: Options;\n\n @Input()\n sortablejsCloneFunction: (item: any) => any;\n\n private sortableInstance: any;\n\n @Output() sortablejsInit = new EventEmitter();\n\n constructor(\n @Optional() @Inject(GLOBALS) private globalConfig: Options,\n private service: SortablejsService,\n private element: ElementRef,\n private zone: NgZone,\n private renderer: Renderer2,\n ) {\n }\n\n ngOnInit() {\n if (Sortable && Sortable.create) { // Sortable does not exist in angular universal (SSR)\n this.create();\n }\n }\n\n ngOnChanges(changes: { [prop in keyof SortablejsDirective]: SimpleChange }) {\n const optionsChange: SimpleChange = changes.sortablejsOptions;\n\n if (optionsChange && !optionsChange.isFirstChange()) {\n const previousOptions: Options = optionsChange.previousValue;\n const currentOptions: Options = optionsChange.currentValue;\n\n Object.keys(currentOptions).forEach(optionName => {\n if (currentOptions[optionName] !== previousOptions[optionName]) {\n // use low-level option setter\n this.sortableInstance.option(optionName, this.options[optionName]);\n }\n });\n }\n }\n\n ngOnDestroy() {\n if (this.sortableInstance) {\n this.sortableInstance.destroy();\n }\n }\n\n private create() {\n const container = this.sortablejsContainer ? this.element.nativeElement.querySelector(this.sortablejsContainer) : this.element.nativeElement;\n\n setTimeout(() => {\n this.sortableInstance = Sortable.create(container, this.options);\n this.sortablejsInit.emit(this.sortableInstance);\n }, 0);\n }\n\n private getBindings(): SortablejsBindings {\n if (!this.sortablejs) {\n return new SortablejsBindings([]);\n } else if (this.sortablejs instanceof SortablejsBindings) {\n return this.sortablejs;\n } else {\n return new SortablejsBindings([this.sortablejs]);\n }\n }\n\n private get options() {\n return {...this.optionsWithoutEvents, ...this.overridenOptions};\n }\n\n private get optionsWithoutEvents() {\n return {...(this.globalConfig || {}), ...(this.sortablejsOptions || {})};\n }\n\n private proxyEvent(eventName: string, ...params: any[]) {\n this.zone.run(() => { // re-entering zone, see https://github.com/SortableJS/angular-sortablejs/issues/110#issuecomment-408874600\n if (this.optionsWithoutEvents && this.optionsWithoutEvents[eventName]) {\n this.optionsWithoutEvents[eventName](...params);\n }\n });\n }\n\n private get isCloning() {\n return this.sortableInstance.options.group.checkPull(this.sortableInstance, this.sortableInstance) === 'clone';\n }\n\n private clone<T>(item: T): T {\n // by default pass the item through, no cloning performed\n return (this.sortablejsCloneFunction || (subitem => subitem))(item);\n }\n\n private get overridenOptions(): Options {\n // always intercept standard events but act only in case items are set (bindingEnabled)\n // allows to forget about tracking this.items changes\n return {\n onAdd: (event: SortableEvent) => {\n this.service.transfer = (items: any[]) => {\n this.getBindings().injectIntoEvery(event.newIndex, items);\n this.proxyEvent('onAdd', event);\n };\n\n this.proxyEvent('onAddOriginal', event);\n },\n onRemove: (event: SortableEvent) => {\n const bindings = this.getBindings();\n\n if (bindings.provided) {\n if (this.isCloning) {\n this.service.transfer(bindings.getFromEvery(event.oldIndex).map(item => this.clone(item)));\n\n // great thanks to https://github.com/tauu\n // event.item is the original item from the source list which is moved to the target list\n // event.clone is a clone of the original item and will be added to source list\n // If bindings are provided, adding the item dom element to the target list causes artifacts\n // as it interferes with the rendering performed by the angular template.\n // Therefore we remove it immediately and also move the original item back to the source list.\n // (event handler may be attached to the original item and not its clone, therefore keeping\n // the original dom node, circumvents side effects )\n this.renderer.removeChild(event.item.parentNode, event.item);\n this.renderer.insertBefore(event.clone.parentNode, event.item, event.clone);\n this.renderer.removeChild(event.clone.parentNode, event.clone);\n } else {\n this.service.transfer(bindings.extractFromEvery(event.oldIndex));\n }\n\n this.service.transfer = null;\n }\n\n this.proxyEvent('onRemove', event);\n },\n onUpdate: (event: SortableEvent) => {\n const bindings = this.getBindings();\n const indexes = getIndexesFromEvent(event);\n\n bindings.injectIntoEvery(indexes.new, bindings.extractFromEvery(indexes.old));\n this.proxyEvent('onUpdate', event);\n },\n };\n }\n\n}\n\ninterface SortableEvent {\n oldIndex: number;\n newIndex: number;\n oldDraggableIndex?: number;\n newDraggableIndex?: number;\n item: HTMLElement;\n clone: HTMLElement;\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {GLOBALS} from './globals';\nimport {SortablejsDirective} from './sortablejs.directive';\nimport {Options} from 'sortablejs';\n\n@NgModule({\n imports: [SortablejsDirective],\n exports: [SortablejsDirective],\n})\nexport class SortablejsModule {\n\n public static forRoot(globalOptions: Options): ModuleWithProviders<SortablejsModule> {\n return {\n ngModule: SortablejsModule,\n providers: [\n {provide: GLOBALS, useValue: globalOptions},\n ],\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SortablejsService"],"mappings":"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"}