@sd-angular/core 1.3.176 → 1.3.178

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 (40) hide show
  1. package/api/sd-angular-core-api.metadata.json +1 -1
  2. package/api/src/lib/api.service.d.ts +2 -2
  3. package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
  4. package/bundles/sd-angular-core-api.umd.js +147 -126
  5. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  6. package/bundles/sd-angular-core-api.umd.min.js +1 -1
  7. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  8. package/bundles/sd-angular-core-autocomplete.umd.js +1 -1
  9. package/bundles/sd-angular-core-autocomplete.umd.min.js +1 -1
  10. package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
  11. package/bundles/sd-angular-core-chart.umd.js +1 -1
  12. package/bundles/sd-angular-core-chart.umd.min.js +1 -1
  13. package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
  14. package/bundles/sd-angular-core-image-preview.umd.js +1 -1
  15. package/bundles/sd-angular-core-image-preview.umd.min.js +1 -1
  16. package/bundles/sd-angular-core-image-preview.umd.min.js.map +1 -1
  17. package/bundles/sd-angular-core-table.umd.js +4 -4
  18. package/bundles/sd-angular-core-table.umd.js.map +1 -1
  19. package/bundles/sd-angular-core-table.umd.min.js +1 -1
  20. package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
  21. package/chart/sd-angular-core-chart.metadata.json +1 -1
  22. package/esm2015/api/src/lib/api.service.js +51 -51
  23. package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
  24. package/esm2015/chart/src/lib/chart.component.js +1 -1
  25. package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.js +1 -1
  26. package/esm2015/table/src/lib/components/quick-action/quick-action.component.js +4 -4
  27. package/esm2015/table/src/lib/table.component.js +2 -2
  28. package/fesm2015/sd-angular-core-api.js +50 -50
  29. package/fesm2015/sd-angular-core-api.js.map +1 -1
  30. package/fesm2015/sd-angular-core-autocomplete.js +1 -1
  31. package/fesm2015/sd-angular-core-chart.js +1 -1
  32. package/fesm2015/sd-angular-core-image-preview.js +1 -1
  33. package/fesm2015/sd-angular-core-table.js +4 -4
  34. package/fesm2015/sd-angular-core-table.js.map +1 -1
  35. package/image-preview/sd-angular-core-image-preview.metadata.json +1 -1
  36. package/package.json +1 -1
  37. package/{sd-angular-core-1.3.176.tgz → sd-angular-core-1.3.178.tgz} +0 -0
  38. package/table/sd-angular-core-table.metadata.json +1 -1
  39. package/table/src/lib/components/quick-action/quick-action.component.d.ts +1 -1
  40. package/utility/src/lib/utility.service.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts"],"names":["API_CONFIG","InjectionToken","TOKEN","hash","origin","location","key","SdTokenService","configuration","cacheService","_this","this","set","token","create","type","hours","clear","remove","customHeaders","args","_b","_a","call","Object","defineProperty","prototype","get","Injectable","providedIn","Inject","Optional","SdCacheService","SdHttpInterceptor","tokenService","intercept","request","next","tokenHeader","clone","headers","url","startsWith","host","body","FormData","delete","beforeRemote","_d","_c","Promise","from","pipe","switchMap","handle","map","event","HttpResponse","afterRemote","catchError","error","throwError","NgModule","imports","HttpClientModule","exports","providers","provide","HTTP_INTERCEPTORS","useClass","multi","__awaiter","thisArg","_arguments","P","generator","resolve","reject","fulfilled","value","step","e","rejected","result","done","then","apply","__generator","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","length","push","__values","o","s","m","i","__read","r","ar","__classPrivateFieldGet","receiver","state","kind","has","SdApiService","httpClient","uploadId","_timeout","_cacheDuration","_cache","translate","post","options","hashKey","uuid.v4","Date","addMiliseconds","createdDate","subject","Subject","responseType","encodeURI","observe","timeout","subscribe","res","response","status","err","ok","take","toPromise","postCache","cacheType","cacheHours","_defineParams","rq","entries","_e","_f","toString","encodeURIComponent","join","getWithParams","params","assign","getCacheWithParams","getCache","encodedUrl","reload","uploadSingle","option","SdUtility","upload","file","name","lastIndexOf","message","Error","formData","append","put","catch","httpErrorResponse","HttpClient","method"],"mappings":"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","sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: (args?: { url?: string }) => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n customHeaders = (args?: { url?: string }) => {\r\n return this.configuration?.customHeaders?.(args) || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n private uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';\r\n\r\n #timeout = 120000; // 120s\r\n\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put<T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value !== null && value !== undefined && value !== '' && value?.toString() !== '') {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return this.getCache(`${url}${this.#defineParams(params)}`, { ...options, headers, encodeURI: false });\r\n }\r\n\r\n get = <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has() || options?.reload) {\r\n const result = await this.get(encodedUrl, options?.headers, { encodeURI: false });\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete<T = any>(url: string, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n uploadSingle = (url: string, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<any> => {\r\n return SdUtility.upload(option).then(file => this.upload(url, file));\r\n }\r\n\r\n upload = async (url: string, file: File) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts"],"names":["API_CONFIG","InjectionToken","TOKEN","hash","origin","location","key","SdTokenService","configuration","cacheService","_this","this","set","token","create","type","hours","clear","remove","customHeaders","args","_b","_a","call","Object","defineProperty","prototype","get","Injectable","providedIn","Inject","Optional","SdCacheService","SdHttpInterceptor","tokenService","intercept","request","next","tokenHeader","clone","headers","url","startsWith","host","body","FormData","delete","beforeRemote","_d","_c","Promise","from","pipe","switchMap","handle","map","event","HttpResponse","afterRemote","catchError","error","throwError","NgModule","imports","HttpClientModule","exports","providers","provide","HTTP_INTERCEPTORS","useClass","multi","__awaiter","thisArg","_arguments","P","generator","resolve","reject","fulfilled","value","step","e","rejected","result","done","then","apply","__generator","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","length","push","__values","o","s","m","i","__read","r","ar","__classPrivateFieldGet","receiver","state","kind","has","httpClient","uploadId","_timeout","_cacheDuration","_cache","translate","post","options","hashKey","uuid.v4","Date","addMiliseconds","createdDate","subject","Subject","responseType","encodeURI","observe","timeout","subscribe","res","response","status","err","ok","take","toPromise","postCache","_e","cacheType","cacheHours","_f","put","catch","httpErrorResponse","_defineParams","rq","entries","_g","_h","toString","encodeURIComponent","join","getWithParams","params","assign","getCacheWithParams","getCache","encodedUrl","reload","uploadSingle","option","SdUtility","upload","file","name","lastIndexOf","message","Error","formData","append","HttpClient","method"],"mappings":"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","sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: (args?: { url?: string }) => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n customHeaders = (args?: { url?: string }) => {\r\n return this.configuration?.customHeaders?.(args) || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n private uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';\r\n\r\n #timeout = 120000; // 120s\r\n\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put = async <T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return await new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value !== null && value !== undefined && value !== '' && value?.toString() !== '') {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = async <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return await this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = async <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return await this.getCache(`${url}${this.#defineParams(params)}`, { ...options, headers, encodeURI: false });\r\n }\r\n\r\n get = async <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has() || options?.reload) {\r\n const result = await this.get(encodedUrl, options?.headers, { encodeURI: false });\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete = async <T = any>(url: string, headers?: HttpHeaders): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders({\r\n url\r\n });\r\n return await new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n uploadSingle = (url: string, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<any> => {\r\n return SdUtility.upload(option).then(file => this.upload(url, file));\r\n }\r\n\r\n upload = async (url: string, file: File) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders({\r\n url\r\n })\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}"]}
@@ -772,7 +772,7 @@
772
772
  selector: 'sd-autocomplete',
773
773
  template: "<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\">{{label}} <span\r\n class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label>\r\n<ng-container *ngIf=\"sdLabelDef?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\">\r\n </ng-container>\r\n</ng-container>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value, selectedItem: selected | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [floatLabel]=\"size === 'sm' || formControl.value ? 'always':'auto'\" [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <input aria-hidden=\"true\" [id]=\"id\" #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"controlPlaceHolder | async\"\r\n [ngClass]=\"{'c-selected': formControl?.value}\" [matAutocomplete]=\"auto\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n matInput [autocomplete]=\"id\" autocorrect=\"off\" [errorStateMatcher]=\"matcher\" [required]=\"isRequired\"\r\n [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\" [sdPopoverTriggerFor]=\"null\"\r\n [sdPopoverDisabled]=\"!disableErrorMessage || formControl.valid\" #input />\r\n <mat-icon *ngIf=\"!loading && formControl?.value && !inputControl.disabled\" class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf=\"actionIcon && !loading && !formControl?.value && !inputControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"onAction($event)\" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <svg \r\n #copyTooltip=\"matTooltip\" \r\n *ngIf=\"!loading && formControl?.value && copyable\" \r\n matSuffix \r\n [matTooltip]=\"copied ? 'Copied' : 'Copy'\" \r\n class=\"icon-copy\" \r\n focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" \r\n (click)=\"onCopyText($event)\">\r\n <path d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"></path>\r\n </svg>\r\n <i [ngClass]=\"{'d-none': !loading}\" class=\"fa fa-spinner fa-pulse c-loading-icon\"></i>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event.option.value)\">\r\n <ng-container *ngIf=\"filteredItems | async as items\">\r\n <ng-container *ngIf=\"items.length\">\r\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n <ng-container *ngIf=\"autocompleteDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"autocompleteDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!autocompleteDisplayDef?.templateRef\">\r\n {{ displayField ? item[displayField] : item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option *ngIf=\"!items.length && inputControl.value && !isTyping && !loading\" [value]=\"\"\r\n class=\"T14R text-grey\">\r\n Kh\u00F4ng c\u00F3 d\u1EEF li\u1EC7u\r\n </mat-option>\r\n <mat-option class=\"sd__option--add\" *ngIf=\"!hiddenAdd && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{'New item' | sdTranslate}}\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"formControl?.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ \"This field is required\" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<!-- <sd-popover #error=\"sdPopover\" type=\"danger\" width=\"300px\">\r\n <span *ngIf=\"formControl.errors?.required\">\r\n {{ \"This field is required\" | sdTranslate }}\r\n </span>\r\n</sd-popover> -->",
774
774
  changeDetection: core.ChangeDetectionStrategy.OnPush,
775
- styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer!important;position:-webkit-sticky;position:sticky;z-index:10}.c-loading-icon{position:absolute;right:5px;top:5px}"]
775
+ styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer!important;position:-webkit-sticky;position:sticky;z-index:10}.c-loading-icon{position:absolute;right:5px;top:5px}"]
776
776
  },] }
