UNPKG

ng-scroll-picker

Version:

Base logic inspired from https://github.com/hiyali/ng-data-picker

1 lines 32.9 kB
{"version":3,"file":"ng-scroll-picker.mjs","sources":["../../../projects/ng-scroll-picker/src/lib/ng-scroll-picker.component.ts","../../../projects/ng-scroll-picker/src/lib/ng-scroll-picker.module.ts","../../../projects/ng-scroll-picker/src/public-api.ts","../../../projects/ng-scroll-picker/src/ng-scroll-picker.ts"],"sourcesContent":["import {\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n Inject,\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\n\r\nimport { PickerDataModel, PickerResponseModel } from './ng-scroll-data.model';\r\nexport { PickerDataModel, PickerResponseModel };\r\n\r\n@Component({\r\n selector: 'ng-scroll-picker',\r\n template: `\r\n <div class=\"ng-data-picker flex-box\">\r\n <div class=\"picker-handle-layer flex-box dir-column\">\r\n <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n <div data-type=\"middle\" class=\"picker-middle tengah\"></div>\r\n <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n </div>\r\n\r\n <div\r\n #pickerGroupLayer\r\n *ngFor=\"let group of data; let gIndex = index\"\r\n class=\"picker-group\"\r\n [ngClass]=\"getGroupClass(gIndex)\"\r\n >\r\n <div class=\"picker-list\">\r\n <div\r\n *ngIf=\"group.divider; else ngIfElse\"\r\n class=\"picker-item divider\"\r\n [ngClass]=\"getItemClass(gIndex, gIndex, true)\"\r\n >\r\n {{ group.text }}\r\n </div>\r\n\r\n <ng-template #ngIfElse>\r\n <div\r\n #ngIfElse\r\n *ngFor=\"let item of group.list; let iIndex = index\"\r\n class=\"picker-item\"\r\n [ngClass]=\"getItemClass(gIndex, iIndex)\"\r\n [ngStyle]=\"getItemStyle(gIndex, iIndex)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div #pickerHandleLayer class=\"picker-handle-layer flex-box dir-column\">\r\n <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n <div data-type=\"middle\" class=\"picker-middle\"></div>\r\n <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .ng-data-picker {\r\n font-size: 1rem;\r\n height: 10em;\r\n position: relative;\r\n background-color: white;\r\n overflow: hidden;\r\n }\r\n .ng-data-picker.black {\r\n color: white;\r\n }\r\n .ng-data-picker .picker-group {\r\n }\r\n .ng-data-picker .picker-list {\r\n height: 6.25em;\r\n position: relative;\r\n top: 4em;\r\n }\r\n .ng-data-picker .picker-item {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n overflow: hidden;\r\n width: 100%;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n display: block;\r\n text-align: center;\r\n will-change: transform;\r\n contain: strict;\r\n height: 2em;\r\n line-height: 2;\r\n font-size: 1em;\r\n }\r\n .ng-data-picker .selected-item {\r\n }\r\n\r\n /* picker handle layer */\r\n .ng-data-picker .picker-handle-layer {\r\n position: absolute;\r\n width: 100%;\r\n height: calc(100% + 2px);\r\n left: 0;\r\n right: 0;\r\n top: -1px;\r\n bottom: -1px;\r\n }\r\n .ng-data-picker .picker-handle-layer .picker-top {\r\n /* border-bottom: 0.55px solid rgba(74, 73, 89, 0.5); */\r\n background: linear-gradient(\r\n to bottom,\r\n white 2%,\r\n rgba(255, 255, 255, 0.1) 100%\r\n );\r\n transform: translate3d(0, 0, 5.625em);\r\n }\r\n\r\n .ng-data-picker .picker-handle-layer .picker-middle {\r\n height: 2em;\r\n }\r\n\r\n .tengah {\r\n background-color: rgba(220, 220, 220, 1);\r\n border-radius: 5px;\r\n }\r\n\r\n .ng-data-picker .picker-handle-layer .picker-bottom {\r\n /* border-top: 0.55px solid rgba(74, 73, 89, 0.5); */\r\n background: linear-gradient(\r\n to top,\r\n white 2%,\r\n rgba(255, 255, 255, 0.1) 100%\r\n );\r\n transform: translate3d(0, 0, 5.625em);\r\n }\r\n\r\n /* flex system */\r\n .flex-box {\r\n display: flex;\r\n }\r\n .flex-box.dir-column {\r\n flex-direction: column;\r\n }\r\n .flex-box.dir-row {\r\n flex-direction: row;\r\n }\r\n\r\n /* flex system - for items */\r\n .flex-box .weight-1 {\r\n flex: 1;\r\n }\r\n .flex-box .weight-2 {\r\n flex: 2;\r\n }\r\n .flex-box .weight-3 {\r\n flex: 3;\r\n }\r\n .flex-box .weight-4 {\r\n flex: 4;\r\n }\r\n .flex-box .weight-5 {\r\n flex: 5;\r\n }\r\n .flex-box .weight-6 {\r\n flex: 6;\r\n }\r\n .flex-box .weight-7 {\r\n flex: 7;\r\n }\r\n .flex-box .weight-8 {\r\n flex: 8;\r\n }\r\n .flex-box .weight-9 {\r\n flex: 9;\r\n }\r\n .flex-box .weight-10 {\r\n flex: 10;\r\n }\r\n .flex-box .weight-11 {\r\n flex: 11;\r\n }\r\n .flex-box .weight-12 {\r\n flex: 12;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class NgScrollPickerComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @ViewChildren('pickerGroupLayer') pickerGroupLayer: any;\r\n @ViewChild('pickerHandleLayer') pickerHandleLayer: any;\r\n\r\n @Input() data: PickerDataModel[] = [];\r\n @Output() change: EventEmitter<PickerResponseModel> =\r\n new EventEmitter<PickerResponseModel>();\r\n\r\n currentIndexList!: number[];\r\n lastCurrentIndexList!: number[];\r\n groupsRectList!: any[];\r\n touchOrMouse = {\r\n isTouchable: 'ontouchstart' in window,\r\n isMouseDown: false,\r\n };\r\n draggingInfo = {\r\n isDragging: false,\r\n groupIndex: null,\r\n startPageY: null,\r\n } as {\r\n isDragging: boolean;\r\n groupIndex: number | null;\r\n startPageY: number | null;\r\n };\r\n itemPerDegree = 23;\r\n safeDoTimeoutId: any = null;\r\n\r\n constructor(@Inject(ElementRef) elementRef: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.currentIndexList = this.getInitialCurrentIndexList();\r\n this.lastCurrentIndexList = new Array<number>().concat(\r\n this.currentIndexList\r\n );\r\n\r\n this.groupsRectList = new Array(this.data.length);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.eventsRegister();\r\n window.addEventListener('resize', this.safeGetRectsBindEvents.bind(this));\r\n this.getGroupsRectList();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener(\r\n 'resize',\r\n this.safeGetRectsBindEvents.bind(this)\r\n );\r\n }\r\n\r\n setGroupData(gIndex: number, groupData: PickerDataModel) {\r\n if (!this.currentIndexList) {\r\n this.currentIndexList = this.getInitialCurrentIndexList();\r\n }\r\n this.data[gIndex] = groupData;\r\n const iCI = groupData.currentIndex;\r\n let movedIndex = 0;\r\n if (\r\n typeof iCI === 'number' &&\r\n iCI >= 0 &&\r\n groupData.list &&\r\n groupData.list.length &&\r\n iCI <= groupData.list.length - 1\r\n ) {\r\n movedIndex = Math.round(iCI);\r\n }\r\n this.currentIndexList[gIndex] = movedIndex;\r\n this.lastCurrentIndexList = new Array<number>().concat(\r\n this.currentIndexList\r\n );\r\n }\r\n\r\n getInitialCurrentIndexList() {\r\n return this.data.map((item, index) => {\r\n const iCI = item.currentIndex;\r\n if (\r\n typeof iCI === 'number' &&\r\n iCI >= 0 &&\r\n item.list &&\r\n item.list.length &&\r\n iCI <= item.list.length - 1\r\n ) {\r\n return Math.round(iCI);\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n safeGetRectsBindEvents() {\r\n if (this.safeDoTimeoutId) {\r\n clearTimeout(this.safeDoTimeoutId);\r\n }\r\n this.safeDoTimeoutId = setTimeout(() => {\r\n this.getGroupsRectList();\r\n }, 200);\r\n }\r\n\r\n getGroupsRectList() {\r\n if (this.pickerGroupLayer) {\r\n this.pickerGroupLayer.toArray().forEach((item: any, index: number) => {\r\n this.groupsRectList[index] = item.nativeElement.getBoundingClientRect();\r\n });\r\n }\r\n }\r\n\r\n eventsRegister() {\r\n const handleEventLayer = this.pickerHandleLayer.nativeElement;\r\n if (handleEventLayer) {\r\n this.addEventsForElement(handleEventLayer);\r\n }\r\n }\r\n\r\n addEventsForElement(el: any) {\r\n const _ = this.touchOrMouse.isTouchable;\r\n const eventHandlerList = [\r\n { name: _ ? 'touchstart' : 'mousedown', handler: this.handleStart },\r\n { name: _ ? 'touchmove' : 'mousemove', handler: this.handleMove },\r\n { name: _ ? 'touchend' : 'mouseup', handler: this.handleEnd },\r\n { name: _ ? 'touchcancel' : 'mouseleave', handler: this.handleCancel },\r\n { name: 'wheel', handler: this.handleScroll },\r\n ];\r\n eventHandlerList.forEach((item, index) => {\r\n el.removeEventListener(item.name, item.handler, false);\r\n el.addEventListener(item.name, item.handler.bind(this), false);\r\n });\r\n }\r\n\r\n triggerMiddleLayerGroupClick(gIndex: any) {\r\n const data = this.data;\r\n if (data[gIndex].onClick !== undefined) {\r\n const click = data[gIndex].onClick as Function;\r\n if (\r\n typeof gIndex === 'number' &&\r\n typeof data[gIndex].onClick === 'function'\r\n ) {\r\n // click(\r\n // gIndex,\r\n // this.currentIndexList[gIndex],\r\n // this.data[gIndex].list[this.currentIndexList[gIndex]]\r\n // );\r\n const response: PickerResponseModel = {\r\n gIndex,\r\n iIndex: this.currentIndexList[gIndex],\r\n selectedValue: this.data[gIndex].list[this.currentIndexList[gIndex]],\r\n groupName: this.data[gIndex].groupName,\r\n };\r\n click(response);\r\n }\r\n }\r\n }\r\n\r\n triggerAboveLayerClick(ev: any, gIndex: any) {\r\n const movedIndex = this.currentIndexList[gIndex] + 1;\r\n this.currentIndexList[gIndex] = movedIndex;\r\n this.correctionCurrentIndex(ev, gIndex);\r\n }\r\n\r\n triggerMiddleLayerClick(ev: any, gIndex: any) {\r\n this.triggerMiddleLayerGroupClick(gIndex);\r\n }\r\n\r\n triggerBelowLayerClick(ev: any, gIndex: any) {\r\n const movedIndex = this.currentIndexList[gIndex] - 1;\r\n this.currentIndexList[gIndex] = movedIndex;\r\n this.correctionCurrentIndex(ev, gIndex);\r\n }\r\n\r\n getTouchInfo(ev: any) {\r\n return this.touchOrMouse.isTouchable\r\n ? ev.changedTouches[0] || ev.touches[0]\r\n : ev;\r\n }\r\n\r\n getGroupIndexBelongsEvent(ev: any) {\r\n const touchInfo = this.getTouchInfo(ev);\r\n for (let i = 0; i < this.groupsRectList.length; i++) {\r\n const item = this.groupsRectList[i];\r\n if (item.left < touchInfo.pageX && touchInfo.pageX < item.right) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n handleEventClick(ev: any) {\r\n const gIndex = this.getGroupIndexBelongsEvent(ev);\r\n switch (ev.target.dataset.type) {\r\n case 'top':\r\n this.triggerAboveLayerClick(ev, gIndex);\r\n break;\r\n case 'middle':\r\n this.triggerMiddleLayerClick(ev, gIndex);\r\n break;\r\n case 'bottom':\r\n this.triggerBelowLayerClick(ev, gIndex);\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n handleStart(ev: any) {\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n const touchInfo = this.getTouchInfo(ev);\r\n this.draggingInfo.startPageY = touchInfo.pageY;\r\n if (!this.touchOrMouse.isTouchable) {\r\n this.touchOrMouse.isMouseDown = true;\r\n }\r\n }\r\n\r\n handleMove(ev: any) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {\r\n this.draggingInfo.isDragging = true;\r\n this.setCurrentIndexOnMove(ev);\r\n }\r\n }\r\n\r\n handleEnd(ev: any) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (!this.draggingInfo.isDragging) {\r\n this.handleEventClick(ev);\r\n }\r\n this.draggingInfo.isDragging = false;\r\n this.touchOrMouse.isMouseDown = false;\r\n this.correctionAfterDragging(ev);\r\n }\r\n\r\n handleCancel(ev: any) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {\r\n this.correctionAfterDragging(ev);\r\n this.touchOrMouse.isMouseDown = false;\r\n this.draggingInfo.isDragging = false;\r\n }\r\n }\r\n\r\n handleScroll(ev: any) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (ev instanceof WheelEvent) {\r\n ev = ev as WheelEvent;\r\n const gIndex = this.getGroupIndexBelongsEvent(ev);\r\n\r\n const deltaY = ev.deltaY;\r\n\r\n if (deltaY > 0) {\r\n // Scrolling down\r\n console.log('Scrolling down');\r\n this.triggerAboveLayerClick(ev, gIndex);\r\n } else if (deltaY < 0) {\r\n // Scrolling up\r\n console.log('Scrolling up');\r\n this.triggerBelowLayerClick(ev, gIndex);\r\n } else {\r\n // No vertical scrolling\r\n console.log('No vertical scrolling');\r\n }\r\n }\r\n }\r\n\r\n setCurrentIndexOnMove(ev: any) {\r\n const touchInfo = this.getTouchInfo(ev);\r\n if (this.draggingInfo.groupIndex === null) {\r\n this.draggingInfo.groupIndex = this.getGroupIndexBelongsEvent(ev);\r\n }\r\n if (this.draggingInfo.groupIndex !== null) {\r\n const gIndex = this.draggingInfo.groupIndex;\r\n if (\r\n typeof gIndex === 'number' &&\r\n (this.data[gIndex].divider || !this.data[gIndex].list)\r\n ) {\r\n return;\r\n }\r\n if (this.draggingInfo.startPageY !== null) {\r\n const moveCount = (this.draggingInfo.startPageY - touchInfo.pageY) / 32;\r\n const movedIndex = this.currentIndexList[gIndex] + moveCount;\r\n this.currentIndexList[gIndex] = movedIndex;\r\n this.draggingInfo.startPageY = touchInfo.pageY;\r\n }\r\n }\r\n }\r\n\r\n correctionAfterDragging(ev: any) {\r\n const gIndex = this.draggingInfo.groupIndex;\r\n this.correctionCurrentIndex(ev, gIndex);\r\n this.draggingInfo.groupIndex = null;\r\n this.draggingInfo.startPageY = null;\r\n this.getCurrentIndexList();\r\n }\r\n\r\n correctionCurrentIndex(ev: any, gIndex: any) {\r\n setTimeout(() => {\r\n if (\r\n typeof gIndex === 'number' &&\r\n this.data[gIndex].divider !== true &&\r\n this.data[gIndex].list.length > 0\r\n ) {\r\n const unsafeGroupIndex = this.currentIndexList[gIndex];\r\n let movedIndex = unsafeGroupIndex;\r\n if (unsafeGroupIndex > this.data[gIndex].list.length - 1) {\r\n movedIndex = this.data[gIndex].list.length - 1;\r\n } else if (unsafeGroupIndex < 0) {\r\n movedIndex = 0;\r\n }\r\n movedIndex = Math.round(movedIndex);\r\n this.currentIndexList[gIndex] = movedIndex;\r\n if (movedIndex !== this.lastCurrentIndexList[gIndex]) {\r\n const response: PickerResponseModel = {\r\n gIndex,\r\n iIndex: movedIndex,\r\n selectedValue: this.data[gIndex].list[movedIndex],\r\n groupName: this.data[gIndex].groupName,\r\n };\r\n // this.change.emit({\r\n // gIndex,\r\n // iIndex: movedIndex,\r\n // selectedValue: this.data[gIndex].list[movedIndex],\r\n // });\r\n this.change.emit(response);\r\n }\r\n this.lastCurrentIndexList = new Array<number>().concat(\r\n this.currentIndexList\r\n );\r\n }\r\n }, 100);\r\n }\r\n\r\n isCurrentItem(gIndex: any, iIndex: any) {\r\n return this.currentIndexList[gIndex] === iIndex;\r\n }\r\n\r\n getCurrentIndexList() {\r\n return this.currentIndexList;\r\n }\r\n\r\n getGroupClass(gIndex: any) {\r\n const group = this.data[gIndex];\r\n const defaultWeightClass = 'weight-' + (group.weight || 1);\r\n const groupClass = [defaultWeightClass];\r\n if (group.className) {\r\n groupClass.push(group.className);\r\n }\r\n return groupClass;\r\n }\r\n\r\n getItemClass(gIndex: any, iIndex: any, isDivider = false) {\r\n const group = this.data[gIndex];\r\n const itemClass = [];\r\n if (!isDivider && this.isCurrentItem(gIndex, iIndex)) {\r\n itemClass.push('smooth-item-selected');\r\n }\r\n if (group.textAlign) {\r\n itemClass.push('text-' + group.textAlign);\r\n }\r\n return itemClass;\r\n }\r\n\r\n getItemStyle(gIndex: any, iIndex: any) {\r\n const gapCount = this.currentIndexList[gIndex] - iIndex;\r\n if (Math.abs(gapCount) < 90 / this.itemPerDegree) {\r\n const rotateStyle: {\r\n transform: string;\r\n opacity: string;\r\n transition?: string;\r\n color?: string;\r\n } = {\r\n transform:\r\n 'rotateX(' +\r\n gapCount * this.itemPerDegree +\r\n 'deg) translate3d(0, 0, 5.625em)',\r\n opacity: (\r\n 1 -\r\n Math.abs(gapCount) / (90 / this.itemPerDegree)\r\n ).toString(),\r\n // color: gapCount === 0 ? 'rgba(237, 27, 45, 1)' : '',\r\n };\r\n if (!this.draggingInfo.isDragging) {\r\n rotateStyle['transition'] = 'transform 150ms ease-out';\r\n }\r\n return rotateStyle;\r\n }\r\n if (gapCount > 0) {\r\n return { transform: 'rotateX(90deg) translate3d(0, 0, 5.625em)' };\r\n } else {\r\n return { transform: 'rotateX(-90deg) translate3d(0, 0, 5.625em)' };\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgScrollPickerComponent } from './ng-scroll-picker.component';\r\n\r\n@NgModule({\r\n declarations: [NgScrollPickerComponent],\r\n imports: [CommonModule],\r\n exports: [NgScrollPickerComponent],\r\n})\r\nexport class NgScrollPickerModule {}\r\n","/*\r\n * Public API Surface of ng-scroll-picker\r\n */\r\n\r\nexport * from './lib/ng-scroll-picker.component';\r\nexport * from './lib/ng-scroll-picker.module';\r\nexport * from './lib/ng-scroll-data.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}