@sd-angular/core 1.3.216 → 1.3.217

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-input-upload-file.js","sources":["../../../../projects/sd-core/input-upload-file/src/lib/input-upload-file.component.ts","../../../../projects/sd-core/input-upload-file/src/lib/input-upload-file.module.ts","../../../../projects/sd-core/input-upload-file/src/public-api.ts","../../../../projects/sd-core/input-upload-file/sd-angular-core-input-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 OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\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 { ErrorStateMatcher } from '@angular/material/core';\r\nimport { FormControl, FormGroupDirective, NgForm, AbstractControl, ValidatorFn } from '@angular/forms';\r\nclass SdInputUploadFiletStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n@Component({\r\n selector: 'sd-input-upload-file',\r\n templateUrl: './input-upload-file.component.html',\r\n styleUrls: ['./input-upload-file.component.scss']\r\n})\r\nexport class SdInputUploadFile implements OnInit, AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n previewFiles: SdPreviewFile[] = [];\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n @Input() type: 'image' | 'file' = 'file';\r\n @Input() extensions: string[] = [];\r\n @Input() min = 0;\r\n @Input() max = 1;\r\n @Input() maxSize: number;\r\n @Input() maxWidth: number;\r\n @Input() maxHeight: number;\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n #model: (string | SdPreviewFile)[];\r\n @Input() set model(model: (string | SdPreviewFile)[]) {\r\n if (this.previewFiles !== model && Array.isArray(model)) {\r\n this.#model = model;\r\n this.#modelChanges.next(this.#model);\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter<(string | SdPreviewFile)[]>();\r\n @Output() sdChange = new EventEmitter<(string | SdPreviewFile)[]>();\r\n inputControl = new FormControl();\r\n formControl = new FormControl();\r\n matcher = new SdInputUploadFiletStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n #modelChanges = new Subject<(string | SdPreviewFile)[]>();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.formControl.setValidators([this.#validator]);\r\n this.inputControl.disable();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#modelChanges.pipe(startWith(this.#model)).subscribe((previewFiles) => {\r\n if (Array.isArray(previewFiles)) {\r\n this.previewFiles = [];\r\n previewFiles.forEach(previewFile => {\r\n if (typeof (previewFile) === 'string') {\r\n this.previewFiles.push({\r\n file: null,\r\n src: previewFile\r\n })\r\n } else {\r\n this.previewFiles.push(previewFile);\r\n }\r\n });\r\n this.formControl.setValue(this.previewFiles);\r\n this.modelChange.emit(this.previewFiles);\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\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 onUpload = () => {\r\n if ($(`#${this.id}`).length) {\r\n $('body').children(`#${this.id}`).remove();\r\n }\r\n if (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);\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) => {\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 (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 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 src: null,\r\n fileName: file.name,\r\n extension\r\n });\r\n }\r\n this.formControl.setValue(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (previewFile: SdPreviewFile): void => {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n this.previewFiles.splice(idx, 1);\r\n this.formControl.setValue(this.previewFiles, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n }\r\n\r\n #validator = (c: AbstractControl): { [key: string]: any } | null => {\r\n const value = c.value || null;\r\n if (this.min > 0) {\r\n const previewFiles: SdPreviewFile[] = this.formControl.value || [];\r\n if (previewFiles.length < this.min) {\r\n return {\r\n min: `${this.translateService.translate('Please select at least')} ${this.min}`\r\n }\r\n }\r\n }\r\n if (this.max > 0) {\r\n const previewFiles: SdPreviewFile[] = this.formControl.value || [];\r\n if (previewFiles.length > this.max) {\r\n return {\r\n max: `${this.translateService.translate('Please select at most')} ${this.max}`\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport interface SdPreviewFile {\r\n file: File;\r\n src: string | ArrayBuffer;\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 { SdNotifyModule } from '@sd-angular/core/notify';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdInputUploadFile } from './input-upload-file.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DeviceDetectorModule.forRoot(),\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdNotifyModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdInputUploadFile\r\n ],\r\n exports: [\r\n SdInputUploadFile\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdInputUploadFileModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input-upload-file.module';\r\nexport * from './lib/input-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-input-upload-file.js","sources":["../../../../projects/sd-core/input-upload-file/src/lib/input-upload-file.component.ts","../../../../projects/sd-core/input-upload-file/src/lib/input-upload-file.module.ts","../../../../projects/sd-core/input-upload-file/src/public-api.ts","../../../../projects/sd-core/input-upload-file/sd-angular-core-input-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 OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\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 { ErrorStateMatcher } from '@angular/material/core';\r\nimport { FormControl, FormGroupDirective, NgForm, AbstractControl, ValidatorFn, AsyncValidatorFn, Validators } from '@angular/forms';\r\nclass SdInputUploadFiletStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n@Component({\r\n selector: 'sd-input-upload-file',\r\n templateUrl: './input-upload-file.component.html',\r\n styleUrls: ['./input-upload-file.component.scss']\r\n})\r\nexport class SdInputUploadFile implements OnInit, AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n previewFiles: SdPreviewFile[] = [];\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n @Input() type: 'image' | 'file' = 'file';\r\n @Input() extensions: string[] = [];\r\n @Input() min = 0;\r\n @Input() max = 1;\r\n @Input() maxSize: number;\r\n @Input() maxWidth: number;\r\n @Input() maxHeight: number;\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n #model: (string | SdPreviewFile)[];\r\n @Input() set model(model: (string | SdPreviewFile)[]) {\r\n if (this.previewFiles !== model && Array.isArray(model)) {\r\n this.#model = model;\r\n this.#modelChanges.next(this.#model);\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n inlineError: string;\r\n @Input('inlineError') set _inlineError(val: string) {\r\n this.inlineError = val;\r\n this.#updateValidator();\r\n }\r\n\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n @Output() modelChange = new EventEmitter<(string | SdPreviewFile)[]>();\r\n @Output() sdChange = new EventEmitter<(string | SdPreviewFile)[]>();\r\n inputControl = new FormControl();\r\n formControl = new FormControl();\r\n matcher = new SdInputUploadFiletStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n #modelChanges = new Subject<(string | SdPreviewFile)[]>();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.formControl.setValidators([this.#validator]);\r\n this.inputControl.disable();\r\n }\r\n\r\n \r\n #updateValidator = () => {\r\n\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n \r\n if (this.inlineError) {\r\n validators.push(this.customInlineErrorValidator());\r\n }\r\n \r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n \r\n // Hàm tạo Validators tùy chỉnh cho inlineError\r\n customInlineErrorValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n return { inlineError: true };\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#modelChanges.pipe(startWith(this.#model)).subscribe((previewFiles) => {\r\n if (Array.isArray(previewFiles)) {\r\n this.previewFiles = [];\r\n previewFiles.forEach(previewFile => {\r\n if (typeof (previewFile) === 'string') {\r\n this.previewFiles.push({\r\n file: null,\r\n src: previewFile\r\n })\r\n } else {\r\n this.previewFiles.push(previewFile);\r\n }\r\n });\r\n this.formControl.setValue(this.previewFiles);\r\n this.modelChange.emit(this.previewFiles);\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\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 onUpload = () => {\r\n if ($(`#${this.id}`).length) {\r\n $('body').children(`#${this.id}`).remove();\r\n }\r\n if (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);\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) => {\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 (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 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 src: null,\r\n fileName: file.name,\r\n extension\r\n });\r\n }\r\n this.formControl.setValue(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (previewFile: SdPreviewFile): void => {\r\n const idx = this.previewFiles.indexOf(previewFile);\r\n this.previewFiles.splice(idx, 1);\r\n this.formControl.setValue(this.previewFiles, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue(this.previewFiles);\r\n this.sdChange.emit(this.previewFiles);\r\n }\r\n\r\n #validator = (c: AbstractControl): { [key: string]: any } | null => {\r\n const value = c.value || null;\r\n if (this.min > 0) {\r\n const previewFiles: SdPreviewFile[] = this.formControl.value || [];\r\n if (previewFiles.length < this.min) {\r\n return {\r\n min: `${this.translateService.translate('Please select at least')} ${this.min}`\r\n }\r\n }\r\n }\r\n if (this.max > 0) {\r\n const previewFiles: SdPreviewFile[] = this.formControl.value || [];\r\n if (previewFiles.length > this.max) {\r\n return {\r\n max: `${this.translateService.translate('Please select at most')} ${this.max}`\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport interface SdPreviewFile {\r\n file: File;\r\n src: string | ArrayBuffer;\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 { SdNotifyModule } from '@sd-angular/core/notify';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdInputUploadFile } from './input-upload-file.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n DeviceDetectorModule.forRoot(),\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdNotifyModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdInputUploadFile\r\n ],\r\n exports: [\r\n SdInputUploadFile\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdInputUploadFileModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input-upload-file.module';\r\nexport * from './lib/input-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 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdInputUploadFileModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-device-detector","name":"DeviceDetectorModule","line":15,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":21,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/notify","name":"SdNotifyModule","line":22,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":23,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdInputUploadFile"}],"exports":[{"__symbolic":"reference","name":"SdInputUploadFile"}],"providers":[]}]}],"members":{}},"SdInputUploadFile":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"sd-input-upload-file","template":"<mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of previewFiles\">\r\n <mat-chip *ngIf=\"item\" [removable]=\"!formControl.disabled\" (removed)=\"onRemove(item)\"\r\n [removable]=\"formControl.disabled\">\r\n <span>{{item.fileName || item.src}}</span>\r\n <mat-icon matChipRemove *ngIf=\"!formControl.disabled\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\" [matChipInputFor]=\"chipList\"\r\n autocomplete=\"off\" [errorStateMatcher]=\"matcher\" matInput>\r\n <mat-icon class=\"pointer sd-suffix-icon\" (click)=\"onUpload()\" matSuffix>file_upload\r\n </mat-icon>\r\n </mat-chip-list>\r\n <mat-error *ngIf=\"formControl?.errors?.min\">\r\n {{formControl?.errors?.min}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.max\">\r\n {{formControl?.errors?.max}}\r\n </mat-error>\r\n</mat-form-field>","styles":[":host{display:block;padding-top:5px}"]}]}],"members":{"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"extensions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"maxSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"maxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"maxHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":59,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":66,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/notify","name":"SdNotifyService","line":67,"character":27},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateService","line":68,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"SdPreviewFile":{"__symbolic":"interface"}},"origins":{"SdInputUploadFileModule":"./src/lib/input-upload-file.module","SdInputUploadFile":"./src/lib/input-upload-file.component","SdPreviewFile":"./src/lib/input-upload-file.component"},"importAs":"@sd-angular/core/input-upload-file"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdInputUploadFileModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-device-detector","name":"DeviceDetectorModule","line":15,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":21,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/notify","name":"SdNotifyModule","line":22,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":23,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdInputUploadFile"}],"exports":[{"__symbolic":"reference","name":"SdInputUploadFile"}],"providers":[]}]}],"members":{}},"SdInputUploadFile":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"sd-input-upload-file","template":"<mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list [formControl]=\"formControl\" #chipList>\r\n <ng-container *ngFor=\"let item of previewFiles\">\r\n <mat-chip *ngIf=\"item\" [removable]=\"!formControl.disabled\" (removed)=\"onRemove(item)\"\r\n [removable]=\"formControl.disabled\">\r\n <span>{{item.fileName || item.src}}</span>\r\n <mat-icon matChipRemove *ngIf=\"!formControl.disabled\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n <input [formControl]=\"inputControl\" [placeholder]=\"placeholder || label\" [matChipInputFor]=\"chipList\"\r\n autocomplete=\"off\" [errorStateMatcher]=\"matcher\" matInput>\r\n <mat-icon class=\"pointer sd-suffix-icon\" (click)=\"onUpload()\" matSuffix>file_upload\r\n </mat-icon>\r\n </mat-chip-list>\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?.min\">\r\n {{formControl?.errors?.min}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.max\">\r\n {{formControl?.errors?.max}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{inlineError}}</ng-container>\r\n </mat-error>\r\n</mat-form-field>","styles":[":host{display:block;padding-top:5px}"]}]}],"members":{"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"extensions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"maxSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"maxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"maxHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3},"arguments":["disableErrorMessage"]}]}],"_inlineError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3},"arguments":["inlineError"]}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":74,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":82,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/notify","name":"SdNotifyService","line":83,"character":27},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateService","line":84,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}],"customInlineErrorValidator":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"SdPreviewFile":{"__symbolic":"interface"}},"origins":{"SdInputUploadFileModule":"./src/lib/input-upload-file.module","SdInputUploadFile":"./src/lib/input-upload-file.component","SdPreviewFile":"./src/lib/input-upload-file.component"},"importAs":"@sd-angular/core/input-upload-file"}
@@ -2,7 +2,7 @@ import { EventEmitter, ChangeDetectorRef, AfterViewInit, OnInit, OnDestroy } fro
2
2
  import { SdNotifyService } from '@sd-angular/core/notify';