777
777
  ];
778
778
  SdAutocomplete.ctorParameters = function () { return [
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function b(e,t,o,n){return new(o||(o=Promise))((function(r,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function l(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,l)}s((n=n.apply(e,t||[])).next())}))}function C(e,t){var o,n,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,n&&(r=2&i[0]?n.return:i[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,i[1])).done)return r;switch(n=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{o=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}}Object.create;function w(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var n,r,i=o.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return a}Object.create;function I(e,t,o,n){if("a"===o&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?n:"a"===o?n.call(e):n?n.value:t.get(e)}function T(e,t,o,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(e,o):r?r.value=o:t.set(e,o),o}var M,k,F,x,V,P,O,q,A,S,j,E,D,R=function(e){this.templateRef=e};R.decorators=[{type:t.Directive,args:[{selector:"[sdAutocompleteDisplayDef]"}]}],R.ctorParameters=function(){return[{type:t.TemplateRef}]};var W=function(){function e(e){this.formControl=e}return e.prototype.isErrorState=function(e,t){var o,n,r,i=t&&t.submitted;return!(!(null===(o=this.formControl)||void 0===o?void 0:o.invalid)||!((null===(n=this.formControl)||void 0===n?void 0:n.dirty)||(null===(r=this.formControl)||void 0===r?void 0:r.touched)||i))},e}(),_=function(){function e(e,o){var r=this;this.ref=e,this.formConfig=o,this.id="I"+l.v4(),M.set(this,void 0),k.set(this,0),F.set(this,l.v4()),this.loading=!1,this.inputControl=new d.SdFormControl,this.formControl=new d.SdFormControl,this.matcher=new W(this.formControl),x.set(this,void 0),V.set(this,new u.BehaviorSubject([])),this.limit=100,this.hiddenAdd=!1,this.action=new t.EventEmitter,this.modelChange=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.sdAdd=new t.EventEmitter,this.isRequired=!1,P.set(this,void 0),this.disableErrorMessage=!1,O.set(this,new u.Subscription),this.isFocused=!1,q.set(this,void 0),A.set(this,{}),S.set(this,{}),this.isTyping=!1,this.copyable=!1,this.copied=!1,this.onSelect=function(e){if(e){if(T(r,q,e),"string"==typeof e||"number"==typeof e)r.formControl.value!==e&&(r.formControl.setValue(e),r.modelChange.emit(e),r.sdChange.emit(e));else if(r.valueField&&r.displayField){var t=(null==e?void 0:e[r.valueField])||null;r.formControl.value!==t&&(r.formControl.setValue(t),r.modelChange.emit(t),r.sdChange.emit(e))}r.inputControl.setValue("",{emitEvent:!1})}},this.onFocus=function(){r.isFocused=!0,r.inputControl.setValue("")},this.onBlur=function(){r.isFocused=!1,r.inputControl.setValue("",{emitEvent:!1})},this.onClick=function(){var e;(null===(e=r.sdView)||void 0===e?void 0:e.templateRef)&&(r.formControl.disabled||r.isFocused||r.focus())},this.blur=function(){var e,t;null===(t=null===(e=r.input)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){r.isFocused=!0,setTimeout((function(){var e,t,o;null===(e=r.autocompleteTrigger)||void 0===e||e.openPanel(),null===(o=null===(t=r.input)||void 0===t?void 0:t.nativeElement)||void 0===o||o.focus()}),100)},this.clear=function(e){var t;null==e||e.stopPropagation(),null===(t=r.inputControl)||void 0===t||t.setValue(""),I(r,M)&&(r.formControl.setValue(null),r.modelChange.emit(null),r.sdChange.emit(null))},this.onAction=function(e){var t;null==e||e.stopPropagation(),null===(t=r.autocompleteTrigger)||void 0===t||t.closePanel(),r.action.emit()},this.onAdd=function(e){e.stopPropagation(),null==e||e.preventDefault(),r.sdAdd.emit()},this.reValidate=function(){r.inputControl.updateValueAndValidity({emitEvent:!0})},j.set(this,(function(){r.formControl.clearValidators(),r.formControl.clearAsyncValidators();var e=[],t=[];r.isRequired&&e.push(n.Validators.required),I(r,P)&&t.push(I(r,E).call(r,I(r,P))),r.formControl.setValidators(e),r.formControl.setAsyncValidators(t),r.formControl.updateValueAndValidity()})),E.set(this,(function(e){return function(t){return b(r,void 0,void 0,(function(){var o,n,r;return C(this,(function(i){switch(i.label){case 0:return o=t.value||null,e&&"function"==typeof e?(n=e(o,I(this,q)))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(r=i.sent())?[2,{customValidator:r}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}})),this.onCopyText=function(e){null==e||e.stopPropagation();var t=I(r,D).call(r);SdUtility.copyToClipboard(t),r.copied=!0,setTimeout((function(){r.copied=!1,r.ref.markForCheck()}),2e3)},D.set(this,(function(){var e,t=r.formControl.value,o=null!==(e=null==t?void 0:t.toString())&&void 0!==e?e:"";return"function"==typeof r.copyText?o=r.copyText(t,I(r,q)):r.copyText&&(o=r.copyText),o}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&T(this,F,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof n.NgForm?T(this,x,e.form):T(this,x,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=y.default({selector:"sd-autocomplete",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"items",{set:function(e){e?Array.isArray(e)?I(this,V).next(e.filter((function(e){return null!=e}))):(I(this,V).next(e),T(this,k,500)):I(this,V).next([]),this.formControl.updateValueAndValidity()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){I(this,M)!==e&&(T(this,M,e),this.formControl.setValue(e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?(this.inputControl.disable(),this.formControl.disable()):(this.inputControl.enable(),this.formControl.enable())},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"required",{set:function(e){this.isRequired=""===e||e,I(this,j).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){T(this,P,e),I(this,j).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e,e=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_copyable",{set:function(e){this.copyable=""===e||e},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),I(this,O).add(this.inputControl.touchChanges.subscribe((function(){t.formControl.markAsTouched(),t.ref.markForCheck()}))),I(this,O).add(this.formControl.sdChanges.subscribe((function(){t.ref.markForCheck()}))),I(this,O).add(this.inputControl.sdChanges.subscribe((function(){t.ref.markForCheck()}))),I(this,O).add(this.inputControl.valueChanges.subscribe((function(){t.isTyping=!0}))),this.filteredItems=u.combineLatest([I(this,V).asObservable(),this.inputControl.valueChanges.pipe(a.debounceTime(I(this,k)))]).pipe(a.switchMap((function(e){var o,n=w(e,2),r=n[0],i=n[1];if(t.isTyping=!1,i=i||"","function"!=typeof r)return r.search(i,[t.valueField,t.displayField]).paging(t.limit).asObservable();var l,s=y.default({checksum:t.cacheChecksum||null,searchText:i});if(void 0!==I(t,A)[s])return(null===(o=I(t,A)[s])||void 0===o?void 0:o.length)||(t.isTyping=!0),I(t,A)[s].asObservable();var c=r(i,!1);return l=c instanceof Promise?u.defer((function(){return u.from(c)})):c,t.loading=!0,t.ref.markForCheck(),l.pipe(a.map((function(e){return I(t,A)[s]=e||[],Object.assign(I(t,S),Array.toObject(I(t,A)[s],t.valueField)),I(t,A)[s]})),a.catchError((function(){return u.of([])})),a.finalize((function(){t.loading=!1,t.ref.markForCheck()})))}))),this.selected=u.combineLatest([I(this,V).asObservable(),this.formControl.valueChanges.pipe(a.startWith(this.formControl.value))]).pipe(a.switchMap((function(e){var o=w(e,1)[0],n=t.formControl.value;if(!t.valueField)return u.of(n);if(n||0===n){if("function"==typeof o){if(I(t,S)[n])return u.of(I(t,S)[n]);var r=o(n,!0);return(r instanceof Promise?u.defer((function(){return u.from(r)})):r).pipe(a.map((function(e){var o;return Object.assign(I(t,S),Array.toObject(e,t.valueField)),I(t,S)[n]||((o={})[t.valueField]=n,o[t.displayField]=n,o)})),a.catchError((function(){var e;return u.of(((e={})[t.valueField]=n,e[t.displayField]=n,e))})),a.finalize((function(){t.loading=!1,t.ref.markForCheck()})))}return u.of(o.find((function(e){return e[t.valueField]===n})))}return u.of("")}))),this.controlPlaceHolder=this.selected.pipe(a.map((function(e){var o,n,r;return T(t,q,e),null!==(r=null!==(n=null!==(o=null==e?void 0:e[t.displayField])&&void 0!==o?o:e)&&void 0!==n?n:t.placeholder)&&void 0!==r?r:t.appearance?t.label:""})))},e.prototype.ngAfterViewInit=function(){var e;null===(e=I(this,x))||void 0===e||e.addControl(I(this,F),this.formControl)},e.prototype.ngOnDestroy=function(){var e;I(this,O).unsubscribe(),null===(e=I(this,x))||void 0===e||e.removeControl(I(this,F))},e}();M=new WeakMap,k=new WeakMap,F=new WeakMap,x=new WeakMap,V=new WeakMap,P=new WeakMap,O=new WeakMap,q=new WeakMap,A=new WeakMap,S=new WeakMap,j=new WeakMap,E=new WeakMap,D=new WeakMap,_.decorators=[{type:t.Component,args:[{selector:"sd-autocomplete",template:'<label *ngIf="!appearance && label && !sdLabelDef?.templateRef" class="d-block mb-0 T14M">{{label}} <span\r\n class="text-danger mb-2" *ngIf="isRequired">*</span></label>\r\n<ng-container *ngIf="sdLabelDef?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdLabelDef.templateRef">\r\n </ng-container>\r\n</ng-container>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default">\r\n <ng-container\r\n *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value, selectedItem: selected | async }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class="sd-md" [ngClass]="{\'sd-sm\': size === \'sm\', \'no-padding-wrapper\': disableErrorMessage}"\r\n [floatLabel]="size === \'sm\' || formControl.value ? \'always\':\'auto\'" [appearance]="appearance || \'outline\'">\r\n <mat-label *ngIf="appearance && label">{{ label }}</mat-label>\r\n <input aria-hidden="true" [id]="id" #autocompleteTrigger [formControl]="inputControl" [placeholder]="controlPlaceHolder | async"\r\n [ngClass]="{\'c-selected\': formControl?.value}" [matAutocomplete]="auto" (focus)="onFocus()" (blur)="onBlur()"\r\n matInput [autocomplete]="id" autocorrect="off" [errorStateMatcher]="matcher" [required]="isRequired"\r\n [attr.data-qclabel]="label" [attr.data-qcid]="qcId" [sdPopoverTriggerFor]="null"\r\n [sdPopoverDisabled]="!disableErrorMessage || formControl.valid" #input />\r\n <mat-icon *ngIf="!loading && formControl?.value && !inputControl.disabled" class="pointer sd-suffix-icon"\r\n (click)="clear($event)" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf="actionIcon && !loading && !formControl?.value && !inputControl.disabled"\r\n class="pointer sd-suffix-icon" (click)="onAction($event)" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <svg \r\n #copyTooltip="matTooltip" \r\n *ngIf="!loading && formControl?.value && copyable" \r\n matSuffix \r\n [matTooltip]="copied ? \'Copied\' : \'Copy\'" \r\n class="icon-copy" \r\n focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" \r\n (click)="onCopyText($event)">\r\n <path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path>\r\n </svg>\r\n <i [ngClass]="{\'d-none\': !loading}" class="fa fa-spinner fa-pulse c-loading-icon"></i>\r\n <mat-autocomplete #auto="matAutocomplete" (optionSelected)="onSelect($event.option.value)">\r\n <ng-container *ngIf="filteredItems | async as items">\r\n <ng-container *ngIf="items.length">\r\n <mat-option *ngFor="let item of items" [value]="item" matTooltipPosition="above"\r\n [matTooltip]="displayField ? item[displayField] : item">\r\n <ng-container *ngIf="autocompleteDisplayDef?.templateRef">\r\n <ng-container *ngTemplateOutlet="autocompleteDisplayDef.templateRef;context:{item: item}">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf="!autocompleteDisplayDef?.templateRef">\r\n {{ displayField ? item[displayField] : item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option *ngIf="!items.length && inputControl.value && !isTyping && !loading" [value]=""\r\n class="T14R text-grey">\r\n Không có dữ liệu\r\n </mat-option>\r\n <mat-option class="sd__option--add" *ngIf="!hiddenAdd && sdAdd?.observers?.length"\r\n (keyup.Space)="$event.stopPropagation()" disabled="true">\r\n <div (click)="onAdd($event)">\r\n <mat-icon class="mr-1">add</mat-icon>\r\n {{\'New item\' | sdTranslate}}\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error *ngIf="formControl?.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n\x3c!-- <sd-popover #error="sdPopover" type="danger" width="300px">\r\n <span *ngIf="formControl.errors?.required">\r\n {{ "This field is required" | sdTranslate }}\r\n </span>\r\n</sd-popover> --\x3e',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer!important;position:-webkit-sticky;position:sticky;z-index:10}.c-loading-icon{position:absolute;right:5px;top:5px}"]}]}],_.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[d.FORM_CONFIG]},{type:t.Optional}]}]},_.propDecorators={autocompleteTrigger:[{type:t.ViewChild,args:[c.MatAutocompleteTrigger,{read:c.MatAutocompleteTrigger}]}],name:[{type:t.Input}],appearance:[{type:t.Input}],size:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],valueField:[{type:t.Input}],displayField:[{type:t.Input}],placeholder:[{type:t.Input}],items:[{type:t.Input}],limit:[{type:t.Input}],cacheChecksum:[{type:t.Input}],model:[{type:t.Input}],hiddenAdd:[{type:t.Input}],autocompleteDisplayDef:[{type:t.ContentChild,args:[R]}],sdLabelDef:[{type:t.ContentChild,args:[d.SdLabelDefDirective]}],actionIcon:[{type:t.Input}],action:[{type:t.Output}],modelChange:[{type:t.Output}],sdChange:[{type:t.Output}],sdAdd:[{type:t.Output}],disabled:[{type:t.Input}],required:[{type:t.Input}],validator:[{type:t.Input}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],input:[{type:t.ViewChild,args:["input"]}],sdView:[{type:t.ContentChild,args:[d.SdViewDefDirective]}],copyTooltip:[{type:t.ViewChild,args:["copyTooltip"]}],_copyable:[{type:t.Input,args:["copyable"]}],copyText:[{type:t.Input}]};var z=function(){};z.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,n.FormsModule,n.ReactiveFormsModule,i.MatInputModule,m.MatTooltipModule,r.MatFormFieldModule,c.MatAutocompleteModule,p.MatIconModule,h.MatProgressSpinnerModule,f.SdTranslateModule,d.SdCommonModule,g.SdPopoverModule],declarations:[_,R],exports:[_,R,d.SdCommonModule],providers:[]}]}],e.SdAutocomplete=_,e.SdAutocompleteDisplayDefDirective=R,e.SdAutocompleteModule=z,Object.defineProperty(e,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */function b(e,t,o,n){return new(o||(o=Promise))((function(r,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function l(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,l)}s((n=n.apply(e,t||[])).next())}))}function C(e,t){var o,n,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,n&&(r=2&i[0]?n.return:i[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,i[1])).done)return r;switch(n=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{o=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}}Object.create;function w(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var n,r,i=o.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return a}Object.create;function I(e,t,o,n){if("a"===o&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?n:"a"===o?n.call(e):n?n.value:t.get(e)}function T(e,t,o,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(e,o):r?r.value=o:t.set(e,o),o}var M,k,F,x,V,P,O,q,A,S,j,E,D,R=function(e){this.templateRef=e};R.decorators=[{type:t.Directive,args:[{selector:"[sdAutocompleteDisplayDef]"}]}],R.ctorParameters=function(){return[{type:t.TemplateRef}]};var W=function(){function e(e){this.formControl=e}return e.prototype.isErrorState=function(e,t){var o,n,r,i=t&&t.submitted;return!(!(null===(o=this.formControl)||void 0===o?void 0:o.invalid)||!((null===(n=this.formControl)||void 0===n?void 0:n.dirty)||(null===(r=this.formControl)||void 0===r?void 0:r.touched)||i))},e}(),_=function(){function e(e,o){var r=this;this.ref=e,this.formConfig=o,this.id="I"+l.v4(),M.set(this,void 0),k.set(this,0),F.set(this,l.v4()),this.loading=!1,this.inputControl=new d.SdFormControl,this.formControl=new d.SdFormControl,this.matcher=new W(this.formControl),x.set(this,void 0),V.set(this,new u.BehaviorSubject([])),this.limit=100,this.hiddenAdd=!1,this.action=new t.EventEmitter,this.modelChange=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.sdAdd=new t.EventEmitter,this.isRequired=!1,P.set(this,void 0),this.disableErrorMessage=!1,O.set(this,new u.Subscription),this.isFocused=!1,q.set(this,void 0),A.set(this,{}),S.set(this,{}),this.isTyping=!1,this.copyable=!1,this.copied=!1,this.onSelect=function(e){if(e){if(T(r,q,e),"string"==typeof e||"number"==typeof e)r.formControl.value!==e&&(r.formControl.setValue(e),r.modelChange.emit(e),r.sdChange.emit(e));else if(r.valueField&&r.displayField){var t=(null==e?void 0:e[r.valueField])||null;r.formControl.value!==t&&(r.formControl.setValue(t),r.modelChange.emit(t),r.sdChange.emit(e))}r.inputControl.setValue("",{emitEvent:!1})}},this.onFocus=function(){r.isFocused=!0,r.inputControl.setValue("")},this.onBlur=function(){r.isFocused=!1,r.inputControl.setValue("",{emitEvent:!1})},this.onClick=function(){var e;(null===(e=r.sdView)||void 0===e?void 0:e.templateRef)&&(r.formControl.disabled||r.isFocused||r.focus())},this.blur=function(){var e,t;null===(t=null===(e=r.input)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){r.isFocused=!0,setTimeout((function(){var e,t,o;null===(e=r.autocompleteTrigger)||void 0===e||e.openPanel(),null===(o=null===(t=r.input)||void 0===t?void 0:t.nativeElement)||void 0===o||o.focus()}),100)},this.clear=function(e){var t;null==e||e.stopPropagation(),null===(t=r.inputControl)||void 0===t||t.setValue(""),I(r,M)&&(r.formControl.setValue(null),r.modelChange.emit(null),r.sdChange.emit(null))},this.onAction=function(e){var t;null==e||e.stopPropagation(),null===(t=r.autocompleteTrigger)||void 0===t||t.closePanel(),r.action.emit()},this.onAdd=function(e){e.stopPropagation(),null==e||e.preventDefault(),r.sdAdd.emit()},this.reValidate=function(){r.inputControl.updateValueAndValidity({emitEvent:!0})},j.set(this,(function(){r.formControl.clearValidators(),r.formControl.clearAsyncValidators();var e=[],t=[];r.isRequired&&e.push(n.Validators.required),I(r,P)&&t.push(I(r,E).call(r,I(r,P))),r.formControl.setValidators(e),r.formControl.setAsyncValidators(t),r.formControl.updateValueAndValidity()})),E.set(this,(function(e){return function(t){return b(r,void 0,void 0,(function(){var o,n,r;return C(this,(function(i){switch(i.label){case 0:return o=t.value||null,e&&"function"==typeof e?(n=e(o,I(this,q)))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(r=i.sent())?[2,{customValidator:r}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}})),this.onCopyText=function(e){null==e||e.stopPropagation();var t=I(r,D).call(r);SdUtility.copyToClipboard(t),r.copied=!0,setTimeout((function(){r.copied=!1,r.ref.markForCheck()}),2e3)},D.set(this,(function(){var e,t=r.formControl.value,o=null!==(e=null==t?void 0:t.toString())&&void 0!==e?e:"";return"function"==typeof r.copyText?o=r.copyText(t,I(r,q)):r.copyText&&(o=r.copyText),o}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&T(this,F,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof n.NgForm?T(this,x,e.form):T(this,x,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=y.default({selector:"sd-autocomplete",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"items",{set:function(e){e?Array.isArray(e)?I(this,V).next(e.filter((function(e){return null!=e}))):(I(this,V).next(e),T(this,k,500)):I(this,V).next([]),this.formControl.updateValueAndValidity()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){I(this,M)!==e&&(T(this,M,e),this.formControl.setValue(e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?(this.inputControl.disable(),this.formControl.disable()):(this.inputControl.enable(),this.formControl.enable())},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"required",{set:function(e){this.isRequired=""===e||e,I(this,j).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){T(this,P,e),I(this,j).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e,e=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_copyable",{set:function(e){this.copyable=""===e||e},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),I(this,O).add(this.inputControl.touchChanges.subscribe((function(){t.formControl.markAsTouched(),t.ref.markForCheck()}))),I(this,O).add(this.formControl.sdChanges.subscribe((function(){t.ref.markForCheck()}))),I(this,O).add(this.inputControl.sdChanges.subscribe((function(){t.ref.markForCheck()}))),I(this,O).add(this.inputControl.valueChanges.subscribe((function(){t.isTyping=!0}))),this.filteredItems=u.combineLatest([I(this,V).asObservable(),this.inputControl.valueChanges.pipe(a.debounceTime(I(this,k)))]).pipe(a.switchMap((function(e){var o,n=w(e,2),r=n[0],i=n[1];if(t.isTyping=!1,i=i||"","function"!=typeof r)return r.search(i,[t.valueField,t.displayField]).paging(t.limit).asObservable();var l,s=y.default({checksum:t.cacheChecksum||null,searchText:i});if(void 0!==I(t,A)[s])return(null===(o=I(t,A)[s])||void 0===o?void 0:o.length)||(t.isTyping=!0),I(t,A)[s].asObservable();var c=r(i,!1);return l=c instanceof Promise?u.defer((function(){return u.from(c)})):c,t.loading=!0,t.ref.markForCheck(),l.pipe(a.map((function(e){return I(t,A)[s]=e||[],Object.assign(I(t,S),Array.toObject(I(t,A)[s],t.valueField)),I(t,A)[s]})),a.catchError((function(){return u.of([])})),a.finalize((function(){t.loading=!1,t.ref.markForCheck()})))}))),this.selected=u.combineLatest([I(this,V).asObservable(),this.formControl.valueChanges.pipe(a.startWith(this.formControl.value))]).pipe(a.switchMap((function(e){var o=w(e,1)[0],n=t.formControl.value;if(!t.valueField)return u.of(n);if(n||0===n){if("function"==typeof o){if(I(t,S)[n])return u.of(I(t,S)[n]);var r=o(n,!0);return(r instanceof Promise?u.defer((function(){return u.from(r)})):r).pipe(a.map((function(e){var o;return Object.assign(I(t,S),Array.toObject(e,t.valueField)),I(t,S)[n]||((o={})[t.valueField]=n,o[t.displayField]=n,o)})),a.catchError((function(){var e;return u.of(((e={})[t.valueField]=n,e[t.displayField]=n,e))})),a.finalize((function(){t.loading=!1,t.ref.markForCheck()})))}return u.of(o.find((function(e){return e[t.valueField]===n})))}return u.of("")}))),this.controlPlaceHolder=this.selected.pipe(a.map((function(e){var o,n,r;return T(t,q,e),null!==(r=null!==(n=null!==(o=null==e?void 0:e[t.displayField])&&void 0!==o?o:e)&&void 0!==n?n:t.placeholder)&&void 0!==r?r:t.appearance?t.label:""})))},e.prototype.ngAfterViewInit=function(){var e;null===(e=I(this,x))||void 0===e||e.addControl(I(this,F),this.formControl)},e.prototype.ngOnDestroy=function(){var e;I(this,O).unsubscribe(),null===(e=I(this,x))||void 0===e||e.removeControl(I(this,F))},e}();M=new WeakMap,k=new WeakMap,F=new WeakMap,x=new WeakMap,V=new WeakMap,P=new WeakMap,O=new WeakMap,q=new WeakMap,A=new WeakMap,S=new WeakMap,j=new WeakMap,E=new WeakMap,D=new WeakMap,_.decorators=[{type:t.Component,args:[{selector:"sd-autocomplete",template:'<label *ngIf="!appearance && label && !sdLabelDef?.templateRef" class="d-block mb-0 T14M">{{label}} <span\r\n class="text-danger mb-2" *ngIf="isRequired">*</span></label>\r\n<ng-container *ngIf="sdLabelDef?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdLabelDef.templateRef">\r\n </ng-container>\r\n</ng-container>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default">\r\n <ng-container\r\n *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value, selectedItem: selected | async }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class="sd-md" [ngClass]="{\'sd-sm\': size === \'sm\', \'no-padding-wrapper\': disableErrorMessage}"\r\n [floatLabel]="size === \'sm\' || formControl.value ? \'always\':\'auto\'" [appearance]="appearance || \'outline\'">\r\n <mat-label *ngIf="appearance && label">{{ label }}</mat-label>\r\n <input aria-hidden="true" [id]="id" #autocompleteTrigger [formControl]="inputControl" [placeholder]="controlPlaceHolder | async"\r\n [ngClass]="{\'c-selected\': formControl?.value}" [matAutocomplete]="auto" (focus)="onFocus()" (blur)="onBlur()"\r\n matInput [autocomplete]="id" autocorrect="off" [errorStateMatcher]="matcher" [required]="isRequired"\r\n [attr.data-qclabel]="label" [attr.data-qcid]="qcId" [sdPopoverTriggerFor]="null"\r\n [sdPopoverDisabled]="!disableErrorMessage || formControl.valid" #input />\r\n <mat-icon *ngIf="!loading && formControl?.value && !inputControl.disabled" class="pointer sd-suffix-icon"\r\n (click)="clear($event)" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf="actionIcon && !loading && !formControl?.value && !inputControl.disabled"\r\n class="pointer sd-suffix-icon" (click)="onAction($event)" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <svg \r\n #copyTooltip="matTooltip" \r\n *ngIf="!loading && formControl?.value && copyable" \r\n matSuffix \r\n [matTooltip]="copied ? \'Copied\' : \'Copy\'" \r\n class="icon-copy" \r\n focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" \r\n (click)="onCopyText($event)">\r\n <path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"></path>\r\n </svg>\r\n <i [ngClass]="{\'d-none\': !loading}" class="fa fa-spinner fa-pulse c-loading-icon"></i>\r\n <mat-autocomplete #auto="matAutocomplete" (optionSelected)="onSelect($event.option.value)">\r\n <ng-container *ngIf="filteredItems | async as items">\r\n <ng-container *ngIf="items.length">\r\n <mat-option *ngFor="let item of items" [value]="item" matTooltipPosition="above"\r\n [matTooltip]="displayField ? item[displayField] : item">\r\n <ng-container *ngIf="autocompleteDisplayDef?.templateRef">\r\n <ng-container *ngTemplateOutlet="autocompleteDisplayDef.templateRef;context:{item: item}">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf="!autocompleteDisplayDef?.templateRef">\r\n {{ displayField ? item[displayField] : item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option *ngIf="!items.length && inputControl.value && !isTyping && !loading" [value]=""\r\n class="T14R text-grey">\r\n Không có dữ liệu\r\n </mat-option>\r\n <mat-option class="sd__option--add" *ngIf="!hiddenAdd && sdAdd?.observers?.length"\r\n (keyup.Space)="$event.stopPropagation()" disabled="true">\r\n <div (click)="onAdd($event)">\r\n <mat-icon class="mr-1">add</mat-icon>\r\n {{\'New item\' | sdTranslate}}\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error *ngIf="formControl?.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n\x3c!-- <sd-popover #error="sdPopover" type="danger" width="300px">\r\n <span *ngIf="formControl.errors?.required">\r\n {{ "This field is required" | sdTranslate }}\r\n </span>\r\n</sd-popover> --\x3e',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer!important;position:-webkit-sticky;position:sticky;z-index:10}.c-loading-icon{position:absolute;right:5px;top:5px}"]}]}],_.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[d.FORM_CONFIG]},{type:t.Optional}]}]},_.propDecorators={autocompleteTrigger:[{type:t.ViewChild,args:[c.MatAutocompleteTrigger,{read:c.MatAutocompleteTrigger}]}],name:[{type:t.Input}],appearance:[{type:t.Input}],size:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],valueField:[{type:t.Input}],displayField:[{type:t.Input}],placeholder:[{type:t.Input}],items:[{type:t.Input}],limit:[{type:t.Input}],cacheChecksum:[{type:t.Input}],model:[{type:t.Input}],hiddenAdd:[{type:t.Input}],autocompleteDisplayDef:[{type:t.ContentChild,args:[R]}],sdLabelDef:[{type:t.ContentChild,args:[d.SdLabelDefDirective]}],actionIcon:[{type:t.Input}],action:[{type:t.Output}],modelChange:[{type:t.Output}],sdChange:[{type:t.Output}],sdAdd:[{type:t.Output}],disabled:[{type:t.Input}],required:[{type:t.Input}],validator:[{type:t.Input}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],input:[{type:t.ViewChild,args:["input"]}],sdView:[{type:t.ContentChild,args:[d.SdViewDefDirective]}],copyTooltip:[{type:t.ViewChild,args:["copyTooltip"]}],_copyable:[{type:t.Input,args:["copyable"]}],copyText:[{type:t.Input}]};var z=function(){};z.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,n.FormsModule,n.ReactiveFormsModule,i.MatInputModule,m.MatTooltipModule,r.MatFormFieldModule,c.MatAutocompleteModule,p.MatIconModule,h.MatProgressSpinnerModule,f.SdTranslateModule,d.SdCommonModule,g.SdPopoverModule],declarations:[_,R],exports:[_,R,d.SdCommonModule],providers:[]}]}],e.SdAutocomplete=_,e.SdAutocompleteDisplayDefDirective=R,e.SdAutocompleteModule=z,Object.defineProperty(e,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=sd-angular-core-autocomplete.umd.min.js.map