@sd-angular/core 1.3.211 → 1.3.213
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-select.umd.js +5 -5
- package/bundles/sd-angular-core-select.umd.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.min.js +2 -2
- package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.js +8 -1
- package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-file.umd.min.js.map +1 -1
- package/esm2015/select/src/lib/select.component.js +7 -8
- package/esm2015/upload-file/src/lib/upload-file.component.js +9 -2
- package/fesm2015/sd-angular-core-select.js +3 -3
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-file.js +8 -1
- package/fesm2015/sd-angular-core-upload-file.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.211.tgz → sd-angular-core-1.3.213.tgz} +0 -0
- package/select/sd-angular-core-select.metadata.json +1 -1
- package/select/src/lib/select.component.d.ts +6 -7
- package/upload-file/sd-angular-core-upload-file.metadata.json +1 -1
- package/upload-file/src/lib/upload-file.component.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-upload-file.js","sources":["../../../../projects/sd-core/upload-file/src/lib/upload-file.component.ts","../../../../projects/sd-core/upload-file/src/lib/upload-file.module.ts","../../../../projects/sd-core/upload-file/src/public-api.ts","../../../../projects/sd-core/upload-file/sd-angular-core-upload-file.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ViewChildren,\r\n QueryList,\r\n OnDestroy,\r\n ViewChild,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport * as uuid from 'uuid';\r\nimport $ from 'jquery';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\n\r\n// https://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded\r\n@Component({\r\n selector: 'sd-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n styleUrls: ['./upload-file.component.scss']\r\n})\r\nexport class SdUploadFile implements OnInit, AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n #isMobileOrTablet = false;\r\n #canvas1 = `C${uuid.v4()}`;\r\n #canvas2 = `C${uuid.v4()}`;\r\n previewFiles: PreviewFile[] = [];\r\n selectedFile: PreviewFile;\r\n @Input() label: string;\r\n @Input() type: 'image' | 'file' = 'file';\r\n @Input() disabled = false;\r\n @Input() extensions: string[] = [];\r\n @Input() max = 1;\r\n @Input() maxSize: number;\r\n @Input() maxWidth: number;\r\n @Input() maxHeight: number;\r\n @Input() scaleToPixel: number;\r\n #srcs: string[];\r\n @Input() set srcs(srcs: string[]) {\r\n if (Array.isArray(srcs)) {\r\n this.#srcs = srcs;\r\n this.#srcChanges.next(this.#srcs);\r\n }\r\n }\r\n @Input() previewWidth: string = '100px';\r\n @Input() previewHeight: string = '100px';\r\n @Input() align: 'left' | 'center' = 'center';\r\n #model: PreviewFile[];\r\n @Input() set model(model: (string | PreviewFile)[]) {\r\n if (Array.isArray(model) && this.#model !== model) {\r\n let flag = false;\r\n this.#model = model.map(src => {\r\n if (typeof (src) === 'string') {\r\n let extension = null;\r\n const baseSrc = src.split('?')?.[0];\r\n const lastDot = baseSrc.lastIndexOf('.');\r\n if (lastDot > 0) {\r\n extension = baseSrc.substring(lastDot + 1);\r\n }\r\n flag = true;\r\n return {\r\n file: null,\r\n previewSrc: null,\r\n src,\r\n isPreviewImage: this.type === 'image',\r\n extension\r\n }\r\n }\r\n return src;\r\n });\r\n if (flag) {\r\n this.modelChange.emit(this.#model);\r\n }\r\n this.#modelChanges.next(this.#model);\r\n } else {\r\n this.#model = [];\r\n }\r\n }\r\n @Output() loaded = new EventEmitter<PreviewFile[]>();\r\n @Output() modelChange = new EventEmitter<PreviewFile[]>();\r\n @Output() sdChange = new EventEmitter<PreviewFile[]>();\r\n @ViewChildren('dropElement') dropElements: QueryList<ElementRef>;\r\n @ViewChild('canvas') canvas: ElementRef;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n #subscription = new Subscription();\r\n #currentDropContainer: any;\r\n #srcChanges = new Subject();\r\n #modelChanges = new Subject();\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#srcChanges.pipe(startWith(this.#srcs)).subscribe(() => {\r\n if (!Array.isArray(this.#srcs)) {\r\n return;\r\n }\r\n const previewFiles = this.#srcs.map(src => {\r\n let extension = null;\r\n const baseSrc = src.split('?')?.[0];\r\n const lastDot = baseSrc.lastIndexOf('.');\r\n if (lastDot > 0) {\r\n extension = baseSrc.substring(lastDot + 1);\r\n }\r\n return {\r\n file: null,\r\n previewSrc: null,\r\n src,\r\n isPreviewImage: this.type === 'image',\r\n extension\r\n }\r\n });\r\n this.previewFiles = previewFiles;\r\n this.modelChange.emit(previewFiles);\r\n // this.sdChange.emit(previewFiles);\r\n }));\r\n this.#subscription.add(this.#modelChanges.pipe(startWith([])).subscribe(() => {\r\n if (Array.isArray(this.#model)) {\r\n this.previewFiles = this.#model;\r\n }\r\n }));\r\n if (!this.#isMobileOrTablet) {\r\n if (this.dropElements.length > 0) {\r\n const dropContainer = this.dropElements.first.nativeElement;\r\n this.#currentDropContainer = dropContainer;\r\n dropContainer.addEventListener('dragover', (evt: Event) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.9;\r\n dropContainer.style.border = '2px solid grey';\r\n });\r\n dropContainer.addEventListener('dragenter', (evt: Event) => {\r\n evt.preventDefault();\r\n });\r\n dropContainer.addEventListener('dragleave', (evt: Event) => {\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n });\r\n dropContainer.addEventListener('drop', async (evt: DragEvent) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n await this.#uploadFile(evt.dataTransfer);\r\n });\r\n }\r\n this.#subscription.add(this.dropElements.changes.subscribe(() => {\r\n if (this.dropElements.length > 0 && this.#currentDropContainer !== this.dropElements.first.nativeElement) {\r\n const dropContainer = this.dropElements.first.nativeElement;\r\n this.#currentDropContainer = dropContainer;\r\n dropContainer.addEventListener('dragover', (evt: Event) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.9;\r\n dropContainer.style.border = '2px solid grey';\r\n });\r\n dropContainer.addEventListener('dragenter', (evt: Event) => {\r\n evt.preventDefault();\r\n });\r\n dropContainer.addEventListener('dragleave', (evt: Event) => {\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n });\r\n dropContainer.addEventListener('drop', async (evt: DragEvent) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n await this.#uploadFile(evt.dataTransfer);\r\n });\r\n }\r\n }));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reload = (previewFiles: PreviewFile[]) => {\r\n if (Array.isArray(previewFiles)) {\r\n this.previewFiles = previewFiles;\r\n this.modelChange.emit(previewFiles);\r\n // this.sdChange.emit(previewFiles);\r\n }\r\n }\r\n\r\n #validate = async (file: File): Promise<string> => {\r\n if (this.type === 'image') {\r\n if (file.type.split('/')[0] !== 'image') {\r\n return `[${file.name}] ${this.translateService.translate('Uploaded file is not an image')}`;\r\n }\r\n }\r\n if (this.extensions?.length) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n if (!this.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n return `[${file.name}] ${this.translateService.translate('Uploaded file is not match extension')} ${this.extensions.join(', ')}`;\r\n }\r\n }\r\n if (this.maxSize) {\r\n if (this.maxSize * 1024 * 1024 < file.size) {\r\n return `[${file.name}] ${this.translateService.translate('Max file size')} ${this.maxSize} Mbs`;\r\n }\r\n }\r\n if (this.type === 'image' && (this.maxWidth || this.maxHeight)) {\r\n const message: string = await new Promise(resolve => {\r\n const URL = window.URL || window.webkitURL;\r\n const img = new Image();\r\n img.onload = () => {\r\n if (this.maxWidth && img.width > this.maxWidth) {\r\n resolve(`[${file.name}] ${this.translateService.translate('Max image width')} ${this.maxWidth}px`);\r\n }\r\n if (this.maxHeight && img.height > this.maxHeight) {\r\n resolve(`[${file.name}] ${this.translateService.translate('Max image height')} ${this.maxHeight}px`);\r\n }\r\n resolve(null);\r\n };\r\n img.src = URL.createObjectURL(file);\r\n });\r\n if (message) {\r\n return message;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n #preview = () => {\r\n let sum = 0;\r\n for (const previewFile of this.previewFiles.filter(e => e.file)) {\r\n const reader = new FileReader();\r\n reader.onload = (evt) => {\r\n previewFile.previewSrc = evt.target.result;\r\n previewFile.isPreviewImage = previewFile.file?.type.split('/')[0] === 'image';\r\n this.ref.detectChanges();\r\n sum++;\r\n if (sum === this.previewFiles.filter(e => e.file).length) this.loaded.emit(this.previewFiles)\r\n }\r\n reader.readAsDataURL(previewFile.file);\r\n }\r\n }\r\n\r\n onUpload = (previewFile?: PreviewFile) => {\r\n if ($(`#${this.id}`).length) {\r\n $('body').children(`#${this.id}`).remove();\r\n }\r\n if (previewFile || this.max === 1) {\r\n $('body').append(`<input id=\"${this.id}\" style=\"display: none\" type=\"file\" />`);\r\n } else {\r\n $('body').append(`<input id=\"${this.id}\" style=\"display: none\" type=\"file\" multiple />`);\r\n }\r\n $(`#${this.id}`).on('change', async (evt: any) => {\r\n await this.#uploadFile(evt.target, previewFile);\r\n $('body').children(`#${this.id}`).remove();\r\n });\r\n $(`#${this.id}`).trigger('click');\r\n }\r\n\r\n #uploadFile = async (target: DataTransfer, previewFile?: PreviewFile) => {\r\n if (!target.files.length) {\r\n return;\r\n }\r\n const originFiles = target.files;\r\n const files: File[] = [];\r\n if (!previewFile) {\r\n if (originFiles.length + this.previewFiles.length > this.max) {\r\n this.notifyService.notify.warning(`${this.translateService.translate('Max number of files')} ${this.max}`);\r\n return;\r\n }\r\n for (let i = 0; i < originFiles.length; i++) {\r\n let file = originFiles.item(i);\r\n if (this.type === 'image' && this.scaleToPixel > 0) {\r\n file = await this.#resize(file);\r\n }\r\n const message = await this.#validate(file);\r\n if (message) {\r\n this.notifyService.notify.warning(message);\r\n return;\r\n }\r\n files.push(file);\r\n }\r\n for (const file of files) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n this.previewFiles.push({\r\n file,\r\n isPreviewImage: false,\r\n previewSrc: null,\r\n src: null,\r\n fileName: file.name,\r\n extension\r\n });\r\n }\r\n } else {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n let file = originFiles.item(0);\r\n if (this.type === 'image' && this.scaleToPixel > 0) {\r\n file = await this.#resize(file);\r\n }\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n this.previewFiles[idx] = {\r\n file,\r\n isPreviewImage: false,\r\n previewSrc: null,\r\n src: null,\r\n fileName: file.name,\r\n extension\r\n };\r\n }\r\n this.#preview();\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (previewFile: PreviewFile) => {\r\n this.notifyService.confirmDelete().then(() => {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n this.previewFiles.splice(idx, 1);\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n });\r\n }\r\n\r\n onDrop = (event: CdkDragDrop<string[]>) => {\r\n moveItemInArray(this.previewFiles, event.previousIndex, event.currentIndex);\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n }\r\n\r\n #resize = async (file: File): Promise<File> => {\r\n if (!this.scaleToPixel) {\r\n return file;\r\n }\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n return file;\r\n }\r\n return await new Promise((resolve, reject) => {\r\n const URL = window.URL || window.webkitURL;\r\n const img = new Image();\r\n img.onload = () => {\r\n try {\r\n if (img.width * img.height <= this.scaleToPixel) {\r\n return resolve(file);\r\n }\r\n const canvas1 = document.createElement('canvas');\r\n canvas1.setAttribute('id', this.#canvas1);\r\n const ctx1 = canvas1.getContext('2d');\r\n const { width, height } = this.#scale(img.width, img.height, this.scaleToPixel);\r\n canvas1.width = width;\r\n canvas1.height = height;\r\n\r\n const canvas2 = document.createElement('canvas');\r\n canvas2.setAttribute('id', this.#canvas2);\r\n const ctx2 = canvas2.getContext('2d');\r\n canvas2.width = width;\r\n canvas2.height = height;\r\n ctx2.drawImage(img, 0, 0, canvas2.width, canvas2.height);\r\n ctx2.drawImage(canvas2, 0, 0, canvas2.width * 0.5, canvas2.height * 0.5);\r\n ctx1.drawImage(canvas2, 0, 0, canvas2.width * 0.5, canvas2.height * 0.5, 0, 0, canvas1.width, canvas1.height);\r\n canvas1.toBlob(blob => {\r\n resolve(this.#blobToFile(blob, `${file.name.substring(0, lastDot)}.png`));\r\n });\r\n } catch (err) {\r\n reject(err);\r\n } finally {\r\n $(`#${this.#canvas1}`).remove();\r\n $(`#${this.#canvas2}`).remove();\r\n }\r\n };\r\n img.src = URL.createObjectURL(file);\r\n });\r\n }\r\n\r\n #scale = (width: number, height: number, scaleToPixcel: number) => {\r\n if (!width || !height || !scaleToPixcel) {\r\n return {\r\n width,\r\n height\r\n };\r\n }\r\n const ratio = width / height;\r\n for (let i = 0; i < width; i++) {\r\n width -= i;\r\n height = Math.trunc(width / ratio);\r\n if (width * height <= scaleToPixcel) {\r\n break;\r\n }\r\n }\r\n return {\r\n width,\r\n height\r\n };\r\n }\r\n\r\n onSelect = (file: PreviewFile) => {\r\n if (!this.#isMobileOrTablet) {\r\n return;\r\n }\r\n if (this.selectedFile !== file) {\r\n this.selectedFile = file;\r\n } else {\r\n this.selectedFile = null;\r\n }\r\n }\r\n\r\n #blobToFile = (blob: Blob, fileName: string): File => {\r\n const temp: any = blob;\r\n temp.lastModifiedDate = new Date();\r\n temp.name = fileName;\r\n return blob as File;\r\n }\r\n}\r\n\r\nexport interface PreviewFile {\r\n file: File;\r\n src: string;\r\n previewSrc: string | ArrayBuffer;\r\n isPreviewImage: boolean;\r\n fileName?: string;\r\n extension?: string;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DeviceDetectorModule } from 'ngx-device-detector';\r\nimport { SdUploadFile } from './upload-file.component';\r\nimport { SdNotifyModule } from '@sd-angular/core/notify';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { SdImagePreviewModule } from '@sd-angular/core/image-preview';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DeviceDetectorModule.forRoot(),\r\n MatButtonModule,\r\n MatIconModule,\r\n DragDropModule,\r\n SdNotifyModule,\r\n SdTranslateModule,\r\n SdImagePreviewModule\r\n ],\r\n declarations: [\r\n SdUploadFile\r\n ],\r\n exports: [\r\n SdUploadFile\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdUploadFileModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport { SdUploadFileModule } from './lib/upload-file.module';\r\nexport * from './lib/upload-file.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-upload-file.js","sources":["../../../../projects/sd-core/upload-file/src/lib/upload-file.component.ts","../../../../projects/sd-core/upload-file/src/lib/upload-file.module.ts","../../../../projects/sd-core/upload-file/src/public-api.ts","../../../../projects/sd-core/upload-file/sd-angular-core-upload-file.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ViewChildren,\r\n QueryList,\r\n OnDestroy,\r\n ViewChild,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport * as uuid from 'uuid';\r\nimport $ from 'jquery';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\n\r\n// https://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded\r\n@Component({\r\n selector: 'sd-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n styleUrls: ['./upload-file.component.scss']\r\n})\r\nexport class SdUploadFile implements OnInit, AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n #isMobileOrTablet = false;\r\n #canvas1 = `C${uuid.v4()}`;\r\n #canvas2 = `C${uuid.v4()}`;\r\n previewFiles: PreviewFile[] = [];\r\n selectedFile: PreviewFile;\r\n @Input() label: string;\r\n @Input() type: 'image' | 'file' = 'file';\r\n @Input() disabled = false;\r\n @Input() extensions: string[] = [];\r\n @Input() max = 1;\r\n @Input() maxSize: number;\r\n @Input() maxWidth: number;\r\n @Input() maxHeight: number;\r\n @Input() scaleToPixel: number;\r\n #srcs: string[];\r\n @Input() set srcs(srcs: string[]) {\r\n if (Array.isArray(srcs)) {\r\n this.#srcs = srcs;\r\n this.#srcChanges.next(this.#srcs);\r\n }\r\n }\r\n @Input() previewWidth: string = '100px';\r\n @Input() previewHeight: string = '100px';\r\n @Input() align: 'left' | 'center' = 'center';\r\n @Input() imageValidatorFn: (image: HTMLImageElement) => string;\r\n #model: PreviewFile[];\r\n @Input() set model(model: (string | PreviewFile)[]) {\r\n if (Array.isArray(model) && this.#model !== model) {\r\n let flag = false;\r\n this.#model = model.map(src => {\r\n if (typeof (src) === 'string') {\r\n let extension = null;\r\n const baseSrc = src.split('?')?.[0];\r\n const lastDot = baseSrc.lastIndexOf('.');\r\n if (lastDot > 0) {\r\n extension = baseSrc.substring(lastDot + 1);\r\n }\r\n flag = true;\r\n return {\r\n file: null,\r\n previewSrc: null,\r\n src,\r\n isPreviewImage: this.type === 'image',\r\n extension\r\n }\r\n }\r\n return src;\r\n });\r\n if (flag) {\r\n this.modelChange.emit(this.#model);\r\n }\r\n this.#modelChanges.next(this.#model);\r\n } else {\r\n this.#model = [];\r\n }\r\n }\r\n @Output() loaded = new EventEmitter<PreviewFile[]>();\r\n @Output() modelChange = new EventEmitter<PreviewFile[]>();\r\n @Output() sdChange = new EventEmitter<PreviewFile[]>();\r\n @ViewChildren('dropElement') dropElements: QueryList<ElementRef>;\r\n @ViewChild('canvas') canvas: ElementRef;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n #subscription = new Subscription();\r\n #currentDropContainer: any;\r\n #srcChanges = new Subject();\r\n #modelChanges = new Subject();\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#srcChanges.pipe(startWith(this.#srcs)).subscribe(() => {\r\n if (!Array.isArray(this.#srcs)) {\r\n return;\r\n }\r\n const previewFiles = this.#srcs.map(src => {\r\n let extension = null;\r\n const baseSrc = src.split('?')?.[0];\r\n const lastDot = baseSrc.lastIndexOf('.');\r\n if (lastDot > 0) {\r\n extension = baseSrc.substring(lastDot + 1);\r\n }\r\n return {\r\n file: null,\r\n previewSrc: null,\r\n src,\r\n isPreviewImage: this.type === 'image',\r\n extension\r\n }\r\n });\r\n this.previewFiles = previewFiles;\r\n this.modelChange.emit(previewFiles);\r\n // this.sdChange.emit(previewFiles);\r\n }));\r\n this.#subscription.add(this.#modelChanges.pipe(startWith([])).subscribe(() => {\r\n if (Array.isArray(this.#model)) {\r\n this.previewFiles = this.#model;\r\n }\r\n }));\r\n if (!this.#isMobileOrTablet) {\r\n if (this.dropElements.length > 0) {\r\n const dropContainer = this.dropElements.first.nativeElement;\r\n this.#currentDropContainer = dropContainer;\r\n dropContainer.addEventListener('dragover', (evt: Event) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.9;\r\n dropContainer.style.border = '2px solid grey';\r\n });\r\n dropContainer.addEventListener('dragenter', (evt: Event) => {\r\n evt.preventDefault();\r\n });\r\n dropContainer.addEventListener('dragleave', (evt: Event) => {\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n });\r\n dropContainer.addEventListener('drop', async (evt: DragEvent) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n await this.#uploadFile(evt.dataTransfer);\r\n });\r\n }\r\n this.#subscription.add(this.dropElements.changes.subscribe(() => {\r\n if (this.dropElements.length > 0 && this.#currentDropContainer !== this.dropElements.first.nativeElement) {\r\n const dropContainer = this.dropElements.first.nativeElement;\r\n this.#currentDropContainer = dropContainer;\r\n dropContainer.addEventListener('dragover', (evt: Event) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.9;\r\n dropContainer.style.border = '2px solid grey';\r\n });\r\n dropContainer.addEventListener('dragenter', (evt: Event) => {\r\n evt.preventDefault();\r\n });\r\n dropContainer.addEventListener('dragleave', (evt: Event) => {\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n });\r\n dropContainer.addEventListener('drop', async (evt: DragEvent) => {\r\n evt.preventDefault();\r\n dropContainer.style.opacity = 0.6;\r\n dropContainer.style.border = '2px dashed grey';\r\n await this.#uploadFile(evt.dataTransfer);\r\n });\r\n }\r\n }));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reload = (previewFiles: PreviewFile[]) => {\r\n if (Array.isArray(previewFiles)) {\r\n this.previewFiles = previewFiles;\r\n this.modelChange.emit(previewFiles);\r\n // this.sdChange.emit(previewFiles);\r\n }\r\n }\r\n\r\n #validate = async (file: File): Promise<string> => {\r\n if (this.type === 'image') {\r\n if (file.type.split('/')[0] !== 'image') {\r\n return `[${file.name}] ${this.translateService.translate('Uploaded file is not an image')}`;\r\n }\r\n }\r\n if (this.extensions?.length) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n if (!this.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n return `[${file.name}] ${this.translateService.translate('Uploaded file is not match extension')} ${this.extensions.join(', ')}`;\r\n }\r\n }\r\n if (this.maxSize) {\r\n if (this.maxSize * 1024 * 1024 < file.size) {\r\n return `[${file.name}] ${this.translateService.translate('Max file size')} ${this.maxSize} Mbs`;\r\n }\r\n }\r\n if (this.type === 'image' && (this.maxWidth || this.maxHeight || this.imageValidatorFn)) {\r\n const message: string = await new Promise(resolve => {\r\n const URL = window.URL || window.webkitURL;\r\n const img = new Image();\r\n img.onload = () => {\r\n if (this.maxWidth && img.width > this.maxWidth) {\r\n resolve(`[${file.name}] ${this.translateService.translate('Max image width')} ${this.maxWidth}px`);\r\n return;\r\n }\r\n if (this.maxHeight && img.height > this.maxHeight) {\r\n resolve(`[${file.name}] ${this.translateService.translate('Max image height')} ${this.maxHeight}px`);\r\n return;\r\n }\r\n if (this.imageValidatorFn) {\r\n resolve(this.imageValidatorFn(img))\r\n return;\r\n }\r\n resolve(null);\r\n };\r\n img.src = URL.createObjectURL(file);\r\n });\r\n if (message) {\r\n return message;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n #preview = () => {\r\n let sum = 0;\r\n for (const previewFile of this.previewFiles.filter(e => e.file)) {\r\n const reader = new FileReader();\r\n reader.onload = (evt) => {\r\n previewFile.previewSrc = evt.target.result;\r\n previewFile.isPreviewImage = previewFile.file?.type.split('/')[0] === 'image';\r\n this.ref.detectChanges();\r\n sum++;\r\n if (sum === this.previewFiles.filter(e => e.file).length) this.loaded.emit(this.previewFiles)\r\n }\r\n reader.readAsDataURL(previewFile.file);\r\n }\r\n }\r\n\r\n onUpload = (previewFile?: PreviewFile) => {\r\n if ($(`#${this.id}`).length) {\r\n $('body').children(`#${this.id}`).remove();\r\n }\r\n if (previewFile || this.max === 1) {\r\n $('body').append(`<input id=\"${this.id}\" style=\"display: none\" type=\"file\" />`);\r\n } else {\r\n $('body').append(`<input id=\"${this.id}\" style=\"display: none\" type=\"file\" multiple />`);\r\n }\r\n $(`#${this.id}`).on('change', async (evt: any) => {\r\n await this.#uploadFile(evt.target, previewFile);\r\n $('body').children(`#${this.id}`).remove();\r\n });\r\n $(`#${this.id}`).trigger('click');\r\n }\r\n\r\n #uploadFile = async (target: DataTransfer, previewFile?: PreviewFile) => {\r\n if (!target.files.length) {\r\n return;\r\n }\r\n const originFiles = target.files;\r\n const files: File[] = [];\r\n if (!previewFile) {\r\n if (originFiles.length + this.previewFiles.length > this.max) {\r\n this.notifyService.notify.warning(`${this.translateService.translate('Max number of files')} ${this.max}`);\r\n return;\r\n }\r\n for (let i = 0; i < originFiles.length; i++) {\r\n let file = originFiles.item(i);\r\n if (this.type === 'image' && this.scaleToPixel > 0) {\r\n file = await this.#resize(file);\r\n }\r\n const message = await this.#validate(file);\r\n if (message) {\r\n this.notifyService.notify.warning(message);\r\n return;\r\n }\r\n files.push(file);\r\n }\r\n for (const file of files) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n this.previewFiles.push({\r\n file,\r\n isPreviewImage: false,\r\n previewSrc: null,\r\n src: null,\r\n fileName: file.name,\r\n extension\r\n });\r\n }\r\n } else {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n let file = originFiles.item(0);\r\n if (this.type === 'image' && this.scaleToPixel > 0) {\r\n file = await this.#resize(file);\r\n }\r\n const lastDot = file.name.lastIndexOf('.');\r\n const extension = file.name.substring(lastDot + 1);\r\n this.previewFiles[idx] = {\r\n file,\r\n isPreviewImage: false,\r\n previewSrc: null,\r\n src: null,\r\n fileName: file.name,\r\n extension\r\n };\r\n }\r\n this.#preview();\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (previewFile: PreviewFile) => {\r\n this.notifyService.confirmDelete().then(() => {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n this.previewFiles.splice(idx, 1);\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n });\r\n }\r\n\r\n onDrop = (event: CdkDragDrop<string[]>) => {\r\n moveItemInArray(this.previewFiles, event.previousIndex, event.currentIndex);\r\n this.modelChange.emit(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n }\r\n\r\n #resize = async (file: File): Promise<File> => {\r\n if (!this.scaleToPixel) {\r\n return file;\r\n }\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n return file;\r\n }\r\n return await new Promise((resolve, reject) => {\r\n const URL = window.URL || window.webkitURL;\r\n const img = new Image();\r\n img.onload = () => {\r\n try {\r\n if (img.width * img.height <= this.scaleToPixel) {\r\n return resolve(file);\r\n }\r\n const canvas1 = document.createElement('canvas');\r\n canvas1.setAttribute('id', this.#canvas1);\r\n const ctx1 = canvas1.getContext('2d');\r\n const { width, height } = this.#scale(img.width, img.height, this.scaleToPixel);\r\n canvas1.width = width;\r\n canvas1.height = height;\r\n\r\n const canvas2 = document.createElement('canvas');\r\n canvas2.setAttribute('id', this.#canvas2);\r\n const ctx2 = canvas2.getContext('2d');\r\n canvas2.width = width;\r\n canvas2.height = height;\r\n ctx2.drawImage(img, 0, 0, canvas2.width, canvas2.height);\r\n ctx2.drawImage(canvas2, 0, 0, canvas2.width * 0.5, canvas2.height * 0.5);\r\n ctx1.drawImage(canvas2, 0, 0, canvas2.width * 0.5, canvas2.height * 0.5, 0, 0, canvas1.width, canvas1.height);\r\n canvas1.toBlob(blob => {\r\n resolve(this.#blobToFile(blob, `${file.name.substring(0, lastDot)}.png`));\r\n });\r\n } catch (err) {\r\n reject(err);\r\n } finally {\r\n $(`#${this.#canvas1}`).remove();\r\n $(`#${this.#canvas2}`).remove();\r\n }\r\n };\r\n img.src = URL.createObjectURL(file);\r\n });\r\n }\r\n\r\n #scale = (width: number, height: number, scaleToPixcel: number) => {\r\n if (!width || !height || !scaleToPixcel) {\r\n return {\r\n width,\r\n height\r\n };\r\n }\r\n const ratio = width / height;\r\n for (let i = 0; i < width; i++) {\r\n width -= i;\r\n height = Math.trunc(width / ratio);\r\n if (width * height <= scaleToPixcel) {\r\n break;\r\n }\r\n }\r\n return {\r\n width,\r\n height\r\n };\r\n }\r\n\r\n onSelect = (file: PreviewFile) => {\r\n if (!this.#isMobileOrTablet) {\r\n return;\r\n }\r\n if (this.selectedFile !== file) {\r\n this.selectedFile = file;\r\n } else {\r\n this.selectedFile = null;\r\n }\r\n }\r\n\r\n #blobToFile = (blob: Blob, fileName: string): File => {\r\n const temp: any = blob;\r\n temp.lastModifiedDate = new Date();\r\n temp.name = fileName;\r\n return blob as File;\r\n }\r\n}\r\n\r\nexport interface PreviewFile {\r\n file: File;\r\n src: string;\r\n previewSrc: string | ArrayBuffer;\r\n isPreviewImage: boolean;\r\n fileName?: string;\r\n extension?: string;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DeviceDetectorModule } from 'ngx-device-detector';\r\nimport { SdUploadFile } from './upload-file.component';\r\nimport { SdNotifyModule } from '@sd-angular/core/notify';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { SdImagePreviewModule } from '@sd-angular/core/image-preview';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DeviceDetectorModule.forRoot(),\r\n MatButtonModule,\r\n MatIconModule,\r\n DragDropModule,\r\n SdNotifyModule,\r\n SdTranslateModule,\r\n SdImagePreviewModule\r\n ],\r\n declarations: [\r\n SdUploadFile\r\n ],\r\n exports: [\r\n SdUploadFile\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdUploadFileModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport { SdUploadFileModule } from './lib/upload-file.module';\r\nexport * from './lib/upload-file.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":27,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":28,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":29,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/popover","name":"SdPopoverModule","line":30,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"exports":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":39,"character":4}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"sd-select","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":17,"character":19},"member":"OnPush"},"template":"<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\">\r\n </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"isRequired\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{label}}</mat-label>\r\n <mat-select #select [formControl]=\"formControl\" [placeholder]=\"placeholder || (appearance ? label : '')\" multiple\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value != null)}\"\r\n [required]=\"isRequired\" (openedChange)=\"onOpenChange($event)\" [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\" [sdPopoverTriggerFor]=\"null\"\r\n [sdPopoverDisabled]=\"!disableErrorMessage || formControl.valid\" *ngIf=\"multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input aria-hidden=\"true\" #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select #select [formControl]=\"formControl\" [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && formControl?.value != null}\" [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\" [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\"\r\n [sdPopoverTriggerFor]=\"null\" [sdPopoverDisabled]=\"!disableErrorMessage || formControl.valid\" *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input aria-hidden=\"true\" #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <svg \r\n #copyTooltip=\"matTooltip\" \r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && copyable\" \r\n matSuffix \r\n [matTooltip]=\"copied ? 'Copied' : 'Copy'\" \r\n class=\"icon-copy\" \r\n focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" \r\n (click)=\"onCopyText($event)\">\r\n <path d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"></path>\r\n </svg>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ \"This field is required\" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{formControl?.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<!-- <sd-popover #error=\"sdPopover\" type=\"danger\" width=\"300px\">\r\n <span *ngIf=\"formControl.errors?.required\">\r\n {{ \"This field is required\" | sdTranslate }}\r\n </span>\r\n <span *ngIf=\"formControl.errors?.customValidator\">\r\n {{formControl.errors?.customValidator}}\r\n </span>\r\n</sd-popover> -->","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/input","name":"MatInput","line":21,"character":13}]}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":27,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"appearance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"_label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3},"arguments":["label"]}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":98,"character":3}}]}],"cacheChecksum":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":112,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3},"arguments":["filtered"]}]}],"selectDisplayDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":134,"character":3},"arguments":[{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3},"arguments":["selectAll"]}]}],"copyTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":140,"character":3},"arguments":["copyTooltip"]}]}],"_copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3},"arguments":["copyable"]}]}],"copyText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":146,"character":3}}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":149,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":150,"character":3}}]}],"sdLabelDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":162,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdLabelDefDirective","line":162,"character":16}]}]}],"sdView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":163,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdViewDefDirective","line":163,"character":16}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":168,"character":5},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"FORM_CONFIG","line":168,"character":12}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":168,"character":26}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":167,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"IFormConfiguration","line":168,"character":57}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}},"SdSelectDisplayDefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[sdSelectDisplayDef]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component","SdSelectDisplayDefDirective":"./src/lib/select-display-def.directive"},"importAs":"@sd-angular/core/select"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":27,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":28,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":29,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/popover","name":"SdPopoverModule","line":30,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"exports":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":39,"character":4}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"sd-select","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":17,"character":19},"member":"OnPush"},"template":"<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value != null) }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n [sdPopoverDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [sdPopoverTriggerFor]=\"popoverValues\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select\r\n *ngIf=\"!multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && formControl?.value != null }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <svg\r\n #copyTooltip=\"matTooltip\"\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && copyable\"\r\n matSuffix\r\n [matTooltip]=\"copied ? 'Copied' : 'Copy'\"\r\n class=\"icon-copy\"\r\n focusable=\"false\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n (click)=\"onCopyText($event)\">\r\n <path\r\n d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"></path>\r\n </svg>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ 'This field is required' | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ formControl?.errors?.customValidator }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<sd-popover #popoverValues=\"sdPopover\" width=\"auto\">\r\n <ng-container *ngIf=\"formControl?.value?.length\">\r\n <ng-container *sdLet=\"selectedItems | async as items\">\r\n <div *ngFor=\"let item of items\">\r\n <strong>{{ item[valueField] }}</strong> - {{ item[displayField] }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</sd-popover>\r\n","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/input","name":"MatInput","line":21,"character":13}]}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":27,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"appearance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"_label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3},"arguments":["label"]}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":98,"character":3}}]}],"cacheChecksum":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":112,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3},"arguments":["filtered"]}]}],"selectDisplayDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":134,"character":3},"arguments":[{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3},"arguments":["selectAll"]}]}],"copyTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":140,"character":3},"arguments":["copyTooltip"]}]}],"_copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3},"arguments":["copyable"]}]}],"copyText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":146,"character":3}}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":149,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":150,"character":3}}]}],"sdLabelDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":162,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdLabelDefDirective","line":162,"character":16}]}]}],"sdView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":163,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdViewDefDirective","line":163,"character":16}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":168,"character":5},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"FORM_CONFIG","line":168,"character":12}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":168,"character":26}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":167,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"IFormConfiguration","line":168,"character":57}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}},"SdSelectDisplayDefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[sdSelectDisplayDef]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component","SdSelectDisplayDefDirective":"./src/lib/select-display-def.directive"},"importAs":"@sd-angular/core/select"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { FormGroup, NgForm } from '@angular/forms';
|
|
3
|
+
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
4
|
+
import { MatInput } from '@angular/material/input';
|
|
3
5
|
import { MatSelect, MatSelectChange } from '@angular/material/select';
|
|
6
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
7
|
+
import { IFormConfiguration, SdFormControl, SdLabelDefDirective, SdViewDefDirective } from '@sd-angular/core/common';
|
|
4
8
|
import { Observable, Subject } from 'rxjs';
|
|
5
|
-
import { MatInput } from '@angular/material/input';
|
|
6
9
|
import { SdSelectDisplayDefDirective } from './select-display-def.directive';
|
|
7
|
-
import { IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';
|
|
8
|
-
import { MatTooltip } from '@angular/material/tooltip';
|
|
9
|
-
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
10
|
-
import { SdLabelDefDirective } from '@sd-angular/core/common';
|
|
11
10
|
export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
12
11
|
#private;
|
|
13
12
|
private ref;
|