@sd-angular/core 1.3.74 → 1.3.76

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.
Files changed (31) hide show
  1. package/bundles/sd-angular-core-export.umd.js +1 -1
  2. package/bundles/sd-angular-core-export.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-export.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-image-preview.umd.js +122 -7
  6. package/bundles/sd-angular-core-image-preview.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-image-preview.umd.min.js +1 -1
  8. package/bundles/sd-angular-core-image-preview.umd.min.js.map +1 -1
  9. package/bundles/sd-angular-core-modal-resizable.umd.js +14 -5
  10. package/bundles/sd-angular-core-modal-resizable.umd.js.map +1 -1
  11. package/bundles/sd-angular-core-modal-resizable.umd.min.js +2 -2
  12. package/bundles/sd-angular-core-modal-resizable.umd.min.js.map +1 -1
  13. package/esm2015/export/src/lib/export.service.js +2 -2
  14. package/esm2015/image-preview/sd-angular-core-image-preview.js +3 -2
  15. package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.js +92 -0
  16. package/esm2015/image-preview/src/lib/image-preview/image-preview.module.js +6 -3
  17. package/esm2015/modal-resizable/src/lib/modal-resizable/modal-resizable.component.js +15 -6
  18. package/fesm2015/sd-angular-core-export.js +1 -1
  19. package/fesm2015/sd-angular-core-export.js.map +1 -1
  20. package/fesm2015/sd-angular-core-image-preview.js +95 -4
  21. package/fesm2015/sd-angular-core-image-preview.js.map +1 -1
  22. package/fesm2015/sd-angular-core-modal-resizable.js +14 -5
  23. package/fesm2015/sd-angular-core-modal-resizable.js.map +1 -1
  24. package/image-preview/sd-angular-core-image-preview.d.ts +2 -1
  25. package/image-preview/sd-angular-core-image-preview.metadata.json +1 -1
  26. package/image-preview/src/lib/image-preview/image-preview-sdmodal.component.d.ts +28 -0
  27. package/modal-resizable/sd-angular-core-modal-resizable.metadata.json +1 -1
  28. package/modal-resizable/src/lib/modal-resizable/modal-resizable.component.d.ts +2 -0
  29. package/package.json +1 -1
  30. package/sd-angular-core-1.3.76.tgz +0 -0
  31. package/sd-angular-core-1.3.74.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-export.js","sources":["../../../../projects/sd-core/export/src/lib/export.model.ts","../../../../projects/sd-core/export/src/lib/export.service.ts","../../../../projects/sd-core/export/sd-angular-core-export.ts"],"sourcesContent":["export * from './excel.model';\r\nexport interface SdExportTemplate {\r\n fileName?: string;\r\n columns: SdExportTempateColumn[];\r\n sheets?: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface SdExportTempateColumn {\r\n field: string;\r\n title: string;\r\n required?: boolean;\r\n color?: string;\r\n width?: string;\r\n description?: string;\r\n fontColor?: string;\r\n fill?: string;\r\n}\r\n\r\nexport interface SdExportFile {\r\n fileName?: string;\r\n filePath?: string;\r\n}\r\n\r\nexport interface SdExportColumn {\r\n field: string;\r\n title: string;\r\n description?: string;\r\n width?: string;\r\n}\r\n\r\nexport interface IExportOption {\r\n columns: SdExportTempateColumn[];\r\n items: any[];\r\n fileName?: string;\r\n sheets?: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface IBigExportRequest {\r\n filePath?: string;\r\n destination?: string;\r\n latestRow: number;\r\n columns: {\r\n field: string,\r\n title: string,\r\n description?: string,\r\n width?: string,\r\n }[];\r\n items: any[];\r\n}\r\n\r\nexport interface IBigExportResponse {\r\n filePath: string;\r\n destination: string;\r\n latestRow: number;\r\n}\r\n\r\nexport type GroupPermission = 'view' | 'add' | 'delete';\r\n\r\nexport const API = {\r\n uploadTemplate: '/excel/uploadTemplate',\r\n generateUploadTemplate: '/excel/generateUploadTemplate',\r\n filesInFolder: '/excel/filesInFolder',\r\n removeFile: '/excel/remove',\r\n sdExportByTemplate: '/excel/sd-export-by-template',\r\n sdMergePDF: '/excel/sd-merge-pdf',\r\n};\r\n","import { Optional } from '@angular/core';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { SdApiService } from '@sd-angular/core/api';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport { Workbook, Style } from 'exceljs';\r\nimport { SdExportTemplate, IExportOption, API, SdExportFile, SdExportCustomOption } from './export.model';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { FIREBASE_CONFIG, IFirebaseConfiguration } from '@sd-angular/core/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdExportService {\r\n private get functionUrl() {\r\n return this.firebaseConfiguration?.functionUrl;\r\n }\r\n\r\n private get folder() {\r\n const { project, env } = this.firebaseConfiguration;\r\n return `${project}-${env}`;\r\n }\r\n\r\n private get userFolder() {\r\n const { folder } = this.firebaseConfiguration;\r\n if (!folder) {\r\n return;\r\n }\r\n if (typeof (folder) === 'string') {\r\n return folder;\r\n }\r\n return folder();\r\n }\r\n\r\n #fieldStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n bold: true,\r\n size: 11,\r\n color: { argb: '000000' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'FAFAFA'\r\n }\r\n }\r\n }\r\n #titleColor = 'FFFFFF';\r\n #titleFgColor = '143180';\r\n #titleStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n bold: true,\r\n size: 11,\r\n color: { argb: this.#titleColor },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: this.#titleFgColor,\r\n }\r\n }\r\n }\r\n\r\n #requiredStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n italic: true,\r\n size: 11,\r\n color: { argb: 'FFFFFF' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'FF1744'\r\n }\r\n }\r\n }\r\n\r\n #descriptionStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n wrapText: true\r\n },\r\n font: {\r\n italic: true,\r\n size: 9,\r\n color: { argb: '000000' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'CFD8DC'\r\n }\r\n }\r\n }\r\n\r\n #cellStyle: Partial<Style> = {\r\n alignment: {\r\n vertical: 'middle',\r\n wrapText: true\r\n }\r\n }\r\n\r\n constructor(\r\n private apiService: SdApiService,\r\n private notifyService: SdNotifyService,\r\n @Inject(FIREBASE_CONFIG) @Optional() private firebaseConfiguration: IFirebaseConfiguration) {\r\n }\r\n\r\n #directory = (key: string, group: string) => {\r\n let hashedFolder = hash({\r\n folder: this.folder,\r\n userFolder: this.userFolder\r\n });\r\n if (!group) {\r\n return `dir1=${this.folder}&dir2=U-${hashedFolder}&dir3=${key || ''}`;\r\n }\r\n hashedFolder = hash({\r\n folder: this.folder,\r\n group\r\n });\r\n return `dir1=${this.folder}&dir2=G-${hashedFolder}&dir3=${key || ''}`;\r\n }\r\n\r\n generateTemplate = async (template: SdExportTemplate) => {\r\n const { fileName, columns, sheets } = template;\r\n if (!Array.isArray(columns)) {\r\n throw new Error('Excel template columns must be an array');\r\n }\r\n for (const [idx, column] of columns.entries()) {\r\n if (!column.field) {\r\n throw new Error(`Column ${idx + 1}: Field is required`);\r\n }\r\n if (!column.title) {\r\n throw new Error(`Column ${idx + 1}: Title is required`);\r\n }\r\n }\r\n const hasDescription = columns.some(column => column.description);\r\n const workbook = new Workbook(); //await XlsxPopulate.fromBlankAsync(); // Đọc file sau khi đã download\r\n const firstSheet = workbook.addWorksheet('template'); // Lấy ra sheet đầu tiên\r\n columns.forEach((column, index) => {\r\n const { required, fill, fontColor } = column;\r\n const cellField = firstSheet.getCell(1, index + 1);\r\n const cellTitle = firstSheet.getCell(2, index + 1);\r\n const cellDescription = firstSheet.getCell(3, index + 1);\r\n let width = 120;\r\n if (column.width && column.width.endsWith('px')) {\r\n width = +column.width.replace('px', '');\r\n }\r\n firstSheet.getColumn(index + 1).width = width / 7 || 20;\r\n cellField.style = this.#fieldStyle;\r\n if (required) {\r\n cellField.style = this.#requiredStyle;\r\n } else {\r\n cellField.style = this.#fieldStyle;\r\n }\r\n cellTitle.style = {\r\n ...this.#titleStyle,\r\n font: {\r\n ...this.#titleStyle?.font,\r\n color: {\r\n ...this.#titleStyle?.font?.color,\r\n argb: fontColor || this.#titleStyle?.font?.color?.argb\r\n }\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: fill || this.#titleFgColor\r\n }\r\n }\r\n };\r\n cellField.value = column.field;\r\n cellTitle.value = column.title;\r\n if (hasDescription) {\r\n cellDescription.style = this.#descriptionStyle;\r\n cellDescription.value = column.description || '';\r\n }\r\n });\r\n if (sheets?.length) {\r\n for (const sheet of sheets) {\r\n if (sheet.name && Array.isArray(sheet.items) && Array.isArray(sheet.fields)) {\r\n const newSheet = workbook.addWorksheet(sheet.name);\r\n sheet.fields.forEach((field, index) => {\r\n newSheet.getColumn(index + 1).width = 30;\r\n newSheet.getCell(1, index + 1).style = this.#titleStyle;\r\n newSheet.getCell(1, index + 1).value = field;\r\n });\r\n sheet.items.forEach((item, idx1) => {\r\n sheet.fields.forEach((field, idx2) => {\r\n newSheet.getCell(2 + idx1, 1 + idx2).value = item[field];\r\n newSheet.getCell(2 + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n uploadTemplate = async (args: {\r\n key: string;\r\n group?: string;\r\n validator?: (fileName: string) => string\r\n }): Promise<SdExportFile> => {\r\n const { key, group, validator } = args;\r\n const { uploadTemplate } = API;\r\n const url = `${this.functionUrl}${uploadTemplate}?${this.#directory(key, group)}`;\r\n const file = await SdUtility.upload({\r\n extensions: ['xlsx'],\r\n maxSizeInMb: 0.1,\r\n validator\r\n });\r\n if (file) {\r\n const { filePath, fileName } = await this.apiService.upload(url, file).catch((err: Error) => {\r\n this.notifyService.notify.warning(err?.message);\r\n throw err;\r\n });\r\n return {\r\n filePath,\r\n fileName,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n generateUploadTemplate = async (args: {\r\n key: string;\r\n template: SdExportTemplate;\r\n group?: string;\r\n }) => {\r\n const { key, template, group } = args;\r\n const { generateUploadTemplate } = API;\r\n const url = `${this.functionUrl}${generateUploadTemplate}?${this.#directory(key, group)}`;\r\n const { filePath, fileName } = await this.apiService.post(url, template);\r\n return { filePath, fileName };\r\n }\r\n\r\n removeFile = async (args: {\r\n key: string;\r\n group?: string;\r\n fileName?: string;\r\n }) => {\r\n const { key, group, fileName } = args;\r\n const { removeFile } = API;\r\n const url = `${this.functionUrl}${removeFile}?${this.#directory(key, group)}&name=${fileName}`;\r\n await this.apiService.post(url);\r\n }\r\n\r\n filesInFolder = async (args: {\r\n key: string;\r\n group?: string;\r\n }): Promise<SdExportFile[]> => {\r\n interface FilesInFolderRes {\r\n directory: string;\r\n files: {\r\n publicUrl: string, fullPath: string, name: string\r\n }[];\r\n }\r\n const { key, group } = args;\r\n const { filesInFolder } = API;\r\n const url = `${this.functionUrl}${filesInFolder}?${this.#directory(key, group)}`;\r\n const res = await this.apiService.get<FilesInFolderRes>(url);\r\n return res.files?.map(e => ({\r\n filePath: e.publicUrl,\r\n fileName: e.name\r\n })) || [];\r\n }\r\n\r\n download = (filePath: string, fileName?: string) => {\r\n const link: any = document.createElement('a');\r\n link.download = `${fileName || uuid.v4()}.xlsx`;\r\n link.href = filePath;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n exportByTemplate = async (args: {\r\n filePath: string,\r\n columns: any[],\r\n items: any[],\r\n fileName?: string\r\n }) => {\r\n const { filePath, columns, items, fileName } = args;\r\n const { sdExportByTemplate } = API;\r\n const url = `${this.functionUrl}${sdExportByTemplate}`;\r\n const buffer = await this.apiService.post(url, {\r\n filePath,\r\n columns,\r\n items,\r\n fileName\r\n }, null, {\r\n responseType: 'arraybuffer'\r\n });\r\n const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' });\r\n SdUtility.downloadBlob(blob, fileName);\r\n }\r\n\r\n exportCSV = async (option: IExportOption) => {\r\n const { columns, items, fileName } = option;\r\n const headerCSV = {};\r\n for (const column of columns) {\r\n headerCSV[column.field] = column.title;\r\n }\r\n const csvExporter = new ExportToCsv({\r\n filename: `${fileName || 'CSV'}_${Date.toFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss')}`,\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showLabels: true,\r\n showTitle: false,\r\n title: fileName || 'CSV',\r\n useBom: true,\r\n });\r\n csvExporter.generateCsv([headerCSV, ...items]);\r\n }\r\n\r\n export = async (option: IExportOption) => {\r\n const { columns, items, fileName, sheets } = option;\r\n let hasDescription = false;\r\n for (const [idx, column] of columns.entries()) {\r\n if (!column.field) {\r\n throw new Error(`Column ${idx + 1}: Field is required`);\r\n }\r\n if (!column.title) {\r\n throw new Error(`Column ${idx + 1}: Title is required`);\r\n }\r\n if (column.description) {\r\n hasDescription = true;\r\n }\r\n }\r\n const workbook = new Workbook(); //await XlsxPopulate.fromBlankAsync(); // Đọc file sau khi đã download\r\n const firstSheet = workbook.addWorksheet('data'); // Lấy ra sheet đầu tiên\r\n columns.forEach((column, index) => {\r\n let width = 120;\r\n if (column.width && column.width.endsWith('px')) {\r\n width = +column.width.replace('px', '');\r\n }\r\n firstSheet.getColumn(index + 1).width = width / 7 || 20;\r\n firstSheet.getCell(1, index + 1).style = this.#fieldStyle\r\n if (column.required) {\r\n firstSheet.getCell(2, index + 1).style = this.#requiredStyle;\r\n } else {\r\n firstSheet.getCell(2, index + 1).style = this.#titleStyle;\r\n }\r\n firstSheet.getCell(1, index + 1).value = column.field;\r\n firstSheet.getCell(2, index + 1).value = column.title;\r\n if (hasDescription) {\r\n firstSheet.getCell(3, index + 1).style = this.#descriptionStyle;\r\n firstSheet.getCell(3, index + 1).value = column.description || '';\r\n }\r\n });\r\n if (sheets?.length) {\r\n for (const sheet of sheets) {\r\n if (sheet.name && Array.isArray(sheet.items) && Array.isArray(sheet.fields)) {\r\n const newSheet = workbook.addWorksheet(sheet.name);\r\n sheet.fields.forEach((field, index) => {\r\n newSheet.getColumn(index + 1).width = 30;\r\n newSheet.getCell(1, index + 1).style = this.#titleStyle;\r\n newSheet.getCell(1, index + 1).value = field;\r\n });\r\n sheet.items.forEach((item, idx1) => {\r\n sheet.fields.forEach((field, idx2) => {\r\n newSheet.getCell(2 + idx1, 1 + idx2).value = item[field];\r\n newSheet.getCell(2 + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n const fromRow = hasDescription ? 4 : 3;\r\n items.forEach((e, idx1) => {\r\n columns.forEach((column, idx2) => {\r\n if (Number.isNumber(e[column.field])) {\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).value = +e[column.field];\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).numFmt = '#';\r\n } else {\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).value = e[column.field];\r\n }\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n exportCustom = async (option: SdExportCustomOption) => {\r\n const { fileName, sheets } = option;\r\n if (!sheets?.length) {\r\n this.notifyService.notify.warning('Phải có ít nhất 1 sheet');\r\n return;\r\n }\r\n const workbook = new Workbook();\r\n for (const [idx, sheet] of sheets.entries()) {\r\n const { name, columns, cells } = sheet\r\n const worksheet = workbook.addWorksheet(name || `Sheet ${idx + 1}`);\r\n for (const column of (columns || [])) {\r\n worksheet.getColumn(column.index).style = column.style;\r\n worksheet.getColumn(column.index).width = column.width;\r\n }\r\n for (const cell of cells) {\r\n const { row, column, value, style } = cell;\r\n worksheet.getCell(row, column).style = style || worksheet.getColumn(column).style;\r\n worksheet.getCell(row, column).value = value;\r\n }\r\n }\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n mergePDF = async (urls: string[]) => {\r\n const { sdMergePDF } = API;\r\n const url = `${this.functionUrl}${sdMergePDF}`;\r\n const buffer = await this.apiService.post(url, {\r\n urls\r\n }, null, {\r\n responseType: 'arraybuffer'\r\n });\r\n SdUtility.downloadBlob(new Blob([buffer], { type: 'application/pdf' }));\r\n }\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-export.js","sources":["../../../../projects/sd-core/export/src/lib/export.model.ts","../../../../projects/sd-core/export/src/lib/export.service.ts","../../../../projects/sd-core/export/sd-angular-core-export.ts"],"sourcesContent":["export * from './excel.model';\r\nexport interface SdExportTemplate {\r\n fileName?: string;\r\n columns: SdExportTempateColumn[];\r\n sheets?: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface SdExportTempateColumn {\r\n field: string;\r\n title: string;\r\n required?: boolean;\r\n color?: string;\r\n width?: string;\r\n description?: string;\r\n fontColor?: string;\r\n fill?: string;\r\n}\r\n\r\nexport interface SdExportFile {\r\n fileName?: string;\r\n filePath?: string;\r\n}\r\n\r\nexport interface SdExportColumn {\r\n field: string;\r\n title: string;\r\n description?: string;\r\n width?: string;\r\n}\r\n\r\nexport interface IExportOption {\r\n columns: SdExportTempateColumn[];\r\n items: any[];\r\n fileName?: string;\r\n sheets?: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[];\r\n}\r\n\r\nexport interface IBigExportRequest {\r\n filePath?: string;\r\n destination?: string;\r\n latestRow: number;\r\n columns: {\r\n field: string,\r\n title: string,\r\n description?: string,\r\n width?: string,\r\n }[];\r\n items: any[];\r\n}\r\n\r\nexport interface IBigExportResponse {\r\n filePath: string;\r\n destination: string;\r\n latestRow: number;\r\n}\r\n\r\nexport type GroupPermission = 'view' | 'add' | 'delete';\r\n\r\nexport const API = {\r\n uploadTemplate: '/excel/uploadTemplate',\r\n generateUploadTemplate: '/excel/generateUploadTemplate',\r\n filesInFolder: '/excel/filesInFolder',\r\n removeFile: '/excel/remove',\r\n sdExportByTemplate: '/excel/sd-export-by-template',\r\n sdMergePDF: '/excel/sd-merge-pdf',\r\n};\r\n","import { Optional } from '@angular/core';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { SdApiService } from '@sd-angular/core/api';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport { Workbook, Style } from 'exceljs';\r\nimport { SdExportTemplate, IExportOption, API, SdExportFile, SdExportCustomOption } from './export.model';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { FIREBASE_CONFIG, IFirebaseConfiguration } from '@sd-angular/core/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdExportService {\r\n private get functionUrl() {\r\n return this.firebaseConfiguration?.functionUrl;\r\n }\r\n\r\n private get folder() {\r\n const { project, env } = this.firebaseConfiguration;\r\n return `${project}-${env}`;\r\n }\r\n\r\n private get userFolder() {\r\n const { folder } = this.firebaseConfiguration;\r\n if (!folder) {\r\n return;\r\n }\r\n if (typeof (folder) === 'string') {\r\n return folder;\r\n }\r\n return folder();\r\n }\r\n\r\n #fieldStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n bold: true,\r\n size: 11,\r\n color: { argb: '000000' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'FAFAFA'\r\n }\r\n }\r\n }\r\n #titleColor = 'FFFFFF';\r\n #titleFgColor = '143180';\r\n #titleStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n bold: true,\r\n size: 11,\r\n color: { argb: this.#titleColor },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: this.#titleFgColor,\r\n }\r\n }\r\n }\r\n\r\n #requiredStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n vertical: 'middle',\r\n horizontal: 'center',\r\n wrapText: true\r\n },\r\n font: {\r\n italic: true,\r\n size: 11,\r\n color: { argb: 'FFFFFF' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'FF1744'\r\n }\r\n }\r\n }\r\n\r\n #descriptionStyle: Partial<Style> = {\r\n border: {\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n },\r\n alignment: {\r\n wrapText: true\r\n },\r\n font: {\r\n italic: true,\r\n size: 9,\r\n color: { argb: '000000' },\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: 'CFD8DC'\r\n }\r\n }\r\n }\r\n\r\n #cellStyle: Partial<Style> = {\r\n alignment: {\r\n vertical: 'middle',\r\n wrapText: true\r\n }\r\n }\r\n\r\n constructor(\r\n private apiService: SdApiService,\r\n private notifyService: SdNotifyService,\r\n @Inject(FIREBASE_CONFIG) @Optional() private firebaseConfiguration: IFirebaseConfiguration) {\r\n }\r\n\r\n #directory = (key: string, group: string) => {\r\n let hashedFolder = hash({\r\n folder: this.folder,\r\n userFolder: this.userFolder\r\n });\r\n if (!group) {\r\n return `dir1=${this.folder}&dir2=U-${hashedFolder}&dir3=${key || ''}`;\r\n }\r\n hashedFolder = hash({\r\n folder: this.folder,\r\n group\r\n });\r\n return `dir1=${this.folder}&dir2=G-${hashedFolder}&dir3=${key || ''}`;\r\n }\r\n\r\n generateTemplate = async (template: SdExportTemplate) => {\r\n const { fileName, columns, sheets } = template;\r\n if (!Array.isArray(columns)) {\r\n throw new Error('Excel template columns must be an array');\r\n }\r\n for (const [idx, column] of columns.entries()) {\r\n if (!column.field) {\r\n throw new Error(`Column ${idx + 1}: Field is required`);\r\n }\r\n if (!column.title) {\r\n throw new Error(`Column ${idx + 1}: Title is required`);\r\n }\r\n }\r\n const hasDescription = columns.some(column => column.description);\r\n const workbook = new Workbook(); //await XlsxPopulate.fromBlankAsync(); // Đọc file sau khi đã download\r\n const firstSheet = workbook.addWorksheet('template'); // Lấy ra sheet đầu tiên\r\n columns.forEach((column, index) => {\r\n const { required, fill, fontColor } = column;\r\n const cellField = firstSheet.getCell(1, index + 1);\r\n const cellTitle = firstSheet.getCell(2, index + 1);\r\n const cellDescription = firstSheet.getCell(3, index + 1);\r\n let width = 120;\r\n if (column.width && column.width.endsWith('px')) {\r\n width = +column.width.replace('px', '');\r\n }\r\n firstSheet.getColumn(index + 1).width = width / 7 || 20;\r\n cellField.style = this.#fieldStyle;\r\n if (required) {\r\n cellField.style = this.#requiredStyle;\r\n } else {\r\n cellField.style = this.#fieldStyle;\r\n }\r\n cellTitle.style = {\r\n ...this.#titleStyle,\r\n font: {\r\n ...this.#titleStyle?.font,\r\n color: {\r\n ...this.#titleStyle?.font?.color,\r\n argb: fontColor || this.#titleStyle?.font?.color?.argb\r\n }\r\n },\r\n fill: {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: {\r\n argb: fill || this.#titleFgColor\r\n }\r\n }\r\n };\r\n cellField.value = column.field;\r\n cellTitle.value = column.title;\r\n if (hasDescription) {\r\n cellDescription.style = this.#descriptionStyle;\r\n cellDescription.value = column.description || '';\r\n }\r\n });\r\n if (sheets?.length) {\r\n for (const sheet of sheets) {\r\n if (sheet.name && Array.isArray(sheet.items) && Array.isArray(sheet.fields)) {\r\n const newSheet = workbook.addWorksheet(sheet.name);\r\n sheet.fields.forEach((field, index) => {\r\n newSheet.getColumn(index + 1).width = 30;\r\n newSheet.getCell(1, index + 1).style = this.#titleStyle;\r\n newSheet.getCell(1, index + 1).value = field;\r\n });\r\n sheet.items.forEach((item, idx1) => {\r\n sheet.fields.forEach((field, idx2) => {\r\n newSheet.getCell(2 + idx1, 1 + idx2).value = item[field];\r\n newSheet.getCell(2 + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n uploadTemplate = async (args: {\r\n key: string;\r\n group?: string;\r\n validator?: (fileName: string) => string\r\n }): Promise<SdExportFile> => {\r\n const { key, group, validator } = args;\r\n const { uploadTemplate } = API;\r\n const url = `${this.functionUrl}${uploadTemplate}?${this.#directory(key, group)}`;\r\n const file = await SdUtility.upload({\r\n extensions: ['xlsx'],\r\n maxSizeInMb: 0.1,\r\n validator\r\n });\r\n if (file) {\r\n const { filePath, fileName } = await this.apiService.upload(url, file).catch((err: Error) => {\r\n this.notifyService.notify.warning(err?.message);\r\n throw err;\r\n });\r\n return {\r\n filePath,\r\n fileName,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n generateUploadTemplate = async (args: {\r\n key: string;\r\n template: SdExportTemplate;\r\n group?: string;\r\n }) => {\r\n const { key, template, group } = args;\r\n const { generateUploadTemplate } = API;\r\n const url = `${this.functionUrl}${generateUploadTemplate}?${this.#directory(key, group)}`;\r\n const { filePath, fileName } = await this.apiService.post(url, template);\r\n return { filePath, fileName };\r\n }\r\n\r\n removeFile = async (args: {\r\n key: string;\r\n group?: string;\r\n fileName?: string;\r\n }) => {\r\n const { key, group, fileName } = args;\r\n const { removeFile } = API;\r\n const url = `${this.functionUrl}${removeFile}?${this.#directory(key, group)}&name=${fileName}`;\r\n await this.apiService.post(url);\r\n }\r\n\r\n filesInFolder = async (args: {\r\n key: string;\r\n group?: string;\r\n }): Promise<SdExportFile[]> => {\r\n interface FilesInFolderRes {\r\n directory: string;\r\n files: {\r\n publicUrl: string, fullPath: string, name: string\r\n }[];\r\n }\r\n const { key, group } = args;\r\n const { filesInFolder } = API;\r\n const url = `${this.functionUrl}${filesInFolder}?${this.#directory(key, group)}`;\r\n const res = await this.apiService.get<FilesInFolderRes>(url);\r\n return res.files?.map(e => ({\r\n filePath: e.publicUrl,\r\n fileName: e.name\r\n })) || [];\r\n }\r\n\r\n download = (filePath: string, fileName?: string) => {\r\n const link: any = document.createElement('a');\r\n link.download = `${fileName || uuid.v4()}.xlsx`;\r\n link.href = filePath;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n exportByTemplate = async (args: {\r\n filePath: string,\r\n columns: any[],\r\n items: any[],\r\n fileName?: string\r\n }) => {\r\n const { filePath, columns, items, fileName } = args;\r\n const { sdExportByTemplate } = API;\r\n const url = `${this.functionUrl}${sdExportByTemplate}`;\r\n const buffer = await this.apiService.post(url, {\r\n filePath,\r\n columns,\r\n items,\r\n fileName\r\n }, null, {\r\n responseType: 'arraybuffer'\r\n });\r\n const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' });\r\n SdUtility.downloadBlob(blob, fileName);\r\n }\r\n\r\n exportCSV = async (option: IExportOption) => {\r\n const { columns, items, fileName } = option;\r\n const headerCSV = {};\r\n for (const column of columns) {\r\n headerCSV[column.field] = column.title;\r\n }\r\n const csvExporter = new ExportToCsv({\r\n filename: `${fileName || 'CSV'}_${Date.toFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss')}`,\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showLabels: true,\r\n showTitle: false,\r\n title: fileName || 'CSV',\r\n useBom: true,\r\n });\r\n csvExporter.generateCsv([headerCSV, ...items]);\r\n }\r\n\r\n export = async (option: IExportOption) => {\r\n const { columns, items, fileName, sheets } = option;\r\n let hasDescription = false;\r\n for (const [idx, column] of columns.entries()) {\r\n if (!column.field) {\r\n throw new Error(`Column ${idx + 1}: Field is required`);\r\n }\r\n if (!column.title) {\r\n throw new Error(`Column ${idx + 1}: Title is required`);\r\n }\r\n if (column.description) {\r\n hasDescription = true;\r\n }\r\n }\r\n const workbook = new Workbook(); //await XlsxPopulate.fromBlankAsync(); // Đọc file sau khi đã download\r\n const firstSheet = workbook.addWorksheet('data'); // Lấy ra sheet đầu tiên\r\n columns.forEach((column, index) => {\r\n let width = 120;\r\n if (column.width && column.width.endsWith('px')) {\r\n width = +column.width.replace('px', '');\r\n }\r\n firstSheet.getColumn(index + 1).width = width / 7 || 20;\r\n firstSheet.getCell(1, index + 1).style = this.#fieldStyle\r\n if (column.required) {\r\n firstSheet.getCell(2, index + 1).style = this.#requiredStyle;\r\n } else {\r\n firstSheet.getCell(2, index + 1).style = this.#titleStyle;\r\n }\r\n firstSheet.getCell(1, index + 1).value = column.field;\r\n firstSheet.getCell(2, index + 1).value = column.title;\r\n if (hasDescription) {\r\n firstSheet.getCell(3, index + 1).style = this.#descriptionStyle;\r\n firstSheet.getCell(3, index + 1).value = column.description || '';\r\n }\r\n });\r\n if (sheets?.length) {\r\n for (const sheet of sheets) {\r\n if (sheet.name && Array.isArray(sheet.items) && Array.isArray(sheet.fields)) {\r\n const newSheet = workbook.addWorksheet(sheet.name);\r\n sheet.fields.forEach((field, index) => {\r\n newSheet.getColumn(index + 1).width = 30;\r\n newSheet.getCell(1, index + 1).style = this.#titleStyle;\r\n newSheet.getCell(1, index + 1).value = field;\r\n });\r\n sheet.items.forEach((item, idx1) => {\r\n sheet.fields.forEach((field, idx2) => {\r\n newSheet.getCell(2 + idx1, 1 + idx2).value = item[field];\r\n newSheet.getCell(2 + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n const fromRow = hasDescription ? 4 : 3;\r\n items.forEach((e, idx1) => {\r\n columns.forEach((column, idx2) => {\r\n if (typeof (e[column.field]) === 'number') {\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).value = +e[column.field];\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).numFmt = '#';\r\n } else {\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).value = e[column.field];\r\n }\r\n firstSheet.getCell(fromRow + idx1, 1 + idx2).style = this.#cellStyle;\r\n });\r\n });\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n exportCustom = async (option: SdExportCustomOption) => {\r\n const { fileName, sheets } = option;\r\n if (!sheets?.length) {\r\n this.notifyService.notify.warning('Phải có ít nhất 1 sheet');\r\n return;\r\n }\r\n const workbook = new Workbook();\r\n for (const [idx, sheet] of sheets.entries()) {\r\n const { name, columns, cells } = sheet\r\n const worksheet = workbook.addWorksheet(name || `Sheet ${idx + 1}`);\r\n for (const column of (columns || [])) {\r\n worksheet.getColumn(column.index).style = column.style;\r\n worksheet.getColumn(column.index).width = column.width;\r\n }\r\n for (const cell of cells) {\r\n const { row, column, value, style } = cell;\r\n worksheet.getCell(row, column).style = style || worksheet.getColumn(column).style;\r\n worksheet.getCell(row, column).value = value;\r\n }\r\n }\r\n const file = await workbook.xlsx.writeBuffer();\r\n SdUtility.downloadBlob(new Blob([file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), fileName);\r\n }\r\n\r\n mergePDF = async (urls: string[]) => {\r\n const { sdMergePDF } = API;\r\n const url = `${this.functionUrl}${sdMergePDF}`;\r\n const buffer = await this.apiService.post(url, {\r\n urls\r\n }, null, {\r\n responseType: 'arraybuffer'\r\n });\r\n SdUtility.downloadBlob(new Blob([buffer], { type: 'application/pdf' }));\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- import { Component, Inject, Directive, ElementRef, Input, HostListener, NgModule } from '@angular/core';
1
+ import { Component, Inject, Directive, ElementRef, Input, HostListener, ViewChild, NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog';
4
4
  import { MatIconModule } from '@angular/material/icon';
5
+ import * as $ from 'jquery';
6
+ import { SdModal, SdModalModule } from '@sd-angular/core/modal';
5
7
 
6
8
  class ImagePreviewComponent {
7
9
  constructor(dialogRef, data) {
@@ -80,16 +82,105 @@ ImagePreviewDirective.propDecorators = {
80
82
  onClick: [{ type: HostListener, args: ["click",] }]
81
83
  };
82
84
 
85
+ var _initImageSlideShowBox;
86
+ class ImagePreviewSdmodalComponent {
87
+ constructor(dialogRef, data) {
88
+ this.dialogRef = dialogRef;
89
+ this.data = data;
90
+ this.imageList = [];
91
+ this.imageOrgWidthList = [];
92
+ this.imageListTotal = 0;
93
+ this.imageCurrent = '';
94
+ this.imageCurrentIndex = 0;
95
+ this.imageCurrentPercent = 100;
96
+ this.imageCurrentWidth = 0;
97
+ _initImageSlideShowBox.set(this, () => {
98
+ setTimeout(() => {
99
+ this.imageList = [];
100
+ this.imageOrgWidthList = [];
101
+ $('img[alt=c-image-editor-quill]').each((index, obj) => {
102
+ $(obj).parent('a').addClass('c-image-editor-quill-box');
103
+ $(obj).parent('a').click((e) => {
104
+ e.preventDefault();
105
+ e.stopPropagation();
106
+ const currentImg = $(e.currentTarget).children('img');
107
+ this.imageCurrent = $(currentImg).attr('src');
108
+ this.imageCurrentIndex = this.imageList.findIndex(t => t === this.imageCurrent);
109
+ this.imageCurrentPercent = 100;
110
+ // @ts-ignore
111
+ this.imageCurrentWidth = $(currentImg)[0].naturalWidth;
112
+ this.popup.open();
113
+ });
114
+ this.imageList.push($(obj).attr('src'));
115
+ // @ts-ignore
116
+ this.imageOrgWidthList.push($(obj)[0].naturalWidth);
117
+ this.imageListTotal = this.imageList.length;
118
+ });
119
+ }, 100);
120
+ });
121
+ this.imageGalleryBoxPrev = () => {
122
+ if (this.imageCurrentIndex > 0) {
123
+ this.imageCurrentIndex--;
124
+ this.imageCurrent = this.imageList[this.imageCurrentIndex];
125
+ this.imageGalleryBoxCalculateWidth();
126
+ }
127
+ };
128
+ this.imageGalleryBoxNext = () => {
129
+ if (this.imageCurrentIndex < this.imageList.length - 1) {
130
+ this.imageCurrentIndex++;
131
+ this.imageCurrent = this.imageList[this.imageCurrentIndex];
132
+ this.imageGalleryBoxCalculateWidth();
133
+ }
134
+ };
135
+ this.imageGalleryBoxZoomIn = () => {
136
+ if (this.imageCurrentPercent < 200) {
137
+ this.imageCurrentPercent += 10;
138
+ this.imageGalleryBoxCalculateWidth();
139
+ }
140
+ };
141
+ this.imageGalleryBoxZoomOut = () => {
142
+ if (this.imageCurrentPercent > 10) {
143
+ this.imageCurrentPercent -= 10;
144
+ this.imageGalleryBoxCalculateWidth();
145
+ }
146
+ };
147
+ this.imageGalleryBoxCalculateWidth = () => {
148
+ const orgWidth = this.imageOrgWidthList[this.imageCurrentIndex];
149
+ this.imageCurrentWidth = this.imageCurrentPercent * orgWidth / 100.0;
150
+ };
151
+ }
152
+ ngOnInit() {
153
+ // tslint:disable-next-line:max-line-length
154
+ // this.currentImageUrl = typeof this.data.currentImage === 'string' ? this.data.currentImage : this.data.currentImage.previewSrc || this.data.currentImage.src;
155
+ }
156
+ }
157
+ _initImageSlideShowBox = new WeakMap();
158
+ ImagePreviewSdmodalComponent.decorators = [
159
+ { type: Component, args: [{
160
+ selector: 'sd-image-preview-2',
161
+ template: "<sd-modal [title]=\"' '\" width=\"90%\" #popup>\r\n <sd-modal-body>\r\n <div class=\"c-image-gallery-box\">\r\n <div class=\"c-content-scroll\">\r\n <div class=\"c-content\">\r\n <div class=\"c-content-cell\">\r\n <img src=\"{{imageCurrent}}\" style=\"width: {{imageCurrentWidth}}px\"/>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"c-toolbar\">\r\n <mat-icon (click)=\"imageGalleryBoxZoomOut()\">zoom_out</mat-icon>\r\n <span><b>{{imageCurrentPercent}}%</b></span>\r\n <mat-icon (click)=\"imageGalleryBoxZoomIn()\">zoom_in</mat-icon>\r\n <span>&nbsp;</span>\r\n <mat-icon (click)=\"imageGalleryBoxPrev()\">navigate_before</mat-icon>\r\n <span><b>{{(imageCurrentIndex + 1)}} / {{imageListTotal}}</b></span>\r\n <mat-icon (click)=\"imageGalleryBoxNext()\">navigate_next</mat-icon>\r\n </div>\r\n\r\n </div>\r\n\r\n </sd-modal-body>\r\n</sd-modal>\r\n",
162
+ styles: [".c-image-gallery-box{background:rgba(0,0,0,.54);position:relative}.c-image-gallery-box .c-content-scroll{height:79vh;overflow:auto;width:100%}.c-image-gallery-box .c-content-scroll .c-content{display:table;height:100%;width:100%}.c-image-gallery-box .c-content-scroll .c-content .c-content-cell{display:table-cell;text-align:center;vertical-align:middle}.c-image-gallery-box .c-toolbar{-moz-user-select:none;-webkit-user-select:none;background:rgba(0,0,0,.5);border-radius:4px;bottom:18px;color:#eee;left:0;margin-left:auto;margin-right:auto;padding-top:8px;position:absolute;right:0;text-align:center;user-select:none;width:250px}.c-image-gallery-box .c-toolbar span{margin:0 4px;vertical-align:top}.c-image-gallery-box .c-toolbar mat-icon{cursor:pointer;margin:0 4px}"]
163
+ },] }
164
+ ];
165
+ ImagePreviewSdmodalComponent.ctorParameters = () => [
166
+ { type: MatDialogRef },
167
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
168
+ ];
169
+ ImagePreviewSdmodalComponent.propDecorators = {
170
+ popup: [{ type: ViewChild, args: [SdModal,] }]
171
+ };
172
+
83
173
  class SdImagePreviewModule {
84
174
  }
85
175
  SdImagePreviewModule.decorators = [
86
176
  { type: NgModule, args: [{
87
- declarations: [ImagePreviewComponent, ImagePreviewDirective],
177
+ declarations: [ImagePreviewComponent, ImagePreviewSdmodalComponent, ImagePreviewDirective],
88
178
  exports: [ImagePreviewDirective],
89
179
  imports: [
90
180
  CommonModule,
91
181
  MatDialogModule,
92
- MatIconModule
182
+ MatIconModule,
183
+ SdModalModule
93
184
  ],
94
185
  entryComponents: [ImagePreviewComponent]
95
186
  },] }
@@ -103,5 +194,5 @@ SdImagePreviewModule.decorators = [
103
194
  * Generated bundle index. Do not edit.
104
195
  */
105
196
 
106
- export { SdImagePreviewModule, ImagePreviewComponent as ɵa, ImagePreviewDirective as ɵb };
197
+ export { SdImagePreviewModule, ImagePreviewComponent as ɵa, ImagePreviewSdmodalComponent as ɵb, ImagePreviewDirective as ɵc };
107
198
  //# sourceMappingURL=sd-angular-core-image-preview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-image-preview.js","sources":["../../../../projects/sd-core/image-preview/src/lib/image-preview/image-preview.component.ts","../../../../projects/sd-core/image-preview/src/lib/directives/image-preview.directive.ts","../../../../projects/sd-core/image-preview/src/lib/image-preview/image-preview.module.ts","../../../../projects/sd-core/image-preview/src/public-api.ts","../../../../projects/sd-core/image-preview/sd-angular-core-image-preview.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ImagePreview } from '../models/image-preview.model';\r\n\r\nexport interface Data {\r\n currentImage: Partial<ImagePreview> | string;\r\n images: Array<Partial<ImagePreview>>\r\n}\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss']\r\n})\r\nexport class ImagePreviewComponent implements OnInit {\r\n currentImageUrl: string;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ImagePreviewComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: Data\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.currentImageUrl = typeof this.data.currentImage === 'string' ? this.data.currentImage : this.data.currentImage.previewSrc || this.data.currentImage.src;\r\n }\r\n\r\n next(): void {\r\n const currentIdx = this.data.images.findIndex((image: Partial<ImagePreview> )=> (image.previewSrc || image.src) === this.currentImageUrl);\r\n if(currentIdx === this.data.images.length - 1) {\r\n this.currentImageUrl = (this.data.images[0] as Partial<ImagePreview>).previewSrc || (this.data.images[0] as Partial<ImagePreview>).src\r\n } else {\r\n this.currentImageUrl = (this.data.images[currentIdx + 1] as Partial<ImagePreview>).previewSrc || (this.data.images[currentIdx + 1] as Partial<ImagePreview>).src;\r\n }\r\n }\r\n\r\n prev(): void {\r\n const currentIdx = this.data.images.findIndex((image: Partial<ImagePreview> )=> (image.previewSrc || image.src) === this.currentImageUrl);\r\n if(currentIdx === 0) {\r\n this.currentImageUrl = (this.data.images[this.data.images.length - 1] as Partial<ImagePreview>).previewSrc || (this.data.images[this.data.images.length - 1] as Partial<ImagePreview>).src\r\n } else {\r\n this.currentImageUrl = (this.data.images[currentIdx - 1] as Partial<ImagePreview>).previewSrc || (this.data.images[currentIdx - 1] as Partial<ImagePreview>).src;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { ImagePreviewComponent } from \"../image-preview/image-preview.component\";\r\n\r\nexport interface ImagePreview {\r\n extension: string;\r\n file: File;\r\n fileName: string;\r\n previewSrc: string;\r\n src: string;\r\n}\r\n\r\n@Directive({\r\n selector: \"[sdImagePreview]\",\r\n})\r\nexport class ImagePreviewDirective {\r\n @Input(\"sdImagePreview\") images?: Array<Partial<ImagePreview>> | string = null;\r\n @Input() sdPreviewCurrentIdx: number;\r\n\r\n constructor(private el: ElementRef, public dialog: MatDialog) {}\r\n\r\n @HostListener(\"click\") onClick() {\r\n let currentImage: string | Partial<ImagePreview>;\r\n currentImage = this.el.nativeElement.src;\r\n if (this.images.length && this.sdPreviewCurrentIdx >= 0) {\r\n currentImage = this.images[this.sdPreviewCurrentIdx];\r\n }\r\n this.dialog.open(ImagePreviewComponent, {\r\n data: { currentImage, images: this.images },\r\n backdropClass: [\"image-prevew-backdrop\"],\r\n panelClass: \"image-prevew-panel\",\r\n width: \"600px\",\r\n maxWidth: \"90%\",\r\n height: \"600px\",\r\n maxHeight: \"90%\",\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ImagePreviewComponent } from './image-preview.component';\r\nimport { ImagePreviewDirective } from '../directives/image-preview.directive';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@NgModule({\r\n declarations: [ImagePreviewComponent, ImagePreviewDirective],\r\n exports: [ImagePreviewDirective],\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatIconModule\r\n ],\r\n entryComponents: [ImagePreviewComponent]\r\n})\r\nexport class SdImagePreviewModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\n\r\nexport * from './lib/image-preview/image-preview.module';\r\nexport * from './lib/models/image-preview.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {ImagePreviewDirective as ɵb} from './src/lib/directives/image-preview.directive';\nexport {ImagePreviewComponent as ɵa} from './src/lib/image-preview/image-preview.component';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-image-preview.js","sources":["../../../../projects/sd-core/image-preview/src/lib/image-preview/image-preview.component.ts","../../../../projects/sd-core/image-preview/src/lib/directives/image-preview.directive.ts","../../../../projects/sd-core/image-preview/src/lib/image-preview/image-preview-sdmodal.component.ts","../../../../projects/sd-core/image-preview/src/lib/image-preview/image-preview.module.ts","../../../../projects/sd-core/image-preview/src/public-api.ts","../../../../projects/sd-core/image-preview/sd-angular-core-image-preview.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ImagePreview } from '../models/image-preview.model';\r\n\r\nexport interface Data {\r\n currentImage: Partial<ImagePreview> | string;\r\n images: Array<Partial<ImagePreview>>\r\n}\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss']\r\n})\r\nexport class ImagePreviewComponent implements OnInit {\r\n currentImageUrl: string;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ImagePreviewComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: Data\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.currentImageUrl = typeof this.data.currentImage === 'string' ? this.data.currentImage : this.data.currentImage.previewSrc || this.data.currentImage.src;\r\n }\r\n\r\n next(): void {\r\n const currentIdx = this.data.images.findIndex((image: Partial<ImagePreview> )=> (image.previewSrc || image.src) === this.currentImageUrl);\r\n if(currentIdx === this.data.images.length - 1) {\r\n this.currentImageUrl = (this.data.images[0] as Partial<ImagePreview>).previewSrc || (this.data.images[0] as Partial<ImagePreview>).src\r\n } else {\r\n this.currentImageUrl = (this.data.images[currentIdx + 1] as Partial<ImagePreview>).previewSrc || (this.data.images[currentIdx + 1] as Partial<ImagePreview>).src;\r\n }\r\n }\r\n\r\n prev(): void {\r\n const currentIdx = this.data.images.findIndex((image: Partial<ImagePreview> )=> (image.previewSrc || image.src) === this.currentImageUrl);\r\n if(currentIdx === 0) {\r\n this.currentImageUrl = (this.data.images[this.data.images.length - 1] as Partial<ImagePreview>).previewSrc || (this.data.images[this.data.images.length - 1] as Partial<ImagePreview>).src\r\n } else {\r\n this.currentImageUrl = (this.data.images[currentIdx - 1] as Partial<ImagePreview>).previewSrc || (this.data.images[currentIdx - 1] as Partial<ImagePreview>).src;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { ImagePreviewComponent } from \"../image-preview/image-preview.component\";\r\n\r\nexport interface ImagePreview {\r\n extension: string;\r\n file: File;\r\n fileName: string;\r\n previewSrc: string;\r\n src: string;\r\n}\r\n\r\n@Directive({\r\n selector: \"[sdImagePreview]\",\r\n})\r\nexport class ImagePreviewDirective {\r\n @Input(\"sdImagePreview\") images?: Array<Partial<ImagePreview>> | string = null;\r\n @Input() sdPreviewCurrentIdx: number;\r\n\r\n constructor(private el: ElementRef, public dialog: MatDialog) {}\r\n\r\n @HostListener(\"click\") onClick() {\r\n let currentImage: string | Partial<ImagePreview>;\r\n currentImage = this.el.nativeElement.src;\r\n if (this.images.length && this.sdPreviewCurrentIdx >= 0) {\r\n currentImage = this.images[this.sdPreviewCurrentIdx];\r\n }\r\n this.dialog.open(ImagePreviewComponent, {\r\n data: { currentImage, images: this.images },\r\n backdropClass: [\"image-prevew-backdrop\"],\r\n panelClass: \"image-prevew-panel\",\r\n width: \"600px\",\r\n maxWidth: \"90%\",\r\n height: \"600px\",\r\n maxHeight: \"90%\",\r\n });\r\n }\r\n}\r\n","import {Component, Inject, OnInit, ViewChild} from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ImagePreview } from '../models/image-preview.model';\r\nimport * as $ from 'jquery';\r\nimport {SdModal} from '@sd-angular/core/modal';\r\n\r\nexport interface Data {\r\n currentImage: Partial<ImagePreview> | string;\r\n images: Array<Partial<ImagePreview>>;\r\n}\r\n\r\n@Component({\r\n selector: 'sd-image-preview-2',\r\n templateUrl: './image-preview-sdmodal.component.html',\r\n styleUrls: ['./image-preview-sdmodal.component.scss']\r\n})\r\nexport class ImagePreviewSdmodalComponent implements OnInit {\r\n @ViewChild(SdModal) popup: SdModal;\r\n imageList = [];\r\n imageOrgWidthList = [];\r\n imageListTotal = 0;\r\n imageCurrent = '';\r\n imageCurrentIndex = 0;\r\n imageCurrentPercent = 100;\r\n imageCurrentWidth = 0;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ImagePreviewSdmodalComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: Data\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // tslint:disable-next-line:max-line-length\r\n // this.currentImageUrl = typeof this.data.currentImage === 'string' ? this.data.currentImage : this.data.currentImage.previewSrc || this.data.currentImage.src;\r\n }\r\n\r\n #initImageSlideShowBox = () => {\r\n setTimeout(() => {\r\n this.imageList = [];\r\n this.imageOrgWidthList = [];\r\n $('img[alt=c-image-editor-quill]').each((index, obj) => {\r\n $(obj).parent('a').addClass('c-image-editor-quill-box');\r\n $(obj).parent('a').click((e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const currentImg = $(e.currentTarget).children('img');\r\n this.imageCurrent = $(currentImg).attr('src');\r\n this.imageCurrentIndex = this.imageList.findIndex(t => t === this.imageCurrent);\r\n this.imageCurrentPercent = 100;\r\n // @ts-ignore\r\n this.imageCurrentWidth = $(currentImg)[0].naturalWidth;\r\n this.popup.open();\r\n });\r\n this.imageList.push($(obj).attr('src'));\r\n // @ts-ignore\r\n this.imageOrgWidthList.push($(obj)[0].naturalWidth);\r\n this.imageListTotal = this.imageList.length;\r\n });\r\n }, 100);\r\n\r\n }\r\n\r\n imageGalleryBoxPrev = () => {\r\n if (this.imageCurrentIndex > 0) {\r\n this.imageCurrentIndex--;\r\n this.imageCurrent = this.imageList[this.imageCurrentIndex];\r\n this.imageGalleryBoxCalculateWidth();\r\n }\r\n }\r\n imageGalleryBoxNext = () => {\r\n if (this.imageCurrentIndex < this.imageList.length - 1) {\r\n this.imageCurrentIndex++;\r\n this.imageCurrent = this.imageList[this.imageCurrentIndex];\r\n this.imageGalleryBoxCalculateWidth();\r\n }\r\n }\r\n imageGalleryBoxZoomIn = () => {\r\n if (this.imageCurrentPercent < 200) {\r\n this.imageCurrentPercent += 10;\r\n this.imageGalleryBoxCalculateWidth();\r\n }\r\n }\r\n imageGalleryBoxZoomOut = () => {\r\n if (this.imageCurrentPercent > 10) {\r\n this.imageCurrentPercent -= 10;\r\n this.imageGalleryBoxCalculateWidth();\r\n }\r\n }\r\n imageGalleryBoxCalculateWidth = () => {\r\n const orgWidth = this.imageOrgWidthList[this.imageCurrentIndex];\r\n this.imageCurrentWidth = this.imageCurrentPercent * orgWidth / 100.0;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ImagePreviewComponent } from './image-preview.component';\r\nimport { ImagePreviewDirective } from '../directives/image-preview.directive';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport {ImagePreviewSdmodalComponent} from './image-preview-sdmodal.component';\r\nimport {SdModalModule} from '@sd-angular/core/modal';\r\n\r\n@NgModule({\r\n declarations: [ImagePreviewComponent, ImagePreviewSdmodalComponent, ImagePreviewDirective],\r\n exports: [ImagePreviewDirective],\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n SdModalModule\r\n ],\r\n entryComponents: [ImagePreviewComponent]\r\n})\r\nexport class SdImagePreviewModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\n\r\nexport * from './lib/image-preview/image-preview.module';\r\nexport * from './lib/models/image-preview.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {ImagePreviewDirective as ɵc} from './src/lib/directives/image-preview.directive';\nexport {ImagePreviewSdmodalComponent as ɵb} from './src/lib/image-preview/image-preview-sdmodal.component';\nexport {ImagePreviewComponent as ɵa} from './src/lib/image-preview/image-preview.component';"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ class SdModalResizable {
27
27
  this.isHover = false;
28
28
  this.isLoading = false;
29
29
  this.isMinium = false;
30
+ this.isFullscreen = false;
30
31
  this.open = () => {
31
32
  this.ref.markForCheck();
32
33
  this.isOpened = true;
@@ -64,21 +65,29 @@ class SdModalResizable {
64
65
  // console.log('MAXIUM isMinium' + this.id, this.isMinium);
65
66
  __classPrivateFieldGet(this, _drawMiniumBar).call(this);
66
67
  };
68
+ this.changeFullScreen = () => {
69
+ this.ref.markForCheck();
70
+ this.isFullscreen = !this.isFullscreen;
71
+ __classPrivateFieldGet(this, _drawMiniumBar).call(this);
72
+ };
67
73
  _drawMiniumBar.set(this, () => {
68
74
  setTimeout(() => {
69
75
  let totalRight = 8;
70
76
  const miniumWidth = 300;
71
77
  $('.modal-custom').each((index, item) => {
72
78
  if ($(item).hasClass('c-minium')) {
73
- $(item).css({ width: 300 + 'px', right: totalRight + 'px' });
79
+ $(item).css({ width: miniumWidth + 'px', right: totalRight + 'px' });
74
80
  totalRight += miniumWidth + 8;
75
81
  }
76
82
  else if (!$(item).hasClass('c-closed')) {
77
83
  const maxiumWidth = parseInt($(item).attr('data-width'), 0);
78
- if (maxiumWidth > 0) {
84
+ if ($(item).hasClass('c-fullscreen')) {
85
+ $(item).css({ width: 'calc(100% - 16px)', right: '8px' });
86
+ }
87
+ else {
79
88
  $(item).css({ width: maxiumWidth + 'px', right: totalRight + 'px' });
80
- totalRight += maxiumWidth + 8;
81
89
  }
90
+ totalRight += maxiumWidth + 8;
82
91
  }
83
92
  });
84
93
  }, 100);
@@ -108,9 +117,9 @@ _embeddedViewRef = new WeakMap(), _drawMiniumBar = new WeakMap();
108
117
  SdModalResizable.decorators = [
109
118
  { type: Component, args: [{
110
119
  selector: 'sd-modal-resizable',
111
- template: "<ng-template cdkPortal>\r\n <div [id]=\"id\" class=\"modal-custom\" [ngStyle]=\"{'width': width}\"\r\n [ngClass]=\"{'modal-custom--active': isOpened,'modal-custom--loading': isLoading, 'c-minium': isMinium}\"\r\n (mouseover)=\"isHover = true\" (mouseout)=\"isHover = false\">\r\n <ng-container *ngIf=\"isOpened\">\r\n <div class=\"modal-custom__header media align-items-center\">\r\n <div class=\"modal-custom__title media-body\">\r\n <ng-content select=\"[sdTitle]\"></ng-content>\r\n </div>\r\n <button type=\"button\" class=\"c-action--white c-min\" (click)=\"minium()\" *ngIf=\"!isMinium\" mat-icon-button\r\n title=\"Thu nh\u1ECF\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white c-max\" (click)=\"maxium()\" *ngIf=\"isMinium\" mat-icon-button\r\n title=\"Ph\u00F3ng to\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"close()\" mat-icon-button title=\"\u0110\u00F3ng\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"isOpened\" class=\"modal-custom__body\">\r\n <div class=\"modal-custom__content\">\r\n <ng-content select=\"[sdBody]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"modal-custom__footer\">\r\n <ng-content select=\"[sdFooter]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
120
+ template: "<ng-template cdkPortal>\r\n <div [id]=\"id\" class=\"modal-custom\" [ngStyle]=\"{'width': width}\"\r\n [ngClass]=\"{'modal-custom--active': isOpened,'modal-custom--loading': isLoading\r\n , 'c-minium': isMinium, 'c-fullscreen': isFullscreen}\"\r\n (mouseover)=\"isHover = true\" (mouseout)=\"isHover = false\">\r\n <ng-container *ngIf=\"isOpened\">\r\n <div class=\"modal-custom__header media align-items-center\">\r\n <div class=\"modal-custom__title media-body\">\r\n <ng-content select=\"[sdTitle]\"></ng-content>\r\n </div>\r\n <button type=\"button\" class=\"c-action--white c-min\" (click)=\"minium()\" *ngIf=\"!isMinium\" mat-icon-button\r\n title=\"Thu nh\u1ECF\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white c-max\" (click)=\"maxium()\" *ngIf=\"isMinium\" mat-icon-button\r\n title=\"Ph\u00F3ng to\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"changeFullScreen()\" *ngIf=\"!isFullscreen\" mat-icon-button\r\n title=\"To\u00E0n m\u00E0n h\u00ECnh\">\r\n <mat-icon>open_in_full</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"changeFullScreen()\" *ngIf=\"isFullscreen\" mat-icon-button\r\n title=\"Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh\">\r\n <mat-icon>fullscreen_exit</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"close()\" mat-icon-button title=\"\u0110\u00F3ng\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"isOpened\" class=\"modal-custom__body\">\r\n <div class=\"modal-custom__content\">\r\n <ng-content select=\"[sdBody]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"modal-custom__footer\">\r\n <ng-content select=\"[sdFooter]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n",
112
121
  changeDetection: ChangeDetectionStrategy.OnPush,
113
- styles: [".text-black400{color:#757575}.modal-custom{background-color:#fff;border-radius:4px 4px 0 0;bottom:0;box-shadow:0 .4px .8px rgba(0,0,0,.1),0 3px 6px rgba(0,0,0,.2);display:flex;flex-direction:column;opacity:0;pointer-events:none;position:fixed;right:12px;top:80px;transform:translate3d(0,100%,0);transition:all .3s ease-in-out;visibility:hidden;z-index:999}.modal-custom button.c-action--white:focus{outline:none!important}.modal-custom.c-minium-of-list{bottom:0;opacity:1;pointer-events:all;top:auto;transform:translateZ(0);visibility:visible}.modal-custom.c-minium{top:auto}.modal-custom.c-minium .modal-custom__body,.modal-custom.c-minium .modal-custom__footer{display:none}.c-action{color:#212121}.c-action:focus{outline:none}.c-action--white{color:#fff}.c-action--white.c-min{margin-bottom:-12px}.c-action--white.c-max{margin-top:-12px}.modal-custom__icon{background:transparent;border:0;color:#212121;outline:none;overflow:hidden}.modal-custom__icon .mat-icon{float:left}.modal-custom__header{background-color:#5d6165;border-radius:4px 4px 0 0;color:#fff;min-height:40px;padding:0 16px}.modal-custom__body{flex:1;position:relative}.modal-custom__content{bottom:0;left:0;overflow:auto;padding:8px 16px 16px;position:absolute;right:0;top:0}.modal-custom__footer{border-top:1px solid #dde0e5;padding:5px 0}.modal-custom-backdrop{background:none;border:0;bottom:0;height:100%;left:0;outline:none!important;position:fixed;right:0;top:0;transition:all .3s ease-in-out;width:100%;z-index:99}.modal-custom-backdrop--active{background-color:rgba(0,0,0,.4)}.modal-custom--active{opacity:1;pointer-events:all;transform:translateZ(0);visibility:visible}.modal-custom__title{font-size:14px;font-weight:500;line-height:20px}"]
122
+ styles: [".text-black400{color:#757575}.modal-custom{background-color:#fff;border-radius:4px 4px 0 0;bottom:0;box-shadow:0 .4px .8px rgba(0,0,0,.1),0 3px 6px rgba(0,0,0,.2);display:flex;flex-direction:column;opacity:0;pointer-events:none;position:fixed;right:12px;top:80px;transform:translate3d(0,100%,0);transition:all .3s ease-in-out;visibility:hidden;z-index:999}.modal-custom button.c-action--white:focus{outline:none!important}.modal-custom.c-minium-of-list{bottom:0;opacity:1;pointer-events:all;top:auto;transform:translateZ(0);visibility:visible}.modal-custom.c-minium{top:auto!important;z-index:999!important}.modal-custom.c-minium .modal-custom__body,.modal-custom.c-minium .modal-custom__footer{display:none}.modal-custom.c-fullscreen{top:0;z-index:1000}.c-action{color:#212121}.c-action:focus{outline:none}.c-action--white{color:#fff}.c-action--white.c-min{margin-bottom:-12px}.c-action--white.c-max{margin-top:-12px}.modal-custom__icon{background:transparent;border:0;color:#212121;outline:none;overflow:hidden}.modal-custom__icon .mat-icon{float:left}.modal-custom__header{background-color:#5d6165;border-radius:4px 4px 0 0;color:#fff;min-height:40px;padding:0 16px}.modal-custom__body{flex:1;position:relative}.modal-custom__content{bottom:0;left:0;overflow:auto;padding:8px 16px 16px;position:absolute;right:0;top:0}.modal-custom__footer{border-top:1px solid #dde0e5;padding:5px 0}.modal-custom-backdrop{background:none;border:0;bottom:0;height:100%;left:0;outline:none!important;position:fixed;right:0;top:0;transition:all .3s ease-in-out;width:100%;z-index:99}.modal-custom-backdrop--active{background-color:rgba(0,0,0,.4)}.modal-custom--active{opacity:1;pointer-events:all;transform:translateZ(0);visibility:visible}.modal-custom__title{font-size:14px;font-weight:500;line-height:20px}"]
114
123
  },] }
115
124
  ];
116
125
  SdModalResizable.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-modal-resizable.js","sources":["../../../../projects/sd-core/modal-resizable/src/lib/modal-resizable/modal-resizable.component.ts","../../../../projects/sd-core/modal-resizable/src/lib/modal-resizable.module.ts","../../../../projects/sd-core/modal-resizable/src/public-api.ts","../../../../projects/sd-core/modal-resizable/sd-angular-core-modal-resizable.ts"],"sourcesContent":["import {\r\n Component,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ApplicationRef,\r\n Injector,\r\n EmbeddedViewRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {CdkPortal, DomPortalOutlet} from '@angular/cdk/portal';\r\nimport * as uuid from 'uuid';\r\nimport {SdLoadingService} from '@sd-angular/core/loading';\r\nimport $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'sd-modal-resizable',\r\n templateUrl: './modal-resizable.component.html',\r\n styleUrls: ['./modal-resizable.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdModalResizable implements AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n @ViewChild(CdkPortal) portal: CdkPortal;\r\n @Input() editable: boolean;\r\n @Input() width = '480px';\r\n @Output() editingChanged = new EventEmitter<boolean>();\r\n #embeddedViewRef: EmbeddedViewRef<any>;\r\n isEditing = false;\r\n isOpened = false;\r\n isHover = false;\r\n isLoading = false;\r\n isMinium = false;\r\n\r\n constructor(\r\n private cfr: ComponentFactoryResolver,\r\n private ar: ApplicationRef,\r\n private injector: Injector,\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#embeddedViewRef = new DomPortalOutlet(\r\n document.body,\r\n this.cfr,\r\n this.ar,\r\n this.injector\r\n ).attachTemplatePortal(this.portal);\r\n }\r\n\r\n open = () => {\r\n this.ref.markForCheck();\r\n this.isOpened = true;\r\n // console.log('OPEN isMinium' + this.id, this.isMinium);\r\n\r\n // tinh toan width maxium lần đầu khi không ở trạng thái minium\r\n if (!$('#' + this.id).hasClass('c-minium')) {\r\n setTimeout(() => {\r\n const maxiumWidth = $('#' + this.id).width();\r\n if (maxiumWidth > 0) {\r\n $('#' + this.id).attr('data-width', maxiumWidth);\r\n }\r\n $('#' + this.id).removeClass('c-closed');\r\n }, 100);\r\n }\r\n\r\n this.maxium();\r\n }\r\n\r\n close = () => {\r\n this.ref.markForCheck();\r\n this.isOpened = false;\r\n setTimeout(() => {\r\n $('#' + this.id).css({width: '0px', right: '0px'}).removeClass('c-minium').addClass('c-closed');\r\n }, 100);\r\n this.stopLoading();\r\n\r\n this.#drawMiniumBar();\r\n }\r\n\r\n minium = () => {\r\n this.ref.markForCheck();\r\n this.isMinium = true;\r\n // console.log('MINIUM isMinium' + this.id, this.isMinium);\r\n this.#drawMiniumBar();\r\n }\r\n\r\n maxium = () => {\r\n this.ref.markForCheck();\r\n this.isMinium = false;\r\n // console.log('MAXIUM isMinium' + this.id, this.isMinium);\r\n this.#drawMiniumBar();\r\n }\r\n\r\n #drawMiniumBar = () => {\r\n setTimeout(() => {\r\n let totalRight = 8;\r\n const miniumWidth = 300;\r\n $('.modal-custom').each((index, item) => {\r\n if ($(item).hasClass('c-minium')) {\r\n $(item).css({width: 300 + 'px', right: totalRight + 'px'});\r\n totalRight += miniumWidth + 8;\r\n } else if (!$(item).hasClass('c-closed')) {\r\n const maxiumWidth = parseInt($(item).attr('data-width'), 0);\r\n if (maxiumWidth > 0) {\r\n $(item).css({width: maxiumWidth + 'px', right: totalRight + 'px'});\r\n totalRight += maxiumWidth + 8;\r\n }\r\n }\r\n\r\n });\r\n }, 100);\r\n\r\n }\r\n\r\n startLoading = () => {\r\n this.isLoading = true;\r\n this.loadingService.stop();\r\n this.loadingService.start(`#${this.id}`);\r\n }\r\n\r\n stopLoading = () => {\r\n this.isLoading = false;\r\n this.loadingService.stop();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#embeddedViewRef.destroy();\r\n }\r\n\r\n toggleEditable() {\r\n this.isEditing = !this.isEditing;\r\n this.editingChanged.emit(this.isEditing);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdModalResizable } from './modal-resizable/modal-resizable.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatButtonModule,\r\n SdButtonModule,\r\n PortalModule\r\n ],\r\n declarations: [\r\n SdModalResizable\r\n ],\r\n exports: [\r\n SdModalResizable\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdModalResizableModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/modal-resizable/modal-resizable.component';\r\n\r\nexport * from './lib/modal-resizable.module';\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-modal-resizable.js","sources":["../../../../projects/sd-core/modal-resizable/src/lib/modal-resizable/modal-resizable.component.ts","../../../../projects/sd-core/modal-resizable/src/lib/modal-resizable.module.ts","../../../../projects/sd-core/modal-resizable/src/public-api.ts","../../../../projects/sd-core/modal-resizable/sd-angular-core-modal-resizable.ts"],"sourcesContent":["import {\r\n Component,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ApplicationRef,\r\n Injector,\r\n EmbeddedViewRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {CdkPortal, DomPortalOutlet} from '@angular/cdk/portal';\r\nimport * as uuid from 'uuid';\r\nimport {SdLoadingService} from '@sd-angular/core/loading';\r\nimport $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'sd-modal-resizable',\r\n templateUrl: './modal-resizable.component.html',\r\n styleUrls: ['./modal-resizable.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdModalResizable implements AfterViewInit, OnDestroy {\r\n id = `I${uuid.v4()}`;\r\n @ViewChild(CdkPortal) portal: CdkPortal;\r\n @Input() editable: boolean;\r\n @Input() width = '480px';\r\n @Output() editingChanged = new EventEmitter<boolean>();\r\n #embeddedViewRef: EmbeddedViewRef<any>;\r\n isEditing = false;\r\n isOpened = false;\r\n isHover = false;\r\n isLoading = false;\r\n isMinium = false;\r\n isFullscreen = false;\r\n\r\n constructor(\r\n private cfr: ComponentFactoryResolver,\r\n private ar: ApplicationRef,\r\n private injector: Injector,\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService\r\n ) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#embeddedViewRef = new DomPortalOutlet(\r\n document.body,\r\n this.cfr,\r\n this.ar,\r\n this.injector\r\n ).attachTemplatePortal(this.portal);\r\n }\r\n\r\n open = () => {\r\n this.ref.markForCheck();\r\n this.isOpened = true;\r\n // console.log('OPEN isMinium' + this.id, this.isMinium);\r\n\r\n // tinh toan width maxium lần đầu khi không ở trạng thái minium\r\n if (!$('#' + this.id).hasClass('c-minium')) {\r\n setTimeout(() => {\r\n const maxiumWidth = $('#' + this.id).width();\r\n if (maxiumWidth > 0) {\r\n $('#' + this.id).attr('data-width', maxiumWidth);\r\n }\r\n $('#' + this.id).removeClass('c-closed');\r\n }, 100);\r\n }\r\n\r\n this.maxium();\r\n }\r\n\r\n close = () => {\r\n this.ref.markForCheck();\r\n this.isOpened = false;\r\n setTimeout(() => {\r\n $('#' + this.id).css({width: '0px', right: '0px'}).removeClass('c-minium').addClass('c-closed');\r\n }, 100);\r\n this.stopLoading();\r\n\r\n this.#drawMiniumBar();\r\n }\r\n\r\n minium = () => {\r\n this.ref.markForCheck();\r\n this.isMinium = true;\r\n // console.log('MINIUM isMinium' + this.id, this.isMinium);\r\n this.#drawMiniumBar();\r\n }\r\n\r\n maxium = () => {\r\n this.ref.markForCheck();\r\n this.isMinium = false;\r\n // console.log('MAXIUM isMinium' + this.id, this.isMinium);\r\n this.#drawMiniumBar();\r\n }\r\n\r\n changeFullScreen = () => {\r\n this.ref.markForCheck();\r\n this.isFullscreen = !this.isFullscreen;\r\n this.#drawMiniumBar();\r\n }\r\n\r\n #drawMiniumBar = () => {\r\n setTimeout(() => {\r\n let totalRight = 8;\r\n const miniumWidth = 300;\r\n $('.modal-custom').each((index, item) => {\r\n if ($(item).hasClass('c-minium')) {\r\n $(item).css({width: miniumWidth + 'px', right: totalRight + 'px'});\r\n totalRight += miniumWidth + 8;\r\n } else if (!$(item).hasClass('c-closed')) {\r\n const maxiumWidth = parseInt($(item).attr('data-width'), 0);\r\n if ($(item).hasClass('c-fullscreen')) {\r\n $(item).css({width: 'calc(100% - 16px)', right: '8px'});\r\n } else {\r\n $(item).css({width: maxiumWidth + 'px', right: totalRight + 'px'});\r\n }\r\n totalRight += maxiumWidth + 8;\r\n }\r\n\r\n });\r\n }, 100);\r\n\r\n }\r\n\r\n startLoading = () => {\r\n this.isLoading = true;\r\n this.loadingService.stop();\r\n this.loadingService.start(`#${this.id}`);\r\n }\r\n\r\n stopLoading = () => {\r\n this.isLoading = false;\r\n this.loadingService.stop();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#embeddedViewRef.destroy();\r\n }\r\n\r\n toggleEditable() {\r\n this.isEditing = !this.isEditing;\r\n this.editingChanged.emit(this.isEditing);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdModalResizable } from './modal-resizable/modal-resizable.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatButtonModule,\r\n SdButtonModule,\r\n PortalModule\r\n ],\r\n declarations: [\r\n SdModalResizable\r\n ],\r\n exports: [\r\n SdModalResizable\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdModalResizableModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/modal-resizable/modal-resizable.component';\r\n\r\nexport * from './lib/modal-resizable.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
@@ -2,5 +2,6 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './index';
5
- export { ImagePreviewDirective as ɵb } from './src/lib/directives/image-preview.directive';
5
+ export { ImagePreviewDirective as ɵc } from './src/lib/directives/image-preview.directive';
6
+ export { ImagePreviewSdmodalComponent as ɵb } from './src/lib/image-preview/image-preview-sdmodal.component';
6
7
  export { ImagePreviewComponent as ɵa } from './src/lib/image-preview/image-preview.component';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdImagePreviewModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"ɵb"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":14,"character":4}],"entryComponents":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ImagePreview":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-image-preview","template":"<h1 mat-dialog-title class=\"d-flex\">\r\n <mat-icon\r\n mat-dialog-close\r\n role=\"img\"\r\n class=\"mat-icon notranslate material-icons mat-icon-no-color ml-auto\"\r\n >close</mat-icon\r\n >\r\n</h1>\r\n<div mat-dialog-content class=\"h-100 position-relative m-0\">\r\n <ng-container *ngIf=\"data?.images?.length\">\r\n <span class=\"material-icons-outlined position-absolute prev\" (click)=\"prev()\">\r\n arrow_back_ios\r\n </span>\r\n <span class=\"material-icons-outlined position-absolute next\" (click)=\"next()\">\r\n arrow_forward_ios\r\n </span>\r\n </ng-container>\r\n <img\r\n [src]=\"currentImageUrl\"\r\n class=\"image-preview_image\"\r\n />\r\n</div>\r\n","styles":[".image-prevew-panel .mat-dialog-container{padding:0}:host{display:flex;flex-direction:column;height:100%}.image-preview_image{-o-object-fit:contain;display:block;height:100%;margin:0 auto;object-fit:contain;width:90%}.material-icons-outlined{cursor:pointer}.material-icons-outlined.prev{left:5px;top:50%;transform:translateY(-50%)}.material-icons-outlined.next{right:5px;top:50%;transform:translateY(-50%)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":19,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵa"}]},{"__symbolic":"reference","name":"any"}]}],"ngOnInit":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"prev":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"[sdImagePreview]"}]}],"members":{"images":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3},"arguments":["sdImagePreview"]}]}],"sdPreviewCurrentIdx":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":19,"character":26},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":19,"character":53}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":21,"character":3},"arguments":["click"]}]}]}}},"origins":{"SdImagePreviewModule":"./src/lib/image-preview/image-preview.module","ImagePreview":"./src/lib/models/image-preview.model","ɵa":"./src/lib/image-preview/image-preview.component","ɵb":"./src/lib/directives/image-preview.directive"},"importAs":"@sd-angular/core/image-preview"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdImagePreviewModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"exports":[{"__symbolic":"reference","name":"ɵc"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":15,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/modal","name":"SdModalModule","line":16,"character":4}],"entryComponents":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ImagePreview":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"app-image-preview","template":"<h1 mat-dialog-title class=\"d-flex\">\r\n <mat-icon\r\n mat-dialog-close\r\n role=\"img\"\r\n class=\"mat-icon notranslate material-icons mat-icon-no-color ml-auto\"\r\n >close</mat-icon\r\n >\r\n</h1>\r\n<div mat-dialog-content class=\"h-100 position-relative m-0\">\r\n <ng-container *ngIf=\"data?.images?.length\">\r\n <span class=\"material-icons-outlined position-absolute prev\" (click)=\"prev()\">\r\n arrow_back_ios\r\n </span>\r\n <span class=\"material-icons-outlined position-absolute next\" (click)=\"next()\">\r\n arrow_forward_ios\r\n </span>\r\n </ng-container>\r\n <img\r\n [src]=\"currentImageUrl\"\r\n class=\"image-preview_image\"\r\n />\r\n</div>\r\n","styles":[".image-prevew-panel .mat-dialog-container{padding:0}:host{display:flex;flex-direction:column;height:100%}.image-preview_image{-o-object-fit:contain;display:block;height:100%;margin:0 auto;object-fit:contain;width:90%}.material-icons-outlined{cursor:pointer}.material-icons-outlined.prev{left:5px;top:50%;transform:translateY(-50%)}.material-icons-outlined.next{right:5px;top:50%;transform:translateY(-50%)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":19,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵa"}]},{"__symbolic":"reference","name":"any"}]}],"ngOnInit":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"prev":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"sd-image-preview-2","template":"<sd-modal [title]=\"' '\" width=\"90%\" #popup>\r\n <sd-modal-body>\r\n <div class=\"c-image-gallery-box\">\r\n <div class=\"c-content-scroll\">\r\n <div class=\"c-content\">\r\n <div class=\"c-content-cell\">\r\n <img src=\"{{imageCurrent}}\" style=\"width: {{imageCurrentWidth}}px\"/>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"c-toolbar\">\r\n <mat-icon (click)=\"imageGalleryBoxZoomOut()\">zoom_out</mat-icon>\r\n <span><b>{{imageCurrentPercent}}%</b></span>\r\n <mat-icon (click)=\"imageGalleryBoxZoomIn()\">zoom_in</mat-icon>\r\n <span>&nbsp;</span>\r\n <mat-icon (click)=\"imageGalleryBoxPrev()\">navigate_before</mat-icon>\r\n <span><b>{{(imageCurrentIndex + 1)}} / {{imageListTotal}}</b></span>\r\n <mat-icon (click)=\"imageGalleryBoxNext()\">navigate_next</mat-icon>\r\n </div>\r\n\r\n </div>\r\n\r\n </sd-modal-body>\r\n</sd-modal>\r\n","styles":[".c-image-gallery-box{background:rgba(0,0,0,.54);position:relative}.c-image-gallery-box .c-content-scroll{height:79vh;overflow:auto;width:100%}.c-image-gallery-box .c-content-scroll .c-content{display:table;height:100%;width:100%}.c-image-gallery-box .c-content-scroll .c-content .c-content-cell{display:table-cell;text-align:center;vertical-align:middle}.c-image-gallery-box .c-toolbar{-moz-user-select:none;-webkit-user-select:none;background:rgba(0,0,0,.5);border-radius:4px;bottom:18px;color:#eee;left:0;margin-left:auto;margin-right:auto;padding-top:8px;position:absolute;right:0;text-align:center;user-select:none;width:250px}.c-image-gallery-box .c-toolbar span{margin:0 4px;vertical-align:top}.c-image-gallery-box .c-toolbar mat-icon{cursor:pointer;margin:0 4px}"]}]}],"members":{"popup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/modal","name":"SdModal","line":17,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":28,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵb"}]},{"__symbolic":"reference","name":"any"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"[sdImagePreview]"}]}],"members":{"images":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3},"arguments":["sdImagePreview"]}]}],"sdPreviewCurrentIdx":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":19,"character":26},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":19,"character":53}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":21,"character":3},"arguments":["click"]}]}]}}},"origins":{"SdImagePreviewModule":"./src/lib/image-preview/image-preview.module","ImagePreview":"./src/lib/models/image-preview.model","ɵa":"./src/lib/image-preview/image-preview.component","ɵb":"./src/lib/image-preview/image-preview-sdmodal.component","ɵc":"./src/lib/directives/image-preview.directive"},"importAs":"@sd-angular/core/image-preview"}
