UNPKG

@obliczeniowo/elementary

Version:
1 lines 42.2 kB
{"version":3,"file":"obliczeniowo-elementary-sorting.mjs","sources":["../../../../projects/components/sorting/components/sorting-option/sorting-option.component.ts","../../../../projects/components/sorting/components/sorting-option/sorting-option.component.html","../../../../projects/components/sorting/functions/sort.ts","../../../../projects/components/sorting/components/sort/sort.component.ts","../../../../projects/components/sorting/components/sort/sort.component.html","../../../../projects/components/sorting/components/table-sort/table-sort.component.ts","../../../../projects/components/sorting/components/table-sort/table-sort.component.html","../../../../projects/components/sorting/sorting.module.ts","../../../../projects/components/sorting/obliczeniowo-elementary-sorting.ts"],"sourcesContent":["import {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { SortOption } from '../../interfaces/sort-option';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\r\n\r\nexport interface NameItem {\r\n name: string;\r\n text: string;\r\n}\r\n\r\n@Component({\r\n selector: 'obl-sorting-option',\r\n templateUrl: './sorting-option.component.html',\r\n styleUrl: './sorting-option.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: SortingOptionComponent,\r\n },\r\n ],\r\n standalone: false\r\n})\r\nexport class SortingOptionComponent implements ControlValueAccessor {\r\n @Input() option: SortOption = {\r\n id: 0,\r\n name: '',\r\n order: 'ASC',\r\n };\r\n\r\n @Input() names: NameItem[] = [];\r\n\r\n @Input() translations: { [en: string]: string } = {};\r\n\r\n @Input() mode: 'single' | 'add' | 'remove' = 'single';\r\n\r\n @Output() changed = new EventEmitter<SortOption>();\r\n @Output() nameChanged = new EventEmitter<SortOption>();\r\n @Output() orderChanged = new EventEmitter<SortOption>();\r\n @Output() add = new EventEmitter<SortOption>();\r\n @Output() remove = new EventEmitter<SortOption>();\r\n\r\n protected nameItems: DropdownSelectItem<any>[] = [];\r\n\r\n order: DropdownSelectItem<any>[] = [\r\n {\r\n id: 'ASC',\r\n text: 'Ascending',\r\n },\r\n {\r\n id: 'DESC',\r\n text: 'Descending',\r\n },\r\n ];\r\n\r\n @Input()\r\n @HostBinding('class.disabled')\r\n disabled = false;\r\n\r\n /**\r\n * Enable type text animation for label\r\n */\r\n @Input() labelAnimation = false;\r\n\r\n constructor(\r\n private readonly settings: InputWrappersDefaultSettingsService\r\n ) {\r\n this.labelAnimation = this.settings.labelAnimation.editInput;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.names && this.names) {\r\n this.nameItems = this.names.map((name) => ({\r\n id: name.name,\r\n text: name.text,\r\n }));\r\n }\r\n if (changes.translations) {\r\n this.order.forEach(\r\n (order) =>\r\n (order.text =\r\n order.id === 'ASC'\r\n ? this.translations.Ascending || 'Ascending'\r\n : this.translations.Descending || 'Descending')\r\n );\r\n }\r\n }\r\n\r\n setOrder(order: DropdownSelectItem<any>) {\r\n this.option.order = order.id as any;\r\n this.changed.emit(this.option);\r\n this.orderChanged.emit(this.option);\r\n }\r\n\r\n setName(name: DropdownSelectItem<any>) {\r\n this.option.name = name.id as string;\r\n\r\n this.changed.emit(this.option);\r\n this.nameChanged.emit(this.option);\r\n }\r\n\r\n onChange = (value: { sort: SortOption; names?: NameItem[] }) => {};\r\n\r\n onTouched = () => {};\r\n\r\n writeValue(value: { sort: SortOption; names?: NameItem[] }): void {\r\n this.option = value.sort;\r\n this.names = value.names || this.names;\r\n this.nameItems = this.names.map((name) => ({\r\n id: name.name,\r\n text: name.text,\r\n }));\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n onAdd() {\r\n if (this.option.name !== '') {\r\n this.add.emit({ ...this.option });\r\n this.option.name = '';\r\n }\r\n }\r\n\r\n onRemove() {\r\n if (this.option.name !== '') {\r\n this.remove.emit(this.option);\r\n }\r\n }\r\n}\r\n","<obl-dropdown-select\r\n [label]=\"'Sort by' | oblTranslation : translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n [items]=\"nameItems\"\r\n [select]=\"option.name\"\r\n [disabled]=\"disabled || mode === 'remove'\"\r\n (changed)=\"setName($event)\"\r\n></obl-dropdown-select>\r\n\r\n<obl-dropdown-select\r\n [label]=\"'Order' | oblTranslation : translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n [items]=\"order\"\r\n [select]=\"option.order\"\r\n [disabled]=\"disabled\"\r\n (changed)=\"setOrder($event)\"\r\n></obl-dropdown-select>\r\n\r\n@if (mode !== 'single') {\r\n <button\r\n oblButton\r\n [disabled]=\"option.name === '' || undefined\"\r\n [icon]=\"mode === 'add' ? 'add' : 'subtract'\"\r\n (click)=\"mode === 'add' ? onAdd() : onRemove()\"\r\n ></button>\r\n}\r\n","import { SortOption } from '../interfaces/sort-option';\r\n\r\nexport function sort(data: { [key: string]: any }[], options: SortOption[]) {\r\n if (options.length) {\r\n const sort = (first: string, second: string, order: 'ASC' | 'DESC') => {\r\n return order === 'ASC'\r\n ? first.localeCompare(second)\r\n : second.localeCompare(first);\r\n };\r\n\r\n const sortNumbers = (\r\n first: number,\r\n second: number,\r\n order: 'ASC' | 'DESC'\r\n ) => {\r\n return order === 'ASC' ? first - second : second - first;\r\n };\r\n\r\n return data.sort((c, p) => {\r\n let compare = 0;\r\n for (const option of options) {\r\n compare =\r\n typeof c[option.name] === 'string' &&\r\n typeof p[option.name] === 'string'\r\n ? sort(\r\n c[option.name].toString(),\r\n p[option.name].toString(),\r\n option.order\r\n )\r\n : sortNumbers(c[option.name], p[option.name], option.order);\r\n\r\n if (compare !== 0) {\r\n break;\r\n }\r\n }\r\n return compare;\r\n });\r\n } else {\r\n return data;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { NameItem } from '../sorting-option/sorting-option.component';\r\nimport { SortOption } from '../../interfaces/sort-option';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { keys, keysValues } from '@obliczeniowo/elementary/objects';\r\nimport { cloneDeep } from 'lodash';\r\nimport {\r\n DropdownSelectComponent,\r\n DropdownSelectItem,\r\n} from '@obliczeniowo/elementary/dropdown-select';\r\nimport { sort } from '../../functions/sort';\r\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\r\n\r\n@Component({\r\n selector: 'obl-sort',\r\n templateUrl: './sort.component.html',\r\n styleUrl: './sort.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: SortComponent,\r\n },\r\n ],\r\n standalone: false\r\n})\r\nexport class SortComponent implements ControlValueAccessor {\r\n protected touchedDragBar = false;\r\n\r\n protected settingsItems: DropdownSelectItem<SortOption>[] = [];\r\n\r\n protected errors: { [key: string]: { [key: string]: boolean } | null } = {};\r\n\r\n /** define if list is opened */\r\n isOpen = false;\r\n /** define if element is touched */\r\n touched = false;\r\n\r\n @Input() names: NameItem[] = [];\r\n\r\n @Input() options: SortOption[] = [];\r\n\r\n @Input() translations: { [en: string]: string } = {};\r\n\r\n @Input() settings?: { [name: string]: SortOption[] };\r\n\r\n @Input() input?: { [key: string]: any }[];\r\n\r\n @Input()\r\n @HostBinding('class.disabled')\r\n disabled = false;\r\n\r\n /**\r\n * Enable type text animation for label\r\n */\r\n @Input() labelAnimation = false;\r\n\r\n @Output() settingsChanged = new EventEmitter<{\r\n [name: string]: SortOption[]\r\n }>();\r\n\r\n @Output() output = new EventEmitter<{ [key: string]: any }[]>();\r\n\r\n @Output() changed = new EventEmitter<SortOption[]>();\r\n\r\n @ViewChild('selectedSetting') selected?: DropdownSelectComponent;\r\n @ViewChild('settingsName') settingsName?: ElementRef<HTMLInputElement>;\r\n\r\n protected available: NameItem[] = [];\r\n\r\n constructor(\r\n protected change: ChangeDetectorRef,\r\n private readonly globalSettings: InputWrappersDefaultSettingsService\r\n ) {\r\n this.labelAnimation = this.globalSettings.labelAnimation.editInput;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.settings) {\r\n if (this.settings) {\r\n this.updateSettingsItems();\r\n } else {\r\n this.settingsItems = [];\r\n }\r\n this.sort();\r\n }\r\n\r\n if (changes.input) {\r\n this.sort();\r\n }\r\n\r\n if ((changes.names || changes.options) && this.names && this.options) {\r\n this.setAvailable();\r\n }\r\n }\r\n\r\n toggle(event: any, touched = this.touchedDragBar): void {\r\n if (touched) {\r\n return;\r\n }\r\n event.stopPropagation();\r\n this.touchedDragBar = false;\r\n if (this.isOpen) {\r\n this.isOpen = false;\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n close(touched = this.touchedDragBar): void {\r\n if (!touched) {\r\n this.isOpen = false;\r\n this.touchedDragBar = false;\r\n } else {\r\n this.touchedDragBar = touched;\r\n }\r\n }\r\n\r\n open(): void {\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.touchedDragBar = false;\r\n\r\n setTimeout(() => {\r\n this.checkSettingSelection();\r\n });\r\n }\r\n }\r\n\r\n checkSettingSelection() {\r\n if (\r\n this.selected?.selected &&\r\n JSON.stringify(this.selected.selected.templateData) !==\r\n JSON.stringify(this.options)\r\n ) {\r\n this.selected.selected = undefined;\r\n }\r\n }\r\n\r\n onTouchedDragBar(touched: boolean, element: any): void {\r\n this.touchedDragBar = touched;\r\n element.parentElement.style.width = 0;\r\n }\r\n\r\n add(option: SortOption) {\r\n if (this.options.find((o) => o.name === option.name)) {\r\n return;\r\n }\r\n option.id = this.options.length + 1;\r\n this.options.push(option);\r\n this.onChanged();\r\n this.setAvailable()\r\n }\r\n\r\n remove(option: SortOption) {\r\n this.options = this.options.filter((sort) => sort.name !== option.name);\r\n this.options.forEach((o, i) => (o.id = i));\r\n this.onChanged();\r\n this.setAvailable();\r\n }\r\n\r\n drop(event: CdkDragDrop<SortOption[]>) {\r\n moveItemInArray(this.options, event.previousIndex, event.currentIndex);\r\n this.options.forEach((o, i) => (o.id = i));\r\n this.onChange({ sort: this.options });\r\n this.onChanged();\r\n }\r\n\r\n setAvailable() {\r\n this.available = this.names.filter(\r\n (name) => !this.options.find((option) => option.name === name.name)\r\n );\r\n }\r\n\r\n sort() {\r\n if (this.input) {\r\n this.output.emit(sort(this.input, this.options));\r\n }\r\n }\r\n\r\n onChange = (value: { sort: SortOption[]; names?: NameItem[] }) => { };\r\n\r\n onTouched = () => { };\r\n\r\n writeValue(value: { sort: SortOption[]; names?: NameItem[] }): void {\r\n this.options = value.sort;\r\n this.names = value.names || this.names;\r\n this.setAvailable();\r\n }\r\n\r\n changedOption(option: SortOption, index: number) {\r\n this.options[index] = option;\r\n this.onChanged();\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n protected setSettings(item: DropdownSelectItem<SortOption[]>) {\r\n if (item.templateData) {\r\n this.options = cloneDeep(item.templateData);\r\n if (this.settingsName) {\r\n this.settingsName.nativeElement.value = item.id.toString();\r\n }\r\n this.setAvailable();\r\n this.onChange({ sort: this.options });\r\n this.changed.emit(this.options);\r\n }\r\n }\r\n\r\n check() {\r\n const value = this.settingsName?.nativeElement.value;\r\n const err = !value || value === '';\r\n this.errors.settingsName =\r\n (err && {\r\n settingsNameError: !value || value === '',\r\n }) ||\r\n null;\r\n }\r\n\r\n onChanged() {\r\n this.checkSettingSelection();\r\n this.onChange({ sort: this.options });\r\n this.changed.emit(this.options);\r\n this.sort();\r\n }\r\n\r\n saveSettings(input: HTMLInputElement) {\r\n const name = input.value;\r\n if (name && name !== '' && this.options) {\r\n if (!keys(this.settings || {}).find((key) => key === name)) {\r\n this.settings = {\r\n ...(this.settings || {}),\r\n [name]: cloneDeep(this.options),\r\n };\r\n } else {\r\n if (this.settings) {\r\n this.settings[name] = cloneDeep(this.options);\r\n }\r\n }\r\n this.updateSettingsItems();\r\n this.settingsChanged.emit(this.settings);\r\n setTimeout(() => {\r\n if (this.selected) {\r\n this.selected.selected = this.selected.items.find(\r\n (item) => item.id === name\r\n );\r\n }\r\n });\r\n } else {\r\n this.errors.settingsName = {\r\n settingsNameError: !name || name === '',\r\n };\r\n input.classList.add('ng-touched');\r\n }\r\n }\r\n\r\n protected removeSettings(name?: string | number) {\r\n if (name && this.settings?.[name]) {\r\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\r\n delete this.settings[name];\r\n this.updateSettingsItems();\r\n this.settingsChanged.emit(this.settings);\r\n }\r\n }\r\n\r\n protected updateSettingsItems() {\r\n this.settingsItems = keysValues(this.settings || {}).map(\r\n ([key, value]) => ({\r\n id: key,\r\n text: key,\r\n templateData: value,\r\n })\r\n );\r\n }\r\n}\r\n","<button\r\n oblButton\r\n icon=\"asc\"\r\n oblBadge\r\n [show]=\"!!options.length\"\r\n cdkOverlayOrigin\r\n #dropDown=\"cdkOverlayOrigin\"\r\n (click)=\"toggle($event, false)\"\r\n #parent\r\n></button>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"dropDown\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n [cdkConnectedOverlayOffsetX]=\"2\"\r\n (overlayOutsideClick)=\"toggle($event)\"\r\n>\r\n <div\r\n class=\"dropdown-list\"\r\n [style.min-width.px]=\"376\"\r\n [style.max-width]=\"'100vw'\"\r\n #list\r\n cdkDrag\r\n >\r\n <obl-drag-bar\r\n (onTouched)=\"onTouchedDragBar($event, list)\"\r\n (onClose)=\"close(false)\"\r\n cdkDragHandle\r\n #dragbar\r\n ></obl-drag-bar>\r\n @if (settings) {\r\n <div class=\"row\">\r\n @if (settingsItems.length) {\r\n <obl-dropdown-select\r\n [label]=\"'Saved:' | oblTranslation : translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n [items]=\"settingsItems\"\r\n (changed)=\"setSettings($event)\"\r\n #selectedSetting\r\n >\r\n @if (selectedSetting.selected) {\r\n <ng-container suffix>\r\n <button\r\n oblButton\r\n icon=\"subtract\"\r\n (click)=\"removeSettings(selectedSetting?.selected?.id)\"\r\n ></button>\r\n </ng-container>\r\n }\r\n </obl-dropdown-select>\r\n }\r\n <obl-input-wrapper\r\n [label]=\"'Setting name:' | oblTranslation : translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n [errors]=\"errors['settingsName']\"\r\n [translations]=\"translations\"\r\n >\r\n <input\r\n oblInput\r\n type=\"text\"\r\n (change)=\"check()\"\r\n #settingsName\r\n [required]=\"errors['settingsName']\"\r\n />\r\n <button\r\n suffix\r\n oblButton\r\n icon=\"save\"\r\n (click)=\"saveSettings(settingsName)\"\r\n ></button>\r\n </obl-input-wrapper>\r\n </div>\r\n }\r\n @if (options.length) {\r\n <div\r\n class=\"list\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n style=\"z-index: 100000\"\r\n >\r\n @for (option of options; let index = $index; track option;) {\r\n <obl-sorting-option\r\n [option]=\"option\"\r\n [names]=\"names\"\r\n mode=\"remove\"\r\n [translations]=\"translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n (remove)=\"remove($event)\"\r\n (changed)=\"changedOption($event, index)\"\r\n cdkDrag\r\n ></obl-sorting-option>\r\n }\r\n </div>\r\n }\r\n <obl-sorting-option\r\n [names]=\"available\"\r\n mode=\"add\"\r\n [translations]=\"translations\"\r\n [labelAnimation]=\"labelAnimation\"\r\n (add)=\"add($event)\"\r\n ></obl-sorting-option>\r\n </div>\r\n</ng-template>\r\n","import { Component, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\r\n\r\nimport { SortOption } from '../../interfaces/sort-option';\r\n\r\n@Component({\r\n selector: 'thead td[obl-table-sort]',\r\n templateUrl: './table-sort.component.html',\r\n styleUrl: './table-sort.component.scss',\r\n standalone: false\r\n})\r\nexport class TableSortComponent {\r\n @Input({ required: true }) sortName!: string;\r\n\r\n sortOrder?: 'ASC' | 'DESC';\r\n\r\n position: number = 0;\r\n\r\n @Input() sort: SortOption[] = [];\r\n\r\n @Output() changed = new EventEmitter<SortOption[]>();\r\n\r\n order() {\r\n const { sortOrder } = this;\r\n if (sortOrder) {\r\n return sortOrder === 'ASC' ? '↑' : '↓';\r\n }\r\n return ' ';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ((changes.sortName || changes.sortOrder) && this.sortOrder) {\r\n this.set();\r\n }\r\n if (changes.sort) {\r\n const find = this.sort.find(sort => sort.name === this.sortName);\r\n this.position = this.sort.findIndex(sort => sort.name === this.sortName);\r\n if (!find) {\r\n this.sortOrder = undefined;\r\n } else {\r\n this.sortOrder = find.order;\r\n }\r\n }\r\n }\r\n\r\n set() {\r\n const find = this.sort.find(sort => sort.name === this.sortName);\r\n this.position = this.sort.findIndex(sort => sort.name === this.sortName);\r\n if (find && this.sortOrder) {\r\n find.order = this.sortOrder;\r\n } else {\r\n this.sort = this.sortOrder\r\n ? [\r\n ...this.sort,\r\n {\r\n id: 0,\r\n name: this.sortName,\r\n order: this.sortOrder,\r\n },\r\n ]\r\n : this.sort.filter(sort => sort.name !== this.sortName);\r\n }\r\n\r\n this.changed.emit(this.sort);\r\n }\r\n\r\n change() {\r\n const { sortOrder } = this;\r\n\r\n if (!sortOrder) {\r\n this.sortOrder = 'ASC';\r\n } else {\r\n this.sortOrder = sortOrder === 'ASC' ? 'DESC' : undefined;\r\n }\r\n\r\n this.set();\r\n }\r\n\r\n switchPos(event: MouseEvent) {\r\n this.sort = [(this.sort.pop() as any), ...this.sort];\r\n this.changed.emit(this.sort);\r\n event.stopPropagation()\r\n }\r\n}\r\n","<button oblButton (click)=\"change()\">\r\n <ng-content></ng-content>\r\n\r\n <span>\r\n <span>{{ order() }}</span>\r\n @if (sort.length > 1 && position !== -1) {\r\n <button\r\n oblButton\r\n class=\"switch-position\"\r\n (click)=\"switchPos($event)\"\r\n >\r\n {{ position + 1 }}\r\n </button>\r\n }\r\n </span>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { DropdownSelectModule } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\r\n\r\nimport { SortingOptionComponent } from './components/sorting-option/sorting-option.component';\r\nimport { SortComponent } from './components/sort/sort.component';\r\nimport { InputModule } from '@obliczeniowo/elementary/input';\r\nimport { BadgeDirective } from '@obliczeniowo/elementary/badge';\r\nimport { TableSortComponent } from './components/table-sort/table-sort.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SortingOptionComponent,\r\n SortComponent,\r\n TableSortComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule, \r\n DragDropModule, \r\n DropdownSelectModule,\r\n ButtonsModule,\r\n TextPipesModule,\r\n InputModule,\r\n BadgeDirective\r\n ],\r\n exports: [\r\n SortingOptionComponent,\r\n SortComponent,\r\n TableSortComponent\r\n ]\r\n})\r\nexport class SortingModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i3","i5","i7.SortingOptionComponent","i8","i1"],"mappings":"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"}