3
3
  import { SdTranslateService } from '@sd-angular/core/translate';
4
4
  import { ErrorStateMatcher } from '@angular/material/core';
5
- import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';
5
+ import { FormControl, FormGroupDirective, NgForm, ValidatorFn } from '@angular/forms';
6
6
  declare class SdInputUploadFiletStateMatcher implements ErrorStateMatcher {
7
7
  private formControl;
8
8
  constructor(formControl: FormControl);
@@ -26,6 +26,12 @@ export declare class SdInputUploadFile implements OnInit, AfterViewInit, OnDestr
26
26
  maxHeight: number;
27
27
  set disabled(val: boolean | '');
28
28
  set model(model: (string | SdPreviewFile)[]);
29
+ disableErrorMessage: boolean;
30
+ set _disableErrorMessage(val: boolean | '');
31
+ inlineError: string;
32
+ set _inlineError(val: string);
33
+ isRequired: boolean;
34
+ set required(val: boolean | '');
29
35
  modelChange: EventEmitter<(string | SdPreviewFile)[]>;
30
36
  sdChange: EventEmitter<(string | SdPreviewFile)[]>;
31
37
  inputControl: FormControl;
@@ -33,6 +39,7 @@ export declare class SdInputUploadFile implements OnInit, AfterViewInit, OnDestr
33
39
  matcher: SdInputUploadFiletStateMatcher;
34
40
  constructor(ref: ChangeDetectorRef, notifyService: SdNotifyService, translateService: SdTranslateService);
35
41
  ngOnInit(): void;
42
+ customInlineErrorValidator(): ValidatorFn;
36
43
  ngAfterViewInit(): void;
37
44
  ngOnDestroy(): void;
38
45
  onUpload: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "1.3.216",
3
+ "version": "1.3.217",
4
4
  "homepage": "https://www.facebook.com/DarkP3ter",
5
5
  "author": {
6
6
  "name": "darkpeter",
index 766e4ea..a722a20 100644
Binary file