@@ -0,0 +1,28 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { MatDialogRef } from '@angular/material/dialog';
3
+ import { ImagePreview } from '../models/image-preview.model';
4
+ import { SdModal } from '@sd-angular/core/modal';
5
+ export interface Data {
6
+ currentImage: Partial<ImagePreview> | string;
7
+ images: Array<Partial<ImagePreview>>;
8
+ }
9
+ export declare class ImagePreviewSdmodalComponent implements OnInit {
10
+ #private;
11
+ dialogRef: MatDialogRef<ImagePreviewSdmodalComponent>;
12
+ data: Data;
13
+ popup: SdModal;
14
+ imageList: any[];
15
+ imageOrgWidthList: any[];
16
+ imageListTotal: number;
17
+ imageCurrent: string;
18
+ imageCurrentIndex: number;
19
+ imageCurrentPercent: number;
20
+ imageCurrentWidth: number;
21
+ constructor(dialogRef: MatDialogRef<ImagePreviewSdmodalComponent>, data: Data);
22
+ ngOnInit(): void;
23
+ imageGalleryBoxPrev: () => void;
24
+ imageGalleryBoxNext: () => void;
25
+ imageGalleryBoxZoomIn: () => void;
26
+ imageGalleryBoxZoomOut: () => void;
27
+ imageGalleryBoxCalculateWidth: () => void;
28
+ }
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdModalResizable":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"sd-modal-resizable","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":24,"character":19},"member":"OnPush"},"template":"<ng-template cdkPortal>\r\n <div [id]=\"id\" class=\"modal-custom\" [ngStyle]=\"{'width': width}\"\r\n [ngClass]=\"{'modal-custom--active': isOpened,'modal-custom--loading': isLoading, 'c-minium': isMinium}\"\r\n (mouseover)=\"isHover = true\" (mouseout)=\"isHover = false\">\r\n <ng-container *ngIf=\"isOpened\">\r\n <div class=\"modal-custom__header media align-items-center\">\r\n <div class=\"modal-custom__title media-body\">\r\n <ng-content select=\"[sdTitle]\"></ng-content>\r\n </div>\r\n <button type=\"button\" class=\"c-action--white c-min\" (click)=\"minium()\" *ngIf=\"!isMinium\" mat-icon-button\r\n title=\"Thu nhỏ\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white c-max\" (click)=\"maxium()\" *ngIf=\"isMinium\" mat-icon-button\r\n title=\"Phóng to\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"close()\" mat-icon-button title=\"Đóng\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"isOpened\" class=\"modal-custom__body\">\r\n <div class=\"modal-custom__content\">\r\n <ng-content select=\"[sdBody]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"modal-custom__footer\">\r\n <ng-content select=\"[sdFooter]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>","styles":[".text-black400{color:#757575}.modal-custom{background-color:#fff;border-radius:4px 4px 0 0;bottom:0;box-shadow:0 .4px .8px rgba(0,0,0,.1),0 3px 6px rgba(0,0,0,.2);display:flex;flex-direction:column;opacity:0;pointer-events:none;position:fixed;right:12px;top:80px;transform:translate3d(0,100%,0);transition:all .3s ease-in-out;visibility:hidden;z-index:999}.modal-custom button.c-action--white:focus{outline:none!important}.modal-custom.c-minium-of-list{bottom:0;opacity:1;pointer-events:all;top:auto;transform:translateZ(0);visibility:visible}.modal-custom.c-minium{top:auto}.modal-custom.c-minium .modal-custom__body,.modal-custom.c-minium .modal-custom__footer{display:none}.c-action{color:#212121}.c-action:focus{outline:none}.c-action--white{color:#fff}.c-action--white.c-min{margin-bottom:-12px}.c-action--white.c-max{margin-top:-12px}.modal-custom__icon{background:transparent;border:0;color:#212121;outline:none;overflow:hidden}.modal-custom__icon .mat-icon{float:left}.modal-custom__header{background-color:#5d6165;border-radius:4px 4px 0 0;color:#fff;min-height:40px;padding:0 16px}.modal-custom__body{flex:1;position:relative}.modal-custom__content{bottom:0;left:0;overflow:auto;padding:8px 16px 16px;position:absolute;right:0;top:0}.modal-custom__footer{border-top:1px solid #dde0e5;padding:5px 0}.modal-custom-backdrop{background:none;border:0;bottom:0;height:100%;left:0;outline:none!important;position:fixed;right:0;top:0;transition:all .3s ease-in-out;width:100%;z-index:99}.modal-custom-backdrop--active{background-color:rgba(0,0,0,.4)}.modal-custom--active{opacity:1;pointer-events:all;transform:translateZ(0);visibility:visible}.modal-custom__title{font-size:14px;font-weight:500;line-height:20px}"]}]}],"members":{"portal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":28,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/cdk/portal","name":"CdkPortal","line":28,"character":13}]}]}],"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"editingChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":40,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":41,"character":16},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":42,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":43,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":44,"character":28}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"toggleEditable":[{"__symbolic":"method"}]}},"SdModalResizableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":15,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/cdk/portal","name":"PortalModule","line":17,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdModalResizable"}],"exports":[{"__symbolic":"reference","name":"SdModalResizable"}],"providers":[]}]}],"members":{}}},"origins":{"SdModalResizable":"./src/lib/modal-resizable/modal-resizable.component","SdModalResizableModule":"./src/lib/modal-resizable.module"},"importAs":"@sd-angular/core/modal-resizable"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdModalResizable":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"sd-modal-resizable","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":24,"character":19},"member":"OnPush"},"template":"<ng-template cdkPortal>\r\n <div [id]=\"id\" class=\"modal-custom\" [ngStyle]=\"{'width': width}\"\r\n [ngClass]=\"{'modal-custom--active': isOpened,'modal-custom--loading': isLoading\r\n , 'c-minium': isMinium, 'c-fullscreen': isFullscreen}\"\r\n (mouseover)=\"isHover = true\" (mouseout)=\"isHover = false\">\r\n <ng-container *ngIf=\"isOpened\">\r\n <div class=\"modal-custom__header media align-items-center\">\r\n <div class=\"modal-custom__title media-body\">\r\n <ng-content select=\"[sdTitle]\"></ng-content>\r\n </div>\r\n <button type=\"button\" class=\"c-action--white c-min\" (click)=\"minium()\" *ngIf=\"!isMinium\" mat-icon-button\r\n title=\"Thu nhỏ\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white c-max\" (click)=\"maxium()\" *ngIf=\"isMinium\" mat-icon-button\r\n title=\"Phóng to\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"changeFullScreen()\" *ngIf=\"!isFullscreen\" mat-icon-button\r\n title=\"Toàn màn hình\">\r\n <mat-icon>open_in_full</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"changeFullScreen()\" *ngIf=\"isFullscreen\" mat-icon-button\r\n title=\"Thoát toàn màn hình\">\r\n <mat-icon>fullscreen_exit</mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"c-action--white\" (click)=\"close()\" mat-icon-button title=\"Đóng\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"isOpened\" class=\"modal-custom__body\">\r\n <div class=\"modal-custom__content\">\r\n <ng-content select=\"[sdBody]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"modal-custom__footer\">\r\n <ng-content select=\"[sdFooter]\"></ng-content>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n","styles":[".text-black400{color:#757575}.modal-custom{background-color:#fff;border-radius:4px 4px 0 0;bottom:0;box-shadow:0 .4px .8px rgba(0,0,0,.1),0 3px 6px rgba(0,0,0,.2);display:flex;flex-direction:column;opacity:0;pointer-events:none;position:fixed;right:12px;top:80px;transform:translate3d(0,100%,0);transition:all .3s ease-in-out;visibility:hidden;z-index:999}.modal-custom button.c-action--white:focus{outline:none!important}.modal-custom.c-minium-of-list{bottom:0;opacity:1;pointer-events:all;top:auto;transform:translateZ(0);visibility:visible}.modal-custom.c-minium{top:auto!important;z-index:999!important}.modal-custom.c-minium .modal-custom__body,.modal-custom.c-minium .modal-custom__footer{display:none}.modal-custom.c-fullscreen{top:0;z-index:1000}.c-action{color:#212121}.c-action:focus{outline:none}.c-action--white{color:#fff}.c-action--white.c-min{margin-bottom:-12px}.c-action--white.c-max{margin-top:-12px}.modal-custom__icon{background:transparent;border:0;color:#212121;outline:none;overflow:hidden}.modal-custom__icon .mat-icon{float:left}.modal-custom__header{background-color:#5d6165;border-radius:4px 4px 0 0;color:#fff;min-height:40px;padding:0 16px}.modal-custom__body{flex:1;position:relative}.modal-custom__content{bottom:0;left:0;overflow:auto;padding:8px 16px 16px;position:absolute;right:0;top:0}.modal-custom__footer{border-top:1px solid #dde0e5;padding:5px 0}.modal-custom-backdrop{background:none;border:0;bottom:0;height:100%;left:0;outline:none!important;position:fixed;right:0;top:0;transition:all .3s ease-in-out;width:100%;z-index:99}.modal-custom-backdrop--active{background-color:rgba(0,0,0,.4)}.modal-custom--active{opacity:1;pointer-events:all;transform:translateZ(0);visibility:visible}.modal-custom__title{font-size:14px;font-weight:500;line-height:20px}"]}]}],"members":{"portal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":28,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/cdk/portal","name":"CdkPortal","line":28,"character":13}]}]}],"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"editingChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":41,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":42,"character":16},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":43,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":44,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":45,"character":28}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"toggleEditable":[{"__symbolic":"method"}]}},"SdModalResizableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":15,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/cdk/portal","name":"PortalModule","line":17,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdModalResizable"}],"exports":[{"__symbolic":"reference","name":"SdModalResizable"}],"providers":[]}]}],"members":{}}},"origins":{"SdModalResizable":"./src/lib/modal-resizable/modal-resizable.component","SdModalResizableModule":"./src/lib/modal-resizable.module"},"importAs":"@sd-angular/core/modal-resizable"}